@1delta/margin-fetcher 0.0.214 → 0.0.215

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 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';
@@ -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
@@ -17895,8 +17895,8 @@ var getEulerV2ReservesDataConverter = (lender, chainId, prices, additionalYields
17895
17895
  // src/lending/public-data/aave-v4-type/publicCallBuild.ts
17896
17896
  var CALLS_PER_RESERVE = 6;
17897
17897
  var CALLS_PER_SPOKE_TAIL = 2;
17898
- function hasValidOracle(oracle) {
17899
- return !!oracle && oracle !== "0x" && oracle.length > 2;
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] ?? [];
@@ -17909,6 +17909,7 @@ var buildAaveV4LenderReserveCall = (chainId, lender) => {
17909
17909
  const hubAssetKeys = /* @__PURE__ */ new Set();
17910
17910
  const hubAssetList = [];
17911
17911
  for (const spokeEntry of spokes) {
17912
+ if (!isValidAddress(spokeEntry.spoke)) continue;
17912
17913
  const spokeAddr = spokeEntry.spoke;
17913
17914
  const reserves = getSpokeReserves(reservesMap, spokeAddr);
17914
17915
  for (const entry of reserves) {
@@ -17946,11 +17947,12 @@ var buildAaveV4LenderReserveCall = (chainId, lender) => {
17946
17947
  }
17947
17948
  );
17948
17949
  if (typeof entry === "object" && spokeEntry.hub && entry.assetId !== void 0) {
17949
- const key = `${spokeEntry.hub}:${entry.assetId}`;
17950
+ const hubLc = spokeEntry.hub.toLowerCase();
17951
+ const key = `${hubLc}:${entry.assetId}`;
17950
17952
  if (!hubAssetKeys.has(key)) {
17951
17953
  hubAssetKeys.add(key);
17952
17954
  hubAssetList.push({
17953
- hub: spokeEntry.hub,
17955
+ hub: hubLc,
17954
17956
  assetId: entry.assetId
17955
17957
  });
17956
17958
  }
@@ -17970,6 +17972,7 @@ var buildAaveV4LenderReserveCall = (chainId, lender) => {
17970
17972
  );
17971
17973
  }
17972
17974
  for (const spokeEntry of spokes) {
17975
+ if (!isValidAddress(spokeEntry.spoke)) continue;
17973
17976
  const reserves = getSpokeReserves(
17974
17977
  reservesMap,
17975
17978
  spokeEntry.spoke
@@ -17977,7 +17980,7 @@ var buildAaveV4LenderReserveCall = (chainId, lender) => {
17977
17980
  const rids = reserves.map(
17978
17981
  (e) => typeof e === "number" ? e : e.reserveId
17979
17982
  );
17980
- if (rids.length > 0 && hasValidOracle(spokeEntry.oracle)) {
17983
+ if (rids.length > 0 && isValidAddress(spokeEntry.oracle)) {
17981
17984
  calls.push({
17982
17985
  address: spokeEntry.oracle,
17983
17986
  name: "getReservesPrices",
@@ -18012,6 +18015,7 @@ var getAaveV4ExpectedCallCount = (chainId, lender) => {
18012
18015
  let count = 0;
18013
18016
  const hubAssetKeys = /* @__PURE__ */ new Set();
18014
18017
  for (const spokeEntry of spokes) {
18018
+ if (!isValidAddress(spokeEntry.spoke)) continue;
18015
18019
  const reserves = getSpokeReserves(
18016
18020
  reservesMap,
18017
18021
  spokeEntry.spoke
@@ -18020,12 +18024,12 @@ var getAaveV4ExpectedCallCount = (chainId, lender) => {
18020
18024
  const rids = reserves.map(
18021
18025
  (e) => typeof e === "number" ? e : e.reserveId
18022
18026
  );
18023
- if (rids.length > 0 && hasValidOracle(spokeEntry.oracle)) {
18027
+ if (rids.length > 0 && isValidAddress(spokeEntry.oracle)) {
18024
18028
  count += 1;
18025
18029
  }
18026
18030
  for (const entry of reserves) {
18027
18031
  if (typeof entry === "object" && spokeEntry.hub && entry.assetId !== void 0) {
18028
- hubAssetKeys.add(`${spokeEntry.hub}:${entry.assetId}`);
18032
+ hubAssetKeys.add(`${spokeEntry.hub.toLowerCase()}:${entry.assetId}`);
18029
18033
  }
18030
18034
  }
18031
18035
  }
@@ -18073,7 +18077,8 @@ function normalizeAaveV4(spokeDataList, chainId, lender, prices, additionalYield
18073
18077
  for (const reserve of spokeReserves) {
18074
18078
  const underlying = reserve.reserve.underlying.toLowerCase();
18075
18079
  const decimals = reserve.reserve.decimals;
18076
- const refAddress = `${spokeAddr}:${reserve.reserveId}`;
18080
+ const hubAddr = reserve.reserve.hub.toLowerCase();
18081
+ const refAddress = `${hubAddr}:${underlying}`;
18077
18082
  const marketUid = createMarketUidFn(chainId, lender, refAddress);
18078
18083
  const assetMeta = tokenList[underlying];
18079
18084
  const oracleKey = toOracleKeyFn(assetMeta?.assetGroup ?? null) ?? toGenericPriceKeyFn(underlying, chainId);
@@ -18183,8 +18188,8 @@ function normalizeAaveV4(spokeDataList, chainId, lender, prices, additionalYield
18183
18188
  }
18184
18189
 
18185
18190
  // src/lending/public-data/aave-v4-type/publicCallParse.ts
18186
- function hasValidOracle2(oracle) {
18187
- return !!oracle && oracle !== "0x" && oracle.length > 2;
18191
+ function isValidAddress2(addr) {
18192
+ return !!addr && addr !== "0x" && addr.length > 2;
18188
18193
  }
18189
18194
  function getSpokeReserves2(reservesMap, spokeAddr) {
18190
18195
  return reservesMap[spokeAddr.toLowerCase()] ?? reservesMap[spokeAddr] ?? [];
@@ -18200,6 +18205,7 @@ var getAaveV4ReservesDataConverter = (lender, chainId, prices, additionalYields,
18200
18205
  const hubAssetKeys = /* @__PURE__ */ new Set();
18201
18206
  const hubAssetList = [];
18202
18207
  for (const spokeEntry of spokes) {
18208
+ if (!isValidAddress2(spokeEntry.spoke)) continue;
18203
18209
  const spokeAddr = spokeEntry.spoke;
18204
18210
  const reserves = getSpokeReserves2(reservesMap, spokeAddr);
18205
18211
  const reserveCount = reserves.length;
@@ -18257,11 +18263,12 @@ var getAaveV4ReservesDataConverter = (lender, chainId, prices, additionalYields,
18257
18263
  };
18258
18264
  }
18259
18265
  if (spokeEntry.hub && typeof entry === "object" && entry.assetId !== void 0) {
18260
- const key = `${spokeEntry.hub}:${entry.assetId}`;
18266
+ const hubLc = spokeEntry.hub.toLowerCase();
18267
+ const key = `${hubLc}:${entry.assetId}`;
18261
18268
  if (!hubAssetKeys.has(key)) {
18262
18269
  hubAssetKeys.add(key);
18263
18270
  hubAssetList.push({
18264
- hub: spokeEntry.hub,
18271
+ hub: hubLc,
18265
18272
  assetId: entry.assetId
18266
18273
  });
18267
18274
  }
@@ -18303,23 +18310,19 @@ var getAaveV4ReservesDataConverter = (lender, chainId, prices, additionalYields,
18303
18310
  reserves: parsedReserves
18304
18311
  });
18305
18312
  }
18306
- for (let si = 0; si < spokes.length; si++) {
18307
- const reserves = getSpokeReserves2(
18308
- reservesMap,
18309
- spokes[si].spoke
18310
- );
18313
+ for (let si = 0; si < spokeDataList.length; si++) {
18314
+ const sd = spokeDataList[si];
18315
+ const reserves = getSpokeReserves2(reservesMap, sd.spoke);
18311
18316
  const rids = reserves.map(
18312
18317
  (e) => typeof e === "number" ? e : e.reserveId
18313
18318
  );
18314
- if (rids.length > 0 && hasValidOracle2(spokes[si].oracle)) {
18319
+ if (rids.length > 0 && isValidAddress2(sd.oracle)) {
18315
18320
  const rawPrices = data[offset];
18316
18321
  offset += 1;
18317
18322
  const priceArray = Array.isArray(rawPrices) ? rawPrices : [];
18318
- for (let ri = 0; ri < spokeDataList[si].reserves.length; ri++) {
18323
+ for (let ri = 0; ri < sd.reserves.length; ri++) {
18319
18324
  if (ri < priceArray.length) {
18320
- spokeDataList[si].reserves[ri].price = BigInt(
18321
- priceArray[ri] ?? 0
18322
- );
18325
+ sd.reserves[ri].price = BigInt(priceArray[ri] ?? 0);
18323
18326
  }
18324
18327
  }
18325
18328
  }
@@ -19047,6 +19050,7 @@ var buildAaveV4UserCall = (chainId, lender, account) => {
19047
19050
  const calls = [];
19048
19051
  for (const spokeEntry of spokes) {
19049
19052
  const spokeAddr = spokeEntry.spoke;
19053
+ if (!spokeAddr || spokeAddr === "0x" || spokeAddr.length <= 2) continue;
19050
19054
  const reserveIds = reservesMap[spokeAddr.toLowerCase()] ?? reservesMap[spokeAddr] ?? [];
19051
19055
  for (const entry of reserveIds) {
19052
19056
  const rid = typeof entry === "number" ? entry : entry.reserveId;
@@ -20240,10 +20244,15 @@ var getAaveV4UserDataConverter = (lender, chainId, account, metaMap) => {
20240
20244
  const reserveEntries = [];
20241
20245
  for (const spokeEntry of spokes) {
20242
20246
  const spokeAddr = spokeEntry.spoke;
20243
- const reserveIds = reservesMap[spokeAddr.toLowerCase()] ?? reservesMap[spokeAddr] ?? [];
20244
- for (const entry of reserveIds) {
20245
- const rid = typeof entry === "number" ? entry : entry.reserveId;
20246
- reserveEntries.push({ spokeAddr, reserveId: rid });
20247
+ if (!spokeAddr || spokeAddr === "0x" || spokeAddr.length <= 2) continue;
20248
+ const reserves = reservesMap[spokeAddr.toLowerCase()] ?? reservesMap[spokeAddr] ?? [];
20249
+ for (const entry of reserves) {
20250
+ reserveEntries.push({
20251
+ spokeAddr,
20252
+ reserveId: typeof entry === "number" ? entry : entry.reserveId,
20253
+ hub: (spokeEntry.hub ?? "").toLowerCase(),
20254
+ underlying: (typeof entry === "object" ? entry.underlying ?? "" : "").toLowerCase()
20255
+ });
20247
20256
  }
20248
20257
  }
20249
20258
  const expectedNumberOfCalls = reserveEntries.length * USER_CALLS_PER_RESERVE;
@@ -20256,8 +20265,8 @@ var getAaveV4UserDataConverter = (lender, chainId, account, metaMap) => {
20256
20265
  let totalDebt24h = 0;
20257
20266
  let totalDeposits24h = 0;
20258
20267
  for (let i = 0; i < reserveEntries.length; i++) {
20259
- const { spokeAddr, reserveId } = reserveEntries[i];
20260
- const refAddress = `${spokeAddr.toLowerCase()}:${reserveId}`;
20268
+ const { hub, underlying } = reserveEntries[i];
20269
+ const refAddress = `${hub}:${underlying}`;
20261
20270
  const key = createMarketUid(chainId, lender, refAddress);
20262
20271
  const metaEntity = metaMap?.[key];
20263
20272
  if (!metaEntity) continue;
@@ -31877,10 +31886,15 @@ var eulerV2Fetcher = {
31877
31886
  };
31878
31887
  function getAaveV4OracleGroups(chainId) {
31879
31888
  const oracles = aaveV4Oracles() ?? {};
31889
+ const spokes = aaveV4Spokes() ?? {};
31880
31890
  const groups = [];
31881
31891
  for (const [fork, chains] of Object.entries(oracles)) {
31882
31892
  const oracleEntries = chains[chainId] ?? [];
31883
31893
  if (oracleEntries.length === 0) continue;
31894
+ const spokeToHub = /* @__PURE__ */ new Map();
31895
+ for (const s of spokes[fork]?.[chainId] ?? []) {
31896
+ if (s.hub) spokeToHub.set(s.spoke.toLowerCase(), s.hub.toLowerCase());
31897
+ }
31884
31898
  const byOracle = /* @__PURE__ */ new Map();
31885
31899
  for (const entry of oracleEntries) {
31886
31900
  if (!entry.oracle || entry.oracle === "0x") continue;
@@ -31890,10 +31904,13 @@ function getAaveV4OracleGroups(chainId) {
31890
31904
  group = { decimals: entry.decimals ?? 8, entries: [] };
31891
31905
  byOracle.set(key, group);
31892
31906
  }
31907
+ const spokeLc = entry.spoke.toLowerCase();
31908
+ const hub = spokeToHub.get(spokeLc) ?? "";
31893
31909
  group.entries.push({
31894
31910
  underlying: entry.underlying.toLowerCase(),
31895
- spoke: entry.spoke.toLowerCase(),
31896
- reserveId: entry.reserveId
31911
+ hub,
31912
+ reserveId: entry.reserveId,
31913
+ spoke: spokeLc
31897
31914
  });
31898
31915
  }
31899
31916
  for (const [oracle, group] of byOracle) {
@@ -31948,8 +31965,9 @@ function parseAaveV4Results(data, meta, context) {
31948
31965
  marketUid: createMarketUid(
31949
31966
  chainId,
31950
31967
  meta.fork,
31951
- `${entry.spoke}:${entry.reserveId}`
31952
- )
31968
+ `${entry.hub}:${entry.underlying}`
31969
+ ),
31970
+ configId: entry.spoke
31953
31971
  });
31954
31972
  } catch {
31955
31973
  continue;