@1delta/margin-fetcher 0.0.237 → 0.0.239
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 +174 -16
- 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/utils/index.d.ts.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -7607,6 +7607,9 @@ var getLendersForChain = (c) => {
|
|
|
7607
7607
|
for (const spokeAddr of Object.keys(v4ChainSpokes)) {
|
|
7608
7608
|
lenders.push(aaveV4SpokeLenderKey(spokeAddr));
|
|
7609
7609
|
}
|
|
7610
|
+
if (fluidResolvers()?.[c]) {
|
|
7611
|
+
lenders.push(Lender.FLUID);
|
|
7612
|
+
}
|
|
7610
7613
|
return lenders;
|
|
7611
7614
|
};
|
|
7612
7615
|
var filterLendersByProtocol = (allLenders, protocolList) => {
|
|
@@ -7615,8 +7618,9 @@ var filterLendersByProtocol = (allLenders, protocolList) => {
|
|
|
7615
7618
|
}
|
|
7616
7619
|
const hasMorpho = protocolList.includes(Lender.MORPHO_BLUE);
|
|
7617
7620
|
const hasMoolah = protocolList.includes(Lender.LISTA_DAO);
|
|
7621
|
+
const hasFluid = protocolList.includes(Lender.FLUID);
|
|
7618
7622
|
return allLenders.filter(
|
|
7619
|
-
(lender) => protocolList.includes(lender) || hasMorpho && lender?.startsWith("MORPHO_BLUE") || hasMoolah && lender?.startsWith("LISTA_DAO")
|
|
7623
|
+
(lender) => protocolList.includes(lender) || hasMorpho && lender?.startsWith("MORPHO_BLUE") || hasMoolah && lender?.startsWith("LISTA_DAO") || hasFluid && lender?.startsWith("FLUID")
|
|
7620
7624
|
);
|
|
7621
7625
|
};
|
|
7622
7626
|
var getAavesForChain = () => {
|
|
@@ -18863,7 +18867,7 @@ var getSiloV2ReservesDataConverter = (lender, chainId, prices, additionalYields,
|
|
|
18863
18867
|
{ self: market.silo0, other: market.silo1 },
|
|
18864
18868
|
{ self: market.silo1, other: market.silo0 }
|
|
18865
18869
|
];
|
|
18866
|
-
const
|
|
18870
|
+
const toBigInt8 = (v) => {
|
|
18867
18871
|
if (v === void 0 || v === null || v === "0x") return 0n;
|
|
18868
18872
|
if (typeof v === "bigint") return v;
|
|
18869
18873
|
try {
|
|
@@ -18875,8 +18879,8 @@ var getSiloV2ReservesDataConverter = (lender, chainId, prices, additionalYields,
|
|
|
18875
18879
|
for (let s = 0; s < 2; s++) {
|
|
18876
18880
|
const { self, other } = sides[s];
|
|
18877
18881
|
const slot = s * SILO_V2_CALLS_PER_SIDE;
|
|
18878
|
-
const totalAssetsRaw =
|
|
18879
|
-
const debtAssetsRaw =
|
|
18882
|
+
const totalAssetsRaw = toBigInt8(data[slot]);
|
|
18883
|
+
const debtAssetsRaw = toBigInt8(data[slot + 1]);
|
|
18880
18884
|
const irmConfigRaw = data[slot + 2];
|
|
18881
18885
|
const decimals = self.decimals;
|
|
18882
18886
|
const totalDeposits = Number(formatUnits(totalAssetsRaw, decimals));
|
|
@@ -19031,7 +19035,7 @@ var getSiloV3ReservesDataConverter = (lender, chainId, prices, additionalYields,
|
|
|
19031
19035
|
{ self: market.silo0, other: market.silo1 },
|
|
19032
19036
|
{ self: market.silo1, other: market.silo0 }
|
|
19033
19037
|
];
|
|
19034
|
-
const
|
|
19038
|
+
const toBigInt8 = (v) => {
|
|
19035
19039
|
if (v === void 0 || v === null || v === "0x") return 0n;
|
|
19036
19040
|
if (typeof v === "bigint") return v;
|
|
19037
19041
|
try {
|
|
@@ -19043,8 +19047,8 @@ var getSiloV3ReservesDataConverter = (lender, chainId, prices, additionalYields,
|
|
|
19043
19047
|
for (let s = 0; s < 2; s++) {
|
|
19044
19048
|
const { self, other } = sides[s];
|
|
19045
19049
|
const slot = s * SILO_V3_CALLS_PER_SIDE;
|
|
19046
|
-
const totalAssetsRaw =
|
|
19047
|
-
const debtAssetsRaw =
|
|
19050
|
+
const totalAssetsRaw = toBigInt8(data[slot]);
|
|
19051
|
+
const debtAssetsRaw = toBigInt8(data[slot + 1]);
|
|
19048
19052
|
const irmConfigRaw = data[slot + 2];
|
|
19049
19053
|
const decimals = self.decimals;
|
|
19050
19054
|
const totalDeposits = Number(formatUnits(totalAssetsRaw, decimals));
|
|
@@ -19211,7 +19215,7 @@ function parseVault(vault, chainId, prices, additionalYields, tokenList) {
|
|
|
19211
19215
|
const collateralAddress = normalizeUnderlying(rawCollateral);
|
|
19212
19216
|
const loanAddress = normalizeUnderlying(rawLoan);
|
|
19213
19217
|
const vaultId = Number(constants.vaultId ?? 0);
|
|
19214
|
-
const lender = `FLUID_${vaultId}`;
|
|
19218
|
+
const lender = `FLUID_${chainId}_${vaultId}`;
|
|
19215
19219
|
const collateralMeta = tokenList[collateralAddress];
|
|
19216
19220
|
const loanMeta = tokenList[loanAddress];
|
|
19217
19221
|
const colDecimals = Number(
|
|
@@ -20717,6 +20721,20 @@ var buildSiloV3UserCall = (chainId, lender, account) => {
|
|
|
20717
20721
|
return calls;
|
|
20718
20722
|
};
|
|
20719
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
|
+
|
|
20720
20738
|
// src/lending/user-data/fetch-balances/prepare.ts
|
|
20721
20739
|
async function buildUserCall(chainId, lender, account, params) {
|
|
20722
20740
|
if (isAaveV4Type(lender)) return buildAaveV4UserCall(chainId, lender, account);
|
|
@@ -20735,6 +20753,8 @@ async function buildUserCall(chainId, lender, account, params) {
|
|
|
20735
20753
|
return buildSiloV3UserCall(chainId, lender, account);
|
|
20736
20754
|
if (isCompoundV2Type(lender))
|
|
20737
20755
|
return buildCompoundV2UserCall(chainId, lender, account);
|
|
20756
|
+
if (isFluid(lender))
|
|
20757
|
+
return buildFluidUserCall(chainId, lender, account);
|
|
20738
20758
|
return [];
|
|
20739
20759
|
}
|
|
20740
20760
|
function organizeUserQueries(queries) {
|
|
@@ -22462,6 +22482,141 @@ function toBigInt6(v) {
|
|
|
22462
22482
|
return 0n;
|
|
22463
22483
|
}
|
|
22464
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
|
+
};
|
|
22465
22620
|
|
|
22466
22621
|
// src/lending/user-data/fetch-balances/parse.ts
|
|
22467
22622
|
function getUserDataConverter(lender, chainId, account, params, meta) {
|
|
@@ -22501,6 +22656,8 @@ function getUserDataConverter(lender, chainId, account, params, meta) {
|
|
|
22501
22656
|
return getSiloV2UserDataConverter(lender, chainId, account, meta?.[lender]);
|
|
22502
22657
|
if (isSiloV3Type(lender))
|
|
22503
22658
|
return getSiloV3UserDataConverter(lender, chainId, account, meta?.[lender]);
|
|
22659
|
+
if (isFluid(lender))
|
|
22660
|
+
return getFluidUserDataConverter(lender, chainId, account, meta);
|
|
22504
22661
|
return getCompoundV2UserDataConverter(
|
|
22505
22662
|
lender,
|
|
22506
22663
|
chainId,
|
|
@@ -27182,6 +27339,7 @@ var getAbi2 = (lender) => {
|
|
|
27182
27339
|
return [...ComptrollerAbi, ...CompoundV2CollateralToken];
|
|
27183
27340
|
if (isSiloV2Type(lender) || isSiloV3Type(lender))
|
|
27184
27341
|
return [...SiloAbi];
|
|
27342
|
+
if (isFluid(lender)) return [...FluidVaultResolverAbi];
|
|
27185
27343
|
return [];
|
|
27186
27344
|
};
|
|
27187
27345
|
|
|
@@ -31477,8 +31635,8 @@ var siloV3Fetcher = {
|
|
|
31477
31635
|
parse: parseSiloV3Results,
|
|
31478
31636
|
getAbi: getSiloV3Abi
|
|
31479
31637
|
};
|
|
31480
|
-
var
|
|
31481
|
-
var
|
|
31638
|
+
var FLUID_EEE_LOWER3 = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee";
|
|
31639
|
+
var normalizeUnderlying3 = (addr) => addr === FLUID_EEE_LOWER3 ? zeroAddress : addr;
|
|
31482
31640
|
function priceColInDebt(raw, colDec, debtDec) {
|
|
31483
31641
|
return formatMorphoPrice(raw, debtDec, colDec + 9);
|
|
31484
31642
|
}
|
|
@@ -31515,8 +31673,8 @@ function parseFluidResults(data, _meta, context) {
|
|
|
31515
31673
|
const rawCol = (constants.supplyToken?.token0 ?? constants.supplyToken ?? "").toString().toLowerCase();
|
|
31516
31674
|
const rawLoan = (constants.borrowToken?.token0 ?? constants.borrowToken ?? "").toString().toLowerCase();
|
|
31517
31675
|
if (!rawCol || !rawLoan) continue;
|
|
31518
|
-
const collateral =
|
|
31519
|
-
const loan =
|
|
31676
|
+
const collateral = normalizeUnderlying3(rawCol);
|
|
31677
|
+
const loan = normalizeUnderlying3(rawLoan);
|
|
31520
31678
|
const colDec = tokenList?.[collateral]?.decimals ?? 18;
|
|
31521
31679
|
const loanDec = tokenList?.[loan]?.decimals ?? 18;
|
|
31522
31680
|
const rawPrice = configs.oraclePriceOperate?.toString() ?? "0";
|
|
@@ -31524,7 +31682,7 @@ function parseFluidResults(data, _meta, context) {
|
|
|
31524
31682
|
const priceDebtPerCol = priceColInDebt(rawPrice, colDec, loanDec);
|
|
31525
31683
|
if (!Number.isFinite(priceDebtPerCol) || priceDebtPerCol === 0) continue;
|
|
31526
31684
|
const vaultId = Number(constants.vaultId ?? 0);
|
|
31527
|
-
const lenderKey = `${Lender.FLUID}_${vaultId}`;
|
|
31685
|
+
const lenderKey = `${Lender.FLUID}_${chainId}_${vaultId}`;
|
|
31528
31686
|
const loanOracleKey = tokenList?.[loan]?.assetGroup ?? `${chainId}-${loan}`;
|
|
31529
31687
|
const loanUSD = usdPrices[loanOracleKey] ?? usdPrices[loan];
|
|
31530
31688
|
if (!loanUSD) continue;
|
|
@@ -32875,8 +33033,8 @@ var buildFluidFTokensCall = (chainId) => {
|
|
|
32875
33033
|
};
|
|
32876
33034
|
|
|
32877
33035
|
// src/vaults/fluid/publicCallParse.ts
|
|
32878
|
-
var
|
|
32879
|
-
var
|
|
33036
|
+
var FLUID_EEE_LOWER4 = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee";
|
|
33037
|
+
var normalizeUnderlying4 = (addr) => addr === FLUID_EEE_LOWER4 ? zeroAddress : addr;
|
|
32880
33038
|
var FLUID_RATE_SCALE2 = 100;
|
|
32881
33039
|
var scaleFluidRate2 = (raw) => {
|
|
32882
33040
|
if (raw === void 0 || raw === null) return 0;
|
|
@@ -32898,7 +33056,7 @@ function parseFTokens(fTokens, chainId, prices, tokenList) {
|
|
|
32898
33056
|
for (const ft of fTokens) {
|
|
32899
33057
|
const rawAsset = (ft.asset ?? "").toString().toLowerCase();
|
|
32900
33058
|
if (!rawAsset) continue;
|
|
32901
|
-
const underlying =
|
|
33059
|
+
const underlying = normalizeUnderlying4(rawAsset);
|
|
32902
33060
|
const assetMeta = tokenList[underlying];
|
|
32903
33061
|
const decimals = Number(ft.decimals ?? assetMeta?.decimals ?? 18);
|
|
32904
33062
|
const totalAssetsFormatted = Number(
|