@1delta/margin-fetcher 5.0.72 → 5.0.74
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/README.md +1 -1
- package/dist/index.d.ts +92 -2
- package/dist/index.js +308 -154
- package/dist/index.js.map +1 -1
- package/package.json +8 -8
package/dist/index.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { parseAbi, keccak256, encodeAbiParameters, formatEther, BaseError, erc20Abi, stringToHex, isAddress, pad, encodeFunctionData, formatUnits, getAddress, decodeFunctionResult, decodeAbiParameters, concat, parseAbiParameters, AbiEncodingLengthMismatchError, concatHex, toBytes, slice,
|
|
1
|
+
import { parseAbi, keccak256, encodeAbiParameters, formatEther, BaseError, erc20Abi, stringToHex, isAddress, pad, encodeFunctionData, formatUnits, getAddress, decodeFunctionResult, decodeAbiParameters, concat, parseAbiParameters, hexToString, AbiEncodingLengthMismatchError, concatHex, toBytes, slice, InvalidAddressError, boolToHex, integerRegex, numberToHex, bytesRegex, BytesSizeMismatchError, arrayRegex, UnsupportedPackedAbiType } from './chunk-JUYF2XLF.js';
|
|
2
2
|
import './chunk-BYTNVMX7.js';
|
|
3
3
|
import './chunk-PR4QN5HX.js';
|
|
4
4
|
import { Lender, isExactly, isMidnight, isTerm, isTermMax, isTeller, isListaDao, isLiquityFamily, isRiver, isInverse, isCooler, isDssType, isCompoundV3Type, isFluid, isGearboxV3, isLlamaLend, isFrankencoin, isResupply, isCurvance, isFlyingTulip, isTwyne, isFraxlend, isAaveV4Type, LIQUITY_FAMILY_LENDERS, isAaveType, isCompoundV3, isCompoundV2Type, isMultiMarket, isSiloV2Type, isSiloV3Type, isDolomite, isMorphoType, isUsdd, isSky, hasCrossMarginRisk, isEulerType, isInit, isVenusType, isSumerType, AAVE_V3_LENDERS, AAVE_V2_LENDERS, isMorphoBlue, isAaveV2Type, isAaveV32Type, isAaveV3Type, isYLDR, isLista, hasSubAccounts, isTectonicType, isKineticType, isBenqiType } from '@1delta/lender-registry';
|
|
5
5
|
export { hasCrossMarginRisk, isAaveType, isAaveV2Type, isAaveV32Type, isAaveV3Type, isCompoundV3, isCompoundV3Type, isInit, isMorphoType, isMultiMarket, isYLDR } from '@1delta/lender-registry';
|
|
6
|
-
import { fetchTokenLists, fetchTokenList, aavePools, compoundV3Pools, initConfig, morphoPools, compoundV2Pools, eulerVaults, siloMarkets, siloV2LenderKey, siloMarketsV3, siloV3LenderKey, aaveV4Spokes, aaveV4SpokeLenderKey, fluidResolvers, gearboxResolvers, dolomiteConfigs, midnightConfig, termConfig, termMarketsByChain, exactlyConfig, flyingTulipLendersByChain, liquityLendersByChain, riverLendersByChain, inverseLendersByChain, coolerLendersByChain, llamaLendLendersByChain, usddLendersByChain, skyLendersByChain, frankencoinLendersByChain, resupplyLendersByChain, curvanceLendersByChain, fraxlendLendersByChain, twyneLendersByChain, tellerConfigByChain, tellerPoolsByChain, termMaxConfigByChain, aaveReserves, compoundV3Reserves, resolveTermApiBase, flyingTulipConfigFor, flyingTulipAssetsFor, liquityConfigFor, liquityBranchesByChain, riverConfigFor, riverChainData, termMaxApiBaseUrl, termMaxLenderKey, inverseConfigFor, inverseChainData, coolerConfigFor, llamaLendConfigFor, llamaLendChainData, llamaLendApiBaseUrl, resupplyConfigFor, fraxlendConfigFor, dssConfigFor, dssChainData, dssDebtToken, dssDebtJoin, frankencoinConfigFor, frankencoinChainData, aaveOracles, morphoTypeMarkets, resolveMidnightApiBase, llamaLendMarketByVault, getSiloV2MarketEntry, getSiloV3MarketEntry, dolomiteEmode, curvanceConfigFor, aaveTokens, morphoTypeVaults, listaCollateralProvider, eulerConfigs, gearboxMarketCompressor, gearboxMarketConfigurators, compoundV2TokenArray, gearboxV3LenderKey, midnightMarketsByChain, twyneConfigFor, twyneChainData, parseAaveV4SpokeLenderKey, fraxlendPairsFor, gearboxAccountCompressor, compoundV2Tokens, exactlyMarketsByChain, aaveOraclesConfig, compoundV2Oracles, compoundV2OraclesConfig, compoundV3OraclesData, compoundV3BaseData, compoundV2Reserves, aaveV4Oracles, morphoTypeOracles } from '@1delta/data-sdk';
|
|
6
|
+
import { fetchTokenLists, fetchTokenList, aavePools, compoundV3Pools, initConfig, morphoPools, compoundV2Pools, eulerVaults, siloMarkets, siloV2LenderKey, siloMarketsV3, siloV3LenderKey, aaveV4Spokes, aaveV4SpokeLenderKey, fluidResolvers, gearboxResolvers, dolomiteConfigs, midnightConfig, termConfig, termMarketsByChain, exactlyConfig, flyingTulipLendersByChain, liquityLendersByChain, riverLendersByChain, inverseLendersByChain, coolerLendersByChain, llamaLendLendersByChain, usddLendersByChain, skyLendersByChain, frankencoinLendersByChain, resupplyLendersByChain, curvanceLendersByChain, fraxlendLendersByChain, twyneLendersByChain, tellerConfigByChain, tellerPoolsByChain, termMaxConfigByChain, aaveReserves, compoundV3Reserves, resolveTermApiBase, flyingTulipConfigFor, flyingTulipAssetsFor, liquityConfigFor, liquityBranchesByChain, riverConfigFor, riverChainData, termMaxApiBaseUrl, termMaxLenderKey, inverseConfigFor, inverseChainData, coolerConfigFor, llamaLendConfigFor, llamaLendChainData, llamaLendApiBaseUrl, resupplyConfigFor, fraxlendConfigFor, dssConfigFor, dssChainData, dssDebtToken, dssDebtJoin, frankencoinConfigFor, frankencoinChainData, aaveOracles, morphoTypeMarkets, resolveMidnightApiBase, llamaLendMarketByVault, getSiloV2MarketEntry, getSiloV3MarketEntry, dolomiteEmode, curvanceConfigFor, aaveTokens, morphoTypeVaults, listaCollateralProvider, eulerConfigs, gearboxMarketCompressor, gearboxMarketConfigurators, compoundV2TokenArray, gearboxV3LenderKey, midnightMarketsByChain, twyneConfigFor, twyneChainData, midnightCollateralRef, parseAaveV4SpokeLenderKey, fraxlendPairsFor, gearboxAccountCompressor, compoundV2Tokens, exactlyMarketsByChain, aaveOraclesConfig, compoundV2Oracles, compoundV2OraclesConfig, compoundV3OraclesData, compoundV3BaseData, compoundV2Reserves, aaveV4Oracles, morphoTypeOracles } from '@1delta/data-sdk';
|
|
7
7
|
import lodash from 'lodash';
|
|
8
8
|
import { Chain, isEvmChainId } from '@1delta/chain-registry';
|
|
9
|
-
import { multicallRetryUniversal, getEvmClient, getEvmChain, getEvmClientUniversal } from '@1delta/providers';
|
|
10
|
-
import { LiquityTroveManagerAbi, LiquityActivePoolAbi, LiquityStabilityPoolAbi, LiquityPriceFeedAbi, LiquitySortedTrovesAbi, RiverTroveManagerAbi, RiverStabilityPoolAbi, TellerMarketRegistryAbi, TellerV2Abi, InverseMarketAbi, InverseOracleAbi, InverseDbrAbi, Erc20Abi, CoolerMonoAbi, CoolerLtvOracleAbi, LlamaLendControllerAbi, LlamaLendControllerV1Abi, LlamaLendControllerV2Abi, LlamaLendVaultAbi, LlamaLendAmmAbi, TwyneCollateralVaultAbi, MetaMorphoAbi, FluidDexResolverAbi, ExactlyPreviewerAbi, ExactlyAuditorAbi, FlyingTulipLendingLensAbi, LenderCommitmentGroupAbi, ResupplyRegistryAbi, ResupplyPairAbi, ResupplyUtilitiesAbi, ResupplyRewardHandlerAbi, ResupplyPairEmissionsAbi, ConvexPoolUtilAbi, FraxlendPairAbi, FraxlendLeverAbi, FrankencoinPositionAbi, FluidLendingResolverAbi, FluidVaultResolverAbi, FluidLiquidityResolverAbi, MoolahVaultAbi, UsddVatAbi, UsddJugAbi, UsddSpotAbi, MorphoLensAbi, AaveV4SpokeAbi, AaveV4OracleAbi, AaveV4HubAbi, DolomiteMarginAbi, GearboxMarketCompressorV310Abi, MorphoBlueAbi, MidnightAbi, TermRepoTokenAbi, TermRepoServicerAbi, TermRepoCollateralManagerAbi, LiquityTroveNFTAbi, LiquityCollSurplusPoolAbi, TellerCollateralManagerAbi, TermMaxViewerAbi, InverseEscrowAbi, CurvanceMarketManagerAbi, CurvanceCTokenAbi, GearboxCreditAccountCompressorV310Abi, TwyneVaultManagerAbi, TwyneCollateralVaultFactoryAbi, AaveV2V3Abi, TwyneATokenWrapperAbi, UsddCdpManagerAbi, UsddProxyRegistryAbi, CurvanceProtocolReaderAbi, CurvanceCentralRegistryAbi, TermPriceConsumerAbi, CurvanceOracleManagerAbi, TermMaxOracleAggregatorV2Abi } from '@1delta/abis';
|
|
9
|
+
import { multicallRetryUniversal, getEvmClient, getEvmChain, createMulticallRetryUniversal, LIST_OVERRIDES, getEvmClientUniversal } from '@1delta/providers';
|
|
10
|
+
import { LiquityTroveManagerAbi, LiquityActivePoolAbi, LiquityStabilityPoolAbi, LiquityPriceFeedAbi, LiquitySortedTrovesAbi, RiverTroveManagerAbi, RiverStabilityPoolAbi, TellerMarketRegistryAbi, TellerV2Abi, InverseMarketAbi, InverseOracleAbi, InverseDbrAbi, CurveTricryptoOracleAbi, Erc20Abi, CoolerMonoAbi, CoolerLtvOracleAbi, LlamaLendControllerAbi, LlamaLendControllerV1Abi, LlamaLendControllerV2Abi, LlamaLendVaultAbi, LlamaLendAmmAbi, TwyneCollateralVaultAbi, MetaMorphoAbi, FluidDexResolverAbi, ExactlyPreviewerAbi, ExactlyAuditorAbi, FlyingTulipLendingLensAbi, LenderCommitmentGroupAbi, ResupplyRegistryAbi, ResupplyPairAbi, ResupplyUtilitiesAbi, ResupplyRewardHandlerAbi, ResupplyPairEmissionsAbi, ConvexPoolUtilAbi, FraxlendPairAbi, FraxlendLeverAbi, FrankencoinPositionAbi, FluidLendingResolverAbi, FluidVaultResolverAbi, FluidLiquidityResolverAbi, MoolahVaultAbi, UsddVatAbi, UsddJugAbi, UsddSpotAbi, MorphoLensAbi, AaveV4SpokeAbi, AaveV4OracleAbi, AaveV4HubAbi, DolomiteMarginAbi, GearboxMarketCompressorV310Abi, MorphoBlueAbi, MidnightAbi, TermRepoTokenAbi, TermRepoServicerAbi, TermRepoCollateralManagerAbi, LiquityTroveNFTAbi, LiquityCollSurplusPoolAbi, TellerCollateralManagerAbi, TermMaxViewerAbi, InverseEscrowAbi, CurvanceMarketManagerAbi, CurvanceCTokenAbi, GearboxCreditAccountCompressorV310Abi, TwyneVaultManagerAbi, TwyneCollateralVaultFactoryAbi, AaveV2V3Abi, TwyneATokenWrapperAbi, UsddCdpManagerAbi, UsddProxyRegistryAbi, CurvanceProtocolReaderAbi, CurvanceCentralRegistryAbi, TermPriceConsumerAbi, CurvanceOracleManagerAbi, TermMaxOracleAggregatorV2Abi } from '@1delta/abis';
|
|
11
11
|
export { MorphoLensAbi } from '@1delta/abis';
|
|
12
12
|
import { prepareDebitDataMulticall, prepareLenderDebitMulticall, parseDebitDataResult, parseLenderDebitResult, getPermit2ContractAddress, getLstAcceptedInputs, savingsVerbRequires, savingsSupportsVerb, getCompoundV2Comptroller as getCompoundV2Comptroller$1, getCompoundV3CometAddress as getCompoundV3CometAddress$1, getMorphoAddress, FLUID_VAULT_FACTORY, getAaveStyleLenderTokenAddress, LendingMode, getAaveCollateralTokenAddress, getSiloHalfForUnderlying, findSavingsWithdrawEntry, bandLtvCurve, InitMarginAddresses, ignoresReceiver, buildLstWithdrawRequest, SAVINGS_RECEIVER_CAPABILITY } from '@1delta/calldata-sdk';
|
|
13
13
|
import { proxyNativeFetch } from '@1delta/proxy-fetch';
|
|
@@ -6264,6 +6264,7 @@ var LENDER_SHORT_NAMES = {
|
|
|
6264
6264
|
[Lender.AVALON_PUMPBTC]: "Avalon pumpBTC",
|
|
6265
6265
|
[Lender.COMPOUND_V2]: "Comp. V2",
|
|
6266
6266
|
[Lender.COMPOUND_V3_AERO]: "Comp. AERO",
|
|
6267
|
+
[Lender.COMPOUND_V3_INSTITUTIONAL_USDC]: "Comp. USDC (Inst.)",
|
|
6267
6268
|
[Lender.COMPOUND_V3_USDBC]: "Comp. USDBC",
|
|
6268
6269
|
[Lender.COMPOUND_V3_USDC]: "Comp. USDC",
|
|
6269
6270
|
[Lender.COMPOUND_V3_USDCE]: "Comp. USDC.e",
|
|
@@ -11736,58 +11737,72 @@ function convertMarketsToMorphoResponse(response, chainId, additionalYields = {
|
|
|
11736
11737
|
m,
|
|
11737
11738
|
collateralAssetAddress
|
|
11738
11739
|
);
|
|
11739
|
-
data[m].data[collateralMarketUid]
|
|
11740
|
-
|
|
11741
|
-
|
|
11742
|
-
|
|
11743
|
-
underlying: collateralAssetAddress,
|
|
11744
|
-
asset: metaCollateral,
|
|
11745
|
-
totalDeposits: formatNr(
|
|
11746
|
-
state.collateralAssets,
|
|
11747
|
-
collateralAsset.decimals
|
|
11748
|
-
),
|
|
11749
|
-
totalDebtStable: 0,
|
|
11750
|
-
totalDebt: 0,
|
|
11751
|
-
totalLiquidity: formatNr(
|
|
11752
|
-
state.collateralAssets,
|
|
11753
|
-
collateralAsset.decimals
|
|
11754
|
-
),
|
|
11755
|
-
borrowLiquidity: formatNr(
|
|
11756
|
-
state.collateralAssets,
|
|
11757
|
-
collateralAsset.decimals
|
|
11758
|
-
),
|
|
11759
|
-
totalLiquidityUSD: Number(state.collateralAssetsUsd),
|
|
11760
|
-
borrowLiquidityUSD: Number(state.collateralAssetsUsd),
|
|
11761
|
-
totalDepositsUSD: Number(state.collateralAssetsUsd),
|
|
11762
|
-
totalDebtStableUSD: 0,
|
|
11763
|
-
totalDebtUSD: 0,
|
|
11764
|
-
utilization: 0,
|
|
11765
|
-
depositRate: 0,
|
|
11766
|
-
variableBorrowRate: 0,
|
|
11767
|
-
stableBorrowRate: 0,
|
|
11768
|
-
intrinsicYield: additionalYields?.intrinsicYields?.[metaCollateral?.assetGroup] ?? 0,
|
|
11769
|
-
rewards: void 0,
|
|
11770
|
-
decimals: collateralAsset.decimals,
|
|
11771
|
-
config: {
|
|
11740
|
+
const existingLoanRow = data[m].data[collateralMarketUid];
|
|
11741
|
+
if (existingLoanRow) {
|
|
11742
|
+
existingLoanRow.collateralActive = true;
|
|
11743
|
+
existingLoanRow.config = {
|
|
11772
11744
|
0: {
|
|
11773
|
-
|
|
11745
|
+
...existingLoanRow.config?.[0] ?? {},
|
|
11774
11746
|
borrowCollateralFactor: ltv,
|
|
11775
11747
|
collateralFactor: ltv,
|
|
11776
|
-
borrowFactor: 1,
|
|
11777
11748
|
liquidationPenalty,
|
|
11778
|
-
|
|
11779
|
-
collateralDisabled: false,
|
|
11780
|
-
debtDisabled: true
|
|
11749
|
+
collateralDisabled: false
|
|
11781
11750
|
}
|
|
11782
|
-
}
|
|
11783
|
-
|
|
11784
|
-
|
|
11785
|
-
|
|
11786
|
-
|
|
11787
|
-
|
|
11788
|
-
|
|
11789
|
-
|
|
11790
|
-
|
|
11751
|
+
};
|
|
11752
|
+
} else {
|
|
11753
|
+
data[m].data[collateralMarketUid] = {
|
|
11754
|
+
marketUid: collateralMarketUid,
|
|
11755
|
+
name: "Collateral " + (metaCollateral?.symbol ?? collateralAsset.symbol ?? ""),
|
|
11756
|
+
poolId: collateralAssetAddress,
|
|
11757
|
+
underlying: collateralAssetAddress,
|
|
11758
|
+
asset: metaCollateral,
|
|
11759
|
+
totalDeposits: formatNr(
|
|
11760
|
+
state.collateralAssets,
|
|
11761
|
+
collateralAsset.decimals
|
|
11762
|
+
),
|
|
11763
|
+
totalDebtStable: 0,
|
|
11764
|
+
totalDebt: 0,
|
|
11765
|
+
totalLiquidity: formatNr(
|
|
11766
|
+
state.collateralAssets,
|
|
11767
|
+
collateralAsset.decimals
|
|
11768
|
+
),
|
|
11769
|
+
borrowLiquidity: formatNr(
|
|
11770
|
+
state.collateralAssets,
|
|
11771
|
+
collateralAsset.decimals
|
|
11772
|
+
),
|
|
11773
|
+
totalLiquidityUSD: Number(state.collateralAssetsUsd),
|
|
11774
|
+
borrowLiquidityUSD: Number(state.collateralAssetsUsd),
|
|
11775
|
+
totalDepositsUSD: Number(state.collateralAssetsUsd),
|
|
11776
|
+
totalDebtStableUSD: 0,
|
|
11777
|
+
totalDebtUSD: 0,
|
|
11778
|
+
utilization: 0,
|
|
11779
|
+
depositRate: 0,
|
|
11780
|
+
variableBorrowRate: 0,
|
|
11781
|
+
stableBorrowRate: 0,
|
|
11782
|
+
intrinsicYield: additionalYields?.intrinsicYields?.[metaCollateral?.assetGroup] ?? 0,
|
|
11783
|
+
rewards: void 0,
|
|
11784
|
+
decimals: collateralAsset.decimals,
|
|
11785
|
+
config: {
|
|
11786
|
+
0: {
|
|
11787
|
+
category: 0,
|
|
11788
|
+
borrowCollateralFactor: ltv,
|
|
11789
|
+
collateralFactor: ltv,
|
|
11790
|
+
borrowFactor: 1,
|
|
11791
|
+
liquidationPenalty,
|
|
11792
|
+
closeFactor: 1,
|
|
11793
|
+
collateralDisabled: false,
|
|
11794
|
+
debtDisabled: true
|
|
11795
|
+
}
|
|
11796
|
+
},
|
|
11797
|
+
closeFactor: 1,
|
|
11798
|
+
collateralActive: true,
|
|
11799
|
+
borrowingEnabled: false,
|
|
11800
|
+
depositsEnabled: true,
|
|
11801
|
+
hasStable: false,
|
|
11802
|
+
isActive: true,
|
|
11803
|
+
isFrozen: false
|
|
11804
|
+
};
|
|
11805
|
+
}
|
|
11791
11806
|
data[m].params = {
|
|
11792
11807
|
market: {
|
|
11793
11808
|
lender: m,
|
|
@@ -16663,13 +16678,13 @@ var REPAIR_BACKOFF_JITTER_MS = 60;
|
|
|
16663
16678
|
var sleep = (ms) => new Promise((resolve) => setTimeout(resolve, Math.max(0, ms)));
|
|
16664
16679
|
var backoffForRound = (round) => REPAIR_BACKOFF_BASE_MS * 2 ** round + Math.random() * REPAIR_BACKOFF_JITTER_MS;
|
|
16665
16680
|
var endpointUrl = (client, rpcId) => client?.transport?.url ?? `rpc#${rpcId}`;
|
|
16666
|
-
var resolveEndpoint = (chainId,
|
|
16681
|
+
var resolveEndpoint = (chainId, getEvmClient19, startRpcId, tried, maxProbe = 12, timeoutMs) => {
|
|
16667
16682
|
let fallback = null;
|
|
16668
16683
|
for (let probe = 0; probe < maxProbe; probe++) {
|
|
16669
16684
|
const rpcId = startRpcId + probe;
|
|
16670
16685
|
let client;
|
|
16671
16686
|
try {
|
|
16672
|
-
client =
|
|
16687
|
+
client = getEvmClient19(chainId, rpcId, { timeoutMs });
|
|
16673
16688
|
} catch {
|
|
16674
16689
|
break;
|
|
16675
16690
|
}
|
|
@@ -16698,7 +16713,7 @@ var recordPermanentFailures = (slots, offset, collector) => {
|
|
|
16698
16713
|
if (slots[i].permanent) collector.add(offset + i);
|
|
16699
16714
|
}
|
|
16700
16715
|
};
|
|
16701
|
-
var repairFailedSlots = async (chainId, contracts, slots,
|
|
16716
|
+
var repairFailedSlots = async (chainId, contracts, slots, getEvmClient19, nextRpcId, batchSize, logs, rounds = MULTICALL_REPAIR_ROUNDS, options) => {
|
|
16702
16717
|
let searchFrom = nextRpcId;
|
|
16703
16718
|
for (let round = 0; round < rounds; round++) {
|
|
16704
16719
|
const failedIdx = [];
|
|
@@ -16708,7 +16723,7 @@ var repairFailedSlots = async (chainId, contracts, slots, getEvmClient20, nextRp
|
|
|
16708
16723
|
if (failedIdx.length === 0) return slots;
|
|
16709
16724
|
const endpoint = resolveEndpoint(
|
|
16710
16725
|
chainId,
|
|
16711
|
-
|
|
16726
|
+
getEvmClient19,
|
|
16712
16727
|
searchFrom,
|
|
16713
16728
|
options?.tried
|
|
16714
16729
|
);
|
|
@@ -16760,7 +16775,7 @@ var repairFailedSlots = async (chainId, contracts, slots, getEvmClient20, nextRp
|
|
|
16760
16775
|
}
|
|
16761
16776
|
return slots;
|
|
16762
16777
|
};
|
|
16763
|
-
var multicallShardedAbiArray = async (chainId, abi, calls,
|
|
16778
|
+
var multicallShardedAbiArray = async (chainId, abi, calls, getEvmClient19, poolSize, retries = maxRetries, allowFailure = true, batchSize = MULTICALL_DEFAULT_BATCH_SIZE, logs = false, retryFailed = false, permanentFailures, options) => {
|
|
16764
16779
|
const abiIsArray = isArray(abi[0]);
|
|
16765
16780
|
const contracts = calls.map(({ address, name, params }, i) => ({
|
|
16766
16781
|
abi: abiIsArray ? abi?.[i] : abi,
|
|
@@ -16834,7 +16849,7 @@ var multicallShardedAbiArray = async (chainId, abi, calls, getEvmClient20, poolS
|
|
|
16834
16849
|
const attemptHedged = async (items, startRpcId, tried) => {
|
|
16835
16850
|
const primary = resolveEndpoint(
|
|
16836
16851
|
chainId,
|
|
16837
|
-
|
|
16852
|
+
getEvmClient19,
|
|
16838
16853
|
startRpcId,
|
|
16839
16854
|
tried,
|
|
16840
16855
|
12,
|
|
@@ -16858,7 +16873,7 @@ var multicallShardedAbiArray = async (chainId, abi, calls, getEvmClient20, poolS
|
|
|
16858
16873
|
clearTimeout(timer);
|
|
16859
16874
|
const alt = resolveEndpoint(
|
|
16860
16875
|
chainId,
|
|
16861
|
-
|
|
16876
|
+
getEvmClient19,
|
|
16862
16877
|
primary.rpcId + 1,
|
|
16863
16878
|
tried,
|
|
16864
16879
|
12,
|
|
@@ -16910,7 +16925,7 @@ var multicallShardedAbiArray = async (chainId, abi, calls, getEvmClient20, poolS
|
|
|
16910
16925
|
chainId,
|
|
16911
16926
|
batch.items,
|
|
16912
16927
|
slots,
|
|
16913
|
-
|
|
16928
|
+
getEvmClient19,
|
|
16914
16929
|
won.rpcId + 1,
|
|
16915
16930
|
requestBytes,
|
|
16916
16931
|
logs,
|
|
@@ -16932,7 +16947,7 @@ var multicallShardedAbiArray = async (chainId, abi, calls, getEvmClient20, poolS
|
|
|
16932
16947
|
const tried = /* @__PURE__ */ new Set();
|
|
16933
16948
|
const start = resolveEndpoint(
|
|
16934
16949
|
chainId,
|
|
16935
|
-
|
|
16950
|
+
getEvmClient19,
|
|
16936
16951
|
workerId,
|
|
16937
16952
|
void 0,
|
|
16938
16953
|
12,
|
|
@@ -21543,12 +21558,12 @@ function convertMidnightMarketsToResponse(raw, chainId, prices = {}, _additional
|
|
|
21543
21558
|
isActive: true,
|
|
21544
21559
|
isFrozen: false
|
|
21545
21560
|
};
|
|
21546
|
-
config.collateralParams.forEach((c) => {
|
|
21561
|
+
config.collateralParams.forEach((c, i) => {
|
|
21547
21562
|
const collAddr = c.token.toLowerCase();
|
|
21548
21563
|
const ltv = parseLtv(c.lltv);
|
|
21549
21564
|
const cursor = toBigIntOr0(c.liquidationCursor);
|
|
21550
21565
|
const liquidationPenalty = cursor > 0n ? midnightLiquidationPenaltyNumber(toBigIntOr0(c.lltv), cursor) : liquidationPenaltyFromLltv(ltv);
|
|
21551
|
-
const collUid = createMarketUid(chainId, m, collAddr);
|
|
21566
|
+
const collUid = createMarketUid(chainId, m, midnightCollateralRef(collAddr, i));
|
|
21552
21567
|
const collAsset = tokens[collAddr];
|
|
21553
21568
|
const collKey = toOracleKey(collAsset?.assetGroup) || toGenericPriceKey(collAddr, chainId);
|
|
21554
21569
|
const collPrice = prices[collKey] ?? 0;
|
|
@@ -24611,6 +24626,7 @@ var INVERSE_PUBLIC_READ_ABI = [
|
|
|
24611
24626
|
...InverseMarketAbi,
|
|
24612
24627
|
...InverseOracleAbi,
|
|
24613
24628
|
...InverseDbrAbi,
|
|
24629
|
+
...CurveTricryptoOracleAbi,
|
|
24614
24630
|
...Erc20Abi
|
|
24615
24631
|
];
|
|
24616
24632
|
var READS_PER_MARKET2 = 5;
|
|
@@ -24622,29 +24638,52 @@ var fetchJson = async (url, timeoutMs = 6e3) => {
|
|
|
24622
24638
|
if (!res.ok) throw new Error(`HTTP ${res.status}`);
|
|
24623
24639
|
return res.json();
|
|
24624
24640
|
};
|
|
24625
|
-
var
|
|
24626
|
-
|
|
24627
|
-
|
|
24628
|
-
const p = Number(d?.priceDola);
|
|
24629
|
-
if (Number.isFinite(p) && p > 0) return p;
|
|
24630
|
-
} catch {
|
|
24631
|
-
}
|
|
24632
|
-
const snap = Number(snapshot);
|
|
24633
|
-
return Number.isFinite(snap) && snap > 0 ? snap : null;
|
|
24641
|
+
var toNum3 = (v) => {
|
|
24642
|
+
if (typeof v === "bigint") return Number(v);
|
|
24643
|
+
return typeof v === "number" && Number.isFinite(v) ? v : null;
|
|
24634
24644
|
};
|
|
24635
|
-
var
|
|
24645
|
+
var fetchInverseChainWide = async (chainId, config) => {
|
|
24646
|
+
const pool = config.dbrPricePool;
|
|
24647
|
+
const calls = [
|
|
24648
|
+
{ address: config.dbr, name: "replenishmentPriceBps", params: [] }
|
|
24649
|
+
];
|
|
24650
|
+
if (pool) {
|
|
24651
|
+
calls.push(
|
|
24652
|
+
{ address: pool, name: "coins", params: [0n] },
|
|
24653
|
+
{ address: pool, name: "coins", params: [1n] },
|
|
24654
|
+
{ address: pool, name: "price_oracle", params: [0n] }
|
|
24655
|
+
);
|
|
24656
|
+
}
|
|
24636
24657
|
try {
|
|
24637
|
-
const
|
|
24658
|
+
const r = await multicallRetryUniversal({
|
|
24638
24659
|
chain: chainId,
|
|
24639
|
-
calls
|
|
24660
|
+
calls,
|
|
24640
24661
|
abi: INVERSE_PUBLIC_READ_ABI,
|
|
24641
24662
|
allowFailure: true
|
|
24642
24663
|
});
|
|
24643
|
-
|
|
24644
|
-
if (
|
|
24664
|
+
const replenishmentPriceBps = toNum3(r[0]);
|
|
24665
|
+
if (!pool) return { dbrPriceDola: null, replenishmentPriceBps };
|
|
24666
|
+
const same = (a, b) => typeof a === "string" && a.toLowerCase() === b.toLowerCase();
|
|
24667
|
+
const ordered = same(r[1], config.dola) && same(r[2], config.dbr);
|
|
24668
|
+
const raw = typeof r[3] === "bigint" ? Number(r[3]) / 1e18 : NaN;
|
|
24669
|
+
return {
|
|
24670
|
+
dbrPriceDola: ordered && Number.isFinite(raw) && raw > 0 ? raw : null,
|
|
24671
|
+
replenishmentPriceBps
|
|
24672
|
+
};
|
|
24645
24673
|
} catch {
|
|
24674
|
+
return { dbrPriceDola: null, replenishmentPriceBps: null };
|
|
24646
24675
|
}
|
|
24647
|
-
|
|
24676
|
+
};
|
|
24677
|
+
var resolveDbrPriceDola = async (onChain, snapshot) => {
|
|
24678
|
+
if (onChain !== null) return onChain;
|
|
24679
|
+
try {
|
|
24680
|
+
const d = await fetchJson(DBR_URL);
|
|
24681
|
+
const p = Number(d?.priceDola);
|
|
24682
|
+
if (Number.isFinite(p) && p > 0) return p;
|
|
24683
|
+
} catch {
|
|
24684
|
+
}
|
|
24685
|
+
const snap = Number(snapshot);
|
|
24686
|
+
return Number.isFinite(snap) && snap > 0 ? snap : null;
|
|
24648
24687
|
};
|
|
24649
24688
|
async function fetchInverseMarkets(lender, chainId) {
|
|
24650
24689
|
const config = inverseConfigFor(lender, chainId);
|
|
@@ -24660,8 +24699,11 @@ async function fetchInverseMarkets(lender, chainId) {
|
|
|
24660
24699
|
source: "none"
|
|
24661
24700
|
};
|
|
24662
24701
|
if (!config || markets.length === 0) return empty;
|
|
24663
|
-
const
|
|
24664
|
-
const
|
|
24702
|
+
const chainWidePromise = fetchInverseChainWide(chainId, config);
|
|
24703
|
+
const dbrPricePromise = chainWidePromise.then(
|
|
24704
|
+
(c) => resolveDbrPriceDola(c.dbrPriceDola, config.dbrPriceDolaSnapshot)
|
|
24705
|
+
);
|
|
24706
|
+
const replenishPromise = chainWidePromise.then((c) => c.replenishmentPriceBps);
|
|
24665
24707
|
try {
|
|
24666
24708
|
const api = await fetchJson(FIXED_MARKETS_URL);
|
|
24667
24709
|
const byAddr = {};
|
|
@@ -34979,7 +35021,11 @@ var getMidnightUserDataConverter = (_lender, chainId, account, meta) => {
|
|
|
34979
35021
|
if (collAmt === 0n) return;
|
|
34980
35022
|
anyBalance = true;
|
|
34981
35023
|
const collAddr = c.token.toLowerCase();
|
|
34982
|
-
const collUid = createMarketUid(
|
|
35024
|
+
const collUid = createMarketUid(
|
|
35025
|
+
chainId,
|
|
35026
|
+
lenderKey,
|
|
35027
|
+
midnightCollateralRef(collAddr, i)
|
|
35028
|
+
);
|
|
34983
35029
|
const collMeta = metaMap[collUid];
|
|
34984
35030
|
const collDec = collMeta?.asset?.decimals ?? c.decimals;
|
|
34985
35031
|
const collDisplayPrice = collMeta ? getDisplayPrice(collMeta) : 0;
|
|
@@ -35264,11 +35310,11 @@ var getExactlyUserDataConverter = (_lender, chainId, account, meta) => {
|
|
|
35264
35310
|
for (const p of m.fixedBorrowPositions) {
|
|
35265
35311
|
const maturity = Number(p.maturity);
|
|
35266
35312
|
const trancheStr = parseRawAmount(p.previewValue.toString(), decimals);
|
|
35267
|
-
const
|
|
35313
|
+
const isMatured = maturity < now;
|
|
35268
35314
|
const face = faceOf(p);
|
|
35269
35315
|
const faceStr = parseRawAmount(face.toString(), decimals);
|
|
35270
|
-
const discount =
|
|
35271
|
-
const penalty =
|
|
35316
|
+
const discount = isMatured ? "0" : parseRawAmount((face - p.previewValue).toString(), decimals);
|
|
35317
|
+
const penalty = isMatured ? parseRawAmount((p.previewValue - face).toString(), decimals) : "0";
|
|
35272
35318
|
posData[`${loanUid}#${maturity}`] = {
|
|
35273
35319
|
marketUid: loanUid,
|
|
35274
35320
|
underlying: assetAddr,
|
|
@@ -35297,7 +35343,7 @@ var getExactlyUserDataConverter = (_lender, chainId, account, meta) => {
|
|
|
35297
35343
|
p.position.fee.toString(),
|
|
35298
35344
|
decimals
|
|
35299
35345
|
),
|
|
35300
|
-
isMatured
|
|
35346
|
+
isMatured,
|
|
35301
35347
|
/** rebate if repaid now, before maturity (never a fee) */
|
|
35302
35348
|
earlyRepayDiscount: discount,
|
|
35303
35349
|
/** penalty already accrued past maturity */
|
|
@@ -35308,7 +35354,7 @@ var getExactlyUserDataConverter = (_lender, chainId, account, meta) => {
|
|
|
35308
35354
|
decimals
|
|
35309
35355
|
),
|
|
35310
35356
|
latePenaltyApr: penaltyApr,
|
|
35311
|
-
secondsLate:
|
|
35357
|
+
secondsLate: isMatured ? now - maturity : 0
|
|
35312
35358
|
}
|
|
35313
35359
|
};
|
|
35314
35360
|
}
|
|
@@ -37118,7 +37164,7 @@ var getTellerUserDataConverter = (_lender, chainId, account, meta) => {
|
|
|
37118
37164
|
const loanDuration = Number(big20(field10(loanDetails, "loanDuration", 6)));
|
|
37119
37165
|
const aprBps = Number(big20(field10(terms, "APR", 2)));
|
|
37120
37166
|
const maturity = acceptedTs > 0 ? acceptedTs + loanDuration : void 0;
|
|
37121
|
-
const
|
|
37167
|
+
const isMatured = defaulted || maturity !== void 0 && maturity < now;
|
|
37122
37168
|
const collStr = parseRawAmount(collAmount.toString(), collDecimals);
|
|
37123
37169
|
const collNum = Number(collStr);
|
|
37124
37170
|
const debtStr = parseRawAmount(owedTotal.toString(), principalDecimals);
|
|
@@ -37174,7 +37220,7 @@ var getTellerUserDataConverter = (_lender, chainId, account, meta) => {
|
|
|
37174
37220
|
apr: aprBps / 100,
|
|
37175
37221
|
maturity,
|
|
37176
37222
|
accruedInterest: interestStr,
|
|
37177
|
-
isMatured
|
|
37223
|
+
isMatured
|
|
37178
37224
|
}
|
|
37179
37225
|
}
|
|
37180
37226
|
};
|
|
@@ -37286,7 +37332,7 @@ var getTermMaxUserDataConverter = (_lender, chainId, account, meta) => {
|
|
|
37286
37332
|
const loanDec = loanMeta?.asset?.decimals ?? market.debtDecimals;
|
|
37287
37333
|
const collDec = collMeta?.asset?.decimals ?? market.collateralDecimals;
|
|
37288
37334
|
const maturity = Number(market.maturity);
|
|
37289
|
-
const
|
|
37335
|
+
const isMatured = maturity > 0 && maturity <= now;
|
|
37290
37336
|
const positionsByAccount = {};
|
|
37291
37337
|
const modes = {};
|
|
37292
37338
|
const hist = {};
|
|
@@ -37362,7 +37408,7 @@ var getTermMaxUserDataConverter = (_lender, chainId, account, meta) => {
|
|
|
37362
37408
|
isDynamic: false,
|
|
37363
37409
|
debt: debtStr,
|
|
37364
37410
|
maturity: maturity || void 0,
|
|
37365
|
-
isMatured
|
|
37411
|
+
isMatured
|
|
37366
37412
|
}
|
|
37367
37413
|
}
|
|
37368
37414
|
};
|
|
@@ -42323,7 +42369,7 @@ function unflattenLenderData(pools) {
|
|
|
42323
42369
|
}
|
|
42324
42370
|
return result;
|
|
42325
42371
|
}
|
|
42326
|
-
var getLenderUserDataResult = async (chainId, queriesRaw,
|
|
42372
|
+
var getLenderUserDataResult = async (chainId, queriesRaw, getEvmClient19, allowFailure = true, batchSize = MULTICALL_DEFAULT_BATCH_SIZE, retries = 3, logs = false, concurrency = 1, permanentFailures, onEndpointFailure) => {
|
|
42327
42373
|
const queries = organizeUserQueries(queriesRaw);
|
|
42328
42374
|
const builtCalls = await Promise.all(
|
|
42329
42375
|
queries.map(async (query3) => {
|
|
@@ -42333,7 +42379,7 @@ var getLenderUserDataResult = async (chainId, queriesRaw, getEvmClient20, allowF
|
|
|
42333
42379
|
query3.lender,
|
|
42334
42380
|
query3.account,
|
|
42335
42381
|
query3.params,
|
|
42336
|
-
|
|
42382
|
+
getEvmClient19
|
|
42337
42383
|
);
|
|
42338
42384
|
return callData.map((call) => ({ call, abi: call.abi ?? abi }));
|
|
42339
42385
|
})
|
|
@@ -42343,7 +42389,7 @@ var getLenderUserDataResult = async (chainId, queriesRaw, getEvmClient20, allowF
|
|
|
42343
42389
|
chainId,
|
|
42344
42390
|
calls.map((call) => call.abi),
|
|
42345
42391
|
calls.map((call) => call.call),
|
|
42346
|
-
|
|
42392
|
+
getEvmClient19,
|
|
42347
42393
|
concurrency,
|
|
42348
42394
|
retries,
|
|
42349
42395
|
allowFailure,
|
|
@@ -50199,7 +50245,9 @@ var DEFILLAMA_POOLS = {
|
|
|
50199
50245
|
[vesperYieldKey("1", "0x4dbe3f01abe271d3e65432c74851625a8c30aa7b")]: "9b473092-6f2d-4fe6-af5a-f746b77ef5a0",
|
|
50200
50246
|
// vaSTETH 1.41 %
|
|
50201
50247
|
[vesperYieldKey("1", "0xd1c117319b3595fbc39b471ab1fd485629eb05f2")]: "359dd5cd-67a6-4f6a-83db-1edb301637e7",
|
|
50202
|
-
// vaETH — 9.11
|
|
50248
|
+
// vaETH — 9.11 %, then 89.65 % on
|
|
50249
|
+
// 2026-09-09 against a realized 0.47 %. THE WORST ROW IN THIS TABLE: never
|
|
50250
|
+
// treat a Llama value for this pool as plausible. See the hazard note above.
|
|
50203
50251
|
[vesperYieldKey("1", "0xa8b607aa09b6a2e306f93e74c282fb13f6a80452")]: "eb342dc8-8d50-4300-8e92-c8d88e026c94",
|
|
50204
50252
|
// vaUSDC 3.16 %
|
|
50205
50253
|
[vesperYieldKey("1", "0x0538c8bac84e95a9df8ac10aad17dbe81b9e36ee")]: "d07783c3-bd68-4e38-927f-762fcb349dfc",
|
|
@@ -54926,15 +54974,16 @@ function getMidnightCalls(chainId) {
|
|
|
54926
54974
|
if (!market.marketId || !market.loanToken) continue;
|
|
54927
54975
|
const legs = [];
|
|
54928
54976
|
const calls = [];
|
|
54929
|
-
|
|
54930
|
-
if (!c.oracle || !c.token)
|
|
54977
|
+
(market.collateralParams ?? []).forEach((c, collateralIndex) => {
|
|
54978
|
+
if (!c.oracle || !c.token) return;
|
|
54931
54979
|
legs.push({
|
|
54932
54980
|
collateralAsset: c.token.toLowerCase(),
|
|
54933
54981
|
collateralDecimals: c.decimals,
|
|
54934
|
-
oracle: c.oracle
|
|
54982
|
+
oracle: c.oracle,
|
|
54983
|
+
collateralIndex
|
|
54935
54984
|
});
|
|
54936
54985
|
calls.push({ address: c.oracle, name: "price", params: [] });
|
|
54937
|
-
}
|
|
54986
|
+
});
|
|
54938
54987
|
if (legs.length === 0) continue;
|
|
54939
54988
|
results.push({
|
|
54940
54989
|
calls,
|
|
@@ -54983,7 +55032,11 @@ function parseMidnightResults(data, meta, context) {
|
|
|
54983
55032
|
price: priceDebtToCollateral,
|
|
54984
55033
|
// raw: collateral price in loan asset terms
|
|
54985
55034
|
priceUSD: priceDebtToCollateral * loanAssetUSD,
|
|
54986
|
-
marketUid: createMarketUid(
|
|
55035
|
+
marketUid: createMarketUid(
|
|
55036
|
+
chainId,
|
|
55037
|
+
lenderKey,
|
|
55038
|
+
midnightCollateralRef(leg.collateralAsset, leg.collateralIndex)
|
|
55039
|
+
),
|
|
54987
55040
|
targetLender: lenderKey,
|
|
54988
55041
|
baseAsset: loanAsset
|
|
54989
55042
|
});
|
|
@@ -69767,6 +69820,7 @@ var fetchUpshiftVaults = async (chainId, prices = {}, tokenList = {}) => {
|
|
|
69767
69820
|
var NOISE_DEVIATION_BPS = 10;
|
|
69768
69821
|
var IMPLAUSIBLE_APR_PERCENT2 = 1e3;
|
|
69769
69822
|
var DUST_TVL_USD = 1e3;
|
|
69823
|
+
var AMPLIFYING_TENOR_SECS = 86400;
|
|
69770
69824
|
var impliedDeviationBps = (c) => {
|
|
69771
69825
|
const secs = c.expiry - c.nowSecs;
|
|
69772
69826
|
if (!(secs > 0)) return 0;
|
|
@@ -69788,7 +69842,8 @@ var isUnearnableRate = (args) => {
|
|
|
69788
69842
|
if (isImplausibleMagnitude(aprPercent, totalAssetsUsd)) return true;
|
|
69789
69843
|
if (expiry === void 0) return false;
|
|
69790
69844
|
const nowSecs = args.nowSecs ?? Math.floor(Date.now() / 1e3);
|
|
69791
|
-
|
|
69845
|
+
if (!isAnnualizationNoise({ aprPercent, expiry, nowSecs })) return false;
|
|
69846
|
+
return (totalAssetsUsd ?? 0) < DUST_TVL_USD || expiry - nowSecs < AMPLIFYING_TENOR_SECS;
|
|
69792
69847
|
};
|
|
69793
69848
|
|
|
69794
69849
|
// src/vaults/yearn/fetchPublic.ts
|
|
@@ -72363,9 +72418,13 @@ function feePhrase(fee) {
|
|
|
72363
72418
|
const bound = fee.mutable && fee.cap != null ? `, governance-set up to a maximum of ${fee.unit === "bps" ? `${fee.cap} bps` : pct(fee.cap)}` : fee.mutable ? ", governance-set" : "";
|
|
72364
72419
|
return `${fee.label}: ${amount4}${rebate}${bound}${qualifier}`;
|
|
72365
72420
|
}
|
|
72421
|
+
function hasMatured(m, nowSecs) {
|
|
72422
|
+
if (m.kind !== "fixed-date" || !m.maturity) return false;
|
|
72423
|
+
return m.maturity <= (Math.floor(Date.now() / 1e3));
|
|
72424
|
+
}
|
|
72366
72425
|
function maturityPhrase(m) {
|
|
72367
72426
|
if (m.kind === "fixed-date" && m.maturity)
|
|
72368
|
-
return
|
|
72427
|
+
return `${hasMatured(m) ? "matured" : "until"} ${shortDate(m.maturity)}`;
|
|
72369
72428
|
if (m.kind === "rolling-duration") {
|
|
72370
72429
|
if (m.maxDurationSecs) return `for up to ${duration(m.maxDurationSecs)}`;
|
|
72371
72430
|
return "for a term you choose";
|
|
@@ -72482,6 +72541,9 @@ function supplyHeadline(s, sheet = {}) {
|
|
|
72482
72541
|
const rate = `${rateLabel(s)} ${pct(s.rate.aprTotal)}${windowNote(s.rate)}${provenance(s.rate)}`;
|
|
72483
72542
|
const exit = headlineExitFromRoutes(s.exit.routes, sheet.asset?.symbol) ?? exitPhrase[String(s.exit.mode)] ?? (s.exit.settlement === "sync" ? "withdraw any time" : "delayed withdrawal");
|
|
72484
72543
|
const cooldown = s.exit.cooldownSecs ? ` (${duration(s.exit.cooldownSecs)})` : "";
|
|
72544
|
+
if (hasMatured(s.maturity)) {
|
|
72545
|
+
return `Matured ${shortDate(s.maturity.maturity)} \xB7 ${exit}${cooldown}`;
|
|
72546
|
+
}
|
|
72485
72547
|
const mat = s.maturity.kind === "perpetual" ? "" : ` ${maturityPhrase(s.maturity)}`;
|
|
72486
72548
|
const warmup = s.rate.warmupSecs ? ` \xB7 earns after ${duration(s.rate.warmupSecs)}` : "";
|
|
72487
72549
|
return `${rate}${mat}${warmup} \xB7 ${exit}${cooldown}`;
|
|
@@ -75082,24 +75144,27 @@ function earnMarketFromVault(row, chainId, opts = {}) {
|
|
|
75082
75144
|
const deposit = toPercent2(rates.depositRate);
|
|
75083
75145
|
const base = toPercent2(rates.supplyRate) ?? (deposit !== void 0 && rewards !== void 0 ? deposit - rewards : deposit);
|
|
75084
75146
|
const total = toPercent2(rates.totalRate) ?? deposit ?? sum(base, rewards) ?? 0;
|
|
75085
|
-
const rate = {
|
|
75086
|
-
total,
|
|
75087
|
-
base,
|
|
75088
|
-
rewards,
|
|
75089
|
-
// A vault has no separate intrinsic leg — whatever it pays IS the venue's
|
|
75090
|
-
// own yield. Leaving this undefined rendered an empty "Venue APR" on every
|
|
75091
|
-
// vault row, which read as "this vault pays nothing".
|
|
75092
|
-
marketOwn: total,
|
|
75093
|
-
// ...and for the same reason it can never be pass-through.
|
|
75094
|
-
passthrough: false,
|
|
75095
|
-
kind: resolveRateKind(provider, meta),
|
|
75096
|
-
source: EARN_RATE_SOURCE_BY_PROVIDER[provider] ?? "api",
|
|
75097
|
-
// The curator's cut. Dropped entirely until now, which left the earn row
|
|
75098
|
-
// unable to say why its net rate sits below the gross one — and left the
|
|
75099
|
-
// term sheet built from this row with no fee schedule at all.
|
|
75100
|
-
fee: toPercent2(rates.fee)
|
|
75101
|
-
};
|
|
75102
75147
|
const maturity = resolveMaturity(meta);
|
|
75148
|
+
const rate = earnRateAtMaturity(
|
|
75149
|
+
{
|
|
75150
|
+
total,
|
|
75151
|
+
base,
|
|
75152
|
+
rewards,
|
|
75153
|
+
// A vault has no separate intrinsic leg — whatever it pays IS the venue's
|
|
75154
|
+
// own yield. Leaving this undefined rendered an empty "Venue APR" on every
|
|
75155
|
+
// vault row, which read as "this vault pays nothing".
|
|
75156
|
+
marketOwn: total,
|
|
75157
|
+
// ...and for the same reason it can never be pass-through.
|
|
75158
|
+
passthrough: false,
|
|
75159
|
+
kind: resolveRateKind(provider, meta),
|
|
75160
|
+
source: EARN_RATE_SOURCE_BY_PROVIDER[provider] ?? "api",
|
|
75161
|
+
// The curator's cut. Dropped entirely until now, which left the earn row
|
|
75162
|
+
// unable to say why its net rate sits below the gross one — and left the
|
|
75163
|
+
// term sheet built from this row with no fee schedule at all.
|
|
75164
|
+
fee: toPercent2(rates.fee)
|
|
75165
|
+
},
|
|
75166
|
+
maturity
|
|
75167
|
+
);
|
|
75103
75168
|
const availability = resolveAvailability(meta, maturity);
|
|
75104
75169
|
const exitMode = resolveExitMode2(provider, meta, tvl, liq);
|
|
75105
75170
|
const market = {
|
|
@@ -75244,7 +75309,7 @@ function resolveAvailability(meta, maturity) {
|
|
|
75244
75309
|
const capFull = capacity === "0";
|
|
75245
75310
|
let gating;
|
|
75246
75311
|
let reason;
|
|
75247
|
-
if (
|
|
75312
|
+
if (isMaturedTerm(maturity)) {
|
|
75248
75313
|
gating = "matured";
|
|
75249
75314
|
reason = "This market has reached maturity";
|
|
75250
75315
|
} else if (isMintable === false) {
|
|
@@ -75289,9 +75354,26 @@ function resolveMaturity(meta) {
|
|
|
75289
75354
|
atMaturity: str6(meta.atMaturity) ?? "stops-earning"
|
|
75290
75355
|
};
|
|
75291
75356
|
}
|
|
75292
|
-
function
|
|
75357
|
+
function isMaturedTerm(maturity, nowSecs = Math.floor(Date.now() / 1e3)) {
|
|
75293
75358
|
if (!maturity?.maturity) return false;
|
|
75294
|
-
return maturity.maturity <=
|
|
75359
|
+
return maturity.maturity <= nowSecs;
|
|
75360
|
+
}
|
|
75361
|
+
function earnRateAtMaturity(rate, maturity, nowSecs) {
|
|
75362
|
+
if (!isMaturedTerm(maturity, nowSecs)) return rate;
|
|
75363
|
+
return {
|
|
75364
|
+
...rate,
|
|
75365
|
+
total: 0,
|
|
75366
|
+
// Every yield leg, not just the headline: a consumer that re-sums the legs
|
|
75367
|
+
// (or ranks on `marketOwn`, as the unified tab's second sort does) would
|
|
75368
|
+
// otherwise get the stale number back through the side door.
|
|
75369
|
+
...rate.base !== void 0 ? { base: 0 } : {},
|
|
75370
|
+
...rate.rewards !== void 0 ? { rewards: 0 } : {},
|
|
75371
|
+
...rate.intrinsic !== void 0 ? { intrinsic: 0 } : {},
|
|
75372
|
+
...rate.marketOwn !== void 0 ? { marketOwn: 0 } : {}
|
|
75373
|
+
// `fee`, `kind` and `source` are untouched: the fee schedule and the
|
|
75374
|
+
// mechanism are still facts about the instrument, and calling a matured
|
|
75375
|
+
// bond's rate anything but `fixed-term` would lose what it was.
|
|
75376
|
+
};
|
|
75295
75377
|
}
|
|
75296
75378
|
function amount2(raw, formatted, usd, decimals) {
|
|
75297
75379
|
const rawStr = raw != null ? String(raw) : void 0;
|
|
@@ -76137,7 +76219,7 @@ function parseMulticallRpcResponses(responses, batches, allowFailure = true, per
|
|
|
76137
76219
|
});
|
|
76138
76220
|
return allResults;
|
|
76139
76221
|
}
|
|
76140
|
-
var
|
|
76222
|
+
var ERC20_STRING_ABI = [
|
|
76141
76223
|
{
|
|
76142
76224
|
inputs: [],
|
|
76143
76225
|
name: "name",
|
|
@@ -76160,38 +76242,110 @@ var ERC20MetadataAbi = [
|
|
|
76160
76242
|
type: "function"
|
|
76161
76243
|
}
|
|
76162
76244
|
];
|
|
76163
|
-
|
|
76164
|
-
|
|
76165
|
-
|
|
76166
|
-
|
|
76167
|
-
|
|
76168
|
-
|
|
76169
|
-
|
|
76170
|
-
|
|
76171
|
-
|
|
76172
|
-
|
|
76173
|
-
|
|
76174
|
-
|
|
76175
|
-
|
|
76176
|
-
|
|
76177
|
-
|
|
76178
|
-
|
|
76179
|
-
|
|
76180
|
-
|
|
76181
|
-
|
|
76182
|
-
|
|
76183
|
-
|
|
76184
|
-
|
|
76185
|
-
|
|
76186
|
-
|
|
76187
|
-
|
|
76188
|
-
|
|
76245
|
+
var ERC20_BYTES32_ABI = [
|
|
76246
|
+
{
|
|
76247
|
+
inputs: [],
|
|
76248
|
+
name: "name",
|
|
76249
|
+
outputs: [{ internalType: "bytes32", name: "", type: "bytes32" }],
|
|
76250
|
+
stateMutability: "view",
|
|
76251
|
+
type: "function"
|
|
76252
|
+
},
|
|
76253
|
+
{
|
|
76254
|
+
inputs: [],
|
|
76255
|
+
name: "symbol",
|
|
76256
|
+
outputs: [{ internalType: "bytes32", name: "", type: "bytes32" }],
|
|
76257
|
+
stateMutability: "view",
|
|
76258
|
+
type: "function"
|
|
76259
|
+
}
|
|
76260
|
+
];
|
|
76261
|
+
var FAILED = "0x";
|
|
76262
|
+
function decodeBytes32(value) {
|
|
76263
|
+
if (typeof value !== "string" || !value.startsWith("0x")) return void 0;
|
|
76264
|
+
if (value === FAILED) return void 0;
|
|
76265
|
+
try {
|
|
76266
|
+
const decoded = hexToString(value).replace(/\0+$/, "").trim();
|
|
76267
|
+
return decoded.length > 0 ? decoded : void 0;
|
|
76268
|
+
} catch {
|
|
76269
|
+
return void 0;
|
|
76270
|
+
}
|
|
76271
|
+
}
|
|
76272
|
+
function asString(value) {
|
|
76273
|
+
if (typeof value !== "string") return void 0;
|
|
76274
|
+
if (value === FAILED) return void 0;
|
|
76275
|
+
const trimmed = value.trim();
|
|
76276
|
+
return trimmed.length > 0 ? trimmed : void 0;
|
|
76277
|
+
}
|
|
76278
|
+
async function fetchTokenMetadata(chain, addrs, options = {}) {
|
|
76279
|
+
const { rpcUrls, maxRetries: maxRetries2 = 3 } = options;
|
|
76280
|
+
const unique = [
|
|
76281
|
+
...new Set(
|
|
76282
|
+
addrs.filter((a) => typeof a === "string" && isAddress(a, { strict: false })).map((a) => a.toLowerCase())
|
|
76283
|
+
)
|
|
76284
|
+
];
|
|
76285
|
+
if (unique.length === 0) return {};
|
|
76286
|
+
const multicall = createMulticallRetryUniversal(
|
|
76287
|
+
rpcUrls?.length ? { [chain]: rpcUrls } : LIST_OVERRIDES
|
|
76288
|
+
);
|
|
76289
|
+
const calls = unique.flatMap((address) => [
|
|
76290
|
+
{ address, name: "name", args: [] },
|
|
76291
|
+
{ address, name: "symbol", args: [] },
|
|
76292
|
+
{ address, name: "decimals", args: [] }
|
|
76293
|
+
]);
|
|
76294
|
+
const results = await multicall({
|
|
76295
|
+
chain,
|
|
76296
|
+
calls,
|
|
76297
|
+
abi: ERC20_STRING_ABI,
|
|
76298
|
+
maxRetries: maxRetries2,
|
|
76299
|
+
allowFailure: true
|
|
76300
|
+
});
|
|
76301
|
+
const names = /* @__PURE__ */ new Map();
|
|
76302
|
+
const symbols = /* @__PURE__ */ new Map();
|
|
76303
|
+
const decimalsByAddr = /* @__PURE__ */ new Map();
|
|
76304
|
+
unique.forEach((address, i) => {
|
|
76305
|
+
names.set(address, asString(results[i * 3]));
|
|
76306
|
+
symbols.set(address, asString(results[i * 3 + 1]));
|
|
76307
|
+
const raw = results[i * 3 + 2];
|
|
76308
|
+
decimalsByAddr.set(
|
|
76309
|
+
address,
|
|
76310
|
+
typeof raw === "number" ? raw : typeof raw === "bigint" ? Number(raw) : void 0
|
|
76311
|
+
);
|
|
76189
76312
|
});
|
|
76190
|
-
|
|
76191
|
-
|
|
76192
|
-
|
|
76193
|
-
|
|
76194
|
-
const
|
|
76313
|
+
const needsBytes32 = unique.filter(
|
|
76314
|
+
(a) => decimalsByAddr.get(a) !== void 0 && (names.get(a) === void 0 || symbols.get(a) === void 0)
|
|
76315
|
+
);
|
|
76316
|
+
if (needsBytes32.length > 0) {
|
|
76317
|
+
const b32Calls = needsBytes32.flatMap((address) => [
|
|
76318
|
+
{ address, name: "name", args: [] },
|
|
76319
|
+
{ address, name: "symbol", args: [] }
|
|
76320
|
+
]);
|
|
76321
|
+
try {
|
|
76322
|
+
const b32 = await multicall({
|
|
76323
|
+
chain,
|
|
76324
|
+
calls: b32Calls,
|
|
76325
|
+
abi: ERC20_BYTES32_ABI,
|
|
76326
|
+
maxRetries: maxRetries2,
|
|
76327
|
+
allowFailure: true
|
|
76328
|
+
});
|
|
76329
|
+
needsBytes32.forEach((address, i) => {
|
|
76330
|
+
if (names.get(address) === void 0) {
|
|
76331
|
+
const decoded = decodeBytes32(b32[i * 2]);
|
|
76332
|
+
if (decoded) names.set(address, decoded);
|
|
76333
|
+
}
|
|
76334
|
+
if (symbols.get(address) === void 0) {
|
|
76335
|
+
const decoded = decodeBytes32(b32[i * 2 + 1]);
|
|
76336
|
+
if (decoded) symbols.set(address, decoded);
|
|
76337
|
+
}
|
|
76338
|
+
});
|
|
76339
|
+
} catch {
|
|
76340
|
+
}
|
|
76341
|
+
}
|
|
76342
|
+
const tokens = {};
|
|
76343
|
+
for (const address of unique) {
|
|
76344
|
+
const decimals = decimalsByAddr.get(address);
|
|
76345
|
+
if (decimals === void 0 || !Number.isInteger(decimals)) continue;
|
|
76346
|
+
if (decimals < 0 || decimals > 36) continue;
|
|
76347
|
+
const symbol = symbols.get(address) ?? `${address.slice(0, 6)}\u2026`;
|
|
76348
|
+
const name = names.get(address) ?? symbol;
|
|
76195
76349
|
tokens[address] = {
|
|
76196
76350
|
chainId: String(chain),
|
|
76197
76351
|
decimals,
|
|
@@ -76201,7 +76355,7 @@ async function fetchTokenMetadata(chain, addrs) {
|
|
|
76201
76355
|
assetGroup: `${symbol}::${name}`,
|
|
76202
76356
|
currencyId: `${symbol}::${name}`
|
|
76203
76357
|
};
|
|
76204
|
-
}
|
|
76358
|
+
}
|
|
76205
76359
|
return tokens;
|
|
76206
76360
|
}
|
|
76207
76361
|
function balanceFetcher() {
|
|
@@ -79469,6 +79623,6 @@ function earnPositionTotals(items) {
|
|
|
79469
79623
|
};
|
|
79470
79624
|
}
|
|
79471
79625
|
|
|
79472
|
-
export { ApiBookSource, DEFAULT_MIDNIGHT_API, DEFAULT_OUTLIER_GUARD, DEFAULT_PROFILE_ID, DEFAULT_STALE_REJECT_SECONDS, DEFAULT_TERMMAX_API, DEFAULT_TERM_ORDER_STORE, EARN_DESCRIPTIONS, EARN_LABELS, EARN_RATE_SOURCE_BY_PROVIDER, EMPTY_BALANCE, EXACTLY_LENDER_KEY, FLYING_TULIP_LENDER_KEY, FRACTION_RATE_PROVIDERS, GMX_API_HOSTS, GMX_READ_CONTRACTS, GMX_SUPPORTED_CHAINS, HYPERCORE_VAULT_REGISTRY, IDLE_MARKET_ID, INTERFACE_IDS, LAGOON_API_URL, LAGOON_CHAIN_IDS, MORPHO_LENS, MULTICALL_FAILURE, MaxParamThresholds, PASSTHROUGH_RATE_EPSILON, PENDLE_ASSETS_URL, PENDLE_CHAIN_IDS, PENDLE_MARKETS_URL, SDK_FRACTION_RATE_PROVIDERS, SPECTRA_NETWORKS, SPECTRA_RATE_MAX_PERCENT, SPECTRA_RATE_MIN_PERCENT, STABLECOIN_SYMBOLS, STCELO_MANAGER_ADDRESS, TELLER_CALLS_PER_BID, DECIMAL_BASE as TERMMAX_DECIMAL_BASE, TERMMAX_LIQUIDATION_PENALTY, TERMMAX_LIQUIDATION_WINDOW_SECS, TERMMAX_LIQUIDATOR_BONUS, TERMMAX_MARKETS_PER_CALL, TERMMAX_PARTIAL_CLOSE_FACTOR, TERMMAX_PARTIAL_LIQUIDATION_THRESHOLD_USD, TERM_ADAPTERS, TERM_PROFILES, TERM_SHEET_SCHEMA_VERSION, TermMaxApiSource, TermSubgraphSource, UPSHIFT_CHAIN_IDS, UPSHIFT_VAULTS_URL, VAULT_PROVIDERS, VAULT_PROVIDER_PROFILE, VAULT_PROVIDER_TRAITS, VAULT_SHARE_PRICE_PROBE, VAULT_VENUE_PREFIX, VOLATILE_VAULT_OVERRIDES, YEARN_CHAIN_IDS, YEARN_YDAEMON_BASE, __resetResupplyUserCaches, accountDepositListKey, accountWithdrawalListKey, appendSnapshot, applyEarnSanity, applyPositionDelta, attachImplications, attachPricesToFlashLiquidity, borrowDescription, borrowFindings, borrowHeadline, buildExposures2 as buildExposures, buildFluidFTokensCall, buildLendingPositionUid, buildLiquityUserCall, buildLoopResult, buildMorphoTypeCall, buildMorphoTypeUserCallWithLens, buildPortfolioTotals, buildSumerAccumulators, buildSummaries, buildTellerUserCall, buildTermMaxUserCall, buildTermSheet, buildTermSheetsForGroup, buildVaultEarnUid, buildVaultLookup, buildVaultTermSheet, calculateLeverage, calculateNetApr, calculateOverallNetApr, calculateWeightedAverage, classifyFreshness, classifyReliability, classifyVault, clearPendleMarketsCache, clearSpectraMarketsCache, collateralSymbolsByVenue, collectFeedObservations, computeBorrowDelta2 as computeBorrowDelta, computeCloseTradeDeltas, computeCollateralSwapDeltas, computeDebtSwapDeltas, computeDepositDelta2 as computeDepositDelta, computeEModeAnalysis, computeOpenTradeDeltas, computePostTradeMetrics, computeRepayDelta2 as computeRepayDelta, computeSumerBorrowDelta, computeSumerDepositDelta, computeSumerRepayDelta, computeSumerWaterfall, computeSumerWithdrawDelta, computeVaultApr, computeWithdrawDelta2 as computeWithdrawDelta, computeZapTradeDeltas, consensusReference, convertCoolerMarketsToResponse, convertDssMarketsToResponse, convertExactlyMarketsToResponse, convertFlyingTulipMarketsToResponse, convertFrankencoinMarketsToResponse, convertFraxlendPairsToResponse, convertInverseMarketsToResponse, convertLenderUserDataResult, convertLiquityMarketsToResponse, convertLlamaLendMarketsToResponse, convertResupplyMarketsToResponse, convertRiverMarketsToResponse, convertTellerMarketsToResponse, convertTermMarketsToResponse, convertTermMaxMarketsToResponse, convertUsddMarketsToResponse, createMarketUid, createMidnightBookSource, createMulticallRpcCall, createRawRpcCalls, createTermBookSource, createTermMaxDataSource, decodeListaMarkets, decodeMarkets, decodePackedListaUserDataset, decodePackedMorphoUserDataset, deriveBorrowTags, deriveSupplyTags, detectInterfaceKinds, dexResolverFor, disambiguateEarnNames, dssIlkBytes32, dssKeyParts, dssLenderKey, duration, earnDescription, earnLabel, earnMarketFromPool, earnMarketFromVault, earnMarketLabel, earnPositionFromLenderEntry, earnPositionFromVaultBalance, earnPositionTotals, earnRowSubtitle, earnUidFromMarketUid, earnVaultTerms, earnVenueKind, encodeBalanceFetcherCalldata, enrichTermSheet, enrichmentIndexFromRows, exactlyPairLtv, exactlyPenaltyRateToAprPercent, exactlyWadRateToPercent, feePhrase, feedKeyOf, feedStatKey, fetchCoolerMarkets, fetchDolomiteAccountNumbers, fetchDssMarkets, fetchEulerEarnVaults, fetchEulerEarnVaultsFromSubgraph, fetchEulerSubAccountIndexes, fetchExactlyMarkets, fetchFlashLiquidityForChain, fetchFluidDexState, fetchFluidFTokens, fetchFlyingTulipMarkets, fetchFrankencoinMarkets, fetchFraxlendPairs, fetchGeneralYields, fetchGeneralYieldsByMarketUid, fetchGmxExecutionFees, fetchGmxTickerPrices, fetchGmxVaults, fetchHypercoreVaults, fetchInverseMarkets, fetchLagoonApiVaults, fetchLagoonVaults, fetchLiquityMarkets, fetchListaVaultsFromChain, fetchLlamaLendMarkets, fetchMorphoUserBalances, fetchMorphoUserPositionMarkets, fetchMorphoVaults, fetchMorphoVaultsFromApi, fetchMorphoVaultsFromChain, fetchOraclePrices, fetchPendleApiAssets, fetchPendleApiMarkets, fetchPendlePrices, fetchPendlePtMarkets, fetchResupplyMarkets, fetchRiverMarkets, fetchSiloVaults, fetchSpectraApiMarkets, fetchSpectraPtMarkets, fetchTellerMarkets, fetchTermMarkets, fetchTermMaxMarkets, fetchTermStoreOrders, fetchTokenBalances, fetchTokenMetadata, fetchUpshiftApiVaults, fetchUpshiftVaults, fetchUsddMarkets, fetchYearnApiVaults, fetchYearnVaults, fillableRemaining, filterActiveLenders, filterLendersByProtocol, finalizeInfo, findingsFor, formatRaw, frankencoinKeyParts, frankencoinLenderKey, fraxlendAssetPerCollateral, fraxlendKeyParts, fraxlendLenderKey, fuseLenderData, generateLendingPools, getAavesForChain, getAssetConfig, getBalanceForMarketUid, getBorrowCapacity, getCachedFluidDexState, getCachedLiquityTroves, getCachedTellerBids, getCachedTermMaxDiscovery, getCachedTermMaxMarket, getCachedTermMaxMarkets, getCoreValidators, getFluidFTokensConverter, getGmxApiHost, getGmxReadContracts, getGmxUserPositions, getHealthFactor, getHypercoreUserPositions, getHypercoreVaultRegistry, getLenderAssets, getLenderPublicData, getLenderPublicDataAll, getLenderPublicDataViaApi, getLenderUserDataMulti, getLenderUserDataResult, getLendersForChain, getLstDelegation, getLstValidators, getLstWithdrawalRegistry, getLstWithdrawalRequests, getMaxAmountClose, getMaxAmountCollateralSwap, getMaxAmountDebtSwap, getMaxAmountOpen, getMergedUserData, getMorphoTypeMarketConverter, getReadFailurePolicy, getResolvedDolomiteAccountNumbers, getStCeloValidatorGroups, getSubAccountAddress, getSubAccountIndex, getTermProfile, getVaultPublicDataAll, getVaultWithdrawalRequests, hasCritical, hasEulerEarnVaultSubgraph, hasLagoonVaults, hasMorphoPositionIndex, hasMorphoUserApi, hasMorphoUserSubgraph, hasPendleMarkets, hasSpectraMarkets, hasUpshiftVaults, hasYearnVaults, ilkToKeySegment, implausibleRatePercent, inverseKeyParts, inverseLenderKey, isBoundNeed, isFailedCall, isIlliquid, isLendingPosition, isLiveMarket as isLivePendleMarket, isLiveSpectraMarket, isSecondaryMarketOnly, isStablecoinSymbol, isUnearnableEarnRate, isUnrealizableEarnRate, isVaultPosition, isVaultVenue, isYearnV3, keySegmentToIlk, keysFromMaps, lenderApiOnly, lenderFamily, liquityCandidateTroveIds, liquityKeyParts, liquityLenderKey, llamaLendKeyParts, llamaLendLenderKey, meetsLiquidityFloor, mergeDeep, multicall3Abi2 as multicall3Abi, nanTo, needsLenderApproval, needsTokenApproval, noOpResult, normalizeToBytes, organizeUserQueries, parseBalanceFetcherResult, parseEarnUid, parseMergedResult, parseMulticallRpcResponses, parseExpirySeconds as parsePendleExpirySeconds, parseRawRpcBatchResponses, parseRawRpcResponses, parseCurveFee as parseSpectraCurveFee, parsePtRate as parseSpectraPtRate, parseTermMaxLtv, parseTokenBalanceResult, pct, assetKey as pendleAssetKey, pickPool as pickSpectraPool, positivePart2 as positivePart, predictInverseEscrow, prepareLenderUserDataRpcCalls, prepareMergedMulticallParams, prepareMergedRpcCalls, prepareMulticallInputs, prepareTokenBalanceRpcCalls, priceGlvVaults, priceGmMarkets, probeAaveFeedTimestamps, pruneFeedStats, rankFindings, ratePercent, readVaultSharePrices, rejectOutliers as rejectPriceOutliers, repairImpossibleTvl, resolveAdapter, resolveDerivation, resolveEarnIdentity, resolveModeConfig, resolveStCeloDepositGroup, resolveVaultProfileId, resupplyKeyParts, resupplyLenderKey, resupplyMarketLabel, riverKeyParts, riverLenderKey, sanePercent as saneSpectraPercent, savingsAddresses, savingsBalanceKind, secondaryMarketVault, selectAssetGroupPrices, setMysticApiKey, shortDate, spectraAddress, spectraNetwork, spectraPoolsUrl, splitChainScopedAddress as splitPendleChainScopedAddress, stampCapabilities, stampEarnSubtitles, stampVaultClassification, stampVaultTermSheets, stripLeadingBrand, supplyDescription, supplyFindings, supplyHeadline, swapRoutedProvidersArePriceConsistent, tellerBpsToPercent, tellerImpliedLtv, tellerLenderKey, tellerPoolFromLenderKey, termApiBaseUrl, termLenderKey, termMaxApiBase, borrowNif as termMaxBorrowNif, curveApr as termMaxCurveApr, curveAprNumber as termMaxCurveAprNumber, daysToMaturity as termMaxDaysToMaturity, lendNif as termMaxLendNif, mintGtFeeRatio as termMaxMintGtFeeRatio, ratioToNumber as termMaxRatioToNumber, ratioToPercent as termMaxRatioToPercent, termOfferRateToAprPct, termOrderStoreBaseUrl, tickToAprNumber, tickToPrice, toDigest, toTermFillNow, toTermSheetInput, toVaultTermInput, trancheFromCounterparty, tryParseEarnUid, unflattenLenderData, updateFeedStats, usdValue, usddIlkBytes32, usddKeyParts, usddLenderKey, validateTermSheet, validateTermSheets, validateUserData, vaultSharesToAssets, vaultTermInputFromEarnMarket, vaultTermInputFromSourceRow, vaultTraits, vaultVenue, venueBrand, venueBrandKey, withMaturityLabel, withTrancheLabel };
|
|
79626
|
+
export { ApiBookSource, DEFAULT_MIDNIGHT_API, DEFAULT_OUTLIER_GUARD, DEFAULT_PROFILE_ID, DEFAULT_STALE_REJECT_SECONDS, DEFAULT_TERMMAX_API, DEFAULT_TERM_ORDER_STORE, EARN_DESCRIPTIONS, EARN_LABELS, EARN_RATE_SOURCE_BY_PROVIDER, EMPTY_BALANCE, EXACTLY_LENDER_KEY, FLYING_TULIP_LENDER_KEY, FRACTION_RATE_PROVIDERS, GMX_API_HOSTS, GMX_READ_CONTRACTS, GMX_SUPPORTED_CHAINS, HYPERCORE_VAULT_REGISTRY, IDLE_MARKET_ID, INTERFACE_IDS, LAGOON_API_URL, LAGOON_CHAIN_IDS, MORPHO_LENS, MULTICALL_FAILURE, MaxParamThresholds, PASSTHROUGH_RATE_EPSILON, PENDLE_ASSETS_URL, PENDLE_CHAIN_IDS, PENDLE_MARKETS_URL, SDK_FRACTION_RATE_PROVIDERS, SPECTRA_NETWORKS, SPECTRA_RATE_MAX_PERCENT, SPECTRA_RATE_MIN_PERCENT, STABLECOIN_SYMBOLS, STCELO_MANAGER_ADDRESS, TELLER_CALLS_PER_BID, DECIMAL_BASE as TERMMAX_DECIMAL_BASE, TERMMAX_LIQUIDATION_PENALTY, TERMMAX_LIQUIDATION_WINDOW_SECS, TERMMAX_LIQUIDATOR_BONUS, TERMMAX_MARKETS_PER_CALL, TERMMAX_PARTIAL_CLOSE_FACTOR, TERMMAX_PARTIAL_LIQUIDATION_THRESHOLD_USD, TERM_ADAPTERS, TERM_PROFILES, TERM_SHEET_SCHEMA_VERSION, TermMaxApiSource, TermSubgraphSource, UPSHIFT_CHAIN_IDS, UPSHIFT_VAULTS_URL, VAULT_PROVIDERS, VAULT_PROVIDER_PROFILE, VAULT_PROVIDER_TRAITS, VAULT_SHARE_PRICE_PROBE, VAULT_VENUE_PREFIX, VOLATILE_VAULT_OVERRIDES, YEARN_CHAIN_IDS, YEARN_YDAEMON_BASE, __resetResupplyUserCaches, accountDepositListKey, accountWithdrawalListKey, appendSnapshot, applyEarnSanity, applyPositionDelta, attachImplications, attachPricesToFlashLiquidity, borrowDescription, borrowFindings, borrowHeadline, buildExposures2 as buildExposures, buildFluidFTokensCall, buildLendingPositionUid, buildLiquityUserCall, buildLoopResult, buildMorphoTypeCall, buildMorphoTypeUserCallWithLens, buildPortfolioTotals, buildSumerAccumulators, buildSummaries, buildTellerUserCall, buildTermMaxUserCall, buildTermSheet, buildTermSheetsForGroup, buildVaultEarnUid, buildVaultLookup, buildVaultTermSheet, calculateLeverage, calculateNetApr, calculateOverallNetApr, calculateWeightedAverage, classifyFreshness, classifyReliability, classifyVault, clearPendleMarketsCache, clearSpectraMarketsCache, collateralSymbolsByVenue, collectFeedObservations, computeBorrowDelta2 as computeBorrowDelta, computeCloseTradeDeltas, computeCollateralSwapDeltas, computeDebtSwapDeltas, computeDepositDelta2 as computeDepositDelta, computeEModeAnalysis, computeOpenTradeDeltas, computePostTradeMetrics, computeRepayDelta2 as computeRepayDelta, computeSumerBorrowDelta, computeSumerDepositDelta, computeSumerRepayDelta, computeSumerWaterfall, computeSumerWithdrawDelta, computeVaultApr, computeWithdrawDelta2 as computeWithdrawDelta, computeZapTradeDeltas, consensusReference, convertCoolerMarketsToResponse, convertDssMarketsToResponse, convertExactlyMarketsToResponse, convertFlyingTulipMarketsToResponse, convertFrankencoinMarketsToResponse, convertFraxlendPairsToResponse, convertInverseMarketsToResponse, convertLenderUserDataResult, convertLiquityMarketsToResponse, convertLlamaLendMarketsToResponse, convertResupplyMarketsToResponse, convertRiverMarketsToResponse, convertTellerMarketsToResponse, convertTermMarketsToResponse, convertTermMaxMarketsToResponse, convertUsddMarketsToResponse, createMarketUid, createMidnightBookSource, createMulticallRpcCall, createRawRpcCalls, createTermBookSource, createTermMaxDataSource, decodeListaMarkets, decodeMarkets, decodePackedListaUserDataset, decodePackedMorphoUserDataset, deriveBorrowTags, deriveSupplyTags, detectInterfaceKinds, dexResolverFor, disambiguateEarnNames, dssIlkBytes32, dssKeyParts, dssLenderKey, duration, earnDescription, earnLabel, earnMarketFromPool, earnMarketFromVault, earnMarketLabel, earnPositionFromLenderEntry, earnPositionFromVaultBalance, earnPositionTotals, earnRateAtMaturity, earnRowSubtitle, earnUidFromMarketUid, earnVaultTerms, earnVenueKind, encodeBalanceFetcherCalldata, enrichTermSheet, enrichmentIndexFromRows, exactlyPairLtv, exactlyPenaltyRateToAprPercent, exactlyWadRateToPercent, feePhrase, feedKeyOf, feedStatKey, fetchCoolerMarkets, fetchDolomiteAccountNumbers, fetchDssMarkets, fetchEulerEarnVaults, fetchEulerEarnVaultsFromSubgraph, fetchEulerSubAccountIndexes, fetchExactlyMarkets, fetchFlashLiquidityForChain, fetchFluidDexState, fetchFluidFTokens, fetchFlyingTulipMarkets, fetchFrankencoinMarkets, fetchFraxlendPairs, fetchGeneralYields, fetchGeneralYieldsByMarketUid, fetchGmxExecutionFees, fetchGmxTickerPrices, fetchGmxVaults, fetchHypercoreVaults, fetchInverseMarkets, fetchLagoonApiVaults, fetchLagoonVaults, fetchLiquityMarkets, fetchListaVaultsFromChain, fetchLlamaLendMarkets, fetchMorphoUserBalances, fetchMorphoUserPositionMarkets, fetchMorphoVaults, fetchMorphoVaultsFromApi, fetchMorphoVaultsFromChain, fetchOraclePrices, fetchPendleApiAssets, fetchPendleApiMarkets, fetchPendlePrices, fetchPendlePtMarkets, fetchResupplyMarkets, fetchRiverMarkets, fetchSiloVaults, fetchSpectraApiMarkets, fetchSpectraPtMarkets, fetchTellerMarkets, fetchTermMarkets, fetchTermMaxMarkets, fetchTermStoreOrders, fetchTokenBalances, fetchTokenMetadata, fetchUpshiftApiVaults, fetchUpshiftVaults, fetchUsddMarkets, fetchYearnApiVaults, fetchYearnVaults, fillableRemaining, filterActiveLenders, filterLendersByProtocol, finalizeInfo, findingsFor, formatRaw, frankencoinKeyParts, frankencoinLenderKey, fraxlendAssetPerCollateral, fraxlendKeyParts, fraxlendLenderKey, fuseLenderData, generateLendingPools, getAavesForChain, getAssetConfig, getBalanceForMarketUid, getBorrowCapacity, getCachedFluidDexState, getCachedLiquityTroves, getCachedTellerBids, getCachedTermMaxDiscovery, getCachedTermMaxMarket, getCachedTermMaxMarkets, getCoreValidators, getFluidFTokensConverter, getGmxApiHost, getGmxReadContracts, getGmxUserPositions, getHealthFactor, getHypercoreUserPositions, getHypercoreVaultRegistry, getLenderAssets, getLenderPublicData, getLenderPublicDataAll, getLenderPublicDataViaApi, getLenderUserDataMulti, getLenderUserDataResult, getLendersForChain, getLstDelegation, getLstValidators, getLstWithdrawalRegistry, getLstWithdrawalRequests, getMaxAmountClose, getMaxAmountCollateralSwap, getMaxAmountDebtSwap, getMaxAmountOpen, getMergedUserData, getMorphoTypeMarketConverter, getReadFailurePolicy, getResolvedDolomiteAccountNumbers, getStCeloValidatorGroups, getSubAccountAddress, getSubAccountIndex, getTermProfile, getVaultPublicDataAll, getVaultWithdrawalRequests, hasCritical, hasEulerEarnVaultSubgraph, hasLagoonVaults, hasMorphoPositionIndex, hasMorphoUserApi, hasMorphoUserSubgraph, hasPendleMarkets, hasSpectraMarkets, hasUpshiftVaults, hasYearnVaults, ilkToKeySegment, implausibleRatePercent, inverseKeyParts, inverseLenderKey, isBoundNeed, isFailedCall, isIlliquid, isLendingPosition, isLiveMarket as isLivePendleMarket, isLiveSpectraMarket, isMaturedTerm, isSecondaryMarketOnly, isStablecoinSymbol, isUnearnableEarnRate, isUnrealizableEarnRate, isVaultPosition, isVaultVenue, isYearnV3, keySegmentToIlk, keysFromMaps, lenderApiOnly, lenderFamily, liquityCandidateTroveIds, liquityKeyParts, liquityLenderKey, llamaLendKeyParts, llamaLendLenderKey, meetsLiquidityFloor, mergeDeep, multicall3Abi2 as multicall3Abi, nanTo, needsLenderApproval, needsTokenApproval, noOpResult, normalizeToBytes, organizeUserQueries, parseBalanceFetcherResult, parseEarnUid, parseMergedResult, parseMulticallRpcResponses, parseExpirySeconds as parsePendleExpirySeconds, parseRawRpcBatchResponses, parseRawRpcResponses, parseCurveFee as parseSpectraCurveFee, parsePtRate as parseSpectraPtRate, parseTermMaxLtv, parseTokenBalanceResult, pct, assetKey as pendleAssetKey, pickPool as pickSpectraPool, positivePart2 as positivePart, predictInverseEscrow, prepareLenderUserDataRpcCalls, prepareMergedMulticallParams, prepareMergedRpcCalls, prepareMulticallInputs, prepareTokenBalanceRpcCalls, priceGlvVaults, priceGmMarkets, probeAaveFeedTimestamps, pruneFeedStats, rankFindings, ratePercent, readVaultSharePrices, rejectOutliers as rejectPriceOutliers, repairImpossibleTvl, resolveAdapter, resolveDerivation, resolveEarnIdentity, resolveModeConfig, resolveStCeloDepositGroup, resolveVaultProfileId, resupplyKeyParts, resupplyLenderKey, resupplyMarketLabel, riverKeyParts, riverLenderKey, sanePercent as saneSpectraPercent, savingsAddresses, savingsBalanceKind, secondaryMarketVault, selectAssetGroupPrices, setMysticApiKey, shortDate, spectraAddress, spectraNetwork, spectraPoolsUrl, splitChainScopedAddress as splitPendleChainScopedAddress, stampCapabilities, stampEarnSubtitles, stampVaultClassification, stampVaultTermSheets, stripLeadingBrand, supplyDescription, supplyFindings, supplyHeadline, swapRoutedProvidersArePriceConsistent, tellerBpsToPercent, tellerImpliedLtv, tellerLenderKey, tellerPoolFromLenderKey, termApiBaseUrl, termLenderKey, termMaxApiBase, borrowNif as termMaxBorrowNif, curveApr as termMaxCurveApr, curveAprNumber as termMaxCurveAprNumber, daysToMaturity as termMaxDaysToMaturity, lendNif as termMaxLendNif, mintGtFeeRatio as termMaxMintGtFeeRatio, ratioToNumber as termMaxRatioToNumber, ratioToPercent as termMaxRatioToPercent, termOfferRateToAprPct, termOrderStoreBaseUrl, tickToAprNumber, tickToPrice, toDigest, toTermFillNow, toTermSheetInput, toVaultTermInput, trancheFromCounterparty, tryParseEarnUid, unflattenLenderData, updateFeedStats, usdValue, usddIlkBytes32, usddKeyParts, usddLenderKey, validateTermSheet, validateTermSheets, validateUserData, vaultSharesToAssets, vaultTermInputFromEarnMarket, vaultTermInputFromSourceRow, vaultTraits, vaultVenue, venueBrand, venueBrandKey, withMaturityLabel, withTrancheLabel };
|
|
79473
79627
|
//# sourceMappingURL=index.js.map
|
|
79474
79628
|
//# sourceMappingURL=index.js.map
|