@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.
- package/.eslintignore +4 -0
- package/.eslintrc.js +52 -0
- package/.husky/pre-push +4 -0
- package/lib/apy/convexAPY.d.ts +8 -0
- package/lib/apy/convexAPY.js +200 -0
- package/lib/apy/lidoAPY.d.ts +4 -0
- package/lib/apy/lidoAPY.js +103 -0
- package/lib/config.d.ts +1 -0
- package/lib/config.js +2 -1
- package/lib/contracts/contracts.d.ts +9 -4
- package/lib/contracts/contracts.js +52 -14
- package/lib/contracts/contractsRegister.js +16 -4
- package/lib/core/constants.d.ts +7 -1
- package/lib/core/constants.js +11 -5
- package/lib/core/creditAccount.d.ts +3 -1
- package/lib/core/creditAccount.js +33 -31
- package/lib/core/creditManager.d.ts +13 -2
- package/lib/core/creditManager.js +77 -33
- package/lib/core/creditSession.js +14 -3
- package/lib/core/errors.d.ts +10 -0
- package/lib/core/errors.js +16 -1
- package/lib/core/eventOrTx.d.ts +1 -1
- package/lib/core/events.d.ts +19 -19
- package/lib/core/events.js +32 -30
- package/lib/core/multicall.d.ts +1 -1
- package/lib/core/pool.d.ts +2 -2
- package/lib/core/pool.js +8 -12
- package/lib/core/price.d.ts +2 -0
- package/lib/core/price.js +14 -0
- package/lib/core/strategy.d.ts +36 -0
- package/lib/core/strategy.js +57 -0
- package/lib/core/tokenDistributor.js +1 -1
- package/lib/core/transactions.d.ts +18 -3
- package/lib/core/transactions.js +39 -3
- package/lib/index.d.ts +8 -3
- package/lib/index.js +9 -4
- package/lib/oracles/priceFeeds.js +1 -1
- package/lib/pathfinder/convexLP.d.ts +1 -1
- package/lib/pathfinder/convexLP.js +26 -29
- package/lib/pathfinder/curveLP.d.ts +1 -1
- package/lib/pathfinder/curveLP.js +5 -7
- package/lib/pathfinder/path.d.ts +1 -1
- package/lib/pathfinder/path.js +38 -42
- package/lib/pathfinder/trade.d.ts +1 -2
- package/lib/pathfinder/tradeTypes.d.ts +5 -5
- package/lib/pathfinder/yVault.d.ts +2 -2
- package/lib/pathfinder/yVault.js +22 -19
- package/lib/payload/creditAccount.d.ts +4 -26
- package/lib/payload/creditManager.d.ts +3 -25
- package/lib/payload/pool.d.ts +2 -17
- package/lib/payload/pool.js +0 -1
- package/lib/strategies/curve.d.ts +6 -60
- package/lib/strategies/curve.js +6 -0
- package/lib/strategies/uniswapV2.js +3 -19
- package/lib/strategies/uniswapV3.js +1 -1
- package/lib/strategies/yearn.js +15 -11
- package/lib/tokens/convex.d.ts +3 -3
- package/lib/tokens/curveLP.d.ts +2 -2
- package/lib/tokens/curveLP.js +1 -1
- package/lib/tokens/gear.d.ts +2 -2
- package/lib/tokens/gear.js +1 -1
- package/lib/tokens/normal.d.ts +1 -1
- package/lib/tokens/token.js +9 -9
- package/lib/tokens/tokenData.d.ts +3 -1
- package/lib/tokens/tokenData.js +10 -8
- package/lib/tokens/yearn.d.ts +3 -3
- package/lib/utils/errors.d.ts +6 -0
- package/lib/utils/errors.js +13 -0
- package/lib/utils/formatter.d.ts +2 -1
- package/lib/utils/formatter.js +23 -15
- package/lib/utils/loading.d.ts +2 -1
- package/lib/utils/loading.js +9 -13
- package/lib/utils/mappers.d.ts +2 -1
- package/lib/utils/mappers.js +13 -5
- package/lib/utils/multicall.js +4 -3
- package/lib/utils/network.js +2 -2
- package/lib/utils/repeater.js +12 -24
- package/lib/utils/types.d.ts +1 -0
- package/lib/utils/validate.js +1 -1
- package/package.json +26 -8
- package/src/apy/convexAPY.ts +250 -0
- package/src/apy/lidoAPY.ts +89 -0
- package/src/config.ts +2 -1
- package/src/contracts/contracts.ts +73 -19
- package/src/contracts/contractsRegister.ts +19 -4
- package/src/core/constants.ts +11 -4
- package/src/core/creditAccount.ts +69 -37
- package/src/core/creditManager.ts +256 -148
- package/src/core/creditOperation.ts +7 -7
- package/src/core/creditSession.ts +25 -5
- package/src/core/errors.ts +25 -0
- package/src/core/eventOrTx.ts +8 -5
- package/src/core/events.ts +978 -911
- package/src/core/history.ts +46 -46
- package/src/core/multicall.ts +1 -1
- package/src/core/operations.ts +6 -0
- package/src/core/pool.ts +75 -58
- package/src/core/price.ts +13 -0
- package/src/core/strategy.ts +134 -0
- package/src/core/tokenDistributor.ts +2 -2
- package/src/core/transactions.ts +427 -350
- package/src/index.ts +9 -4
- package/src/oracles/priceFeeds.ts +523 -523
- package/src/pathfinder/contracts.ts +15 -13
- package/src/pathfinder/convexLP.ts +29 -25
- package/src/pathfinder/curveLP.ts +57 -53
- package/src/pathfinder/path.ts +158 -150
- package/src/pathfinder/priority.ts +11 -11
- package/src/pathfinder/trade.ts +84 -77
- package/src/pathfinder/tradeTypes.ts +98 -94
- package/src/pathfinder/yVault.ts +79 -63
- package/src/payload/creditAccount.ts +4 -26
- package/src/payload/creditManager.ts +4 -26
- package/src/payload/pool.ts +2 -19
- package/src/payload/token.ts +3 -3
- package/src/strategies/convex.ts +217 -210
- package/src/strategies/creditFacade.ts +70 -53
- package/src/strategies/curve.ts +263 -194
- package/src/strategies/lido.ts +33 -37
- package/src/strategies/uniswapV2.ts +90 -112
- package/src/strategies/uniswapV3.ts +114 -91
- package/src/strategies/yearn.ts +58 -62
- package/src/tokens/connectors.ts +6 -6
- package/src/tokens/convex.ts +297 -296
- package/src/tokens/curveLP.ts +170 -165
- package/src/tokens/gear.ts +47 -45
- package/src/tokens/normal.ts +801 -802
- package/src/tokens/token.ts +19 -10
- package/src/tokens/tokenData.ts +19 -9
- package/src/tokens/tokenType.ts +11 -11
- package/src/tokens/yearn.ts +126 -124
- package/src/utils/errors.ts +11 -0
- package/src/utils/formatter.ts +26 -18
- package/src/utils/loading.ts +14 -6
- package/src/utils/mappers.ts +15 -6
- package/src/utils/multicall.ts +6 -9
- package/src/utils/network.ts +21 -21
- package/src/utils/repeater.ts +2 -2
- package/src/utils/types.ts +6 -2
- package/src/utils/validate.ts +1 -1
- package/lib/core/adapters.d.ts +0 -15
- package/lib/core/adapters.js +0 -19
- package/lib/core/contracts.d.ts +0 -67
- package/lib/core/contracts.js +0 -254
- package/lib/core/contractsRegister.d.ts +0 -2
- package/lib/core/contractsRegister.js +0 -58
- package/lib/core/creditCard.d.ts +0 -13
- package/lib/core/creditCard.js +0 -2
- package/lib/core/oracles.d.ts +0 -38
- package/lib/core/oracles.js +0 -12
- package/lib/core/priceFeeds.d.ts +0 -3
- package/lib/core/priceFeeds.js +0 -492
- package/lib/core/protocols.d.ts +0 -13
- package/lib/core/protocols.js +0 -39
- package/lib/core/swap.d.ts +0 -4
- package/lib/core/swap.js +0 -8
- package/lib/core/trade.d.ts +0 -35
- package/lib/core/trade.js +0 -62
- package/lib/core/tradeTypes.d.ts +0 -79
- package/lib/core/tradeTypes.js +0 -21
- package/lib/utils/events.d.ts +0 -2
- package/lib/utils/events.js +0 -13
- 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.
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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(
|
|
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.
|
|
45
|
-
|
|
46
|
-
|
|
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
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
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 *
|
|
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
|
-
|
|
37
|
-
return
|
|
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");
|
package/lib/core/errors.d.ts
CHANGED
|
@@ -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
|
+
}
|
package/lib/core/errors.js
CHANGED
|
@@ -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;
|
package/lib/core/eventOrTx.d.ts
CHANGED
package/lib/core/events.d.ts
CHANGED
|
@@ -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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
367
|
+
toString(): string;
|
|
368
368
|
}
|
|
369
369
|
export {};
|