@1delta/margin-fetcher 0.0.238 → 0.0.240
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 +181 -17
- package/dist/index.js.map +1 -1
- package/dist/lending/user-data/abis.d.ts.map +1 -1
- package/dist/lending/user-data/fetch-balances/parse.d.ts.map +1 -1
- package/dist/lending/user-data/fetch-balances/prepare.d.ts.map +1 -1
- package/dist/lending/user-data/fluid/index.d.ts +3 -0
- package/dist/lending/user-data/fluid/index.d.ts.map +1 -0
- package/dist/lending/user-data/fluid/userCallBuild.d.ts +21 -0
- package/dist/lending/user-data/fluid/userCallBuild.d.ts.map +1 -0
- package/dist/lending/user-data/fluid/userCallParse.d.ts +19 -0
- package/dist/lending/user-data/fluid/userCallParse.d.ts.map +1 -0
- package/dist/prices/oracle-prices/fetchers/fluid.d.ts +388 -0
- package/dist/prices/oracle-prices/fetchers/fluid.d.ts.map +1 -1
- package/dist/yields/intrinsic/fetchers/lido.d.ts.map +1 -1
- package/package.json +4 -4
package/dist/index.js
CHANGED
|
@@ -18867,7 +18867,7 @@ var getSiloV2ReservesDataConverter = (lender, chainId, prices, additionalYields,
|
|
|
18867
18867
|
{ self: market.silo0, other: market.silo1 },
|
|
18868
18868
|
{ self: market.silo1, other: market.silo0 }
|
|
18869
18869
|
];
|
|
18870
|
-
const
|
|
18870
|
+
const toBigInt8 = (v) => {
|
|
18871
18871
|
if (v === void 0 || v === null || v === "0x") return 0n;
|
|
18872
18872
|
if (typeof v === "bigint") return v;
|
|
18873
18873
|
try {
|
|
@@ -18879,8 +18879,8 @@ var getSiloV2ReservesDataConverter = (lender, chainId, prices, additionalYields,
|
|
|
18879
18879
|
for (let s = 0; s < 2; s++) {
|
|
18880
18880
|
const { self, other } = sides[s];
|
|
18881
18881
|
const slot = s * SILO_V2_CALLS_PER_SIDE;
|
|
18882
|
-
const totalAssetsRaw =
|
|
18883
|
-
const debtAssetsRaw =
|
|
18882
|
+
const totalAssetsRaw = toBigInt8(data[slot]);
|
|
18883
|
+
const debtAssetsRaw = toBigInt8(data[slot + 1]);
|
|
18884
18884
|
const irmConfigRaw = data[slot + 2];
|
|
18885
18885
|
const decimals = self.decimals;
|
|
18886
18886
|
const totalDeposits = Number(formatUnits(totalAssetsRaw, decimals));
|
|
@@ -19035,7 +19035,7 @@ var getSiloV3ReservesDataConverter = (lender, chainId, prices, additionalYields,
|
|
|
19035
19035
|
{ self: market.silo0, other: market.silo1 },
|
|
19036
19036
|
{ self: market.silo1, other: market.silo0 }
|
|
19037
19037
|
];
|
|
19038
|
-
const
|
|
19038
|
+
const toBigInt8 = (v) => {
|
|
19039
19039
|
if (v === void 0 || v === null || v === "0x") return 0n;
|
|
19040
19040
|
if (typeof v === "bigint") return v;
|
|
19041
19041
|
try {
|
|
@@ -19047,8 +19047,8 @@ var getSiloV3ReservesDataConverter = (lender, chainId, prices, additionalYields,
|
|
|
19047
19047
|
for (let s = 0; s < 2; s++) {
|
|
19048
19048
|
const { self, other } = sides[s];
|
|
19049
19049
|
const slot = s * SILO_V3_CALLS_PER_SIDE;
|
|
19050
|
-
const totalAssetsRaw =
|
|
19051
|
-
const debtAssetsRaw =
|
|
19050
|
+
const totalAssetsRaw = toBigInt8(data[slot]);
|
|
19051
|
+
const debtAssetsRaw = toBigInt8(data[slot + 1]);
|
|
19052
19052
|
const irmConfigRaw = data[slot + 2];
|
|
19053
19053
|
const decimals = self.decimals;
|
|
19054
19054
|
const totalDeposits = Number(formatUnits(totalAssetsRaw, decimals));
|
|
@@ -19215,7 +19215,7 @@ function parseVault(vault, chainId, prices, additionalYields, tokenList) {
|
|
|
19215
19215
|
const collateralAddress = normalizeUnderlying(rawCollateral);
|
|
19216
19216
|
const loanAddress = normalizeUnderlying(rawLoan);
|
|
19217
19217
|
const vaultId = Number(constants.vaultId ?? 0);
|
|
19218
|
-
const lender = `FLUID_${vaultId}`;
|
|
19218
|
+
const lender = `FLUID_${chainId}_${vaultId}`;
|
|
19219
19219
|
const collateralMeta = tokenList[collateralAddress];
|
|
19220
19220
|
const loanMeta = tokenList[loanAddress];
|
|
19221
19221
|
const colDecimals = Number(
|
|
@@ -20721,6 +20721,20 @@ var buildSiloV3UserCall = (chainId, lender, account) => {
|
|
|
20721
20721
|
return calls;
|
|
20722
20722
|
};
|
|
20723
20723
|
|
|
20724
|
+
// src/lending/user-data/fluid/userCallBuild.ts
|
|
20725
|
+
var FLUID_USER_CALL_COUNT = 1;
|
|
20726
|
+
var buildFluidUserCall = (chainId, _lender, account) => {
|
|
20727
|
+
const resolvers = fluidResolvers()?.[chainId];
|
|
20728
|
+
if (!resolvers) return [];
|
|
20729
|
+
return [
|
|
20730
|
+
{
|
|
20731
|
+
address: resolvers.vaultResolver,
|
|
20732
|
+
name: "positionsByUser",
|
|
20733
|
+
params: [account]
|
|
20734
|
+
}
|
|
20735
|
+
];
|
|
20736
|
+
};
|
|
20737
|
+
|
|
20724
20738
|
// src/lending/user-data/fetch-balances/prepare.ts
|
|
20725
20739
|
async function buildUserCall(chainId, lender, account, params) {
|
|
20726
20740
|
if (isAaveV4Type(lender)) return buildAaveV4UserCall(chainId, lender, account);
|
|
@@ -20739,6 +20753,8 @@ async function buildUserCall(chainId, lender, account, params) {
|
|
|
20739
20753
|
return buildSiloV3UserCall(chainId, lender, account);
|
|
20740
20754
|
if (isCompoundV2Type(lender))
|
|
20741
20755
|
return buildCompoundV2UserCall(chainId, lender, account);
|
|
20756
|
+
if (isFluid(lender))
|
|
20757
|
+
return buildFluidUserCall(chainId, lender, account);
|
|
20742
20758
|
return [];
|
|
20743
20759
|
}
|
|
20744
20760
|
function organizeUserQueries(queries) {
|
|
@@ -22466,6 +22482,141 @@ function toBigInt6(v) {
|
|
|
22466
22482
|
return 0n;
|
|
22467
22483
|
}
|
|
22468
22484
|
}
|
|
22485
|
+
var FLUID_EEE_LOWER2 = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee";
|
|
22486
|
+
var normalizeUnderlying2 = (addr) => addr === FLUID_EEE_LOWER2 ? zeroAddress : addr;
|
|
22487
|
+
function toBigInt7(v) {
|
|
22488
|
+
if (v === void 0 || v === null || v === "0x") return 0n;
|
|
22489
|
+
if (typeof v === "bigint") return v;
|
|
22490
|
+
try {
|
|
22491
|
+
return BigInt(v);
|
|
22492
|
+
} catch {
|
|
22493
|
+
return 0n;
|
|
22494
|
+
}
|
|
22495
|
+
}
|
|
22496
|
+
var getFluidUserDataConverter = (lender, chainId, account, meta) => {
|
|
22497
|
+
return [
|
|
22498
|
+
(data) => {
|
|
22499
|
+
if (!data || data.length !== FLUID_USER_CALL_COUNT) return void 0;
|
|
22500
|
+
const result = data[0];
|
|
22501
|
+
if (!result) return void 0;
|
|
22502
|
+
const positions = result[0];
|
|
22503
|
+
const vaults = result[1];
|
|
22504
|
+
if (!Array.isArray(positions) || !Array.isArray(vaults) || positions.length === 0)
|
|
22505
|
+
return void 0;
|
|
22506
|
+
const perVault = /* @__PURE__ */ new Map();
|
|
22507
|
+
for (let i = 0; i < positions.length; i++) {
|
|
22508
|
+
const pos = positions[i];
|
|
22509
|
+
const vault = vaults[i];
|
|
22510
|
+
if (!vault?.constantVariables) continue;
|
|
22511
|
+
if (vault.isSmartCol || vault.isSmartDebt) continue;
|
|
22512
|
+
if (pos.isLiquidated) continue;
|
|
22513
|
+
const vaultId = Number(vault.constantVariables.vaultId ?? 0);
|
|
22514
|
+
if (!perVault.has(vaultId)) perVault.set(vaultId, []);
|
|
22515
|
+
perVault.get(vaultId).push({ pos, vault });
|
|
22516
|
+
}
|
|
22517
|
+
if (perVault.size === 0) return void 0;
|
|
22518
|
+
const out = {};
|
|
22519
|
+
for (const [vaultId, nfts] of perVault) {
|
|
22520
|
+
const lenderKey = `${Lender.FLUID}_${chainId}_${vaultId}`;
|
|
22521
|
+
const metaMap = meta?.[lenderKey];
|
|
22522
|
+
if (!metaMap) continue;
|
|
22523
|
+
const constants = nfts[0].vault.constantVariables;
|
|
22524
|
+
const rawCol = (constants.supplyToken?.token0 ?? constants.supplyToken ?? "").toString().toLowerCase();
|
|
22525
|
+
const rawLoan = (constants.borrowToken?.token0 ?? constants.borrowToken ?? "").toString().toLowerCase();
|
|
22526
|
+
if (!rawCol || !rawLoan) continue;
|
|
22527
|
+
const collateral = normalizeUnderlying2(rawCol);
|
|
22528
|
+
const loan = normalizeUnderlying2(rawLoan);
|
|
22529
|
+
const colMarketUid = createMarketUid(chainId, lenderKey, collateral);
|
|
22530
|
+
const loanMarketUid = createMarketUid(chainId, lenderKey, loan);
|
|
22531
|
+
const colMeta = metaMap[colMarketUid];
|
|
22532
|
+
const loanMeta = metaMap[loanMarketUid];
|
|
22533
|
+
const colDec = colMeta?.asset?.decimals ?? 18;
|
|
22534
|
+
const loanDec = loanMeta?.asset?.decimals ?? 18;
|
|
22535
|
+
const colDisplayPrice = colMeta ? getDisplayPrice(colMeta) : 0;
|
|
22536
|
+
const colOraclePrice = colMeta ? getOraclePrice(colMeta) : 0;
|
|
22537
|
+
const loanDisplayPrice = loanMeta ? getDisplayPrice(loanMeta) : 0;
|
|
22538
|
+
const loanOraclePrice = loanMeta ? getOraclePrice(loanMeta) : 0;
|
|
22539
|
+
const colPriceHist = colMeta?.price?.priceUsd24h ?? colDisplayPrice;
|
|
22540
|
+
const loanPriceHist = loanMeta?.price?.priceUsd24h ?? loanDisplayPrice;
|
|
22541
|
+
const lendingPositions = {};
|
|
22542
|
+
const modes = {};
|
|
22543
|
+
const histData = {};
|
|
22544
|
+
for (const { pos } of nfts) {
|
|
22545
|
+
const nftId = pos.nftId.toString();
|
|
22546
|
+
const supplyRaw = toBigInt7(pos.supply);
|
|
22547
|
+
const borrowRaw = toBigInt7(pos.borrow) + toBigInt7(pos.dustBorrow);
|
|
22548
|
+
if (supplyRaw === 0n && borrowRaw === 0n) continue;
|
|
22549
|
+
const depositsStr = parseRawAmount(
|
|
22550
|
+
supplyRaw.toString(),
|
|
22551
|
+
colDec
|
|
22552
|
+
);
|
|
22553
|
+
const debtStr = parseRawAmount(borrowRaw.toString(), loanDec);
|
|
22554
|
+
const depositsNum = Number(depositsStr);
|
|
22555
|
+
const debtNum = Number(debtStr);
|
|
22556
|
+
const depositsUSD = depositsNum * colDisplayPrice;
|
|
22557
|
+
const debtUSD = debtNum * loanDisplayPrice;
|
|
22558
|
+
const depositsUSDOracle = depositsNum * colOraclePrice;
|
|
22559
|
+
const debtUSDOracle = debtNum * loanOraclePrice;
|
|
22560
|
+
histData[nftId] = {
|
|
22561
|
+
totalDeposits24h: depositsNum * colPriceHist,
|
|
22562
|
+
totalDebt24h: debtNum * loanPriceHist
|
|
22563
|
+
};
|
|
22564
|
+
modes[nftId] = 0;
|
|
22565
|
+
const posData = {};
|
|
22566
|
+
posData[colMarketUid] = {
|
|
22567
|
+
marketUid: colMarketUid,
|
|
22568
|
+
underlying: collateral,
|
|
22569
|
+
deposits: depositsStr,
|
|
22570
|
+
debt: "0",
|
|
22571
|
+
debtStable: "0",
|
|
22572
|
+
depositsUSD,
|
|
22573
|
+
debtUSD: 0,
|
|
22574
|
+
debtStableUSD: 0,
|
|
22575
|
+
depositsUSDOracle,
|
|
22576
|
+
debtUSDOracle: 0,
|
|
22577
|
+
debtStableUSDOracle: 0,
|
|
22578
|
+
stableBorrowRate: "0",
|
|
22579
|
+
collateralEnabled: supplyRaw > 0n,
|
|
22580
|
+
claimableRewards: 0
|
|
22581
|
+
};
|
|
22582
|
+
posData[loanMarketUid] = {
|
|
22583
|
+
marketUid: loanMarketUid,
|
|
22584
|
+
underlying: loan,
|
|
22585
|
+
deposits: "0",
|
|
22586
|
+
debt: debtStr,
|
|
22587
|
+
debtStable: "0",
|
|
22588
|
+
depositsUSD: 0,
|
|
22589
|
+
debtUSD,
|
|
22590
|
+
debtStableUSD: 0,
|
|
22591
|
+
depositsUSDOracle: 0,
|
|
22592
|
+
debtUSDOracle,
|
|
22593
|
+
debtStableUSDOracle: 0,
|
|
22594
|
+
stableBorrowRate: "0",
|
|
22595
|
+
collateralEnabled: false,
|
|
22596
|
+
claimableRewards: 0
|
|
22597
|
+
};
|
|
22598
|
+
lendingPositions[nftId] = posData;
|
|
22599
|
+
}
|
|
22600
|
+
if (Object.keys(lendingPositions).length === 0) continue;
|
|
22601
|
+
const userData = createMultiAccountTypeUserState(
|
|
22602
|
+
{
|
|
22603
|
+
chainId,
|
|
22604
|
+
account,
|
|
22605
|
+
lendingPositions,
|
|
22606
|
+
modes
|
|
22607
|
+
},
|
|
22608
|
+
metaMap,
|
|
22609
|
+
histData
|
|
22610
|
+
);
|
|
22611
|
+
if (userData && userData.data.length > 0) {
|
|
22612
|
+
out[lenderKey] = userData;
|
|
22613
|
+
}
|
|
22614
|
+
}
|
|
22615
|
+
return Object.keys(out).length > 0 ? out : void 0;
|
|
22616
|
+
},
|
|
22617
|
+
FLUID_USER_CALL_COUNT
|
|
22618
|
+
];
|
|
22619
|
+
};
|
|
22469
22620
|
|
|
22470
22621
|
// src/lending/user-data/fetch-balances/parse.ts
|
|
22471
22622
|
function getUserDataConverter(lender, chainId, account, params, meta) {
|
|
@@ -22505,6 +22656,8 @@ function getUserDataConverter(lender, chainId, account, params, meta) {
|
|
|
22505
22656
|
return getSiloV2UserDataConverter(lender, chainId, account, meta?.[lender]);
|
|
22506
22657
|
if (isSiloV3Type(lender))
|
|
22507
22658
|
return getSiloV3UserDataConverter(lender, chainId, account, meta?.[lender]);
|
|
22659
|
+
if (isFluid(lender))
|
|
22660
|
+
return getFluidUserDataConverter(lender, chainId, account, meta);
|
|
22508
22661
|
return getCompoundV2UserDataConverter(
|
|
22509
22662
|
lender,
|
|
22510
22663
|
chainId,
|
|
@@ -27186,6 +27339,7 @@ var getAbi2 = (lender) => {
|
|
|
27186
27339
|
return [...ComptrollerAbi, ...CompoundV2CollateralToken];
|
|
27187
27340
|
if (isSiloV2Type(lender) || isSiloV3Type(lender))
|
|
27188
27341
|
return [...SiloAbi];
|
|
27342
|
+
if (isFluid(lender)) return [...FluidVaultResolverAbi];
|
|
27189
27343
|
return [];
|
|
27190
27344
|
};
|
|
27191
27345
|
|
|
@@ -28856,6 +29010,7 @@ async function getListsMulti(chainIds) {
|
|
|
28856
29010
|
|
|
28857
29011
|
// src/yields/intrinsic/fetchers/lido.ts
|
|
28858
29012
|
var WSTETH_URL = "https://eth-api.lido.fi/v1/protocol/steth/apr/sma";
|
|
29013
|
+
var DEFILLAMA_LIDO_URL = "https://yields.llama.fi/chart/747c1d2a-c668-4682-b9f9-296708a3dd90";
|
|
28859
29014
|
var tETH = "Treehouse ETH::TETH";
|
|
28860
29015
|
var robustFetchJson = async (url, { timeoutMs = 5e3, attempts = 3 } = {}) => {
|
|
28861
29016
|
let lastErr;
|
|
@@ -28879,11 +29034,20 @@ var robustFetchJson = async (url, { timeoutMs = 5e3, attempts = 3 } = {}) => {
|
|
|
28879
29034
|
}
|
|
28880
29035
|
throw lastErr;
|
|
28881
29036
|
};
|
|
29037
|
+
async function fetchLidoApr() {
|
|
29038
|
+
try {
|
|
29039
|
+
const res = await robustFetchJson(WSTETH_URL);
|
|
29040
|
+
return Number(res.data.aprs.at(-1).apr) * 0.9;
|
|
29041
|
+
} catch {
|
|
29042
|
+
const res = await robustFetchJson(DEFILLAMA_LIDO_URL);
|
|
29043
|
+
const latest = res.data.at(-1);
|
|
29044
|
+
return Number(latest.apyBase) * 0.9;
|
|
29045
|
+
}
|
|
29046
|
+
}
|
|
28882
29047
|
var wstethFetcher = {
|
|
28883
29048
|
label: "WSTETH",
|
|
28884
29049
|
fetch: async () => {
|
|
28885
|
-
const
|
|
28886
|
-
const apr = Number(res.data.aprs.at(-1).apr) * 0.9;
|
|
29050
|
+
const apr = await fetchLidoApr();
|
|
28887
29051
|
return {
|
|
28888
29052
|
WSTETH: apr,
|
|
28889
29053
|
[tETH]: apr
|
|
@@ -31481,8 +31645,8 @@ var siloV3Fetcher = {
|
|
|
31481
31645
|
parse: parseSiloV3Results,
|
|
31482
31646
|
getAbi: getSiloV3Abi
|
|
31483
31647
|
};
|
|
31484
|
-
var
|
|
31485
|
-
var
|
|
31648
|
+
var FLUID_EEE_LOWER3 = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee";
|
|
31649
|
+
var normalizeUnderlying3 = (addr) => addr === FLUID_EEE_LOWER3 ? zeroAddress : addr;
|
|
31486
31650
|
function priceColInDebt(raw, colDec, debtDec) {
|
|
31487
31651
|
return formatMorphoPrice(raw, debtDec, colDec + 9);
|
|
31488
31652
|
}
|
|
@@ -31519,8 +31683,8 @@ function parseFluidResults(data, _meta, context) {
|
|
|
31519
31683
|
const rawCol = (constants.supplyToken?.token0 ?? constants.supplyToken ?? "").toString().toLowerCase();
|
|
31520
31684
|
const rawLoan = (constants.borrowToken?.token0 ?? constants.borrowToken ?? "").toString().toLowerCase();
|
|
31521
31685
|
if (!rawCol || !rawLoan) continue;
|
|
31522
|
-
const collateral =
|
|
31523
|
-
const loan =
|
|
31686
|
+
const collateral = normalizeUnderlying3(rawCol);
|
|
31687
|
+
const loan = normalizeUnderlying3(rawLoan);
|
|
31524
31688
|
const colDec = tokenList?.[collateral]?.decimals ?? 18;
|
|
31525
31689
|
const loanDec = tokenList?.[loan]?.decimals ?? 18;
|
|
31526
31690
|
const rawPrice = configs.oraclePriceOperate?.toString() ?? "0";
|
|
@@ -31528,7 +31692,7 @@ function parseFluidResults(data, _meta, context) {
|
|
|
31528
31692
|
const priceDebtPerCol = priceColInDebt(rawPrice, colDec, loanDec);
|
|
31529
31693
|
if (!Number.isFinite(priceDebtPerCol) || priceDebtPerCol === 0) continue;
|
|
31530
31694
|
const vaultId = Number(constants.vaultId ?? 0);
|
|
31531
|
-
const lenderKey = `${Lender.FLUID}_${vaultId}`;
|
|
31695
|
+
const lenderKey = `${Lender.FLUID}_${chainId}_${vaultId}`;
|
|
31532
31696
|
const loanOracleKey = tokenList?.[loan]?.assetGroup ?? `${chainId}-${loan}`;
|
|
31533
31697
|
const loanUSD = usdPrices[loanOracleKey] ?? usdPrices[loan];
|
|
31534
31698
|
if (!loanUSD) continue;
|
|
@@ -32879,8 +33043,8 @@ var buildFluidFTokensCall = (chainId) => {
|
|
|
32879
33043
|
};
|
|
32880
33044
|
|
|
32881
33045
|
// src/vaults/fluid/publicCallParse.ts
|
|
32882
|
-
var
|
|
32883
|
-
var
|
|
33046
|
+
var FLUID_EEE_LOWER4 = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee";
|
|
33047
|
+
var normalizeUnderlying4 = (addr) => addr === FLUID_EEE_LOWER4 ? zeroAddress : addr;
|
|
32884
33048
|
var FLUID_RATE_SCALE2 = 100;
|
|
32885
33049
|
var scaleFluidRate2 = (raw) => {
|
|
32886
33050
|
if (raw === void 0 || raw === null) return 0;
|
|
@@ -32902,7 +33066,7 @@ function parseFTokens(fTokens, chainId, prices, tokenList) {
|
|
|
32902
33066
|
for (const ft of fTokens) {
|
|
32903
33067
|
const rawAsset = (ft.asset ?? "").toString().toLowerCase();
|
|
32904
33068
|
if (!rawAsset) continue;
|
|
32905
|
-
const underlying =
|
|
33069
|
+
const underlying = normalizeUnderlying4(rawAsset);
|
|
32906
33070
|
const assetMeta = tokenList[underlying];
|
|
32907
33071
|
const decimals = Number(ft.decimals ?? assetMeta?.decimals ?? 18);
|
|
32908
33072
|
const totalAssetsFormatted = Number(
|