@defisaver/positions-sdk 1.0.23 → 1.0.25
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/cjs/aaveV3/index.d.ts +0 -1
- package/cjs/aaveV3/index.js +41 -77
- package/cjs/config/contracts.d.ts +362 -387
- package/cjs/config/contracts.js +7 -22
- package/cjs/contracts.d.ts +0 -1
- package/cjs/contracts.js +1 -2
- package/cjs/multicall/index.js +1 -1
- package/cjs/staking/staking.js +1 -3
- package/cjs/types/aave.d.ts +3 -13
- package/cjs/types/common.d.ts +1 -2
- package/cjs/types/contracts/generated/AaveV3View.d.ts +85 -28
- package/cjs/types/contracts/generated/index.d.ts +0 -2
- package/esm/aaveV3/index.d.ts +0 -1
- package/esm/aaveV3/index.js +42 -77
- package/esm/config/contracts.d.ts +362 -387
- package/esm/config/contracts.js +7 -22
- package/esm/contracts.d.ts +0 -1
- package/esm/contracts.js +0 -1
- package/esm/multicall/index.js +1 -1
- package/esm/staking/staking.js +1 -3
- package/esm/types/aave.d.ts +3 -13
- package/esm/types/common.d.ts +1 -2
- package/esm/types/contracts/generated/AaveV3View.d.ts +85 -28
- package/esm/types/contracts/generated/index.d.ts +0 -2
- package/package.json +1 -1
- package/src/aaveV3/index.ts +4 -116
- package/src/config/contracts.js +7 -22
- package/src/contracts.ts +0 -2
- package/src/multicall/index.ts +1 -1
- package/src/staking/staking.ts +1 -3
- package/src/types/aave.ts +3 -14
- package/src/types/common.ts +1 -2
- package/src/types/contracts/generated/AaveV3View.ts +97 -31
- package/src/types/contracts/generated/index.ts +0 -2
- package/cjs/types/contracts/generated/GHO.d.ts +0 -136
- package/cjs/types/contracts/generated/GHO.js +0 -5
- package/cjs/types/contracts/generated/GhoDiscountRateStrategy.d.ts +0 -25
- package/cjs/types/contracts/generated/GhoDiscountRateStrategy.js +0 -5
- package/esm/types/contracts/generated/GHO.d.ts +0 -136
- package/esm/types/contracts/generated/GHO.js +0 -4
- package/esm/types/contracts/generated/GhoDiscountRateStrategy.d.ts +0 -25
- package/esm/types/contracts/generated/GhoDiscountRateStrategy.js +0 -4
- package/src/types/contracts/generated/GHO.ts +0 -274
- package/src/types/contracts/generated/GhoDiscountRateStrategy.ts +0 -48
package/cjs/aaveV3/index.d.ts
CHANGED
|
@@ -2,7 +2,6 @@ import Web3 from 'web3';
|
|
|
2
2
|
import { AaveMarketInfo, AaveV3MarketData, AaveV3PositionData, AaveV3UsedAssets, EModeCategoryDataMapping } from '../types/aave';
|
|
3
3
|
import { Blockish, EthAddress, NetworkNumber, PositionBalances } from '../types/common';
|
|
4
4
|
export declare const test: (web3: Web3, network: NetworkNumber) => Promise<string>;
|
|
5
|
-
export declare const aaveV3CalculateDiscountRate: (debtBalance: string, discountTokenBalance: string, discountRate: string, minDiscountTokenBalance: string, minGhoBalanceForDiscount: string, ghoDiscountedPerDiscountToken: string) => string;
|
|
6
5
|
export declare const aaveV3EmodeCategoriesMapping: (extractedState: any, usedAssets: AaveV3UsedAssets) => {
|
|
7
6
|
[key: number]: EModeCategoryDataMapping;
|
|
8
7
|
};
|
package/cjs/aaveV3/index.js
CHANGED
|
@@ -12,7 +12,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
12
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.getAaveV3FullPositionData = exports.getAaveV3AccountData = exports.getAaveV3AccountBalances = exports.EMPTY_AAVE_DATA = exports.getAaveV3MarketData = exports.aaveV3EmodeCategoriesMapping = exports.
|
|
15
|
+
exports.getAaveV3FullPositionData = exports.getAaveV3AccountData = exports.getAaveV3AccountBalances = exports.EMPTY_AAVE_DATA = exports.getAaveV3MarketData = exports.aaveV3EmodeCategoriesMapping = exports.test = void 0;
|
|
16
16
|
const tokens_1 = require("@defisaver/tokens");
|
|
17
17
|
const decimal_js_1 = __importDefault(require("decimal.js"));
|
|
18
18
|
const assets_1 = require("../assets");
|
|
@@ -29,23 +29,6 @@ const test = (web3, network) => {
|
|
|
29
29
|
return contract.methods.AAVE_REFERRAL_CODE().call();
|
|
30
30
|
};
|
|
31
31
|
exports.test = test;
|
|
32
|
-
const aaveV3CalculateDiscountRate = (debtBalance, discountTokenBalance, discountRate, minDiscountTokenBalance, minGhoBalanceForDiscount, ghoDiscountedPerDiscountToken) => {
|
|
33
|
-
if (new decimal_js_1.default(discountTokenBalance).lt(minDiscountTokenBalance) || new decimal_js_1.default(debtBalance).lt(minGhoBalanceForDiscount)) {
|
|
34
|
-
return '0';
|
|
35
|
-
}
|
|
36
|
-
const discountedBalance = new decimal_js_1.default(// wadMul
|
|
37
|
-
new decimal_js_1.default(discountTokenBalance).mul(ghoDiscountedPerDiscountToken).add(new decimal_js_1.default(1e18).div(2))).div(1e18).toDP(0);
|
|
38
|
-
if (new decimal_js_1.default(discountedBalance).gte(debtBalance)) {
|
|
39
|
-
return new decimal_js_1.default(discountRate).div(10000).toDP(4).toString();
|
|
40
|
-
}
|
|
41
|
-
return new decimal_js_1.default(discountedBalance)
|
|
42
|
-
.mul(discountRate)
|
|
43
|
-
.div(debtBalance)
|
|
44
|
-
.div(10000)
|
|
45
|
-
.toDP(4)
|
|
46
|
-
.toString();
|
|
47
|
-
};
|
|
48
|
-
exports.aaveV3CalculateDiscountRate = aaveV3CalculateDiscountRate;
|
|
49
32
|
const aaveV3EmodeCategoriesMapping = (extractedState, usedAssets) => {
|
|
50
33
|
const { assetsData, eModeCategoriesData } = extractedState;
|
|
51
34
|
const usedAssetsValues = Object.values(usedAssets);
|
|
@@ -79,43 +62,11 @@ function getAaveV3MarketData(web3, network, market, defaultWeb3) {
|
|
|
79
62
|
const loanInfoContract = (0, contracts_1.AaveV3ViewContract)(web3, network);
|
|
80
63
|
const aaveIncentivesContract = (0, contracts_1.AaveIncentiveDataProviderV3Contract)(web3, network);
|
|
81
64
|
const marketAddress = market.providerAddress;
|
|
82
|
-
const GhoDiscountRateStrategyAddress = (0, contracts_1.getConfigContractAddress)('GhoDiscountRateStrategy', common_1.NetworkNumber.Eth);
|
|
83
|
-
const GhoDiscountRateStrategyAbi = (0, contracts_1.getConfigContractAbi)('GhoDiscountRateStrategy');
|
|
84
|
-
const GhoTokenAbi = (0, contracts_1.getConfigContractAbi)('GHO');
|
|
85
|
-
const multicallCallsObject = [
|
|
86
|
-
{
|
|
87
|
-
target: GhoDiscountRateStrategyAddress,
|
|
88
|
-
abiItem: (0, utils_1.getAbiItem)(GhoDiscountRateStrategyAbi, 'GHO_DISCOUNTED_PER_DISCOUNT_TOKEN'),
|
|
89
|
-
params: [],
|
|
90
|
-
},
|
|
91
|
-
{
|
|
92
|
-
target: GhoDiscountRateStrategyAddress,
|
|
93
|
-
abiItem: (0, utils_1.getAbiItem)(GhoDiscountRateStrategyAbi, 'DISCOUNT_RATE'),
|
|
94
|
-
params: [],
|
|
95
|
-
},
|
|
96
|
-
{
|
|
97
|
-
target: GhoDiscountRateStrategyAddress,
|
|
98
|
-
abiItem: (0, utils_1.getAbiItem)(GhoDiscountRateStrategyAbi, 'MIN_DISCOUNT_TOKEN_BALANCE'),
|
|
99
|
-
params: [],
|
|
100
|
-
},
|
|
101
|
-
{
|
|
102
|
-
target: GhoDiscountRateStrategyAddress,
|
|
103
|
-
abiItem: (0, utils_1.getAbiItem)(GhoDiscountRateStrategyAbi, 'MIN_DEBT_TOKEN_BALANCE'),
|
|
104
|
-
params: [],
|
|
105
|
-
},
|
|
106
|
-
{
|
|
107
|
-
target: (0, tokens_1.getAssetInfo)('GHO', network).address,
|
|
108
|
-
abiItem: (0, utils_1.getAbiItem)(GhoTokenAbi, 'getFacilitatorsList'),
|
|
109
|
-
params: [],
|
|
110
|
-
},
|
|
111
|
-
];
|
|
112
|
-
const ghoContract = (0, contracts_1.GhoTokenContract)(web3, network);
|
|
113
65
|
// eslint-disable-next-line prefer-const
|
|
114
|
-
let [loanInfo, eModesInfo, isBorrowAllowed
|
|
66
|
+
let [loanInfo, eModesInfo, isBorrowAllowed] = yield Promise.all([
|
|
115
67
|
loanInfoContract.methods.getFullTokensInfo(marketAddress, _addresses).call(),
|
|
116
68
|
loanInfoContract.methods.getAllEmodes(marketAddress).call(),
|
|
117
|
-
loanInfoContract.methods.isBorrowAllowed(marketAddress).call(),
|
|
118
|
-
isL2 ? [{ 0: null }, { 0: null }, { 0: null }, { 0: null }, { 0: null }] : (0, multicall_1.multicall)(multicallCallsObject, web3, network),
|
|
69
|
+
loanInfoContract.methods.isBorrowAllowed(marketAddress).call(), // Used on L2s check for PriceOracleSentinel (mainnet will always return true)
|
|
119
70
|
]);
|
|
120
71
|
isBorrowAllowed = (0, utils_1.isLayer2Network)(network) ? isBorrowAllowed : true;
|
|
121
72
|
const eModeCategoriesData = {};
|
|
@@ -134,7 +85,6 @@ function getAaveV3MarketData(web3, network, market, defaultWeb3) {
|
|
|
134
85
|
collateralAssets: [],
|
|
135
86
|
};
|
|
136
87
|
}
|
|
137
|
-
const [{ 0: ghoDiscountedPerDiscountToken }, { 0: discountRate }, { 0: minDiscountTokenBalance }, { 0: minGhoBalanceForDiscount }, { 0: facilitatorsList },] = multiRes;
|
|
138
88
|
let rewardInfo = null;
|
|
139
89
|
const networksWithIncentives = [common_1.NetworkNumber.Eth, common_1.NetworkNumber.Arb, common_1.NetworkNumber.Opt];
|
|
140
90
|
if (networksWithIncentives.includes(network)) {
|
|
@@ -148,7 +98,6 @@ function getAaveV3MarketData(web3, network, market, defaultWeb3) {
|
|
|
148
98
|
const assetsData = yield Promise.all(loanInfo
|
|
149
99
|
.map((tokenMarket, i) => __awaiter(this, void 0, void 0, function* () {
|
|
150
100
|
const symbol = market.assets[i];
|
|
151
|
-
const nativeAsset = symbol === 'GHO' && network === common_1.NetworkNumber.Eth && market.value === 'v3default';
|
|
152
101
|
// eslint-disable-next-line guard-for-in
|
|
153
102
|
for (const eModeIndex in eModeCategoriesData) {
|
|
154
103
|
if ((0, utils_1.isEnabledOnBitmap)(Number(eModeCategoriesData[eModeIndex].collateralBitmap), Number(tokenMarket.assetId)))
|
|
@@ -156,16 +105,9 @@ function getAaveV3MarketData(web3, network, market, defaultWeb3) {
|
|
|
156
105
|
if ((0, utils_1.isEnabledOnBitmap)(Number(eModeCategoriesData[eModeIndex].borrowableBitmap), Number(tokenMarket.assetId)))
|
|
157
106
|
eModeCategoriesData[eModeIndex].borrowAssets.push(symbol);
|
|
158
107
|
}
|
|
159
|
-
|
|
160
|
-
let discountRateOnBorrow = '0';
|
|
161
|
-
if (nativeAsset && facilitatorsList && discountRate && minDiscountTokenBalance && minGhoBalanceForDiscount && ghoDiscountedPerDiscountToken) {
|
|
162
|
-
const facilitatorBucket = yield ghoContract.methods.getFacilitatorBucket(facilitatorsList[0]).call();
|
|
163
|
-
borrowCap = decimal_js_1.default.min(borrowCap, (0, tokens_1.assetAmountInEth)(facilitatorBucket[0], 'GHO')).toString();
|
|
164
|
-
discountRateOnBorrow = (0, exports.aaveV3CalculateDiscountRate)(tokenMarket.totalBorrow.toString(), '3160881469228662060510133', // stkAAVE total supply
|
|
165
|
-
discountRate, minDiscountTokenBalance, minGhoBalanceForDiscount, ghoDiscountedPerDiscountToken);
|
|
166
|
-
}
|
|
108
|
+
const borrowCap = tokenMarket.borrowCap;
|
|
167
109
|
const borrowCapInWei = new decimal_js_1.default((0, tokens_1.assetAmountInWei)(borrowCap.toString(), symbol));
|
|
168
|
-
let marketLiquidity = borrowCapInWei.lt(new decimal_js_1.default(tokenMarket.totalSupply))
|
|
110
|
+
let marketLiquidity = borrowCapInWei.lt(new decimal_js_1.default(tokenMarket.totalSupply))
|
|
169
111
|
? (0, tokens_1.assetAmountInEth)(borrowCapInWei
|
|
170
112
|
.sub(tokenMarket.totalBorrow.toString())
|
|
171
113
|
.toString(), symbol)
|
|
@@ -175,14 +117,41 @@ function getAaveV3MarketData(web3, network, market, defaultWeb3) {
|
|
|
175
117
|
if (new decimal_js_1.default(marketLiquidity).lt(0)) {
|
|
176
118
|
marketLiquidity = '0';
|
|
177
119
|
}
|
|
178
|
-
return (
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
120
|
+
return ({
|
|
121
|
+
symbol,
|
|
122
|
+
isIsolated: new decimal_js_1.default(tokenMarket.debtCeilingForIsolationMode).gt(0),
|
|
123
|
+
debtCeilingForIsolationMode: new decimal_js_1.default(tokenMarket.debtCeilingForIsolationMode).div(100).toString(),
|
|
124
|
+
isSiloed: tokenMarket.isSiloedForBorrowing,
|
|
125
|
+
isolationModeTotalDebt: new decimal_js_1.default(tokenMarket.isolationModeTotalDebt).div(100).toString(),
|
|
126
|
+
assetId: Number(tokenMarket.assetId),
|
|
127
|
+
underlyingTokenAddress: tokenMarket.underlyingTokenAddress,
|
|
128
|
+
supplyRate: (0, moneymarket_1.aprToApy)(new decimal_js_1.default(tokenMarket.supplyRate.toString()).div(1e25).toString()),
|
|
129
|
+
borrowRate: (0, moneymarket_1.aprToApy)(new decimal_js_1.default(tokenMarket.borrowRateVariable.toString()).div(1e25).toString()),
|
|
130
|
+
borrowRateStable: (0, moneymarket_1.aprToApy)(new decimal_js_1.default(tokenMarket.borrowRateStable.toString()).div(1e25).toString()),
|
|
131
|
+
collateralFactor: new decimal_js_1.default(tokenMarket.collateralFactor.toString()).div(10000).toString(),
|
|
132
|
+
liquidationBonus: new decimal_js_1.default(tokenMarket.liquidationBonus.toString()).div(10000).toString(),
|
|
133
|
+
liquidationRatio: new decimal_js_1.default(tokenMarket.liquidationRatio.toString()).div(10000).toString(),
|
|
134
|
+
marketLiquidity,
|
|
135
|
+
utilization: new decimal_js_1.default(tokenMarket.totalBorrow.toString()).times(100).div(new decimal_js_1.default(tokenMarket.totalSupply.toString())).toString(),
|
|
136
|
+
usageAsCollateralEnabled: tokenMarket.usageAsCollateralEnabled,
|
|
137
|
+
supplyCap: tokenMarket.supplyCap,
|
|
138
|
+
borrowCap,
|
|
139
|
+
totalSupply: (0, tokens_1.assetAmountInEth)(tokenMarket.totalSupply.toString(), symbol),
|
|
140
|
+
isInactive: !tokenMarket.isActive,
|
|
141
|
+
isFrozen: tokenMarket.isFrozen,
|
|
142
|
+
isPaused: tokenMarket.isPaused,
|
|
143
|
+
canBeBorrowed: tokenMarket.isActive && !tokenMarket.isPaused && !tokenMarket.isFrozen && tokenMarket.borrowingEnabled && isBorrowAllowed,
|
|
144
|
+
canBeSupplied: tokenMarket.isActive && !tokenMarket.isPaused && !tokenMarket.isFrozen,
|
|
145
|
+
canBeWithdrawn: tokenMarket.isActive && !tokenMarket.isPaused,
|
|
146
|
+
canBePayBacked: tokenMarket.isActive && !tokenMarket.isPaused,
|
|
147
|
+
disabledStableBorrowing: !tokenMarket.stableBorrowRateEnabled,
|
|
148
|
+
totalBorrow: (0, tokens_1.assetAmountInEth)(tokenMarket.totalBorrow.toString(), symbol),
|
|
149
|
+
totalBorrowVar: (0, tokens_1.assetAmountInEth)(tokenMarket.totalBorrowVar.toString(), symbol),
|
|
150
|
+
price: new decimal_js_1.default(tokenMarket.price.toString()).div(1e8).toString(),
|
|
151
|
+
isolationModeBorrowingEnabled: tokenMarket.isolationModeBorrowingEnabled,
|
|
152
|
+
isFlashLoanEnabled: tokenMarket.isFlashLoanEnabled,
|
|
153
|
+
aTokenAddress: tokenMarket.aTokenAddress,
|
|
154
|
+
});
|
|
186
155
|
})));
|
|
187
156
|
// Get incentives data
|
|
188
157
|
yield Promise.all(assetsData.map((_market) => __awaiter(this, void 0, void 0, function* () {
|
|
@@ -423,13 +392,8 @@ const getAaveV3AccountData = (web3, network, address, extractedState) => __await
|
|
|
423
392
|
}
|
|
424
393
|
if (!usedAssets[asset])
|
|
425
394
|
usedAssets[asset] = {};
|
|
426
|
-
const nativeAsset = asset === 'GHO' && network === common_1.NetworkNumber.Eth && market.value === 'v3default';
|
|
427
|
-
let discountRateOnBorrow = '0';
|
|
428
395
|
const borrowed = new decimal_js_1.default(borrowedStable).add(borrowedVariable).toString();
|
|
429
|
-
|
|
430
|
-
discountRateOnBorrow = (0, exports.aaveV3CalculateDiscountRate)((0, tokens_1.assetAmountInWei)(borrowed, 'GHO'), (0, tokens_1.assetAmountInWei)(stkAaveBalance, 'stkAAVE'), assetsData[asset].discountData.discountRate, assetsData[asset].discountData.minDiscountTokenBalance, assetsData[asset].discountData.minGhoBalanceForDiscount, assetsData[asset].discountData.ghoDiscountedPerDiscountToken);
|
|
431
|
-
}
|
|
432
|
-
usedAssets[asset] = Object.assign(Object.assign({}, usedAssets[asset]), { symbol: asset, supplied, suppliedUsd: new decimal_js_1.default(supplied).mul(assetsData[asset].price).toString(), isSupplied, collateral: enabledAsCollateral, stableBorrowRate: (0, moneymarket_1.aprToApy)(new decimal_js_1.default(tokenInfo.stableBorrowRate).div(1e25).toString()), discountedBorrowRate: (0, moneymarket_1.aprToApy)(new decimal_js_1.default(assetsData[asset].borrowRate).mul(1 - parseFloat(discountRateOnBorrow)).toString()), borrowedStable,
|
|
396
|
+
usedAssets[asset] = Object.assign(Object.assign({}, usedAssets[asset]), { symbol: asset, supplied, suppliedUsd: new decimal_js_1.default(supplied).mul(assetsData[asset].price).toString(), isSupplied, collateral: enabledAsCollateral, stableBorrowRate: (0, moneymarket_1.aprToApy)(new decimal_js_1.default(tokenInfo.stableBorrowRate).div(1e25).toString()), borrowedStable,
|
|
433
397
|
borrowedVariable, borrowedUsdStable: new decimal_js_1.default(borrowedStable).mul(assetsData[asset].price).toString(), borrowedUsdVariable: new decimal_js_1.default(borrowedVariable).mul(assetsData[asset].price).toString(), borrowed, borrowedUsd: new decimal_js_1.default(new decimal_js_1.default(borrowedVariable).add(borrowedStable)).mul(assetsData[asset].price).toString(), isBorrowed,
|
|
434
398
|
interestMode });
|
|
435
399
|
}));
|