@gearbox-protocol/sdk 0.0.100 → 0.0.103

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.
Files changed (163) hide show
  1. package/.eslintignore +4 -0
  2. package/.eslintrc.js +52 -0
  3. package/.husky/pre-push +4 -0
  4. package/lib/apy/convexAPY.d.ts +8 -0
  5. package/lib/apy/convexAPY.js +200 -0
  6. package/lib/apy/lidoAPY.d.ts +4 -0
  7. package/lib/apy/lidoAPY.js +103 -0
  8. package/lib/config.d.ts +1 -0
  9. package/lib/config.js +2 -1
  10. package/lib/contracts/contracts.d.ts +9 -4
  11. package/lib/contracts/contracts.js +52 -14
  12. package/lib/contracts/contractsRegister.js +16 -4
  13. package/lib/core/constants.d.ts +7 -1
  14. package/lib/core/constants.js +11 -5
  15. package/lib/core/creditAccount.d.ts +3 -1
  16. package/lib/core/creditAccount.js +33 -31
  17. package/lib/core/creditManager.d.ts +13 -2
  18. package/lib/core/creditManager.js +77 -33
  19. package/lib/core/creditSession.js +14 -3
  20. package/lib/core/errors.d.ts +10 -0
  21. package/lib/core/errors.js +16 -1
  22. package/lib/core/eventOrTx.d.ts +1 -1
  23. package/lib/core/events.d.ts +19 -19
  24. package/lib/core/events.js +32 -30
  25. package/lib/core/multicall.d.ts +1 -1
  26. package/lib/core/pool.d.ts +2 -2
  27. package/lib/core/pool.js +8 -12
  28. package/lib/core/price.d.ts +2 -0
  29. package/lib/core/price.js +14 -0
  30. package/lib/core/strategy.d.ts +36 -0
  31. package/lib/core/strategy.js +57 -0
  32. package/lib/core/tokenDistributor.js +1 -1
  33. package/lib/core/transactions.d.ts +18 -3
  34. package/lib/core/transactions.js +39 -3
  35. package/lib/index.d.ts +8 -3
  36. package/lib/index.js +9 -4
  37. package/lib/oracles/priceFeeds.js +1 -1
  38. package/lib/pathfinder/convexLP.d.ts +1 -1
  39. package/lib/pathfinder/convexLP.js +26 -29
  40. package/lib/pathfinder/curveLP.d.ts +1 -1
  41. package/lib/pathfinder/curveLP.js +5 -7
  42. package/lib/pathfinder/path.d.ts +1 -1
  43. package/lib/pathfinder/path.js +38 -42
  44. package/lib/pathfinder/trade.d.ts +1 -2
  45. package/lib/pathfinder/tradeTypes.d.ts +5 -5
  46. package/lib/pathfinder/yVault.d.ts +2 -2
  47. package/lib/pathfinder/yVault.js +22 -19
  48. package/lib/payload/creditAccount.d.ts +4 -26
  49. package/lib/payload/creditManager.d.ts +3 -25
  50. package/lib/payload/pool.d.ts +2 -17
  51. package/lib/payload/pool.js +0 -1
  52. package/lib/strategies/curve.d.ts +6 -60
  53. package/lib/strategies/curve.js +6 -0
  54. package/lib/strategies/uniswapV2.js +3 -19
  55. package/lib/strategies/uniswapV3.js +1 -1
  56. package/lib/strategies/yearn.js +15 -11
  57. package/lib/tokens/convex.d.ts +3 -3
  58. package/lib/tokens/curveLP.d.ts +2 -2
  59. package/lib/tokens/curveLP.js +1 -1
  60. package/lib/tokens/gear.d.ts +2 -2
  61. package/lib/tokens/gear.js +1 -1
  62. package/lib/tokens/normal.d.ts +1 -1
  63. package/lib/tokens/token.js +9 -9
  64. package/lib/tokens/tokenData.d.ts +3 -1
  65. package/lib/tokens/tokenData.js +10 -8
  66. package/lib/tokens/yearn.d.ts +3 -3
  67. package/lib/utils/errors.d.ts +6 -0
  68. package/lib/utils/errors.js +13 -0
  69. package/lib/utils/formatter.d.ts +2 -1
  70. package/lib/utils/formatter.js +23 -15
  71. package/lib/utils/loading.d.ts +2 -1
  72. package/lib/utils/loading.js +9 -13
  73. package/lib/utils/mappers.d.ts +2 -1
  74. package/lib/utils/mappers.js +13 -5
  75. package/lib/utils/multicall.js +4 -3
  76. package/lib/utils/network.js +2 -2
  77. package/lib/utils/repeater.js +12 -24
  78. package/lib/utils/types.d.ts +1 -0
  79. package/lib/utils/validate.js +1 -1
  80. package/package.json +26 -8
  81. package/src/apy/convexAPY.ts +250 -0
  82. package/src/apy/lidoAPY.ts +89 -0
  83. package/src/config.ts +2 -1
  84. package/src/contracts/contracts.ts +73 -19
  85. package/src/contracts/contractsRegister.ts +19 -4
  86. package/src/core/constants.ts +11 -4
  87. package/src/core/creditAccount.ts +69 -37
  88. package/src/core/creditManager.ts +256 -148
  89. package/src/core/creditOperation.ts +7 -7
  90. package/src/core/creditSession.ts +25 -5
  91. package/src/core/errors.ts +25 -0
  92. package/src/core/eventOrTx.ts +8 -5
  93. package/src/core/events.ts +978 -911
  94. package/src/core/history.ts +46 -46
  95. package/src/core/multicall.ts +1 -1
  96. package/src/core/operations.ts +6 -0
  97. package/src/core/pool.ts +75 -58
  98. package/src/core/price.ts +13 -0
  99. package/src/core/strategy.ts +134 -0
  100. package/src/core/tokenDistributor.ts +2 -2
  101. package/src/core/transactions.ts +427 -350
  102. package/src/index.ts +9 -4
  103. package/src/oracles/priceFeeds.ts +523 -523
  104. package/src/pathfinder/contracts.ts +15 -13
  105. package/src/pathfinder/convexLP.ts +29 -25
  106. package/src/pathfinder/curveLP.ts +57 -53
  107. package/src/pathfinder/path.ts +158 -150
  108. package/src/pathfinder/priority.ts +11 -11
  109. package/src/pathfinder/trade.ts +84 -77
  110. package/src/pathfinder/tradeTypes.ts +98 -94
  111. package/src/pathfinder/yVault.ts +79 -63
  112. package/src/payload/creditAccount.ts +4 -26
  113. package/src/payload/creditManager.ts +4 -26
  114. package/src/payload/pool.ts +2 -19
  115. package/src/payload/token.ts +3 -3
  116. package/src/strategies/convex.ts +217 -210
  117. package/src/strategies/creditFacade.ts +70 -53
  118. package/src/strategies/curve.ts +263 -194
  119. package/src/strategies/lido.ts +33 -37
  120. package/src/strategies/uniswapV2.ts +90 -112
  121. package/src/strategies/uniswapV3.ts +114 -91
  122. package/src/strategies/yearn.ts +58 -62
  123. package/src/tokens/connectors.ts +6 -6
  124. package/src/tokens/convex.ts +297 -296
  125. package/src/tokens/curveLP.ts +170 -165
  126. package/src/tokens/gear.ts +47 -45
  127. package/src/tokens/normal.ts +801 -802
  128. package/src/tokens/token.ts +19 -10
  129. package/src/tokens/tokenData.ts +19 -9
  130. package/src/tokens/tokenType.ts +11 -11
  131. package/src/tokens/yearn.ts +126 -124
  132. package/src/utils/errors.ts +11 -0
  133. package/src/utils/formatter.ts +26 -18
  134. package/src/utils/loading.ts +14 -6
  135. package/src/utils/mappers.ts +15 -6
  136. package/src/utils/multicall.ts +6 -9
  137. package/src/utils/network.ts +21 -21
  138. package/src/utils/repeater.ts +2 -2
  139. package/src/utils/types.ts +6 -2
  140. package/src/utils/validate.ts +1 -1
  141. package/lib/core/adapters.d.ts +0 -15
  142. package/lib/core/adapters.js +0 -19
  143. package/lib/core/contracts.d.ts +0 -67
  144. package/lib/core/contracts.js +0 -254
  145. package/lib/core/contractsRegister.d.ts +0 -2
  146. package/lib/core/contractsRegister.js +0 -58
  147. package/lib/core/creditCard.d.ts +0 -13
  148. package/lib/core/creditCard.js +0 -2
  149. package/lib/core/oracles.d.ts +0 -38
  150. package/lib/core/oracles.js +0 -12
  151. package/lib/core/priceFeeds.d.ts +0 -3
  152. package/lib/core/priceFeeds.js +0 -492
  153. package/lib/core/protocols.d.ts +0 -13
  154. package/lib/core/protocols.js +0 -39
  155. package/lib/core/swap.d.ts +0 -4
  156. package/lib/core/swap.js +0 -8
  157. package/lib/core/trade.d.ts +0 -35
  158. package/lib/core/trade.js +0 -62
  159. package/lib/core/tradeTypes.d.ts +0 -79
  160. package/lib/core/tradeTypes.js +0 -21
  161. package/lib/utils/events.d.ts +0 -2
  162. package/lib/utils/events.js +0 -13
  163. package/src/utils/events.ts +0 -10
@@ -15,9 +15,10 @@ var __extends = (this && this.__extends) || (function () {
15
15
  };
16
16
  })();
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.CreditAccountDataExtended = exports.CreditAccountData = void 0;
18
+ exports.CreditAccountDataExtended = exports.tokensAbcComparator = exports.sortBalances = exports.CreditAccountData = void 0;
19
19
  var ethers_1 = require("ethers");
20
20
  var constants_1 = require("./constants");
21
+ var price_1 = require("./price");
21
22
  var CreditAccountData = /** @class */ (function () {
22
23
  function CreditAccountData(payload) {
23
24
  var _this = this;
@@ -31,7 +32,7 @@ var CreditAccountData = /** @class */ (function () {
31
32
  this.borrower = payload.borrower;
32
33
  this.inUse = payload.inUse;
33
34
  this.creditManager = payload.creditManager;
34
- this.underlyingToken = payload.underlyingToken;
35
+ this.underlyingToken = payload.underlying;
35
36
  this.borrowedAmountPlusInterest = ethers_1.BigNumber.from(payload.borrowedAmountPlusInterest);
36
37
  this.totalValue = ethers_1.BigNumber.from(payload.totalValue);
37
38
  this.healthFactor =
@@ -39,7 +40,7 @@ var CreditAccountData = /** @class */ (function () {
39
40
  this.borrowRate =
40
41
  ethers_1.BigNumber.from(payload.borrowRate)
41
42
  .mul(constants_1.PERCENTAGE_FACTOR)
42
- .mul(100)
43
+ .mul(constants_1.PERCENTAGE_DECIMALS)
43
44
  .div(constants_1.RAY)
44
45
  .toNumber() / constants_1.PERCENTAGE_FACTOR;
45
46
  (payload.balances || []).forEach(function (b) {
@@ -53,34 +54,7 @@ var CreditAccountData = /** @class */ (function () {
53
54
  this.isDeleting = false;
54
55
  }
55
56
  CreditAccountData.prototype.balancesSorted = function (prices, tokens) {
56
- var priceCalc = function (addr, amount) {
57
- var price = prices[addr] || 0;
58
- var _a = (tokens[addr] || {}).decimals, decimals = _a === void 0 ? 18 : _a;
59
- return amount
60
- .mul(Math.floor(1000 * price))
61
- .div(ethers_1.BigNumber.from(10).pow(decimals));
62
- };
63
- var tokensAbcComparator = function (t1, t2) {
64
- var _a = (t1 || {}).symbol, symbol1 = _a === void 0 ? "" : _a;
65
- var _b = (t2 || {}).symbol, symbol2 = _b === void 0 ? "" : _b;
66
- return symbol1 > symbol2 ? 1 : -1;
67
- };
68
- var safeBalances = this.balances || [];
69
- return Object.entries(safeBalances)
70
- .sort(function (_a, _b) {
71
- var addr1 = _a[0], amount1 = _a[1];
72
- var addr2 = _b[0], amount2 = _b[1];
73
- var addr1Lc = addr1.toLowerCase();
74
- var addr2Lc = addr2.toLowerCase();
75
- var price1 = priceCalc(addr1Lc, amount1);
76
- var price2 = priceCalc(addr2Lc, amount2);
77
- return price1.eq(price2)
78
- ? tokensAbcComparator(tokens[addr1Lc], tokens[addr2Lc])
79
- : price1.gt(price2)
80
- ? -1
81
- : 1;
82
- })
83
- .map(function (_a) {
57
+ return sortBalances(this.balances, prices, tokens).map(function (_a) {
84
58
  var address = _a[0], balance = _a[1];
85
59
  return ({ address: address, balance: balance });
86
60
  });
@@ -88,6 +62,34 @@ var CreditAccountData = /** @class */ (function () {
88
62
  return CreditAccountData;
89
63
  }());
90
64
  exports.CreditAccountData = CreditAccountData;
65
+ function sortBalances(balances, prices, tokens) {
66
+ return Object.entries(balances).sort(function (_a, _b) {
67
+ var addr1 = _a[0], amount1 = _a[1];
68
+ var addr2 = _b[0], amount2 = _b[1];
69
+ var addr1Lc = addr1.toLowerCase();
70
+ var addr2Lc = addr2.toLowerCase();
71
+ var token1 = tokens[addr1Lc];
72
+ var token2 = tokens[addr2Lc];
73
+ var price1 = prices[addr1Lc] || constants_1.PRICE_DECIMALS;
74
+ var price2 = prices[addr2Lc] || constants_1.PRICE_DECIMALS;
75
+ var totalPrice1 = (0, price_1.calcTotalPrice)(price1, amount1, token1 === null || token1 === void 0 ? void 0 : token1.decimals);
76
+ var totalPrice2 = (0, price_1.calcTotalPrice)(price2, amount2, token2 === null || token2 === void 0 ? void 0 : token2.decimals);
77
+ if (totalPrice1.eq(totalPrice2)) {
78
+ return tokensAbcComparator(token1, token2);
79
+ }
80
+ if (totalPrice1.gt(totalPrice2)) {
81
+ return -1;
82
+ }
83
+ return 1;
84
+ });
85
+ }
86
+ exports.sortBalances = sortBalances;
87
+ function tokensAbcComparator(t1, t2) {
88
+ var _a = (t1 || {}).symbol, symbol1 = _a === void 0 ? "" : _a;
89
+ var _b = (t2 || {}).symbol, symbol2 = _b === void 0 ? "" : _b;
90
+ return symbol1 > symbol2 ? 1 : -1;
91
+ }
92
+ exports.tokensAbcComparator = tokensAbcComparator;
91
93
  var CreditAccountDataExtended = /** @class */ (function (_super) {
92
94
  __extends(CreditAccountDataExtended, _super);
93
95
  function CreditAccountDataExtended(payload) {
@@ -1,6 +1,7 @@
1
1
  import { BigNumber, ethers, Signer } from "ethers";
2
2
  import { CreditManagerDataPayload, CreditManagerStatPayload } from "../payload/creditManager";
3
3
  import { ICreditManager } from "../types";
4
+ import { MultiCall } from "./multicall";
4
5
  export declare class CreditManagerData {
5
6
  readonly id: string;
6
7
  readonly address: string;
@@ -14,11 +15,21 @@ export declare class CreditManagerData {
14
15
  readonly availableLiquidity: BigNumber;
15
16
  readonly allowedTokens: Array<string>;
16
17
  readonly adapters: Record<string, string>;
18
+ readonly liquidationThresholds: Record<string, BigNumber>;
17
19
  readonly version: number;
20
+ readonly creditFacade: string;
21
+ readonly isDegenMode: boolean;
22
+ readonly degenNFT: string;
23
+ readonly isIncreaseDebtForbidden: boolean;
24
+ readonly forbiddenTokenMask: BigNumber;
25
+ readonly isPaused: boolean;
18
26
  constructor(payload: CreditManagerDataPayload);
19
- validateOpenAccount(balance: BigNumber, decimals: number, amount_BN: BigNumber, leverage: number): string | null;
20
27
  getContractETH(signer: Signer | ethers.providers.Provider): ICreditManager;
21
- get isPaused(): boolean;
28
+ contractToAdapter(contractAddress: string): string | undefined;
29
+ encodeAddCollateral(accountAddress: string, tokenAddress: string, amount: BigNumber): MultiCall;
30
+ encodeIncreaseDebt(amount: BigNumber): MultiCall;
31
+ encodeDecreaseDebt(amount: BigNumber): MultiCall;
32
+ validateOpenAccount(totalAmount: BigNumber, leverage: number): true;
22
33
  }
23
34
  export declare function calcMaxIncreaseBorrow(healthFactor: number, borrowAmountPlusInterest: BigNumber, maxLeverageFactor: number): BigNumber;
24
35
  export declare function calcHealthFactorAfterIncreasingBorrow(healthFactor: number | undefined, borrowAmountPlusInterest: BigNumber | undefined, additional: BigNumber): number;
@@ -14,67 +14,111 @@ var __extends = (this && this.__extends) || (function () {
14
14
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
15
  };
16
16
  })();
17
+ var __assign = (this && this.__assign) || function () {
18
+ __assign = Object.assign || function(t) {
19
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
20
+ s = arguments[i];
21
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
22
+ t[p] = s[p];
23
+ }
24
+ return t;
25
+ };
26
+ return __assign.apply(this, arguments);
27
+ };
17
28
  Object.defineProperty(exports, "__esModule", { value: true });
18
29
  exports.CreditManagerStat = exports.calcHealthFactorAfterAddingCollateral = exports.calcHealthFactorAfterIncreasingBorrow = exports.calcMaxIncreaseBorrow = exports.CreditManagerData = void 0;
19
30
  var ethers_1 = require("ethers");
20
- var formatter_1 = require("../utils/formatter");
21
- var constants_1 = require("./constants");
22
31
  var types_1 = require("../types");
32
+ var constants_1 = require("./constants");
33
+ var errors_1 = require("./errors");
23
34
  var CreditManagerData = /** @class */ (function () {
24
35
  function CreditManagerData(payload) {
25
- var _this = this;
26
- var _a;
27
- this.adapters = {};
28
- this.version = 1;
36
+ this.isPaused = false;
29
37
  this.id = payload.addr;
30
38
  this.address = payload.addr;
31
- this.underlyingToken = payload.underlyingToken || "";
39
+ this.underlyingToken = payload.underlying || "";
32
40
  this.isWETH = payload.isWETH || false;
33
41
  this.canBorrow = payload.canBorrow || false;
34
42
  this.borrowRate =
35
43
  ethers_1.BigNumber.from(payload.borrowRate || 0)
36
44
  .mul(constants_1.PERCENTAGE_FACTOR)
37
- .mul(100)
45
+ .mul(constants_1.PERCENTAGE_DECIMALS)
38
46
  .div(constants_1.RAY)
39
47
  .toNumber() / constants_1.PERCENTAGE_FACTOR;
40
48
  this.minAmount = ethers_1.BigNumber.from(payload.minAmount || 0);
41
49
  this.maxAmount = ethers_1.BigNumber.from(payload.maxAmount || 0);
42
50
  this.maxLeverageFactor = ethers_1.BigNumber.from(payload.maxLeverageFactor || 0).toNumber();
43
51
  this.availableLiquidity = ethers_1.BigNumber.from(payload.availableLiquidity || 0);
44
- this.allowedTokens = payload.allowedTokens || [];
45
- (_a = payload.adapters) === null || _a === void 0 ? void 0 : _a.forEach(function (a) {
46
- _this.adapters[a.allowedContract] = a.adapter;
47
- });
52
+ this.allowedTokens = payload.collateralTokens || [];
53
+ this.adapters = (payload.adapters || []).reduce(function (acc, _a) {
54
+ var _b;
55
+ var allowedContract = _a.allowedContract, adapter = _a.adapter;
56
+ return (__assign(__assign({}, acc), (_b = {}, _b[allowedContract] = adapter, _b)));
57
+ }, {});
58
+ this.liquidationThresholds = (payload.liquidationThresholds || []).reduce(function (acc, threshold, index) {
59
+ var address = payload.collateralTokens[index];
60
+ if (address)
61
+ acc[address.toLowerCase()] = ethers_1.BigNumber.from(threshold);
62
+ return acc;
63
+ }, {});
64
+ this.version = ethers_1.BigNumber.from(payload.version || 1).toNumber();
65
+ this.creditFacade = payload.creditFacade || "";
66
+ this.isDegenMode = payload.isDegenMode || false;
67
+ this.degenNFT = payload.degenNFT || "";
68
+ this.isIncreaseDebtForbidden = payload.isIncreaseDebtForbidden || false;
69
+ this.forbiddenTokenMask = ethers_1.BigNumber.from(payload.forbiddenTokenMask || 0);
48
70
  }
49
- CreditManagerData.prototype.validateOpenAccount = function (balance, decimals, amount_BN, leverage) {
50
- if (balance.lt(amount_BN))
51
- return "Insufficient funds";
52
- if (amount_BN.lt(this.minAmount))
53
- return "Amount is less than minimal (".concat((0, formatter_1.formatBN)(this.minAmount, decimals), ")");
54
- if (amount_BN.gt(this.maxAmount))
55
- return "Amount is greater than maximum (".concat((0, formatter_1.formatBN)(this.maxAmount, decimals), ")");
56
- if (leverage > this.maxLeverageFactor)
57
- return "Leverage is bigger than max";
58
- if (amount_BN.mul(leverage).div(100).gt(this.availableLiquidity))
59
- return "Insufficient liquidity in the pool";
60
- return null;
61
- };
62
71
  CreditManagerData.prototype.getContractETH = function (signer) {
63
72
  return types_1.ICreditManager__factory.connect(this.address, signer);
64
73
  };
65
- Object.defineProperty(CreditManagerData.prototype, "isPaused", {
66
- get: function () {
67
- return false;
68
- },
69
- enumerable: false,
70
- configurable: true
71
- });
74
+ CreditManagerData.prototype.contractToAdapter = function (contractAddress) {
75
+ return this.adapters[contractAddress];
76
+ };
77
+ CreditManagerData.prototype.encodeAddCollateral = function (accountAddress, tokenAddress, amount) {
78
+ if (this.version !== 2)
79
+ throw new Error("Multicall is eligible only for version 2");
80
+ return {
81
+ target: this.creditFacade,
82
+ callData: types_1.ICreditFacade__factory.createInterface().encodeFunctionData("addCollateral", [accountAddress, tokenAddress, amount])
83
+ };
84
+ };
85
+ CreditManagerData.prototype.encodeIncreaseDebt = function (amount) {
86
+ if (this.version !== 2)
87
+ throw new Error("Multicall is eligible only for version 2");
88
+ return {
89
+ target: this.creditFacade,
90
+ callData: types_1.ICreditFacade__factory.createInterface().encodeFunctionData("increaseDebt", [amount])
91
+ };
92
+ };
93
+ CreditManagerData.prototype.encodeDecreaseDebt = function (amount) {
94
+ if (this.version !== 2)
95
+ throw new Error("Multicall is eligible only for version 2");
96
+ return {
97
+ target: this.creditFacade,
98
+ callData: types_1.ICreditFacade__factory.createInterface().encodeFunctionData("decreaseDebt", [amount])
99
+ };
100
+ };
101
+ CreditManagerData.prototype.validateOpenAccount = function (totalAmount, leverage) {
102
+ if (totalAmount.lt(this.minAmount))
103
+ throw new errors_1.OpenAccountError("amountLessMin", this.minAmount);
104
+ if (totalAmount.gt(this.maxAmount))
105
+ throw new errors_1.OpenAccountError("amountGreaterMax", this.maxAmount);
106
+ if (leverage > this.maxLeverageFactor)
107
+ throw new errors_1.OpenAccountError("leverageGreaterMax", ethers_1.BigNumber.from(this.maxLeverageFactor));
108
+ if (totalAmount
109
+ .mul(leverage)
110
+ .div(constants_1.LEVERAGE_DECIMALS)
111
+ .gt(this.availableLiquidity))
112
+ throw new errors_1.OpenAccountError("insufficientPoolLiquidity", ethers_1.BigNumber.from(this.availableLiquidity));
113
+ return true;
114
+ };
72
115
  return CreditManagerData;
73
116
  }());
74
117
  exports.CreditManagerData = CreditManagerData;
75
118
  function calcMaxIncreaseBorrow(healthFactor, borrowAmountPlusInterest, maxLeverageFactor) {
76
119
  var healthFactorPercentage = Math.floor(healthFactor * constants_1.PERCENTAGE_FACTOR);
77
- var minHealthFactor = Math.floor((constants_1.UNDERLYING_TOKEN_LIQUIDATION_THRESHOLD * (maxLeverageFactor + 100)) /
120
+ var minHealthFactor = Math.floor((constants_1.UNDERLYING_TOKEN_LIQUIDATION_THRESHOLD *
121
+ (maxLeverageFactor + constants_1.LEVERAGE_DECIMALS)) /
78
122
  maxLeverageFactor);
79
123
  var result = borrowAmountPlusInterest
80
124
  .mul(healthFactorPercentage - minHealthFactor)
@@ -1,4 +1,15 @@
1
1
  "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
2
13
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
14
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
15
  };
@@ -11,7 +22,7 @@ var statusEnum = [
11
22
  "active",
12
23
  "closed",
13
24
  "repaid",
14
- "liquidated",
25
+ "liquidated"
15
26
  ];
16
27
  var CreditSession = /** @class */ (function () {
17
28
  function CreditSession(payload) {
@@ -33,8 +44,8 @@ var CreditSession = /** @class */ (function () {
33
44
  ethers_1.BigNumber.from(payload.healthFactor || 0).toNumber() / constants_1.PERCENTAGE_FACTOR;
34
45
  this.score = payload.score;
35
46
  this.operations = (payload.operations || []).map(function (op) {
36
- op.date = (0, moment_1.default)(op.timestamp * 1000).format("Do MMM YYYY");
37
- return op;
47
+ var formattedOp = __assign(__assign({}, op), { date: (0, moment_1.default)(op.timestamp * 1000).format("Do MMM YYYY") });
48
+ return formattedOp;
38
49
  });
39
50
  this.sinceDate = (0, moment_1.default)(payload.sinceTimestamp * 1000).format("Do MMM YYYY");
40
51
  this.closedAtDate = (0, moment_1.default)(payload.closedAtTimestamp * 1000).format("Do MMM YYYY");
@@ -1,3 +1,4 @@
1
+ import { BigNumber } from "ethers";
1
2
  export interface MetamaskError {
2
3
  code: number;
3
4
  message: string;
@@ -24,3 +25,12 @@ export declare class PathNotFoundError extends Error {
24
25
  export declare class AccountsInAlllCreditManagersError extends Error {
25
26
  constructor();
26
27
  }
28
+ export declare type OpenAccountErrorTypes = "insufficientPoolLiquidity" | "leverageGreaterMax" | "amountGreaterMax" | "amountLessMin";
29
+ export declare class OpenAccountError extends Error {
30
+ message: OpenAccountErrorTypes;
31
+ payload: {
32
+ amount: BigNumber;
33
+ };
34
+ constructor(errorType: OpenAccountErrorTypes, amount: BigNumber);
35
+ static isOpenAccountError(e: unknown): e is OpenAccountError;
36
+ }
@@ -15,7 +15,7 @@ var __extends = (this && this.__extends) || (function () {
15
15
  };
16
16
  })();
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.AccountsInAlllCreditManagersError = exports.PathNotFoundError = exports.UserHasNotAccountError = exports.CreditManagerNotExistsError = exports.PoolNotExistsError = exports.IncorrectEthAddressError = exports.NetworkError = void 0;
18
+ exports.OpenAccountError = exports.AccountsInAlllCreditManagersError = exports.PathNotFoundError = exports.UserHasNotAccountError = exports.CreditManagerNotExistsError = exports.PoolNotExistsError = exports.IncorrectEthAddressError = exports.NetworkError = void 0;
19
19
  var NetworkError = /** @class */ (function (_super) {
20
20
  __extends(NetworkError, _super);
21
21
  function NetworkError() {
@@ -72,3 +72,18 @@ var AccountsInAlllCreditManagersError = /** @class */ (function (_super) {
72
72
  return AccountsInAlllCreditManagersError;
73
73
  }(Error));
74
74
  exports.AccountsInAlllCreditManagersError = AccountsInAlllCreditManagersError;
75
+ var OpenAccountError = /** @class */ (function (_super) {
76
+ __extends(OpenAccountError, _super);
77
+ function OpenAccountError(errorType, amount) {
78
+ var _this = _super.call(this) || this;
79
+ Object.setPrototypeOf(_this, OpenAccountError.prototype);
80
+ _this.message = errorType;
81
+ _this.payload = { amount: amount };
82
+ return _this;
83
+ }
84
+ OpenAccountError.isOpenAccountError = function (e) {
85
+ return e instanceof OpenAccountError;
86
+ };
87
+ return OpenAccountError;
88
+ }(Error));
89
+ exports.OpenAccountError = OpenAccountError;
@@ -1,5 +1,5 @@
1
1
  import { TokenData } from "../tokens/tokenData";
2
- import { TxSerialized } from "./transactions";
2
+ import type { TxSerialized } from "./transactions";
3
3
  export interface Display {
4
4
  toString(tokenData: Record<string, TokenData>): string;
5
5
  }
@@ -1,5 +1,5 @@
1
- import { TokenData } from "../tokens/tokenData";
2
1
  import { BigNumber } from "ethers";
2
+ import { TokenData } from "../tokens/tokenData";
3
3
  import { EVMEvent, EVMTx, EVMEventProps } from "./eventOrTx";
4
4
  export interface EventSerialized {
5
5
  type: "EventAddLiquidity" | "EventRemoveLiquidity" | "EventOpenCreditAccount" | "EventCloseCreditAccount" | "EventLiquidateCreditAccount" | "EventRepayCreditAccount" | "EventAddCollateral" | "EventIncreaseBorrowAmount" | "EventCMNewParameters" | "EventTokenAllowed" | "EventTokenForbidden" | "EventContractAllowed" | "EventContractForbidden" | "EventNewFastCheckParameters" | "EventPriceOracleUpdated" | "EventTransferPluginAllowed" | "EventNewInterestRateModel" | "EventNewCreditManagerConnected" | "EventBorrowForbidden" | "EventNewExpectedLiquidityLimit" | "EventNewWithdrawFee" | "EventNewPriceFeed" | "EventTakeForever" | "EventPaused" | "EventUnPaused" | "EventPausableAdminAdded" | "EventPausableAdminRemoved" | "EventUnpausableAdminAdded" | "EventUnpausableAdminRemoved" | "EventOwnershipTransferred";
@@ -82,7 +82,7 @@ export declare class EventRepayCreditAccount extends EVMEvent {
82
82
  readonly underlyingToken: string;
83
83
  readonly creditManager: string;
84
84
  constructor(opts: RepayCreditAccountProps);
85
- toString(_: Record<string, TokenData>): string;
85
+ toString(): string;
86
86
  }
87
87
  interface AddCollateralProps extends EVMEventProps {
88
88
  amount: string;
@@ -182,7 +182,7 @@ export declare class EventContractAllowed extends EVMEvent {
182
182
  readonly adapter: string;
183
183
  readonly status: EventContractAllowedStatus;
184
184
  constructor(opts: ContractAllowedProps);
185
- toString(_: Record<string, TokenData>): string;
185
+ toString(): string;
186
186
  }
187
187
  interface ContractForbiddenProps extends EVMEventProps {
188
188
  creditManager: string;
@@ -192,7 +192,7 @@ export declare class EventContractForbidden extends EVMEvent {
192
192
  readonly creditManager: string;
193
193
  readonly protocol: string;
194
194
  constructor(opts: ContractForbiddenProps);
195
- toString(_: Record<string, TokenData>): string;
195
+ toString(): string;
196
196
  }
197
197
  interface NewFastCheckParametersProps extends EVMEventProps {
198
198
  creditManager: string;
@@ -208,7 +208,7 @@ export declare class EventNewFastCheckParameters extends EVMEvent {
208
208
  readonly prevChiThreshold?: number;
209
209
  readonly prevFastCheckDelay?: number;
210
210
  constructor(opts: NewFastCheckParametersProps);
211
- toString(_: Record<string, TokenData>): string;
211
+ toString(): string;
212
212
  }
213
213
  interface PriceOracleUpdatedProps extends EVMEventProps {
214
214
  creditManager: string;
@@ -218,7 +218,7 @@ export declare class EventPriceOracleUpdated extends EVMEvent {
218
218
  readonly creditManager: string;
219
219
  readonly priceOracle: string;
220
220
  constructor(opts: PriceOracleUpdatedProps);
221
- toString(_: Record<string, TokenData>): string;
221
+ toString(): string;
222
222
  }
223
223
  interface TransferPluginAllowedProps extends EVMEventProps {
224
224
  creditManager: string;
@@ -230,7 +230,7 @@ export declare class EventTransferPluginAllowed extends EVMEvent {
230
230
  readonly plugin: string;
231
231
  readonly state: boolean;
232
232
  constructor(opts: TransferPluginAllowedProps);
233
- toString(_: Record<string, TokenData>): string;
233
+ toString(): string;
234
234
  }
235
235
  interface NewInterestRateModelProps extends EVMEventProps {
236
236
  pool: string;
@@ -240,7 +240,7 @@ export declare class EventNewInterestRateModel extends EVMEvent {
240
240
  readonly pool: string;
241
241
  readonly newInterestRateModel: string;
242
242
  constructor(opts: NewInterestRateModelProps);
243
- toString(_: Record<string, TokenData>): string;
243
+ toString(): string;
244
244
  }
245
245
  interface NewCreditManagerConnectedProps extends EVMEventProps {
246
246
  pool: string;
@@ -250,7 +250,7 @@ export declare class EventNewCreditManagerConnected extends EVMEvent {
250
250
  readonly pool: string;
251
251
  readonly creditManager: string;
252
252
  constructor(opts: NewCreditManagerConnectedProps);
253
- toString(_: Record<string, TokenData>): string;
253
+ toString(): string;
254
254
  }
255
255
  interface BorrowForbiddenProps extends EVMEventProps {
256
256
  pool: string;
@@ -260,7 +260,7 @@ export declare class EventBorrowForbidden extends EVMEvent {
260
260
  readonly pool: string;
261
261
  readonly creditManager: string;
262
262
  constructor(opts: BorrowForbiddenProps);
263
- toString(_: Record<string, TokenData>): string;
263
+ toString(): string;
264
264
  }
265
265
  interface NewExpectedLiquidityLimitProps extends EVMEventProps {
266
266
  pool: string;
@@ -288,7 +288,7 @@ export declare class EventNewWithdrawFee extends EVMEvent {
288
288
  readonly newFee: number;
289
289
  readonly prevFee: number;
290
290
  constructor(opts: NewWithdrawFeeProps);
291
- toString(_: Record<string, TokenData>): string;
291
+ toString(): string;
292
292
  }
293
293
  interface NewPriceFeedProps extends EVMEventProps {
294
294
  token: string;
@@ -308,7 +308,7 @@ export declare class EventTakeForever extends EVMEvent {
308
308
  readonly creditAccount: string;
309
309
  readonly to: string;
310
310
  constructor(opts: TakeForeverProps);
311
- toString(_: Record<string, TokenData>): string;
311
+ toString(): string;
312
312
  }
313
313
  interface PausedProps extends EVMEventProps {
314
314
  contract: string;
@@ -316,7 +316,7 @@ interface PausedProps extends EVMEventProps {
316
316
  export declare class EventPaused extends EVMEvent {
317
317
  readonly contract: string;
318
318
  constructor(opts: PausedProps);
319
- toString(_: Record<string, TokenData>): string;
319
+ toString(): string;
320
320
  }
321
321
  interface UnPausedProps extends EVMEventProps {
322
322
  contract: string;
@@ -324,7 +324,7 @@ interface UnPausedProps extends EVMEventProps {
324
324
  export declare class EventUnPaused extends EVMEvent {
325
325
  readonly contract: string;
326
326
  constructor(opts: UnPausedProps);
327
- toString(_: Record<string, TokenData>): string;
327
+ toString(): string;
328
328
  }
329
329
  interface PausableAdminAddedProps extends EVMEventProps {
330
330
  admin: string;
@@ -332,7 +332,7 @@ interface PausableAdminAddedProps extends EVMEventProps {
332
332
  export declare class EventPausableAdminAdded extends EVMEvent {
333
333
  readonly admin: string;
334
334
  constructor(opts: PausableAdminAddedProps);
335
- toString(_: Record<string, TokenData>): string;
335
+ toString(): string;
336
336
  }
337
337
  interface PausableAdminRemovedProps extends EVMEventProps {
338
338
  admin: string;
@@ -340,7 +340,7 @@ interface PausableAdminRemovedProps extends EVMEventProps {
340
340
  export declare class EventPausableAdminRemoved extends EVMEvent {
341
341
  readonly admin: string;
342
342
  constructor(opts: PausableAdminRemovedProps);
343
- toString(_: Record<string, TokenData>): string;
343
+ toString(): string;
344
344
  }
345
345
  interface UnPausableAdminAddedProps extends EVMEventProps {
346
346
  admin: string;
@@ -348,7 +348,7 @@ interface UnPausableAdminAddedProps extends EVMEventProps {
348
348
  export declare class EventUnPausableAdminAdded extends EVMEvent {
349
349
  readonly admin: string;
350
350
  constructor(opts: UnPausableAdminAddedProps);
351
- toString(_: Record<string, TokenData>): string;
351
+ toString(): string;
352
352
  }
353
353
  interface UnPausableAdminRemovedProps extends EVMEventProps {
354
354
  admin: string;
@@ -356,7 +356,7 @@ interface UnPausableAdminRemovedProps extends EVMEventProps {
356
356
  export declare class EventUnPausableAdminRemoved extends EVMEvent {
357
357
  readonly admin: string;
358
358
  constructor(opts: UnPausableAdminRemovedProps);
359
- toString(_: Record<string, TokenData>): string;
359
+ toString(): string;
360
360
  }
361
361
  interface TransferOwnershipProps extends EVMEventProps {
362
362
  admin: string;
@@ -364,6 +364,6 @@ interface TransferOwnershipProps extends EVMEventProps {
364
364
  export declare class EventTransferOwnership extends EVMEvent {
365
365
  readonly newOwner: string;
366
366
  constructor(opts: TransferOwnershipProps);
367
- toString(_: Record<string, TokenData>): string;
367
+ toString(): string;
368
368
  }
369
369
  export {};