@1delta/margin-fetcher 0.0.321 → 0.0.322
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 +75 -15
- package/dist/index.js.map +1 -1
- package/dist/lending/public-data/fluid/publicCallBuild.d.ts +7 -13
- package/dist/lending/public-data/fluid/publicCallBuild.d.ts.map +1 -1
- package/dist/lending/public-data/fluid/publicCallParse.d.ts +27 -2
- package/dist/lending/public-data/fluid/publicCallParse.d.ts.map +1 -1
- package/dist/types/apiReturnType.d.ts +13 -1
- package/dist/types/apiReturnType.d.ts.map +1 -1
- package/dist/vaults/fluid/fetchPublic.d.ts.map +1 -1
- package/package.json +5 -5
package/dist/index.js
CHANGED
|
@@ -6,7 +6,7 @@ export { isAaveType, isAaveV2Type, isAaveV32Type, isAaveV3Type, isCompoundV3, is
|
|
|
6
6
|
import { aavePools, compoundV3Pools, initConfig, morphoPools, compoundV2Pools, eulerVaults, siloMarkets, siloV2LenderKey, siloMarketsV3, siloV3LenderKey, aaveV4Spokes, aaveV4SpokeLenderKey, fluidResolvers, gearboxResolvers, dolomiteConfigs, midnightConfig, aaveReserves, compoundV3Reserves, morphoTypeMarkets, getSiloV2MarketEntry, getSiloV3MarketEntry, dolomiteEmode, aaveTokens, morphoTypeVaults, eulerConfigs, gearboxMarketCompressor, gearboxMarketConfigurators, gearboxV3LenderKey, midnightMarketsByChain, parseAaveV4SpokeLenderKey, gearboxAccountCompressor, compoundV2Tokens, aaveOracles, aaveOraclesConfig, compoundV2Oracles, compoundV2TokenArray, compoundV2OraclesConfig, compoundV3OraclesData, compoundV3BaseData, compoundV2Reserves, fetchTokenLists, fetchTokenList, aaveV4Oracles, resolveMidnightApiBase } from '@1delta/data-sdk';
|
|
7
7
|
import lodash from 'lodash';
|
|
8
8
|
import { getEvmClient, getEvmChain, getEvmClientUniversal, multicallRetryUniversal } from '@1delta/providers';
|
|
9
|
-
import { MetaMorphoAbi, FluidLendingResolverAbi, FluidVaultResolverAbi, MoolahVaultAbi, MorphoLensAbi, AaveV4SpokeAbi, AaveV4OracleAbi, AaveV4HubAbi, DolomiteMarginAbi, GearboxMarketCompressorV310Abi, MorphoBlueAbi, MidnightAbi, GearboxCreditAccountCompressorV310Abi } from '@1delta/abis';
|
|
9
|
+
import { MetaMorphoAbi, FluidLendingResolverAbi, FluidVaultResolverAbi, FluidLiquidityResolverAbi, MoolahVaultAbi, MorphoLensAbi, AaveV4SpokeAbi, AaveV4OracleAbi, AaveV4HubAbi, DolomiteMarginAbi, GearboxMarketCompressorV310Abi, MorphoBlueAbi, MidnightAbi, GearboxCreditAccountCompressorV310Abi } from '@1delta/abis';
|
|
10
10
|
export { MorphoLensAbi } from '@1delta/abis';
|
|
11
11
|
import { prepareDebitDataMulticall, prepareLenderDebitMulticall, parseDebitDataResult, parseLenderDebitResult, getPermit2ContractAddress, getCompoundV3CometAddress as getCompoundV3CometAddress$1, getMorphoAddress, getAaveCollateralTokenAddress, getSiloHalfForUnderlying, InitMarginAddresses, getLstAcceptedInputs } from '@1delta/calldata-sdk';
|
|
12
12
|
import { proxyNativeFetch } from '@1delta/proxy-fetch';
|
|
@@ -19891,6 +19891,11 @@ var buildFluidCall = (chainId, _lender) => {
|
|
|
19891
19891
|
address: resolvers.vaultResolver,
|
|
19892
19892
|
name: "getVaultsEntireData",
|
|
19893
19893
|
params: []
|
|
19894
|
+
},
|
|
19895
|
+
{
|
|
19896
|
+
address: resolvers.liquidityResolver,
|
|
19897
|
+
name: "getAllOverallTokensData",
|
|
19898
|
+
params: []
|
|
19894
19899
|
}
|
|
19895
19900
|
];
|
|
19896
19901
|
};
|
|
@@ -19903,12 +19908,36 @@ var scaleFluidRate = (raw) => {
|
|
|
19903
19908
|
if (raw === void 0 || raw === null) return 0;
|
|
19904
19909
|
return Number(raw) / FLUID_RATE_SCALE;
|
|
19905
19910
|
};
|
|
19911
|
+
var parseOverallTokensData = (overallTokensData) => {
|
|
19912
|
+
const out = {};
|
|
19913
|
+
if (!Array.isArray(overallTokensData)) return out;
|
|
19914
|
+
for (const td of overallTokensData) {
|
|
19915
|
+
const rateData = td?.rateData;
|
|
19916
|
+
if (!rateData) continue;
|
|
19917
|
+
const version = Number(rateData.version ?? 1);
|
|
19918
|
+
const rawToken = ((version === 2 ? rateData.rateDataV2?.token : rateData.rateDataV1?.token) ?? "").toString().toLowerCase();
|
|
19919
|
+
if (!rawToken || rawToken === zeroAddress) continue;
|
|
19920
|
+
const token = normalizeUnderlying(rawToken);
|
|
19921
|
+
const maxUtilizationRaw = Number(td.maxUtilization ?? 0);
|
|
19922
|
+
out[token] = {
|
|
19923
|
+
utilization: Number(td.lastStoredUtilization ?? 0) / BPS,
|
|
19924
|
+
fee: Number(td.fee ?? 0) / BPS,
|
|
19925
|
+
maxUtilization: maxUtilizationRaw > 0 ? maxUtilizationRaw / BPS : 1,
|
|
19926
|
+
totalSupply: (td.totalSupply ?? 0n).toString(),
|
|
19927
|
+
totalBorrow: (td.totalBorrow ?? 0n).toString(),
|
|
19928
|
+
borrowRate: scaleFluidRate(td.borrowRate),
|
|
19929
|
+
supplyRate: scaleFluidRate(td.supplyRate)
|
|
19930
|
+
};
|
|
19931
|
+
}
|
|
19932
|
+
return out;
|
|
19933
|
+
};
|
|
19906
19934
|
var getFluidPublicDataConverter = (_lender, chainId, prices, additionalYields, tokenList = {}) => {
|
|
19907
|
-
const expectedNumberOfCalls =
|
|
19935
|
+
const expectedNumberOfCalls = 2;
|
|
19908
19936
|
return [
|
|
19909
19937
|
(data) => {
|
|
19910
19938
|
if (data.length !== expectedNumberOfCalls) return void 0;
|
|
19911
|
-
const [vaultEntireData] = data;
|
|
19939
|
+
const [vaultEntireData, overallTokensData] = data;
|
|
19940
|
+
const liquidityByToken = parseOverallTokensData(overallTokensData);
|
|
19912
19941
|
const out = {};
|
|
19913
19942
|
for (const vault of vaultEntireData ?? []) {
|
|
19914
19943
|
const parsed = parseVault(
|
|
@@ -19916,7 +19945,8 @@ var getFluidPublicDataConverter = (_lender, chainId, prices, additionalYields, t
|
|
|
19916
19945
|
chainId,
|
|
19917
19946
|
prices,
|
|
19918
19947
|
additionalYields,
|
|
19919
|
-
tokenList
|
|
19948
|
+
tokenList,
|
|
19949
|
+
liquidityByToken
|
|
19920
19950
|
);
|
|
19921
19951
|
if (parsed) {
|
|
19922
19952
|
out[parsed.lender] = {
|
|
@@ -19931,7 +19961,7 @@ var getFluidPublicDataConverter = (_lender, chainId, prices, additionalYields, t
|
|
|
19931
19961
|
expectedNumberOfCalls
|
|
19932
19962
|
];
|
|
19933
19963
|
};
|
|
19934
|
-
function parseVault(vault, chainId, prices, additionalYields, tokenList) {
|
|
19964
|
+
function parseVault(vault, chainId, prices, additionalYields, tokenList, liquidityByToken = {}) {
|
|
19935
19965
|
const vaultAddress = (vault.vault ?? "").toLowerCase();
|
|
19936
19966
|
const constants = vault.constantVariables;
|
|
19937
19967
|
const configs = vault.configs;
|
|
@@ -19981,9 +20011,14 @@ function parseVault(vault, chainId, prices, additionalYields, tokenList) {
|
|
|
19981
20011
|
const liquidationPenalty = Number(configs.liquidationPenalty ?? 0) / BPS;
|
|
19982
20012
|
const supplyRate = scaleFluidRate(rates.supplyRateVault);
|
|
19983
20013
|
const borrowRate = scaleFluidRate(rates.borrowRateVault);
|
|
19984
|
-
const
|
|
20014
|
+
const collateralLiquidity = liquidityByToken[collateralAddress];
|
|
20015
|
+
const loanLiquidity = liquidityByToken[loanAddress];
|
|
19985
20016
|
const data = {};
|
|
19986
|
-
const collateralMarketUid = createMarketUid(
|
|
20017
|
+
const collateralMarketUid = createMarketUid(
|
|
20018
|
+
chainId,
|
|
20019
|
+
lender,
|
|
20020
|
+
collateralAddress
|
|
20021
|
+
);
|
|
19987
20022
|
data[collateralMarketUid] = {
|
|
19988
20023
|
marketUid: collateralMarketUid,
|
|
19989
20024
|
name: "Collateral " + (collateralMeta?.symbol ?? ""),
|
|
@@ -20000,7 +20035,12 @@ function parseVault(vault, chainId, prices, additionalYields, tokenList) {
|
|
|
20000
20035
|
totalDebtUSD: 0,
|
|
20001
20036
|
totalLiquidityUSD: totalSupply * collateralPrice,
|
|
20002
20037
|
borrowLiquidityUSD: 0,
|
|
20003
|
-
|
|
20038
|
+
// IRM x-coordinate: the collateral token's Liquidity-layer utilization —
|
|
20039
|
+
// it drives the supply rate (borrowRate × utilization × (1 - fee)).
|
|
20040
|
+
utilization: collateralLiquidity?.utilization ?? 0,
|
|
20041
|
+
// Share of this vault's collateral currently locked below the LL
|
|
20042
|
+
// withdrawal limit (withdrawLimit / totalSupplyVault).
|
|
20043
|
+
lockupRatio,
|
|
20004
20044
|
depositRate: supplyRate,
|
|
20005
20045
|
// vault collateral earns the supply side rate
|
|
20006
20046
|
variableBorrowRate: 0,
|
|
@@ -20046,7 +20086,9 @@ function parseVault(vault, chainId, prices, additionalYields, tokenList) {
|
|
|
20046
20086
|
totalDebtUSD: totalBorrow * loanPrice,
|
|
20047
20087
|
totalLiquidityUSD: borrowable * loanPrice,
|
|
20048
20088
|
borrowLiquidityUSD: borrowable * loanPrice,
|
|
20049
|
-
utilization
|
|
20089
|
+
// IRM x-coordinate: the loan token's Liquidity-layer utilization — the
|
|
20090
|
+
// exact input the current borrow rate was computed from.
|
|
20091
|
+
utilization: loanLiquidity?.utilization ?? 0,
|
|
20050
20092
|
depositRate: 0,
|
|
20051
20093
|
variableBorrowRate: borrowRate,
|
|
20052
20094
|
stableBorrowRate: 0,
|
|
@@ -20083,6 +20125,15 @@ function parseVault(vault, chainId, prices, additionalYields, tokenList) {
|
|
|
20083
20125
|
expandDuration: Number(llSupply.expandDuration ?? 0),
|
|
20084
20126
|
lastUpdateTimestamp: Number(llSupply.lastUpdateTimestamp ?? 0)
|
|
20085
20127
|
} : void 0;
|
|
20128
|
+
const formatLiquidity = (state, decimals) => state ? {
|
|
20129
|
+
utilization: state.utilization,
|
|
20130
|
+
fee: state.fee,
|
|
20131
|
+
maxUtilization: state.maxUtilization,
|
|
20132
|
+
totalSupply: Number(parseRawAmount(state.totalSupply, decimals)),
|
|
20133
|
+
totalBorrow: Number(parseRawAmount(state.totalBorrow, decimals)),
|
|
20134
|
+
borrowRate: state.borrowRate,
|
|
20135
|
+
supplyRate: state.supplyRate
|
|
20136
|
+
} : void 0;
|
|
20086
20137
|
return {
|
|
20087
20138
|
lender,
|
|
20088
20139
|
data,
|
|
@@ -20104,7 +20155,11 @@ function parseVault(vault, chainId, prices, additionalYields, tokenList) {
|
|
|
20104
20155
|
oraclePriceLiquidate: configs.oraclePriceLiquidate?.toString(),
|
|
20105
20156
|
isSmartCol: !!vault.isSmartCol,
|
|
20106
20157
|
isSmartDebt: !!vault.isSmartDebt,
|
|
20107
|
-
liquidityUserSupply
|
|
20158
|
+
liquidityUserSupply,
|
|
20159
|
+
liquidity: {
|
|
20160
|
+
supplyToken: formatLiquidity(collateralLiquidity, colDecimals),
|
|
20161
|
+
borrowToken: formatLiquidity(loanLiquidity, borrowDecimals)
|
|
20162
|
+
}
|
|
20108
20163
|
}
|
|
20109
20164
|
}
|
|
20110
20165
|
};
|
|
@@ -20693,16 +20748,16 @@ var getAbi = (lender) => {
|
|
|
20693
20748
|
if (isInit(lender)) return InitLensAbi;
|
|
20694
20749
|
if (isMorphoType(lender)) return MorphoLensAbi;
|
|
20695
20750
|
if (isEulerType(lender)) return vaultLensAbi;
|
|
20696
|
-
if (isAaveV4Type(lender))
|
|
20751
|
+
if (isAaveV4Type(lender))
|
|
20752
|
+
return [...AaveV4SpokeAbi, ...AaveV4OracleAbi, ...AaveV4HubAbi];
|
|
20697
20753
|
if (isSiloV2Type(lender))
|
|
20698
20754
|
return [...SiloAbi, ...SiloLensAbi, ...InterestRateModelV2Abi];
|
|
20699
20755
|
if (isSiloV3Type(lender))
|
|
20700
20756
|
return [...SiloAbi, ...SiloLensAbi, ...InterestRateModelV2Abi];
|
|
20701
20757
|
if (isFluid(lender))
|
|
20702
|
-
return [...FluidVaultResolverAbi];
|
|
20758
|
+
return [...FluidVaultResolverAbi, ...FluidLiquidityResolverAbi];
|
|
20703
20759
|
if (isDolomite(lender)) return [...DolomiteMarginAbi];
|
|
20704
|
-
if (isGearboxV3(lender))
|
|
20705
|
-
return [...GearboxMarketCompressorV310Abi];
|
|
20760
|
+
if (isGearboxV3(lender)) return [...GearboxMarketCompressorV310Abi];
|
|
20706
20761
|
if (isSumerType(lender)) return [...SumerLensAbi, ...SumerComptrollerAbi];
|
|
20707
20762
|
if (lender === Lender.TAKARA) return [...TakaraMarketStateAbi];
|
|
20708
20763
|
if (isCompoundV2Type(lender)) return VenusLensAbi;
|
|
@@ -37206,7 +37261,12 @@ async function fetchFluidExposures(chainId, multicallRetry, prices, tokenList) {
|
|
|
37206
37261
|
const rawVaults = await multicallRetry({
|
|
37207
37262
|
chain: chainId,
|
|
37208
37263
|
calls: vaultCalls,
|
|
37209
|
-
|
|
37264
|
+
// buildFluidCall mixes vault-resolver and liquidity-resolver calls; the
|
|
37265
|
+
// merged ABI lets viem resolve each call by function name.
|
|
37266
|
+
abi: vaultCalls.map(() => [
|
|
37267
|
+
...FluidVaultResolverAbi,
|
|
37268
|
+
...FluidLiquidityResolverAbi
|
|
37269
|
+
])
|
|
37210
37270
|
});
|
|
37211
37271
|
const [convert] = getFluidPublicDataConverter(
|
|
37212
37272
|
"FLUID",
|