@defisaver/positions-sdk 0.0.148 → 0.0.149

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/.mocharc.json ADDED
@@ -0,0 +1,4 @@
1
+ {
2
+ "require": "ts-node/register",
3
+ "extension": ["ts"]
4
+ }
package/.nvmrc ADDED
@@ -0,0 +1 @@
1
+ v20.17.0
package/README.md CHANGED
@@ -61,3 +61,9 @@ const userData = await getCompoundV3AccountData(
61
61
  ```
62
62
 
63
63
  More examples found [here](https://github.com/defisaver/defisaver-positions-sdk/tree/main/tests)
64
+
65
+ ## Testing
66
+
67
+ `npm run test` - Run all tests
68
+
69
+ `npm run test-single --name=your_test_name` - Run single test for specified name e.g. for MyTest.js test name is MyTest
@@ -187,7 +187,8 @@ function getAaveV3MarketData(web3, network, market, defaultWeb3) {
187
187
  yield Promise.all(assetsData.map((_market) => __awaiter(this, void 0, void 0, function* () {
188
188
  /* eslint-disable no-param-reassign */
189
189
  const rewardForMarket = rewardInfo === null || rewardInfo === void 0 ? void 0 : rewardInfo[_market.underlyingTokenAddress];
190
- if (staking_1.STAKING_ASSETS.includes(_market.symbol)) {
190
+ const isStakingAsset = staking_1.STAKING_ASSETS.includes(_market.symbol);
191
+ if (isStakingAsset) {
191
192
  _market.incentiveSupplyApy = yield (0, staking_1.getStakingApy)(_market.symbol, defaultWeb3);
192
193
  _market.incentiveSupplyToken = _market.symbol;
193
194
  }
@@ -199,6 +200,8 @@ function getAaveV3MarketData(web3, network, market, defaultWeb3) {
199
200
  return;
200
201
  const supplyRewardData = rewardForMarket.aIncentiveData.rewardsTokenInformation[0];
201
202
  if (supplyRewardData) {
203
+ if (isStakingAsset && _market.incentiveSupplyToken !== supplyRewardData.rewardTokenSymbol)
204
+ return;
202
205
  if (+supplyRewardData.emissionEndTimestamp * 1000 < Date.now())
203
206
  return;
204
207
  _market.incentiveSupplyToken = supplyRewardData.rewardTokenSymbol;
@@ -207,15 +210,18 @@ function getAaveV3MarketData(web3, network, market, defaultWeb3) {
207
210
  _market.incentiveSupplyToken = _market.symbol;
208
211
  const supplyEmissionPerSecond = supplyRewardData.emissionPerSecond;
209
212
  const supplyRewardPrice = new decimal_js_1.default(supplyRewardData.rewardPriceFeed).div(Math.pow(10, +supplyRewardData.priceFeedDecimals)).toString();
210
- _market.incentiveSupplyApy = new decimal_js_1.default(supplyEmissionPerSecond).div((Math.pow(10, +supplyRewardData.rewardTokenDecimals)) / 100)
213
+ const rewardApy = new decimal_js_1.default(supplyEmissionPerSecond).div((Math.pow(10, +supplyRewardData.rewardTokenDecimals)) / 100)
211
214
  .mul(365 * 24 * 3600)
212
215
  .mul(supplyRewardPrice)
213
216
  .div(_market.price)
214
217
  .div(_market.totalSupply)
215
218
  .toString();
219
+ _market.incentiveSupplyApy = new decimal_js_1.default(_market.incentiveSupplyApy || '0').add(rewardApy).toString();
216
220
  }
217
221
  const borrowRewardData = rewardForMarket.vIncentiveData.rewardsTokenInformation[0];
218
222
  if (borrowRewardData) {
223
+ if (isStakingAsset && _market.incentiveSupplyToken !== borrowRewardData.rewardTokenSymbol)
224
+ return;
219
225
  if (+borrowRewardData.emissionEndTimestamp * 1000 < Date.now())
220
226
  return;
221
227
  _market.incentiveBorrowToken = borrowRewardData.rewardTokenSymbol;
@@ -223,12 +229,13 @@ function getAaveV3MarketData(web3, network, market, defaultWeb3) {
223
229
  _market.incentiveBorrowToken = _market.symbol;
224
230
  const supplyEmissionPerSecond = borrowRewardData.emissionPerSecond;
225
231
  const supplyRewardPrice = new decimal_js_1.default(borrowRewardData.rewardPriceFeed).div(Math.pow(10, +borrowRewardData.priceFeedDecimals)).toString();
226
- _market.incentiveBorrowApy = new decimal_js_1.default(supplyEmissionPerSecond).div((Math.pow(10, +borrowRewardData.rewardTokenDecimals)) / 100)
232
+ const rewardApy = new decimal_js_1.default(supplyEmissionPerSecond).div((Math.pow(10, +borrowRewardData.rewardTokenDecimals)) / 100)
227
233
  .mul(365 * 24 * 3600)
228
234
  .mul(supplyRewardPrice)
229
235
  .div(_market.price)
230
236
  .div(_market.totalBorrowVar)
231
237
  .toString();
238
+ _market.incentiveBorrowApy = new decimal_js_1.default(_market.incentiveSupplyApy || '0').add(rewardApy).toString();
232
239
  }
233
240
  /* eslint-enable no-param-reassign */
234
241
  })));
@@ -79,5 +79,9 @@ const isLeveragedPos = (usedAssets, dustLimit = 5) => {
79
79
  };
80
80
  };
81
81
  exports.isLeveragedPos = isLeveragedPos;
82
- const aprToApy = (interest, frequency = constants_1.BLOCKS_IN_A_YEAR) => new decimal_js_1.default(interest).div(100).div(frequency).plus(1).pow(frequency).minus(1).times(100).toString();
82
+ const aprToApy = (interest, frequency = constants_1.BLOCKS_IN_A_YEAR) => new decimal_js_1.default(interest).div(100).div(frequency).plus(1)
83
+ .pow(frequency)
84
+ .minus(1)
85
+ .times(100)
86
+ .toString();
83
87
  exports.aprToApy = aprToApy;
@@ -178,7 +178,8 @@ export function getAaveV3MarketData(web3, network, market, defaultWeb3) {
178
178
  yield Promise.all(assetsData.map((_market) => __awaiter(this, void 0, void 0, function* () {
179
179
  /* eslint-disable no-param-reassign */
180
180
  const rewardForMarket = rewardInfo === null || rewardInfo === void 0 ? void 0 : rewardInfo[_market.underlyingTokenAddress];
181
- if (STAKING_ASSETS.includes(_market.symbol)) {
181
+ const isStakingAsset = STAKING_ASSETS.includes(_market.symbol);
182
+ if (isStakingAsset) {
182
183
  _market.incentiveSupplyApy = yield getStakingApy(_market.symbol, defaultWeb3);
183
184
  _market.incentiveSupplyToken = _market.symbol;
184
185
  }
@@ -190,6 +191,8 @@ export function getAaveV3MarketData(web3, network, market, defaultWeb3) {
190
191
  return;
191
192
  const supplyRewardData = rewardForMarket.aIncentiveData.rewardsTokenInformation[0];
192
193
  if (supplyRewardData) {
194
+ if (isStakingAsset && _market.incentiveSupplyToken !== supplyRewardData.rewardTokenSymbol)
195
+ return;
193
196
  if (+supplyRewardData.emissionEndTimestamp * 1000 < Date.now())
194
197
  return;
195
198
  _market.incentiveSupplyToken = supplyRewardData.rewardTokenSymbol;
@@ -198,15 +201,18 @@ export function getAaveV3MarketData(web3, network, market, defaultWeb3) {
198
201
  _market.incentiveSupplyToken = _market.symbol;
199
202
  const supplyEmissionPerSecond = supplyRewardData.emissionPerSecond;
200
203
  const supplyRewardPrice = new Dec(supplyRewardData.rewardPriceFeed).div(Math.pow(10, +supplyRewardData.priceFeedDecimals)).toString();
201
- _market.incentiveSupplyApy = new Dec(supplyEmissionPerSecond).div((Math.pow(10, +supplyRewardData.rewardTokenDecimals)) / 100)
204
+ const rewardApy = new Dec(supplyEmissionPerSecond).div((Math.pow(10, +supplyRewardData.rewardTokenDecimals)) / 100)
202
205
  .mul(365 * 24 * 3600)
203
206
  .mul(supplyRewardPrice)
204
207
  .div(_market.price)
205
208
  .div(_market.totalSupply)
206
209
  .toString();
210
+ _market.incentiveSupplyApy = new Dec(_market.incentiveSupplyApy || '0').add(rewardApy).toString();
207
211
  }
208
212
  const borrowRewardData = rewardForMarket.vIncentiveData.rewardsTokenInformation[0];
209
213
  if (borrowRewardData) {
214
+ if (isStakingAsset && _market.incentiveSupplyToken !== borrowRewardData.rewardTokenSymbol)
215
+ return;
210
216
  if (+borrowRewardData.emissionEndTimestamp * 1000 < Date.now())
211
217
  return;
212
218
  _market.incentiveBorrowToken = borrowRewardData.rewardTokenSymbol;
@@ -214,12 +220,13 @@ export function getAaveV3MarketData(web3, network, market, defaultWeb3) {
214
220
  _market.incentiveBorrowToken = _market.symbol;
215
221
  const supplyEmissionPerSecond = borrowRewardData.emissionPerSecond;
216
222
  const supplyRewardPrice = new Dec(borrowRewardData.rewardPriceFeed).div(Math.pow(10, +borrowRewardData.priceFeedDecimals)).toString();
217
- _market.incentiveBorrowApy = new Dec(supplyEmissionPerSecond).div((Math.pow(10, +borrowRewardData.rewardTokenDecimals)) / 100)
223
+ const rewardApy = new Dec(supplyEmissionPerSecond).div((Math.pow(10, +borrowRewardData.rewardTokenDecimals)) / 100)
218
224
  .mul(365 * 24 * 3600)
219
225
  .mul(supplyRewardPrice)
220
226
  .div(_market.price)
221
227
  .div(_market.totalBorrowVar)
222
228
  .toString();
229
+ _market.incentiveBorrowApy = new Dec(_market.incentiveSupplyApy || '0').add(rewardApy).toString();
223
230
  }
224
231
  /* eslint-enable no-param-reassign */
225
232
  })));
@@ -67,4 +67,8 @@ export const isLeveragedPos = (usedAssets, dustLimit = 5) => {
67
67
  leveragedAsset: '',
68
68
  };
69
69
  };
70
- export const aprToApy = (interest, frequency = BLOCKS_IN_A_YEAR) => new Dec(interest).div(100).div(frequency).plus(1).pow(frequency).minus(1).times(100).toString();
70
+ export const aprToApy = (interest, frequency = BLOCKS_IN_A_YEAR) => new Dec(interest).div(100).div(frequency).plus(1)
71
+ .pow(frequency)
72
+ .minus(1)
73
+ .times(100)
74
+ .toString();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@defisaver/positions-sdk",
3
- "version": "0.0.148",
3
+ "version": "0.0.149",
4
4
  "description": "",
5
5
  "main": "./cjs/index.js",
6
6
  "module": "./esm/index.js",
@@ -8,11 +8,13 @@
8
8
  "scripts": {
9
9
  "build:esm": "rm -rf esm && tsc -p tsconfig.esm.json",
10
10
  "build:cjs": "rm -rf cjs && tsc -p tsconfig.json",
11
- "build": "npm run generate-contracts && npm run build:cjs && npm run build:esm",
12
- "dev": "npm run generate-contracts && tsc -p tsconfig.cjs.json --watch",
11
+ "build": "npm run lint && npm run generate-contracts && npm run build:cjs && npm run build:esm",
12
+ "dev": "npm run generate-contracts && tsc -p tsconfig.json --watch",
13
13
  "lint": "eslint src/ --fix",
14
+ "lint-check": "eslint src/",
14
15
  "generate-contracts": "node scripts/generateContracts.js",
15
- "test": "mocha tests/* --require ts-node/register --extension ts",
16
+ "test": "mocha tests/*",
17
+ "test-single": "mocha ./tests/$npm_config_name.js",
16
18
  "test:debugger": "mocha --inspect-brk tests/*",
17
19
  "build-test": "npm run build && npm run test"
18
20
  },
@@ -279,7 +279,8 @@ export async function getAaveV3MarketData(web3: Web3, network: NetworkNumber, ma
279
279
  await Promise.all(assetsData.map(async (_market: AaveV3AssetData) => {
280
280
  /* eslint-disable no-param-reassign */
281
281
  const rewardForMarket: IUiIncentiveDataProviderV3.AggregatedReserveIncentiveDataStructOutput | undefined = rewardInfo?.[_market.underlyingTokenAddress as any];
282
- if (STAKING_ASSETS.includes(_market.symbol)) {
282
+ const isStakingAsset = STAKING_ASSETS.includes(_market.symbol);
283
+ if (isStakingAsset) {
283
284
  _market.incentiveSupplyApy = await getStakingApy(_market.symbol, defaultWeb3);
284
285
  _market.incentiveSupplyToken = _market.symbol;
285
286
  }
@@ -292,32 +293,36 @@ export async function getAaveV3MarketData(web3: Web3, network: NetworkNumber, ma
292
293
  if (!rewardForMarket) return;
293
294
  const supplyRewardData = rewardForMarket.aIncentiveData.rewardsTokenInformation[0];
294
295
  if (supplyRewardData) {
296
+ if (isStakingAsset && _market.incentiveSupplyToken !== supplyRewardData.rewardTokenSymbol) return;
295
297
  if (+supplyRewardData.emissionEndTimestamp * 1000 < Date.now()) return;
296
298
  _market.incentiveSupplyToken = supplyRewardData.rewardTokenSymbol;
297
299
  // reward token is aave asset
298
300
  if (supplyRewardData.rewardTokenSymbol.startsWith('a') && supplyRewardData.rewardTokenSymbol.includes(_market.symbol)) _market.incentiveSupplyToken = _market.symbol;
299
301
  const supplyEmissionPerSecond = supplyRewardData.emissionPerSecond;
300
302
  const supplyRewardPrice = new Dec(supplyRewardData.rewardPriceFeed).div(10 ** +supplyRewardData.priceFeedDecimals).toString();
301
- _market.incentiveSupplyApy = new Dec(supplyEmissionPerSecond).div((10 ** +supplyRewardData.rewardTokenDecimals) / 100)
303
+ const rewardApy = new Dec(supplyEmissionPerSecond).div((10 ** +supplyRewardData.rewardTokenDecimals) / 100)
302
304
  .mul(365 * 24 * 3600)
303
305
  .mul(supplyRewardPrice)
304
306
  .div(_market.price)
305
307
  .div(_market.totalSupply)
306
308
  .toString();
309
+ _market.incentiveSupplyApy = new Dec(_market.incentiveSupplyApy || '0').add(rewardApy).toString();
307
310
  }
308
311
  const borrowRewardData = rewardForMarket.vIncentiveData.rewardsTokenInformation[0];
309
312
  if (borrowRewardData) {
313
+ if (isStakingAsset && _market.incentiveSupplyToken !== borrowRewardData.rewardTokenSymbol) return;
310
314
  if (+borrowRewardData.emissionEndTimestamp * 1000 < Date.now()) return;
311
315
  _market.incentiveBorrowToken = borrowRewardData.rewardTokenSymbol;
312
316
  if (supplyRewardData.rewardTokenSymbol.startsWith('a') && supplyRewardData.rewardTokenSymbol.includes(_market.symbol)) _market.incentiveBorrowToken = _market.symbol;
313
317
  const supplyEmissionPerSecond = borrowRewardData.emissionPerSecond;
314
318
  const supplyRewardPrice = new Dec(borrowRewardData.rewardPriceFeed).div(10 ** +borrowRewardData.priceFeedDecimals).toString();
315
- _market.incentiveBorrowApy = new Dec(supplyEmissionPerSecond).div((10 ** +borrowRewardData.rewardTokenDecimals) / 100)
319
+ const rewardApy = new Dec(supplyEmissionPerSecond).div((10 ** +borrowRewardData.rewardTokenDecimals) / 100)
316
320
  .mul(365 * 24 * 3600)
317
321
  .mul(supplyRewardPrice)
318
322
  .div(_market.price)
319
323
  .div(_market.totalBorrowVar)
320
324
  .toString();
325
+ _market.incentiveBorrowApy = new Dec(_market.incentiveSupplyApy || '0').add(rewardApy).toString();
321
326
  }
322
327
  /* eslint-enable no-param-reassign */
323
328
  }));
@@ -73,4 +73,8 @@ export const isLeveragedPos = (usedAssets: MMUsedAssets, dustLimit = 5) => {
73
73
  };
74
74
  };
75
75
 
76
- export const aprToApy = (interest:string | number, frequency = BLOCKS_IN_A_YEAR) => new Dec(interest).div(100).div(frequency).plus(1).pow(frequency).minus(1).times(100).toString();
76
+ export const aprToApy = (interest:string | number, frequency = BLOCKS_IN_A_YEAR) => new Dec(interest).div(100).div(frequency).plus(1)
77
+ .pow(frequency)
78
+ .minus(1)
79
+ .times(100)
80
+ .toString();