@1delta/margin-fetcher 0.0.282 → 0.0.284
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +127 -16
- package/dist/index.js.map +1 -1
- package/dist/lending/public-data/lista/listaBroker.d.ts +11 -2
- package/dist/lending/public-data/lista/listaBroker.d.ts.map +1 -1
- package/dist/lending/user-data/fetch-balances/e2e.d.ts.map +1 -1
- package/dist/lending/user-data/fetch-balances/prepare.d.ts +1 -1
- package/dist/lending/user-data/fetch-balances/prepare.d.ts.map +1 -1
- package/dist/lending/user-data/morpho/userCallBuild.d.ts +2 -2
- package/dist/lending/user-data/morpho/userCallBuild.d.ts.map +1 -1
- package/dist/vaults/classification.d.ts +11 -1
- package/dist/vaults/classification.d.ts.map +1 -1
- package/dist/vaults/gmx/types.d.ts +2 -1
- package/dist/vaults/gmx/types.d.ts.map +1 -1
- package/dist/vaults/hypercore/types.d.ts +2 -1
- package/dist/vaults/hypercore/types.d.ts.map +1 -1
- package/dist/vaults/lookup.d.ts +3 -0
- package/dist/vaults/lookup.d.ts.map +1 -1
- package/dist/vaults/lst/registry.d.ts.map +1 -1
- package/dist/vaults/savings/registry.d.ts.map +1 -1
- package/dist/yields/intrinsic/fetchers/hastra.d.ts +5 -0
- package/dist/yields/intrinsic/fetchers/hastra.d.ts.map +1 -0
- package/dist/yields/intrinsic/fetchers/lombard.d.ts +3 -0
- package/dist/yields/intrinsic/fetchers/lombard.d.ts.map +1 -1
- package/dist/yields/intrinsic/index.d.ts.map +1 -1
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -4,7 +4,7 @@ import './chunk-PR4QN5HX.js';
|
|
|
4
4
|
import { Lender, isAaveType, isCompoundV3, isMultiMarket, isSiloV2Type, isSiloV3Type, isDolomite, isAaveV4Type, isInit, isMorphoType, isCompoundV2Type, isVenusType, isSumerType, AAVE_V3_LENDERS, AAVE_V2_LENDERS, isAaveV2Type, isAaveV32Type, isAaveV3Type, isEulerType, isFluid, isGearboxV3, isYLDR, isCompoundV3Type, isLista, isTectonicType, isKineticType, isBenqiType } from '@1delta/lender-registry';
|
|
5
5
|
export { isAaveType, isAaveV2Type, isAaveV32Type, isAaveV3Type, isCompoundV3, isCompoundV3Type, isInit, isMorphoType, isMultiMarket, isYLDR } from '@1delta/lender-registry';
|
|
6
6
|
import lodash from 'lodash';
|
|
7
|
-
import {
|
|
7
|
+
import { getEvmClient, getEvmChain, getEvmClientUniversal, multicallRetryUniversal } from '@1delta/providers';
|
|
8
8
|
import { MetaMorphoAbi, FluidLendingResolverAbi, FluidVaultResolverAbi, MoolahVaultAbi, MorphoLensAbi, AaveV4SpokeAbi, AaveV4OracleAbi, AaveV4HubAbi, DolomiteMarginAbi, GearboxMarketCompressorV310Abi, MorphoBlueAbi, GearboxCreditAccountCompressorV310Abi } from '@1delta/abis';
|
|
9
9
|
export { MorphoLensAbi } from '@1delta/abis';
|
|
10
10
|
import { prepareDebitDataMulticall, prepareLenderDebitMulticall, parseDebitDataResult, parseLenderDebitResult, getPermit2ContractAddress, getCompoundV3CometAddress as getCompoundV3CometAddress$1, getMorphoAddress, getAaveCollateralTokenAddress, getSiloHalfForUnderlying, InitMarginAddresses, getLstAcceptedInputs } from '@1delta/calldata-sdk';
|
|
@@ -11221,7 +11221,7 @@ function earlyRepayPenalty(repayPrincipal, apr, end, nowSecs) {
|
|
|
11221
11221
|
const perRepay = ceilDiv(repayPrincipal * aprPerSecond(apr), RATE_SCALE);
|
|
11222
11222
|
return ceilDiv(perRepay * timeLeft, 2n);
|
|
11223
11223
|
}
|
|
11224
|
-
async function resolveListaBrokers(chainId, marketKeys) {
|
|
11224
|
+
async function resolveListaBrokers(chainId, marketKeys, getClient = getEvmClient) {
|
|
11225
11225
|
const moolah = morphoPools()?.LISTA_DAO?.[chainId];
|
|
11226
11226
|
const out = {};
|
|
11227
11227
|
if (!moolah || marketKeys.length === 0) return out;
|
|
@@ -11233,7 +11233,7 @@ async function resolveListaBrokers(chainId, marketKeys) {
|
|
|
11233
11233
|
}
|
|
11234
11234
|
if (missing.length > 0) {
|
|
11235
11235
|
try {
|
|
11236
|
-
const client =
|
|
11236
|
+
const client = getClient(chainId);
|
|
11237
11237
|
const results = await client.multicall({
|
|
11238
11238
|
allowFailure: true,
|
|
11239
11239
|
contracts: missing.map((id) => ({
|
|
@@ -11297,15 +11297,15 @@ async function fetchListaFixedTerms(chainId, marketKeys) {
|
|
|
11297
11297
|
function getCachedListaFixedTerms(chainId, marketKey) {
|
|
11298
11298
|
return FIXED_TERMS_CACHE[chainId]?.[toBytes32MarketId(marketKey)];
|
|
11299
11299
|
}
|
|
11300
|
-
async function fetchListaBrokerUserData(chainId, account, marketKeys, nowSecs = Math.floor(Date.now() / 1e3)) {
|
|
11301
|
-
const brokers = await resolveListaBrokers(chainId, marketKeys);
|
|
11300
|
+
async function fetchListaBrokerUserData(chainId, account, marketKeys, nowSecs = Math.floor(Date.now() / 1e3), getClient = getEvmClient) {
|
|
11301
|
+
const brokers = await resolveListaBrokers(chainId, marketKeys, getClient);
|
|
11302
11302
|
const ids = Object.keys(brokers);
|
|
11303
11303
|
const out = {};
|
|
11304
11304
|
const cacheKey2 = `${chainId}:${account.toLowerCase()}`;
|
|
11305
11305
|
BROKER_USER_CACHE[cacheKey2] = out;
|
|
11306
11306
|
if (ids.length === 0) return out;
|
|
11307
11307
|
try {
|
|
11308
|
-
const client =
|
|
11308
|
+
const client = getClient(chainId);
|
|
11309
11309
|
const contracts = ids.flatMap((id) => {
|
|
11310
11310
|
const address = brokers[id];
|
|
11311
11311
|
return [
|
|
@@ -11449,11 +11449,17 @@ var buildMorphoUserCallWithLens = (chainId, account, lender, marketsToQuery) =>
|
|
|
11449
11449
|
]
|
|
11450
11450
|
}));
|
|
11451
11451
|
};
|
|
11452
|
-
var buildMorphoTypeUserCallWithLens = (chainId, account, lender, marketsToQuery) => {
|
|
11453
|
-
return lender === Lender.MORPHO_BLUE ? buildMorphoUserCallWithLens(chainId, account, lender, marketsToQuery) : buildListaUserCallWithLens(chainId, account, lender, marketsToQuery);
|
|
11452
|
+
var buildMorphoTypeUserCallWithLens = (chainId, account, lender, marketsToQuery, getClient) => {
|
|
11453
|
+
return lender === Lender.MORPHO_BLUE ? buildMorphoUserCallWithLens(chainId, account, lender, marketsToQuery) : buildListaUserCallWithLens(chainId, account, lender, marketsToQuery, getClient);
|
|
11454
11454
|
};
|
|
11455
|
-
var buildListaUserCallWithLens = async (chainId, account, lender, marketsToQuery) => {
|
|
11456
|
-
await fetchListaBrokerUserData(
|
|
11455
|
+
var buildListaUserCallWithLens = async (chainId, account, lender, marketsToQuery, getClient) => {
|
|
11456
|
+
await fetchListaBrokerUserData(
|
|
11457
|
+
chainId,
|
|
11458
|
+
account,
|
|
11459
|
+
marketsToQuery,
|
|
11460
|
+
void 0,
|
|
11461
|
+
getClient
|
|
11462
|
+
).catch(() => ({}));
|
|
11457
11463
|
const marketSlices = chunk(marketsToQuery, 100);
|
|
11458
11464
|
return marketSlices.flatMap((marketsInChunk) => ({
|
|
11459
11465
|
address: MORPHO_LENS[chainId],
|
|
@@ -22379,13 +22385,19 @@ var buildDolomiteUserCall = async (chainId, _lender, account, accountNumbers) =>
|
|
|
22379
22385
|
};
|
|
22380
22386
|
|
|
22381
22387
|
// src/lending/user-data/fetch-balances/prepare.ts
|
|
22382
|
-
async function buildUserCall(chainId, lender, account, params) {
|
|
22388
|
+
async function buildUserCall(chainId, lender, account, params, getClient) {
|
|
22383
22389
|
if (isAaveV4Type(lender)) return buildAaveV4UserCall(chainId, lender, account);
|
|
22384
22390
|
if (isAaveV2Type(lender)) return buildAaveV2UserCall(chainId, lender, account);
|
|
22385
22391
|
if (isAaveV3Type(lender)) return buildAaveV3UserCall(chainId, lender, account);
|
|
22386
22392
|
if (isInit(lender)) return buildInitUserCall(chainId, lender, account);
|
|
22387
22393
|
if (isMorphoType(lender))
|
|
22388
|
-
return buildMorphoTypeUserCallWithLens(
|
|
22394
|
+
return buildMorphoTypeUserCallWithLens(
|
|
22395
|
+
chainId,
|
|
22396
|
+
account,
|
|
22397
|
+
lender,
|
|
22398
|
+
params,
|
|
22399
|
+
getClient
|
|
22400
|
+
);
|
|
22389
22401
|
if (isCompoundV3Type(lender))
|
|
22390
22402
|
return buildCompoundV3UserCall(chainId, lender, account);
|
|
22391
22403
|
if (isEulerType(lender))
|
|
@@ -29432,7 +29444,8 @@ var getLenderUserDataResult = async (chainId, queriesRaw, getEvmClient16, allowF
|
|
|
29432
29444
|
chainId,
|
|
29433
29445
|
query3.lender,
|
|
29434
29446
|
query3.account,
|
|
29435
|
-
query3.params
|
|
29447
|
+
query3.params,
|
|
29448
|
+
getEvmClient16
|
|
29436
29449
|
);
|
|
29437
29450
|
return callData.map((call) => ({ call, abi: call.abi ?? abi }));
|
|
29438
29451
|
})
|
|
@@ -32874,6 +32887,32 @@ var coreLstFetcher = {
|
|
|
32874
32887
|
}
|
|
32875
32888
|
};
|
|
32876
32889
|
|
|
32890
|
+
// src/yields/intrinsic/fetchers/hastra.ts
|
|
32891
|
+
var HASTRA_POR_URL = "https://www.hastra.io/hastra-pulse/public/api/v1/por";
|
|
32892
|
+
var HASTRA_PRIME_KEY = "Hastra PRIME::PRIME";
|
|
32893
|
+
var hastraPrimeFetcher = {
|
|
32894
|
+
label: "Hastra",
|
|
32895
|
+
fetch: async () => {
|
|
32896
|
+
const res = await fetch(HASTRA_POR_URL, {
|
|
32897
|
+
method: "GET",
|
|
32898
|
+
headers: { Accept: "application/json" }
|
|
32899
|
+
}).then((r) => r.json());
|
|
32900
|
+
const card = res?.demo_prime_card ?? {};
|
|
32901
|
+
const current = Number(card.current_rate);
|
|
32902
|
+
const fee = Number(card.fee);
|
|
32903
|
+
const lifetimePct = Number(card.lifetime_average_rate) * 100;
|
|
32904
|
+
let apr;
|
|
32905
|
+
if (Number.isFinite(current)) {
|
|
32906
|
+
apr = current - (Number.isFinite(fee) ? fee : 0);
|
|
32907
|
+
} else if (Number.isFinite(lifetimePct)) {
|
|
32908
|
+
apr = lifetimePct;
|
|
32909
|
+
} else {
|
|
32910
|
+
apr = 0;
|
|
32911
|
+
}
|
|
32912
|
+
return { [HASTRA_PRIME_KEY]: Math.max(0, apr) };
|
|
32913
|
+
}
|
|
32914
|
+
};
|
|
32915
|
+
|
|
32877
32916
|
// src/yields/intrinsic/index.ts
|
|
32878
32917
|
async function fetchIntrinsicYields() {
|
|
32879
32918
|
const wstethPromise = safeFetch(wstethFetcher.label, wstethFetcher.fetch);
|
|
@@ -32942,7 +32981,8 @@ async function fetchIntrinsicYields() {
|
|
|
32942
32981
|
beraEthFetcher,
|
|
32943
32982
|
lbgtFetcher,
|
|
32944
32983
|
psxdcFetcher,
|
|
32945
|
-
coreLstFetcher
|
|
32984
|
+
coreLstFetcher,
|
|
32985
|
+
hastraPrimeFetcher
|
|
32946
32986
|
];
|
|
32947
32987
|
const results = await Promise.all([
|
|
32948
32988
|
wstethPromise,
|
|
@@ -38356,6 +38396,23 @@ var lombardLbtcFetcher = {
|
|
|
38356
38396
|
return { LBTC: Number.isFinite(frac) ? frac * 100 : 0 };
|
|
38357
38397
|
}
|
|
38358
38398
|
};
|
|
38399
|
+
var LOMBARD_VAULT_APY_URL = "https://mainnet.prod.lombard.finance/api/v1/analytics/vault/apy/history";
|
|
38400
|
+
var createLombardVaultFetcher = (wrapper, key) => ({
|
|
38401
|
+
label: `LOMBARD_VAULT:${wrapper}`,
|
|
38402
|
+
fetch: async () => {
|
|
38403
|
+
const url = `${LOMBARD_VAULT_APY_URL}?vault_wrapper=${wrapper}&interval=APY_INTERVAL_1M`;
|
|
38404
|
+
const res = await fetch(url, {
|
|
38405
|
+
headers: { accept: "application/json" }
|
|
38406
|
+
}).then((r) => r.json());
|
|
38407
|
+
const latest = Array.isArray(res?.snapshots) ? res.snapshots[0] : void 0;
|
|
38408
|
+
const frac = Number(latest?.total_apy);
|
|
38409
|
+
return { [key]: Number.isFinite(frac) ? frac * 100 : 0 };
|
|
38410
|
+
}
|
|
38411
|
+
});
|
|
38412
|
+
var lombardLbtcvFetcher = createLombardVaultFetcher(
|
|
38413
|
+
"VAULT_WRAPPER_BTCE",
|
|
38414
|
+
"LBTCv"
|
|
38415
|
+
);
|
|
38359
38416
|
var CHAIN_ID6 = "1284";
|
|
38360
38417
|
var STDOT = "0xbc7e02c4178a7df7d3e564323a5c359dc96c4db4";
|
|
38361
38418
|
var ONE_E185 = 10n ** 18n;
|
|
@@ -38988,6 +39045,31 @@ var LST_REGISTRY = {
|
|
|
38988
39045
|
withdrawalMode: "queued",
|
|
38989
39046
|
yieldFetcher: solvBtcPlusFetcher,
|
|
38990
39047
|
yieldKey: "BTC+"
|
|
39048
|
+
},
|
|
39049
|
+
{
|
|
39050
|
+
// Lombard LBTCv — Veda BoringVault DeFi vault over LBTC ("Bitcoin Earn",
|
|
39051
|
+
// Lombard API wrapper `VAULT_WRAPPER_BTCE`; 8-dec). Share price via the
|
|
39052
|
+
// Veda Accountant `getRate()` (8-dec, ≈1.024 BTC/LBTCv) — the accountant
|
|
39053
|
+
// (`0x2863…3dCE`) is reached through the vault hook's `accountant()`. APY
|
|
39054
|
+
// from the Lombard vault API. Redeems to LBTC (~3-day vault-share queue);
|
|
39055
|
+
// priced via WBTC (≈BTC). Not mintable here (Veda Teller; no builder).
|
|
39056
|
+
address: "0x5401b8620e5fb570064ca9114fd1e135fd77d57c",
|
|
39057
|
+
underlying: "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599",
|
|
39058
|
+
// WBTC (BTC price ref)
|
|
39059
|
+
symbol: "LBTCv",
|
|
39060
|
+
brand: "Lombard",
|
|
39061
|
+
decimals: 8,
|
|
39062
|
+
reader: "vedaAccountant",
|
|
39063
|
+
isErc4626: false,
|
|
39064
|
+
isRebasing: false,
|
|
39065
|
+
isMintable: false,
|
|
39066
|
+
isNativeUnderlying: false,
|
|
39067
|
+
withdrawalMode: "queued",
|
|
39068
|
+
readerExtras: {
|
|
39069
|
+
vedaAccountant: "0x28634d0c5edc67cf2450e74dea49b90a4ff93dce"
|
|
39070
|
+
},
|
|
39071
|
+
yieldFetcher: lombardLbtcvFetcher,
|
|
39072
|
+
yieldKey: "LBTCv"
|
|
38991
39073
|
}
|
|
38992
39074
|
],
|
|
38993
39075
|
"146": [
|
|
@@ -44777,6 +44859,28 @@ var SINGLE_CHAIN_ENTRIES = {
|
|
|
44777
44859
|
withdrawalCooldownSeconds: 604800,
|
|
44778
44860
|
yieldFetcher: mapleFetcher,
|
|
44779
44861
|
yieldKey: "SYRUPUSDT"
|
|
44862
|
+
},
|
|
44863
|
+
{
|
|
44864
|
+
// Hastra Democratized PRIME — ERC-4626 over wYLDS (itself ERC-4626 over
|
|
44865
|
+
// USDC), so the share/asset ratio accrues on-chain (`convertToAssets`).
|
|
44866
|
+
// Solana-primary; the Ethereum deployment exists (verified on-chain:
|
|
44867
|
+
// symbol PRIME, 6 decimals, asset() = wYLDS) but carries no user holders
|
|
44868
|
+
// yet. Deposits are whitelist-gated, so `isMintable` is false — we list
|
|
44869
|
+
// + price it, but don't advertise a permissionless mint that would
|
|
44870
|
+
// revert. Two-phase exit (`requestRedeem` → `completeRedeem`). APR from
|
|
44871
|
+
// the public Proof-of-Reserve feed via `hastraPrimeFetcher`.
|
|
44872
|
+
address: "0x19ebb35279a16207ec4ba82799cc64715065f7f6",
|
|
44873
|
+
underlying: "0x6ad038ca6c04e885630851278ca0a856ad9a66cc",
|
|
44874
|
+
// wYLDS
|
|
44875
|
+
symbol: "PRIME",
|
|
44876
|
+
brand: "Hastra",
|
|
44877
|
+
decimals: 6,
|
|
44878
|
+
underlyingDecimals: 6,
|
|
44879
|
+
isRebasing: false,
|
|
44880
|
+
isMintable: false,
|
|
44881
|
+
withdrawalMode: "request-based",
|
|
44882
|
+
yieldFetcher: hastraPrimeFetcher,
|
|
44883
|
+
yieldKey: "Hastra PRIME::PRIME"
|
|
44780
44884
|
}
|
|
44781
44885
|
],
|
|
44782
44886
|
"8453": [
|
|
@@ -45638,11 +45742,15 @@ var classifyVault = (input) => {
|
|
|
45638
45742
|
return { yieldProfile, denomination };
|
|
45639
45743
|
};
|
|
45640
45744
|
var stampVaultClassification = (data, chainId, tokenList = {}) => {
|
|
45641
|
-
const stampBag = (bag, provider) => {
|
|
45745
|
+
const stampBag = (bag, provider, classify = true) => {
|
|
45642
45746
|
if (!bag) return;
|
|
45643
45747
|
for (const v of Object.values(bag)) {
|
|
45644
45748
|
const shareAsset = tokenList[v.address?.toLowerCase?.() ?? ""];
|
|
45645
45749
|
if (shareAsset) v.shareAsset = shareAsset;
|
|
45750
|
+
const longLogo = v.longToken != null ? tokenList[v.longToken.toLowerCase()]?.logoURI : void 0;
|
|
45751
|
+
const icon = v.shareAsset?.logoURI ?? v.asset?.logoURI ?? longLogo;
|
|
45752
|
+
if (icon) v.logoURI = icon;
|
|
45753
|
+
if (!classify) continue;
|
|
45646
45754
|
const c = classifyVault({
|
|
45647
45755
|
provider,
|
|
45648
45756
|
chainId,
|
|
@@ -45675,6 +45783,8 @@ var stampVaultClassification = (data, chainId, tokenList = {}) => {
|
|
|
45675
45783
|
stampBag(data.savings, "savings");
|
|
45676
45784
|
stampBag(data.lagoon, "lagoon");
|
|
45677
45785
|
stampBag(data.yearn, "yearn");
|
|
45786
|
+
stampBag(data.hypercore, "hypercore", false);
|
|
45787
|
+
stampBag(data.gmx, "gmx", false);
|
|
45678
45788
|
};
|
|
45679
45789
|
|
|
45680
45790
|
// src/vaults/gmx/registry.ts
|
|
@@ -46938,7 +47048,8 @@ function buildVaultLookup(data) {
|
|
|
46938
47048
|
denomination: v.denomination,
|
|
46939
47049
|
sharePriceRaw: v.sharePriceRaw,
|
|
46940
47050
|
sharePrice: v.sharePrice,
|
|
46941
|
-
sharePriceUSD: v.sharePriceUSD
|
|
47051
|
+
sharePriceUSD: v.sharePriceUSD,
|
|
47052
|
+
logoURI: v.logoURI
|
|
46942
47053
|
});
|
|
46943
47054
|
}
|
|
46944
47055
|
};
|