@1delta/margin-fetcher 5.0.96 → 5.0.98

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
@@ -50498,8 +50498,7 @@ var readVaults = async () => {
50498
50498
  (Date.now() / 1e3 - VAULT_EPOCH_ANCHOR.startTime) / NOMINAL_EPOCH_SECONDS
50499
50499
  );
50500
50500
  const probe = [];
50501
- for (let e = estimate - 6; e <= estimate + 6; e++) {
50502
- if (e - WINDOW >= 0) probe.push(e - WINDOW);
50501
+ for (let e = estimate - 34; e <= estimate + 6; e++) {
50503
50502
  if (e >= 0) probe.push(e);
50504
50503
  }
50505
50504
  const epochs = [...new Set(probe)].sort((a, b) => a - b);
@@ -50516,7 +50515,6 @@ var readVaults = async () => {
50516
50515
  allowFailure: true
50517
50516
  });
50518
50517
  const aprs = {};
50519
- const cadences = [];
50520
50518
  BFUSD_VAULTS.forEach(({ address }, vi) => {
50521
50519
  const rows = /* @__PURE__ */ new Map();
50522
50520
  epochs.forEach((e, i) => {
@@ -50530,18 +50528,28 @@ var readVaults = async () => {
50530
50528
  if (!now || !then) return;
50531
50529
  const elapsed = Number(now.startTime - then.startTime);
50532
50530
  if (elapsed <= 0) return;
50533
- cadences.push(elapsed / WINDOW);
50534
50531
  const growth = Number(now.startRatio) / Number(then.startRatio) - 1;
50535
50532
  const apr = 100 * SECONDS_PER_YEAR13 * growth / elapsed;
50536
50533
  if (plausible(apr)) {
50537
50534
  aprs[bitfiYieldKey(Chain.ETHEREUM_MAINNET, address)] = apr;
50538
50535
  }
50539
50536
  });
50540
- const secondsPerEpoch = cadences.length ? cadences.reduce((a, b) => a + b, 0) / cadences.length : void 0;
50541
- const usable = secondsPerEpoch !== void 0 && secondsPerEpoch > 43200 && secondsPerEpoch < 259200;
50542
- return { aprs, secondsPerEpoch: usable ? secondsPerEpoch : void 0 };
50537
+ return { aprs };
50543
50538
  };
50544
- var readBfbtc = async (chain, address, secondsPerEpoch) => {
50539
+ var BITFI_APR_URL = "https://api-ext.bitfi.one/api/v1/external/apr";
50540
+ var fetchBitfiApiApr = async () => {
50541
+ try {
50542
+ const res = await fetch(BITFI_APR_URL, {
50543
+ headers: { accept: "application/json" }
50544
+ }).then((r) => r.json());
50545
+ const frac = Number(res?.data?.["7e"]?.apr);
50546
+ const apr = frac * 100;
50547
+ return plausible(apr) && apr > 0 ? apr : void 0;
50548
+ } catch {
50549
+ return void 0;
50550
+ }
50551
+ };
50552
+ var readBfbtc = async (chain, address, secondsPerEpoch, frozenFallbackApr) => {
50545
50553
  const [epochRaw] = await multicallRetryUniversal({
50546
50554
  chain,
50547
50555
  abi: RATIO_ABI,
@@ -50562,6 +50570,10 @@ var readBfbtc = async (chain, address, secondsPerEpoch) => {
50562
50570
  });
50563
50571
  if (typeof nowRaw !== "bigint" || typeof thenRaw !== "bigint") return {};
50564
50572
  if (nowRaw <= 0n || thenRaw <= 0n) return {};
50573
+ if (nowRaw === thenRaw) {
50574
+ const apiApr = await frozenFallbackApr();
50575
+ return apiApr !== void 0 ? { [bitfiYieldKey(chain, address)]: apiApr } : { [bitfiYieldKey(chain, address)]: 0 };
50576
+ }
50565
50577
  const growth = Number(thenRaw) / Number(nowRaw) - 1;
50566
50578
  const apr = 100 * SECONDS_PER_YEAR13 * growth / (WINDOW * secondsPerEpoch);
50567
50579
  return plausible(apr) ? { [bitfiYieldKey(chain, address)]: apr } : {};
@@ -50569,11 +50581,13 @@ var readBfbtc = async (chain, address, secondsPerEpoch) => {
50569
50581
  var bitfiFetcher = {
50570
50582
  label: "BITFI",
50571
50583
  fetch: async () => {
50572
- const { aprs, secondsPerEpoch } = await readVaults();
50573
- const clock = secondsPerEpoch ?? NOMINAL_EPOCH_SECONDS;
50584
+ const { aprs } = await readVaults();
50585
+ const clock = NOMINAL_EPOCH_SECONDS;
50586
+ let apiApr;
50587
+ const frozenFallbackApr = () => apiApr ??= fetchBitfiApiApr();
50574
50588
  const perChain = await Promise.all(
50575
50589
  BFBTC_DEPLOYMENTS.map(
50576
- ({ chain, address }) => readBfbtc(chain, address, clock).catch(() => ({}))
50590
+ ({ chain, address }) => readBfbtc(chain, address, clock, frozenFallbackApr).catch(() => ({}))
50577
50591
  )
50578
50592
  );
50579
50593
  const out = { ...aprs };