@defisaver/positions-sdk 2.0.13 → 2.0.14-dev-portfolio
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/CLAUDE.md +32 -0
- package/cjs/aaveV2/index.js +1 -0
- package/cjs/aaveV3/index.d.ts +12 -0
- package/cjs/aaveV3/index.js +93 -1
- package/cjs/claiming/aaveV3.d.ts +9 -0
- package/cjs/claiming/aaveV3.js +148 -0
- package/cjs/claiming/compV3.d.ts +15 -0
- package/cjs/claiming/compV3.js +34 -0
- package/cjs/claiming/index.d.ts +6 -0
- package/cjs/claiming/index.js +46 -0
- package/cjs/claiming/king.d.ts +4 -0
- package/cjs/claiming/king.js +72 -0
- package/cjs/claiming/morphoBlue.d.ts +6 -0
- package/cjs/claiming/morphoBlue.js +113 -0
- package/cjs/claiming/spark.d.ts +6 -0
- package/cjs/claiming/spark.js +188 -0
- package/cjs/config/contracts.d.ts +2667 -0
- package/cjs/config/contracts.js +103 -2
- package/cjs/constants/index.d.ts +4 -0
- package/cjs/constants/index.js +6 -2
- package/cjs/contracts.d.ts +2882 -23
- package/cjs/contracts.js +10 -1
- package/cjs/index.d.ts +2 -1
- package/cjs/index.js +3 -1
- package/cjs/liquity/index.d.ts +11 -0
- package/cjs/liquity/index.js +39 -1
- package/cjs/liquityV2/index.d.ts +8 -0
- package/cjs/liquityV2/index.js +161 -0
- package/cjs/markets/aave/marketAssets.js +1 -1
- package/cjs/markets/compound/marketsAssets.js +2 -2
- package/cjs/markets/spark/marketAssets.js +1 -1
- package/cjs/morphoBlue/index.d.ts +5 -0
- package/cjs/morphoBlue/index.js +38 -4
- package/cjs/portfolio/index.d.ts +6 -1
- package/cjs/portfolio/index.js +256 -10
- package/cjs/services/utils.d.ts +5 -0
- package/cjs/services/utils.js +33 -1
- package/cjs/services/viem.d.ts +12 -12
- package/cjs/spark/index.js +1 -0
- package/cjs/staking/staking.js +3 -1
- package/cjs/types/claiming.d.ts +93 -0
- package/cjs/types/claiming.js +27 -0
- package/cjs/umbrella/index.d.ts +5 -0
- package/cjs/umbrella/index.js +50 -0
- package/cjs/umbrella/umbrellaUtils.d.ts +22 -0
- package/cjs/umbrella/umbrellaUtils.js +34 -0
- package/esm/aaveV2/index.js +1 -0
- package/esm/aaveV3/index.d.ts +12 -0
- package/esm/aaveV3/index.js +91 -1
- package/esm/claiming/aaveV3.d.ts +9 -0
- package/esm/claiming/aaveV3.js +139 -0
- package/esm/claiming/compV3.d.ts +15 -0
- package/esm/claiming/compV3.js +30 -0
- package/esm/claiming/index.d.ts +6 -0
- package/esm/claiming/index.js +6 -0
- package/esm/claiming/king.d.ts +4 -0
- package/esm/claiming/king.js +64 -0
- package/esm/claiming/morphoBlue.d.ts +6 -0
- package/esm/claiming/morphoBlue.js +104 -0
- package/esm/claiming/spark.d.ts +6 -0
- package/esm/claiming/spark.js +179 -0
- package/esm/config/contracts.d.ts +2667 -0
- package/esm/config/contracts.js +102 -1
- package/esm/constants/index.d.ts +4 -0
- package/esm/constants/index.js +5 -1
- package/esm/contracts.d.ts +2882 -23
- package/esm/contracts.js +9 -0
- package/esm/index.d.ts +2 -1
- package/esm/index.js +2 -1
- package/esm/liquity/index.d.ts +11 -0
- package/esm/liquity/index.js +38 -1
- package/esm/liquityV2/index.d.ts +8 -0
- package/esm/liquityV2/index.js +162 -1
- package/esm/markets/aave/marketAssets.js +1 -1
- package/esm/markets/compound/marketsAssets.js +2 -2
- package/esm/markets/spark/marketAssets.js +1 -1
- package/esm/morphoBlue/index.d.ts +5 -0
- package/esm/morphoBlue/index.js +38 -5
- package/esm/portfolio/index.d.ts +6 -1
- package/esm/portfolio/index.js +260 -14
- package/esm/services/utils.d.ts +5 -0
- package/esm/services/utils.js +31 -0
- package/esm/services/viem.d.ts +12 -12
- package/esm/spark/index.js +1 -0
- package/esm/staking/staking.js +3 -1
- package/esm/types/claiming.d.ts +93 -0
- package/esm/types/claiming.js +24 -0
- package/esm/umbrella/index.d.ts +5 -0
- package/esm/umbrella/index.js +46 -0
- package/esm/umbrella/umbrellaUtils.d.ts +22 -0
- package/esm/umbrella/umbrellaUtils.js +28 -0
- package/package.json +2 -2
- package/src/aaveV2/index.ts +2 -1
- package/src/aaveV3/index.ts +100 -2
- package/src/claiming/aaveV3.ts +163 -0
- package/src/claiming/compV3.ts +23 -0
- package/src/claiming/index.ts +13 -0
- package/src/claiming/king.ts +66 -0
- package/src/claiming/morphoBlue.ts +119 -0
- package/src/claiming/spark.ts +226 -0
- package/src/config/contracts.ts +105 -5
- package/src/constants/index.ts +5 -1
- package/src/contracts.ts +14 -1
- package/src/index.ts +2 -0
- package/src/liquity/index.ts +57 -2
- package/src/liquityV2/index.ts +177 -2
- package/src/markets/aave/marketAssets.ts +1 -1
- package/src/markets/compound/marketsAssets.ts +2 -2
- package/src/markets/spark/marketAssets.ts +1 -1
- package/src/morphoBlue/index.ts +43 -6
- package/src/portfolio/index.ts +263 -15
- package/src/services/utils.ts +37 -1
- package/src/spark/index.ts +2 -1
- package/src/staking/staking.ts +2 -1
- package/src/types/claiming.ts +109 -0
- package/src/umbrella/index.ts +70 -0
- package/src/umbrella/umbrellaUtils.ts +30 -0
package/cjs/portfolio/index.js
CHANGED
|
@@ -32,6 +32,12 @@ const viem_1 = require("../services/viem");
|
|
|
32
32
|
const liquity_1 = require("../liquity");
|
|
33
33
|
const fluid_1 = require("../fluid");
|
|
34
34
|
const eulerHelpers_1 = require("../helpers/eulerHelpers");
|
|
35
|
+
const umbrella_1 = require("../umbrella");
|
|
36
|
+
const aaveV3_2 = require("../claiming/aaveV3");
|
|
37
|
+
const compV3_1 = require("../claiming/compV3");
|
|
38
|
+
const spark_2 = require("../claiming/spark");
|
|
39
|
+
const morphoBlue_2 = require("../claiming/morphoBlue");
|
|
40
|
+
const king_1 = require("../claiming/king");
|
|
35
41
|
function getPortfolioData(provider, network, defaultProvider, addresses, summerFiAddresses) {
|
|
36
42
|
return __awaiter(this, void 0, void 0, function* () {
|
|
37
43
|
const isMainnet = network === common_1.NetworkNumber.Eth;
|
|
@@ -69,7 +75,20 @@ function getPortfolioData(provider, network, defaultProvider, addresses, summerF
|
|
|
69
75
|
const compoundV2MarketsData = {};
|
|
70
76
|
const crvUsdMarketsData = {};
|
|
71
77
|
const llamaLendMarketsData = {};
|
|
78
|
+
const markets = {
|
|
79
|
+
morphoMarketsData,
|
|
80
|
+
compoundV3MarketsData,
|
|
81
|
+
sparkMarketsData,
|
|
82
|
+
eulerV2MarketsData,
|
|
83
|
+
aaveV3MarketsData,
|
|
84
|
+
aaveV2MarketsData,
|
|
85
|
+
compoundV2MarketsData,
|
|
86
|
+
crvUsdMarketsData,
|
|
87
|
+
llamaLendMarketsData,
|
|
88
|
+
};
|
|
72
89
|
const positions = {};
|
|
90
|
+
const stakingPositions = {};
|
|
91
|
+
const rewardsData = {};
|
|
73
92
|
const allAddresses = [...addresses, ...summerFiAddresses];
|
|
74
93
|
for (const address of allAddresses) {
|
|
75
94
|
positions[address.toLowerCase()] = {
|
|
@@ -90,7 +109,33 @@ function getPortfolioData(provider, network, defaultProvider, addresses, summerF
|
|
|
90
109
|
},
|
|
91
110
|
};
|
|
92
111
|
}
|
|
112
|
+
// TODO: check default values, probably needed when fetching portfolio on unsupported networks
|
|
113
|
+
for (const address of addresses) {
|
|
114
|
+
stakingPositions[address.toLowerCase()] = {
|
|
115
|
+
aaveV3: {},
|
|
116
|
+
morphoBlue: {},
|
|
117
|
+
compoundV3: {},
|
|
118
|
+
spark: {},
|
|
119
|
+
aaveV2: {},
|
|
120
|
+
compoundV2: {},
|
|
121
|
+
liquity: {},
|
|
122
|
+
fluid: {
|
|
123
|
+
error: '',
|
|
124
|
+
data: {},
|
|
125
|
+
},
|
|
126
|
+
};
|
|
127
|
+
rewardsData[address.toLowerCase()] = {
|
|
128
|
+
aaveV3merit: {},
|
|
129
|
+
aaveV3: {},
|
|
130
|
+
compV3: {},
|
|
131
|
+
spark: {},
|
|
132
|
+
spk: {},
|
|
133
|
+
king: {},
|
|
134
|
+
morpho: {},
|
|
135
|
+
};
|
|
136
|
+
}
|
|
93
137
|
yield Promise.allSettled([
|
|
138
|
+
// === MARKET DATA (needs to be fetched first) ===
|
|
94
139
|
...morphoMarkets.map((market) => __awaiter(this, void 0, void 0, function* () {
|
|
95
140
|
const marketData = yield (0, morphoBlue_1._getMorphoBlueMarketData)(client, network, market);
|
|
96
141
|
morphoMarketsData[market.value] = marketData;
|
|
@@ -111,12 +156,6 @@ function getPortfolioData(provider, network, defaultProvider, addresses, summerF
|
|
|
111
156
|
const marketData = yield (0, aaveV3_1._getAaveV3MarketData)(client, network, market);
|
|
112
157
|
aaveV3MarketsData[market.value] = marketData;
|
|
113
158
|
})),
|
|
114
|
-
...addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
|
|
115
|
-
if (!isMainnet)
|
|
116
|
-
return; // Maker CDPs are only available on mainnet
|
|
117
|
-
const makerCdp = yield (0, maker_1._getUserCdps)(client, network, address);
|
|
118
|
-
makerCdps[address.toLowerCase()] = makerCdp;
|
|
119
|
-
})),
|
|
120
159
|
...aaveV2Markets.map((market) => __awaiter(this, void 0, void 0, function* () {
|
|
121
160
|
const marketData = yield (0, aaveV2_1._getAaveV2MarketsData)(client, network, market);
|
|
122
161
|
aaveV2MarketsData[market.value] = marketData;
|
|
@@ -133,6 +172,13 @@ function getPortfolioData(provider, network, defaultProvider, addresses, summerF
|
|
|
133
172
|
const marketData = yield (0, llamaLend_1._getLlamaLendGlobalData)(client, network, market);
|
|
134
173
|
llamaLendMarketsData[market.value] = marketData;
|
|
135
174
|
})),
|
|
175
|
+
// === INDEPENDENT USER DATA (doesn't depend on market data) ===
|
|
176
|
+
...addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
|
|
177
|
+
if (!isMainnet)
|
|
178
|
+
return; // Maker CDPs are only available on mainnet
|
|
179
|
+
const makerCdp = yield (0, maker_1._getUserCdps)(client, network, address);
|
|
180
|
+
makerCdps[address.toLowerCase()] = makerCdp;
|
|
181
|
+
})),
|
|
136
182
|
...addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
|
|
137
183
|
try {
|
|
138
184
|
if (!isFluidSupported)
|
|
@@ -152,6 +198,178 @@ function getPortfolioData(provider, network, defaultProvider, addresses, summerF
|
|
|
152
198
|
};
|
|
153
199
|
}
|
|
154
200
|
})),
|
|
201
|
+
// === STAKING DATA (independent of market data) ===
|
|
202
|
+
...addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
|
|
203
|
+
try {
|
|
204
|
+
if (!isFluidSupported)
|
|
205
|
+
return;
|
|
206
|
+
const fluidLendData = yield (0, fluid_1._getAllUserEarnPositionsWithFTokens)(client, network, address);
|
|
207
|
+
stakingPositions[address.toLowerCase()].fluid = fluidLendData;
|
|
208
|
+
}
|
|
209
|
+
catch (error) {
|
|
210
|
+
console.error(`Error fetching Fluid lend data for address ${address}:`, error);
|
|
211
|
+
stakingPositions[address.toLowerCase()].fluid = { error: `Error fetching Fluid lend data for address ${address}`, data: null };
|
|
212
|
+
}
|
|
213
|
+
})),
|
|
214
|
+
...addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
|
|
215
|
+
try {
|
|
216
|
+
if (!isMainnet)
|
|
217
|
+
return;
|
|
218
|
+
const liquityStakingData = yield (0, liquity_1.getLiquityStakingData)(client, network, address);
|
|
219
|
+
stakingPositions[address.toLowerCase()].liquity = liquityStakingData;
|
|
220
|
+
}
|
|
221
|
+
catch (error) {
|
|
222
|
+
console.error(`Error fetching Liquity staking data for address ${address}:`, error);
|
|
223
|
+
stakingPositions[address.toLowerCase()].liquity = { error: `Error fetching Liquity staking data for address ${address}`, data: null };
|
|
224
|
+
}
|
|
225
|
+
})),
|
|
226
|
+
...addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
|
|
227
|
+
try {
|
|
228
|
+
if (!isMainnet)
|
|
229
|
+
return;
|
|
230
|
+
stakingPositions[address.toLowerCase()].aaveV3 = yield (0, aaveV3_1.getStakeAaveData)(client, network, address);
|
|
231
|
+
}
|
|
232
|
+
catch (error) {
|
|
233
|
+
console.error(`Error fetching Aave V3 staking data for address ${address}:`, error);
|
|
234
|
+
stakingPositions[address.toLowerCase()].aaveV3 = { error: `Error fetching Aave V3 staking data for address ${address}`, data: null };
|
|
235
|
+
}
|
|
236
|
+
})),
|
|
237
|
+
...addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
|
|
238
|
+
try {
|
|
239
|
+
if (!isMainnet)
|
|
240
|
+
return;
|
|
241
|
+
const umbrellaStakingData = yield (0, umbrella_1.getUmbrellaData)(client, network, address);
|
|
242
|
+
stakingPositions[address.toLowerCase()].umbrella = umbrellaStakingData;
|
|
243
|
+
}
|
|
244
|
+
catch (error) {
|
|
245
|
+
console.error(`Error fetching Umbrella staking data for address ${address}:`, error);
|
|
246
|
+
stakingPositions[address.toLowerCase()].umbrella = { error: `Error fetching Umbrella staking data for address ${address}`, data: null };
|
|
247
|
+
}
|
|
248
|
+
})),
|
|
249
|
+
// === REWARDS DATA (independent of market data) ===
|
|
250
|
+
// Batch King rewards
|
|
251
|
+
(() => __awaiter(this, void 0, void 0, function* () {
|
|
252
|
+
try {
|
|
253
|
+
if (!isMainnet) {
|
|
254
|
+
for (const address of addresses) {
|
|
255
|
+
rewardsData[address.toLowerCase()].king = { error: '', data: [] };
|
|
256
|
+
}
|
|
257
|
+
return;
|
|
258
|
+
}
|
|
259
|
+
const kingRewards = yield (0, king_1.getKingRewards)(client, network, addresses);
|
|
260
|
+
for (const address of addresses) {
|
|
261
|
+
const lowerAddress = address.toLowerCase();
|
|
262
|
+
rewardsData[lowerAddress].king = {
|
|
263
|
+
error: '',
|
|
264
|
+
data: kingRewards[lowerAddress] || [],
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
catch (error) {
|
|
269
|
+
console.error('Error fetching King rewards data in batch:', error);
|
|
270
|
+
for (const address of addresses) {
|
|
271
|
+
rewardsData[address.toLowerCase()].king = {
|
|
272
|
+
error: 'Error fetching King rewards data in batch',
|
|
273
|
+
data: null,
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
}))(),
|
|
278
|
+
...sparkMarkets.map((market) => addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
|
|
279
|
+
try {
|
|
280
|
+
if (!isMainnet) {
|
|
281
|
+
rewardsData[address.toLowerCase()].spark[market.value] = { error: '', data: [] };
|
|
282
|
+
return;
|
|
283
|
+
}
|
|
284
|
+
const sparkData = yield (0, spark_2.fetchSparkRewards)(client, network, address, market.providerAddress);
|
|
285
|
+
rewardsData[address.toLowerCase()].spark[market.value] = { error: '', data: sparkData };
|
|
286
|
+
}
|
|
287
|
+
catch (error) {
|
|
288
|
+
console.error(`Error fetching Spark rewards data for address ${address}, market ${market.value}:`, error);
|
|
289
|
+
rewardsData[address.toLowerCase()].spark[market.value] = { error: `Error fetching Spark rewards data for address ${address}`, data: null };
|
|
290
|
+
}
|
|
291
|
+
}))).flat(),
|
|
292
|
+
// CompV3 rewards
|
|
293
|
+
...compoundV3Markets.map(market => addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
|
|
294
|
+
try {
|
|
295
|
+
const compV3Rewards = yield (0, compV3_1.getCompoundV3Rewards)(client, network, address, market.baseMarketAddress);
|
|
296
|
+
rewardsData[address.toLowerCase()].compV3[market.value] = { error: '', data: compV3Rewards };
|
|
297
|
+
}
|
|
298
|
+
catch (error) {
|
|
299
|
+
console.error(`Error fetching Compound V3 rewards data for address ${address}:`, error);
|
|
300
|
+
rewardsData[address.toLowerCase()].compV3[market.value] = { error: `Error fetching Compound V3 rewards data for address ${address}`, data: null };
|
|
301
|
+
}
|
|
302
|
+
}))).flat(),
|
|
303
|
+
...addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
|
|
304
|
+
try {
|
|
305
|
+
const aaveMeritData = yield (0, aaveV3_2.getMeritUnclaimedRewards)(address, network);
|
|
306
|
+
rewardsData[address.toLowerCase()].aaveV3merit = { error: '', data: aaveMeritData };
|
|
307
|
+
}
|
|
308
|
+
catch (error) {
|
|
309
|
+
console.error(`Error fetching Aave V3 Merit rewards data for address ${address}:`, error);
|
|
310
|
+
rewardsData[address.toLowerCase()].aaveV3merit = { error: `Error fetching Aave V3 Merit rewards data for address ${address}`, data: null };
|
|
311
|
+
}
|
|
312
|
+
})),
|
|
313
|
+
...aaveV3Markets.map(market => addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
|
|
314
|
+
try {
|
|
315
|
+
const aaveData = yield (0, aaveV3_2.getUnclaimedRewardsForAllMarkets)(client, network, address, market.providerAddress);
|
|
316
|
+
rewardsData[address.toLowerCase()].aaveV3[market.value] = { error: '', data: aaveData };
|
|
317
|
+
}
|
|
318
|
+
catch (error) {
|
|
319
|
+
console.error(`Error fetching Aave V3 Merit rewards data for address ${address}:`, error);
|
|
320
|
+
rewardsData[address.toLowerCase()].aaveV3 = { error: `Error fetching Aave V3 rewards data for address ${address}`, data: null };
|
|
321
|
+
}
|
|
322
|
+
}))).flat(),
|
|
323
|
+
// Batch Morpho Blue rewards
|
|
324
|
+
(() => __awaiter(this, void 0, void 0, function* () {
|
|
325
|
+
try {
|
|
326
|
+
const morphoRewards = yield (0, morphoBlue_2.fetchMorphoBlueRewards)(client, network, addresses);
|
|
327
|
+
for (const address of addresses) {
|
|
328
|
+
const lowerAddress = address.toLowerCase();
|
|
329
|
+
rewardsData[lowerAddress].morpho = {
|
|
330
|
+
error: '',
|
|
331
|
+
data: morphoRewards[lowerAddress] || [],
|
|
332
|
+
};
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
catch (error) {
|
|
336
|
+
console.error('Error fetching Morpho Blue rewards data in batch:', error);
|
|
337
|
+
for (const address of addresses) {
|
|
338
|
+
rewardsData[address.toLowerCase()].morpho = {
|
|
339
|
+
error: 'Error fetching Morpho Blue rewards data in batch',
|
|
340
|
+
data: null,
|
|
341
|
+
};
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
}))(),
|
|
345
|
+
// Batch Spark Airdrop rewards
|
|
346
|
+
(() => __awaiter(this, void 0, void 0, function* () {
|
|
347
|
+
try {
|
|
348
|
+
if (!isMainnet) {
|
|
349
|
+
for (const address of addresses) {
|
|
350
|
+
rewardsData[address.toLowerCase()].king = { error: '', data: [] };
|
|
351
|
+
}
|
|
352
|
+
return;
|
|
353
|
+
}
|
|
354
|
+
const sparkAirdropRewards = yield (0, spark_2.fetchSparkAirdropRewards)(client, network, addresses);
|
|
355
|
+
for (const address of addresses) {
|
|
356
|
+
const lowerAddress = address.toLowerCase();
|
|
357
|
+
rewardsData[lowerAddress].spk = {
|
|
358
|
+
error: '',
|
|
359
|
+
data: sparkAirdropRewards[lowerAddress] || [],
|
|
360
|
+
};
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
catch (error) {
|
|
364
|
+
console.error('Error fetching Spark Airdrop rewards data in batch:', error);
|
|
365
|
+
for (const address of addresses) {
|
|
366
|
+
rewardsData[address.toLowerCase()].spk = {
|
|
367
|
+
error: 'Error fetching Spark Airdrop rewards data in batch',
|
|
368
|
+
data: null,
|
|
369
|
+
};
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
}))(),
|
|
155
373
|
]);
|
|
156
374
|
yield Promise.all([
|
|
157
375
|
...aaveV3Markets.map((market) => allAddresses.map((address) => __awaiter(this, void 0, void 0, function* () {
|
|
@@ -167,9 +385,32 @@ function getPortfolioData(provider, network, defaultProvider, addresses, summerF
|
|
|
167
385
|
}))).flat(),
|
|
168
386
|
...morphoMarkets.map((market) => addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
|
|
169
387
|
try {
|
|
170
|
-
const
|
|
171
|
-
|
|
172
|
-
|
|
388
|
+
const [accDataPromise, earnDataPromise] = yield Promise.allSettled([
|
|
389
|
+
(0, morphoBlue_1._getMorphoBlueAccountData)(client, network, address, market, morphoMarketsData[market.value]),
|
|
390
|
+
(0, morphoBlue_1.getMorphoEarn)(client, network, address, market, morphoMarketsData[market.value]),
|
|
391
|
+
]);
|
|
392
|
+
if (accDataPromise.status === 'rejected') {
|
|
393
|
+
console.error(`Error fetching MorphoBlue account data for address ${address} on market ${market.value}:`, accDataPromise.reason);
|
|
394
|
+
positions[address.toLowerCase()].morphoBlue[market.value] = { error: `Error fetching MorphoBlue account data for address ${address} on market ${market.value}`, data: null };
|
|
395
|
+
}
|
|
396
|
+
if (earnDataPromise.status === 'rejected') {
|
|
397
|
+
console.error(`Error fetching MorphoBlue account data for address ${address} on market ${market.value}:`, earnDataPromise.reason);
|
|
398
|
+
positions[address.toLowerCase()].morphoBlue[market.value] = { error: `Error fetching MorphoBlue account data for address ${address} on market ${market.value}`, data: null };
|
|
399
|
+
}
|
|
400
|
+
if (accDataPromise.status !== 'rejected') {
|
|
401
|
+
const accData = accDataPromise.value;
|
|
402
|
+
if (new decimal_js_1.default(accData.suppliedUsd).gt(0))
|
|
403
|
+
positions[address.toLowerCase()].morphoBlue[market.value] = { error: '', data: accData };
|
|
404
|
+
}
|
|
405
|
+
if (earnDataPromise.status !== 'rejected') {
|
|
406
|
+
const earnData = earnDataPromise.value;
|
|
407
|
+
if (earnData && new decimal_js_1.default(earnData.amount).gt(0)) {
|
|
408
|
+
stakingPositions[address.toLowerCase()].morphoBlue[market.value] = {
|
|
409
|
+
error: '',
|
|
410
|
+
data: earnData,
|
|
411
|
+
};
|
|
412
|
+
}
|
|
413
|
+
}
|
|
173
414
|
}
|
|
174
415
|
catch (error) {
|
|
175
416
|
console.error(`Error fetching MorphoBlue account data for address ${address} on market ${market.value}:`, error);
|
|
@@ -295,6 +536,11 @@ function getPortfolioData(provider, network, defaultProvider, addresses, summerF
|
|
|
295
536
|
}
|
|
296
537
|
}))).flat(),
|
|
297
538
|
]);
|
|
298
|
-
return
|
|
539
|
+
return {
|
|
540
|
+
positions,
|
|
541
|
+
stakingPositions,
|
|
542
|
+
rewardsData,
|
|
543
|
+
markets,
|
|
544
|
+
};
|
|
299
545
|
});
|
|
300
546
|
}
|
package/cjs/services/utils.d.ts
CHANGED
|
@@ -25,3 +25,8 @@ export declare const MAXUINT: string;
|
|
|
25
25
|
export declare const isMaxuint: (amount: string) => boolean;
|
|
26
26
|
export declare const isMainnetNetwork: (network: NetworkNumber) => network is NetworkNumber.Eth;
|
|
27
27
|
export declare const DEFAULT_TIMEOUT = 2000;
|
|
28
|
+
/**
|
|
29
|
+
* Converts web3 hybrid response (that can be used as objects and arrays, so has duplicated values) to objects.
|
|
30
|
+
* @param value
|
|
31
|
+
*/
|
|
32
|
+
export declare const convertHybridArraysToObjects: (value: any) => any;
|
package/cjs/services/utils.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.DEFAULT_TIMEOUT = exports.isMainnetNetwork = exports.isMaxuint = exports.MAXUINT = exports.isEnabledOnBitmap = exports.mapRange = exports.bytesToString = exports.ethToWethByAddress = exports.wethToEthByAddress = exports.handleWbtcLegacy = exports.getEthAmountForDecimals = exports.getWeiAmountForDecimals = exports.compareAddresses = exports.isAddress = exports.ADDRESS_REGEX = exports.getAbiItem = exports.wstEthToStEth = exports.stEthToWstEth = exports.wethToEth = exports.ethToWeth = exports.addToArrayIf = exports.addToObjectIf = exports.isLayer2Network = void 0;
|
|
6
|
+
exports.convertHybridArraysToObjects = exports.DEFAULT_TIMEOUT = exports.isMainnetNetwork = exports.isMaxuint = exports.MAXUINT = exports.isEnabledOnBitmap = exports.mapRange = exports.bytesToString = exports.ethToWethByAddress = exports.wethToEthByAddress = exports.handleWbtcLegacy = exports.getEthAmountForDecimals = exports.getWeiAmountForDecimals = exports.compareAddresses = exports.isAddress = exports.ADDRESS_REGEX = exports.getAbiItem = exports.wstEthToStEth = exports.stEthToWstEth = exports.wethToEth = exports.ethToWeth = exports.addToArrayIf = exports.addToObjectIf = exports.isLayer2Network = void 0;
|
|
7
7
|
const decimal_js_1 = __importDefault(require("decimal.js"));
|
|
8
8
|
const tokens_1 = require("@defisaver/tokens");
|
|
9
9
|
const common_1 = require("../types/common");
|
|
@@ -64,3 +64,35 @@ exports.isMaxuint = isMaxuint;
|
|
|
64
64
|
const isMainnetNetwork = (network) => network === common_1.NetworkNumber.Eth;
|
|
65
65
|
exports.isMainnetNetwork = isMainnetNetwork;
|
|
66
66
|
exports.DEFAULT_TIMEOUT = 2000; // 2 seconds
|
|
67
|
+
/**
|
|
68
|
+
* Converts web3 hybrid response (that can be used as objects and arrays, so has duplicated values) to objects.
|
|
69
|
+
* @param value
|
|
70
|
+
*/
|
|
71
|
+
const convertHybridArraysToObjects = (value) => {
|
|
72
|
+
if (Array.isArray(value)) {
|
|
73
|
+
const keys = Object.keys(value);
|
|
74
|
+
const hasNamedKeys = keys.some((key) => Number.isNaN(Number(key)));
|
|
75
|
+
// If array has named keys, treat it as an object and keep only those
|
|
76
|
+
if (hasNamedKeys) {
|
|
77
|
+
const result = {};
|
|
78
|
+
for (const [key, val] of Object.entries(value)) {
|
|
79
|
+
if (Number.isNaN(Number(key))) {
|
|
80
|
+
result[key] = (0, exports.convertHybridArraysToObjects)(val);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return result;
|
|
84
|
+
}
|
|
85
|
+
// Else, treat as a regular array
|
|
86
|
+
return value.map(exports.convertHybridArraysToObjects);
|
|
87
|
+
}
|
|
88
|
+
// If it's an object (but not an array), recurse into its values
|
|
89
|
+
if (value && typeof value === 'object') {
|
|
90
|
+
const result = {};
|
|
91
|
+
for (const [key, val] of Object.entries(value)) {
|
|
92
|
+
result[key] = (0, exports.convertHybridArraysToObjects)(val);
|
|
93
|
+
}
|
|
94
|
+
return result;
|
|
95
|
+
}
|
|
96
|
+
return value;
|
|
97
|
+
};
|
|
98
|
+
exports.convertHybridArraysToObjects = convertHybridArraysToObjects;
|
package/cjs/services/viem.d.ts
CHANGED
|
@@ -795,9 +795,9 @@ export declare const getViemProvider: (provider: EthereumProvider, network: Netw
|
|
|
795
795
|
s: import("viem").Hex;
|
|
796
796
|
value: bigint;
|
|
797
797
|
v: bigint;
|
|
798
|
+
nonce: number;
|
|
798
799
|
type: "legacy";
|
|
799
800
|
gas: bigint;
|
|
800
|
-
nonce: number;
|
|
801
801
|
maxFeePerBlobGas?: undefined | undefined;
|
|
802
802
|
gasPrice: bigint;
|
|
803
803
|
maxFeePerGas?: undefined | undefined;
|
|
@@ -820,9 +820,9 @@ export declare const getViemProvider: (provider: EthereumProvider, network: Netw
|
|
|
820
820
|
s: import("viem").Hex;
|
|
821
821
|
value: bigint;
|
|
822
822
|
v: bigint;
|
|
823
|
+
nonce: number;
|
|
823
824
|
type: "eip2930";
|
|
824
825
|
gas: bigint;
|
|
825
|
-
nonce: number;
|
|
826
826
|
maxFeePerBlobGas?: undefined | undefined;
|
|
827
827
|
gasPrice: bigint;
|
|
828
828
|
maxFeePerGas?: undefined | undefined;
|
|
@@ -845,9 +845,9 @@ export declare const getViemProvider: (provider: EthereumProvider, network: Netw
|
|
|
845
845
|
s: import("viem").Hex;
|
|
846
846
|
value: bigint;
|
|
847
847
|
v: bigint;
|
|
848
|
+
nonce: number;
|
|
848
849
|
type: "eip1559";
|
|
849
850
|
gas: bigint;
|
|
850
|
-
nonce: number;
|
|
851
851
|
maxFeePerBlobGas?: undefined | undefined;
|
|
852
852
|
gasPrice?: undefined | undefined;
|
|
853
853
|
maxFeePerGas: bigint;
|
|
@@ -870,9 +870,9 @@ export declare const getViemProvider: (provider: EthereumProvider, network: Netw
|
|
|
870
870
|
s: import("viem").Hex;
|
|
871
871
|
value: bigint;
|
|
872
872
|
v: bigint;
|
|
873
|
+
nonce: number;
|
|
873
874
|
type: "eip4844";
|
|
874
875
|
gas: bigint;
|
|
875
|
-
nonce: number;
|
|
876
876
|
maxFeePerBlobGas: bigint;
|
|
877
877
|
gasPrice?: undefined | undefined;
|
|
878
878
|
maxFeePerGas: bigint;
|
|
@@ -895,9 +895,9 @@ export declare const getViemProvider: (provider: EthereumProvider, network: Netw
|
|
|
895
895
|
s: import("viem").Hex;
|
|
896
896
|
value: bigint;
|
|
897
897
|
v: bigint;
|
|
898
|
+
nonce: number;
|
|
898
899
|
type: "eip7702";
|
|
899
900
|
gas: bigint;
|
|
900
|
-
nonce: number;
|
|
901
901
|
maxFeePerBlobGas?: undefined | undefined;
|
|
902
902
|
gasPrice?: undefined | undefined;
|
|
903
903
|
maxFeePerGas: bigint;
|
|
@@ -945,9 +945,9 @@ export declare const getViemProvider: (provider: EthereumProvider, network: Netw
|
|
|
945
945
|
s: import("viem").Hex;
|
|
946
946
|
value: bigint;
|
|
947
947
|
v: bigint;
|
|
948
|
+
nonce: number;
|
|
948
949
|
type: "legacy";
|
|
949
950
|
gas: bigint;
|
|
950
|
-
nonce: number;
|
|
951
951
|
maxFeePerBlobGas?: undefined | undefined;
|
|
952
952
|
gasPrice: bigint;
|
|
953
953
|
maxFeePerGas?: undefined | undefined;
|
|
@@ -970,9 +970,9 @@ export declare const getViemProvider: (provider: EthereumProvider, network: Netw
|
|
|
970
970
|
s: import("viem").Hex;
|
|
971
971
|
value: bigint;
|
|
972
972
|
v: bigint;
|
|
973
|
+
nonce: number;
|
|
973
974
|
type: "eip2930";
|
|
974
975
|
gas: bigint;
|
|
975
|
-
nonce: number;
|
|
976
976
|
maxFeePerBlobGas?: undefined | undefined;
|
|
977
977
|
gasPrice: bigint;
|
|
978
978
|
maxFeePerGas?: undefined | undefined;
|
|
@@ -995,9 +995,9 @@ export declare const getViemProvider: (provider: EthereumProvider, network: Netw
|
|
|
995
995
|
s: import("viem").Hex;
|
|
996
996
|
value: bigint;
|
|
997
997
|
v: bigint;
|
|
998
|
+
nonce: number;
|
|
998
999
|
type: "eip1559";
|
|
999
1000
|
gas: bigint;
|
|
1000
|
-
nonce: number;
|
|
1001
1001
|
maxFeePerBlobGas?: undefined | undefined;
|
|
1002
1002
|
gasPrice?: undefined | undefined;
|
|
1003
1003
|
maxFeePerGas: bigint;
|
|
@@ -1020,9 +1020,9 @@ export declare const getViemProvider: (provider: EthereumProvider, network: Netw
|
|
|
1020
1020
|
s: import("viem").Hex;
|
|
1021
1021
|
value: bigint;
|
|
1022
1022
|
v: bigint;
|
|
1023
|
+
nonce: number;
|
|
1023
1024
|
type: "eip4844";
|
|
1024
1025
|
gas: bigint;
|
|
1025
|
-
nonce: number;
|
|
1026
1026
|
maxFeePerBlobGas: bigint;
|
|
1027
1027
|
gasPrice?: undefined | undefined;
|
|
1028
1028
|
maxFeePerGas: bigint;
|
|
@@ -1045,9 +1045,9 @@ export declare const getViemProvider: (provider: EthereumProvider, network: Netw
|
|
|
1045
1045
|
s: import("viem").Hex;
|
|
1046
1046
|
value: bigint;
|
|
1047
1047
|
v: bigint;
|
|
1048
|
+
nonce: number;
|
|
1048
1049
|
type: "eip7702";
|
|
1049
1050
|
gas: bigint;
|
|
1050
|
-
nonce: number;
|
|
1051
1051
|
maxFeePerBlobGas?: undefined | undefined;
|
|
1052
1052
|
gasPrice?: undefined | undefined;
|
|
1053
1053
|
maxFeePerGas: bigint;
|
|
@@ -4320,7 +4320,7 @@ export declare const getViemProvider: (provider: EthereumProvider, network: Netw
|
|
|
4320
4320
|
authorizationList: import("viem").TransactionSerializableEIP7702["authorizationList"];
|
|
4321
4321
|
} ? "eip7702" : never) | (request["type"] extends string | undefined ? Extract<request["type"], string> : never)>) ? T_25 extends "eip7702" ? import("viem").TransactionRequestEIP7702 : never : never : never)>> & {
|
|
4322
4322
|
chainId?: number | undefined;
|
|
4323
|
-
}, (request["parameters"] extends readonly import("viem").PrepareTransactionRequestParameterType[] ? request["parameters"][number] : "
|
|
4323
|
+
}, (request["parameters"] extends readonly import("viem").PrepareTransactionRequestParameterType[] ? request["parameters"][number] : "nonce" | "type" | "gas" | "blobVersionedHashes" | "fees" | "chainId") extends infer T_26 ? T_26 extends (request["parameters"] extends readonly import("viem").PrepareTransactionRequestParameterType[] ? request["parameters"][number] : "nonce" | "type" | "gas" | "blobVersionedHashes" | "fees" | "chainId") ? T_26 extends "fees" ? "gasPrice" | "maxFeePerGas" | "maxPriorityFeePerGas" : T_26 : never : never> & (unknown extends request["kzg"] ? {} : Pick<request, "kzg">) extends infer T ? { [K in keyof T]: (import("viem").UnionRequiredBy<Extract<import("viem").UnionOmit<import("viem").ExtractChainFormatterParameters<import("viem").DeriveChain<undefined, chainOverride>, "transactionRequest", import("viem").TransactionRequest>, "from"> & (import("viem").DeriveChain<undefined, chainOverride> extends infer T_1 ? T_1 extends import("viem").DeriveChain<undefined, chainOverride> ? T_1 extends import("viem").Chain ? {
|
|
4324
4324
|
chain: T_1;
|
|
4325
4325
|
} : {
|
|
4326
4326
|
chain?: undefined;
|
|
@@ -7572,7 +7572,7 @@ export declare const getViemProvider: (provider: EthereumProvider, network: Netw
|
|
|
7572
7572
|
authorizationList: import("viem").TransactionSerializableEIP7702["authorizationList"];
|
|
7573
7573
|
} ? "eip7702" : never) | (request["type"] extends string | undefined ? Extract<request["type"], string> : never)>) ? T_12 extends "eip7702" ? import("viem").TransactionRequestEIP7702 : never : never : never)>> & {
|
|
7574
7574
|
chainId?: number | undefined;
|
|
7575
|
-
}, (request["parameters"] extends readonly import("viem").PrepareTransactionRequestParameterType[] ? request["parameters"][number] : "
|
|
7575
|
+
}, (request["parameters"] extends readonly import("viem").PrepareTransactionRequestParameterType[] ? request["parameters"][number] : "nonce" | "type" | "gas" | "blobVersionedHashes" | "fees" | "chainId") extends infer T_13 ? T_13 extends (request["parameters"] extends readonly import("viem").PrepareTransactionRequestParameterType[] ? request["parameters"][number] : "nonce" | "type" | "gas" | "blobVersionedHashes" | "fees" | "chainId") ? T_13 extends "fees" ? "gasPrice" | "maxFeePerGas" | "maxPriorityFeePerGas" : T_13 : never : never> & (unknown extends request["kzg"] ? {} : Pick<request, "kzg">))[K]; } : never>;
|
|
7576
7576
|
readContract: <const abi extends import("viem").Abi | readonly unknown[], functionName extends import("viem").ContractFunctionName<abi, "pure" | "view">, const args extends import("viem").ContractFunctionArgs<abi, "pure" | "view", functionName>>(args: import("viem").ReadContractParameters<abi, functionName, args>) => Promise<import("viem").ReadContractReturnType<abi, functionName, args>>;
|
|
7577
7577
|
sendRawTransaction: (args: import("viem").SendRawTransactionParameters) => Promise<import("viem").SendRawTransactionReturnType>;
|
|
7578
7578
|
simulate: <const calls extends readonly unknown[]>(args: import("viem").SimulateBlocksParameters<calls>) => Promise<import("viem").SimulateBlocksReturnType<calls>>;
|
package/cjs/spark/index.js
CHANGED
|
@@ -254,6 +254,7 @@ const _getSparkAccountBalances = (provider, network, block, addressMapping, addr
|
|
|
254
254
|
const marketAddress = market.providerAddress;
|
|
255
255
|
// @ts-ignore
|
|
256
256
|
const protocolDataProviderContract = (0, contracts_1.createViemContractFromConfigFunc)(market.protocolData, market.protocolDataAddress)(provider, network);
|
|
257
|
+
// @ts-ignore
|
|
257
258
|
const reserveTokens = yield protocolDataProviderContract.read.getAllReservesTokens((0, viem_1.setViemBlockNumber)(block));
|
|
258
259
|
const symbols = reserveTokens.map(({ symbol }) => symbol);
|
|
259
260
|
const _addresses = reserveTokens.map(({ tokenAddress }) => tokenAddress);
|
package/cjs/staking/staking.js
CHANGED
|
@@ -65,7 +65,7 @@ const getApyFromDfsApi = (asset) => __awaiter(void 0, void 0, void 0, function*
|
|
|
65
65
|
return '0';
|
|
66
66
|
}
|
|
67
67
|
});
|
|
68
|
-
exports.STAKING_ASSETS = ['cbETH', 'wstETH', 'cbETH', 'rETH', 'sDAI', 'weETH', 'sUSDe', 'osETH', 'ezETH', 'ETHx', 'rsETH', 'pufETH', 'wrsETH', 'wsuperOETHb', 'sUSDS', 'tETH', 'PT sUSDe Sep', 'PT USDe Sep', 'PT sUSDe Nov'];
|
|
68
|
+
exports.STAKING_ASSETS = ['cbETH', 'wstETH', 'cbETH', 'rETH', 'sDAI', 'weETH', 'sUSDe', 'osETH', 'ezETH', 'ETHx', 'rsETH', 'pufETH', 'wrsETH', 'wsuperOETHb', 'sUSDS', 'tETH', 'PT sUSDe Sep', 'PT USDe Sep', 'PT sUSDe Nov', 'PT USDe Nov'];
|
|
69
69
|
exports.getStakingApy = (0, memoizee_1.default)((asset) => __awaiter(void 0, void 0, void 0, function* () {
|
|
70
70
|
try {
|
|
71
71
|
if (asset === 'stETH' || asset === 'wstETH')
|
|
@@ -112,6 +112,8 @@ exports.getStakingApy = (0, memoizee_1.default)((asset) => __awaiter(void 0, voi
|
|
|
112
112
|
return yield getApyFromDfsApi('USDe');
|
|
113
113
|
if (asset === 'PT sUSDe Nov')
|
|
114
114
|
return yield getApyFromDfsApi('PT sUSDe Nov');
|
|
115
|
+
if (asset === 'PT USDe Nov')
|
|
116
|
+
return yield getApyFromDfsApi('PT USDe Nov');
|
|
115
117
|
}
|
|
116
118
|
catch (e) {
|
|
117
119
|
console.error(`Failed to fetch APY for ${asset}`);
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { EthAddress } from './common';
|
|
2
|
+
export declare enum ClaimType {
|
|
3
|
+
/** Rewards from AAVE - various tokens & aTokens (supplied to protocol) */
|
|
4
|
+
AAVE_REWARDS = "AAVE_REWARDS",
|
|
5
|
+
/** Merit rewards from AAVE (various tokens) */
|
|
6
|
+
AAVE_MERIT_REWARDS = "AAVE_MERIT_REWARDS",
|
|
7
|
+
/** Rewards from Compound V3 (only in COMP) */
|
|
8
|
+
COMPOUND_V3_COMP = "COMPOUND_V3_COMP",
|
|
9
|
+
/** Rewards from Spark (wstETH only for now) */
|
|
10
|
+
SPARK_REWARDS = "SPARK_REWARDS",
|
|
11
|
+
/** Rewards from Morpho */
|
|
12
|
+
MORPHO = "MORPHO",
|
|
13
|
+
/** Rewards from King (prev LTR^2 - received for weETH holding) */
|
|
14
|
+
KING_REWARDS = "KING_REWARDS",
|
|
15
|
+
/** Spark Airdrop */
|
|
16
|
+
SPARK_AIRDROP = "SPARK_AIRDROP",
|
|
17
|
+
/** Spark Airdrop */
|
|
18
|
+
SPARK_WST_ETH_REWARDS = "SPARK_WST_ETH_REWARDS"
|
|
19
|
+
}
|
|
20
|
+
type _ClaimableTokenPartial = {
|
|
21
|
+
symbol: string;
|
|
22
|
+
underlyingSymbol: string;
|
|
23
|
+
tokenAddress: EthAddress;
|
|
24
|
+
amount: string;
|
|
25
|
+
walletAddress: EthAddress;
|
|
26
|
+
label: string;
|
|
27
|
+
};
|
|
28
|
+
export type AaveRewardsClaimableToken = _ClaimableTokenPartial & {
|
|
29
|
+
claimType: ClaimType.AAVE_REWARDS;
|
|
30
|
+
additionalClaimFields: {
|
|
31
|
+
marketAddress: EthAddress;
|
|
32
|
+
aTokenAddresses: string[];
|
|
33
|
+
isAaveToken: boolean;
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
export type AaveMeritRewardsClaimableToken = _ClaimableTokenPartial & {
|
|
37
|
+
claimType: ClaimType.AAVE_MERIT_REWARDS;
|
|
38
|
+
additionalClaimFields: {
|
|
39
|
+
accumulated: string;
|
|
40
|
+
proof: string[];
|
|
41
|
+
decimals: string;
|
|
42
|
+
unclaimed: string;
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
export type SparkRewardsClaimableToken = _ClaimableTokenPartial & {
|
|
46
|
+
claimType: ClaimType.SPARK_REWARDS;
|
|
47
|
+
additionalClaimFields: {
|
|
48
|
+
sparkAssetAddresses: string[];
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
export type KingRewardsClaimableToken = _ClaimableTokenPartial & {
|
|
52
|
+
claimType: ClaimType.KING_REWARDS;
|
|
53
|
+
additionalClaimFields: {
|
|
54
|
+
allRewardsAmount: string;
|
|
55
|
+
merkleRoot: string;
|
|
56
|
+
merkleProofs: string[];
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
export type MorphoClaimableToken = _ClaimableTokenPartial & {
|
|
60
|
+
claimType: ClaimType.MORPHO;
|
|
61
|
+
additionalClaimFields: {
|
|
62
|
+
originalAmount: string;
|
|
63
|
+
merkleProofs: string[];
|
|
64
|
+
distributor: EthAddress;
|
|
65
|
+
isLegacy: boolean;
|
|
66
|
+
txData: string;
|
|
67
|
+
};
|
|
68
|
+
};
|
|
69
|
+
export type CompoundV3CompClaimableToken = _ClaimableTokenPartial & {
|
|
70
|
+
claimType: ClaimType.COMPOUND_V3_COMP;
|
|
71
|
+
additionalClaimFields: {
|
|
72
|
+
marketAddress: EthAddress;
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
export declare enum SparkAirdropType {
|
|
76
|
+
SPARK_IGNITION = "spark-ignition",
|
|
77
|
+
PRE_FARMING_AND_SOCIAL = "pre-farming-and-social"
|
|
78
|
+
}
|
|
79
|
+
export type SparkAirdropClaimableToken = _ClaimableTokenPartial & {
|
|
80
|
+
claimType: ClaimType.SPARK_AIRDROP;
|
|
81
|
+
additionalClaimFields: {
|
|
82
|
+
merkleRoot: string;
|
|
83
|
+
merkleProofs: string[];
|
|
84
|
+
epoch: number;
|
|
85
|
+
rewardType: SparkAirdropType;
|
|
86
|
+
allRewardsAmount: string;
|
|
87
|
+
};
|
|
88
|
+
};
|
|
89
|
+
export type SparkWstEthRewardsClaimableToken = _ClaimableTokenPartial & {
|
|
90
|
+
claimType: ClaimType.SPARK_WST_ETH_REWARDS;
|
|
91
|
+
};
|
|
92
|
+
export type ClaimableToken = AaveRewardsClaimableToken | AaveMeritRewardsClaimableToken | CompoundV3CompClaimableToken | MorphoClaimableToken | SparkRewardsClaimableToken | KingRewardsClaimableToken | SparkAirdropClaimableToken | SparkWstEthRewardsClaimableToken;
|
|
93
|
+
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SparkAirdropType = exports.ClaimType = void 0;
|
|
4
|
+
var ClaimType;
|
|
5
|
+
(function (ClaimType) {
|
|
6
|
+
/** Rewards from AAVE - various tokens & aTokens (supplied to protocol) */
|
|
7
|
+
ClaimType["AAVE_REWARDS"] = "AAVE_REWARDS";
|
|
8
|
+
/** Merit rewards from AAVE (various tokens) */
|
|
9
|
+
ClaimType["AAVE_MERIT_REWARDS"] = "AAVE_MERIT_REWARDS";
|
|
10
|
+
/** Rewards from Compound V3 (only in COMP) */
|
|
11
|
+
ClaimType["COMPOUND_V3_COMP"] = "COMPOUND_V3_COMP";
|
|
12
|
+
/** Rewards from Spark (wstETH only for now) */
|
|
13
|
+
ClaimType["SPARK_REWARDS"] = "SPARK_REWARDS";
|
|
14
|
+
/** Rewards from Morpho */
|
|
15
|
+
ClaimType["MORPHO"] = "MORPHO";
|
|
16
|
+
/** Rewards from King (prev LTR^2 - received for weETH holding) */
|
|
17
|
+
ClaimType["KING_REWARDS"] = "KING_REWARDS";
|
|
18
|
+
/** Spark Airdrop */
|
|
19
|
+
ClaimType["SPARK_AIRDROP"] = "SPARK_AIRDROP";
|
|
20
|
+
/** Spark Airdrop */
|
|
21
|
+
ClaimType["SPARK_WST_ETH_REWARDS"] = "SPARK_WST_ETH_REWARDS";
|
|
22
|
+
})(ClaimType || (exports.ClaimType = ClaimType = {}));
|
|
23
|
+
var SparkAirdropType;
|
|
24
|
+
(function (SparkAirdropType) {
|
|
25
|
+
SparkAirdropType["SPARK_IGNITION"] = "spark-ignition";
|
|
26
|
+
SparkAirdropType["PRE_FARMING_AND_SOCIAL"] = "pre-farming-and-social";
|
|
27
|
+
})(SparkAirdropType || (exports.SparkAirdropType = SparkAirdropType = {}));
|