@1delta/margin-fetcher 0.0.280 → 0.0.281
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
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 { getEvmChain, getEvmClient, getEvmClientUniversal, multicallRetryUniversal
|
|
7
|
+
import { getEvmChain, getEvmClient, 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';
|
|
@@ -32486,97 +32486,42 @@ var ankrFetcher = {
|
|
|
32486
32486
|
return result;
|
|
32487
32487
|
}
|
|
32488
32488
|
};
|
|
32489
|
-
|
|
32489
|
+
|
|
32490
|
+
// src/yields/intrinsic/fetchers/lista.ts
|
|
32491
|
+
var HISTORY_URL = "https://api.lista.org/api/datachart/history";
|
|
32490
32492
|
var SLISBNB = "Lista Staked BNB::slisBNB";
|
|
32491
|
-
var
|
|
32492
|
-
|
|
32493
|
-
|
|
32494
|
-
type: "function",
|
|
32495
|
-
stateMutability: "view",
|
|
32496
|
-
inputs: [{ type: "uint256" }],
|
|
32497
|
-
outputs: [{ type: "uint256" }]
|
|
32498
|
-
}
|
|
32499
|
-
];
|
|
32500
|
-
var ONE_E18 = 10n ** 18n;
|
|
32501
|
-
var YEAR_SECONDS2 = 31536e3;
|
|
32502
|
-
var WINDOWS_SECONDS = [7 * 86400, 3 * 86400, 86400];
|
|
32503
|
-
var BLOCK_TIME_SAMPLE = 10000n;
|
|
32504
|
-
var BNB_ARCHIVE_RPCS = {
|
|
32505
|
-
[Chain.BNB_SMART_CHAIN_MAINNET]: [
|
|
32506
|
-
"https://bsc.drpc.org",
|
|
32507
|
-
"https://bsc-rpc.publicnode.com",
|
|
32508
|
-
"https://bsc.api.onfinality.io/public",
|
|
32509
|
-
"https://1rpc.io/bnb"
|
|
32510
|
-
]
|
|
32511
|
-
};
|
|
32512
|
-
var RPC_ATTEMPTS2 = BNB_ARCHIVE_RPCS[Chain.BNB_SMART_CHAIN_MAINNET].length;
|
|
32513
|
-
var TOTAL_TIMEOUT_MS2 = 8e3;
|
|
32514
|
-
var withTimeout2 = (p, ms) => Promise.race([
|
|
32515
|
-
p,
|
|
32516
|
-
new Promise(
|
|
32517
|
-
(_3, reject) => setTimeout(() => reject(new Error("lista slisBNB yield timeout")), ms)
|
|
32518
|
-
)
|
|
32519
|
-
]);
|
|
32520
|
-
var readRate = (client, blockNumber) => client.readContract({
|
|
32521
|
-
address: STAKE_MANAGER,
|
|
32522
|
-
abi: CONVERT_ABI,
|
|
32523
|
-
functionName: "convertSnBnbToBnb",
|
|
32524
|
-
args: [ONE_E18],
|
|
32525
|
-
blockNumber
|
|
32526
|
-
});
|
|
32527
|
-
var sampleApr2 = async () => {
|
|
32528
|
-
for (let rpcId = 0; rpcId < RPC_ATTEMPTS2; rpcId++) {
|
|
32529
|
-
try {
|
|
32530
|
-
const client = getEvmClientWithCustomRpcsUniversal({
|
|
32531
|
-
chain: Chain.BNB_SMART_CHAIN_MAINNET,
|
|
32532
|
-
rpcId,
|
|
32533
|
-
customRpcs: BNB_ARCHIVE_RPCS
|
|
32534
|
-
});
|
|
32535
|
-
const latest = await client.getBlockNumber();
|
|
32536
|
-
if (latest <= BLOCK_TIME_SAMPLE) continue;
|
|
32537
|
-
const [blockNow, blockRef] = await Promise.all([
|
|
32538
|
-
client.getBlock({ blockNumber: latest }),
|
|
32539
|
-
client.getBlock({ blockNumber: latest - BLOCK_TIME_SAMPLE })
|
|
32540
|
-
]);
|
|
32541
|
-
const secondsPerBlock = Number(blockNow.timestamp - blockRef.timestamp) / Number(BLOCK_TIME_SAMPLE);
|
|
32542
|
-
if (!(secondsPerBlock > 0)) continue;
|
|
32543
|
-
for (const windowSeconds of WINDOWS_SECONDS) {
|
|
32544
|
-
const back = BigInt(Math.round(windowSeconds / secondsPerBlock));
|
|
32545
|
-
if (latest <= back) continue;
|
|
32546
|
-
const oldBlock = latest - back;
|
|
32547
|
-
try {
|
|
32548
|
-
const [rNow, rOld, blockOld] = await Promise.all([
|
|
32549
|
-
readRate(client, latest),
|
|
32550
|
-
readRate(client, oldBlock),
|
|
32551
|
-
client.getBlock({ blockNumber: oldBlock })
|
|
32552
|
-
]);
|
|
32553
|
-
const elapsed = Number(blockNow.timestamp - blockOld.timestamp);
|
|
32554
|
-
if (rOld <= 0n || rNow <= rOld || elapsed <= 0) continue;
|
|
32555
|
-
const growth = Number(rNow - rOld) / Number(rOld);
|
|
32556
|
-
const apr = growth * (YEAR_SECONDS2 / elapsed) * 100;
|
|
32557
|
-
if (Number.isFinite(apr) && apr > 0) return apr;
|
|
32558
|
-
} catch {
|
|
32559
|
-
}
|
|
32560
|
-
}
|
|
32561
|
-
} catch {
|
|
32562
|
-
}
|
|
32563
|
-
}
|
|
32564
|
-
return 0;
|
|
32565
|
-
};
|
|
32493
|
+
var DAY_SECONDS = 86400;
|
|
32494
|
+
var LOOKBACK_SECONDS = 14 * DAY_SECONDS;
|
|
32495
|
+
var TIMEOUT_MS = 8e3;
|
|
32566
32496
|
var slisBnbFetcher = {
|
|
32567
32497
|
label: "SLISBNB",
|
|
32568
32498
|
fetch: async () => {
|
|
32499
|
+
const nowSec = Math.floor(Date.now() / 1e3);
|
|
32500
|
+
const url = `${HISTORY_URL}?name=slisBNBRate&cycle=1&startTime=${nowSec - LOOKBACK_SECONDS}&endTime=${nowSec}`;
|
|
32501
|
+
const controller = new AbortController();
|
|
32502
|
+
const timer = setTimeout(() => controller.abort(), TIMEOUT_MS);
|
|
32569
32503
|
try {
|
|
32570
|
-
|
|
32571
|
-
|
|
32572
|
-
|
|
32504
|
+
const res = await fetch(url, {
|
|
32505
|
+
method: "GET",
|
|
32506
|
+
headers: { Accept: "application/json" },
|
|
32507
|
+
signal: controller.signal
|
|
32508
|
+
}).then((r) => r.json());
|
|
32509
|
+
const points = res.data ?? [];
|
|
32510
|
+
if (points.length === 0) return { [SLISBNB]: 0 };
|
|
32511
|
+
const latest = points.reduce(
|
|
32512
|
+
(a, b) => b.chartTime > a.chartTime ? b : a
|
|
32513
|
+
);
|
|
32514
|
+
const apr = Number(latest.amount);
|
|
32515
|
+
return { [SLISBNB]: Number.isFinite(apr) && apr > 0 ? apr : 0 };
|
|
32516
|
+
} finally {
|
|
32517
|
+
clearTimeout(timer);
|
|
32573
32518
|
}
|
|
32574
32519
|
}
|
|
32575
32520
|
};
|
|
32576
32521
|
var CHAIN_ID = "80094";
|
|
32577
32522
|
var IBERA = "0x9b6761bf2397bb5a6624a856cc84a3a14dcd3fe5";
|
|
32578
|
-
var
|
|
32579
|
-
var
|
|
32523
|
+
var ONE_E18 = 10n ** 18n;
|
|
32524
|
+
var YEAR_SECONDS2 = 365 * 24 * 60 * 60;
|
|
32580
32525
|
var WINDOW_SECONDS = 3 * 24 * 60 * 60;
|
|
32581
32526
|
var BLOCK_TIME_SECONDS = 2;
|
|
32582
32527
|
var WINDOW_BLOCKS = BigInt(Math.floor(WINDOW_SECONDS / BLOCK_TIME_SECONDS));
|
|
@@ -32594,7 +32539,7 @@ var readRateAt = (client, blockNumber) => client.readContract({
|
|
|
32594
32539
|
address: IBERA,
|
|
32595
32540
|
abi: CONVERT_TO_ASSETS_ABI,
|
|
32596
32541
|
functionName: "convertToAssets",
|
|
32597
|
-
args: [
|
|
32542
|
+
args: [ONE_E18],
|
|
32598
32543
|
...blockNumber !== void 0 ? { blockNumber } : {}
|
|
32599
32544
|
});
|
|
32600
32545
|
var computeApr = async () => {
|
|
@@ -32610,7 +32555,7 @@ var computeApr = async () => {
|
|
|
32610
32555
|
client.getBlock({ blockNumber: head }),
|
|
32611
32556
|
client.getBlock({ blockNumber: pastBlock })
|
|
32612
32557
|
]);
|
|
32613
|
-
if (rateNow <
|
|
32558
|
+
if (rateNow < ONE_E18 || rateThen < ONE_E18 || rateNow < rateThen) {
|
|
32614
32559
|
throw new Error(
|
|
32615
32560
|
`non-archival or invalid rates (now=${rateNow}, then=${rateThen})`
|
|
32616
32561
|
);
|
|
@@ -32618,7 +32563,7 @@ var computeApr = async () => {
|
|
|
32618
32563
|
const elapsed = Number(headBlock.timestamp - thenBlock.timestamp);
|
|
32619
32564
|
if (elapsed <= 0) throw new Error("non-positive elapsed window");
|
|
32620
32565
|
const growth = Number(rateNow - rateThen) / Number(rateThen);
|
|
32621
|
-
const apr = growth * (
|
|
32566
|
+
const apr = growth * (YEAR_SECONDS2 / elapsed) * 100;
|
|
32622
32567
|
if (!Number.isFinite(apr) || apr < 0) throw new Error(`bad apr ${apr}`);
|
|
32623
32568
|
return apr;
|
|
32624
32569
|
} catch (e) {
|
|
@@ -32668,8 +32613,8 @@ var ibgtFetcher = {
|
|
|
32668
32613
|
var CHAIN_ID2 = "1";
|
|
32669
32614
|
var APXETH = "0x9ba021b0a9b958b5e75ce9f6dff97c7ee52cb3e6";
|
|
32670
32615
|
var APXETH_DEFILLAMA_POOL = "fc25b5ff-2ba8-44a3-895b-e0d22d96365f";
|
|
32671
|
-
var
|
|
32672
|
-
var
|
|
32616
|
+
var ONE_E182 = 10n ** 18n;
|
|
32617
|
+
var YEAR_SECONDS3 = 365 * 24 * 60 * 60;
|
|
32673
32618
|
var WINDOW_SECONDS2 = 7 * 24 * 60 * 60;
|
|
32674
32619
|
var BLOCK_TIME_SECONDS2 = 12;
|
|
32675
32620
|
var WINDOW_BLOCKS2 = BigInt(Math.floor(WINDOW_SECONDS2 / BLOCK_TIME_SECONDS2));
|
|
@@ -32687,7 +32632,7 @@ var readRateAt2 = (client, blockNumber) => client.readContract({
|
|
|
32687
32632
|
address: APXETH,
|
|
32688
32633
|
abi: CONVERT_TO_ASSETS_ABI2,
|
|
32689
32634
|
functionName: "convertToAssets",
|
|
32690
|
-
args: [
|
|
32635
|
+
args: [ONE_E182],
|
|
32691
32636
|
...blockNumber !== void 0 ? { blockNumber } : {}
|
|
32692
32637
|
});
|
|
32693
32638
|
var computeApr2 = async () => {
|
|
@@ -32703,7 +32648,7 @@ var computeApr2 = async () => {
|
|
|
32703
32648
|
client.getBlock({ blockNumber: head }),
|
|
32704
32649
|
client.getBlock({ blockNumber: pastBlock })
|
|
32705
32650
|
]);
|
|
32706
|
-
if (rateNow <
|
|
32651
|
+
if (rateNow < ONE_E182 || rateThen < ONE_E182 || rateNow < rateThen) {
|
|
32707
32652
|
throw new Error(
|
|
32708
32653
|
`non-archival or invalid rates (now=${rateNow}, then=${rateThen})`
|
|
32709
32654
|
);
|
|
@@ -32711,7 +32656,7 @@ var computeApr2 = async () => {
|
|
|
32711
32656
|
const elapsed = Number(headBlock.timestamp - thenBlock.timestamp);
|
|
32712
32657
|
if (elapsed <= 0) throw new Error("non-positive elapsed window");
|
|
32713
32658
|
const growth = Number(rateNow - rateThen) / Number(rateThen);
|
|
32714
|
-
const apr = growth * (
|
|
32659
|
+
const apr = growth * (YEAR_SECONDS3 / elapsed) * 100;
|
|
32715
32660
|
if (!Number.isFinite(apr) || apr < 0) throw new Error(`bad apr ${apr}`);
|
|
32716
32661
|
return apr;
|
|
32717
32662
|
} catch (e) {
|
|
@@ -32747,7 +32692,7 @@ var PRIME_STAKING_BASE_APY = 4.5;
|
|
|
32747
32692
|
var CHAIN_ID3 = "50";
|
|
32748
32693
|
var VAULT = "0x98d916f5773ac0482b49856f2659d6c32114c4ba";
|
|
32749
32694
|
var SUBGRAPH_URL = "https://subgraph.primenumbers.xyz/subgraphs/name/liquidstaking";
|
|
32750
|
-
var
|
|
32695
|
+
var YEAR_SECONDS4 = 365 * 24 * 60 * 60;
|
|
32751
32696
|
var WINDOW_SECONDS3 = 180 * 24 * 60 * 60;
|
|
32752
32697
|
var MIN_SANE_APR = 1;
|
|
32753
32698
|
var MAX_SANE_APR = 12;
|
|
@@ -32792,7 +32737,7 @@ var computeApr3 = async () => {
|
|
|
32792
32737
|
]);
|
|
32793
32738
|
if (totalAssets <= 0n) throw new Error("zero TVL");
|
|
32794
32739
|
const growth = Number(rewardsWei) / Number(totalAssets);
|
|
32795
|
-
const apr = growth * (
|
|
32740
|
+
const apr = growth * (YEAR_SECONDS4 / WINDOW_SECONDS3) * 100;
|
|
32796
32741
|
if (!Number.isFinite(apr)) throw new Error(`bad apr ${apr}`);
|
|
32797
32742
|
return apr;
|
|
32798
32743
|
};
|
|
@@ -32810,8 +32755,8 @@ var psxdcFetcher = {
|
|
|
32810
32755
|
var STCORE_KEY = "Liquid staked CORE::stCORE";
|
|
32811
32756
|
var DUALCORE_KEY = "b14g dualCORE::DUALCORE";
|
|
32812
32757
|
var SCORE_KEY = "StakedCore::SCORE";
|
|
32813
|
-
var
|
|
32814
|
-
var
|
|
32758
|
+
var YEAR_SECONDS5 = 365 * 24 * 60 * 60;
|
|
32759
|
+
var ONE_E183 = 10n ** 18n;
|
|
32815
32760
|
var EARN = "0xf5fa1728babc3f8d2a617397fac2696c958c3409";
|
|
32816
32761
|
var SCORE = "0xa20b3b97df3a02f9185175760300a06b4e0a2c05";
|
|
32817
32762
|
var GET_EXCHANGE_RATES_ABI = [
|
|
@@ -32848,7 +32793,7 @@ var computeStCoreApr = async () => {
|
|
|
32848
32793
|
const days = rates.length - 1;
|
|
32849
32794
|
if (first <= 0n || last < first) continue;
|
|
32850
32795
|
const growth = Number(last - first) / Number(first);
|
|
32851
|
-
const apr = growth * (
|
|
32796
|
+
const apr = growth * (YEAR_SECONDS5 / (days * 86400)) * 100;
|
|
32852
32797
|
if (Number.isFinite(apr) && apr >= 0) return apr;
|
|
32853
32798
|
} catch {
|
|
32854
32799
|
}
|
|
@@ -32887,7 +32832,7 @@ var computeScoreApr = async () => {
|
|
|
32887
32832
|
]);
|
|
32888
32833
|
const sup = supply;
|
|
32889
32834
|
if (sup <= 0n) return 0;
|
|
32890
|
-
return Number(staked *
|
|
32835
|
+
return Number(staked * ONE_E183 / sup) / 1e18;
|
|
32891
32836
|
};
|
|
32892
32837
|
for (const window of WINDOWS) {
|
|
32893
32838
|
for (let rpcId = 0; rpcId < 3; rpcId++) {
|
|
@@ -32904,7 +32849,7 @@ var computeScoreApr = async () => {
|
|
|
32904
32849
|
]);
|
|
32905
32850
|
const elapsed = Number(bNow.timestamp - bOld.timestamp);
|
|
32906
32851
|
if (rOld <= 0 || rNow <= rOld || elapsed <= 0) continue;
|
|
32907
|
-
const apr = (rNow - rOld) / rOld * (
|
|
32852
|
+
const apr = (rNow - rOld) / rOld * (YEAR_SECONDS5 / elapsed) * 100;
|
|
32908
32853
|
if (Number.isFinite(apr) && apr > 0) return apr;
|
|
32909
32854
|
} catch {
|
|
32910
32855
|
}
|
|
@@ -38272,7 +38217,7 @@ var fetchEulerEarnVaults = async (chainId, prices = {}, tokenList = {}) => {
|
|
|
38272
38217
|
var CHAIN_ID4 = "1";
|
|
38273
38218
|
var SWBTC = "0x8db2350d78abc13f5673a411d4700bcf87864dde";
|
|
38274
38219
|
var ONE_E8 = 10n ** 8n;
|
|
38275
|
-
var
|
|
38220
|
+
var YEAR_SECONDS6 = 365 * 24 * 60 * 60;
|
|
38276
38221
|
var WINDOW_SECONDS4 = 7 * 24 * 60 * 60;
|
|
38277
38222
|
var BLOCK_TIME_SECONDS3 = 12;
|
|
38278
38223
|
var WINDOW_BLOCKS3 = BigInt(Math.floor(WINDOW_SECONDS4 / BLOCK_TIME_SECONDS3));
|
|
@@ -38314,7 +38259,7 @@ var computeApr4 = async () => {
|
|
|
38314
38259
|
const elapsed = Number(headBlock.timestamp - thenBlock.timestamp);
|
|
38315
38260
|
if (elapsed <= 0) throw new Error(`bad elapsed ${elapsed}`);
|
|
38316
38261
|
const growth = Number(rateNow) / Number(rateThen) - 1;
|
|
38317
|
-
const apr = growth * (
|
|
38262
|
+
const apr = growth * (YEAR_SECONDS6 / elapsed) * 100;
|
|
38318
38263
|
if (!Number.isFinite(apr) || apr < 0) throw new Error(`bad apr ${apr}`);
|
|
38319
38264
|
return apr;
|
|
38320
38265
|
} catch (e) {
|
|
@@ -38337,8 +38282,8 @@ var swBtcFetcher = {
|
|
|
38337
38282
|
};
|
|
38338
38283
|
var CHAIN_ID5 = "42220";
|
|
38339
38284
|
var MANAGER = "0x0239b96d10a434a56cc9e09383077a0490cf9398";
|
|
38340
|
-
var
|
|
38341
|
-
var
|
|
38285
|
+
var ONE_E184 = 10n ** 18n;
|
|
38286
|
+
var YEAR_SECONDS7 = 365 * 24 * 60 * 60;
|
|
38342
38287
|
var WINDOW_SECONDS5 = 7 * 24 * 60 * 60;
|
|
38343
38288
|
var BLOCK_TIME_SECONDS4 = 1;
|
|
38344
38289
|
var WINDOW_BLOCKS4 = BigInt(Math.floor(WINDOW_SECONDS5 / BLOCK_TIME_SECONDS4));
|
|
@@ -38356,7 +38301,7 @@ var readRateAt4 = (client, blockNumber) => client.readContract({
|
|
|
38356
38301
|
address: MANAGER,
|
|
38357
38302
|
abi: TO_CELO_ABI,
|
|
38358
38303
|
functionName: "toCelo",
|
|
38359
|
-
args: [
|
|
38304
|
+
args: [ONE_E184],
|
|
38360
38305
|
...blockNumber !== void 0 ? { blockNumber } : {}
|
|
38361
38306
|
});
|
|
38362
38307
|
var computeApr5 = async () => {
|
|
@@ -38372,7 +38317,7 @@ var computeApr5 = async () => {
|
|
|
38372
38317
|
client.getBlock({ blockNumber: head }),
|
|
38373
38318
|
client.getBlock({ blockNumber: pastBlock })
|
|
38374
38319
|
]);
|
|
38375
|
-
if (rateNow <
|
|
38320
|
+
if (rateNow < ONE_E184 || rateThen < ONE_E184 || rateNow < rateThen) {
|
|
38376
38321
|
throw new Error(
|
|
38377
38322
|
`non-archival or invalid rates (now=${rateNow}, then=${rateThen})`
|
|
38378
38323
|
);
|
|
@@ -38380,7 +38325,7 @@ var computeApr5 = async () => {
|
|
|
38380
38325
|
const elapsed = Number(headBlock.timestamp - thenBlock.timestamp);
|
|
38381
38326
|
if (elapsed <= 0) throw new Error("non-positive elapsed window");
|
|
38382
38327
|
const growth = Number(rateNow - rateThen) / Number(rateThen);
|
|
38383
|
-
const apr = growth * (
|
|
38328
|
+
const apr = growth * (YEAR_SECONDS7 / elapsed) * 100;
|
|
38384
38329
|
if (!Number.isFinite(apr) || apr < 0) throw new Error(`bad apr ${apr}`);
|
|
38385
38330
|
return apr;
|
|
38386
38331
|
} catch (e) {
|
|
@@ -38413,8 +38358,8 @@ var lombardLbtcFetcher = {
|
|
|
38413
38358
|
};
|
|
38414
38359
|
var CHAIN_ID6 = "1284";
|
|
38415
38360
|
var STDOT = "0xbc7e02c4178a7df7d3e564323a5c359dc96c4db4";
|
|
38416
|
-
var
|
|
38417
|
-
var
|
|
38361
|
+
var ONE_E185 = 10n ** 18n;
|
|
38362
|
+
var YEAR_SECONDS8 = 365 * 24 * 60 * 60;
|
|
38418
38363
|
var WINDOW_SECONDS6 = 180 * 24 * 60 * 60;
|
|
38419
38364
|
var BLOCK_TIME_SECONDS5 = 6;
|
|
38420
38365
|
var WINDOW_BLOCKS5 = BigInt(Math.floor(WINDOW_SECONDS6 / BLOCK_TIME_SECONDS5));
|
|
@@ -38432,7 +38377,7 @@ var readRateAt5 = (client, blockNumber) => client.readContract({
|
|
|
38432
38377
|
address: STDOT,
|
|
38433
38378
|
abi: POOLED_BY_SHARES_ABI,
|
|
38434
38379
|
functionName: "getPooledTokenByShares",
|
|
38435
|
-
args: [
|
|
38380
|
+
args: [ONE_E185],
|
|
38436
38381
|
...blockNumber !== void 0 ? { blockNumber } : {}
|
|
38437
38382
|
});
|
|
38438
38383
|
var computeApr6 = async () => {
|
|
@@ -38448,7 +38393,7 @@ var computeApr6 = async () => {
|
|
|
38448
38393
|
client.getBlock({ blockNumber: head }),
|
|
38449
38394
|
client.getBlock({ blockNumber: pastBlock })
|
|
38450
38395
|
]);
|
|
38451
|
-
if (rateNow <
|
|
38396
|
+
if (rateNow < ONE_E185 || rateThen < ONE_E185 || rateNow < rateThen) {
|
|
38452
38397
|
throw new Error(
|
|
38453
38398
|
`non-archival or invalid rates (now=${rateNow}, then=${rateThen})`
|
|
38454
38399
|
);
|
|
@@ -38456,7 +38401,7 @@ var computeApr6 = async () => {
|
|
|
38456
38401
|
const elapsed = Number(headBlock.timestamp - thenBlock.timestamp);
|
|
38457
38402
|
if (elapsed <= 0) throw new Error("non-positive elapsed window");
|
|
38458
38403
|
const growth = Number(rateNow - rateThen) / Number(rateThen);
|
|
38459
|
-
const apr = growth * (
|
|
38404
|
+
const apr = growth * (YEAR_SECONDS8 / elapsed) * 100;
|
|
38460
38405
|
if (!Number.isFinite(apr) || apr < 0) throw new Error(`bad apr ${apr}`);
|
|
38461
38406
|
return apr;
|
|
38462
38407
|
} catch (e) {
|
|
@@ -39776,7 +39721,7 @@ var Erc4626PreviewRedeemAbi = [
|
|
|
39776
39721
|
];
|
|
39777
39722
|
|
|
39778
39723
|
// src/vaults/lst/readers/shared.ts
|
|
39779
|
-
var
|
|
39724
|
+
var ONE_E186 = 10n ** 18n;
|
|
39780
39725
|
var rescaleDecimals = (v, fromDec, toDec) => toDec >= fromDec ? v * 10n ** BigInt(toDec - fromDec) : v / 10n ** BigInt(fromDec - toDec);
|
|
39781
39726
|
var MULTICALL3_ADDRESS = "0xcA11bde05977b3631167028862bE2a173976CA11";
|
|
39782
39727
|
var Multicall3BalanceAbi = [
|
|
@@ -39819,7 +39764,7 @@ var readerBeetsStS = (entry) => ({
|
|
|
39819
39764
|
}
|
|
39820
39765
|
const liquidity = toBigInt10(pool);
|
|
39821
39766
|
return {
|
|
39822
|
-
totalAssets: totalSupply * exchangeRate /
|
|
39767
|
+
totalAssets: totalSupply * exchangeRate / ONE_E186,
|
|
39823
39768
|
totalSupply,
|
|
39824
39769
|
exchangeRate,
|
|
39825
39770
|
liquidity
|
|
@@ -39852,7 +39797,7 @@ var readerBenqiSavax = (entry) => ({
|
|
|
39852
39797
|
{
|
|
39853
39798
|
address: entry.address,
|
|
39854
39799
|
name: "getPooledAvaxByShares",
|
|
39855
|
-
params: [
|
|
39800
|
+
params: [ONE_E186]
|
|
39856
39801
|
},
|
|
39857
39802
|
{ address: entry.address, name: "totalPooledAvax", params: [] }
|
|
39858
39803
|
],
|
|
@@ -39863,7 +39808,7 @@ var readerBenqiSavax = (entry) => ({
|
|
|
39863
39808
|
if (totalSupply === void 0 || exchangeRate === void 0) {
|
|
39864
39809
|
return void 0;
|
|
39865
39810
|
}
|
|
39866
|
-
const totalAssets = toBigInt10(totalPooled) ?? totalSupply * exchangeRate /
|
|
39811
|
+
const totalAssets = toBigInt10(totalPooled) ?? totalSupply * exchangeRate / ONE_E186;
|
|
39867
39812
|
return {
|
|
39868
39813
|
totalAssets,
|
|
39869
39814
|
totalSupply,
|
|
@@ -39882,7 +39827,7 @@ var readerBgtWrapper1to1 = (entry) => ({
|
|
|
39882
39827
|
return {
|
|
39883
39828
|
totalAssets: totalSupply,
|
|
39884
39829
|
totalSupply,
|
|
39885
|
-
exchangeRate:
|
|
39830
|
+
exchangeRate: ONE_E186
|
|
39886
39831
|
};
|
|
39887
39832
|
}
|
|
39888
39833
|
});
|
|
@@ -39912,7 +39857,7 @@ var readerDineroBeraEth = (entry) => ({
|
|
|
39912
39857
|
return void 0;
|
|
39913
39858
|
}
|
|
39914
39859
|
return {
|
|
39915
|
-
totalAssets: totalSupply * exchangeRate /
|
|
39860
|
+
totalAssets: totalSupply * exchangeRate / ONE_E186,
|
|
39916
39861
|
totalSupply,
|
|
39917
39862
|
exchangeRate
|
|
39918
39863
|
};
|
|
@@ -39924,7 +39869,7 @@ var readerErc4626 = (entry) => ({
|
|
|
39924
39869
|
calls: [
|
|
39925
39870
|
{ address: entry.address, name: "totalAssets", params: [] },
|
|
39926
39871
|
{ address: entry.address, name: "totalSupply", params: [] },
|
|
39927
|
-
{ address: entry.address, name: "convertToAssets", params: [
|
|
39872
|
+
{ address: entry.address, name: "convertToAssets", params: [ONE_E186] }
|
|
39928
39873
|
],
|
|
39929
39874
|
abis: [Erc4626ReadAbi, TotalSupplyAbi, Erc4626ReadAbi],
|
|
39930
39875
|
parse: ([assets, supply, rate]) => {
|
|
@@ -39941,7 +39886,7 @@ var readerErc4626PreviewRedeem = (entry) => ({
|
|
|
39941
39886
|
calls: [
|
|
39942
39887
|
{ address: entry.address, name: "totalAssets", params: [] },
|
|
39943
39888
|
{ address: entry.address, name: "totalSupply", params: [] },
|
|
39944
|
-
{ address: entry.address, name: "previewRedeem", params: [
|
|
39889
|
+
{ address: entry.address, name: "previewRedeem", params: [ONE_E186] }
|
|
39945
39890
|
],
|
|
39946
39891
|
abis: [Erc4626PreviewRedeemAbi, TotalSupplyAbi, Erc4626PreviewRedeemAbi],
|
|
39947
39892
|
parse: ([assets, supply, rate]) => {
|
|
@@ -40021,7 +39966,7 @@ var readerEtherFiWeEth = (entry) => {
|
|
|
40021
39966
|
}
|
|
40022
39967
|
}
|
|
40023
39968
|
return {
|
|
40024
|
-
totalAssets: totalSupply * exchangeRate /
|
|
39969
|
+
totalAssets: totalSupply * exchangeRate / ONE_E186,
|
|
40025
39970
|
totalSupply,
|
|
40026
39971
|
exchangeRate,
|
|
40027
39972
|
liquidity
|
|
@@ -40054,7 +39999,7 @@ var readerHyperbeatBeHype = (entry) => {
|
|
|
40054
39999
|
return {
|
|
40055
40000
|
totalAssets: totalSupply,
|
|
40056
40001
|
totalSupply,
|
|
40057
|
-
exchangeRate:
|
|
40002
|
+
exchangeRate: ONE_E186
|
|
40058
40003
|
};
|
|
40059
40004
|
}
|
|
40060
40005
|
};
|
|
@@ -40062,7 +40007,7 @@ var readerHyperbeatBeHype = (entry) => {
|
|
|
40062
40007
|
return {
|
|
40063
40008
|
calls: [
|
|
40064
40009
|
{ address: entry.address, name: "totalSupply", params: [] },
|
|
40065
|
-
{ address: stakingCore, name: "BeHYPEToHYPE", params: [
|
|
40010
|
+
{ address: stakingCore, name: "BeHYPEToHYPE", params: [ONE_E186] }
|
|
40066
40011
|
],
|
|
40067
40012
|
abis: [TotalSupplyAbi, HyperbeatStakingCoreAbi],
|
|
40068
40013
|
parse: ([supply, rate]) => {
|
|
@@ -40072,7 +40017,7 @@ var readerHyperbeatBeHype = (entry) => {
|
|
|
40072
40017
|
return void 0;
|
|
40073
40018
|
}
|
|
40074
40019
|
return {
|
|
40075
|
-
totalAssets: totalSupply * exchangeRate /
|
|
40020
|
+
totalAssets: totalSupply * exchangeRate / ONE_E186,
|
|
40076
40021
|
totalSupply,
|
|
40077
40022
|
exchangeRate
|
|
40078
40023
|
};
|
|
@@ -40104,7 +40049,7 @@ var readerKelpRsEth = (entry) => {
|
|
|
40104
40049
|
return {
|
|
40105
40050
|
totalAssets: totalSupply,
|
|
40106
40051
|
totalSupply,
|
|
40107
|
-
exchangeRate:
|
|
40052
|
+
exchangeRate: ONE_E186
|
|
40108
40053
|
};
|
|
40109
40054
|
}
|
|
40110
40055
|
};
|
|
@@ -40122,7 +40067,7 @@ var readerKelpRsEth = (entry) => {
|
|
|
40122
40067
|
return void 0;
|
|
40123
40068
|
}
|
|
40124
40069
|
return {
|
|
40125
|
-
totalAssets: totalSupply * exchangeRate /
|
|
40070
|
+
totalAssets: totalSupply * exchangeRate / ONE_E186,
|
|
40126
40071
|
totalSupply,
|
|
40127
40072
|
exchangeRate
|
|
40128
40073
|
};
|
|
@@ -40154,7 +40099,7 @@ var readerKinetiqKHype = (entry) => {
|
|
|
40154
40099
|
return {
|
|
40155
40100
|
totalAssets: totalSupply,
|
|
40156
40101
|
totalSupply,
|
|
40157
|
-
exchangeRate:
|
|
40102
|
+
exchangeRate: ONE_E186
|
|
40158
40103
|
};
|
|
40159
40104
|
}
|
|
40160
40105
|
};
|
|
@@ -40162,7 +40107,7 @@ var readerKinetiqKHype = (entry) => {
|
|
|
40162
40107
|
return {
|
|
40163
40108
|
calls: [
|
|
40164
40109
|
{ address: entry.address, name: "totalSupply", params: [] },
|
|
40165
|
-
{ address: accountant, name: "kHYPEToHYPE", params: [
|
|
40110
|
+
{ address: accountant, name: "kHYPEToHYPE", params: [ONE_E186] }
|
|
40166
40111
|
],
|
|
40167
40112
|
abis: [TotalSupplyAbi, KinetiqStakingAccountantAbi],
|
|
40168
40113
|
parse: ([supply, rate]) => {
|
|
@@ -40172,7 +40117,7 @@ var readerKinetiqKHype = (entry) => {
|
|
|
40172
40117
|
return void 0;
|
|
40173
40118
|
}
|
|
40174
40119
|
return {
|
|
40175
|
-
totalAssets: totalSupply * exchangeRate /
|
|
40120
|
+
totalAssets: totalSupply * exchangeRate / ONE_E186,
|
|
40176
40121
|
totalSupply,
|
|
40177
40122
|
exchangeRate
|
|
40178
40123
|
};
|
|
@@ -40212,7 +40157,7 @@ var readerLairStKaia = (entry) => ({
|
|
|
40212
40157
|
if (totalSupply === void 0 || exchangeRate === void 0) {
|
|
40213
40158
|
return void 0;
|
|
40214
40159
|
}
|
|
40215
|
-
const totalAssets = toBigInt10(totalStaking) ?? totalSupply * exchangeRate /
|
|
40160
|
+
const totalAssets = toBigInt10(totalStaking) ?? totalSupply * exchangeRate / ONE_E186;
|
|
40216
40161
|
return {
|
|
40217
40162
|
totalAssets,
|
|
40218
40163
|
totalSupply,
|
|
@@ -40246,7 +40191,7 @@ var readerLidoWstEth = (entry) => ({
|
|
|
40246
40191
|
return void 0;
|
|
40247
40192
|
}
|
|
40248
40193
|
return {
|
|
40249
|
-
totalAssets: totalSupply * exchangeRate /
|
|
40194
|
+
totalAssets: totalSupply * exchangeRate / ONE_E186,
|
|
40250
40195
|
totalSupply,
|
|
40251
40196
|
exchangeRate
|
|
40252
40197
|
};
|
|
@@ -40284,7 +40229,7 @@ var readerListaSlisBnb = (entry) => {
|
|
|
40284
40229
|
return {
|
|
40285
40230
|
totalAssets: totalSupply,
|
|
40286
40231
|
totalSupply,
|
|
40287
|
-
exchangeRate:
|
|
40232
|
+
exchangeRate: ONE_E186
|
|
40288
40233
|
};
|
|
40289
40234
|
}
|
|
40290
40235
|
};
|
|
@@ -40292,7 +40237,7 @@ var readerListaSlisBnb = (entry) => {
|
|
|
40292
40237
|
return {
|
|
40293
40238
|
calls: [
|
|
40294
40239
|
{ address: entry.address, name: "totalSupply", params: [] },
|
|
40295
|
-
{ address: manager, name: "convertSnBnbToBnb", params: [
|
|
40240
|
+
{ address: manager, name: "convertSnBnbToBnb", params: [ONE_E186] },
|
|
40296
40241
|
{ address: manager, name: "getTotalPooledBnb", params: [] }
|
|
40297
40242
|
],
|
|
40298
40243
|
abis: [TotalSupplyAbi, ListaStakeManagerReadAbi, ListaStakeManagerReadAbi],
|
|
@@ -40303,7 +40248,7 @@ var readerListaSlisBnb = (entry) => {
|
|
|
40303
40248
|
return void 0;
|
|
40304
40249
|
}
|
|
40305
40250
|
const pooledBnb = toBigInt10(pooled);
|
|
40306
|
-
const totalAssets = pooledBnb ?? totalSupply * exchangeRate /
|
|
40251
|
+
const totalAssets = pooledBnb ?? totalSupply * exchangeRate / ONE_E186;
|
|
40307
40252
|
return { totalAssets, totalSupply, exchangeRate };
|
|
40308
40253
|
}
|
|
40309
40254
|
};
|
|
@@ -40333,7 +40278,7 @@ var readerMantleMEth = (entry) => {
|
|
|
40333
40278
|
return {
|
|
40334
40279
|
totalAssets: totalSupply,
|
|
40335
40280
|
totalSupply,
|
|
40336
|
-
exchangeRate:
|
|
40281
|
+
exchangeRate: ONE_E186
|
|
40337
40282
|
};
|
|
40338
40283
|
}
|
|
40339
40284
|
};
|
|
@@ -40341,7 +40286,7 @@ var readerMantleMEth = (entry) => {
|
|
|
40341
40286
|
return {
|
|
40342
40287
|
calls: [
|
|
40343
40288
|
{ address: entry.address, name: "totalSupply", params: [] },
|
|
40344
|
-
{ address: staking, name: "mETHToETH", params: [
|
|
40289
|
+
{ address: staking, name: "mETHToETH", params: [ONE_E186] }
|
|
40345
40290
|
],
|
|
40346
40291
|
abis: [TotalSupplyAbi, MantleStakingAbi],
|
|
40347
40292
|
parse: ([supply, rate]) => {
|
|
@@ -40351,7 +40296,7 @@ var readerMantleMEth = (entry) => {
|
|
|
40351
40296
|
return void 0;
|
|
40352
40297
|
}
|
|
40353
40298
|
return {
|
|
40354
|
-
totalAssets: totalSupply * exchangeRate /
|
|
40299
|
+
totalAssets: totalSupply * exchangeRate / ONE_E186,
|
|
40355
40300
|
totalSupply,
|
|
40356
40301
|
exchangeRate
|
|
40357
40302
|
};
|
|
@@ -40372,7 +40317,7 @@ var readerOffChain = (entry) => {
|
|
|
40372
40317
|
return {
|
|
40373
40318
|
totalAssets: rescaleDecimals(totalSupply, shareDec, underlyingDec),
|
|
40374
40319
|
totalSupply,
|
|
40375
|
-
exchangeRate:
|
|
40320
|
+
exchangeRate: ONE_E186
|
|
40376
40321
|
};
|
|
40377
40322
|
}
|
|
40378
40323
|
};
|
|
@@ -40406,7 +40351,7 @@ var readerRenzoEzEth = (entry) => {
|
|
|
40406
40351
|
return {
|
|
40407
40352
|
totalAssets: totalSupply,
|
|
40408
40353
|
totalSupply,
|
|
40409
|
-
exchangeRate:
|
|
40354
|
+
exchangeRate: ONE_E186
|
|
40410
40355
|
};
|
|
40411
40356
|
}
|
|
40412
40357
|
};
|
|
@@ -40425,7 +40370,7 @@ var readerRenzoEzEth = (entry) => {
|
|
|
40425
40370
|
return {
|
|
40426
40371
|
totalAssets: totalTvl,
|
|
40427
40372
|
totalSupply,
|
|
40428
|
-
exchangeRate: totalTvl *
|
|
40373
|
+
exchangeRate: totalTvl * ONE_E186 / totalSupply
|
|
40429
40374
|
};
|
|
40430
40375
|
}
|
|
40431
40376
|
};
|
|
@@ -40481,7 +40426,7 @@ var readerRocketReth = (entry) => {
|
|
|
40481
40426
|
}
|
|
40482
40427
|
const liquidity = depositPool ? toBigInt10(slice[2]) : void 0;
|
|
40483
40428
|
return {
|
|
40484
|
-
totalAssets: totalSupply * exchangeRate /
|
|
40429
|
+
totalAssets: totalSupply * exchangeRate / ONE_E186,
|
|
40485
40430
|
totalSupply,
|
|
40486
40431
|
exchangeRate,
|
|
40487
40432
|
liquidity
|
|
@@ -40523,7 +40468,7 @@ var readerStaderEthx = (entry) => {
|
|
|
40523
40468
|
return {
|
|
40524
40469
|
totalAssets: totalSupply,
|
|
40525
40470
|
totalSupply,
|
|
40526
|
-
exchangeRate:
|
|
40471
|
+
exchangeRate: ONE_E186
|
|
40527
40472
|
};
|
|
40528
40473
|
}
|
|
40529
40474
|
};
|
|
@@ -40541,7 +40486,7 @@ var readerStaderEthx = (entry) => {
|
|
|
40541
40486
|
return void 0;
|
|
40542
40487
|
}
|
|
40543
40488
|
return {
|
|
40544
|
-
totalAssets: totalSupply * exchangeRate /
|
|
40489
|
+
totalAssets: totalSupply * exchangeRate / ONE_E186,
|
|
40545
40490
|
totalSupply,
|
|
40546
40491
|
exchangeRate
|
|
40547
40492
|
};
|
|
@@ -40558,7 +40503,7 @@ var readerStaderMaticX = (entry) => {
|
|
|
40558
40503
|
{
|
|
40559
40504
|
address: rateAddress,
|
|
40560
40505
|
name: "convertMaticXToMatic",
|
|
40561
|
-
params: [
|
|
40506
|
+
params: [ONE_E186],
|
|
40562
40507
|
chainId: homeChainId
|
|
40563
40508
|
}
|
|
40564
40509
|
],
|
|
@@ -40573,7 +40518,7 @@ var readerStaderMaticX = (entry) => {
|
|
|
40573
40518
|
}
|
|
40574
40519
|
const isCrossChain = homeContract !== void 0;
|
|
40575
40520
|
return {
|
|
40576
|
-
totalAssets: isCrossChain ? totalSupply * amountInMatic /
|
|
40521
|
+
totalAssets: isCrossChain ? totalSupply * amountInMatic / ONE_E186 : totalPooledMatic ?? totalSupply * amountInMatic / ONE_E186,
|
|
40577
40522
|
totalSupply,
|
|
40578
40523
|
exchangeRate: amountInMatic
|
|
40579
40524
|
};
|
|
@@ -40605,7 +40550,7 @@ var readerStakeWiseOsEth = (entry) => {
|
|
|
40605
40550
|
return {
|
|
40606
40551
|
totalAssets: totalSupply,
|
|
40607
40552
|
totalSupply,
|
|
40608
|
-
exchangeRate:
|
|
40553
|
+
exchangeRate: ONE_E186
|
|
40609
40554
|
};
|
|
40610
40555
|
}
|
|
40611
40556
|
};
|
|
@@ -40613,7 +40558,7 @@ var readerStakeWiseOsEth = (entry) => {
|
|
|
40613
40558
|
return {
|
|
40614
40559
|
calls: [
|
|
40615
40560
|
{ address: entry.address, name: "totalSupply", params: [] },
|
|
40616
|
-
{ address: controller, name: "convertToAssets", params: [
|
|
40561
|
+
{ address: controller, name: "convertToAssets", params: [ONE_E186] }
|
|
40617
40562
|
],
|
|
40618
40563
|
abis: [TotalSupplyAbi, StakeWiseOsTokenAbi],
|
|
40619
40564
|
parse: ([supply, rate]) => {
|
|
@@ -40623,7 +40568,7 @@ var readerStakeWiseOsEth = (entry) => {
|
|
|
40623
40568
|
return void 0;
|
|
40624
40569
|
}
|
|
40625
40570
|
return {
|
|
40626
|
-
totalAssets: totalSupply * exchangeRate /
|
|
40571
|
+
totalAssets: totalSupply * exchangeRate / ONE_E186,
|
|
40627
40572
|
totalSupply,
|
|
40628
40573
|
exchangeRate
|
|
40629
40574
|
};
|
|
@@ -40655,7 +40600,7 @@ var readerStCelo = (entry) => {
|
|
|
40655
40600
|
return {
|
|
40656
40601
|
totalAssets: totalSupply,
|
|
40657
40602
|
totalSupply,
|
|
40658
|
-
exchangeRate:
|
|
40603
|
+
exchangeRate: ONE_E186
|
|
40659
40604
|
};
|
|
40660
40605
|
}
|
|
40661
40606
|
};
|
|
@@ -40663,7 +40608,7 @@ var readerStCelo = (entry) => {
|
|
|
40663
40608
|
return {
|
|
40664
40609
|
calls: [
|
|
40665
40610
|
{ address: entry.address, name: "totalSupply", params: [] },
|
|
40666
|
-
{ address: manager, name: "toCelo", params: [
|
|
40611
|
+
{ address: manager, name: "toCelo", params: [ONE_E186] }
|
|
40667
40612
|
],
|
|
40668
40613
|
abis: [TotalSupplyAbi, StCeloManagerAbi],
|
|
40669
40614
|
parse: ([supply, rate]) => {
|
|
@@ -40673,7 +40618,7 @@ var readerStCelo = (entry) => {
|
|
|
40673
40618
|
return void 0;
|
|
40674
40619
|
}
|
|
40675
40620
|
return {
|
|
40676
|
-
totalAssets: totalSupply * exchangeRate /
|
|
40621
|
+
totalAssets: totalSupply * exchangeRate / ONE_E186,
|
|
40677
40622
|
totalSupply,
|
|
40678
40623
|
exchangeRate
|
|
40679
40624
|
};
|
|
@@ -40706,7 +40651,7 @@ var readerSwellGetRate = (entry) => ({
|
|
|
40706
40651
|
return void 0;
|
|
40707
40652
|
}
|
|
40708
40653
|
return {
|
|
40709
|
-
totalAssets: totalSupply * exchangeRate /
|
|
40654
|
+
totalAssets: totalSupply * exchangeRate / ONE_E186,
|
|
40710
40655
|
totalSupply,
|
|
40711
40656
|
exchangeRate
|
|
40712
40657
|
};
|
|
@@ -40737,7 +40682,7 @@ var readerValantisWstHype = (entry) => {
|
|
|
40737
40682
|
return {
|
|
40738
40683
|
totalAssets: totalSupply,
|
|
40739
40684
|
totalSupply,
|
|
40740
|
-
exchangeRate:
|
|
40685
|
+
exchangeRate: ONE_E186
|
|
40741
40686
|
};
|
|
40742
40687
|
}
|
|
40743
40688
|
};
|
|
@@ -40755,7 +40700,7 @@ var readerValantisWstHype = (entry) => {
|
|
|
40755
40700
|
return void 0;
|
|
40756
40701
|
}
|
|
40757
40702
|
return {
|
|
40758
|
-
totalAssets: totalSupply * exchangeRate /
|
|
40703
|
+
totalAssets: totalSupply * exchangeRate / ONE_E186,
|
|
40759
40704
|
totalSupply,
|
|
40760
40705
|
exchangeRate
|
|
40761
40706
|
};
|
|
@@ -40789,7 +40734,7 @@ var readerVedaAccountant = (entry) => {
|
|
|
40789
40734
|
return {
|
|
40790
40735
|
totalAssets: rescaleDecimals(totalSupply, shareDec, underlyingDec),
|
|
40791
40736
|
totalSupply,
|
|
40792
|
-
exchangeRate:
|
|
40737
|
+
exchangeRate: ONE_E186
|
|
40793
40738
|
};
|
|
40794
40739
|
}
|
|
40795
40740
|
};
|
|
@@ -40808,7 +40753,7 @@ var readerVedaAccountant = (entry) => {
|
|
|
40808
40753
|
const exchangeRate = rawRate * scale;
|
|
40809
40754
|
return {
|
|
40810
40755
|
totalAssets: rescaleDecimals(
|
|
40811
|
-
totalSupply * exchangeRate /
|
|
40756
|
+
totalSupply * exchangeRate / ONE_E186,
|
|
40812
40757
|
shareDec,
|
|
40813
40758
|
underlyingDec
|
|
40814
40759
|
),
|
|
@@ -40844,9 +40789,9 @@ var readerAnkrRatio = (entry) => ({
|
|
|
40844
40789
|
return void 0;
|
|
40845
40790
|
}
|
|
40846
40791
|
return {
|
|
40847
|
-
totalAssets: totalSupply *
|
|
40792
|
+
totalAssets: totalSupply * ONE_E186 / r,
|
|
40848
40793
|
totalSupply,
|
|
40849
|
-
exchangeRate:
|
|
40794
|
+
exchangeRate: ONE_E186 * ONE_E186 / r
|
|
40850
40795
|
};
|
|
40851
40796
|
}
|
|
40852
40797
|
});
|
|
@@ -40890,7 +40835,7 @@ var readerCoreEarnRate = (entry) => {
|
|
|
40890
40835
|
return {
|
|
40891
40836
|
totalAssets: totalSupply * r / CORE_RATE_DENOM,
|
|
40892
40837
|
totalSupply,
|
|
40893
|
-
exchangeRate: r *
|
|
40838
|
+
exchangeRate: r * ONE_E186 / CORE_RATE_DENOM
|
|
40894
40839
|
};
|
|
40895
40840
|
}
|
|
40896
40841
|
};
|
|
@@ -40912,7 +40857,7 @@ var readerCoreStakedRatio = (entry) => {
|
|
|
40912
40857
|
return {
|
|
40913
40858
|
totalAssets: totalStaked,
|
|
40914
40859
|
totalSupply,
|
|
40915
|
-
exchangeRate: totalStaked *
|
|
40860
|
+
exchangeRate: totalStaked * ONE_E186 / totalSupply
|
|
40916
40861
|
};
|
|
40917
40862
|
}
|
|
40918
40863
|
};
|
|
@@ -40943,7 +40888,7 @@ var readerStellaStDot = (entry) => ({
|
|
|
40943
40888
|
{
|
|
40944
40889
|
address: entry.address,
|
|
40945
40890
|
name: "getPooledTokenByShares",
|
|
40946
|
-
params: [
|
|
40891
|
+
params: [ONE_E186]
|
|
40947
40892
|
},
|
|
40948
40893
|
{ address: entry.address, name: "getTotalPooledToken", params: [] }
|
|
40949
40894
|
],
|
|
@@ -40954,7 +40899,7 @@ var readerStellaStDot = (entry) => ({
|
|
|
40954
40899
|
if (totalSupply === void 0 || exchangeRate === void 0) {
|
|
40955
40900
|
return void 0;
|
|
40956
40901
|
}
|
|
40957
|
-
const totalAssets = toBigInt10(pooled) ?? totalSupply * exchangeRate /
|
|
40902
|
+
const totalAssets = toBigInt10(pooled) ?? totalSupply * exchangeRate / ONE_E186;
|
|
40958
40903
|
return {
|
|
40959
40904
|
totalAssets,
|
|
40960
40905
|
totalSupply,
|
|
@@ -41255,6 +41200,25 @@ var resolveStCeloDepositGroup = async (user, requestedGroup, maxRpcTries = 4) =>
|
|
|
41255
41200
|
};
|
|
41256
41201
|
|
|
41257
41202
|
// src/vaults/lst/validators.ts
|
|
41203
|
+
var SOLV_POOLS = {
|
|
41204
|
+
"1": {
|
|
41205
|
+
// SolvBTC — subscribable with WBTC (canonical) or cbBTC; same SolvBTC SFT.
|
|
41206
|
+
"0x7a56e1c57c7475ccf742a1832b028f0456652f97": [
|
|
41207
|
+
{
|
|
41208
|
+
poolId: "0x716db7dc196abe78d5349c7166896f674ab978af26ada3e5b3ea74c5a1b48307",
|
|
41209
|
+
currency: "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599",
|
|
41210
|
+
// WBTC
|
|
41211
|
+
name: "WBTC"
|
|
41212
|
+
},
|
|
41213
|
+
{
|
|
41214
|
+
poolId: "0xdc0937dd33c4af08a08724da23bc45b33b43fbb23f365e7b50a536ce45f447ef",
|
|
41215
|
+
currency: "0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf",
|
|
41216
|
+
// cbBTC
|
|
41217
|
+
name: "cbBTC"
|
|
41218
|
+
}
|
|
41219
|
+
]
|
|
41220
|
+
}
|
|
41221
|
+
};
|
|
41258
41222
|
var LST_DELEGATION = {
|
|
41259
41223
|
// Core DAO — stCORE `Earn.mint(validator)`: the validator is mandatory.
|
|
41260
41224
|
"1116": {
|
|
@@ -41278,15 +41242,17 @@ var LST_DELEGATION = {
|
|
|
41278
41242
|
source: "endpoint"
|
|
41279
41243
|
}
|
|
41280
41244
|
},
|
|
41281
|
-
// Solv (Ethereum)
|
|
41282
|
-
//
|
|
41245
|
+
// Solv (Ethereum). SolvBTC's pools are curated + verified (`SOLV_POOLS`), so
|
|
41246
|
+
// it surfaces a list and auto-fills the canonical (WBTC) poolId. xSolvBTC /
|
|
41247
|
+
// BTC+ still need their poolIds catalogued → off-chain until then.
|
|
41283
41248
|
"1": {
|
|
41284
41249
|
"0x7a56e1c57c7475ccf742a1832b028f0456652f97": {
|
|
41285
|
-
required:
|
|
41250
|
+
required: false,
|
|
41251
|
+
// canonical WBTC poolId is auto-filled
|
|
41286
41252
|
kind: "pool",
|
|
41287
41253
|
optionKey: "poolId",
|
|
41288
|
-
default:
|
|
41289
|
-
source: "
|
|
41254
|
+
default: "0x716db7dc196abe78d5349c7166896f674ab978af26ada3e5b3ea74c5a1b48307",
|
|
41255
|
+
source: "endpoint"
|
|
41290
41256
|
},
|
|
41291
41257
|
"0xd9d920aa40f578ab794426f5c90f6c731d159def": {
|
|
41292
41258
|
required: true,
|
|
@@ -41309,6 +41275,17 @@ var getLstValidators = async (chainId, shareToken) => {
|
|
|
41309
41275
|
const d = getLstDelegation(chainId, shareToken);
|
|
41310
41276
|
if (!d || d.source !== "endpoint") return [];
|
|
41311
41277
|
try {
|
|
41278
|
+
if (d.kind === "pool") {
|
|
41279
|
+
const pools = SOLV_POOLS[chainId]?.[shareToken.toLowerCase()] ?? [];
|
|
41280
|
+
return pools.map((p, i) => ({
|
|
41281
|
+
id: p.poolId,
|
|
41282
|
+
status: "active",
|
|
41283
|
+
selectable: true,
|
|
41284
|
+
recommended: i === 0,
|
|
41285
|
+
name: p.name,
|
|
41286
|
+
currency: p.currency
|
|
41287
|
+
}));
|
|
41288
|
+
}
|
|
41312
41289
|
if (d.kind === "validatorGroup" && chainId === "42220") {
|
|
41313
41290
|
const groups = await getStCeloValidatorGroups();
|
|
41314
41291
|
return groups.map((g, i) => ({
|
|
@@ -41335,7 +41312,7 @@ var getLstValidators = async (chainId, shareToken) => {
|
|
|
41335
41312
|
};
|
|
41336
41313
|
|
|
41337
41314
|
// src/vaults/lst/fetchPublic.ts
|
|
41338
|
-
var
|
|
41315
|
+
var ONE_E187 = 10n ** 18n;
|
|
41339
41316
|
var ERC20_BALANCE_ABI = parseAbi([
|
|
41340
41317
|
"function balanceOf(address) view returns (uint256)"
|
|
41341
41318
|
]);
|
|
@@ -41450,8 +41427,8 @@ var fetchLstShareTokens = async (chainId, multicallRetry, prices = {}, tokenList
|
|
|
41450
41427
|
const underlyingUnit = 10n ** BigInt(underlyingDec);
|
|
41451
41428
|
const totalAssetsFormatted = Number(state.totalAssets) / 10 ** underlyingDec;
|
|
41452
41429
|
const totalAssetsUsd = priceUsd !== void 0 ? totalAssetsFormatted * priceUsd : 0;
|
|
41453
|
-
const convertToAssets = state.exchangeRate * underlyingUnit /
|
|
41454
|
-
const convertToShares = state.exchangeRate > 0n ?
|
|
41430
|
+
const convertToAssets = state.exchangeRate * underlyingUnit / ONE_E187;
|
|
41431
|
+
const convertToShares = state.exchangeRate > 0n ? ONE_E187 * shareUnit / state.exchangeRate : 0n;
|
|
41455
41432
|
let liquidityRaw;
|
|
41456
41433
|
if (state.liquidity !== void 0) {
|
|
41457
41434
|
liquidityRaw = state.liquidity;
|
|
@@ -44484,7 +44461,7 @@ var Erc4626ReadAbi2 = [
|
|
|
44484
44461
|
];
|
|
44485
44462
|
|
|
44486
44463
|
// src/vaults/savings/readers/shared.ts
|
|
44487
|
-
var
|
|
44464
|
+
var ONE_E188 = 10n ** 18n;
|
|
44488
44465
|
var toBigInt12 = (v) => {
|
|
44489
44466
|
if (v === void 0 || v === null) return void 0;
|
|
44490
44467
|
if (typeof v === "bigint") return v;
|
|
@@ -44525,7 +44502,7 @@ var readerErc46262 = (entry) => {
|
|
|
44525
44502
|
return {
|
|
44526
44503
|
totalAssets,
|
|
44527
44504
|
totalSupply,
|
|
44528
|
-
exchangeRate: convertToAssetsRaw *
|
|
44505
|
+
exchangeRate: convertToAssetsRaw * ONE_E188 / underlyingUnit
|
|
44529
44506
|
};
|
|
44530
44507
|
}
|
|
44531
44508
|
};
|
|
@@ -44867,7 +44844,7 @@ var resolveYieldApr2 = async (entries) => {
|
|
|
44867
44844
|
};
|
|
44868
44845
|
|
|
44869
44846
|
// src/vaults/savings/fetchPublic.ts
|
|
44870
|
-
var
|
|
44847
|
+
var ONE_E189 = 10n ** 18n;
|
|
44871
44848
|
var fetchSavingsVaults = async (chainId, multicallRetry, prices = {}, tokenList = {}) => {
|
|
44872
44849
|
const entries = getSavingsRegistry(chainId);
|
|
44873
44850
|
if (entries.length === 0) return {};
|
|
@@ -44908,8 +44885,8 @@ var fetchSavingsVaults = async (chainId, multicallRetry, prices = {}, tokenList
|
|
|
44908
44885
|
const liquidityRaw = isInstant ? state.totalAssets.toString() : "0";
|
|
44909
44886
|
const liquidityFormatted = isInstant ? totalAssetsFormatted : 0;
|
|
44910
44887
|
const liquidityUsd = isInstant ? totalAssetsUsd : 0;
|
|
44911
|
-
const convertToAssets = state.exchangeRate * underlyingUnit /
|
|
44912
|
-
const convertToShares = state.exchangeRate > 0n ?
|
|
44888
|
+
const convertToAssets = state.exchangeRate * underlyingUnit / ONE_E189;
|
|
44889
|
+
const convertToShares = state.exchangeRate > 0n ? ONE_E189 * shareUnit / state.exchangeRate : 0n;
|
|
44913
44890
|
const displayName = composeVaultDisplayName(
|
|
44914
44891
|
entry.brand,
|
|
44915
44892
|
entry.brand,
|
|
@@ -46875,7 +46852,7 @@ var readVaultSharePrices = async (chainId, addresses, multicallRetry) => {
|
|
|
46875
46852
|
};
|
|
46876
46853
|
|
|
46877
46854
|
// src/vaults/yield/annualize.ts
|
|
46878
|
-
var
|
|
46855
|
+
var YEAR_SECONDS9 = 365 * 24 * 60 * 60;
|
|
46879
46856
|
var SCALE = 10n ** 18n;
|
|
46880
46857
|
var appendSnapshot = (points, snap, options) => {
|
|
46881
46858
|
const maxPoints = options?.maxPoints ?? 90;
|
|
@@ -46904,7 +46881,7 @@ var computeVaultApr = (points, options) => {
|
|
|
46904
46881
|
if (pThen === 0n) return void 0;
|
|
46905
46882
|
const ratioScaled = BigInt(now.p) * SCALE / pThen;
|
|
46906
46883
|
const ratio = Number(ratioScaled) / 1e18;
|
|
46907
|
-
const apr = (ratio - 1) * (
|
|
46884
|
+
const apr = (ratio - 1) * (YEAR_SECONDS9 / windowSeconds);
|
|
46908
46885
|
return {
|
|
46909
46886
|
apr,
|
|
46910
46887
|
sharePriceNow: now.p,
|