@1delta/margin-fetcher 0.0.228 → 0.0.229
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 +120 -53
- package/dist/index.js.map +1 -1
- package/dist/lending/public-data/fetchLenderAll.d.ts.map +1 -1
- package/dist/lending/public-data/silo-v2/fetchPublic.d.ts +12 -0
- package/dist/lending/public-data/silo-v2/fetchPublic.d.ts.map +1 -1
- package/dist/lending/public-data/silo-v3/convertPublic.d.ts +0 -9
- package/dist/lending/public-data/silo-v3/convertPublic.d.ts.map +1 -1
- package/dist/lending/public-data/silo-v3/publicCallParse.d.ts +0 -7
- package/dist/lending/public-data/silo-v3/publicCallParse.d.ts.map +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/package.json +4 -4
package/dist/index.js
CHANGED
|
@@ -7594,6 +7594,10 @@ var getLendersForChain = (c) => {
|
|
|
7594
7594
|
for (const market of siloChainPairs) {
|
|
7595
7595
|
lenders.push(siloV2LenderKey(market.siloConfig));
|
|
7596
7596
|
}
|
|
7597
|
+
const siloV3ChainPairs = siloMarketsV3()?.[c] ?? [];
|
|
7598
|
+
for (const market of siloV3ChainPairs) {
|
|
7599
|
+
lenders.push(siloV3LenderKey(market.siloConfig));
|
|
7600
|
+
}
|
|
7597
7601
|
const v4ChainSpokes = aaveV4Spokes()?.[c] ?? {};
|
|
7598
7602
|
for (const spokeAddr of Object.keys(v4ChainSpokes)) {
|
|
7599
7603
|
lenders.push(aaveV4SpokeLenderKey(spokeAddr));
|
|
@@ -18883,6 +18887,7 @@ function buildSiloV3LenderReserveCall(_chainId, lender) {
|
|
|
18883
18887
|
}
|
|
18884
18888
|
|
|
18885
18889
|
// src/lending/public-data/silo-v3/publicCallParse.ts
|
|
18890
|
+
var ZERO_ADDRESS = "0x0000000000000000000000000000000000000000";
|
|
18886
18891
|
var getSiloV3ReservesDataConverter = (lender, chainId, prices, additionalYields, tokenList = {}) => {
|
|
18887
18892
|
const market = getSiloV3MarketEntry(chainId, lender);
|
|
18888
18893
|
if (!market) return [() => void 0, 0];
|
|
@@ -18976,8 +18981,8 @@ var getSiloV3ReservesDataConverter = (lender, chainId, prices, additionalYields,
|
|
|
18976
18981
|
silo: self.silo,
|
|
18977
18982
|
counterpartySilo: other.silo,
|
|
18978
18983
|
siloConfig: market.siloConfig,
|
|
18979
|
-
oracle: self.solvencyOracle,
|
|
18980
|
-
irm: self.interestRateModel,
|
|
18984
|
+
oracle: self.solvencyOracle || ZERO_ADDRESS,
|
|
18985
|
+
irm: self.interestRateModel || ZERO_ADDRESS,
|
|
18981
18986
|
shareTokens: {
|
|
18982
18987
|
collateral: self.collateralShareToken,
|
|
18983
18988
|
protected: self.protectedShareToken,
|
|
@@ -19308,6 +19313,61 @@ query GetSilos {
|
|
|
19308
19313
|
}
|
|
19309
19314
|
}
|
|
19310
19315
|
`;
|
|
19316
|
+
var liteQuery = (chainId, limit) => `
|
|
19317
|
+
query GetSilosLite {
|
|
19318
|
+
silos(where: {chainId_in: [${chainId}]}, limit: ${limit}) {
|
|
19319
|
+
items {
|
|
19320
|
+
configAddress
|
|
19321
|
+
protocol { protocolVersion }
|
|
19322
|
+
market1 {
|
|
19323
|
+
index
|
|
19324
|
+
inputTokenId
|
|
19325
|
+
supply
|
|
19326
|
+
borrowed
|
|
19327
|
+
supplyUsd
|
|
19328
|
+
borrowedUsd
|
|
19329
|
+
solvencyOracleAddress
|
|
19330
|
+
solvencyOracle { quote quoteTokenId }
|
|
19331
|
+
}
|
|
19332
|
+
market2 {
|
|
19333
|
+
index
|
|
19334
|
+
inputTokenId
|
|
19335
|
+
supply
|
|
19336
|
+
borrowed
|
|
19337
|
+
supplyUsd
|
|
19338
|
+
borrowedUsd
|
|
19339
|
+
solvencyOracleAddress
|
|
19340
|
+
solvencyOracle { quote quoteTokenId }
|
|
19341
|
+
}
|
|
19342
|
+
}
|
|
19343
|
+
}
|
|
19344
|
+
}
|
|
19345
|
+
`;
|
|
19346
|
+
async function fetchSiloMarketsLite(chainId, options) {
|
|
19347
|
+
if (!SILO_API_SUPPORTED_CHAIN_IDS.has(chainId)) return [];
|
|
19348
|
+
const limit = options?.limit ?? 500;
|
|
19349
|
+
const response = await fetch(BASE_URL2, {
|
|
19350
|
+
method: "POST",
|
|
19351
|
+
headers: { "Content-Type": "application/json" },
|
|
19352
|
+
body: JSON.stringify({ query: liteQuery(chainId, limit) })
|
|
19353
|
+
});
|
|
19354
|
+
if (!response.ok) {
|
|
19355
|
+
throw new Error(
|
|
19356
|
+
`[silo-api] Network error: ${response.status} - ${response.statusText}`
|
|
19357
|
+
);
|
|
19358
|
+
}
|
|
19359
|
+
const payload = await response.json();
|
|
19360
|
+
if (payload?.errors?.length) {
|
|
19361
|
+
throw new Error(
|
|
19362
|
+
`[silo-api] GraphQL error: ${payload.errors.map((e) => e?.message).join("; ")}`
|
|
19363
|
+
);
|
|
19364
|
+
}
|
|
19365
|
+
const items = payload?.data?.silos?.items ?? [];
|
|
19366
|
+
if (!options?.protocolVersion) return items;
|
|
19367
|
+
return items.filter(
|
|
19368
|
+
(s) => s.protocol?.protocolVersion === options.protocolVersion
|
|
19369
|
+
);
|
|
19370
|
+
}
|
|
19311
19371
|
async function fetchSiloMarkets(chainId, options) {
|
|
19312
19372
|
if (!SILO_API_SUPPORTED_CHAIN_IDS.has(chainId)) return [];
|
|
19313
19373
|
const limit = options?.limit ?? 500;
|
|
@@ -19474,6 +19534,7 @@ function safeLtvOrFee(api, field5, fallback) {
|
|
|
19474
19534
|
}
|
|
19475
19535
|
|
|
19476
19536
|
// src/lending/public-data/silo-v3/convertPublic.ts
|
|
19537
|
+
var ZERO_ADDRESS2 = "0x0000000000000000000000000000000000000000";
|
|
19477
19538
|
function convertSiloV3MarketsToPublicResponse(apiItems, chainId, prices, additionalYields = {
|
|
19478
19539
|
intrinsicYields: {},
|
|
19479
19540
|
lenderRewards: {},
|
|
@@ -19571,8 +19632,8 @@ function convertSiloV3MarketsToPublicResponse(apiItems, chainId, prices, additio
|
|
|
19571
19632
|
silo: self.silo.toLowerCase(),
|
|
19572
19633
|
counterpartySilo: other.silo.toLowerCase(),
|
|
19573
19634
|
siloConfig: registryEntry.siloConfig.toLowerCase(),
|
|
19574
|
-
oracle: (api.solvencyOracleAddress
|
|
19575
|
-
irm: (api.interestRateModelId
|
|
19635
|
+
oracle: (api.solvencyOracleAddress || self.solvencyOracle || ZERO_ADDRESS2).toLowerCase(),
|
|
19636
|
+
irm: (api.interestRateModelId || self.interestRateModel || ZERO_ADDRESS2).toLowerCase(),
|
|
19576
19637
|
shareTokens: {
|
|
19577
19638
|
collateral: self.collateralShareToken,
|
|
19578
19639
|
protected: self.protectedShareToken,
|
|
@@ -19777,40 +19838,46 @@ var getLenderPublicDataAll = async (chainId, lenders, prices, additionalYields,
|
|
|
19777
19838
|
const lendersApi = lenders.filter(
|
|
19778
19839
|
(l) => lenderApiOnly(l, chainId) || lenderApiWithOnChainFallback(l, chainId)
|
|
19779
19840
|
);
|
|
19780
|
-
|
|
19781
|
-
|
|
19782
|
-
|
|
19783
|
-
|
|
19784
|
-
|
|
19785
|
-
|
|
19786
|
-
|
|
19787
|
-
|
|
19788
|
-
|
|
19789
|
-
|
|
19790
|
-
|
|
19791
|
-
|
|
19792
|
-
|
|
19793
|
-
|
|
19794
|
-
|
|
19795
|
-
|
|
19796
|
-
|
|
19797
|
-
const [onChainResult, apiResult] = await Promise.allSettled([
|
|
19798
|
-
onChain,
|
|
19799
|
-
api
|
|
19800
|
-
]);
|
|
19801
|
-
const onChainRes = onChainResult.status === "fulfilled" ? onChainResult.value : {};
|
|
19802
|
-
const apiRes = apiResult.status === "fulfilled" ? apiResult.value : {};
|
|
19803
|
-
if (onChainResult.status === "rejected") {
|
|
19804
|
-
console.warn(
|
|
19805
|
-
`[lending] on-chain fetch failed for chain ${chainId}:`,
|
|
19806
|
-
onChainResult.reason?.message ?? onChainResult.reason
|
|
19807
|
-
);
|
|
19841
|
+
let apiRes = {};
|
|
19842
|
+
if (lendersApi.length > 0) {
|
|
19843
|
+
try {
|
|
19844
|
+
apiRes = await getLenderPublicDataViaApi(
|
|
19845
|
+
chainId,
|
|
19846
|
+
lendersApi,
|
|
19847
|
+
prices,
|
|
19848
|
+
additionalYields,
|
|
19849
|
+
tokenList,
|
|
19850
|
+
includeUnlistedMorphoMarkets
|
|
19851
|
+
);
|
|
19852
|
+
} catch (e) {
|
|
19853
|
+
console.warn(
|
|
19854
|
+
`[lending] API fetch failed for chain ${chainId}:`,
|
|
19855
|
+
e?.message ?? e
|
|
19856
|
+
);
|
|
19857
|
+
}
|
|
19808
19858
|
}
|
|
19809
|
-
|
|
19810
|
-
|
|
19811
|
-
|
|
19812
|
-
|
|
19813
|
-
|
|
19859
|
+
const lendersOnChain = lenders.filter((l) => {
|
|
19860
|
+
if (lenderApiOnly(l, chainId)) return false;
|
|
19861
|
+
if (lenderApiWithOnChainFallback(l, chainId) && apiRes[l]) return false;
|
|
19862
|
+
return true;
|
|
19863
|
+
});
|
|
19864
|
+
let onChainRes = {};
|
|
19865
|
+
if (lendersOnChain.length > 0) {
|
|
19866
|
+
try {
|
|
19867
|
+
onChainRes = await getLenderPublicData(
|
|
19868
|
+
chainId,
|
|
19869
|
+
lendersOnChain,
|
|
19870
|
+
prices,
|
|
19871
|
+
additionalYields,
|
|
19872
|
+
multicallRetry,
|
|
19873
|
+
tokenList
|
|
19874
|
+
);
|
|
19875
|
+
} catch (e) {
|
|
19876
|
+
console.warn(
|
|
19877
|
+
`[lending] on-chain fetch failed for chain ${chainId}:`,
|
|
19878
|
+
e?.message ?? e
|
|
19879
|
+
);
|
|
19880
|
+
}
|
|
19814
19881
|
}
|
|
19815
19882
|
return { ...onChainRes, ...apiRes };
|
|
19816
19883
|
};
|
|
@@ -30462,7 +30529,7 @@ var SiloOracleAbi = [
|
|
|
30462
30529
|
type: "function"
|
|
30463
30530
|
}
|
|
30464
30531
|
];
|
|
30465
|
-
var
|
|
30532
|
+
var ZERO_ADDRESS3 = "0x0000000000000000000000000000000000000000";
|
|
30466
30533
|
function lookupUSD(context, asset) {
|
|
30467
30534
|
const lc = asset.toLowerCase();
|
|
30468
30535
|
const groupKey = context.tokenList?.[lc]?.assetGroup ?? `${context.chainId}-${lc}`;
|
|
@@ -30474,7 +30541,7 @@ function getSiloV2Calls(chainId) {
|
|
|
30474
30541
|
const tokensWithRealOracle = /* @__PURE__ */ new Set();
|
|
30475
30542
|
for (const market of allMarkets) {
|
|
30476
30543
|
for (const half of [market.silo0, market.silo1]) {
|
|
30477
|
-
if (half.solvencyOracle && half.solvencyOracle !==
|
|
30544
|
+
if (half.solvencyOracle && half.solvencyOracle !== ZERO_ADDRESS3) {
|
|
30478
30545
|
tokensWithRealOracle.add(half.token.toLowerCase());
|
|
30479
30546
|
}
|
|
30480
30547
|
}
|
|
@@ -30487,7 +30554,7 @@ function getSiloV2Calls(chainId) {
|
|
|
30487
30554
|
const lenderKey = siloV2LenderKey(market.siloConfig);
|
|
30488
30555
|
const halves = [market.silo0, market.silo1];
|
|
30489
30556
|
const isStatic = halves.map(
|
|
30490
|
-
(h) => !h.solvencyOracle || h.solvencyOracle ===
|
|
30557
|
+
(h) => !h.solvencyOracle || h.solvencyOracle === ZERO_ADDRESS3
|
|
30491
30558
|
);
|
|
30492
30559
|
if (isStatic[0] && isStatic[1]) {
|
|
30493
30560
|
const t0 = halves[0].token.toLowerCase();
|
|
@@ -30507,7 +30574,7 @@ function getSiloV2Calls(chainId) {
|
|
|
30507
30574
|
decimals: half.decimals,
|
|
30508
30575
|
silo: half.silo.toLowerCase(),
|
|
30509
30576
|
lenderKey,
|
|
30510
|
-
oracle:
|
|
30577
|
+
oracle: ZERO_ADDRESS3,
|
|
30511
30578
|
partnerToken: partnerLc,
|
|
30512
30579
|
isStatic: true
|
|
30513
30580
|
});
|
|
@@ -30635,7 +30702,7 @@ var SiloOracleAbi2 = [
|
|
|
30635
30702
|
type: "function"
|
|
30636
30703
|
}
|
|
30637
30704
|
];
|
|
30638
|
-
var
|
|
30705
|
+
var ZERO_ADDRESS4 = "0x0000000000000000000000000000000000000000";
|
|
30639
30706
|
function lookupUSD2(context, asset) {
|
|
30640
30707
|
const lc = asset.toLowerCase();
|
|
30641
30708
|
const groupKey = context.tokenList?.[lc]?.assetGroup ?? `${context.chainId}-${lc}`;
|
|
@@ -30647,7 +30714,7 @@ function getSiloV3Calls(chainId) {
|
|
|
30647
30714
|
const tokensWithRealOracle = /* @__PURE__ */ new Set();
|
|
30648
30715
|
for (const market of allMarkets) {
|
|
30649
30716
|
for (const half of [market.silo0, market.silo1]) {
|
|
30650
|
-
if (half.solvencyOracle && half.solvencyOracle !==
|
|
30717
|
+
if (half.solvencyOracle && half.solvencyOracle !== ZERO_ADDRESS4) {
|
|
30651
30718
|
tokensWithRealOracle.add(half.token.toLowerCase());
|
|
30652
30719
|
}
|
|
30653
30720
|
}
|
|
@@ -30660,7 +30727,7 @@ function getSiloV3Calls(chainId) {
|
|
|
30660
30727
|
const lenderKey = siloV3LenderKey(market.siloConfig);
|
|
30661
30728
|
const halves = [market.silo0, market.silo1];
|
|
30662
30729
|
const isStatic = halves.map(
|
|
30663
|
-
(h) => !h.solvencyOracle || h.solvencyOracle ===
|
|
30730
|
+
(h) => !h.solvencyOracle || h.solvencyOracle === ZERO_ADDRESS4
|
|
30664
30731
|
);
|
|
30665
30732
|
if (isStatic[0] && isStatic[1]) {
|
|
30666
30733
|
const t0 = halves[0].token.toLowerCase();
|
|
@@ -30680,7 +30747,7 @@ function getSiloV3Calls(chainId) {
|
|
|
30680
30747
|
decimals: half.decimals,
|
|
30681
30748
|
silo: half.silo.toLowerCase(),
|
|
30682
30749
|
lenderKey,
|
|
30683
|
-
oracle:
|
|
30750
|
+
oracle: ZERO_ADDRESS4,
|
|
30684
30751
|
partnerToken: partnerLc,
|
|
30685
30752
|
isStatic: true
|
|
30686
30753
|
});
|
|
@@ -30792,7 +30859,7 @@ var siloV3Fetcher = {
|
|
|
30792
30859
|
async function fetchSiloV2GraphQLMarkets(chainId) {
|
|
30793
30860
|
if (!SILO_API_SUPPORTED_CHAIN_IDS.has(chainId)) return null;
|
|
30794
30861
|
try {
|
|
30795
|
-
const items = await
|
|
30862
|
+
const items = await fetchSiloMarketsLite(chainId, { protocolVersion: "v2" });
|
|
30796
30863
|
return items;
|
|
30797
30864
|
} catch (e) {
|
|
30798
30865
|
console.warn(
|
|
@@ -30813,7 +30880,7 @@ function lookupUSD3(context, asset) {
|
|
|
30813
30880
|
return context.usdPrices[groupKey] ?? context.usdPrices[lc] ?? 0;
|
|
30814
30881
|
}
|
|
30815
30882
|
function parseSiloV2GraphQLResults(items, context) {
|
|
30816
|
-
const
|
|
30883
|
+
const ZERO_ADDRESS5 = "0x0000000000000000000000000000000000000000";
|
|
30817
30884
|
const out = [];
|
|
30818
30885
|
const seen = /* @__PURE__ */ new Set();
|
|
30819
30886
|
for (const item of items) {
|
|
@@ -30836,8 +30903,8 @@ function parseSiloV2GraphQLResults(items, context) {
|
|
|
30836
30903
|
const partnerTokenLc = other.token.toLowerCase();
|
|
30837
30904
|
const dedupKey = `${lenderKey}:${tokenLc}`;
|
|
30838
30905
|
if (seen.has(dedupKey)) continue;
|
|
30839
|
-
const oracleAddr = (side.solvencyOracleAddress ?? side.solvencyOracle?.id ?? self.solvencyOracle ??
|
|
30840
|
-
const isStatic = !oracleAddr || oracleAddr ===
|
|
30906
|
+
const oracleAddr = (side.solvencyOracleAddress ?? side.solvencyOracle?.id ?? self.solvencyOracle ?? ZERO_ADDRESS5).toLowerCase();
|
|
30907
|
+
const isStatic = !oracleAddr || oracleAddr === ZERO_ADDRESS5;
|
|
30841
30908
|
const siloAddrLc = self.silo.toLowerCase();
|
|
30842
30909
|
try {
|
|
30843
30910
|
let priceUSD = 0;
|
|
@@ -30891,7 +30958,7 @@ function parseSiloV2GraphQLResults(items, context) {
|
|
|
30891
30958
|
async function fetchSiloV3GraphQLMarkets(chainId) {
|
|
30892
30959
|
if (!SILO_API_SUPPORTED_CHAIN_IDS.has(chainId)) return null;
|
|
30893
30960
|
try {
|
|
30894
|
-
const items = await
|
|
30961
|
+
const items = await fetchSiloMarketsLite(chainId, { protocolVersion: "v3" });
|
|
30895
30962
|
return items;
|
|
30896
30963
|
} catch (e) {
|
|
30897
30964
|
console.warn(
|
|
@@ -30912,7 +30979,7 @@ function lookupUSD4(context, asset) {
|
|
|
30912
30979
|
return context.usdPrices[groupKey] ?? context.usdPrices[lc] ?? 0;
|
|
30913
30980
|
}
|
|
30914
30981
|
function parseSiloV3GraphQLResults(items, context) {
|
|
30915
|
-
const
|
|
30982
|
+
const ZERO_ADDRESS5 = "0x0000000000000000000000000000000000000000";
|
|
30916
30983
|
const out = [];
|
|
30917
30984
|
const seen = /* @__PURE__ */ new Set();
|
|
30918
30985
|
for (const item of items) {
|
|
@@ -30935,8 +31002,8 @@ function parseSiloV3GraphQLResults(items, context) {
|
|
|
30935
31002
|
const partnerTokenLc = other.token.toLowerCase();
|
|
30936
31003
|
const dedupKey = `${lenderKey}:${tokenLc}`;
|
|
30937
31004
|
if (seen.has(dedupKey)) continue;
|
|
30938
|
-
const oracleAddr = (side.solvencyOracleAddress ?? side.solvencyOracle?.id ?? self.solvencyOracle ??
|
|
30939
|
-
const isStatic = !oracleAddr || oracleAddr ===
|
|
31005
|
+
const oracleAddr = (side.solvencyOracleAddress ?? side.solvencyOracle?.id ?? self.solvencyOracle ?? ZERO_ADDRESS5).toLowerCase();
|
|
31006
|
+
const isStatic = !oracleAddr || oracleAddr === ZERO_ADDRESS5;
|
|
30940
31007
|
const siloAddrLc = self.silo.toLowerCase();
|
|
30941
31008
|
try {
|
|
30942
31009
|
let priceUSD = 0;
|