@1delta/margin-fetcher 0.0.167 → 0.0.169
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/ccip-G7HDSZ4N.js +5 -0
- package/dist/{ccip-MRVHO3PE.js.map → ccip-G7HDSZ4N.js.map} +1 -1
- package/dist/{chunk-QCZNLSVI.js → chunk-ZVIJSUIM.js} +100 -83
- package/dist/chunk-ZVIJSUIM.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +424 -194
- package/dist/index.js.map +1 -1
- package/dist/lending/index.d.ts +1 -1
- package/dist/lending/index.d.ts.map +1 -1
- package/dist/lending/user-data/compound-v2/userCallParse.d.ts.map +1 -1
- package/dist/lending/user-data/summary/buildPortfolioTotals.d.ts +2 -2
- package/dist/lending/user-data/summary/buildPortfolioTotals.d.ts.map +1 -1
- package/dist/lending/user-data/summary/buildSummaries.d.ts +4 -4
- package/dist/lending/user-data/summary/buildSummaries.d.ts.map +1 -1
- package/dist/lending/user-data/summary/types.d.ts +36 -29
- package/dist/lending/user-data/summary/types.d.ts.map +1 -1
- package/dist/lending/user-data/summary/utils.d.ts +33 -0
- package/dist/lending/user-data/summary/utils.d.ts.map +1 -1
- package/dist/utils/parsing.d.ts.map +1 -1
- package/dist/yields/fetchGeneralYields.d.ts +2 -1
- package/dist/yields/fetchGeneralYields.d.ts.map +1 -1
- package/dist/yields/index.d.ts +5 -2
- package/dist/yields/index.d.ts.map +1 -1
- package/dist/yields/intrinsic/fetchers/angle.d.ts +3 -0
- package/dist/yields/intrinsic/fetchers/angle.d.ts.map +1 -0
- package/dist/yields/intrinsic/fetchers/coinbase.d.ts +3 -0
- package/dist/yields/intrinsic/fetchers/coinbase.d.ts.map +1 -0
- package/dist/yields/intrinsic/fetchers/ethena.d.ts +3 -0
- package/dist/yields/intrinsic/fetchers/ethena.d.ts.map +1 -0
- package/dist/yields/{fetchers → intrinsic/fetchers}/etherfi.d.ts +1 -1
- package/dist/yields/intrinsic/fetchers/etherfi.d.ts.map +1 -0
- package/dist/yields/intrinsic/fetchers/gmx.d.ts +3 -0
- package/dist/yields/intrinsic/fetchers/gmx.d.ts.map +1 -0
- package/dist/yields/{fetchers → intrinsic/fetchers}/hyperbeat.d.ts +1 -1
- package/dist/yields/intrinsic/fetchers/hyperbeat.d.ts.map +1 -0
- package/dist/yields/intrinsic/fetchers/hyperlend.d.ts +3 -0
- package/dist/yields/intrinsic/fetchers/hyperlend.d.ts.map +1 -0
- package/dist/yields/{fetchers → intrinsic/fetchers}/hyperliquid.d.ts +1 -1
- package/dist/yields/intrinsic/fetchers/hyperliquid.d.ts.map +1 -0
- package/dist/yields/intrinsic/fetchers/jito.d.ts +3 -0
- package/dist/yields/intrinsic/fetchers/jito.d.ts.map +1 -0
- package/dist/yields/intrinsic/fetchers/kelp.d.ts +3 -0
- package/dist/yields/intrinsic/fetchers/kelp.d.ts.map +1 -0
- package/dist/yields/{fetchers → intrinsic/fetchers}/lido.d.ts +1 -1
- package/dist/yields/intrinsic/fetchers/lido.d.ts.map +1 -0
- package/dist/yields/intrinsic/fetchers/mantle.d.ts +3 -0
- package/dist/yields/intrinsic/fetchers/mantle.d.ts.map +1 -0
- package/dist/yields/intrinsic/fetchers/maple.d.ts +3 -0
- package/dist/yields/intrinsic/fetchers/maple.d.ts.map +1 -0
- package/dist/yields/intrinsic/fetchers/morphoVaults.d.ts +3 -0
- package/dist/yields/intrinsic/fetchers/morphoVaults.d.ts.map +1 -0
- package/dist/yields/intrinsic/fetchers/ondo.d.ts +3 -0
- package/dist/yields/intrinsic/fetchers/ondo.d.ts.map +1 -0
- package/dist/yields/intrinsic/fetchers/pendle.d.ts +3 -0
- package/dist/yields/intrinsic/fetchers/pendle.d.ts.map +1 -0
- package/dist/yields/intrinsic/fetchers/puffer.d.ts +3 -0
- package/dist/yields/intrinsic/fetchers/puffer.d.ts.map +1 -0
- package/dist/yields/intrinsic/fetchers/renzo.d.ts +3 -0
- package/dist/yields/intrinsic/fetchers/renzo.d.ts.map +1 -0
- package/dist/yields/intrinsic/fetchers/reserve.d.ts +3 -0
- package/dist/yields/intrinsic/fetchers/reserve.d.ts.map +1 -0
- package/dist/yields/intrinsic/fetchers/reservoir.d.ts +3 -0
- package/dist/yields/intrinsic/fetchers/reservoir.d.ts.map +1 -0
- package/dist/yields/{fetchers → intrinsic/fetchers}/resolv.d.ts +1 -1
- package/dist/yields/intrinsic/fetchers/resolv.d.ts.map +1 -0
- package/dist/yields/intrinsic/fetchers/rocketpool.d.ts +3 -0
- package/dist/yields/intrinsic/fetchers/rocketpool.d.ts.map +1 -0
- package/dist/yields/intrinsic/fetchers/savax.d.ts +3 -0
- package/dist/yields/intrinsic/fetchers/savax.d.ts.map +1 -0
- package/dist/yields/intrinsic/fetchers/sky.d.ts +3 -0
- package/dist/yields/intrinsic/fetchers/sky.d.ts.map +1 -0
- package/dist/yields/{fetchers → intrinsic/fetchers}/stader.d.ts +1 -1
- package/dist/yields/intrinsic/fetchers/stader.d.ts.map +1 -0
- package/dist/yields/intrinsic/fetchers/stakewise.d.ts +3 -0
- package/dist/yields/intrinsic/fetchers/stakewise.d.ts.map +1 -0
- package/dist/yields/intrinsic/fetchers/superreturn.d.ts +3 -0
- package/dist/yields/intrinsic/fetchers/superreturn.d.ts.map +1 -0
- package/dist/yields/intrinsic/fetchers/swell.d.ts +3 -0
- package/dist/yields/intrinsic/fetchers/swell.d.ts.map +1 -0
- package/dist/yields/intrinsic/fetchers/theo.d.ts +3 -0
- package/dist/yields/intrinsic/fetchers/theo.d.ts.map +1 -0
- package/dist/yields/intrinsic/fetchers/trufin.d.ts +3 -0
- package/dist/yields/intrinsic/fetchers/trufin.d.ts.map +1 -0
- package/dist/yields/intrinsic/fetchers/usdai.d.ts +3 -0
- package/dist/yields/intrinsic/fetchers/usdai.d.ts.map +1 -0
- package/dist/yields/intrinsic/fetchers/usdx.d.ts +3 -0
- package/dist/yields/intrinsic/fetchers/usdx.d.ts.map +1 -0
- package/dist/yields/{fetchers → intrinsic/fetchers}/usual.d.ts +1 -1
- package/dist/yields/intrinsic/fetchers/usual.d.ts.map +1 -0
- package/dist/yields/intrinsic/fetchers/yearnKatana.d.ts +3 -0
- package/dist/yields/intrinsic/fetchers/yearnKatana.d.ts.map +1 -0
- package/dist/yields/intrinsic/fetchers/yieldfi.d.ts +3 -0
- package/dist/yields/intrinsic/fetchers/yieldfi.d.ts.map +1 -0
- package/dist/yields/intrinsic/fetchers/yieldnest.d.ts +3 -0
- package/dist/yields/intrinsic/fetchers/yieldnest.d.ts.map +1 -0
- package/dist/yields/intrinsic/fetchers/yoProtocol.d.ts +3 -0
- package/dist/yields/intrinsic/fetchers/yoProtocol.d.ts.map +1 -0
- package/dist/yields/intrinsic/index.d.ts +5 -0
- package/dist/yields/intrinsic/index.d.ts.map +1 -0
- package/dist/yields/rewards/fetchLenderRewards.d.ts +9 -0
- package/dist/yields/rewards/fetchLenderRewards.d.ts.map +1 -0
- package/dist/yields/rewards/index.d.ts +5 -0
- package/dist/yields/rewards/index.d.ts.map +1 -0
- package/dist/yields/rewards/merkl.d.ts +22 -0
- package/dist/yields/rewards/merkl.d.ts.map +1 -0
- package/dist/yields/rewards/types.d.ts +68 -0
- package/dist/yields/rewards/types.d.ts.map +1 -0
- package/dist/yields/types.d.ts +18 -6
- package/dist/yields/types.d.ts.map +1 -1
- package/package.json +4 -4
- package/dist/ccip-MRVHO3PE.js +0 -5
- package/dist/chunk-QCZNLSVI.js.map +0 -1
- package/dist/yields/fetchers/angle.d.ts +0 -3
- package/dist/yields/fetchers/angle.d.ts.map +0 -1
- package/dist/yields/fetchers/coinbase.d.ts +0 -3
- package/dist/yields/fetchers/coinbase.d.ts.map +0 -1
- package/dist/yields/fetchers/ethena.d.ts +0 -3
- package/dist/yields/fetchers/ethena.d.ts.map +0 -1
- package/dist/yields/fetchers/etherfi.d.ts.map +0 -1
- package/dist/yields/fetchers/gmx.d.ts +0 -3
- package/dist/yields/fetchers/gmx.d.ts.map +0 -1
- package/dist/yields/fetchers/hyperbeat.d.ts.map +0 -1
- package/dist/yields/fetchers/hyperlend.d.ts +0 -3
- package/dist/yields/fetchers/hyperlend.d.ts.map +0 -1
- package/dist/yields/fetchers/hyperliquid.d.ts.map +0 -1
- package/dist/yields/fetchers/jito.d.ts +0 -3
- package/dist/yields/fetchers/jito.d.ts.map +0 -1
- package/dist/yields/fetchers/kelp.d.ts +0 -3
- package/dist/yields/fetchers/kelp.d.ts.map +0 -1
- package/dist/yields/fetchers/lido.d.ts.map +0 -1
- package/dist/yields/fetchers/mantle.d.ts +0 -3
- package/dist/yields/fetchers/mantle.d.ts.map +0 -1
- package/dist/yields/fetchers/maple.d.ts +0 -3
- package/dist/yields/fetchers/maple.d.ts.map +0 -1
- package/dist/yields/fetchers/morphoVaults.d.ts +0 -3
- package/dist/yields/fetchers/morphoVaults.d.ts.map +0 -1
- package/dist/yields/fetchers/pendle.d.ts +0 -3
- package/dist/yields/fetchers/pendle.d.ts.map +0 -1
- package/dist/yields/fetchers/puffer.d.ts +0 -3
- package/dist/yields/fetchers/puffer.d.ts.map +0 -1
- package/dist/yields/fetchers/renzo.d.ts +0 -3
- package/dist/yields/fetchers/renzo.d.ts.map +0 -1
- package/dist/yields/fetchers/reserve.d.ts +0 -3
- package/dist/yields/fetchers/reserve.d.ts.map +0 -1
- package/dist/yields/fetchers/reservoir.d.ts +0 -3
- package/dist/yields/fetchers/reservoir.d.ts.map +0 -1
- package/dist/yields/fetchers/resolv.d.ts.map +0 -1
- package/dist/yields/fetchers/rocketpool.d.ts +0 -3
- package/dist/yields/fetchers/rocketpool.d.ts.map +0 -1
- package/dist/yields/fetchers/savax.d.ts +0 -3
- package/dist/yields/fetchers/savax.d.ts.map +0 -1
- package/dist/yields/fetchers/sky.d.ts +0 -3
- package/dist/yields/fetchers/sky.d.ts.map +0 -1
- package/dist/yields/fetchers/stader.d.ts.map +0 -1
- package/dist/yields/fetchers/stakewise.d.ts +0 -3
- package/dist/yields/fetchers/stakewise.d.ts.map +0 -1
- package/dist/yields/fetchers/superreturn.d.ts +0 -3
- package/dist/yields/fetchers/superreturn.d.ts.map +0 -1
- package/dist/yields/fetchers/swell.d.ts +0 -3
- package/dist/yields/fetchers/swell.d.ts.map +0 -1
- package/dist/yields/fetchers/theo.d.ts +0 -3
- package/dist/yields/fetchers/theo.d.ts.map +0 -1
- package/dist/yields/fetchers/trufin.d.ts +0 -3
- package/dist/yields/fetchers/trufin.d.ts.map +0 -1
- package/dist/yields/fetchers/usdai.d.ts +0 -3
- package/dist/yields/fetchers/usdai.d.ts.map +0 -1
- package/dist/yields/fetchers/usdx.d.ts +0 -3
- package/dist/yields/fetchers/usdx.d.ts.map +0 -1
- package/dist/yields/fetchers/usual.d.ts.map +0 -1
- package/dist/yields/fetchers/yearnKatana.d.ts +0 -3
- package/dist/yields/fetchers/yearnKatana.d.ts.map +0 -1
- package/dist/yields/fetchers/yieldfi.d.ts +0 -3
- package/dist/yields/fetchers/yieldfi.d.ts.map +0 -1
- package/dist/yields/fetchers/yieldnest.d.ts +0 -3
- package/dist/yields/fetchers/yieldnest.d.ts.map +0 -1
- package/dist/yields/fetchers/yoProtocol.d.ts +0 -3
- package/dist/yields/fetchers/yoProtocol.d.ts.map +0 -1
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { parseAbi, formatEther, BaseError, encodeFunctionData, formatUnits, decodeFunctionResult, decodeAbiParameters, AbiEncodingLengthMismatchError, concatHex, isAddress, InvalidAddressError, pad, stringToHex, boolToHex, integerRegex, numberToHex, bytesRegex, BytesSizeMismatchError, arrayRegex, UnsupportedPackedAbiType } from './chunk-
|
|
1
|
+
import { parseAbi, formatEther, BaseError, encodeFunctionData, formatUnits, decodeFunctionResult, decodeAbiParameters, AbiEncodingLengthMismatchError, concatHex, isAddress, InvalidAddressError, pad, stringToHex, boolToHex, integerRegex, numberToHex, bytesRegex, BytesSizeMismatchError, arrayRegex, UnsupportedPackedAbiType } from './chunk-ZVIJSUIM.js';
|
|
2
2
|
import './chunk-BYTNVMX7.js';
|
|
3
3
|
import './chunk-PR4QN5HX.js';
|
|
4
4
|
import { Lender, isAaveType, isCompoundV3, isMultiMarket, isInit, isCompoundV2Type, isVenusType, isMorphoType, isSumerType, AAVE_V3_LENDERS, AAVE_V2_LENDERS, isAaveV2Type, isAaveV32Type, isAaveV3Type, isYLDR, isCompoundV3Type, isTectonicType, isBenqiType, isLista } from '@1delta/lender-registry';
|
|
@@ -7848,7 +7848,7 @@ var buildCompoundV3StyleLenderReserveCall = (chainId, lender) => {
|
|
|
7848
7848
|
return calls;
|
|
7849
7849
|
};
|
|
7850
7850
|
|
|
7851
|
-
// ../../node_modules/.pnpm/viem@2.45.
|
|
7851
|
+
// ../../node_modules/.pnpm/viem@2.45.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@4.3.6/node_modules/viem/_esm/utils/abi/encodePacked.js
|
|
7852
7852
|
function encodePacked(types, values) {
|
|
7853
7853
|
if (types.length !== values.length)
|
|
7854
7854
|
throw new AbiEncodingLengthMismatchError({
|
|
@@ -7911,7 +7911,7 @@ function encode(type, value, isArray2 = false) {
|
|
|
7911
7911
|
throw new UnsupportedPackedAbiType(type);
|
|
7912
7912
|
}
|
|
7913
7913
|
|
|
7914
|
-
// ../../node_modules/.pnpm/viem@2.45.
|
|
7914
|
+
// ../../node_modules/.pnpm/viem@2.45.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@4.3.6/node_modules/viem/_esm/errors/unit.js
|
|
7915
7915
|
var InvalidDecimalNumberError = class extends BaseError {
|
|
7916
7916
|
constructor({ value }) {
|
|
7917
7917
|
super(`Number \`${value}\` is not a valid decimal number.`, {
|
|
@@ -7920,7 +7920,7 @@ var InvalidDecimalNumberError = class extends BaseError {
|
|
|
7920
7920
|
}
|
|
7921
7921
|
};
|
|
7922
7922
|
|
|
7923
|
-
// ../../node_modules/.pnpm/viem@2.45.
|
|
7923
|
+
// ../../node_modules/.pnpm/viem@2.45.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@4.3.6/node_modules/viem/_esm/utils/unit/parseUnits.js
|
|
7924
7924
|
function parseUnits(value, decimals) {
|
|
7925
7925
|
if (!/^(-?)([0-9]*)\.?([0-9]*)$/.test(value))
|
|
7926
7926
|
throw new InvalidDecimalNumberError({ value });
|
|
@@ -7955,7 +7955,7 @@ function parseUnits(value, decimals) {
|
|
|
7955
7955
|
return BigInt(`${negative ? "-" : ""}${integer}${fraction}`);
|
|
7956
7956
|
}
|
|
7957
7957
|
|
|
7958
|
-
// ../../node_modules/.pnpm/viem@2.45.
|
|
7958
|
+
// ../../node_modules/.pnpm/viem@2.45.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@4.3.6/node_modules/viem/_esm/constants/address.js
|
|
7959
7959
|
var zeroAddress = "0x0000000000000000000000000000000000000000";
|
|
7960
7960
|
|
|
7961
7961
|
// src/utils/parsing.ts
|
|
@@ -7977,7 +7977,8 @@ var BLOCK_TIMES = {
|
|
|
7977
7977
|
[Chain.POLYGON_MAINNET]: 2,
|
|
7978
7978
|
[Chain.BASE]: 1,
|
|
7979
7979
|
[Chain.CRONOS_MAINNET]: 0.5,
|
|
7980
|
-
[Chain.AVALANCHE_C_CHAIN]: 1
|
|
7980
|
+
[Chain.AVALANCHE_C_CHAIN]: 1,
|
|
7981
|
+
[Chain.CORE_BLOCKCHAIN_MAINNET]: 3
|
|
7981
7982
|
};
|
|
7982
7983
|
var SECONDS_PER_YEAR = 31536e3;
|
|
7983
7984
|
var apyToApr = (apy) => {
|
|
@@ -17481,8 +17482,10 @@ var getCompoundV2UserDataConverter = (lender, chainId, account, metaMap) => {
|
|
|
17481
17482
|
}
|
|
17482
17483
|
};
|
|
17483
17484
|
function createCompoundV2Entry(i, data, key, assetsIn, vToken, meta, claimableRewards) {
|
|
17484
|
-
const
|
|
17485
|
-
const
|
|
17485
|
+
const _depositsRaw = data[3 * i].toString();
|
|
17486
|
+
const _borrowsRaw = data[3 * i + 1].toString();
|
|
17487
|
+
const depositsRaw = _depositsRaw === "0x" ? "0" : _depositsRaw;
|
|
17488
|
+
const borrowsRaw = _borrowsRaw === "0x" ? "0" : _borrowsRaw;
|
|
17486
17489
|
const depositShares = data[3 * i + 2].toString();
|
|
17487
17490
|
const collateralEnabled = Boolean(assetsIn?.includes(vToken));
|
|
17488
17491
|
if (!collateralEnabled && depositsRaw === "0" && borrowsRaw === "0") {
|
|
@@ -23477,13 +23480,32 @@ function calculateOverallNetApr(totalDepositsUSD, totalDebtUSD, avgDepositApr, a
|
|
|
23477
23480
|
if (totalNetWorth === 0) return 0;
|
|
23478
23481
|
return (totalDepositsUSD * avgDepositApr - totalDebtUSD * avgBorrowApr) / Math.abs(totalNetWorth) * (totalNetWorth > 0 ? 1 : -1);
|
|
23479
23482
|
}
|
|
23483
|
+
function calculateWeightedAprs(items) {
|
|
23484
|
+
const wa = (field5, weightField) => calculateWeightedAverage(
|
|
23485
|
+
items.filter((i) => i[weightField] !== 0).map((i) => ({ value: i[field5], weight: Math.abs(i[weightField]) }))
|
|
23486
|
+
);
|
|
23487
|
+
return {
|
|
23488
|
+
apr: wa("apr", "nav"),
|
|
23489
|
+
depositApr: wa("depositApr", "deposits"),
|
|
23490
|
+
borrowApr: wa("borrowApr", "debt"),
|
|
23491
|
+
rewardApr: wa("rewardApr", "nav"),
|
|
23492
|
+
rewardDepositApr: wa("rewardDepositApr", "deposits"),
|
|
23493
|
+
rewardBorrowApr: wa("rewardBorrowApr", "debt"),
|
|
23494
|
+
intrinsicApr: wa("intrinsicApr", "nav"),
|
|
23495
|
+
intrinsicDepositApr: wa("intrinsicDepositApr", "deposits"),
|
|
23496
|
+
intrinsicBorrowApr: wa("intrinsicBorrowApr", "debt")
|
|
23497
|
+
};
|
|
23498
|
+
}
|
|
23480
23499
|
|
|
23481
23500
|
// src/lending/user-data/summary/buildPortfolioTotals.ts
|
|
23482
23501
|
function buildPortfolioTotals(userDataResult) {
|
|
23483
|
-
let
|
|
23484
|
-
let
|
|
23485
|
-
let
|
|
23502
|
+
let totalDeposits = 0;
|
|
23503
|
+
let totalDebt = 0;
|
|
23504
|
+
let totalCollateral = 0;
|
|
23505
|
+
let totalCollateralAllActive = 0;
|
|
23486
23506
|
let totalNav24h = 0;
|
|
23507
|
+
let totalDeposits24h = 0;
|
|
23508
|
+
let totalDebt24h = 0;
|
|
23487
23509
|
let lenderCount = 0;
|
|
23488
23510
|
const aprItems = [];
|
|
23489
23511
|
const activeChains = /* @__PURE__ */ new Set();
|
|
@@ -23491,61 +23513,51 @@ function buildPortfolioTotals(userDataResult) {
|
|
|
23491
23513
|
activeChains.add(chainId);
|
|
23492
23514
|
for (const [, userData] of Object.entries(lenders)) {
|
|
23493
23515
|
lenderCount++;
|
|
23494
|
-
let lenderDeposits = 0;
|
|
23495
|
-
let lenderDebt = 0;
|
|
23496
|
-
let lenderDepositAprSum = 0;
|
|
23497
|
-
let lenderBorrowAprSum = 0;
|
|
23498
|
-
let lenderDepositWeight = 0;
|
|
23499
|
-
let lenderDebtWeight = 0;
|
|
23500
23516
|
for (const subAccount of userData.data) {
|
|
23501
23517
|
const { balanceData: balanceData2, aprData: aprData2 } = subAccount;
|
|
23502
|
-
|
|
23503
|
-
|
|
23504
|
-
|
|
23505
|
-
|
|
23506
|
-
lenderDepositWeight += balanceData2.deposits;
|
|
23507
|
-
}
|
|
23508
|
-
if (balanceData2.debt > 0) {
|
|
23509
|
-
lenderBorrowAprSum += aprData2.borrowApr * balanceData2.debt;
|
|
23510
|
-
lenderDebtWeight += balanceData2.debt;
|
|
23511
|
-
}
|
|
23518
|
+
totalDeposits += balanceData2.deposits;
|
|
23519
|
+
totalDebt += balanceData2.debt;
|
|
23520
|
+
totalCollateral += balanceData2.collateral;
|
|
23521
|
+
totalCollateralAllActive += balanceData2.collateralAllActive;
|
|
23512
23522
|
totalNav24h += balanceData2.nav24h ?? 0;
|
|
23513
|
-
|
|
23514
|
-
|
|
23515
|
-
totalDepositsUSD += lenderDeposits;
|
|
23516
|
-
totalDebtUSD += lenderDebt;
|
|
23517
|
-
if (lenderDepositWeight > 0) {
|
|
23523
|
+
totalDeposits24h += balanceData2.deposits24h ?? 0;
|
|
23524
|
+
totalDebt24h += balanceData2.debt24h ?? 0;
|
|
23518
23525
|
aprItems.push({
|
|
23519
|
-
|
|
23520
|
-
|
|
23521
|
-
|
|
23522
|
-
|
|
23526
|
+
deposits: balanceData2.deposits,
|
|
23527
|
+
debt: balanceData2.debt,
|
|
23528
|
+
nav: balanceData2.deposits - balanceData2.debt,
|
|
23529
|
+
apr: aprData2.apr,
|
|
23530
|
+
depositApr: aprData2.depositApr,
|
|
23531
|
+
borrowApr: aprData2.borrowApr,
|
|
23532
|
+
rewardApr: aprData2.rewardApr,
|
|
23533
|
+
rewardDepositApr: aprData2.rewardDepositApr,
|
|
23534
|
+
rewardBorrowApr: aprData2.rewardBorrowApr,
|
|
23535
|
+
intrinsicApr: aprData2.intrinsicApr,
|
|
23536
|
+
intrinsicDepositApr: aprData2.intrinsicDepositApr,
|
|
23537
|
+
intrinsicBorrowApr: aprData2.intrinsicBorrowApr
|
|
23523
23538
|
});
|
|
23524
23539
|
}
|
|
23525
23540
|
}
|
|
23526
23541
|
}
|
|
23527
|
-
const
|
|
23528
|
-
const
|
|
23529
|
-
const
|
|
23530
|
-
const totalDebtWeight = aprItems.reduce((sum, a) => sum + a.debt, 0);
|
|
23531
|
-
const avgBorrowApr = totalDebtWeight > 0 ? aprItems.filter((a) => a.debt > 0).reduce((sum, a) => sum + a.borrowApr * a.debt, 0) / totalDebtWeight : 0;
|
|
23532
|
-
const avgNetApr = calculateOverallNetApr(
|
|
23533
|
-
totalDepositsUSD,
|
|
23534
|
-
totalDebtUSD,
|
|
23535
|
-
avgDepositApr,
|
|
23536
|
-
avgBorrowApr
|
|
23537
|
-
);
|
|
23538
|
-
const overallLeverage = calculateLeverage(totalDepositsUSD, totalNetWorth);
|
|
23542
|
+
const totalNav = totalDeposits - totalDebt;
|
|
23543
|
+
const leverage = calculateLeverage(totalDeposits, totalNav);
|
|
23544
|
+
const weightedAprs = calculateWeightedAprs(aprItems);
|
|
23539
23545
|
return {
|
|
23540
|
-
|
|
23541
|
-
|
|
23542
|
-
|
|
23543
|
-
|
|
23544
|
-
|
|
23545
|
-
|
|
23546
|
-
|
|
23547
|
-
|
|
23548
|
-
|
|
23546
|
+
balanceData: {
|
|
23547
|
+
deposits: totalDeposits,
|
|
23548
|
+
debt: totalDebt,
|
|
23549
|
+
collateral: totalCollateral,
|
|
23550
|
+
collateralAllActive: totalCollateralAllActive,
|
|
23551
|
+
nav: totalNav,
|
|
23552
|
+
deposits24h: totalDeposits24h,
|
|
23553
|
+
debt24h: totalDebt24h,
|
|
23554
|
+
nav24h: totalNav24h
|
|
23555
|
+
},
|
|
23556
|
+
aprData: {
|
|
23557
|
+
...weightedAprs,
|
|
23558
|
+
rewards: {}
|
|
23559
|
+
},
|
|
23560
|
+
leverage,
|
|
23549
23561
|
activeLenders: lenderCount,
|
|
23550
23562
|
activeChains: activeChains.size
|
|
23551
23563
|
};
|
|
@@ -23559,79 +23571,82 @@ function lenderSortPriority(lender) {
|
|
|
23559
23571
|
}
|
|
23560
23572
|
function aggregateLenderData(lender, userData) {
|
|
23561
23573
|
const { chainId, data } = userData;
|
|
23562
|
-
let
|
|
23563
|
-
let
|
|
23574
|
+
let totalDeposits = 0;
|
|
23575
|
+
let totalDebt = 0;
|
|
23564
23576
|
let totalCollateral = 0;
|
|
23577
|
+
let totalCollateralAllActive = 0;
|
|
23565
23578
|
let totalNav24h = 0;
|
|
23579
|
+
let totalDeposits24h = 0;
|
|
23580
|
+
let totalDebt24h = 0;
|
|
23566
23581
|
const subAccountSummaries = [];
|
|
23567
23582
|
const aprItems = [];
|
|
23568
|
-
let totalRewardApr = 0;
|
|
23569
|
-
let healthSum = 0;
|
|
23570
|
-
let healthCount = 0;
|
|
23571
23583
|
for (const subAccount of data) {
|
|
23572
|
-
const { balanceData:
|
|
23573
|
-
|
|
23574
|
-
|
|
23575
|
-
totalCollateral +=
|
|
23576
|
-
|
|
23577
|
-
|
|
23578
|
-
|
|
23579
|
-
|
|
23580
|
-
|
|
23581
|
-
|
|
23582
|
-
|
|
23583
|
-
|
|
23584
|
-
|
|
23585
|
-
|
|
23586
|
-
|
|
23587
|
-
|
|
23588
|
-
|
|
23584
|
+
const { balanceData: balanceData3, aprData: aprData2, positions, health, accountId, userConfig } = subAccount;
|
|
23585
|
+
totalDeposits += balanceData3.deposits;
|
|
23586
|
+
totalDebt += balanceData3.debt;
|
|
23587
|
+
totalCollateral += balanceData3.collateral;
|
|
23588
|
+
totalCollateralAllActive += balanceData3.collateralAllActive;
|
|
23589
|
+
totalNav24h += balanceData3.nav24h ?? 0;
|
|
23590
|
+
totalDeposits24h += balanceData3.deposits24h ?? 0;
|
|
23591
|
+
totalDebt24h += balanceData3.debt24h ?? 0;
|
|
23592
|
+
aprItems.push({
|
|
23593
|
+
deposits: balanceData3.deposits,
|
|
23594
|
+
debt: balanceData3.debt,
|
|
23595
|
+
nav: balanceData3.deposits - balanceData3.debt,
|
|
23596
|
+
apr: aprData2.apr,
|
|
23597
|
+
depositApr: aprData2.depositApr,
|
|
23598
|
+
borrowApr: aprData2.borrowApr,
|
|
23599
|
+
rewardApr: aprData2.rewardApr,
|
|
23600
|
+
rewardDepositApr: aprData2.rewardDepositApr,
|
|
23601
|
+
rewardBorrowApr: aprData2.rewardBorrowApr,
|
|
23602
|
+
intrinsicApr: aprData2.intrinsicApr,
|
|
23603
|
+
intrinsicDepositApr: aprData2.intrinsicDepositApr,
|
|
23604
|
+
intrinsicBorrowApr: aprData2.intrinsicBorrowApr
|
|
23605
|
+
});
|
|
23589
23606
|
subAccountSummaries.push({
|
|
23590
23607
|
accountId,
|
|
23591
23608
|
health,
|
|
23592
|
-
balanceData:
|
|
23609
|
+
balanceData: balanceData3,
|
|
23593
23610
|
aprData: aprData2,
|
|
23594
23611
|
userConfig,
|
|
23595
23612
|
positionCount: positions.length
|
|
23596
23613
|
});
|
|
23597
23614
|
}
|
|
23598
|
-
const
|
|
23599
|
-
const
|
|
23600
|
-
|
|
23601
|
-
|
|
23602
|
-
|
|
23603
|
-
|
|
23604
|
-
|
|
23605
|
-
|
|
23606
|
-
|
|
23607
|
-
|
|
23608
|
-
|
|
23609
|
-
|
|
23610
|
-
|
|
23615
|
+
const nav = totalDeposits - totalDebt;
|
|
23616
|
+
const leverage = calculateLeverage(totalDeposits, nav);
|
|
23617
|
+
const weightedAprs = calculateWeightedAprs(aprItems);
|
|
23618
|
+
const balanceData2 = {
|
|
23619
|
+
deposits: totalDeposits,
|
|
23620
|
+
debt: totalDebt,
|
|
23621
|
+
collateral: totalCollateral,
|
|
23622
|
+
collateralAllActive: totalCollateralAllActive,
|
|
23623
|
+
nav,
|
|
23624
|
+
deposits24h: totalDeposits24h,
|
|
23625
|
+
debt24h: totalDebt24h,
|
|
23626
|
+
nav24h: totalNav24h
|
|
23627
|
+
};
|
|
23611
23628
|
return {
|
|
23612
23629
|
lender,
|
|
23613
23630
|
chainId,
|
|
23614
|
-
|
|
23615
|
-
|
|
23616
|
-
|
|
23617
|
-
|
|
23618
|
-
|
|
23619
|
-
borrowApr,
|
|
23620
|
-
netApr,
|
|
23621
|
-
rewardApr: totalRewardApr,
|
|
23622
|
-
healthFactor,
|
|
23631
|
+
balanceData: balanceData2,
|
|
23632
|
+
aprData: {
|
|
23633
|
+
...weightedAprs,
|
|
23634
|
+
rewards: {}
|
|
23635
|
+
},
|
|
23623
23636
|
leverage,
|
|
23624
|
-
collateral: totalCollateral,
|
|
23625
23637
|
subAccounts: subAccountSummaries
|
|
23626
23638
|
};
|
|
23627
23639
|
}
|
|
23628
23640
|
function buildSummaries(userDataResult) {
|
|
23629
23641
|
const lenderSummaries = [];
|
|
23630
23642
|
const chainMap = {};
|
|
23631
|
-
let
|
|
23632
|
-
let
|
|
23633
|
-
let totalRewardApr = 0;
|
|
23643
|
+
let totalDeposits = 0;
|
|
23644
|
+
let totalDebt = 0;
|
|
23634
23645
|
let totalNav24h = 0;
|
|
23646
|
+
let totalDeposits24h = 0;
|
|
23647
|
+
let totalDebt24h = 0;
|
|
23648
|
+
let totalCollateral = 0;
|
|
23649
|
+
let totalCollateralAllActive = 0;
|
|
23635
23650
|
const aprItems = [];
|
|
23636
23651
|
const activeChains = /* @__PURE__ */ new Set();
|
|
23637
23652
|
for (const [chainId, lenders] of Object.entries(userDataResult)) {
|
|
@@ -23648,51 +23663,55 @@ function buildSummaries(userDataResult) {
|
|
|
23648
23663
|
for (const [lender, userData] of Object.entries(lenders)) {
|
|
23649
23664
|
const summary = aggregateLenderData(lender, userData);
|
|
23650
23665
|
lenderSummaries.push(summary);
|
|
23651
|
-
|
|
23652
|
-
|
|
23653
|
-
|
|
23654
|
-
|
|
23655
|
-
|
|
23656
|
-
|
|
23657
|
-
|
|
23658
|
-
|
|
23659
|
-
|
|
23660
|
-
|
|
23661
|
-
|
|
23662
|
-
|
|
23663
|
-
|
|
23664
|
-
|
|
23666
|
+
totalDeposits += summary.balanceData.deposits;
|
|
23667
|
+
totalDebt += summary.balanceData.debt;
|
|
23668
|
+
totalNav24h += summary.balanceData.nav24h;
|
|
23669
|
+
totalDeposits24h += summary.balanceData.deposits24h;
|
|
23670
|
+
totalDebt24h += summary.balanceData.debt24h;
|
|
23671
|
+
totalCollateral += summary.balanceData.collateral;
|
|
23672
|
+
totalCollateralAllActive += summary.balanceData.collateralAllActive;
|
|
23673
|
+
aprItems.push({
|
|
23674
|
+
deposits: summary.balanceData.deposits,
|
|
23675
|
+
debt: summary.balanceData.debt,
|
|
23676
|
+
nav: summary.balanceData.nav,
|
|
23677
|
+
apr: summary.aprData.apr,
|
|
23678
|
+
depositApr: summary.aprData.depositApr,
|
|
23679
|
+
borrowApr: summary.aprData.borrowApr,
|
|
23680
|
+
rewardApr: summary.aprData.rewardApr,
|
|
23681
|
+
rewardDepositApr: summary.aprData.rewardDepositApr,
|
|
23682
|
+
rewardBorrowApr: summary.aprData.rewardBorrowApr,
|
|
23683
|
+
intrinsicApr: summary.aprData.intrinsicApr,
|
|
23684
|
+
intrinsicDepositApr: summary.aprData.intrinsicDepositApr,
|
|
23685
|
+
intrinsicBorrowApr: summary.aprData.intrinsicBorrowApr
|
|
23686
|
+
});
|
|
23687
|
+
chainMap[chainId].totalDepositsUSD += summary.balanceData.deposits;
|
|
23688
|
+
chainMap[chainId].totalDebtUSD += summary.balanceData.debt;
|
|
23665
23689
|
chainMap[chainId].lenderCount++;
|
|
23666
23690
|
}
|
|
23667
23691
|
chainMap[chainId].netWorth = chainMap[chainId].totalDepositsUSD - chainMap[chainId].totalDebtUSD;
|
|
23668
23692
|
}
|
|
23669
|
-
const
|
|
23670
|
-
const
|
|
23671
|
-
|
|
23672
|
-
);
|
|
23673
|
-
const avgBorrowApr = calculateWeightedAverage(
|
|
23674
|
-
aprItems.filter((a) => a.debt > 0).map((a) => ({ value: a.borrowApr, weight: a.debt }))
|
|
23675
|
-
);
|
|
23676
|
-
const avgNetApr = calculateOverallNetApr(
|
|
23677
|
-
totalDepositsUSD,
|
|
23678
|
-
totalDebtUSD,
|
|
23679
|
-
avgDepositApr,
|
|
23680
|
-
avgBorrowApr
|
|
23681
|
-
);
|
|
23682
|
-
const overallLeverage = calculateLeverage(totalDepositsUSD, totalNetWorth);
|
|
23693
|
+
const totalNav = totalDeposits - totalDebt;
|
|
23694
|
+
const leverage = calculateLeverage(totalDeposits, totalNav);
|
|
23695
|
+
const weightedAprs = calculateWeightedAprs(aprItems);
|
|
23683
23696
|
lenderSummaries.sort(
|
|
23684
|
-
(a, b) => b.
|
|
23697
|
+
(a, b) => b.balanceData.nav - a.balanceData.nav || lenderSortPriority(a.lender) - lenderSortPriority(b.lender) || a.lender.localeCompare(b.lender)
|
|
23685
23698
|
);
|
|
23686
23699
|
return {
|
|
23687
|
-
|
|
23688
|
-
|
|
23689
|
-
|
|
23690
|
-
|
|
23691
|
-
|
|
23692
|
-
|
|
23693
|
-
|
|
23694
|
-
|
|
23695
|
-
|
|
23700
|
+
balanceData: {
|
|
23701
|
+
deposits: totalDeposits,
|
|
23702
|
+
debt: totalDebt,
|
|
23703
|
+
collateral: totalCollateral,
|
|
23704
|
+
collateralAllActive: totalCollateralAllActive,
|
|
23705
|
+
nav: totalNav,
|
|
23706
|
+
deposits24h: totalDeposits24h,
|
|
23707
|
+
debt24h: totalDebt24h,
|
|
23708
|
+
nav24h: totalNav24h
|
|
23709
|
+
},
|
|
23710
|
+
aprData: {
|
|
23711
|
+
...weightedAprs,
|
|
23712
|
+
rewards: {}
|
|
23713
|
+
},
|
|
23714
|
+
leverage,
|
|
23696
23715
|
activeLenders: lenderSummaries.length,
|
|
23697
23716
|
activeChains: activeChains.size,
|
|
23698
23717
|
lenders: lenderSummaries,
|
|
@@ -23701,7 +23720,7 @@ function buildSummaries(userDataResult) {
|
|
|
23701
23720
|
}
|
|
23702
23721
|
function filterActiveLenders(summary) {
|
|
23703
23722
|
const activeLenders = summary.lenders.filter(
|
|
23704
|
-
(l) => l.
|
|
23723
|
+
(l) => l.balanceData.deposits > 0 || l.balanceData.debt > 0
|
|
23705
23724
|
);
|
|
23706
23725
|
return {
|
|
23707
23726
|
...summary,
|
|
@@ -23724,7 +23743,7 @@ function fuseLenderData(userDataResult, summary) {
|
|
|
23724
23743
|
});
|
|
23725
23744
|
}
|
|
23726
23745
|
entries.sort(
|
|
23727
|
-
(a, b) => b.
|
|
23746
|
+
(a, b) => b.balanceData.nav - a.balanceData.nav || lenderSortPriority(a.lender) - lenderSortPriority(b.lender) || a.lender.localeCompare(b.lender)
|
|
23728
23747
|
);
|
|
23729
23748
|
return entries;
|
|
23730
23749
|
}
|
|
@@ -24912,7 +24931,7 @@ async function getListsMulti(chainIds) {
|
|
|
24912
24931
|
return res;
|
|
24913
24932
|
}
|
|
24914
24933
|
|
|
24915
|
-
// src/yields/fetchers/lido.ts
|
|
24934
|
+
// src/yields/intrinsic/fetchers/lido.ts
|
|
24916
24935
|
var WSTETH_URL = "https://eth-api.lido.fi/v1/protocol/steth/apr/sma";
|
|
24917
24936
|
var tETH = "Treehouse ETH::TETH";
|
|
24918
24937
|
var wstethFetcher = {
|
|
@@ -24933,7 +24952,7 @@ var stmaticFetcher = {
|
|
|
24933
24952
|
}
|
|
24934
24953
|
};
|
|
24935
24954
|
|
|
24936
|
-
// src/yields/fetchers/renzo.ts
|
|
24955
|
+
// src/yields/intrinsic/fetchers/renzo.ts
|
|
24937
24956
|
var EZETH_URL = "https://app.renzoprotocol.com/api/stats?chainId=1";
|
|
24938
24957
|
var ezethFetcher = {
|
|
24939
24958
|
label: "EZETH",
|
|
@@ -24943,7 +24962,7 @@ var ezethFetcher = {
|
|
|
24943
24962
|
}
|
|
24944
24963
|
};
|
|
24945
24964
|
|
|
24946
|
-
// src/yields/fetchers/rocketpool.ts
|
|
24965
|
+
// src/yields/intrinsic/fetchers/rocketpool.ts
|
|
24947
24966
|
var RETH_URL = "https://api.rocketpool.net/api/mainnet/payload";
|
|
24948
24967
|
var rethFetcher = {
|
|
24949
24968
|
label: "RETH",
|
|
@@ -24953,7 +24972,7 @@ var rethFetcher = {
|
|
|
24953
24972
|
}
|
|
24954
24973
|
};
|
|
24955
24974
|
|
|
24956
|
-
// src/yields/fetchers/etherfi.ts
|
|
24975
|
+
// src/yields/intrinsic/fetchers/etherfi.ts
|
|
24957
24976
|
var WEETH_URL = "https://www.ether.fi/api/apr";
|
|
24958
24977
|
var WEETHS_URL = "https://api.sevenseas.capital/etherfi/ethereum/performance/0x917ceE801a67f933F2e6b33fC0cD1ED2d5909D88";
|
|
24959
24978
|
var weeths = "Super Symbiotic LRT::weETHs";
|
|
@@ -24980,7 +24999,7 @@ var weethsFetcher = {
|
|
|
24980
24999
|
}
|
|
24981
25000
|
};
|
|
24982
25001
|
|
|
24983
|
-
// src/yields/fetchers/mantle.ts
|
|
25002
|
+
// src/yields/intrinsic/fetchers/mantle.ts
|
|
24984
25003
|
var METH_URL = "https://meth.mantle.xyz/api/stats/apy";
|
|
24985
25004
|
var methFetcher = {
|
|
24986
25005
|
label: "METH",
|
|
@@ -24991,7 +25010,7 @@ var methFetcher = {
|
|
|
24991
25010
|
}
|
|
24992
25011
|
};
|
|
24993
25012
|
|
|
24994
|
-
// src/yields/fetchers/ethena.ts
|
|
25013
|
+
// src/yields/intrinsic/fetchers/ethena.ts
|
|
24995
25014
|
var SUSDE_URL = "https://yields.llama.fi/poolsEnriched?pool=66985a81-9c51-46ca-9977-42b4fe7bc6df";
|
|
24996
25015
|
var susdeFetcher = {
|
|
24997
25016
|
label: "SUSDE",
|
|
@@ -25005,7 +25024,7 @@ var susdeFetcher = {
|
|
|
25005
25024
|
}
|
|
25006
25025
|
};
|
|
25007
25026
|
|
|
25008
|
-
// src/yields/fetchers/stader.ts
|
|
25027
|
+
// src/yields/intrinsic/fetchers/stader.ts
|
|
25009
25028
|
var MATICX_URL = "https://universe.staderlabs.com/polygon/apy";
|
|
25010
25029
|
var ETHX_URL = "https://universe.staderlabs.com/eth/apy";
|
|
25011
25030
|
var ethX = "Stader ETHx::ETHx";
|
|
@@ -25024,7 +25043,7 @@ var ethxFetcher = {
|
|
|
25024
25043
|
}
|
|
25025
25044
|
};
|
|
25026
25045
|
|
|
25027
|
-
// src/yields/fetchers/savax.ts
|
|
25046
|
+
// src/yields/intrinsic/fetchers/savax.ts
|
|
25028
25047
|
var SAVAX_URL = "https://api.benqi.fi/liquidstaking/apr";
|
|
25029
25048
|
var savaxFetcher = {
|
|
25030
25049
|
label: "SAVAX",
|
|
@@ -25034,7 +25053,7 @@ var savaxFetcher = {
|
|
|
25034
25053
|
}
|
|
25035
25054
|
};
|
|
25036
25055
|
|
|
25037
|
-
// src/yields/fetchers/coinbase.ts
|
|
25056
|
+
// src/yields/intrinsic/fetchers/coinbase.ts
|
|
25038
25057
|
var CBETH_URL = "https://api.exchange.coinbase.com/wrapped-assets/cbeth";
|
|
25039
25058
|
var cbethFetcher = {
|
|
25040
25059
|
label: "CBETH",
|
|
@@ -25054,7 +25073,7 @@ var cbethFetcher = {
|
|
|
25054
25073
|
}
|
|
25055
25074
|
};
|
|
25056
25075
|
|
|
25057
|
-
// src/yields/fetchers/kelp.ts
|
|
25076
|
+
// src/yields/intrinsic/fetchers/kelp.ts
|
|
25058
25077
|
var RSETH_URL = "https://universe.kelpdao.xyz/rseth/totalApy";
|
|
25059
25078
|
var rsethFetcher = {
|
|
25060
25079
|
label: "RSETH",
|
|
@@ -25064,7 +25083,7 @@ var rsethFetcher = {
|
|
|
25064
25083
|
}
|
|
25065
25084
|
};
|
|
25066
25085
|
|
|
25067
|
-
// src/yields/fetchers/trufin.ts
|
|
25086
|
+
// src/yields/intrinsic/fetchers/trufin.ts
|
|
25068
25087
|
var TRUMATIC_URL = "https://api.trufin.io/staker/apy?staker=MATIC";
|
|
25069
25088
|
var trumaticFetcher = {
|
|
25070
25089
|
label: "TRUMATIC",
|
|
@@ -25074,7 +25093,7 @@ var trumaticFetcher = {
|
|
|
25074
25093
|
}
|
|
25075
25094
|
};
|
|
25076
25095
|
|
|
25077
|
-
// src/yields/fetchers/stakewise.ts
|
|
25096
|
+
// src/yields/intrinsic/fetchers/stakewise.ts
|
|
25078
25097
|
var OSETH_URL = "https://graphs.stakewise.io/mainnet-a/subgraphs/name/stakewise/prod?opName=osTokenApy";
|
|
25079
25098
|
var osETH = "StakeWise Staked ETH::OSETH";
|
|
25080
25099
|
var osethFetcher = {
|
|
@@ -25092,7 +25111,7 @@ var osethFetcher = {
|
|
|
25092
25111
|
}
|
|
25093
25112
|
};
|
|
25094
25113
|
|
|
25095
|
-
// src/yields/fetchers/yieldnest.ts
|
|
25114
|
+
// src/yields/intrinsic/fetchers/yieldnest.ts
|
|
25096
25115
|
var YNETHX_URL = "https://gateway.yieldnest.finance/api/v1/graphql";
|
|
25097
25116
|
var ynethx = "ynETH MAX::YNETHX";
|
|
25098
25117
|
var ynethxFetcher = {
|
|
@@ -25117,7 +25136,7 @@ var ynethxFetcher = {
|
|
|
25117
25136
|
}
|
|
25118
25137
|
};
|
|
25119
25138
|
|
|
25120
|
-
// src/yields/fetchers/puffer.ts
|
|
25139
|
+
// src/yields/intrinsic/fetchers/puffer.ts
|
|
25121
25140
|
var PUFETH_URL = "https://api-v2.puffer.fi/backend-for-frontend/tvl/all";
|
|
25122
25141
|
var pufEth = "PUFETH";
|
|
25123
25142
|
var pufethFetcher = {
|
|
@@ -25131,7 +25150,7 @@ var pufethFetcher = {
|
|
|
25131
25150
|
}
|
|
25132
25151
|
};
|
|
25133
25152
|
|
|
25134
|
-
// src/yields/fetchers/sky.ts
|
|
25153
|
+
// src/yields/intrinsic/fetchers/sky.ts
|
|
25135
25154
|
var SUSDS_URL = "https://info-sky.blockanalitica.com/api/v1/overall/?format=json";
|
|
25136
25155
|
var sUsds = "sUSDS::SUSDS";
|
|
25137
25156
|
var susdsFetcher = {
|
|
@@ -25147,7 +25166,7 @@ var susdsFetcher = {
|
|
|
25147
25166
|
}
|
|
25148
25167
|
};
|
|
25149
25168
|
|
|
25150
|
-
// src/yields/fetchers/reservoir.ts
|
|
25169
|
+
// src/yields/intrinsic/fetchers/reservoir.ts
|
|
25151
25170
|
var SRUSD_URL = "https://app.reservoir.xyz/api/website";
|
|
25152
25171
|
var srUsd = "Reservoir srUSD::SRUSD";
|
|
25153
25172
|
var wsrusd = "Wrapped Savings rUSD::WSRUSD";
|
|
@@ -25166,7 +25185,7 @@ var srusdFetcher = {
|
|
|
25166
25185
|
}
|
|
25167
25186
|
};
|
|
25168
25187
|
|
|
25169
|
-
// src/yields/fetchers/yieldfi.ts
|
|
25188
|
+
// src/yields/intrinsic/fetchers/yieldfi.ts
|
|
25170
25189
|
var YUSD_URL = "https://ctrl.yield.fi/t/yusd/apy";
|
|
25171
25190
|
var yusd = "YieldFi yUSD::yUSD";
|
|
25172
25191
|
var yusdFetcher = {
|
|
@@ -25180,7 +25199,7 @@ var yusdFetcher = {
|
|
|
25180
25199
|
}
|
|
25181
25200
|
};
|
|
25182
25201
|
|
|
25183
|
-
// src/yields/fetchers/resolv.ts
|
|
25202
|
+
// src/yields/intrinsic/fetchers/resolv.ts
|
|
25184
25203
|
var RLP_URL = "https://api.resolv.xyz/apr/rlp/7d";
|
|
25185
25204
|
var WSTUSR_URL = "https://api.resolv.xyz/apr/staking/7d";
|
|
25186
25205
|
var rlp = "Resolv RLP::RLP";
|
|
@@ -25212,7 +25231,7 @@ var wstusrFetcher = {
|
|
|
25212
25231
|
}
|
|
25213
25232
|
};
|
|
25214
25233
|
|
|
25215
|
-
// src/yields/fetchers/morphoVaults.ts
|
|
25234
|
+
// src/yields/intrinsic/fetchers/morphoVaults.ts
|
|
25216
25235
|
var MORPHO_VAULTS_URL = "https://blue-api.morpho.org/graphql";
|
|
25217
25236
|
var csusdl = "Coinshift USDL Morpho Vault::CSUSDL";
|
|
25218
25237
|
var csusdlFetcher = {
|
|
@@ -25235,7 +25254,7 @@ var csusdlFetcher = {
|
|
|
25235
25254
|
}
|
|
25236
25255
|
};
|
|
25237
25256
|
|
|
25238
|
-
// src/yields/fetchers/swell.ts
|
|
25257
|
+
// src/yields/intrinsic/fetchers/swell.ts
|
|
25239
25258
|
var RSWETH_URL = "https://v3-lst.svc.swellnetwork.io/api/tokens/sweth/apr";
|
|
25240
25259
|
var rsweth = "Restaked Swell ETH::RSWETH";
|
|
25241
25260
|
var rswethFetcher = {
|
|
@@ -25249,7 +25268,7 @@ var rswethFetcher = {
|
|
|
25249
25268
|
}
|
|
25250
25269
|
};
|
|
25251
25270
|
|
|
25252
|
-
// src/yields/fetchers/usual.ts
|
|
25271
|
+
// src/yields/intrinsic/fetchers/usual.ts
|
|
25253
25272
|
var USDZEROPLUS_URL = "https://app.usual.money/api/rewards/rates/USD0++";
|
|
25254
25273
|
var ETHZERO_URL = "https://app.usual.money/api/rewards/rates/ETH0";
|
|
25255
25274
|
var usdZeroPlus = "Staked USD0::USD0++";
|
|
@@ -25275,7 +25294,7 @@ var ethZeroFetcher = {
|
|
|
25275
25294
|
}
|
|
25276
25295
|
};
|
|
25277
25296
|
|
|
25278
|
-
// src/yields/fetchers/jito.ts
|
|
25297
|
+
// src/yields/intrinsic/fetchers/jito.ts
|
|
25279
25298
|
var JITOSOL_URL = "https://www.jito.network/api/getJitoPoolStats/";
|
|
25280
25299
|
var jitoSol = "Jito Staked SOL::JitoSOL";
|
|
25281
25300
|
var jitoSolFetcher = {
|
|
@@ -25290,7 +25309,7 @@ var jitoSolFetcher = {
|
|
|
25290
25309
|
}
|
|
25291
25310
|
};
|
|
25292
25311
|
|
|
25293
|
-
// src/yields/fetchers/theo.ts
|
|
25312
|
+
// src/yields/intrinsic/fetchers/theo.ts
|
|
25294
25313
|
var THBILL_URL = "https://thbill-api.theo.xyz/snapshots";
|
|
25295
25314
|
var thBill = "Theo Short Duration US Treasury Fund::THBILL";
|
|
25296
25315
|
var thbillFetcher = {
|
|
@@ -25306,7 +25325,7 @@ var thbillFetcher = {
|
|
|
25306
25325
|
}
|
|
25307
25326
|
};
|
|
25308
25327
|
|
|
25309
|
-
// src/yields/fetchers/superreturn.ts
|
|
25328
|
+
// src/yields/intrinsic/fetchers/superreturn.ts
|
|
25310
25329
|
var SSUPERUSD_URL = "https://www.superreturn.ai/api/trpc/cmc.getUSDCPrice,rewardBackend.getYield,rewardBackend.getTvlChange?batch=1&input=%7B%220%22%3A%7B%22json%22%3Anull%2C%22meta%22%3A%7B%22values%22%3A%5B%22undefined%22%5D%7D%7D%2C%221%22%3A%7B%22json%22%3Anull%2C%22meta%22%3A%7B%22values%22%3A%5B%22undefined%22%5D%7D%7D%2C%222%22%3A%7B%22json%22%3Anull%2C%22meta%22%3A%7B%22values%22%3A%5B%22undefined%22%5D%7D%7D%7D";
|
|
25311
25330
|
var ssuperusd = "SuperReturn sSuperUSD::SSUPERUSD";
|
|
25312
25331
|
var ssuperusdFetcher = {
|
|
@@ -25324,7 +25343,7 @@ var ssuperusdFetcher = {
|
|
|
25324
25343
|
}
|
|
25325
25344
|
};
|
|
25326
25345
|
|
|
25327
|
-
// src/yields/fetchers/hyperbeat.ts
|
|
25346
|
+
// src/yields/intrinsic/fetchers/hyperbeat.ts
|
|
25328
25347
|
var HBHYPE_URL = "https://api.hyperbeat.org/api/v1/staking?address=0xCeaD893b162D38e714D82d06a7fe0b0dc3c38E0b";
|
|
25329
25348
|
var HBUHYPE_URL = "https://app.hyperbeat.org/api/hyperfolio/vault-infos?vaultAddress=0x96C6cBB6251Ee1c257b2162ca0f39AA5Fa44B1FB";
|
|
25330
25349
|
var hbhype = "hyperbeat x ether.fi HYPE::beHYPE";
|
|
@@ -25370,7 +25389,7 @@ var hbuhypeFetcher = {
|
|
|
25370
25389
|
}
|
|
25371
25390
|
};
|
|
25372
25391
|
|
|
25373
|
-
// src/yields/fetchers/hyperliquid.ts
|
|
25392
|
+
// src/yields/intrinsic/fetchers/hyperliquid.ts
|
|
25374
25393
|
var HLP_URL = "https://api-ui.hyperliquid.xyz/info";
|
|
25375
25394
|
var HWHLP_URL = "https://api.hyperwavefi.xyz/stats/latest?asset=hwhlp_999";
|
|
25376
25395
|
var hlp = "Wrapped HLP::WHLP";
|
|
@@ -25412,7 +25431,7 @@ var hwhlpFetcher = {
|
|
|
25412
25431
|
}
|
|
25413
25432
|
};
|
|
25414
25433
|
|
|
25415
|
-
// src/yields/fetchers/usdx.ts
|
|
25434
|
+
// src/yields/intrinsic/fetchers/usdx.ts
|
|
25416
25435
|
var SUSDX_URL = "https://app.usdx.money/v1/base/apyInfo";
|
|
25417
25436
|
var susdx = "SUSDX";
|
|
25418
25437
|
var susdxFetcher = {
|
|
@@ -25423,7 +25442,7 @@ var susdxFetcher = {
|
|
|
25423
25442
|
}
|
|
25424
25443
|
};
|
|
25425
25444
|
|
|
25426
|
-
// src/yields/fetchers/reserve.ts
|
|
25445
|
+
// src/yields/intrinsic/fetchers/reserve.ts
|
|
25427
25446
|
var RTOKENS_URL = "https://yields.reserve.org/pools";
|
|
25428
25447
|
var hyUSD = "High Yield USD Base::HYUSD";
|
|
25429
25448
|
var bsdETH = "Based ETH::BSDETH";
|
|
@@ -25453,7 +25472,7 @@ var rtokensFetcher = {
|
|
|
25453
25472
|
}
|
|
25454
25473
|
};
|
|
25455
25474
|
|
|
25456
|
-
// src/yields/fetchers/hyperlend.ts
|
|
25475
|
+
// src/yields/intrinsic/fetchers/hyperlend.ts
|
|
25457
25476
|
var HYPE_URL = "https://api.hyperlend.finance/data/nativeApy";
|
|
25458
25477
|
var wstHype = "Staked HYPE Shares::WSTHYPE";
|
|
25459
25478
|
var kHYPE = "Kinetiq Staked HYPE::kHYPE";
|
|
@@ -25468,7 +25487,7 @@ var hypeFetcher = {
|
|
|
25468
25487
|
}
|
|
25469
25488
|
};
|
|
25470
25489
|
|
|
25471
|
-
// src/yields/fetchers/angle.ts
|
|
25490
|
+
// src/yields/intrinsic/fetchers/angle.ts
|
|
25472
25491
|
var ANGLE_URL = "https://exporter.angle.money/v2/savingsApr";
|
|
25473
25492
|
var stUSD = "Angle Staked USDA::stUSD";
|
|
25474
25493
|
var stEur = "Angle Staked EURA::stEUR";
|
|
@@ -25496,7 +25515,7 @@ var addressToAssetYearn = {
|
|
|
25496
25515
|
"0x93fec6639717b6215a48e5a72a162c50dcc40d68": "vbAUSD yVault::yvvbAUSD"
|
|
25497
25516
|
};
|
|
25498
25517
|
|
|
25499
|
-
// src/yields/fetchers/yearnKatana.ts
|
|
25518
|
+
// src/yields/intrinsic/fetchers/yearnKatana.ts
|
|
25500
25519
|
var YEARN_KATANA_URL = "https://katana-apr-service.vercel.app/api/vaults";
|
|
25501
25520
|
var yearnKatanaFetcher = {
|
|
25502
25521
|
label: "YEARN_KATANA",
|
|
@@ -25516,7 +25535,7 @@ var yearnKatanaFetcher = {
|
|
|
25516
25535
|
}
|
|
25517
25536
|
};
|
|
25518
25537
|
|
|
25519
|
-
// src/yields/fetchers/yoProtocol.ts
|
|
25538
|
+
// src/yields/intrinsic/fetchers/yoProtocol.ts
|
|
25520
25539
|
var YO_URL = "https://api.yo.xyz/api/v1/vault/stats";
|
|
25521
25540
|
var yoeth = "Yield Optimizer ETH::YOETH";
|
|
25522
25541
|
var yobtc = "Yield Optimizer BTC::YOBTC";
|
|
@@ -25543,7 +25562,7 @@ var yoFetcher = {
|
|
|
25543
25562
|
}
|
|
25544
25563
|
};
|
|
25545
25564
|
|
|
25546
|
-
// src/yields/fetchers/gmx.ts
|
|
25565
|
+
// src/yields/intrinsic/fetchers/gmx.ts
|
|
25547
25566
|
var GMX_URL = "https://arbitrum-api.gmxinfra.io/apy?period=1d";
|
|
25548
25567
|
var gmx_eth_usd = "GMX Market ETH/USD::GM [WETH-USDC]";
|
|
25549
25568
|
var gmx_btc_usd = "GMX Market BTC/USD::GM [WBTC-USDC]";
|
|
@@ -25681,7 +25700,7 @@ function yearFractionToExpiry(expiryISO, now = /* @__PURE__ */ new Date()) {
|
|
|
25681
25700
|
return yearFraction;
|
|
25682
25701
|
}
|
|
25683
25702
|
|
|
25684
|
-
// src/yields/fetchers/pendle.ts
|
|
25703
|
+
// src/yields/intrinsic/fetchers/pendle.ts
|
|
25685
25704
|
var pendleFetcher = {
|
|
25686
25705
|
label: "PENDLE",
|
|
25687
25706
|
fetch: async () => {
|
|
@@ -25701,7 +25720,7 @@ var pendleFetcher = {
|
|
|
25701
25720
|
}
|
|
25702
25721
|
};
|
|
25703
25722
|
|
|
25704
|
-
// src/yields/fetchers/usdai.ts
|
|
25723
|
+
// src/yields/intrinsic/fetchers/usdai.ts
|
|
25705
25724
|
var USDAI_APY_URL = "https://api.usd.ai/usdai/dashboard/current-apy";
|
|
25706
25725
|
var usdai = "sUSDai::SUSDAI";
|
|
25707
25726
|
var usdaiFetcher = {
|
|
@@ -25717,7 +25736,7 @@ var usdaiFetcher = {
|
|
|
25717
25736
|
}
|
|
25718
25737
|
};
|
|
25719
25738
|
|
|
25720
|
-
// src/yields/fetchers/maple.ts
|
|
25739
|
+
// src/yields/intrinsic/fetchers/maple.ts
|
|
25721
25740
|
var MAPLE_URL = "https://api.maple.finance/v2/graphql";
|
|
25722
25741
|
var SYRUP_USDT_ID = "0x356b8d89c1e1239cbbb9de4815c39a1474d5ba7d";
|
|
25723
25742
|
var SYRUP_USDC_ID = "0x80ac24aa929eaf5013f6436cda2a7ba190f5cc0b";
|
|
@@ -25754,8 +25773,24 @@ var mapleFetcher = {
|
|
|
25754
25773
|
}
|
|
25755
25774
|
};
|
|
25756
25775
|
|
|
25757
|
-
// src/yields/
|
|
25758
|
-
var
|
|
25776
|
+
// src/yields/intrinsic/fetchers/ondo.ts
|
|
25777
|
+
var ONDO_BASE_URL = "https://app.ondo.finance/api/v2/assets";
|
|
25778
|
+
var ondoFetcher = {
|
|
25779
|
+
label: "ONDO",
|
|
25780
|
+
fetch: async () => {
|
|
25781
|
+
const [ousgRes, usdyRes] = await Promise.all([
|
|
25782
|
+
fetch(`${ONDO_BASE_URL}/ousg/info`).then((r) => r.json()),
|
|
25783
|
+
fetch(`${ONDO_BASE_URL}/usdy/info`).then((r) => r.json())
|
|
25784
|
+
]);
|
|
25785
|
+
return {
|
|
25786
|
+
OUSG: apyToAprPercent(Number(ousgRes?.primaryMarket?.apy ?? 0)),
|
|
25787
|
+
USDY: apyToAprPercent(Number(usdyRes?.primaryMarket?.apy ?? 0))
|
|
25788
|
+
};
|
|
25789
|
+
}
|
|
25790
|
+
};
|
|
25791
|
+
|
|
25792
|
+
// src/yields/intrinsic/index.ts
|
|
25793
|
+
async function fetchIntrinsicYields() {
|
|
25759
25794
|
const wstethPromise = safeFetch(wstethFetcher.label, wstethFetcher.fetch);
|
|
25760
25795
|
const weethFetcher = createWeethFetcher(wstethPromise);
|
|
25761
25796
|
const fetchers = [
|
|
@@ -25800,24 +25835,219 @@ var fetchGeneralYields = async () => {
|
|
|
25800
25835
|
gmxFetcher,
|
|
25801
25836
|
pendleFetcher,
|
|
25802
25837
|
usdaiFetcher,
|
|
25803
|
-
mapleFetcher
|
|
25838
|
+
mapleFetcher,
|
|
25839
|
+
ondoFetcher
|
|
25804
25840
|
];
|
|
25805
|
-
const
|
|
25841
|
+
const results = await Promise.all([
|
|
25806
25842
|
wstethPromise,
|
|
25807
25843
|
...fetchers.map((f) => safeFetch(f.label, f.fetch))
|
|
25808
25844
|
]);
|
|
25809
|
-
const intrinsicYields = {
|
|
25810
|
-
USDY: 4.35
|
|
25811
|
-
};
|
|
25812
|
-
if (wstethData) Object.assign(intrinsicYields, wstethData);
|
|
25845
|
+
const intrinsicYields = {};
|
|
25813
25846
|
for (const result of results) {
|
|
25814
25847
|
if (result) Object.assign(intrinsicYields, result);
|
|
25815
25848
|
}
|
|
25849
|
+
return intrinsicYields;
|
|
25850
|
+
}
|
|
25851
|
+
|
|
25852
|
+
// src/yields/rewards/merkl.ts
|
|
25853
|
+
var MERKL_API_BASE = "https://api.merkl.xyz/v4";
|
|
25854
|
+
async function fetchMerklOpportunities(protocolId, chainId) {
|
|
25855
|
+
const all = [];
|
|
25856
|
+
let page = 0;
|
|
25857
|
+
while (true) {
|
|
25858
|
+
const params = new URLSearchParams({
|
|
25859
|
+
mainProtocolId: protocolId,
|
|
25860
|
+
chainId,
|
|
25861
|
+
status: "LIVE",
|
|
25862
|
+
items: "100",
|
|
25863
|
+
page: String(page)
|
|
25864
|
+
});
|
|
25865
|
+
const res = await fetch(`${MERKL_API_BASE}/opportunities?${params}`);
|
|
25866
|
+
if (!res.ok) throw new Error(`Merkl API ${res.status} for chain ${chainId}`);
|
|
25867
|
+
const batch = await res.json();
|
|
25868
|
+
all.push(...batch);
|
|
25869
|
+
if (batch.length < 100) break;
|
|
25870
|
+
page++;
|
|
25871
|
+
}
|
|
25872
|
+
return all;
|
|
25873
|
+
}
|
|
25874
|
+
function emptyReward() {
|
|
25875
|
+
return {
|
|
25876
|
+
distribution: "merkle",
|
|
25877
|
+
deposit: 0,
|
|
25878
|
+
borrow: 0,
|
|
25879
|
+
additionalDepositData: [],
|
|
25880
|
+
additionalBorrowData: []
|
|
25881
|
+
};
|
|
25882
|
+
}
|
|
25883
|
+
function ensureReward(result, chainId, lender, asset) {
|
|
25884
|
+
if (!result[chainId]) result[chainId] = {};
|
|
25885
|
+
if (!result[chainId][lender]) result[chainId][lender] = {};
|
|
25886
|
+
if (!result[chainId][lender][asset])
|
|
25887
|
+
result[chainId][lender][asset] = emptyReward();
|
|
25888
|
+
return result[chainId][lender][asset];
|
|
25889
|
+
}
|
|
25890
|
+
function getMerkleUrl(opp) {
|
|
25891
|
+
return `https://app.merkl.xyz/opportunities/${opp.chain.name}/${opp.type}/${opp.identifier}`;
|
|
25892
|
+
}
|
|
25893
|
+
function extractRewardBreakdowns(opp) {
|
|
25894
|
+
if (!opp.rewardsRecord?.breakdowns?.length) return [];
|
|
25895
|
+
return opp.rewardsRecord.breakdowns.map((b) => ({
|
|
25896
|
+
token: b.token.symbol,
|
|
25897
|
+
tokenAddress: b.token.address,
|
|
25898
|
+
dailyUsdValue: b.value,
|
|
25899
|
+
distributionType: b.distributionType
|
|
25900
|
+
}));
|
|
25901
|
+
}
|
|
25902
|
+
function resolveUnderlyingFromOpportunity(opp) {
|
|
25903
|
+
if (!opp.tokens?.length) return void 0;
|
|
25904
|
+
if (opp.depositUrl) {
|
|
25905
|
+
try {
|
|
25906
|
+
const url = new URL(opp.depositUrl);
|
|
25907
|
+
const underlying2 = url.searchParams.get("underlyingAsset");
|
|
25908
|
+
if (underlying2) return underlying2.toLowerCase();
|
|
25909
|
+
} catch {
|
|
25910
|
+
}
|
|
25911
|
+
}
|
|
25912
|
+
const explorer = opp.explorerAddress?.toLowerCase();
|
|
25913
|
+
const underlying = opp.tokens.find(
|
|
25914
|
+
(t) => t.address.toLowerCase() !== explorer && !t.symbol.startsWith("variableDebt") && !t.symbol.startsWith("stableDebt")
|
|
25915
|
+
);
|
|
25916
|
+
if (underlying) return underlying.address.toLowerCase();
|
|
25917
|
+
return opp.tokens[0].address.toLowerCase();
|
|
25918
|
+
}
|
|
25919
|
+
function createMerklRewardFetcher(config) {
|
|
25920
|
+
const defaultResolve = (opp) => {
|
|
25921
|
+
const asset = resolveUnderlyingFromOpportunity(opp);
|
|
25922
|
+
if (!asset) return void 0;
|
|
25923
|
+
return { asset };
|
|
25924
|
+
};
|
|
25925
|
+
const resolve = config.resolveAsset ?? defaultResolve;
|
|
25926
|
+
return {
|
|
25927
|
+
label: `MERKL_${config.merklProtocolId.toUpperCase()}`,
|
|
25928
|
+
fetch: async () => {
|
|
25929
|
+
const result = {};
|
|
25930
|
+
const chainResults = await Promise.all(
|
|
25931
|
+
config.chainIds.map(async (chainId) => {
|
|
25932
|
+
try {
|
|
25933
|
+
const opps = await fetchMerklOpportunities(
|
|
25934
|
+
config.merklProtocolId,
|
|
25935
|
+
chainId
|
|
25936
|
+
);
|
|
25937
|
+
return { chainId, opps };
|
|
25938
|
+
} catch (e) {
|
|
25939
|
+
console.error(`Merkl: failed to fetch chain ${chainId}:`, e);
|
|
25940
|
+
return { chainId, opps: [] };
|
|
25941
|
+
}
|
|
25942
|
+
})
|
|
25943
|
+
);
|
|
25944
|
+
for (const { chainId, opps } of chainResults) {
|
|
25945
|
+
for (const opp of opps) {
|
|
25946
|
+
if (opp.action !== "LEND" && opp.action !== "BORROW") continue;
|
|
25947
|
+
if (!opp.apr || opp.apr <= 0) continue;
|
|
25948
|
+
const resolved = resolve(opp);
|
|
25949
|
+
if (!resolved) continue;
|
|
25950
|
+
const lender = resolved.lender ?? config.lenderKey;
|
|
25951
|
+
const reward = ensureReward(result, chainId, lender, resolved.asset);
|
|
25952
|
+
const breakdowns = extractRewardBreakdowns(opp);
|
|
25953
|
+
reward.link = getMerkleUrl(opp);
|
|
25954
|
+
if (opp.action === "LEND") {
|
|
25955
|
+
reward.deposit += opp.apr;
|
|
25956
|
+
reward.additionalDepositData.push(...breakdowns);
|
|
25957
|
+
} else {
|
|
25958
|
+
reward.borrow += opp.apr;
|
|
25959
|
+
reward.additionalBorrowData.push(...breakdowns);
|
|
25960
|
+
}
|
|
25961
|
+
}
|
|
25962
|
+
}
|
|
25963
|
+
return result;
|
|
25964
|
+
}
|
|
25965
|
+
};
|
|
25966
|
+
}
|
|
25967
|
+
var AAVE_V3_MERKL_CHAINS = [
|
|
25968
|
+
"1",
|
|
25969
|
+
// Ethereum
|
|
25970
|
+
"10",
|
|
25971
|
+
// Optimism
|
|
25972
|
+
"56",
|
|
25973
|
+
// BSC
|
|
25974
|
+
"100",
|
|
25975
|
+
// Gnosis
|
|
25976
|
+
"137",
|
|
25977
|
+
// Polygon
|
|
25978
|
+
"5000",
|
|
25979
|
+
// Mantle
|
|
25980
|
+
"8453",
|
|
25981
|
+
// Base
|
|
25982
|
+
"42161",
|
|
25983
|
+
// Arbitrum
|
|
25984
|
+
"42220",
|
|
25985
|
+
// Celo
|
|
25986
|
+
"43114",
|
|
25987
|
+
// Avalanche
|
|
25988
|
+
"59144",
|
|
25989
|
+
// Linea
|
|
25990
|
+
"534352"
|
|
25991
|
+
// Scroll
|
|
25992
|
+
];
|
|
25993
|
+
var aaveMerklRewardFetcher = createMerklRewardFetcher({
|
|
25994
|
+
merklProtocolId: "aave",
|
|
25995
|
+
lenderKey: "AAVE_V3",
|
|
25996
|
+
chainIds: AAVE_V3_MERKL_CHAINS
|
|
25997
|
+
});
|
|
25998
|
+
|
|
25999
|
+
// src/yields/rewards/fetchLenderRewards.ts
|
|
26000
|
+
function mergeRewardResults(target, source) {
|
|
26001
|
+
for (const [chainId, lenders] of Object.entries(source)) {
|
|
26002
|
+
if (!target[chainId]) target[chainId] = {};
|
|
26003
|
+
for (const [lender, assets] of Object.entries(lenders)) {
|
|
26004
|
+
if (!target[chainId][lender]) target[chainId][lender] = {};
|
|
26005
|
+
Object.assign(target[chainId][lender], assets);
|
|
26006
|
+
}
|
|
26007
|
+
}
|
|
26008
|
+
}
|
|
26009
|
+
var rewardFetchers = [aaveMerklRewardFetcher];
|
|
26010
|
+
async function fetchLenderRewards() {
|
|
26011
|
+
const results = await Promise.all(
|
|
26012
|
+
rewardFetchers.map((f) => safeFetch(f.label, f.fetch))
|
|
26013
|
+
);
|
|
26014
|
+
const lenderRewards = {};
|
|
26015
|
+
for (const rr of results) {
|
|
26016
|
+
if (rr) mergeRewardResults(lenderRewards, rr);
|
|
26017
|
+
}
|
|
26018
|
+
return lenderRewards;
|
|
26019
|
+
}
|
|
26020
|
+
|
|
26021
|
+
// src/yields/fetchGeneralYields.ts
|
|
26022
|
+
var fetchGeneralYields = async () => {
|
|
26023
|
+
const [intrinsicYields, lenderRewards] = await Promise.all([
|
|
26024
|
+
fetchIntrinsicYields(),
|
|
26025
|
+
fetchLenderRewards()
|
|
26026
|
+
]);
|
|
26027
|
+
return { intrinsicYields, lenderRewards };
|
|
26028
|
+
};
|
|
26029
|
+
var fetchGeneralYieldsByMarketUid = async () => {
|
|
26030
|
+
const { intrinsicYields, lenderRewards } = await fetchGeneralYields();
|
|
25816
26031
|
return {
|
|
25817
26032
|
intrinsicYields,
|
|
25818
|
-
lenderRewards:
|
|
26033
|
+
lenderRewards: flattenLenderRewards(lenderRewards)
|
|
25819
26034
|
};
|
|
25820
26035
|
};
|
|
26036
|
+
var flattenLenderRewards = (input) => {
|
|
26037
|
+
const result = {};
|
|
26038
|
+
for (const chainId in input) {
|
|
26039
|
+
const lenderMap = input[chainId];
|
|
26040
|
+
for (const lender in lenderMap) {
|
|
26041
|
+
const assetMap = lenderMap[lender];
|
|
26042
|
+
for (const asset in assetMap) {
|
|
26043
|
+
const reward = assetMap[asset];
|
|
26044
|
+
const marketUid = createMarketUid(chainId, lender, asset);
|
|
26045
|
+
result[marketUid] = reward;
|
|
26046
|
+
}
|
|
26047
|
+
}
|
|
26048
|
+
}
|
|
26049
|
+
return result;
|
|
26050
|
+
};
|
|
25821
26051
|
|
|
25822
26052
|
// src/prices/defillama/index.ts
|
|
25823
26053
|
var prefixEthereum = "ethereum:";
|
|
@@ -25966,7 +26196,7 @@ var datasManta = [manta].map((d) => prefixManta + d).join(",");
|
|
|
25966
26196
|
var datasTelos = [wtlos].map((d) => prefixTelos + d).join(",");
|
|
25967
26197
|
var datasbsc = [xpl].map((d) => prefixbsc + d).join(",");
|
|
25968
26198
|
var datasmoonbeam = [glmr].map((d) => prefixmoonbeam + d).join(",");
|
|
25969
|
-
var
|
|
26199
|
+
var URL2 = `https://coins.llama.fi/prices/current/${[
|
|
25970
26200
|
datasEthereum,
|
|
25971
26201
|
datasAvalanche,
|
|
25972
26202
|
datasArbitrum,
|
|
@@ -26089,7 +26319,7 @@ var SYMBOL_MAP = {
|
|
|
26089
26319
|
};
|
|
26090
26320
|
async function fetchDefillamaData() {
|
|
26091
26321
|
try {
|
|
26092
|
-
const res = await fetch(
|
|
26322
|
+
const res = await fetch(URL2).then((a) => a.json());
|
|
26093
26323
|
let prices = Object.assign(
|
|
26094
26324
|
{},
|
|
26095
26325
|
...Object.values(res.coins).map((k) => {
|
|
@@ -30104,6 +30334,6 @@ async function fetchTokenBalances(chainId, account, tokens, options = {}) {
|
|
|
30104
30334
|
return parseTokenBalanceResult(rawResult, prepared.query);
|
|
30105
30335
|
}
|
|
30106
30336
|
|
|
30107
|
-
export { EMPTY_BALANCE, MORPHO_LENS, applyPositionDelta, attachPricesToFlashLiquidity, buildLoopResult, buildMorphoTypeCall, buildMorphoTypeUserCallWithLens, buildPortfolioTotals, buildSumerAccumulators, buildSummaries, calculateLeverage, calculateNetApr, calculateOverallNetApr, calculateWeightedAverage, computeBorrowDelta2 as computeBorrowDelta, computeCloseTradeDeltas, computeCollateralSwapDeltas, computeDebtSwapDeltas, computeDepositDelta2 as computeDepositDelta, computeEModeAnalysis, computeOpenTradeDeltas, computePostTradeMetrics, computeRepayDelta2 as computeRepayDelta, computeSumerBorrowDelta, computeSumerDepositDelta, computeSumerRepayDelta, computeSumerWaterfall, computeSumerWithdrawDelta, computeWithdrawDelta2 as computeWithdrawDelta, computeZapTradeDeltas, convertLenderUserDataResult, createMarketUid, createMulticallRpcCall, createRawRpcCalls, decodeListaMarkets, decodeMarkets, decodePackedListaUserDataset, decodePackedMorphoUserDataset, encodeBalanceFetcherCalldata, fetchDefillamaData, fetchDefillamaHistData, fetchFlashLiquidityForChain, fetchGeneralYields, fetchMainPrices, fetchOraclePrices, fetchPendlePrices, fetchTokenBalances, fetchTokenMetadata, filterActiveLenders, filterLendersByProtocol, fuseLenderData, generateLendingPairs, generateLendingPools, getAavesForChain, getAssetConfig, getBorrowCapacity, getHealthFactor, getLenderAssets, getLenderPublicData, getLenderPublicDataAll, getLenderPublicDataViaApi, getLenderUserDataMulti, getLenderUserDataResult, getLendersForChain, getMergedUserData, getMorphoTypeMarketConverter, getTopPairs, keysFromMaps, multicall3Abi, nanTo, needsLenderApproval, needsTokenApproval, noOpResult, normalizeToBytes, parseBalanceFetcherResult, parseMergedResult, parseMulticallRpcResponses, parseRawRpcBatchResponses, parseRawRpcResponses, parseTokenBalanceResult, positivePart2 as positivePart, prepareLenderUserDataRpcCalls, prepareMergedMulticallParams, prepareMergedRpcCalls, prepareMulticallInputs, prepareTokenBalanceRpcCalls, selectAssetGroupPrices, unflattenLenderData };
|
|
30337
|
+
export { EMPTY_BALANCE, MORPHO_LENS, applyPositionDelta, attachPricesToFlashLiquidity, buildLoopResult, buildMorphoTypeCall, buildMorphoTypeUserCallWithLens, buildPortfolioTotals, buildSumerAccumulators, buildSummaries, calculateLeverage, calculateNetApr, calculateOverallNetApr, calculateWeightedAverage, computeBorrowDelta2 as computeBorrowDelta, computeCloseTradeDeltas, computeCollateralSwapDeltas, computeDebtSwapDeltas, computeDepositDelta2 as computeDepositDelta, computeEModeAnalysis, computeOpenTradeDeltas, computePostTradeMetrics, computeRepayDelta2 as computeRepayDelta, computeSumerBorrowDelta, computeSumerDepositDelta, computeSumerRepayDelta, computeSumerWaterfall, computeSumerWithdrawDelta, computeWithdrawDelta2 as computeWithdrawDelta, computeZapTradeDeltas, convertLenderUserDataResult, createMarketUid, createMulticallRpcCall, createRawRpcCalls, decodeListaMarkets, decodeMarkets, decodePackedListaUserDataset, decodePackedMorphoUserDataset, encodeBalanceFetcherCalldata, fetchDefillamaData, fetchDefillamaHistData, fetchFlashLiquidityForChain, fetchGeneralYields, fetchGeneralYieldsByMarketUid, fetchMainPrices, fetchOraclePrices, fetchPendlePrices, fetchTokenBalances, fetchTokenMetadata, filterActiveLenders, filterLendersByProtocol, fuseLenderData, generateLendingPairs, generateLendingPools, getAavesForChain, getAssetConfig, getBorrowCapacity, getHealthFactor, getLenderAssets, getLenderPublicData, getLenderPublicDataAll, getLenderPublicDataViaApi, getLenderUserDataMulti, getLenderUserDataResult, getLendersForChain, getMergedUserData, getMorphoTypeMarketConverter, getTopPairs, keysFromMaps, multicall3Abi, nanTo, needsLenderApproval, needsTokenApproval, noOpResult, normalizeToBytes, parseBalanceFetcherResult, parseMergedResult, parseMulticallRpcResponses, parseRawRpcBatchResponses, parseRawRpcResponses, parseTokenBalanceResult, positivePart2 as positivePart, prepareLenderUserDataRpcCalls, prepareMergedMulticallParams, prepareMergedRpcCalls, prepareMulticallInputs, prepareTokenBalanceRpcCalls, selectAssetGroupPrices, unflattenLenderData };
|
|
30108
30338
|
//# sourceMappingURL=index.js.map
|
|
30109
30339
|
//# sourceMappingURL=index.js.map
|