@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.
Files changed (44) hide show
  1. package/cjs/aaveV3/index.d.ts +0 -1
  2. package/cjs/aaveV3/index.js +41 -77
  3. package/cjs/config/contracts.d.ts +362 -387
  4. package/cjs/config/contracts.js +7 -22
  5. package/cjs/contracts.d.ts +0 -1
  6. package/cjs/contracts.js +1 -2
  7. package/cjs/multicall/index.js +1 -1
  8. package/cjs/staking/staking.js +1 -3
  9. package/cjs/types/aave.d.ts +3 -13
  10. package/cjs/types/common.d.ts +1 -2
  11. package/cjs/types/contracts/generated/AaveV3View.d.ts +85 -28
  12. package/cjs/types/contracts/generated/index.d.ts +0 -2
  13. package/esm/aaveV3/index.d.ts +0 -1
  14. package/esm/aaveV3/index.js +42 -77
  15. package/esm/config/contracts.d.ts +362 -387
  16. package/esm/config/contracts.js +7 -22
  17. package/esm/contracts.d.ts +0 -1
  18. package/esm/contracts.js +0 -1
  19. package/esm/multicall/index.js +1 -1
  20. package/esm/staking/staking.js +1 -3
  21. package/esm/types/aave.d.ts +3 -13
  22. package/esm/types/common.d.ts +1 -2
  23. package/esm/types/contracts/generated/AaveV3View.d.ts +85 -28
  24. package/esm/types/contracts/generated/index.d.ts +0 -2
  25. package/package.json +1 -1
  26. package/src/aaveV3/index.ts +4 -116
  27. package/src/config/contracts.js +7 -22
  28. package/src/contracts.ts +0 -2
  29. package/src/multicall/index.ts +1 -1
  30. package/src/staking/staking.ts +1 -3
  31. package/src/types/aave.ts +3 -14
  32. package/src/types/common.ts +1 -2
  33. package/src/types/contracts/generated/AaveV3View.ts +97 -31
  34. package/src/types/contracts/generated/index.ts +0 -2
  35. package/cjs/types/contracts/generated/GHO.d.ts +0 -136
  36. package/cjs/types/contracts/generated/GHO.js +0 -5
  37. package/cjs/types/contracts/generated/GhoDiscountRateStrategy.d.ts +0 -25
  38. package/cjs/types/contracts/generated/GhoDiscountRateStrategy.js +0 -5
  39. package/esm/types/contracts/generated/GHO.d.ts +0 -136
  40. package/esm/types/contracts/generated/GHO.js +0 -4
  41. package/esm/types/contracts/generated/GhoDiscountRateStrategy.d.ts +0 -25
  42. package/esm/types/contracts/generated/GhoDiscountRateStrategy.js +0 -4
  43. package/src/types/contracts/generated/GHO.ts +0 -274
  44. package/src/types/contracts/generated/GhoDiscountRateStrategy.ts +0 -48
@@ -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
  };
@@ -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.aaveV3CalculateDiscountRate = exports.test = void 0;
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, multiRes] = yield Promise.all([
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
- let borrowCap = tokenMarket.borrowCap;
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)) || nativeAsset
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 (Object.assign(Object.assign({ nativeAsset }, (0, utils_1.addToObjectIf)(nativeAsset, {
179
- discountData: {
180
- ghoDiscountedPerDiscountToken,
181
- discountRate,
182
- minDiscountTokenBalance,
183
- minGhoBalanceForDiscount,
184
- },
185
- })), { symbol, isIsolated: new decimal_js_1.default(tokenMarket.debtCeilingForIsolationMode).gt(0), debtCeilingForIsolationMode: new decimal_js_1.default(tokenMarket.debtCeilingForIsolationMode).div(100).toString(), isSiloed: tokenMarket.isSiloedForBorrowing, isolationModeTotalDebt: new decimal_js_1.default(tokenMarket.isolationModeTotalDebt).div(100).toString(), assetId: Number(tokenMarket.assetId), underlyingTokenAddress: tokenMarket.underlyingTokenAddress, supplyRate: (0, moneymarket_1.aprToApy)(new decimal_js_1.default(tokenMarket.supplyRate.toString()).div(1e25).toString()), borrowRate: (0, moneymarket_1.aprToApy)(new decimal_js_1.default(tokenMarket.borrowRateVariable.toString()).div(1e25).toString()), borrowRateDiscounted: (0, moneymarket_1.aprToApy)(nativeAsset ? new decimal_js_1.default(tokenMarket.borrowRateVariable.toString()).div(1e25).mul(1 - parseFloat(discountRateOnBorrow)).toString() : '0'), borrowRateStable: (0, moneymarket_1.aprToApy)(new decimal_js_1.default(tokenMarket.borrowRateStable.toString()).div(1e25).toString()), collateralFactor: new decimal_js_1.default(tokenMarket.collateralFactor.toString()).div(10000).toString(), liquidationBonus: new decimal_js_1.default(tokenMarket.liquidationBonus.toString()).div(10000).toString(), liquidationRatio: new decimal_js_1.default(tokenMarket.liquidationRatio.toString()).div(10000).toString(), marketLiquidity, utilization: new decimal_js_1.default(tokenMarket.totalBorrow.toString()).times(100).div(new decimal_js_1.default(tokenMarket.totalSupply.toString())).toString(), usageAsCollateralEnabled: tokenMarket.usageAsCollateralEnabled, supplyCap: tokenMarket.supplyCap, borrowCap, totalSupply: (0, tokens_1.assetAmountInEth)(tokenMarket.totalSupply.toString(), symbol), isInactive: !tokenMarket.isActive, isFrozen: tokenMarket.isFrozen, isPaused: tokenMarket.isPaused, canBeBorrowed: tokenMarket.isActive && !tokenMarket.isPaused && !tokenMarket.isFrozen && tokenMarket.borrowingEnabled && isBorrowAllowed, canBeSupplied: !nativeAsset && tokenMarket.isActive && !tokenMarket.isPaused && !tokenMarket.isFrozen, canBeWithdrawn: tokenMarket.isActive && !tokenMarket.isPaused, canBePayBacked: tokenMarket.isActive && !tokenMarket.isPaused, disabledStableBorrowing: !tokenMarket.stableBorrowRateEnabled, totalBorrow: (0, tokens_1.assetAmountInEth)(tokenMarket.totalBorrow.toString(), symbol), totalBorrowVar: (0, tokens_1.assetAmountInEth)(tokenMarket.totalBorrowVar.toString(), symbol), price: new decimal_js_1.default(tokenMarket.price.toString()).div(1e8).toString(), isolationModeBorrowingEnabled: tokenMarket.isolationModeBorrowingEnabled, isFlashLoanEnabled: tokenMarket.isFlashLoanEnabled, aTokenAddress: tokenMarket.aTokenAddress }));
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
- if (nativeAsset && new decimal_js_1.default(borrowed).gt(0) && new decimal_js_1.default(stkAaveBalance).gt(0)) {
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
  }));