@1delta/margin-fetcher 0.0.214 → 0.0.216
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/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +326 -68
- package/dist/index.js.map +1 -1
- package/dist/lending/public-data/aave-v4-type/fetcher/normalize.d.ts.map +1 -1
- package/dist/lending/public-data/aave-v4-type/publicCallBuild.d.ts +8 -4
- package/dist/lending/public-data/aave-v4-type/publicCallBuild.d.ts.map +1 -1
- package/dist/lending/public-data/aave-v4-type/publicCallParse.d.ts.map +1 -1
- package/dist/lending/user-data/aave-v4-type/createAaveV4UserState.d.ts +22 -0
- package/dist/lending/user-data/aave-v4-type/createAaveV4UserState.d.ts.map +1 -0
- package/dist/lending/user-data/aave-v4-type/userCallBuild.d.ts +2 -1
- package/dist/lending/user-data/aave-v4-type/userCallBuild.d.ts.map +1 -1
- package/dist/lending/user-data/aave-v4-type/userCallParse.d.ts.map +1 -1
- package/dist/lending/user-data/utils/types.d.ts +9 -0
- package/dist/lending/user-data/utils/types.d.ts.map +1 -1
- package/dist/prices/oracle-prices/fetchers/aaveV4.d.ts.map +1 -1
- package/dist/prices/oracle-prices/types.d.ts +15 -1
- package/dist/prices/oracle-prices/types.d.ts.map +1 -1
- package/package.json +3 -3
package/dist/index.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ export { computeEModeAnalysis } from './lending/margin/e-mode';
|
|
|
13
13
|
export type { EModeResult, EModeAssets } from './lending/margin/e-mode';
|
|
14
14
|
export type { LoopPostTradeMetrics, LendingMode } from './lending/margin/loop';
|
|
15
15
|
export type { SumerPositionInput, GroupAccumulator, } from './lending/margin/base';
|
|
16
|
-
export type { LenderYieldComplete, LenderCrossPoolMeta, LenderToLenderCrossPoolMeta, CompoundV2Metadata, AaveMetadata, InitMetadata, EulerV2Metadata, ProtocolParams, } from './lending/user-data/utils/types';
|
|
16
|
+
export type { LenderYieldComplete, LenderCrossPoolMeta, LenderToLenderCrossPoolMeta, CompoundV2Metadata, AaveMetadata, AaveV4Metadata, InitMetadata, EulerV2Metadata, ProtocolParams, } from './lending/user-data/utils/types';
|
|
17
17
|
export { computeSumerWaterfall, buildSumerAccumulators, applyPositionDelta, } from './lending/margin/base/sumer/waterfall';
|
|
18
18
|
export { computeSumerDepositDelta, computeSumerWithdrawDelta, computeSumerBorrowDelta, computeSumerRepayDelta, } from './lending/margin/base/sumer';
|
|
19
19
|
export { fetchEulerSubAccountIndexes, getSubAccountAddress, getSubAccountIndex, } from './lending/user-data/euler/userCallBuild';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -17893,14 +17893,18 @@ var getEulerV2ReservesDataConverter = (lender, chainId, prices, additionalYields
|
|
|
17893
17893
|
};
|
|
17894
17894
|
|
|
17895
17895
|
// src/lending/public-data/aave-v4-type/publicCallBuild.ts
|
|
17896
|
-
var
|
|
17896
|
+
var BASE_CALLS_PER_RESERVE = 5;
|
|
17897
17897
|
var CALLS_PER_SPOKE_TAIL = 2;
|
|
17898
|
-
function
|
|
17899
|
-
return !!
|
|
17898
|
+
function isValidAddress(addr) {
|
|
17899
|
+
return !!addr && addr !== "0x" && addr.length > 2;
|
|
17900
17900
|
}
|
|
17901
17901
|
function getSpokeReserves(reservesMap, spokeAddr) {
|
|
17902
17902
|
return reservesMap[spokeAddr.toLowerCase()] ?? reservesMap[spokeAddr] ?? [];
|
|
17903
17903
|
}
|
|
17904
|
+
function getDynamicConfigCount(spokeEntry) {
|
|
17905
|
+
const max = spokeEntry.dynamicConfigKeyMax ?? 0;
|
|
17906
|
+
return max + 1;
|
|
17907
|
+
}
|
|
17904
17908
|
var buildAaveV4LenderReserveCall = (chainId, lender) => {
|
|
17905
17909
|
const spokes = aaveV4Spokes()?.[lender]?.[chainId] ?? [];
|
|
17906
17910
|
const reservesMap = aaveV4Reserves()?.[lender]?.[chainId] ?? {};
|
|
@@ -17909,8 +17913,10 @@ var buildAaveV4LenderReserveCall = (chainId, lender) => {
|
|
|
17909
17913
|
const hubAssetKeys = /* @__PURE__ */ new Set();
|
|
17910
17914
|
const hubAssetList = [];
|
|
17911
17915
|
for (const spokeEntry of spokes) {
|
|
17916
|
+
if (!isValidAddress(spokeEntry.spoke)) continue;
|
|
17912
17917
|
const spokeAddr = spokeEntry.spoke;
|
|
17913
17918
|
const reserves = getSpokeReserves(reservesMap, spokeAddr);
|
|
17919
|
+
const dynConfigCount = getDynamicConfigCount(spokeEntry);
|
|
17914
17920
|
for (const entry of reserves) {
|
|
17915
17921
|
const rid = typeof entry === "number" ? entry : entry.reserveId;
|
|
17916
17922
|
calls.push(
|
|
@@ -17938,19 +17944,22 @@ var buildAaveV4LenderReserveCall = (chainId, lender) => {
|
|
|
17938
17944
|
address: spokeAddr,
|
|
17939
17945
|
name: "getReserveTotalDebt",
|
|
17940
17946
|
params: [rid]
|
|
17941
|
-
},
|
|
17942
|
-
{
|
|
17943
|
-
address: spokeAddr,
|
|
17944
|
-
name: "getDynamicReserveConfig",
|
|
17945
|
-
params: [rid, 0]
|
|
17946
17947
|
}
|
|
17947
17948
|
);
|
|
17949
|
+
for (let key = 0; key < dynConfigCount; key++) {
|
|
17950
|
+
calls.push({
|
|
17951
|
+
address: spokeAddr,
|
|
17952
|
+
name: "getDynamicReserveConfig",
|
|
17953
|
+
params: [rid, key]
|
|
17954
|
+
});
|
|
17955
|
+
}
|
|
17948
17956
|
if (typeof entry === "object" && spokeEntry.hub && entry.assetId !== void 0) {
|
|
17949
|
-
const
|
|
17957
|
+
const hubLc = spokeEntry.hub.toLowerCase();
|
|
17958
|
+
const key = `${hubLc}:${entry.assetId}`;
|
|
17950
17959
|
if (!hubAssetKeys.has(key)) {
|
|
17951
17960
|
hubAssetKeys.add(key);
|
|
17952
17961
|
hubAssetList.push({
|
|
17953
|
-
hub:
|
|
17962
|
+
hub: hubLc,
|
|
17954
17963
|
assetId: entry.assetId
|
|
17955
17964
|
});
|
|
17956
17965
|
}
|
|
@@ -17970,6 +17979,7 @@ var buildAaveV4LenderReserveCall = (chainId, lender) => {
|
|
|
17970
17979
|
);
|
|
17971
17980
|
}
|
|
17972
17981
|
for (const spokeEntry of spokes) {
|
|
17982
|
+
if (!isValidAddress(spokeEntry.spoke)) continue;
|
|
17973
17983
|
const reserves = getSpokeReserves(
|
|
17974
17984
|
reservesMap,
|
|
17975
17985
|
spokeEntry.spoke
|
|
@@ -17977,7 +17987,7 @@ var buildAaveV4LenderReserveCall = (chainId, lender) => {
|
|
|
17977
17987
|
const rids = reserves.map(
|
|
17978
17988
|
(e) => typeof e === "number" ? e : e.reserveId
|
|
17979
17989
|
);
|
|
17980
|
-
if (rids.length > 0 &&
|
|
17990
|
+
if (rids.length > 0 && isValidAddress(spokeEntry.oracle)) {
|
|
17981
17991
|
calls.push({
|
|
17982
17992
|
address: spokeEntry.oracle,
|
|
17983
17993
|
name: "getReservesPrices",
|
|
@@ -18012,20 +18022,24 @@ var getAaveV4ExpectedCallCount = (chainId, lender) => {
|
|
|
18012
18022
|
let count = 0;
|
|
18013
18023
|
const hubAssetKeys = /* @__PURE__ */ new Set();
|
|
18014
18024
|
for (const spokeEntry of spokes) {
|
|
18025
|
+
if (!isValidAddress(spokeEntry.spoke)) continue;
|
|
18015
18026
|
const reserves = getSpokeReserves(
|
|
18016
18027
|
reservesMap,
|
|
18017
18028
|
spokeEntry.spoke
|
|
18018
18029
|
);
|
|
18019
|
-
|
|
18030
|
+
const dynConfigCount = getDynamicConfigCount(spokeEntry);
|
|
18031
|
+
count += reserves.length * (BASE_CALLS_PER_RESERVE + dynConfigCount) + CALLS_PER_SPOKE_TAIL;
|
|
18020
18032
|
const rids = reserves.map(
|
|
18021
18033
|
(e) => typeof e === "number" ? e : e.reserveId
|
|
18022
18034
|
);
|
|
18023
|
-
if (rids.length > 0 &&
|
|
18035
|
+
if (rids.length > 0 && isValidAddress(spokeEntry.oracle)) {
|
|
18024
18036
|
count += 1;
|
|
18025
18037
|
}
|
|
18026
18038
|
for (const entry of reserves) {
|
|
18027
18039
|
if (typeof entry === "object" && spokeEntry.hub && entry.assetId !== void 0) {
|
|
18028
|
-
hubAssetKeys.add(
|
|
18040
|
+
hubAssetKeys.add(
|
|
18041
|
+
`${spokeEntry.hub.toLowerCase()}:${entry.assetId}`
|
|
18042
|
+
);
|
|
18029
18043
|
}
|
|
18030
18044
|
}
|
|
18031
18045
|
}
|
|
@@ -18073,7 +18087,8 @@ function normalizeAaveV4(spokeDataList, chainId, lender, prices, additionalYield
|
|
|
18073
18087
|
for (const reserve of spokeReserves) {
|
|
18074
18088
|
const underlying = reserve.reserve.underlying.toLowerCase();
|
|
18075
18089
|
const decimals = reserve.reserve.decimals;
|
|
18076
|
-
const
|
|
18090
|
+
const hubAddr = reserve.reserve.hub.toLowerCase();
|
|
18091
|
+
const refAddress = `${hubAddr}:${underlying}`;
|
|
18077
18092
|
const marketUid = createMarketUidFn(chainId, lender, refAddress);
|
|
18078
18093
|
const assetMeta = tokenList[underlying];
|
|
18079
18094
|
const oracleKey = toOracleKeyFn(assetMeta?.assetGroup ?? null) ?? toGenericPriceKeyFn(underlying, chainId);
|
|
@@ -18183,8 +18198,8 @@ function normalizeAaveV4(spokeDataList, chainId, lender, prices, additionalYield
|
|
|
18183
18198
|
}
|
|
18184
18199
|
|
|
18185
18200
|
// src/lending/public-data/aave-v4-type/publicCallParse.ts
|
|
18186
|
-
function
|
|
18187
|
-
return !!
|
|
18201
|
+
function isValidAddress2(addr) {
|
|
18202
|
+
return !!addr && addr !== "0x" && addr.length > 2;
|
|
18188
18203
|
}
|
|
18189
18204
|
function getSpokeReserves2(reservesMap, spokeAddr) {
|
|
18190
18205
|
return reservesMap[spokeAddr.toLowerCase()] ?? reservesMap[spokeAddr] ?? [];
|
|
@@ -18200,20 +18215,38 @@ var getAaveV4ReservesDataConverter = (lender, chainId, prices, additionalYields,
|
|
|
18200
18215
|
const hubAssetKeys = /* @__PURE__ */ new Set();
|
|
18201
18216
|
const hubAssetList = [];
|
|
18202
18217
|
for (const spokeEntry of spokes) {
|
|
18218
|
+
if (!isValidAddress2(spokeEntry.spoke)) continue;
|
|
18203
18219
|
const spokeAddr = spokeEntry.spoke;
|
|
18204
18220
|
const reserves = getSpokeReserves2(reservesMap, spokeAddr);
|
|
18205
|
-
const
|
|
18221
|
+
const dynConfigCount = (spokeEntry.dynamicConfigKeyMax ?? 0) + 1;
|
|
18206
18222
|
const parsedReserves = [];
|
|
18207
|
-
for (let i = 0; i <
|
|
18223
|
+
for (let i = 0; i < reserves.length; i++) {
|
|
18208
18224
|
const entry = reserves[i];
|
|
18209
18225
|
const reserveId = typeof entry === "number" ? entry : entry.reserveId;
|
|
18210
|
-
const
|
|
18211
|
-
const
|
|
18212
|
-
const
|
|
18213
|
-
const
|
|
18214
|
-
const
|
|
18215
|
-
|
|
18216
|
-
const
|
|
18226
|
+
const rawReserve = data[offset];
|
|
18227
|
+
const rawConfig = data[offset + 1];
|
|
18228
|
+
const rawSupplied = data[offset + 2];
|
|
18229
|
+
const rawDebt = data[offset + 3];
|
|
18230
|
+
const rawTotalDebt = data[offset + 4];
|
|
18231
|
+
offset += BASE_CALLS_PER_RESERVE;
|
|
18232
|
+
const dynamicConfigs = {};
|
|
18233
|
+
for (let key = 0; key < dynConfigCount; key++) {
|
|
18234
|
+
const rawDynConfig = data[offset];
|
|
18235
|
+
offset += 1;
|
|
18236
|
+
if (rawDynConfig && rawDynConfig !== "0x") {
|
|
18237
|
+
dynamicConfigs[key] = {
|
|
18238
|
+
collateralFactor: Number(
|
|
18239
|
+
rawDynConfig?.collateralFactor ?? 0
|
|
18240
|
+
),
|
|
18241
|
+
maxLiquidationBonus: Number(
|
|
18242
|
+
rawDynConfig?.maxLiquidationBonus ?? 0
|
|
18243
|
+
),
|
|
18244
|
+
liquidationFee: Number(
|
|
18245
|
+
rawDynConfig?.liquidationFee ?? 0
|
|
18246
|
+
)
|
|
18247
|
+
};
|
|
18248
|
+
}
|
|
18249
|
+
}
|
|
18217
18250
|
const reserve = {
|
|
18218
18251
|
underlying: rawReserve?.underlying ?? "",
|
|
18219
18252
|
hub: rawReserve?.hub ?? "",
|
|
@@ -18242,26 +18275,13 @@ var getAaveV4ReservesDataConverter = (lender, chainId, prices, additionalYields,
|
|
|
18242
18275
|
} else {
|
|
18243
18276
|
drawnDebt = BigInt(rawDebt ?? 0);
|
|
18244
18277
|
}
|
|
18245
|
-
const dynamicConfigs = {};
|
|
18246
|
-
if (rawDynConfig && rawDynConfig !== "0x") {
|
|
18247
|
-
dynamicConfigs[0] = {
|
|
18248
|
-
collateralFactor: Number(
|
|
18249
|
-
rawDynConfig?.collateralFactor ?? 0
|
|
18250
|
-
),
|
|
18251
|
-
maxLiquidationBonus: Number(
|
|
18252
|
-
rawDynConfig?.maxLiquidationBonus ?? 0
|
|
18253
|
-
),
|
|
18254
|
-
liquidationFee: Number(
|
|
18255
|
-
rawDynConfig?.liquidationFee ?? 0
|
|
18256
|
-
)
|
|
18257
|
-
};
|
|
18258
|
-
}
|
|
18259
18278
|
if (spokeEntry.hub && typeof entry === "object" && entry.assetId !== void 0) {
|
|
18260
|
-
const
|
|
18279
|
+
const hubLc = spokeEntry.hub.toLowerCase();
|
|
18280
|
+
const key = `${hubLc}:${entry.assetId}`;
|
|
18261
18281
|
if (!hubAssetKeys.has(key)) {
|
|
18262
18282
|
hubAssetKeys.add(key);
|
|
18263
18283
|
hubAssetList.push({
|
|
18264
|
-
hub:
|
|
18284
|
+
hub: hubLc,
|
|
18265
18285
|
assetId: entry.assetId
|
|
18266
18286
|
});
|
|
18267
18287
|
}
|
|
@@ -18279,7 +18299,6 @@ var getAaveV4ReservesDataConverter = (lender, chainId, prices, additionalYields,
|
|
|
18279
18299
|
price: 0n
|
|
18280
18300
|
});
|
|
18281
18301
|
}
|
|
18282
|
-
offset += reserveCount * CALLS_PER_RESERVE;
|
|
18283
18302
|
const rawLiqConfig = data[offset];
|
|
18284
18303
|
const rawOracle = data[offset + 1];
|
|
18285
18304
|
offset += CALLS_PER_SPOKE_TAIL;
|
|
@@ -18303,23 +18322,19 @@ var getAaveV4ReservesDataConverter = (lender, chainId, prices, additionalYields,
|
|
|
18303
18322
|
reserves: parsedReserves
|
|
18304
18323
|
});
|
|
18305
18324
|
}
|
|
18306
|
-
for (let si = 0; si <
|
|
18307
|
-
const
|
|
18308
|
-
|
|
18309
|
-
spokes[si].spoke
|
|
18310
|
-
);
|
|
18325
|
+
for (let si = 0; si < spokeDataList.length; si++) {
|
|
18326
|
+
const sd = spokeDataList[si];
|
|
18327
|
+
const reserves = getSpokeReserves2(reservesMap, sd.spoke);
|
|
18311
18328
|
const rids = reserves.map(
|
|
18312
18329
|
(e) => typeof e === "number" ? e : e.reserveId
|
|
18313
18330
|
);
|
|
18314
|
-
if (rids.length > 0 &&
|
|
18331
|
+
if (rids.length > 0 && isValidAddress2(sd.oracle)) {
|
|
18315
18332
|
const rawPrices = data[offset];
|
|
18316
18333
|
offset += 1;
|
|
18317
18334
|
const priceArray = Array.isArray(rawPrices) ? rawPrices : [];
|
|
18318
|
-
for (let ri = 0; ri <
|
|
18335
|
+
for (let ri = 0; ri < sd.reserves.length; ri++) {
|
|
18319
18336
|
if (ri < priceArray.length) {
|
|
18320
|
-
|
|
18321
|
-
priceArray[ri] ?? 0
|
|
18322
|
-
);
|
|
18337
|
+
sd.reserves[ri].price = BigInt(priceArray[ri] ?? 0);
|
|
18323
18338
|
}
|
|
18324
18339
|
}
|
|
18325
18340
|
}
|
|
@@ -19039,7 +19054,7 @@ var buildEulerUserCall = async (chainId, lender, account, subAccountIndexes) =>
|
|
|
19039
19054
|
};
|
|
19040
19055
|
|
|
19041
19056
|
// src/lending/user-data/aave-v4-type/userCallBuild.ts
|
|
19042
|
-
var USER_CALLS_PER_RESERVE =
|
|
19057
|
+
var USER_CALLS_PER_RESERVE = 4;
|
|
19043
19058
|
var buildAaveV4UserCall = (chainId, lender, account) => {
|
|
19044
19059
|
const spokes = aaveV4Spokes()?.[lender]?.[chainId] ?? [];
|
|
19045
19060
|
const reservesMap = aaveV4Reserves()?.[lender]?.[chainId] ?? {};
|
|
@@ -19047,6 +19062,7 @@ var buildAaveV4UserCall = (chainId, lender, account) => {
|
|
|
19047
19062
|
const calls = [];
|
|
19048
19063
|
for (const spokeEntry of spokes) {
|
|
19049
19064
|
const spokeAddr = spokeEntry.spoke;
|
|
19065
|
+
if (!spokeAddr || spokeAddr === "0x" || spokeAddr.length <= 2) continue;
|
|
19050
19066
|
const reserveIds = reservesMap[spokeAddr.toLowerCase()] ?? reservesMap[spokeAddr] ?? [];
|
|
19051
19067
|
for (const entry of reserveIds) {
|
|
19052
19068
|
const rid = typeof entry === "number" ? entry : entry.reserveId;
|
|
@@ -19065,6 +19081,11 @@ var buildAaveV4UserCall = (chainId, lender, account) => {
|
|
|
19065
19081
|
address: spokeAddr,
|
|
19066
19082
|
name: "getUserReserveStatus",
|
|
19067
19083
|
params: [rid, account]
|
|
19084
|
+
},
|
|
19085
|
+
{
|
|
19086
|
+
address: spokeAddr,
|
|
19087
|
+
name: "getUserPosition",
|
|
19088
|
+
params: [rid, account]
|
|
19068
19089
|
}
|
|
19069
19090
|
);
|
|
19070
19091
|
}
|
|
@@ -20233,17 +20254,231 @@ var getEulerUserDataConverter = (lender, chainId, account, metaMap, subAccountIn
|
|
|
20233
20254
|
];
|
|
20234
20255
|
};
|
|
20235
20256
|
|
|
20257
|
+
// src/lending/user-data/aave-v4-type/createAaveV4UserState.ts
|
|
20258
|
+
function resolveV4Config(configs, userConfigKey) {
|
|
20259
|
+
if (!configs) return { config: void 0, spokeAddr: void 0 };
|
|
20260
|
+
if (userConfigKey && configs[userConfigKey]) {
|
|
20261
|
+
return {
|
|
20262
|
+
config: configs[userConfigKey],
|
|
20263
|
+
spokeAddr: userConfigKey.split(":")[0]
|
|
20264
|
+
};
|
|
20265
|
+
}
|
|
20266
|
+
const entries = Object.entries(configs);
|
|
20267
|
+
if (entries.length === 0) return { config: void 0, spokeAddr: void 0 };
|
|
20268
|
+
const [key, config] = entries[0];
|
|
20269
|
+
const spokeAddr = key.split(":")[0];
|
|
20270
|
+
return { config, spokeAddr };
|
|
20271
|
+
}
|
|
20272
|
+
function getConfigScopedPrice(meta, spokeAddr, configPriceMap) {
|
|
20273
|
+
return getOraclePrice(meta);
|
|
20274
|
+
}
|
|
20275
|
+
function createAaveV4UserState(payload, lenderData, totalDeposits24h = 0, totalDebt24h = 0, configPriceMap) {
|
|
20276
|
+
const assetKeys = getMarketUidsFromMeta(lenderData);
|
|
20277
|
+
const { chainId, account } = payload;
|
|
20278
|
+
let depositInterest = 0;
|
|
20279
|
+
let borrowInterest = 0;
|
|
20280
|
+
let rewardDepositAccrual = 0;
|
|
20281
|
+
let rewardBorrowAccrual = 0;
|
|
20282
|
+
let stakingDepositAccrual = 0;
|
|
20283
|
+
let stakingBorrowAccrual = 0;
|
|
20284
|
+
let deposits = 0;
|
|
20285
|
+
let debt = 0;
|
|
20286
|
+
let oracleDebt = 0;
|
|
20287
|
+
let collateral = 0;
|
|
20288
|
+
let borrowDiscountedCollateral = 0;
|
|
20289
|
+
let borrowDiscountedCollateralAllActive = 0;
|
|
20290
|
+
let collateralAllActive = 0;
|
|
20291
|
+
let rewardsPerAsset = {};
|
|
20292
|
+
for (const marketUid of assetKeys) {
|
|
20293
|
+
if (!lenderData?.[marketUid] || !payload.lendingPositions[marketUid])
|
|
20294
|
+
continue;
|
|
20295
|
+
const pos = payload.lendingPositions[marketUid];
|
|
20296
|
+
const { depositsUSD, debtStableUSD, debtUSD, collateralEnabled } = pos;
|
|
20297
|
+
const depositsUSDOracle = pos.depositsUSDOracle ?? depositsUSD;
|
|
20298
|
+
const debtUSDOracle = pos.debtUSDOracle ?? debtUSD;
|
|
20299
|
+
const {
|
|
20300
|
+
depositRate,
|
|
20301
|
+
intrinsicYield,
|
|
20302
|
+
variableBorrowRate,
|
|
20303
|
+
stableBorrowRate,
|
|
20304
|
+
rewards,
|
|
20305
|
+
flags,
|
|
20306
|
+
configs
|
|
20307
|
+
} = lenderData[marketUid];
|
|
20308
|
+
const { config: userConfigForAsset } = resolveV4Config(
|
|
20309
|
+
configs,
|
|
20310
|
+
pos.userConfigKey
|
|
20311
|
+
);
|
|
20312
|
+
deposits += depositsUSD;
|
|
20313
|
+
debt += debtUSD + (debtStableUSD ?? 0);
|
|
20314
|
+
oracleDebt += debtUSDOracle + (pos.debtStableUSDOracle ?? debtStableUSD ?? 0);
|
|
20315
|
+
(rewards ?? []).forEach((rewardData) => {
|
|
20316
|
+
const key = rewardData.asset;
|
|
20317
|
+
rewardDepositAccrual += rewardData.depositRate * depositsUSD;
|
|
20318
|
+
rewardBorrowAccrual += rewardData.variableBorrowRate * debtUSD;
|
|
20319
|
+
const rewDepo = rewardData.depositRate * depositsUSD;
|
|
20320
|
+
const rewDebt = rewardData.variableBorrowRate * debtUSD;
|
|
20321
|
+
if (!rewardsPerAsset[key])
|
|
20322
|
+
rewardsPerAsset[key] = { depositApr: 0, borrowApr: 0 };
|
|
20323
|
+
if (rewDepo > 0) rewardsPerAsset[key].depositApr += rewDepo;
|
|
20324
|
+
if (rewDebt > 0) rewardsPerAsset[key].borrowApr += rewDebt;
|
|
20325
|
+
});
|
|
20326
|
+
stakingDepositAccrual += (intrinsicYield ?? 0) * depositsUSD;
|
|
20327
|
+
stakingBorrowAccrual += (intrinsicYield ?? 0) * debtUSD;
|
|
20328
|
+
if (flags?.collateralActive || userConfigForAsset && !userConfigForAsset.collateralDisabled) {
|
|
20329
|
+
if (collateralEnabled) {
|
|
20330
|
+
collateral += (userConfigForAsset?.collateralFactor ?? 1) * depositsUSDOracle;
|
|
20331
|
+
borrowDiscountedCollateral += (userConfigForAsset?.borrowCollateralFactor ?? 1) * depositsUSDOracle;
|
|
20332
|
+
}
|
|
20333
|
+
borrowDiscountedCollateralAllActive += (userConfigForAsset?.borrowCollateralFactor ?? 1) * depositsUSDOracle;
|
|
20334
|
+
collateralAllActive += (userConfigForAsset?.collateralFactor ?? 1) * depositsUSDOracle;
|
|
20335
|
+
}
|
|
20336
|
+
depositInterest += (depositRate ?? 0) * depositsUSD;
|
|
20337
|
+
borrowInterest += debtUSD * (variableBorrowRate ?? 0) + (debtStableUSD ?? 0) * (stableBorrowRate ?? 0);
|
|
20338
|
+
}
|
|
20339
|
+
const nav = deposits - debt;
|
|
20340
|
+
const balanceData2 = {
|
|
20341
|
+
borrowDiscountedCollateral,
|
|
20342
|
+
borrowDiscountedCollateralAllActive,
|
|
20343
|
+
collateral,
|
|
20344
|
+
collateralAllActive,
|
|
20345
|
+
deposits,
|
|
20346
|
+
debt,
|
|
20347
|
+
adjustedDebt: oracleDebt,
|
|
20348
|
+
nav,
|
|
20349
|
+
deposits24h: totalDeposits24h,
|
|
20350
|
+
debt24h: totalDebt24h,
|
|
20351
|
+
nav24h: totalDeposits24h - totalDebt24h,
|
|
20352
|
+
...payload.rewards ? { rewards: payload.rewards } : {}
|
|
20353
|
+
};
|
|
20354
|
+
const aprData2 = {
|
|
20355
|
+
apr: safeDivide(depositInterest - borrowInterest, nav),
|
|
20356
|
+
borrowApr: safeDivide(borrowInterest, debt),
|
|
20357
|
+
depositApr: safeDivide(depositInterest, deposits),
|
|
20358
|
+
rewards: divideAccrualsToAprs(rewardsPerAsset, nav, deposits, debt),
|
|
20359
|
+
rewardApr: safeDivide(rewardDepositAccrual + rewardBorrowAccrual, nav),
|
|
20360
|
+
rewardDepositApr: safeDivide(rewardDepositAccrual, deposits),
|
|
20361
|
+
rewardBorrowApr: safeDivide(rewardBorrowAccrual, debt),
|
|
20362
|
+
intrinsicApr: safeDivide(stakingDepositAccrual - stakingBorrowAccrual, nav),
|
|
20363
|
+
intrinsicDepositApr: safeDivide(stakingDepositAccrual, deposits),
|
|
20364
|
+
intrinsicBorrowApr: safeDivide(stakingBorrowAccrual, debt)
|
|
20365
|
+
};
|
|
20366
|
+
const userConfig = {
|
|
20367
|
+
selectedMode: "0",
|
|
20368
|
+
id: account,
|
|
20369
|
+
isWhitelisted: true
|
|
20370
|
+
};
|
|
20371
|
+
const creditLine = Math.max(
|
|
20372
|
+
0,
|
|
20373
|
+
borrowDiscountedCollateral - balanceData2.adjustedDebt
|
|
20374
|
+
);
|
|
20375
|
+
for (const marketUid of assetKeys) {
|
|
20376
|
+
if (!lenderData?.[marketUid]) continue;
|
|
20377
|
+
const meta = lenderData[marketUid];
|
|
20378
|
+
const { configs, flags, borrowLiquidity, withdrawLiquidity } = meta;
|
|
20379
|
+
const pos = payload.lendingPositions[marketUid];
|
|
20380
|
+
const { config, spokeAddr } = resolveV4Config(
|
|
20381
|
+
configs,
|
|
20382
|
+
pos ? pos.userConfigKey : void 0
|
|
20383
|
+
);
|
|
20384
|
+
const price = getConfigScopedPrice(meta);
|
|
20385
|
+
const bcf = config?.borrowCollateralFactor ?? 1;
|
|
20386
|
+
const bf = config?.borrowFactor ?? 1;
|
|
20387
|
+
if (pos) {
|
|
20388
|
+
let withdrawable;
|
|
20389
|
+
if (!pos.collateralEnabled || config?.collateralDisabled) {
|
|
20390
|
+
withdrawable = String(pos.deposits);
|
|
20391
|
+
} else if (balanceData2.debt === 0) {
|
|
20392
|
+
withdrawable = String(pos.deposits);
|
|
20393
|
+
} else {
|
|
20394
|
+
const withdrawableUSD = Math.max(creditLine / bcf, 0);
|
|
20395
|
+
withdrawable = String(
|
|
20396
|
+
Math.min(withdrawableUSD / price, Number(pos.deposits))
|
|
20397
|
+
);
|
|
20398
|
+
}
|
|
20399
|
+
if (withdrawLiquidity != null) {
|
|
20400
|
+
withdrawable = String(Math.min(Number(withdrawable), withdrawLiquidity));
|
|
20401
|
+
}
|
|
20402
|
+
let borrowable;
|
|
20403
|
+
if (!flags?.borrowingEnabled || flags?.isFrozen || config?.debtDisabled) {
|
|
20404
|
+
borrowable = "0";
|
|
20405
|
+
} else {
|
|
20406
|
+
const borrowableUSD = Math.max(creditLine / bf, 0);
|
|
20407
|
+
borrowable = String(borrowableUSD / price);
|
|
20408
|
+
}
|
|
20409
|
+
if (borrowLiquidity != null) {
|
|
20410
|
+
borrowable = String(Math.min(Number(borrowable), borrowLiquidity));
|
|
20411
|
+
}
|
|
20412
|
+
pos.withdrawable = withdrawable;
|
|
20413
|
+
pos.borrowable = borrowable;
|
|
20414
|
+
pos.underlyingInfo = buildUnderlyingInfo(meta);
|
|
20415
|
+
} else if ((deposits > 0 || debt > 0) && flags?.borrowingEnabled && !flags?.isFrozen && !config?.debtDisabled) {
|
|
20416
|
+
let borrowable = String(Math.max(creditLine / bf, 0) / price);
|
|
20417
|
+
if (borrowLiquidity != null) {
|
|
20418
|
+
borrowable = String(Math.min(Number(borrowable), borrowLiquidity));
|
|
20419
|
+
}
|
|
20420
|
+
payload.lendingPositions[marketUid] = {
|
|
20421
|
+
marketUid,
|
|
20422
|
+
deposits: "0",
|
|
20423
|
+
debt: "0",
|
|
20424
|
+
debtStable: "0",
|
|
20425
|
+
depositsUSD: 0,
|
|
20426
|
+
debtUSD: 0,
|
|
20427
|
+
debtStableUSD: 0,
|
|
20428
|
+
collateralEnabled: false,
|
|
20429
|
+
claimableRewards: 0,
|
|
20430
|
+
withdrawable: "0",
|
|
20431
|
+
borrowable,
|
|
20432
|
+
underlyingInfo: buildUnderlyingInfo(meta)
|
|
20433
|
+
};
|
|
20434
|
+
}
|
|
20435
|
+
}
|
|
20436
|
+
return {
|
|
20437
|
+
lender: "",
|
|
20438
|
+
account,
|
|
20439
|
+
chainId,
|
|
20440
|
+
data: [
|
|
20441
|
+
{
|
|
20442
|
+
health: balanceData2.debt === 0 ? null : balanceData2.adjustedDebt > 0 ? balanceData2.collateral / balanceData2.adjustedDebt : balanceData2.collateral / balanceData2.debt,
|
|
20443
|
+
borrowCapacityUSD: creditLine,
|
|
20444
|
+
accountId: "0",
|
|
20445
|
+
balanceData: balanceData2,
|
|
20446
|
+
aprData: aprData2,
|
|
20447
|
+
userConfig,
|
|
20448
|
+
positions: Object.values(payload.lendingPositions)
|
|
20449
|
+
}
|
|
20450
|
+
]
|
|
20451
|
+
};
|
|
20452
|
+
}
|
|
20453
|
+
|
|
20236
20454
|
// src/lending/user-data/aave-v4-type/userCallParse.ts
|
|
20237
20455
|
var getAaveV4UserDataConverter = (lender, chainId, account, metaMap) => {
|
|
20238
20456
|
const spokes = aaveV4Spokes()?.[lender]?.[chainId] ?? [];
|
|
20239
20457
|
const reservesMap = aaveV4Reserves()?.[lender]?.[chainId] ?? {};
|
|
20458
|
+
const oracleEntries = aaveV4Oracles()?.[lender]?.[chainId] ?? [];
|
|
20459
|
+
const spokeReserveToUnderlying = /* @__PURE__ */ new Map();
|
|
20460
|
+
for (const oe of oracleEntries) {
|
|
20461
|
+
if (oe.underlying && oe.spoke) {
|
|
20462
|
+
spokeReserveToUnderlying.set(
|
|
20463
|
+
`${oe.spoke.toLowerCase()}:${oe.reserveId}`,
|
|
20464
|
+
oe.underlying.toLowerCase()
|
|
20465
|
+
);
|
|
20466
|
+
}
|
|
20467
|
+
}
|
|
20240
20468
|
const reserveEntries = [];
|
|
20241
20469
|
for (const spokeEntry of spokes) {
|
|
20242
20470
|
const spokeAddr = spokeEntry.spoke;
|
|
20243
|
-
|
|
20244
|
-
|
|
20471
|
+
if (!spokeAddr || spokeAddr === "0x" || spokeAddr.length <= 2) continue;
|
|
20472
|
+
const reserves = reservesMap[spokeAddr.toLowerCase()] ?? reservesMap[spokeAddr] ?? [];
|
|
20473
|
+
for (const entry of reserves) {
|
|
20245
20474
|
const rid = typeof entry === "number" ? entry : entry.reserveId;
|
|
20246
|
-
|
|
20475
|
+
const underlying = ((typeof entry === "object" ? entry.underlying : void 0) ?? spokeReserveToUnderlying.get(`${spokeAddr.toLowerCase()}:${rid}`) ?? "").toLowerCase();
|
|
20476
|
+
reserveEntries.push({
|
|
20477
|
+
spokeAddr,
|
|
20478
|
+
reserveId: rid,
|
|
20479
|
+
hub: (spokeEntry.hub ?? "").toLowerCase(),
|
|
20480
|
+
underlying
|
|
20481
|
+
});
|
|
20247
20482
|
}
|
|
20248
20483
|
}
|
|
20249
20484
|
const expectedNumberOfCalls = reserveEntries.length * USER_CALLS_PER_RESERVE;
|
|
@@ -20253,12 +20488,23 @@ var getAaveV4UserDataConverter = (lender, chainId, account, metaMap) => {
|
|
|
20253
20488
|
return void 0;
|
|
20254
20489
|
}
|
|
20255
20490
|
const lendingPositions = {};
|
|
20491
|
+
const underlyingToUid = /* @__PURE__ */ new Map();
|
|
20492
|
+
if (metaMap) {
|
|
20493
|
+
for (const [uid, meta] of Object.entries(metaMap)) {
|
|
20494
|
+
const addr = (meta?.underlying ?? "").toLowerCase();
|
|
20495
|
+
if (addr) underlyingToUid.set(addr, uid);
|
|
20496
|
+
}
|
|
20497
|
+
}
|
|
20256
20498
|
let totalDebt24h = 0;
|
|
20257
20499
|
let totalDeposits24h = 0;
|
|
20258
20500
|
for (let i = 0; i < reserveEntries.length; i++) {
|
|
20259
|
-
const {
|
|
20260
|
-
|
|
20261
|
-
|
|
20501
|
+
const { hub, underlying, spokeAddr } = reserveEntries[i];
|
|
20502
|
+
let key;
|
|
20503
|
+
if (hub) {
|
|
20504
|
+
key = createMarketUid(chainId, lender, `${hub}:${underlying}`);
|
|
20505
|
+
} else {
|
|
20506
|
+
key = underlyingToUid.get(underlying) ?? createMarketUid(chainId, lender, `:${underlying}`);
|
|
20507
|
+
}
|
|
20262
20508
|
const metaEntity = metaMap?.[key];
|
|
20263
20509
|
if (!metaEntity) continue;
|
|
20264
20510
|
const base = i * USER_CALLS_PER_RESERVE;
|
|
@@ -20269,6 +20515,11 @@ var getAaveV4UserDataConverter = (lender, chainId, account, metaMap) => {
|
|
|
20269
20515
|
metaEntity
|
|
20270
20516
|
);
|
|
20271
20517
|
if (!dataForAsset) continue;
|
|
20518
|
+
const userPositionResult = data[base + 3];
|
|
20519
|
+
const userDynConfigKey = Number(
|
|
20520
|
+
userPositionResult?.dynamicConfigKey ?? 0
|
|
20521
|
+
);
|
|
20522
|
+
dataForAsset.userConfigKey = `${spokeAddr.toLowerCase()}:${userDynConfigKey}`;
|
|
20272
20523
|
totalDebt24h += addedDebt;
|
|
20273
20524
|
totalDeposits24h += addedDeposits;
|
|
20274
20525
|
lendingPositions[key] = dataForAsset;
|
|
@@ -20277,10 +20528,8 @@ var getAaveV4UserDataConverter = (lender, chainId, account, metaMap) => {
|
|
|
20277
20528
|
chainId,
|
|
20278
20529
|
account,
|
|
20279
20530
|
lendingPositions,
|
|
20280
|
-
rewards: []
|
|
20281
|
-
|
|
20282
|
-
};
|
|
20283
|
-
const userData = createBaseTypeUserState(
|
|
20531
|
+
rewards: []};
|
|
20532
|
+
const userData = createAaveV4UserState(
|
|
20284
20533
|
payload,
|
|
20285
20534
|
metaMap,
|
|
20286
20535
|
totalDeposits24h,
|
|
@@ -31877,10 +32126,15 @@ var eulerV2Fetcher = {
|
|
|
31877
32126
|
};
|
|
31878
32127
|
function getAaveV4OracleGroups(chainId) {
|
|
31879
32128
|
const oracles = aaveV4Oracles() ?? {};
|
|
32129
|
+
const spokes = aaveV4Spokes() ?? {};
|
|
31880
32130
|
const groups = [];
|
|
31881
32131
|
for (const [fork, chains] of Object.entries(oracles)) {
|
|
31882
32132
|
const oracleEntries = chains[chainId] ?? [];
|
|
31883
32133
|
if (oracleEntries.length === 0) continue;
|
|
32134
|
+
const spokeToHub = /* @__PURE__ */ new Map();
|
|
32135
|
+
for (const s of spokes[fork]?.[chainId] ?? []) {
|
|
32136
|
+
if (s.hub) spokeToHub.set(s.spoke.toLowerCase(), s.hub.toLowerCase());
|
|
32137
|
+
}
|
|
31884
32138
|
const byOracle = /* @__PURE__ */ new Map();
|
|
31885
32139
|
for (const entry of oracleEntries) {
|
|
31886
32140
|
if (!entry.oracle || entry.oracle === "0x") continue;
|
|
@@ -31890,10 +32144,13 @@ function getAaveV4OracleGroups(chainId) {
|
|
|
31890
32144
|
group = { decimals: entry.decimals ?? 8, entries: [] };
|
|
31891
32145
|
byOracle.set(key, group);
|
|
31892
32146
|
}
|
|
32147
|
+
const spokeLc = entry.spoke.toLowerCase();
|
|
32148
|
+
const hub = spokeToHub.get(spokeLc) ?? "";
|
|
31893
32149
|
group.entries.push({
|
|
31894
32150
|
underlying: entry.underlying.toLowerCase(),
|
|
31895
|
-
|
|
31896
|
-
reserveId: entry.reserveId
|
|
32151
|
+
hub,
|
|
32152
|
+
reserveId: entry.reserveId,
|
|
32153
|
+
spoke: spokeLc
|
|
31897
32154
|
});
|
|
31898
32155
|
}
|
|
31899
32156
|
for (const [oracle, group] of byOracle) {
|
|
@@ -31948,8 +32205,9 @@ function parseAaveV4Results(data, meta, context) {
|
|
|
31948
32205
|
marketUid: createMarketUid(
|
|
31949
32206
|
chainId,
|
|
31950
32207
|
meta.fork,
|
|
31951
|
-
`${entry.
|
|
31952
|
-
)
|
|
32208
|
+
`${entry.hub}:${entry.underlying}`
|
|
32209
|
+
),
|
|
32210
|
+
configId: entry.spoke
|
|
31953
32211
|
});
|
|
31954
32212
|
} catch {
|
|
31955
32213
|
continue;
|