@defisaver/positions-sdk 2.1.8 → 2.1.9-dev-spark-2

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.
@@ -24,6 +24,7 @@ import {
24
24
  SparkPositionData,
25
25
  SparkUsedAsset,
26
26
  SparkUsedAssets,
27
+ EModeCategoriesData,
27
28
  } from '../types';
28
29
  import { sparkGetAggregatedPositionData, sparkIsInIsolationMode } from '../helpers/sparkHelpers';
29
30
  import { aprToApy, calculateBorrowingAssetLimit } from '../moneymarket';
@@ -49,8 +50,6 @@ export const sparkEmodeCategoriesMapping = (extractedState: { assetsData: SparkA
49
50
  enteringTerms,
50
51
  canEnterCategory: !enteringTerms.includes(false),
51
52
  id: a.eModeCategory,
52
- data: a.eModeCategoryData,
53
- assets: a.eModeCategory === 0 ? [] : [...(categoriesMapping[a.eModeCategory]?.assets || []), a.symbol],
54
53
  enabledData: {
55
54
  ratio: afterEnteringCategory.ratio,
56
55
  liqRatio: afterEnteringCategory.liqRatio,
@@ -68,19 +67,19 @@ export const _getSparkMarketsData = async (provider: Client, network: NetworkNum
68
67
  const loanInfoContract = SparkViewContractViem(provider, network);
69
68
  const sparkIncentivesContract = SparkIncentiveDataProviderContractViem(provider, network);
70
69
 
71
- const [loanInfo, _rewardInfo] = await Promise.all([
70
+ // eslint-disable-next-line prefer-const
71
+ let [loanInfo, rewardInfo] = await Promise.all([
72
72
  loanInfoContract.read.getFullTokensInfo([marketAddress, selectedMarket.assets.map(a => getAssetInfo(ethToWeth(a)).address) as EthAddress[]]),
73
- network === NetworkNumber.Opt ? sparkIncentivesContract.read.getReservesIncentivesData([marketAddress]) : [],
73
+ sparkIncentivesContract.read.getReservesIncentivesData([marketAddress]),
74
74
  ]);
75
75
 
76
- let rewardInfo: any[] = [];
77
- if (network === NetworkNumber.Opt) {
78
- rewardInfo = rewardInfo.reduce((all, market) => {
79
- // eslint-disable-next-line no-param-reassign
80
- all[market.underlyingAsset] = market;
81
- return all;
82
- }, {});
83
- }
76
+ rewardInfo = rewardInfo.reduce((all: any, market: any) => {
77
+ // eslint-disable-next-line no-param-reassign
78
+ all[market.underlyingAsset] = market;
79
+ return all;
80
+ }, {});
81
+
82
+ const eModeCategoriesData: EModeCategoriesData = {};
84
83
 
85
84
  const assetsData: SparkAssetData[] = await Promise.all(loanInfo
86
85
  .map(async (market, i) => {
@@ -98,6 +97,17 @@ export const _getSparkMarketsData = async (provider: Client, network: NetworkNum
98
97
  if (new Dec(marketLiquidity).lt(0)) {
99
98
  marketLiquidity = '0';
100
99
  }
100
+
101
+ eModeCategoriesData[+market.emodeCategory.toString()] = {
102
+ id: +market.emodeCategory.toString(),
103
+ label: market.label,
104
+ liquidationBonus: new Dec(market.liquidationBonus).div(10000).toString(),
105
+ liquidationRatio: new Dec(market.liquidationThreshold).div(10000).toString(),
106
+ collateralFactor: new Dec(market.ltv).div(10000).toString(),
107
+ collateralAssets: eModeCategoriesData[+market.emodeCategory.toString()] ? [...eModeCategoriesData[+market.emodeCategory.toString()].collateralAssets, selectedMarket.assets[i]] : [selectedMarket.assets[i]],
108
+ borrowAssets: eModeCategoriesData[+market.emodeCategory.toString()] ? [...eModeCategoriesData[+market.emodeCategory.toString()].borrowAssets, selectedMarket.assets[i]] : [selectedMarket.assets[i]],
109
+ };
110
+
101
111
  return ({
102
112
  symbol: selectedMarket.assets[i],
103
113
  isIsolated: new Dec(market.debtCeilingForIsolationMode.toString()).gt(0),
@@ -132,13 +142,6 @@ export const _getSparkMarketsData = async (provider: Client, network: NetworkNum
132
142
  isolationModeBorrowingEnabled: market.isolationModeBorrowingEnabled,
133
143
  isFlashLoanEnabled: market.isFlashLoanEnabled,
134
144
  aTokenAddress: market.aTokenAddress,
135
- eModeCategoryData: {
136
- label: market.label,
137
- liquidationBonus: new Dec(market.liquidationBonus).div(10000).toString(),
138
- liquidationRatio: new Dec(market.liquidationThreshold).div(10000).toString(),
139
- collateralFactor: new Dec(market.ltv).div(10000).toString(),
140
- priceSource: market.priceSource,
141
- },
142
145
  supplyIncentives: [],
143
146
  borrowIncentives: [],
144
147
  });
@@ -173,7 +176,7 @@ export const _getSparkMarketsData = async (provider: Client, network: NetworkNum
173
176
  if (!rewardForMarket) return;
174
177
  (rewardForMarket.aIncentiveData.rewardsTokenInformation as any[]).forEach(supplyRewardData => {
175
178
  if (supplyRewardData) {
176
- if (supplyRewardData.emissionEndTimestamp * 1000 < Date.now()) return;
179
+ if (+(supplyRewardData.emissionEndTimestamp.toString()) * 1000 < Date.now()) return;
177
180
  const supplyEmissionPerSecond = supplyRewardData.emissionPerSecond;
178
181
  const supplyRewardPrice = new Dec(supplyRewardData.rewardPriceFeed).div(10 ** supplyRewardData.priceFeedDecimals)
179
182
  .toString();
@@ -194,7 +197,7 @@ export const _getSparkMarketsData = async (provider: Client, network: NetworkNum
194
197
  });
195
198
  (rewardForMarket.vIncentiveData.rewardsTokenInformation as any[]).forEach(borrowRewardData => {
196
199
  if (borrowRewardData) {
197
- if (borrowRewardData.emissionEndTimestamp * 1000 < Date.now()) return;
200
+ if (+(borrowRewardData.emissionEndTimestamp.toString()) * 1000 < Date.now()) return;
198
201
  const supplyEmissionPerSecond = borrowRewardData.emissionPerSecond;
199
202
  const supplyRewardPrice = new Dec(borrowRewardData.rewardPriceFeed).div(10 ** borrowRewardData.priceFeedDecimals)
200
203
  .toString();
@@ -228,7 +231,10 @@ export const _getSparkMarketsData = async (provider: Client, network: NetworkNum
228
231
  payload[assetData.symbol] = { ...assetData, sortIndex: i };
229
232
  });
230
233
 
231
- return { assetsData: payload };
234
+ eModeCategoriesData[0].collateralAssets = Object.values(payload).map(a => a.symbol);
235
+ eModeCategoriesData[0].borrowAssets = Object.values(payload).map(a => a.symbol);
236
+
237
+ return { assetsData: payload, eModeCategoriesData };
232
238
  };
233
239
 
234
240
  export const getSparkMarketsData = async (
@@ -317,7 +323,12 @@ export const getSparkAccountBalances = async (
317
323
  address: EthAddress,
318
324
  ): Promise<PositionBalances> => _getSparkAccountBalances(getViemProvider(provider, network, { batch: { multicall: true } }), network, block, addressMapping, address);
319
325
 
320
- export const _getSparkAccountData = async (provider: Client, network: NetworkNumber, address: EthAddress, extractedState: { selectedMarket: SparkMarketData, assetsData: SparkAssetsData }) => {
326
+ export const _getSparkAccountData = async (
327
+ provider: Client,
328
+ network: NetworkNumber,
329
+ address: EthAddress,
330
+ extractedState: { selectedMarket: SparkMarketData, assetsData: SparkAssetsData, eModeCategoriesData: EModeCategoriesData },
331
+ ) => {
321
332
  const {
322
333
  selectedMarket: market, assetsData,
323
334
  } = extractedState;
@@ -435,11 +446,11 @@ export const getSparkAccountData = async (
435
446
  provider: EthereumProvider,
436
447
  network: NetworkNumber,
437
448
  address: EthAddress,
438
- extractedState: { selectedMarket: SparkMarketData, assetsData: SparkAssetsData },
449
+ extractedState: { selectedMarket: SparkMarketData, assetsData: SparkAssetsData, eModeCategoriesData: EModeCategoriesData },
439
450
  ) => _getSparkAccountData(getViemProvider(provider, network), network, address, extractedState);
440
451
 
441
452
  export const getSparkFullPositionData = async (provider: EthereumProvider, network: NetworkNumber, address: EthAddress, market: SparkMarketData): Promise<SparkPositionData> => {
442
453
  const marketData = await getSparkMarketsData(provider, network, market);
443
- const positionData = await getSparkAccountData(provider, network, address, { assetsData: marketData.assetsData, selectedMarket: market });
454
+ const positionData = await getSparkAccountData(provider, network, address, { assetsData: marketData.assetsData, selectedMarket: market, eModeCategoriesData: marketData.eModeCategoriesData });
444
455
  return positionData;
445
456
  };
@@ -157,6 +157,7 @@ export enum FluidMainnetDepositToken {
157
157
  USDT = 'USDT',
158
158
  GHO = 'GHO',
159
159
  sUSDS = 'sUSDS',
160
+ USDtb = 'USDtb',
160
161
  }
161
162
 
162
163
  export enum FluidArbitrumDepositToken {
@@ -165,6 +166,8 @@ export enum FluidArbitrumDepositToken {
165
166
  USDC = 'USDC',
166
167
  USDT = 'USDT',
167
168
  ARB = 'ARB',
169
+ GHO = 'GHO',
170
+ sUSDS = 'sUSDS',
168
171
  }
169
172
 
170
173
  export enum FluidBaseDepositToken {
@@ -173,6 +176,7 @@ export enum FluidBaseDepositToken {
173
176
  wstETH = 'wstETH',
174
177
  EURC = 'EURC',
175
178
  sUSDS = 'sUSDS',
179
+ GHO = 'GHO',
176
180
  }
177
181
 
178
182
  export type FluidDepositTokenByNetwork = {
@@ -1,3 +1,4 @@
1
+ import { EModeCategoriesData } from './aave';
1
2
  import {
2
3
  EthAddress,
3
4
  IncentiveData,
@@ -20,8 +21,6 @@ export interface SparkEModeCategoryDataMapping {
20
21
  enteringTerms: boolean[],
21
22
  canEnterCategory: boolean,
22
23
  id: number,
23
- data: SparkEModeCategoryData,
24
- assets: string[],
25
24
  enabledData: {
26
25
  ratio: string,
27
26
  liqRatio: string,
@@ -55,7 +54,6 @@ export interface SparkAssetData extends MMAssetData {
55
54
  usageAsCollateralEnabled: boolean,
56
55
  isIsolated: boolean,
57
56
  eModeCategory: number,
58
- eModeCategoryData: SparkEModeCategoryData,
59
57
  liquidationRatio: string,
60
58
  }
61
59
 
@@ -63,7 +61,7 @@ export interface SparkAssetsData {
63
61
  [token: string]: SparkAssetData,
64
62
  }
65
63
 
66
- export type SparkMarketsData = { assetsData: SparkAssetsData };
64
+ export type SparkMarketsData = { assetsData: SparkAssetsData, eModeCategoriesData: EModeCategoriesData };
67
65
 
68
66
  export interface SparkUsedAsset extends MMUsedAsset {
69
67
  stableBorrowRate: string,
@@ -84,7 +82,7 @@ export interface SparkUsedAssets {
84
82
  export interface SparkHelperCommon {
85
83
  usedAssets: SparkUsedAssets,
86
84
  eModeCategory: number,
87
- eModeCategories?: object,
85
+ eModeCategoriesData?: EModeCategoriesData,
88
86
  assetsData: SparkAssetsData,
89
87
  selectedMarket?: SparkMarketData,
90
88
  network?: NetworkNumber,