@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.
- package/cjs/fluid/index.js +40 -12
- package/cjs/helpers/sparkHelpers/index.d.ts +4 -4
- package/cjs/helpers/sparkHelpers/index.js +12 -12
- package/cjs/markets/fluid/index.d.ts +4 -0
- package/cjs/markets/fluid/index.js +4 -0
- package/cjs/portfolio/index.js +1 -1
- package/cjs/spark/index.d.ts +3 -1
- package/cjs/spark/index.js +24 -24
- package/cjs/types/fluid.d.ts +7 -3
- package/cjs/types/fluid.js +4 -0
- package/cjs/types/spark.d.ts +3 -4
- package/esm/fluid/index.js +40 -12
- package/esm/helpers/sparkHelpers/index.d.ts +4 -4
- package/esm/helpers/sparkHelpers/index.js +13 -13
- package/esm/markets/fluid/index.d.ts +4 -0
- package/esm/markets/fluid/index.js +4 -0
- package/esm/portfolio/index.js +1 -1
- package/esm/spark/index.d.ts +3 -1
- package/esm/spark/index.js +25 -25
- package/esm/types/fluid.d.ts +7 -3
- package/esm/types/fluid.js +4 -0
- package/esm/types/spark.d.ts +3 -4
- package/package.json +2 -2
- package/src/fluid/index.ts +44 -14
- package/src/helpers/sparkHelpers/index.ts +14 -11
- package/src/markets/fluid/index.ts +4 -0
- package/src/portfolio/index.ts +1 -1
- package/src/spark/index.ts +36 -25
- package/src/types/fluid.ts +4 -0
- package/src/types/spark.ts +3 -5
package/src/spark/index.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
73
|
+
sparkIncentivesContract.read.getReservesIncentivesData([marketAddress]),
|
|
74
74
|
]);
|
|
75
75
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
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
|
-
|
|
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 (
|
|
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
|
};
|
package/src/types/fluid.ts
CHANGED
|
@@ -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 = {
|
package/src/types/spark.ts
CHANGED
|
@@ -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
|
-
|
|
85
|
+
eModeCategoriesData?: EModeCategoriesData,
|
|
88
86
|
assetsData: SparkAssetsData,
|
|
89
87
|
selectedMarket?: SparkMarketData,
|
|
90
88
|
network?: NetworkNumber,
|