@1delta/margin-fetcher 0.0.274 → 0.0.275
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 +262 -19
- package/dist/index.js.map +1 -1
- package/dist/vaults/assetDecimals.d.ts +14 -0
- package/dist/vaults/assetDecimals.d.ts.map +1 -0
- package/dist/vaults/fluid/fetchPublic.d.ts.map +1 -1
- package/dist/vaults/lst/abis/etherfi.d.ts +14 -1
- package/dist/vaults/lst/abis/etherfi.d.ts.map +1 -1
- package/dist/vaults/lst/fetchPublic.d.ts.map +1 -1
- package/dist/vaults/lst/readers/etherfi.d.ts +8 -6
- package/dist/vaults/lst/readers/etherfi.d.ts.map +1 -1
- package/dist/vaults/lst/readers/shared.d.ts +20 -0
- package/dist/vaults/lst/readers/shared.d.ts.map +1 -1
- package/dist/vaults/lst/types.d.ts +13 -7
- package/dist/vaults/lst/types.d.ts.map +1 -1
- package/dist/vaults/lst/withdrawals/registry.d.ts.map +1 -1
- package/dist/vaults/morpho/fetchFromChain.d.ts.map +1 -1
- package/dist/vaults/morpho/fetchListaFromChain.d.ts.map +1 -1
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -35740,6 +35740,32 @@ function parseFTokens(fTokens, chainId, prices, tokenList) {
|
|
|
35740
35740
|
}
|
|
35741
35741
|
return out;
|
|
35742
35742
|
}
|
|
35743
|
+
|
|
35744
|
+
// src/vaults/assetDecimals.ts
|
|
35745
|
+
var ERC20_DECIMALS_ABI = parseAbi([
|
|
35746
|
+
"function decimals() view returns (uint8)"
|
|
35747
|
+
]);
|
|
35748
|
+
async function fetchAssetDecimals(chainId, underlyings, multicallRetry) {
|
|
35749
|
+
const map = /* @__PURE__ */ new Map();
|
|
35750
|
+
if (underlyings.length === 0) return map;
|
|
35751
|
+
const raw = await multicallRetry({
|
|
35752
|
+
chain: chainId,
|
|
35753
|
+
calls: underlyings.map((address) => ({
|
|
35754
|
+
address,
|
|
35755
|
+
name: "decimals",
|
|
35756
|
+
params: []
|
|
35757
|
+
})),
|
|
35758
|
+
abi: underlyings.map(() => ERC20_DECIMALS_ABI),
|
|
35759
|
+
allowFailure: true
|
|
35760
|
+
});
|
|
35761
|
+
underlyings.forEach((address, i) => {
|
|
35762
|
+
const d = Number(raw[i]);
|
|
35763
|
+
if (Number.isFinite(d) && d > 0 && d <= 36) map.set(address, d);
|
|
35764
|
+
});
|
|
35765
|
+
return map;
|
|
35766
|
+
}
|
|
35767
|
+
|
|
35768
|
+
// src/vaults/fluid/fetchPublic.ts
|
|
35743
35769
|
var fetchFluidFTokens = async (chainId, multicallRetry, prices = {}, tokenList = {}) => {
|
|
35744
35770
|
const calls = buildFluidFTokensCall(chainId);
|
|
35745
35771
|
if (calls.length === 0) return {};
|
|
@@ -35750,6 +35776,25 @@ var fetchFluidFTokens = async (chainId, multicallRetry, prices = {}, tokenList =
|
|
|
35750
35776
|
});
|
|
35751
35777
|
const [converter] = getFluidFTokensConverter(chainId, prices, tokenList);
|
|
35752
35778
|
const fTokens = converter(raw) ?? {};
|
|
35779
|
+
try {
|
|
35780
|
+
const underlyings = Object.values(fTokens).map((f) => f.underlying).filter((a) => !!a && a !== zeroAddress);
|
|
35781
|
+
const assetDec = await fetchAssetDecimals(
|
|
35782
|
+
chainId,
|
|
35783
|
+
[...new Set(underlyings)],
|
|
35784
|
+
multicallRetry
|
|
35785
|
+
);
|
|
35786
|
+
for (const f of Object.values(fTokens)) {
|
|
35787
|
+
const dec = assetDec.get(f.underlying);
|
|
35788
|
+
if (dec == null || dec === f.decimals) continue;
|
|
35789
|
+
const price2 = f.priceUsd ?? 0;
|
|
35790
|
+
f.decimals = dec;
|
|
35791
|
+
f.totalAssetsFormatted = Number(parseRawAmount(f.totalAssets, dec));
|
|
35792
|
+
f.totalAssetsUsd = f.totalAssetsFormatted * price2;
|
|
35793
|
+
f.liquidityFormatted = Number(parseRawAmount(f.liquidity, dec));
|
|
35794
|
+
f.liquidityUsd = f.liquidityFormatted * price2;
|
|
35795
|
+
}
|
|
35796
|
+
} catch {
|
|
35797
|
+
}
|
|
35753
35798
|
try {
|
|
35754
35799
|
const exposuresByUnderlying = await fetchFluidExposures(
|
|
35755
35800
|
chainId,
|
|
@@ -36307,7 +36352,12 @@ var fetchMorphoVaultsFromChain = async (chainId, multicallRetry, prices = {}, to
|
|
|
36307
36352
|
});
|
|
36308
36353
|
const core = morphoPools()?.MORPHO_BLUE?.[chainId];
|
|
36309
36354
|
const allMarketIds = [...new Set(marketIdsByVault.flat())];
|
|
36310
|
-
const
|
|
36355
|
+
const underlyings = [
|
|
36356
|
+
...new Set(
|
|
36357
|
+
entries.map(({ entry }) => entry.underlying?.toLowerCase()).filter((a) => !!a)
|
|
36358
|
+
)
|
|
36359
|
+
];
|
|
36360
|
+
const [rateMap, positionMap, assetDecimals] = await Promise.all([
|
|
36311
36361
|
fetchMorphoMarketRates(chainId, core, allMarketIds, multicallRetry),
|
|
36312
36362
|
fetchVaultSupplyShares(
|
|
36313
36363
|
chainId,
|
|
@@ -36315,7 +36365,8 @@ var fetchMorphoVaultsFromChain = async (chainId, multicallRetry, prices = {}, to
|
|
|
36315
36365
|
entries.map((e) => e.entry),
|
|
36316
36366
|
marketIdsByVault,
|
|
36317
36367
|
multicallRetry
|
|
36318
|
-
)
|
|
36368
|
+
),
|
|
36369
|
+
fetchAssetDecimals(chainId, underlyings, multicallRetry)
|
|
36319
36370
|
]);
|
|
36320
36371
|
const out = {};
|
|
36321
36372
|
for (let i = 0; i < entries.length; i++) {
|
|
@@ -36330,7 +36381,8 @@ var fetchMorphoVaultsFromChain = async (chainId, multicallRetry, prices = {}, to
|
|
|
36330
36381
|
tokenList,
|
|
36331
36382
|
marketIdsByVault[i],
|
|
36332
36383
|
rateMap,
|
|
36333
|
-
positionMap
|
|
36384
|
+
positionMap,
|
|
36385
|
+
assetDecimals
|
|
36334
36386
|
);
|
|
36335
36387
|
if (parsed) out[parsed.address] = parsed;
|
|
36336
36388
|
}
|
|
@@ -36391,7 +36443,7 @@ async function fetchMorphoMarketRates(chainId, core, marketIds, multicallRetry)
|
|
|
36391
36443
|
});
|
|
36392
36444
|
return map;
|
|
36393
36445
|
}
|
|
36394
|
-
function parseVault3(entry, results, chainId, prices, tokenList, marketIds, rateMap, positionMap) {
|
|
36446
|
+
function parseVault3(entry, results, chainId, prices, tokenList, marketIds, rateMap, positionMap, assetDecimals) {
|
|
36395
36447
|
const address = entry?.vault?.toLowerCase();
|
|
36396
36448
|
const underlying = entry?.underlying?.toLowerCase();
|
|
36397
36449
|
if (!address || !underlying) return null;
|
|
@@ -36408,7 +36460,7 @@ function parseVault3(entry, results, chainId, prices, tokenList, marketIds, rate
|
|
|
36408
36460
|
guardianRaw
|
|
36409
36461
|
] = results;
|
|
36410
36462
|
const assetMeta = tokenList[underlying];
|
|
36411
|
-
const decimals =
|
|
36463
|
+
const decimals = assetDecimals.get(underlying) ?? assetMeta?.decimals ?? Number(decimalsRaw ?? 18);
|
|
36412
36464
|
const totalAssets = toStringSafe(totalAssetsRaw, "0");
|
|
36413
36465
|
const totalSupply = toStringSafe(totalSupplyRaw, "0");
|
|
36414
36466
|
const totalAssetsFormatted = Number(parseRawAmount(totalAssets, decimals));
|
|
@@ -36679,7 +36731,12 @@ var fetchListaVaultsFromChain = async (chainId, multicallRetry, prices = {}, tok
|
|
|
36679
36731
|
});
|
|
36680
36732
|
const moolah = morphoPools()?.[LISTA_PROTOCOL]?.[chainId];
|
|
36681
36733
|
const allMarketIds = [...new Set(marketIdsByVault.flat())];
|
|
36682
|
-
const
|
|
36734
|
+
const underlyings = [
|
|
36735
|
+
...new Set(
|
|
36736
|
+
entries.map((entry) => entry.underlying?.toLowerCase()).filter((a) => !!a)
|
|
36737
|
+
)
|
|
36738
|
+
];
|
|
36739
|
+
const [rateMap, positionMap, assetDecimals] = await Promise.all([
|
|
36683
36740
|
fetchListaMarketRates(chainId, moolah, allMarketIds, multicallRetry),
|
|
36684
36741
|
fetchVaultSupplyShares(
|
|
36685
36742
|
chainId,
|
|
@@ -36687,7 +36744,8 @@ var fetchListaVaultsFromChain = async (chainId, multicallRetry, prices = {}, tok
|
|
|
36687
36744
|
entries,
|
|
36688
36745
|
marketIdsByVault,
|
|
36689
36746
|
multicallRetry
|
|
36690
|
-
)
|
|
36747
|
+
),
|
|
36748
|
+
fetchAssetDecimals(chainId, underlyings, multicallRetry)
|
|
36691
36749
|
]);
|
|
36692
36750
|
const out = {};
|
|
36693
36751
|
for (let i = 0; i < entries.length; i++) {
|
|
@@ -36702,7 +36760,8 @@ var fetchListaVaultsFromChain = async (chainId, multicallRetry, prices = {}, tok
|
|
|
36702
36760
|
tokenList,
|
|
36703
36761
|
marketIdsByVault[i],
|
|
36704
36762
|
rateMap,
|
|
36705
|
-
positionMap
|
|
36763
|
+
positionMap,
|
|
36764
|
+
assetDecimals
|
|
36706
36765
|
);
|
|
36707
36766
|
if (parsed) out[parsed.address] = parsed;
|
|
36708
36767
|
}
|
|
@@ -36765,7 +36824,7 @@ async function fetchListaMarketRates(chainId, moolah, marketIds, multicallRetry)
|
|
|
36765
36824
|
});
|
|
36766
36825
|
return map;
|
|
36767
36826
|
}
|
|
36768
|
-
function parseVault4(entry, results, curatorAddrRaw, chainId, prices, tokenList, marketIds, rateMap, positionMap) {
|
|
36827
|
+
function parseVault4(entry, results, curatorAddrRaw, chainId, prices, tokenList, marketIds, rateMap, positionMap, assetDecimals) {
|
|
36769
36828
|
const address = entry?.vault?.toLowerCase();
|
|
36770
36829
|
const underlying = entry?.underlying?.toLowerCase();
|
|
36771
36830
|
if (!address || !underlying) return null;
|
|
@@ -36782,7 +36841,7 @@ function parseVault4(entry, results, curatorAddrRaw, chainId, prices, tokenList,
|
|
|
36782
36841
|
,
|
|
36783
36842
|
] = results;
|
|
36784
36843
|
const assetMeta = tokenList[underlying];
|
|
36785
|
-
const decimals =
|
|
36844
|
+
const decimals = assetDecimals.get(underlying) ?? assetMeta?.decimals ?? Number(decimalsRaw ?? 18);
|
|
36786
36845
|
const totalAssets = toStringSafe2(totalAssetsRaw, "0");
|
|
36787
36846
|
const totalSupply = toStringSafe2(totalSupplyRaw, "0");
|
|
36788
36847
|
const totalAssetsFormatted = Number(parseRawAmount(totalAssets, decimals));
|
|
@@ -38822,6 +38881,16 @@ var Erc4626PreviewRedeemAbi = [
|
|
|
38822
38881
|
|
|
38823
38882
|
// src/vaults/lst/readers/shared.ts
|
|
38824
38883
|
var ONE_E187 = 10n ** 18n;
|
|
38884
|
+
var MULTICALL3_ADDRESS = "0xcA11bde05977b3631167028862bE2a173976CA11";
|
|
38885
|
+
var Multicall3BalanceAbi = [
|
|
38886
|
+
{
|
|
38887
|
+
name: "getEthBalance",
|
|
38888
|
+
type: "function",
|
|
38889
|
+
stateMutability: "view",
|
|
38890
|
+
inputs: [{ name: "addr", type: "address" }],
|
|
38891
|
+
outputs: [{ type: "uint256" }]
|
|
38892
|
+
}
|
|
38893
|
+
];
|
|
38825
38894
|
var toBigInt10 = (v) => {
|
|
38826
38895
|
if (v === void 0 || v === null) return void 0;
|
|
38827
38896
|
if (typeof v === "bigint") return v;
|
|
@@ -39006,6 +39075,13 @@ var EtherFiLiquidityPoolAbi = [
|
|
|
39006
39075
|
stateMutability: "view",
|
|
39007
39076
|
inputs: [],
|
|
39008
39077
|
outputs: [{ type: "uint256" }]
|
|
39078
|
+
},
|
|
39079
|
+
{
|
|
39080
|
+
name: "ethAmountLockedForWithdrawal",
|
|
39081
|
+
type: "function",
|
|
39082
|
+
stateMutability: "view",
|
|
39083
|
+
inputs: [],
|
|
39084
|
+
outputs: [{ type: "uint256" }]
|
|
39009
39085
|
}
|
|
39010
39086
|
];
|
|
39011
39087
|
|
|
@@ -39018,8 +39094,17 @@ var readerEtherFiWeEth = (entry) => {
|
|
|
39018
39094
|
];
|
|
39019
39095
|
const abis = [TotalSupplyAbi, EtherFiWeEthAbi];
|
|
39020
39096
|
if (lp) {
|
|
39021
|
-
calls.push({
|
|
39022
|
-
|
|
39097
|
+
calls.push({
|
|
39098
|
+
address: MULTICALL3_ADDRESS,
|
|
39099
|
+
name: "getEthBalance",
|
|
39100
|
+
params: [lp]
|
|
39101
|
+
});
|
|
39102
|
+
calls.push({
|
|
39103
|
+
address: lp,
|
|
39104
|
+
name: "ethAmountLockedForWithdrawal",
|
|
39105
|
+
params: []
|
|
39106
|
+
});
|
|
39107
|
+
abis.push(Multicall3BalanceAbi, EtherFiLiquidityPoolAbi);
|
|
39023
39108
|
}
|
|
39024
39109
|
return {
|
|
39025
39110
|
calls,
|
|
@@ -39030,7 +39115,14 @@ var readerEtherFiWeEth = (entry) => {
|
|
|
39030
39115
|
if (totalSupply === void 0 || exchangeRate === void 0) {
|
|
39031
39116
|
return void 0;
|
|
39032
39117
|
}
|
|
39033
|
-
|
|
39118
|
+
let liquidity;
|
|
39119
|
+
if (lp) {
|
|
39120
|
+
const lpBalance = toBigInt10(slice[2]);
|
|
39121
|
+
const locked = toBigInt10(slice[3]);
|
|
39122
|
+
if (lpBalance !== void 0 && locked !== void 0) {
|
|
39123
|
+
liquidity = lpBalance > locked ? lpBalance - locked : 0n;
|
|
39124
|
+
}
|
|
39125
|
+
}
|
|
39034
39126
|
return {
|
|
39035
39127
|
totalAssets: totalSupply * exchangeRate / ONE_E187,
|
|
39036
39128
|
totalSupply,
|
|
@@ -40062,6 +40154,11 @@ var resolveYieldApr = async (entries) => {
|
|
|
40062
40154
|
|
|
40063
40155
|
// src/vaults/lst/fetchPublic.ts
|
|
40064
40156
|
var ONE_E188 = 10n ** 18n;
|
|
40157
|
+
var ERC20_BALANCE_ABI = parseAbi([
|
|
40158
|
+
"function balanceOf(address) view returns (uint256)"
|
|
40159
|
+
]);
|
|
40160
|
+
var INSTANT_MODES = /* @__PURE__ */ new Set(["instant-or-queued", "fee-or-queued"]);
|
|
40161
|
+
var IDLE_READER_KINDS = /* @__PURE__ */ new Set(["erc4626", "erc4626PreviewRedeem"]);
|
|
40065
40162
|
var resolveAcceptedInputs = (chainId, shareToken, entry) => {
|
|
40066
40163
|
const enriched = getLstAcceptedInputs(chainId, shareToken);
|
|
40067
40164
|
if (enriched) return enriched;
|
|
@@ -40079,6 +40176,20 @@ var fetchLstShareTokens = async (chainId, multicallRetry, prices = {}, tokenList
|
|
|
40079
40176
|
const readers = entries.map(buildReader);
|
|
40080
40177
|
const allCalls = readers.flatMap((r) => r.calls);
|
|
40081
40178
|
const allAbis = readers.flatMap((r) => r.abis);
|
|
40179
|
+
const idleEntries = entries.filter(
|
|
40180
|
+
(e) => INSTANT_MODES.has(e.withdrawalMode) && IDLE_READER_KINDS.has(e.reader)
|
|
40181
|
+
);
|
|
40182
|
+
const idleIsNative = (e) => e.underlying.toLowerCase() === zeroAddress;
|
|
40183
|
+
const idleCalls = idleEntries.map(
|
|
40184
|
+
(e) => idleIsNative(e) ? {
|
|
40185
|
+
address: MULTICALL3_ADDRESS,
|
|
40186
|
+
name: "getEthBalance",
|
|
40187
|
+
params: [e.address]
|
|
40188
|
+
} : { address: e.underlying, name: "balanceOf", params: [e.address] }
|
|
40189
|
+
);
|
|
40190
|
+
const idleAbis = idleEntries.map(
|
|
40191
|
+
(e) => idleIsNative(e) ? Multicall3BalanceAbi : ERC20_BALANCE_ABI
|
|
40192
|
+
);
|
|
40082
40193
|
const groups = {};
|
|
40083
40194
|
for (let i = 0; i < allCalls.length; i++) {
|
|
40084
40195
|
const target = allCalls[i].chainId ?? chainId;
|
|
@@ -40088,7 +40199,7 @@ var fetchLstShareTokens = async (chainId, multicallRetry, prices = {}, tokenList
|
|
|
40088
40199
|
g.positions.push(i);
|
|
40089
40200
|
}
|
|
40090
40201
|
const chainEntries = Object.entries(groups);
|
|
40091
|
-
const [perChainResults, aprByAddress] = await Promise.all([
|
|
40202
|
+
const [perChainResults, aprByAddress, idleResults] = await Promise.all([
|
|
40092
40203
|
chainEntries.length > 0 ? Promise.all(
|
|
40093
40204
|
chainEntries.map(async ([chain, { calls, abis }]) => ({
|
|
40094
40205
|
chain,
|
|
@@ -40099,8 +40210,19 @@ var fetchLstShareTokens = async (chainId, multicallRetry, prices = {}, tokenList
|
|
|
40099
40210
|
})
|
|
40100
40211
|
}))
|
|
40101
40212
|
) : Promise.resolve([]),
|
|
40102
|
-
resolveYieldApr(entries)
|
|
40213
|
+
resolveYieldApr(entries),
|
|
40214
|
+
idleEntries.length > 0 ? multicallRetry({
|
|
40215
|
+
chain: chainId,
|
|
40216
|
+
calls: idleCalls,
|
|
40217
|
+
abi: idleAbis,
|
|
40218
|
+
allowFailure: true
|
|
40219
|
+
}) : Promise.resolve([])
|
|
40103
40220
|
]);
|
|
40221
|
+
const idleByAddress = /* @__PURE__ */ new Map();
|
|
40222
|
+
idleEntries.forEach((e, i) => {
|
|
40223
|
+
const bal = toBigInt10(idleResults[i]);
|
|
40224
|
+
if (bal !== void 0) idleByAddress.set(e.address.toLowerCase(), bal);
|
|
40225
|
+
});
|
|
40104
40226
|
const rawResults = new Array(allCalls.length);
|
|
40105
40227
|
for (const { chain, results } of perChainResults) {
|
|
40106
40228
|
const positions = groups[chain].positions;
|
|
@@ -40129,9 +40251,15 @@ var fetchLstShareTokens = async (chainId, multicallRetry, prices = {}, tokenList
|
|
|
40129
40251
|
const totalAssetsUsd = priceUsd !== void 0 ? totalAssetsFormatted * priceUsd : 0;
|
|
40130
40252
|
const convertToAssets = state.exchangeRate;
|
|
40131
40253
|
const convertToShares = state.exchangeRate > 0n ? ONE_E188 * ONE_E188 / state.exchangeRate : 0n;
|
|
40132
|
-
|
|
40133
|
-
|
|
40134
|
-
|
|
40254
|
+
let liquidityRaw;
|
|
40255
|
+
if (state.liquidity !== void 0) {
|
|
40256
|
+
liquidityRaw = state.liquidity;
|
|
40257
|
+
} else {
|
|
40258
|
+
const idle = idleByAddress.get(addressLc);
|
|
40259
|
+
liquidityRaw = idle !== void 0 ? idle > state.totalAssets ? state.totalAssets : idle : 0n;
|
|
40260
|
+
}
|
|
40261
|
+
const liquidityFormatted = Number(liquidityRaw) / decimalsFactor;
|
|
40262
|
+
const liquidityUsd = priceUsd !== void 0 ? liquidityFormatted * priceUsd : 0;
|
|
40135
40263
|
const displayName = composeVaultDisplayName(
|
|
40136
40264
|
entry.brand,
|
|
40137
40265
|
entry.brand,
|
|
@@ -40171,7 +40299,7 @@ var fetchLstShareTokens = async (chainId, multicallRetry, prices = {}, tokenList
|
|
|
40171
40299
|
priceUsd,
|
|
40172
40300
|
totalAssetsFormatted,
|
|
40173
40301
|
totalAssetsUsd,
|
|
40174
|
-
liquidity:
|
|
40302
|
+
liquidity: liquidityRaw.toString(),
|
|
40175
40303
|
liquidityFormatted,
|
|
40176
40304
|
liquidityUsd
|
|
40177
40305
|
};
|
|
@@ -42585,6 +42713,71 @@ var buildWithdrawalReader = (entry) => {
|
|
|
42585
42713
|
// src/vaults/lst/withdrawals/registry.ts
|
|
42586
42714
|
var LST_WITHDRAWAL_REGISTRY = {
|
|
42587
42715
|
"1": [
|
|
42716
|
+
// Ankr ankrETH — Ankr unstake queue; reader not yet implemented.
|
|
42717
|
+
{
|
|
42718
|
+
lst: "0xe95a203b1a91a908f9b9ce46459d101078c2c3cb",
|
|
42719
|
+
brand: "Ankr",
|
|
42720
|
+
symbol: "ankrETH",
|
|
42721
|
+
reader: "unverified"
|
|
42722
|
+
},
|
|
42723
|
+
// BTC LSTs — exits via issuer/DEX or a protocol queue; per-protocol
|
|
42724
|
+
// readers not yet implemented. Listed as `unverified` placeholders so the
|
|
42725
|
+
// orchestrator surfaces the asset (returns [] requests) instead of
|
|
42726
|
+
// silently omitting it.
|
|
42727
|
+
{
|
|
42728
|
+
lst: "0x8db2350d78abc13f5673a411d4700bcf87864dde",
|
|
42729
|
+
brand: "Swell",
|
|
42730
|
+
symbol: "swBTC",
|
|
42731
|
+
reader: "unverified"
|
|
42732
|
+
},
|
|
42733
|
+
{
|
|
42734
|
+
lst: "0x8236a87084f8b84306f72007f36f2618a5634494",
|
|
42735
|
+
brand: "Lombard",
|
|
42736
|
+
symbol: "LBTC",
|
|
42737
|
+
reader: "unverified"
|
|
42738
|
+
},
|
|
42739
|
+
{
|
|
42740
|
+
lst: "0x657e8c867d8b37dcc18fa4caead9c45eb088c642",
|
|
42741
|
+
brand: "ether.fi",
|
|
42742
|
+
symbol: "eBTC",
|
|
42743
|
+
reader: "unverified"
|
|
42744
|
+
},
|
|
42745
|
+
{
|
|
42746
|
+
lst: "0x004e9c3ef86bc1ca1f0bb5c7662861ee93350568",
|
|
42747
|
+
brand: "Bedrock",
|
|
42748
|
+
symbol: "uniBTC",
|
|
42749
|
+
reader: "unverified"
|
|
42750
|
+
},
|
|
42751
|
+
{
|
|
42752
|
+
lst: "0x2ec37d45fcae65d9787ecf71dc85a444968f6646",
|
|
42753
|
+
brand: "Bedrock",
|
|
42754
|
+
symbol: "brBTC",
|
|
42755
|
+
reader: "unverified"
|
|
42756
|
+
},
|
|
42757
|
+
{
|
|
42758
|
+
lst: "0xf469fbd2abcd6b9de8e169d128226c0fc90a012e",
|
|
42759
|
+
brand: "PumpBTC",
|
|
42760
|
+
symbol: "pumpBTC",
|
|
42761
|
+
reader: "unverified"
|
|
42762
|
+
},
|
|
42763
|
+
{
|
|
42764
|
+
lst: "0x7a56e1c57c7475ccf742a1832b028f0456652f97",
|
|
42765
|
+
brand: "Solv",
|
|
42766
|
+
symbol: "SolvBTC",
|
|
42767
|
+
reader: "unverified"
|
|
42768
|
+
},
|
|
42769
|
+
{
|
|
42770
|
+
lst: "0xd9d920aa40f578ab794426f5c90f6c731d159def",
|
|
42771
|
+
brand: "Solv",
|
|
42772
|
+
symbol: "xSolvBTC",
|
|
42773
|
+
reader: "unverified"
|
|
42774
|
+
},
|
|
42775
|
+
{
|
|
42776
|
+
lst: "0xcea2daf93617b97504e05affc5bcf9b3922d3034",
|
|
42777
|
+
brand: "Solv",
|
|
42778
|
+
symbol: "BTC+",
|
|
42779
|
+
reader: "unverified"
|
|
42780
|
+
},
|
|
42588
42781
|
{
|
|
42589
42782
|
lst: "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0",
|
|
42590
42783
|
brand: "Lido",
|
|
@@ -42748,6 +42941,13 @@ var LST_WITHDRAWAL_REGISTRY = {
|
|
|
42748
42941
|
}
|
|
42749
42942
|
],
|
|
42750
42943
|
"56": [
|
|
42944
|
+
// Ankr ankrBNB — Ankr unstake queue; reader not yet implemented.
|
|
42945
|
+
{
|
|
42946
|
+
lst: "0x52f24a5e03aee338da5fd9df68d2b6fae1178827",
|
|
42947
|
+
brand: "Ankr",
|
|
42948
|
+
symbol: "ankrBNB",
|
|
42949
|
+
reader: "unverified"
|
|
42950
|
+
},
|
|
42751
42951
|
{
|
|
42752
42952
|
// slisBNB — ListaStakeManager withdrawal queue. Per-user
|
|
42753
42953
|
// requests via getUserWithdrawalRequests; claimability + BNB
|
|
@@ -42776,6 +42976,13 @@ var LST_WITHDRAWAL_REGISTRY = {
|
|
|
42776
42976
|
}
|
|
42777
42977
|
],
|
|
42778
42978
|
"137": [
|
|
42979
|
+
// Ankr ankrMATIC — bridged, non-mintable on Polygon; exit via DEX only.
|
|
42980
|
+
{
|
|
42981
|
+
lst: "0x0e9b89007eee9c958c0eda24ef70723c2c93dd58",
|
|
42982
|
+
brand: "Ankr",
|
|
42983
|
+
symbol: "ankrMATIC",
|
|
42984
|
+
reader: "noQueue"
|
|
42985
|
+
},
|
|
42779
42986
|
{
|
|
42780
42987
|
// Polygon-side MaticX is a bridged ERC-20 — users bridge to
|
|
42781
42988
|
// Ethereum and claim from the L1 home contract.
|
|
@@ -42786,6 +42993,13 @@ var LST_WITHDRAWAL_REGISTRY = {
|
|
|
42786
42993
|
}
|
|
42787
42994
|
],
|
|
42788
42995
|
"43114": [
|
|
42996
|
+
// Ankr ankrAVAX — Ankr unstake queue; reader not yet implemented.
|
|
42997
|
+
{
|
|
42998
|
+
lst: "0xc3344870d52688874b06d844e0c36cc39fc727f6",
|
|
42999
|
+
brand: "Ankr",
|
|
43000
|
+
symbol: "ankrAVAX",
|
|
43001
|
+
reader: "unverified"
|
|
43002
|
+
},
|
|
42789
43003
|
{
|
|
42790
43004
|
lst: "0x2b2c81e08f1af8835a78bb2a90ae924ace0ea4be",
|
|
42791
43005
|
brand: "BENQI",
|
|
@@ -42969,6 +43183,35 @@ var LST_WITHDRAWAL_REGISTRY = {
|
|
|
42969
43183
|
reader: "stellaUnbondQueue",
|
|
42970
43184
|
withdrawalContract: "0xbc7e02c4178a7df7d3e564323a5c359dc96c4db4"
|
|
42971
43185
|
}
|
|
43186
|
+
],
|
|
43187
|
+
"1116": [
|
|
43188
|
+
// Core DAO LSTs — CoreDAO stakers unbond via the Earn / staking
|
|
43189
|
+
// contracts; per-protocol queue readers not yet implemented.
|
|
43190
|
+
{
|
|
43191
|
+
lst: "0xb3a8f0f0da9ffc65318aa39e55079796093029ad",
|
|
43192
|
+
brand: "Core",
|
|
43193
|
+
symbol: "stCORE",
|
|
43194
|
+
reader: "unverified"
|
|
43195
|
+
},
|
|
43196
|
+
{
|
|
43197
|
+
lst: "0xc5555ea27e63cd89f8b227dece2a3916800c0f4f",
|
|
43198
|
+
brand: "b14g",
|
|
43199
|
+
symbol: "dualCORE",
|
|
43200
|
+
reader: "unverified"
|
|
43201
|
+
},
|
|
43202
|
+
{
|
|
43203
|
+
lst: "0xa20b3b97df3a02f9185175760300a06b4e0a2c05",
|
|
43204
|
+
brand: "StakedCore",
|
|
43205
|
+
symbol: "SCORE",
|
|
43206
|
+
reader: "unverified"
|
|
43207
|
+
},
|
|
43208
|
+
// pumpBTC on Core — bridged, non-mintable; exit via DEX only.
|
|
43209
|
+
{
|
|
43210
|
+
lst: "0x5a2aa871954ebdf89b1547e75d032598356caad5",
|
|
43211
|
+
brand: "PumpBTC",
|
|
43212
|
+
symbol: "pumpBTC",
|
|
43213
|
+
reader: "noQueue"
|
|
43214
|
+
}
|
|
42972
43215
|
]
|
|
42973
43216
|
};
|
|
42974
43217
|
var getLstWithdrawalRegistry = (chainId, extraEntries) => {
|