@gearbox-protocol/sdk 1.10.2 → 1.11.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.
@@ -68,7 +68,7 @@ exports.contractsByNetwork = {
68
68
  SUSHISWAP_ROUTER: "0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506",
69
69
  // CURVE
70
70
  CURVE_3CRV_POOL: "0x6491f8A62678c90C84b237791d9D7cF21b4D1418",
71
- CURVE_FRAX_USDC_POOL: "DEPLOY ME",
71
+ CURVE_FRAX_USDC_POOL: "0x9C85E4F4061160B6177cad3f72EDfd374Dc8AD88",
72
72
  CURVE_STETH_GATEWAY: "0xcD4b22ed0E2aD95d648C6E4c45B38f83D0Cbb654",
73
73
  CURVE_FRAX_POOL: token_1.tokenDataByNetwork.Goerli.FRAX3CRV,
74
74
  CURVE_LUSD_POOL: token_1.tokenDataByNetwork.Goerli.LUSD3CRV,
@@ -85,7 +85,7 @@ exports.contractsByNetwork = {
85
85
  // CONVEX
86
86
  CONVEX_BOOSTER: "0xbd1D47bbF57F49D9a72ca7f879A096d3abDF4c40",
87
87
  CONVEX_3CRV_POOL: "0xfB9b98558c3d6851291Fbf74fa7F022a787cD795",
88
- CONVEX_FRAX_USDC_POOL: "DEPLOY ME",
88
+ CONVEX_FRAX_USDC_POOL: "0xAc22d4495166c945cc91FDB611b7515eBbfd60c0",
89
89
  CONVEX_STECRV_POOL: "0xd9de8eA4289e7a4458Bebad8c31bb7576f1C2B72",
90
90
  CONVEX_SUSD_POOL: "0x85825316be95FBb3F6B5a2Dd9f1eb9577803e441",
91
91
  CONVEX_FRAX3CRV_POOL: "0x08513eA45fdd7A9cFC33702f722090a182e4a101",
@@ -16,8 +16,6 @@ export declare const PRICE_DECIMALS: BigNumber;
16
16
  export declare const SECONDS_PER_YEAR: number;
17
17
  export declare const PERCENTAGE_DECIMALS = 100;
18
18
  export declare const PERCENTAGE_FACTOR = 10000;
19
- export declare const LIQUIDATION_DISCOUNTED_SUM = 9500;
20
- export declare const UNDERLYING_TOKEN_LIQUIDATION_THRESHOLD = 9300;
21
19
  export declare const timeRanges: Record<string, number>;
22
20
  export declare const LEVERAGE_DECIMALS = 100;
23
21
  export declare const SLIPPAGE_DECIMALS = 100;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DUMB_ADDRESS4 = exports.DUMB_ADDRESS3 = exports.DUMB_ADDRESS2 = exports.DUMB_ADDRESS = exports.ADDRESS_0X0 = exports.SLIPPAGE_DECIMALS = exports.LEVERAGE_DECIMALS = exports.timeRanges = exports.UNDERLYING_TOKEN_LIQUIDATION_THRESHOLD = exports.LIQUIDATION_DISCOUNTED_SUM = exports.PERCENTAGE_FACTOR = exports.PERCENTAGE_DECIMALS = exports.SECONDS_PER_YEAR = exports.PRICE_DECIMALS = exports.PRICE_DECIMALS_POW = exports.WAD = exports.WAD_DECIMALS_POW = exports.halfRAY = exports.RAY = exports.RAY_DECIMALS_POW = exports.getNetworkType = exports.HARDHAT_NETWORK = exports.LOCAL_NETWORK = exports.GOERLI_NETWORK = exports.MAINNET_NETWORK = exports.MAX_INT = void 0;
3
+ exports.DUMB_ADDRESS4 = exports.DUMB_ADDRESS3 = exports.DUMB_ADDRESS2 = exports.DUMB_ADDRESS = exports.ADDRESS_0X0 = exports.SLIPPAGE_DECIMALS = exports.LEVERAGE_DECIMALS = exports.timeRanges = exports.PERCENTAGE_FACTOR = exports.PERCENTAGE_DECIMALS = exports.SECONDS_PER_YEAR = exports.PRICE_DECIMALS = exports.PRICE_DECIMALS_POW = exports.WAD = exports.WAD_DECIMALS_POW = exports.halfRAY = exports.RAY = exports.RAY_DECIMALS_POW = exports.getNetworkType = exports.HARDHAT_NETWORK = exports.LOCAL_NETWORK = exports.GOERLI_NETWORK = exports.MAINNET_NETWORK = exports.MAX_INT = void 0;
4
4
  var ethers_1 = require("ethers");
5
5
  exports.MAX_INT = ethers_1.BigNumber.from("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
6
6
  exports.MAINNET_NETWORK = 1;
@@ -29,8 +29,8 @@ exports.PRICE_DECIMALS = ethers_1.BigNumber.from(10).pow(exports.PRICE_DECIMALS_
29
29
  exports.SECONDS_PER_YEAR = 365 * 24 * 3600;
30
30
  exports.PERCENTAGE_DECIMALS = 100;
31
31
  exports.PERCENTAGE_FACTOR = 1e4;
32
- exports.LIQUIDATION_DISCOUNTED_SUM = 9500;
33
- exports.UNDERLYING_TOKEN_LIQUIDATION_THRESHOLD = 9300;
32
+ // export const LIQUIDATION_DISCOUNTED_SUM = 9600;
33
+ // export const UNDERLYING_TOKEN_LIQUIDATION_THRESHOLD = 9400;
34
34
  exports.timeRanges = {
35
35
  // "1H": 3600,
36
36
  "1D": 3600 * 24,
@@ -32,6 +32,7 @@ export declare class CreditAccountData {
32
32
  balancesSorted(prices: Record<string, BigNumber>, tokens: Record<string, TokenData>): Array<Asset>;
33
33
  calcBorrowAmountPlusInterestRate(currentCumulativeIndex: BigNumber): BigNumber;
34
34
  updateHealthFactor(creditManager: CreditManagerData, currentCumulativeIndex: BigNumber, priceOracle: PriceOracleData): void;
35
+ calcMaxIncreaseBorrow(cm: CreditManagerData): BigNumber;
35
36
  get id(): string;
36
37
  hash(): string;
37
38
  static hash(creditManager: string, borrower: string): string;
@@ -76,6 +76,17 @@ var CreditAccountData = /** @class */ (function () {
76
76
  .div(this.calcBorrowAmountPlusInterestRate(currentCumulativeIndex))
77
77
  .toNumber();
78
78
  };
79
+ CreditAccountData.prototype.calcMaxIncreaseBorrow = function (cm) {
80
+ var underlyingTokenLT = cm.liquidationDiscount - cm.feeLiquidation;
81
+ var minHealthFactor = cm.maxLeverageFactor > 0
82
+ ? Math.floor((underlyingTokenLT * (cm.maxLeverageFactor + constants_1.LEVERAGE_DECIMALS)) /
83
+ cm.maxLeverageFactor)
84
+ : constants_1.PERCENTAGE_FACTOR;
85
+ var result = this.borrowedAmountPlusInterest
86
+ .mul(this.healthFactor - minHealthFactor)
87
+ .div(minHealthFactor - underlyingTokenLT);
88
+ return result.isNegative() ? ethers_1.BigNumber.from(0) : result;
89
+ };
79
90
  Object.defineProperty(CreditAccountData.prototype, "id", {
80
91
  get: function () {
81
92
  return this.creditManager;
@@ -56,7 +56,6 @@ export declare class CreditManagerStat extends CreditManagerData {
56
56
  readonly totalLosses: BigNumber;
57
57
  constructor(payload: CreditManagerStatPayload);
58
58
  }
59
- export declare function calcMaxIncreaseBorrow(healthFactor: number, borrowAmountPlusInterest: BigNumber, maxLeverageFactor: number): BigNumber;
60
59
  export interface CalcHealthFactorProps {
61
60
  assets: Array<Asset>;
62
61
  prices: Record<string, BigNumber>;
@@ -26,7 +26,7 @@ var __assign = (this && this.__assign) || function () {
26
26
  return __assign.apply(this, arguments);
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.calcHealthFactor = exports.calcMaxIncreaseBorrow = exports.CreditManagerStat = exports.CreditManagerData = void 0;
29
+ exports.calcHealthFactor = exports.CreditManagerStat = exports.CreditManagerData = void 0;
30
30
  var ethers_1 = require("ethers");
31
31
  var txParser_1 = require("../parsers/txParser");
32
32
  var decimals_1 = require("../tokens/decimals");
@@ -173,18 +173,6 @@ var CreditManagerStat = /** @class */ (function (_super) {
173
173
  return CreditManagerStat;
174
174
  }(CreditManagerData));
175
175
  exports.CreditManagerStat = CreditManagerStat;
176
- function calcMaxIncreaseBorrow(healthFactor, borrowAmountPlusInterest, maxLeverageFactor) {
177
- var minHealthFactor = maxLeverageFactor > 0
178
- ? Math.floor((constants_1.UNDERLYING_TOKEN_LIQUIDATION_THRESHOLD *
179
- (maxLeverageFactor + constants_1.LEVERAGE_DECIMALS)) /
180
- maxLeverageFactor)
181
- : 10000;
182
- var result = borrowAmountPlusInterest
183
- .mul(healthFactor - minHealthFactor)
184
- .div(minHealthFactor - constants_1.UNDERLYING_TOKEN_LIQUIDATION_THRESHOLD);
185
- return result.isNegative() ? ethers_1.BigNumber.from(0) : result;
186
- }
187
- exports.calcMaxIncreaseBorrow = calcMaxIncreaseBorrow;
188
176
  function calcHealthFactor(_a) {
189
177
  var assets = _a.assets, prices = _a.prices, liquidationThresholds = _a.liquidationThresholds, underlyingToken = _a.underlyingToken, borrowed = _a.borrowed;
190
178
  var assetLTMoney = assets.reduce(function (acc, _a) {
@@ -127,18 +127,34 @@ describe("CreditManager calcHealthFactor test", function () {
127
127
  (0, chai_1.expect)(result).to.be.eq(9444);
128
128
  });
129
129
  });
130
- describe("CreditManager calcMaxIncreaseBorrow test", function () {
131
- it("health max increase borrow is zero if hf < 1", function () {
132
- var result = (0, creditManager_1.calcMaxIncreaseBorrow)(9999, ethers_1.BigNumber.from("156522834253690396032546"), 0);
133
- (0, chai_1.expect)(result.toString()).to.be.eq(ethers_1.BigNumber.from(0).toString());
134
- });
135
- it("health max increase borrow is calculated correctly", function () {
136
- var result = (0, creditManager_1.calcMaxIncreaseBorrow)(defaultCA.healthFactor, ethers_1.BigNumber.from("156522834253690396032546"), 0);
137
- (0, chai_1.expect)(result.toString()).to.be.eq(ethers_1.BigNumber.from("54559387939857795188487").toString());
138
- });
139
- it("health max increase borrow is calculated correctly (low hf, high debt)", function () {
140
- var loweHf = 10244;
141
- var result = (0, creditManager_1.calcMaxIncreaseBorrow)(loweHf, ethers_1.BigNumber.from("54782991988791638611392"), 0);
142
- (0, chai_1.expect)(result.toString()).to.be.eq(ethers_1.BigNumber.from("19095785778950228315970").toString());
143
- });
144
- });
130
+ // describe("CreditManager calcMaxIncreaseBorrow test", () => {
131
+ // it("health max increase borrow is zero if hf < 1", () => {
132
+ // const result = calcMaxIncreaseBorrow(
133
+ // 9999,
134
+ // BigNumber.from("156522834253690396032546"),
135
+ // 0,
136
+ // );
137
+ // expect(result.toString()).to.be.eq(BigNumber.from(0).toString());
138
+ // });
139
+ // it("health max increase borrow is calculated correctly", () => {
140
+ // const result = calcMaxIncreaseBorrow(
141
+ // defaultCA.healthFactor,
142
+ // BigNumber.from("156522834253690396032546"),
143
+ // 0,
144
+ // );
145
+ // expect(result.toString()).to.be.eq(
146
+ // BigNumber.from("54559387939857795188487").toString(),
147
+ // );
148
+ // });
149
+ // it("health max increase borrow is calculated correctly (low hf, high debt)", () => {
150
+ // const loweHf = 10244;
151
+ // const result = calcMaxIncreaseBorrow(
152
+ // loweHf,
153
+ // BigNumber.from("54782991988791638611392"),
154
+ // 0,
155
+ // );
156
+ // expect(result.toString()).to.be.eq(
157
+ // BigNumber.from("19095785778950228315970").toString(),
158
+ // );
159
+ // });
160
+ // });
@@ -130,7 +130,7 @@ exports.tokenDataByNetwork = {
130
130
  yvCurve_FRAX: "0x43d45AEf2BAb5fa79e3bBDb2dB7E4443B8123C8f",
131
131
  // CURVE LP TOKENS
132
132
  "3Crv": "0xb2f394A64966a8892a43CcfBBD48D28bC58Aeb67",
133
- crvFRAX: "DEPLOY ME",
133
+ crvFRAX: "0xBE72A443c81Ca75B96039C68B335F1f8c6bA48E9",
134
134
  steCRV: "0xf5c5e39F56fF90C0F63a97F3c77779eF495c1faD",
135
135
  crvPlain3andSUSD: "0xC3d328CCA12347A31126d891D16fe8C5466625a5",
136
136
  gusd3CRV: "0xbD919fcC47ae2b5Cc2fe646971aCcB1e88843DC5",
@@ -138,7 +138,7 @@ exports.tokenDataByNetwork = {
138
138
  LUSD3CRV: "0x348B1846b87cA12D23A9A4E73B1CfAc2Aad49cf4",
139
139
  // CONVEX LP TOKENS
140
140
  cvx3Crv: "0xe12bFD868a81D1AD147731D0eC164d9C4A397FCd",
141
- cvxcrvFRAX: "DEPLOY ME",
141
+ cvxcrvFRAX: "0x68345E6C192f97A7334a96ceda94e2486c08Fa0c",
142
142
  cvxsteCRV: "0xF0258e3527726f641056a2F7DA08637a1d67422E",
143
143
  cvxcrvPlain3andSUSD: "0xaB54a40e7Fd2aD82c07958BF6AA3395CEAb078b5",
144
144
  cvxFRAX3CRV: "0x17181501B6986CE1e4efD9A9Df9975aD24b0c543",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gearbox-protocol/sdk",
3
- "version": "1.10.2",
3
+ "version": "1.11.0",
4
4
  "description": "Gearbox SDK",
5
5
  "main": "./lib/index.js",
6
6
  "types": "./lib/index.d.ts",