@1delta/margin-fetcher 0.0.233 → 0.0.235

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.
@@ -1 +1 @@
1
- {"version":3,"file":"fetchLiquidity.d.ts","sourceRoot":"","sources":["../../src/flash-liquidity/fetchLiquidity.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,sBAAsB,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAE5D,OAAO,EAAE,uBAAuB,EAAgB,MAAM,SAAS,CAAA;AAwB/D,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,sBAAsB,EACtC,IAAI,GAAE,SAAc,oCA6PrB"}
1
+ {"version":3,"file":"fetchLiquidity.d.ts","sourceRoot":"","sources":["../../src/flash-liquidity/fetchLiquidity.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,sBAAsB,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAE5D,OAAO,EAAE,uBAAuB,EAAgB,MAAM,SAAS,CAAA;AA2B/D,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,sBAAsB,EACtC,IAAI,GAAE,SAAc,oCA+PrB"}
package/dist/index.js CHANGED
@@ -8,7 +8,7 @@ import { getEvmChain, getEvmClient, getEvmClientUniversal, multicallRetryUnivers
8
8
  import { MorphoLensAbi, AaveV4SpokeAbi, AaveV4OracleAbi, AaveV4HubAbi, MorphoBlueAbi } from '@1delta/abis';
9
9
  export { MorphoLensAbi } from '@1delta/abis';
10
10
  import { prepareDebitDataMulticall, prepareLenderDebitMulticall, parseDebitDataResult, parseLenderDebitResult, getPermit2ContractAddress, getCompoundV3CometAddress as getCompoundV3CometAddress$1, getMorphoAddress, getAaveCollateralTokenAddress, getSiloHalfForUnderlying, InitMarginAddresses } from '@1delta/calldata-sdk';
11
- import { BALANCER_V2_FORKS, BALANCER_V3_FORKS, UNISWAP_V4_FORKS, FLASH_LOAN_IDS } from '@1delta/dex-registry';
11
+ import { BALANCER_V2_FORKS, BALANCER_V3_FORKS, UNISWAP_V4_FORKS, isFlashLoanSourceExcluded, FLASH_LOAN_IDS } from '@1delta/dex-registry';
12
12
 
13
13
  // src/abis/aave-v2/ProtocolDataProvider.ts
14
14
  var ProtocolDataProviderAbi = [
@@ -28634,10 +28634,32 @@ async function getListsMulti(chainIds) {
28634
28634
  // src/yields/intrinsic/fetchers/lido.ts
28635
28635
  var WSTETH_URL = "https://eth-api.lido.fi/v1/protocol/steth/apr/sma";
28636
28636
  var tETH = "Treehouse ETH::TETH";
28637
+ var robustFetchJson = async (url, { timeoutMs = 5e3, attempts = 3 } = {}) => {
28638
+ let lastErr;
28639
+ for (let i = 0; i < attempts; i++) {
28640
+ try {
28641
+ const res = await fetch(url, {
28642
+ headers: {
28643
+ accept: "application/json",
28644
+ "user-agent": "1delta-margin-fetcher"
28645
+ },
28646
+ signal: AbortSignal.timeout(timeoutMs)
28647
+ });
28648
+ if (!res.ok) throw new Error(`HTTP ${res.status}`);
28649
+ return await res.json();
28650
+ } catch (e) {
28651
+ lastErr = e;
28652
+ if (i < attempts - 1) {
28653
+ await new Promise((r) => setTimeout(r, 250 * (i + 1)));
28654
+ }
28655
+ }
28656
+ }
28657
+ throw lastErr;
28658
+ };
28637
28659
  var wstethFetcher = {
28638
28660
  label: "WSTETH",
28639
28661
  fetch: async () => {
28640
- const res = await fetch(WSTETH_URL).then((r) => r.json());
28662
+ const res = await robustFetchJson(WSTETH_URL);
28641
28663
  const apr = Number(res.data.aprs.at(-1).apr) * 0.9;
28642
28664
  return {
28643
28665
  WSTETH: apr,
@@ -29596,6 +29618,29 @@ var infinifiFetcher = {
29596
29618
  }
29597
29619
  };
29598
29620
 
29621
+ // src/yields/intrinsic/fetchers/avant.ts
29622
+ var AVANT_BASE = "https://app.avantprotocol.com/api/apy";
29623
+ var sAVUSD = "Staked avUSD::savUSD";
29624
+ var sAVETH = "Staked avETH::savETH";
29625
+ var sAVBTC = "Staked avBTC::savBTC";
29626
+ var fetchAvantApr = async (slug) => {
29627
+ const res = await fetch(`${AVANT_BASE}/${slug}`).then((r) => r.json());
29628
+ const apy = Number(res?.apy ?? 0);
29629
+ return apyToAprPercent(apy);
29630
+ };
29631
+ var savusdFetcher = {
29632
+ label: "SAVUSD",
29633
+ fetch: async () => ({ [sAVUSD]: await fetchAvantApr("savusd") })
29634
+ };
29635
+ var savethFetcher = {
29636
+ label: "SAVETH",
29637
+ fetch: async () => ({ [sAVETH]: await fetchAvantApr("saveth") })
29638
+ };
29639
+ var savbtcFetcher = {
29640
+ label: "SAVBTC",
29641
+ fetch: async () => ({ [sAVBTC]: await fetchAvantApr("savbtc") })
29642
+ };
29643
+
29599
29644
  // src/yields/intrinsic/index.ts
29600
29645
  async function fetchIntrinsicYields() {
29601
29646
  const wstethPromise = safeFetch(wstethFetcher.label, wstethFetcher.fetch);
@@ -29648,7 +29693,10 @@ async function fetchIntrinsicYields() {
29648
29693
  susdfFetcher,
29649
29694
  midasFetcher,
29650
29695
  capFetcher,
29651
- infinifiFetcher
29696
+ infinifiFetcher,
29697
+ savusdFetcher,
29698
+ savethFetcher,
29699
+ savbtcFetcher
29652
29700
  ];
29653
29701
  const results = await Promise.all([
29654
29702
  wstethPromise,
@@ -30651,6 +30699,7 @@ var priceLensAbi = [
30651
30699
 
30652
30700
  // src/prices/oracle-prices/fetchers/euler.ts
30653
30701
  var MAX_VIRTUAL_ADDRESS = 65535;
30702
+ var MAX_SANE_PRICE_USD = 1e7;
30654
30703
  function isUsdUnitOfAccount(addr) {
30655
30704
  const numeric = parseInt(addr, 16);
30656
30705
  return numeric <= MAX_VIRTUAL_ADDRESS;
@@ -30757,6 +30806,7 @@ function parseEulerV2Results(data, meta, context) {
30757
30806
  priceUSD = priceInUoA * uoaUSD;
30758
30807
  }
30759
30808
  if (isNaN(priceUSD) || priceUSD === 0) return;
30809
+ if (priceUSD > MAX_SANE_PRICE_USD) return;
30760
30810
  entries.push({
30761
30811
  asset,
30762
30812
  price: priceInUoA,
@@ -32283,7 +32333,9 @@ async function fetchFlashLiquidityForChain(chain, multicallRetry, list = {}) {
32283
32333
  let aaveAssets = {};
32284
32334
  let aaveCalls = [];
32285
32335
  const aaves = getAavesForChain();
32286
- const aaveProtocols = aaves[chain] ?? [];
32336
+ const aaveProtocols = (aaves[chain] ?? []).filter(
32337
+ (l) => !isFlashLoanSourceExcluded(chain, l)
32338
+ );
32287
32339
  const allAaveUnderlyings = [];
32288
32340
  aaveProtocols.forEach((aaveFork) => {
32289
32341
  const underlyingsAndATokens = Object.entries(