@1delta/margin-fetcher 0.0.305 → 0.0.306
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
|
@@ -38153,7 +38153,7 @@ function computeWeightedSupplyApy(strategies, totalAssetsRaw, feePercent, evkInd
|
|
|
38153
38153
|
}
|
|
38154
38154
|
if (weightedRay === ZERO) return 0;
|
|
38155
38155
|
const apyRayPerAsset = weightedRay / totalAssets;
|
|
38156
|
-
const grossPercent = Number(apyRayPerAsset) / RAY_TO_PERCENT3;
|
|
38156
|
+
const grossPercent = apyToAprPercent(Number(apyRayPerAsset) / RAY_TO_PERCENT3);
|
|
38157
38157
|
const netPercent = grossPercent * (1 - feePercent / 100);
|
|
38158
38158
|
return Number.isFinite(netPercent) ? netPercent : 0;
|
|
38159
38159
|
}
|
|
@@ -38327,18 +38327,6 @@ async function fetchEulerEarnVaultsFromSubgraph(chainId, prices = {}, tokenList
|
|
|
38327
38327
|
var EULER_DATA_API_BASE2 = "https://v3.euler.finance/v3";
|
|
38328
38328
|
var API_TIMEOUT_MS = 1e4;
|
|
38329
38329
|
var DETAIL_CONCURRENCY = 8;
|
|
38330
|
-
var BLOCK_TIME_SEC = {
|
|
38331
|
-
"1": 12,
|
|
38332
|
-
"56": 0.75,
|
|
38333
|
-
"130": 1,
|
|
38334
|
-
"146": 0.5,
|
|
38335
|
-
"8453": 2,
|
|
38336
|
-
"1923": 2,
|
|
38337
|
-
"42161": 0.25,
|
|
38338
|
-
"43114": 2
|
|
38339
|
-
};
|
|
38340
|
-
var DEFAULT_BLOCK_TIME_SEC = 2;
|
|
38341
|
-
var MAX_LAG_SECONDS = 30 * 60;
|
|
38342
38330
|
function safeBigInt2(v) {
|
|
38343
38331
|
if (v == null || v === "") return 0n;
|
|
38344
38332
|
try {
|
|
@@ -38366,37 +38354,6 @@ async function getJson(url) {
|
|
|
38366
38354
|
clearTimeout(timer);
|
|
38367
38355
|
}
|
|
38368
38356
|
}
|
|
38369
|
-
async function isEulerEarnSubgraphStale(chainId, subgraphUrl) {
|
|
38370
|
-
const [subHead, chainHead] = await Promise.all([
|
|
38371
|
-
fetchSubgraphHead(subgraphUrl),
|
|
38372
|
-
getEvmClientUniversal({ chain: chainId, rpcId: 0 }).getBlockNumber().then((b) => Number(b)).catch(() => null)
|
|
38373
|
-
]);
|
|
38374
|
-
if (subHead == null || chainHead == null) return true;
|
|
38375
|
-
const lagBlocks = chainHead - subHead;
|
|
38376
|
-
if (lagBlocks <= 0) return false;
|
|
38377
|
-
const lagSeconds = lagBlocks * (BLOCK_TIME_SEC[chainId] ?? DEFAULT_BLOCK_TIME_SEC);
|
|
38378
|
-
return lagSeconds > MAX_LAG_SECONDS;
|
|
38379
|
-
}
|
|
38380
|
-
async function fetchSubgraphHead(subgraphUrl) {
|
|
38381
|
-
const controller = new AbortController();
|
|
38382
|
-
const timer = setTimeout(() => controller.abort(), API_TIMEOUT_MS);
|
|
38383
|
-
try {
|
|
38384
|
-
const res = await fetch(subgraphUrl, {
|
|
38385
|
-
method: "POST",
|
|
38386
|
-
headers: { "Content-Type": "application/json" },
|
|
38387
|
-
body: JSON.stringify({ query: "{ _meta { block { number } } }" }),
|
|
38388
|
-
signal: controller.signal
|
|
38389
|
-
});
|
|
38390
|
-
if (!res.ok) return null;
|
|
38391
|
-
const json = await res.json();
|
|
38392
|
-
const n = json?.data?._meta?.block?.number;
|
|
38393
|
-
return typeof n === "number" ? n : null;
|
|
38394
|
-
} catch {
|
|
38395
|
-
return null;
|
|
38396
|
-
} finally {
|
|
38397
|
-
clearTimeout(timer);
|
|
38398
|
-
}
|
|
38399
|
-
}
|
|
38400
38357
|
function mapApiDetail(d, chainId, prices, tokenList) {
|
|
38401
38358
|
const address = (d.address ?? "").toLowerCase();
|
|
38402
38359
|
const underlying = (d.asset?.address ?? "").toLowerCase();
|
|
@@ -38498,20 +38455,21 @@ async function fetchEulerEarnVaultsFromApi(chainId, prices = {}, tokenList = {})
|
|
|
38498
38455
|
// src/vaults/euler-earn/fetchPublic.ts
|
|
38499
38456
|
var isNonEmpty = (v) => !!v && Object.keys(v).length > 0;
|
|
38500
38457
|
var fetchEulerEarnVaults = async (chainId, prices = {}, tokenList = {}, multicallRetry) => {
|
|
38501
|
-
const
|
|
38502
|
-
|
|
38503
|
-
|
|
38504
|
-
|
|
38505
|
-
|
|
38506
|
-
isEulerEarnSubgraphStale(chainId, subgraphUrl).catch(() => false),
|
|
38507
|
-
fetchEulerEarnVaultsFromSubgraph(chainId, prices, tokenList, multicallRetry).then((r) => ({ ok: true, data: r })).catch(() => ({ ok: false, data: void 0 }))
|
|
38508
|
-
]);
|
|
38509
|
-
if (!stale && subgraph.ok && isNonEmpty(subgraph.data)) {
|
|
38510
|
-
return subgraph.data;
|
|
38511
|
-
}
|
|
38512
|
-
const fromApi = await fetchEulerEarnVaultsFromApi(chainId, prices, tokenList);
|
|
38458
|
+
const fromApi = await fetchEulerEarnVaultsFromApi(
|
|
38459
|
+
chainId,
|
|
38460
|
+
prices,
|
|
38461
|
+
tokenList
|
|
38462
|
+
).catch(() => void 0);
|
|
38513
38463
|
if (isNonEmpty(fromApi)) return fromApi;
|
|
38514
|
-
|
|
38464
|
+
const subgraphUrl = getEulerEarnSubgraphUrl(chainId);
|
|
38465
|
+
if (!subgraphUrl) return fromApi ?? {};
|
|
38466
|
+
const fromSubgraph = await fetchEulerEarnVaultsFromSubgraph(
|
|
38467
|
+
chainId,
|
|
38468
|
+
prices,
|
|
38469
|
+
tokenList,
|
|
38470
|
+
multicallRetry
|
|
38471
|
+
).catch(() => void 0);
|
|
38472
|
+
return isNonEmpty(fromSubgraph) ? fromSubgraph : fromApi ?? {};
|
|
38515
38473
|
};
|
|
38516
38474
|
var CHAIN_ID4 = "1";
|
|
38517
38475
|
var SWBTC = "0x8db2350d78abc13f5673a411d4700bcf87864dde";
|