@1delta/margin-fetcher 0.0.200 → 0.0.203

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.js CHANGED
@@ -10882,7 +10882,8 @@ var MORPHO_LENS = {
10882
10882
  // lista lens
10883
10883
  [Chain.UNICHAIN]: "0xA453ba397c61B0c292EA3959A858821145B2707F",
10884
10884
  [Chain.SEI_NETWORK]: "0xcB6Eb8df68153cebF60E1872273Ef52075a5C297",
10885
- [Chain.MONAD_MAINNET]: "0x0bd7473CbBf81d9dD936c61117eD230d95006CA2"
10885
+ [Chain.MONAD_MAINNET]: "0x0bd7473CbBf81d9dD936c61117eD230d95006CA2",
10886
+ [Chain.CELO_MAINNET]: "0x4b5458BB47dCBC1a41B31b41e1a8773dE312BE9d"
10886
10887
  };
10887
10888
  var buildMorphoUserCallWithLens = (chainId, account, lender, marketsToQuery) => {
10888
10889
  const marketSlices = chunk(marketsToQuery, 100);
@@ -18118,6 +18119,7 @@ function lenderCanUseApi(lender, chainId) {
18118
18119
  if (chainId === Chain.HEMI_NETWORK) return false;
18119
18120
  if (chainId === Chain.BERACHAIN) return false;
18120
18121
  if (chainId === Chain.SEI_NETWORK) return false;
18122
+ if (chainId === Chain.CELO_MAINNET) return false;
18121
18123
  return true;
18122
18124
  }
18123
18125
  return false;
@@ -27231,6 +27233,29 @@ var ondoFetcher = {
27231
27233
  }
27232
27234
  };
27233
27235
 
27236
+ // src/yields/intrinsic/fetchers/yuzu.ts
27237
+ var YUZU_APY_URL = "https://defi-api.yuzu.money/proxy/apy";
27238
+ var syzUSD = "Staked Yuzu USD::syzUSD";
27239
+ var syzusdFetcher = {
27240
+ label: "SYZUSD",
27241
+ fetch: async () => {
27242
+ const res = await fetch(YUZU_APY_URL).then((r) => r.json());
27243
+ return { [syzUSD]: apyToAprPercent(res?.data?.syzusd_apy ?? 0) };
27244
+ }
27245
+ };
27246
+
27247
+ // src/yields/intrinsic/fetchers/falcon.ts
27248
+ var FALCON_URL = "https://api.falcon.finance/api/v1/statistics";
27249
+ var sUSDf = "Staked Falcon USD::sUSDf";
27250
+ var susdfFetcher = {
27251
+ label: "SUSDF",
27252
+ fetch: async () => {
27253
+ const res = await fetch(FALCON_URL).then((r) => r.json());
27254
+ const apy = Number(res?.sUSDf_7d_apy ?? 0) * 100;
27255
+ return { [sUSDf]: apyToAprPercent(apy) };
27256
+ }
27257
+ };
27258
+
27234
27259
  // src/yields/intrinsic/index.ts
27235
27260
  async function fetchIntrinsicYields() {
27236
27261
  const wstethPromise = safeFetch(wstethFetcher.label, wstethFetcher.fetch);
@@ -27278,7 +27303,9 @@ async function fetchIntrinsicYields() {
27278
27303
  pendleFetcher,
27279
27304
  usdaiFetcher,
27280
27305
  mapleFetcher,
27281
- ondoFetcher
27306
+ ondoFetcher,
27307
+ syzusdFetcher,
27308
+ susdfFetcher
27282
27309
  ];
27283
27310
  const results = await Promise.all([
27284
27311
  wstethPromise,
@@ -30361,6 +30388,18 @@ var aaveFetcher = {
30361
30388
  parse: parseAaveResults2,
30362
30389
  getAbi: getAaveAbi
30363
30390
  };
30391
+
30392
+ // src/lending/public-data/morpho/fetchMorphoGoldsky.ts
30393
+ ({
30394
+ [Chain.SEI_NETWORK]: "https://api.goldsky.com/api/public/project_cmiergfbv4vma01vb642yaeam/subgraphs/morphoblue-sei/1.0.1/gn",
30395
+ [Chain.CELO_MAINNET]: "https://api.goldsky.com/api/public/project_cmiergfbv4vma01vb642yaeam/subgraphs/morphoblue-celo/1.0.4/gn",
30396
+ [Chain.LISK]: "https://api.goldsky.com/api/public/project_cmiergfbv4vma01vb642yaeam/subgraphs/morphobluelisk/1.0.1/gn",
30397
+ [Chain.SONEIUM]: "https://api.goldsky.com/api/public/project_cmiergfbv4vma01vb642yaeam/subgraphs/morphobluesoneium/1.0.2/gn",
30398
+ [Chain.TAC_MAINNET]: "https://api.goldsky.com/api/public/project_cmiergfbv4vma01vb642yaeam/subgraphs/morphoblue-tac/1.0.0/gn",
30399
+ [Chain.HEMI_NETWORK]: "https://feather.securesecrets.org/hemi-mopho-blue/"
30400
+ });
30401
+
30402
+ // src/prices/oracle-prices/fetchers/morpho.ts
30364
30403
  function morphoApiAvailable(chainId) {
30365
30404
  if (chainId === Chain.SONEIUM) return false;
30366
30405
  if (chainId === Chain.HEMI_NETWORK) return false;
@@ -30526,81 +30565,84 @@ async function fetchMorphoGraphQLPrices(chainId) {
30526
30565
  }
30527
30566
  allMarkets.push(...items);
30528
30567
  }
30529
- if (allMarkets.length === 0) {
30530
- console.warn(`[morpho-gql] chain ${chainId}: API returned 0 markets`);
30531
- return null;
30532
- }
30533
- const entries = [];
30534
- for (const market of allMarkets) {
30535
- if (!market.collateralAsset?.address || !market.loanAsset?.address)
30536
- continue;
30537
- const oracle = market.oracleAddress;
30538
- const loanAsset = market.loanAsset.address.toLowerCase();
30539
- const collateralAsset = market.collateralAsset.address.toLowerCase();
30540
- const marketId = market.uniqueKey?.replace(/^0x/i, "").toUpperCase() ?? generateMarketId(oracle, loanAsset, collateralAsset);
30541
- const lenderKey = generateMorphoLenderKey(marketId);
30542
- const loanPriceUSD = market.loanAsset.priceUsd;
30543
- const collateralPriceUSD = market.collateralAsset.priceUsd;
30544
- const statePrice = market.state?.price;
30545
- const oracleRatio = statePrice != null ? formatMorphoPrice(
30546
- statePrice,
30547
- market.loanAsset.decimals,
30548
- market.collateralAsset.decimals
30549
- ) : 0;
30550
- if (loanPriceUSD != null && loanPriceUSD > 0) {
30551
- const collateralUSD = oracleRatio > 0 ? oracleRatio * loanPriceUSD : collateralPriceUSD ?? 0;
30552
- if (collateralUSD > 0) {
30553
- entries.push({
30554
- asset: collateralAsset,
30555
- price: oracleRatio,
30556
- // Raw: collateral price in loan asset terms
30557
- priceUSD: collateralUSD,
30558
- marketUid: createMarketUid(chainId, lenderKey, collateralAsset),
30559
- targetLender: lenderKey
30560
- });
30561
- }
30562
- } else if (collateralPriceUSD != null && collateralPriceUSD > 0) {
30568
+ return processMarketsToEntries(chainId, allMarkets, "morpho-gql");
30569
+ } catch (err) {
30570
+ console.warn(`[morpho-gql] chain ${chainId}: API error, falling back to on-chain`, err);
30571
+ return null;
30572
+ }
30573
+ }
30574
+ function processMarketsToEntries(chainId, allMarkets, source) {
30575
+ if (allMarkets.length === 0) {
30576
+ console.warn(`[${source}] chain ${chainId}: returned 0 markets`);
30577
+ return null;
30578
+ }
30579
+ const entries = [];
30580
+ for (const market of allMarkets) {
30581
+ if (!market.collateralAsset?.address || !market.loanAsset?.address)
30582
+ continue;
30583
+ const oracle = market.oracleAddress;
30584
+ const loanAsset = market.loanAsset.address.toLowerCase();
30585
+ const collateralAsset = market.collateralAsset.address.toLowerCase();
30586
+ const marketId = market.uniqueKey?.replace(/^0x/i, "").toUpperCase() ?? generateMarketId(oracle, loanAsset, collateralAsset);
30587
+ const lenderKey = generateMorphoLenderKey(marketId);
30588
+ const loanPriceUSD = market.loanAsset.priceUsd;
30589
+ const collateralPriceUSD = market.collateralAsset.priceUsd;
30590
+ const statePrice = market.state?.price;
30591
+ const oracleRatio = statePrice != null ? formatMorphoPrice(
30592
+ statePrice,
30593
+ market.loanAsset.decimals,
30594
+ market.collateralAsset.decimals
30595
+ ) : 0;
30596
+ if (loanPriceUSD != null && loanPriceUSD > 0) {
30597
+ const collateralUSD = oracleRatio > 0 ? oracleRatio * loanPriceUSD : collateralPriceUSD ?? 0;
30598
+ if (collateralUSD > 0) {
30563
30599
  entries.push({
30564
30600
  asset: collateralAsset,
30565
30601
  price: oracleRatio,
30566
- // Raw oracle ratio
30567
- priceUSD: collateralPriceUSD,
30602
+ // Raw: collateral price in loan asset terms
30603
+ priceUSD: collateralUSD,
30568
30604
  marketUid: createMarketUid(chainId, lenderKey, collateralAsset),
30569
30605
  targetLender: lenderKey
30570
30606
  });
30571
30607
  }
30572
- if (collateralPriceUSD != null && collateralPriceUSD > 0) {
30573
- const loanUSD = oracleRatio > 0 ? collateralPriceUSD / oracleRatio : loanPriceUSD ?? 0;
30574
- if (loanUSD > 0) {
30575
- entries.push({
30576
- asset: loanAsset,
30577
- price: oracleRatio > 0 ? 1 / oracleRatio : 0,
30578
- // Raw: loan price in collateral terms
30579
- priceUSD: loanUSD,
30580
- marketUid: createMarketUid(chainId, lenderKey, loanAsset),
30581
- targetLender: lenderKey
30582
- });
30583
- }
30584
- } else if (loanPriceUSD != null && loanPriceUSD > 0) {
30608
+ } else if (collateralPriceUSD != null && collateralPriceUSD > 0) {
30609
+ entries.push({
30610
+ asset: collateralAsset,
30611
+ price: oracleRatio,
30612
+ // Raw oracle ratio
30613
+ priceUSD: collateralPriceUSD,
30614
+ marketUid: createMarketUid(chainId, lenderKey, collateralAsset),
30615
+ targetLender: lenderKey
30616
+ });
30617
+ }
30618
+ if (collateralPriceUSD != null && collateralPriceUSD > 0) {
30619
+ const loanUSD = oracleRatio > 0 ? collateralPriceUSD / oracleRatio : loanPriceUSD ?? 0;
30620
+ if (loanUSD > 0) {
30585
30621
  entries.push({
30586
30622
  asset: loanAsset,
30587
30623
  price: oracleRatio > 0 ? 1 / oracleRatio : 0,
30588
- // Raw oracle ratio
30589
- priceUSD: loanPriceUSD,
30624
+ // Raw: loan price in collateral terms
30625
+ priceUSD: loanUSD,
30590
30626
  marketUid: createMarketUid(chainId, lenderKey, loanAsset),
30591
30627
  targetLender: lenderKey
30592
30628
  });
30593
30629
  }
30630
+ } else if (loanPriceUSD != null && loanPriceUSD > 0) {
30631
+ entries.push({
30632
+ asset: loanAsset,
30633
+ price: oracleRatio > 0 ? 1 / oracleRatio : 0,
30634
+ // Raw oracle ratio
30635
+ priceUSD: loanPriceUSD,
30636
+ marketUid: createMarketUid(chainId, lenderKey, loanAsset),
30637
+ targetLender: lenderKey
30638
+ });
30594
30639
  }
30595
- if (entries.length === 0) {
30596
- console.warn(`[morpho-gql] chain ${chainId}: ${allMarkets.length} markets fetched but 0 price entries produced`);
30597
- return null;
30598
- }
30599
- return entries;
30600
- } catch (err) {
30601
- console.warn(`[morpho-gql] chain ${chainId}: API error, falling back to on-chain`, err);
30640
+ }
30641
+ if (entries.length === 0) {
30642
+ console.warn(`[${source}] chain ${chainId}: ${allMarkets.length} markets fetched but 0 price entries produced`);
30602
30643
  return null;
30603
30644
  }
30645
+ return entries;
30604
30646
  }
30605
30647
  var morphoFetcher = {
30606
30648
  getCalls: getMorphoCalls2,
@@ -32213,13 +32255,15 @@ async function fetchTokenMetadata(chain, addrs) {
32213
32255
  });
32214
32256
  return tokens;
32215
32257
  }
32216
- var BALANCE_FETCHER = "0x60134ad7491101c7fcb343ed8c7599e449430766";
32258
+ var BALANCE_FETCHER = "0xba1a8c699aCb7938e76B062673e00c9b56382310";
32217
32259
  var BALANCE_FETCHER_SELECTOR = "0x30fb0985";
32218
32260
  function encodeBalanceFetcherCalldata(accounts, tokens) {
32219
32261
  if (accounts.length < 1 || tokens.length < 1) {
32220
32262
  return "0x";
32221
32263
  }
32222
- const normalizedAccounts = accounts.map((a) => a.toLowerCase());
32264
+ const normalizedAccounts = accounts.map(
32265
+ (a) => a.toLowerCase()
32266
+ );
32223
32267
  const normalizedTokens = tokens.map((t) => t.toLowerCase());
32224
32268
  const header = encodePacked(
32225
32269
  ["uint16", "uint16"],
@@ -32293,7 +32337,10 @@ function prepareTokenBalanceRpcCalls(chainId, account, tokens, blockTag = "lates
32293
32337
  const normalizedAccount = account.toLowerCase();
32294
32338
  const normalizedTokens = tokens.map((t) => t.toLowerCase());
32295
32339
  const tokensWithNative = [zeroAddress, ...normalizedTokens];
32296
- const encodedCalldata = encodeBalanceFetcherCalldata([normalizedAccount], tokensWithNative);
32340
+ const encodedCalldata = encodeBalanceFetcherCalldata(
32341
+ [normalizedAccount],
32342
+ tokensWithNative
32343
+ );
32297
32344
  const dataLength = (encodedCalldata.length - 2) / 2;
32298
32345
  const paddedLength = Math.ceil(dataLength / 32) * 32;
32299
32346
  const offsetHex = "0000000000000000000000000000000000000000000000000000000000000020";
@@ -32380,7 +32427,12 @@ async function rpcFetchWithRetry(rpcUrls, body, maxRetries2) {
32380
32427
  }
32381
32428
  async function fetchTokenBalances(chainId, account, tokens, options = {}) {
32382
32429
  const { blockTag = "latest", rpcUrl, rpcUrls, maxRetries: maxRetries2 = 3 } = options;
32383
- const prepared = prepareTokenBalanceRpcCalls(chainId, account, tokens, blockTag);
32430
+ const prepared = prepareTokenBalanceRpcCalls(
32431
+ chainId,
32432
+ account,
32433
+ tokens,
32434
+ blockTag
32435
+ );
32384
32436
  let urls;
32385
32437
  if (rpcUrls?.length) {
32386
32438
  urls = rpcUrls;