@@ -8,6 +8,9 @@ const CONTRACTS = {
8
8
MORPHO_BLUE : "0xBBBBBbbBBb9cC5e90e3b3Af64bdAF62C37EEFFCb" ,
9
9
ZIRCUIT_RESTAKING_POOL : "0xF047ab4c75cebf0eB9ed34Ae2c186f3611aEAfa6" ,
10
10
FLUID_POSITION_RESOLVER : "0x3E3dae4F30347782089d398D462546eb5276801C" ,
11
+ FLUID_VAULT_RESOLVER : "0x77648C2FEda8D5f9f21A9FE91db0d102E49d3031" ,
12
+ FLUID_DEX_RESOLVER : "0x71783F64719899319B56BdA4F27E1219d9AF9a3d" ,
13
+ FLUID_DEX_RESERVES_RESOLVER : "0xC93876C0EEd99645DD53937b25433e311881A27C" ,
11
14
// HyperEVM contracts
12
15
HYPEREVM_RUMPEL_WALLET_FACTORY : "0xbC89e0B2716079b46A971ce50C208730F73503De" ,
13
16
HYPEREVM_POINT_TOKEN_VAULT : "0xEa333eb11FC6ea62F6f4c2d73Cd9F2d994Ff3587" ,
@@ -27,6 +30,7 @@ const DEPLOYMENT = {
27
30
const TOKENS = {
28
31
AGETH : "0xe1B4d34E8754600962Cd944B535180Bd758E6c2e" ,
29
32
SUSDE : ADDRESSES . ethereum . sUSDe ,
33
+ USDT : ADDRESSES . ethereum . USDT ,
30
34
USDE : ADDRESSES . ethereum . USDe ,
31
35
WSTETH : ADDRESSES . ethereum . WSTETH ,
32
36
WBTC : ADDRESSES . ethereum . WBTC ,
@@ -76,6 +80,18 @@ const TOKENS = {
76
80
YT_SUSDE_29MAY2025 : "0x1de6Ff19FDA7496DdC12f2161f6ad6427c52aBBe" ,
77
81
YT_USDE_27MAR2025 : "0x4A8036EFA1307F1cA82d932C0895faa18dB0c9eE" ,
78
82
YT_SUSDE_31JUL2025 : "0xb7E51D15161C49C823f3951D579DEd61cD27272B" ,
83
+ YT_EUSDE_28MAY2025 : "0x708dD9B344dDc7842f44C7b90492CF0e1E3eb868" ,
84
+ YT_EUSDE_13AUG2025 : "0xe8eF806c8aaDc541408dcAd36107c7d26a391712" ,
85
+ YT_USDE_30JUL2025 : "0x733Ee9Ba88f16023146EbC965b7A1Da18a322464" ,
86
+ YT_LVLUSD_24SEP2025 : "0x946934554a2Bf59039661f971986F0223E906264" ,
87
+ YT_USR_28MAY2025 : "0x77DE4Be22Ecc633416D79371eF8e861Fb1d2cC39" ,
88
+ YT_WSTUSR_24SEP2025 : "0x1E24B022329f3CA0083b12FAF75d19639FAebF6f" ,
89
+ YT_WEETHS_25JUNE2025 : "0xaaC7DB6C2bC926aDE954D69A2d705f059043EA02" ,
90
+ YT_EETH_25JUNE2025 : "0x08AEfe9dFe7818CaaedD94E38e910d2155b7d2b0" ,
91
+ YT_WEETHK_25JUNE2025 : "0x03722CE19e9F5828969D39474a8EfC35c4eA3987" ,
92
+ YT_AGETH_25JUNE2025 : "0x0310A860CF7Efe8F54Ab9B4dE49Cd071C37fCBCB" ,
93
+ YT_USDE_24SEP2025 : "0x48bbbEdc4d2491cc08915D7a5c7cc8A8EdF165da" ,
94
+ YT_SUSDE_24SEP2025 : "0x029d6247ADb0A57138c62E3019C92d3dfC9c1840" ,
79
95
MELLOW_DVSTETH : "0x5E362eb2c0706Bd1d134689eC75176018385430B" ,
80
96
MELLOW_RENZO_PZETH : "0x8c9532a60E0E7C6BbD2B2c1303F63aCE1c3E9811" ,
81
97
MELLOW_RSENA : "0xc65433845ecD16688eda196497FA9130d6C47Bd8" ,
@@ -123,23 +139,27 @@ const TOKENS = {
123
139
HYPEREVM_GTUSDT0 : "0x53A333e51E96FE288bC9aDd7cdC4B1EAD2CD2FfA" ,
124
140
HYPEREVM_MCHYPE : "0xd19e3d00f8547f7d108abFD4bbb015486437B487" ,
125
141
HYPEREVM_GTUETH : "0x0571362ba5ea9784a97605f57483f865a37dbeaa" ,
142
+ HYPEREVM_BEHYPE : "0x441794D6a8F9A3739F5D4E98a728937b33489D29" ,
143
+ HYPEREVM_HYPERBEAT_LST : "0x81e064d0eB539de7c3170EDF38C1A42CBd752A76" ,
126
144
HYPEREVM_SENTIMENT_HYPE_SUPER_POOL : "0x2831775cb5e64b1d892853893858a261e898fbeb" ,
127
145
HYPEREVM_USDT0_FELIX_METAMORPHO_VAULT : "0xFc5126377F0efc0041C0969Ef9BA903Ce67d151e" ,
128
146
HYPEREVM_USDHL_FELIX_METAMORPHO_VAULT : "0x9c59a9389D8f72DE2CdAf1126F36EA4790E2275e" ,
129
147
} ;
130
148
149
+ // Note: Some vaults are "smart vaults" where the collateral is DEX LP tokens
150
+ // For these vaults, the positions hold LP shares that need to be unwrapped to get actual token values
131
151
const FLUID_VAULTS = [
132
152
{ VAULT : "0xeAEf563015634a9d0EE6CF1357A3b205C35e028D" , TOKEN : TOKENS . WEETH } ,
133
153
{ VAULT : "0x1c6068eC051f0Ac1688cA1FE76810FA9c8644278" , TOKEN : TOKENS . WEETHS } ,
134
154
{ VAULT : "0x3996464c0fCCa8183e13ea5E5e74375e2c8744Dd" , TOKEN : TOKENS . SUSDE } ,
135
155
{ VAULT : "0xBc345229C1b52e4c30530C614BB487323BA38Da5" , TOKEN : TOKENS . SUSDE } ,
136
156
{ VAULT : "0xe210d8ded13Abe836a10E8Aa956dd424658d0034" , TOKEN : TOKENS . SUSDE } ,
137
157
{ VAULT : "0x2F3780e21cAba1bEdFB24E37C97917def304dFFA" , TOKEN : TOKENS . SUSDE } ,
138
- { VAULT : "0x7503b58Bb29937e7E2980f70D3FD021B7ebeA6d0" , TOKEN : TOKENS . SUSDE } ,
158
+ { VAULT : "0x7503b58Bb29937e7E2980f70D3FD021B7ebeA6d0" , TOKEN : TOKENS . SUSDE , IS_SMART : true , LP_TOKEN : "0x1DD125C32e4B5086c63CC13B3cA02C4A2a61Fa9b" , TOKEN0 : TOKENS . SUSDE , TOKEN1 : TOKENS . USDT } ,
139
159
{ VAULT : "0x989a44CB4dBb7eBe20e0aBf3C1E1d727BF90F881" , TOKEN : TOKENS . USDE } ,
140
160
{ VAULT : "0x43d1cA906c72f09D96291B4913D7255E241F428d" , TOKEN : TOKENS . WBTC } ,
141
- { VAULT : "0xB170B94BeFe21098966aa9905Da6a2F569463A21" , TOKEN : TOKENS . SUSDE } ,
142
- { VAULT : "0xaEac94D417BF8d8bb3A44507100Ab8c0D3b12cA1" , TOKEN : TOKENS . USDE } ,
161
+ { VAULT : "0xB170B94BeFe21098966aa9905Da6a2F569463A21" , TOKEN : TOKENS . SUSDE , IS_SMART : true , LP_TOKEN : "0x1DD125C32e4B5086c63CC13B3cA02C4A2a61Fa9b" , TOKEN0 : TOKENS . SUSDE , TOKEN1 : TOKENS . USDT } ,
162
+ { VAULT : "0xaEac94D417BF8d8bb3A44507100Ab8c0D3b12cA1" , TOKEN : TOKENS . USDE , IS_SMART : true , LP_TOKEN : "0xf063BD202E45d6b2843102cb4EcE339026645D4a" , TOKEN0 : TOKENS . USDE , TOKEN1 : TOKENS . USDT } ,
143
163
{ VAULT : "0x0a90ED6964f6bA56902fD35EE11857A810Dd5543" , TOKEN : TOKENS . SUSDE } ,
144
164
{ VAULT : "0x91D5884a57E4A3718654B462B32cC628b2c6A39A" , TOKEN : TOKENS . SUSDE } ,
145
165
{ VAULT : "0x4B5fa15996C2E23b35E64f0ca62d30c4945E53Cb" , TOKEN : TOKENS . USDE } ,
@@ -208,8 +228,45 @@ async function tvl(api) {
208
228
} ) ;
209
229
210
230
for ( let i = 0 ; i < positions . length ; i ++ ) {
211
- const rumpelPositions = positions [ i ] . filter ( i => owners . includes ( i . owner ) ) ;
212
- api . add ( FLUID_VAULTS [ i ] . TOKEN , rumpelPositions . map ( i => i . supply ) )
231
+ const vaultPositions = positions [ i ] ;
232
+ const rumpelPositions = vaultPositions . filter ( p => owners . includes ( p . owner ) ) ;
233
+
234
+ if ( rumpelPositions . length === 0 ) continue ;
235
+
236
+ const vault = FLUID_VAULTS [ i ] ;
237
+
238
+ if ( vault . IS_SMART ) {
239
+ try {
240
+ const [ totalSupplySharesRaw , reserves ] = await Promise . all ( [
241
+ api . call ( {
242
+ target : CONTRACTS . FLUID_DEX_RESOLVER ,
243
+ abi : 'function getTotalSupplySharesRaw(address dex_) view returns (uint)' ,
244
+ params : [ vault . LP_TOKEN ]
245
+ } ) ,
246
+ api . call ( {
247
+ target : CONTRACTS . FLUID_DEX_RESERVES_RESOLVER ,
248
+ abi : 'function getDexCollateralReserves(address) view returns (uint256,uint256,uint256,uint256)' ,
249
+ params : [ vault . LP_TOKEN ]
250
+ } )
251
+ ] ) ;
252
+
253
+ const totalSupplyShares = BigInt ( totalSupplySharesRaw ) & BigInt ( '0xffffffffffffffffffffffffffffffff' ) ;
254
+ const [ token0Reserves , token1Reserves ] = reserves ;
255
+
256
+ const totalPositionShares = rumpelPositions . reduce ( ( sum , p ) => sum + BigInt ( p . supply ) , 0n ) ;
257
+ const ratio = Number ( totalPositionShares ) / Number ( totalSupplyShares ) ;
258
+
259
+ const token0Amount = Number ( token0Reserves ) * ratio ;
260
+ const token1Amount = Number ( token1Reserves ) * ratio ;
261
+
262
+ if ( token0Amount > 0 ) api . add ( vault . TOKEN0 , token0Amount . toFixed ( 0 ) ) ;
263
+ if ( token1Amount > 0 ) api . add ( vault . TOKEN1 , token1Amount . toFixed ( 0 ) ) ;
264
+ } catch ( error ) {
265
+ // If smart vault processing fails, skip without fallback
266
+ }
267
+ } else {
268
+ api . add ( vault . TOKEN , rumpelPositions . map ( p => p . supply ) ) ;
269
+ }
213
270
}
214
271
}
215
272
@@ -254,6 +311,18 @@ async function tvl(api) {
254
311
TOKENS . YT_SUSDE_29MAY2025 ,
255
312
TOKENS . YT_USDE_27MAR2025 ,
256
313
TOKENS . YT_SUSDE_31JUL2025 ,
314
+ TOKENS . YT_EUSDE_28MAY2025 ,
315
+ TOKENS . YT_EUSDE_13AUG2025 ,
316
+ TOKENS . YT_USDE_30JUL2025 ,
317
+ TOKENS . YT_LVLUSD_24SEP2025 ,
318
+ TOKENS . YT_USR_28MAY2025 ,
319
+ TOKENS . YT_WSTUSR_24SEP2025 ,
320
+ TOKENS . YT_WEETHS_25JUNE2025 ,
321
+ TOKENS . YT_EETH_25JUNE2025 ,
322
+ TOKENS . YT_WEETHK_25JUNE2025 ,
323
+ TOKENS . YT_AGETH_25JUNE2025 ,
324
+ TOKENS . YT_USDE_24SEP2025 ,
325
+ TOKENS . YT_SUSDE_24SEP2025 ,
257
326
TOKENS . MELLOW_DVSTETH ,
258
327
TOKENS . MELLOW_RENZO_PZETH ,
259
328
TOKENS . MELLOW_RSENA ,
@@ -349,6 +418,8 @@ async function tvl(api) {
349
418
{ vault : TOKENS . HYPEREVM_GTUSDT0 , underlying : TOKENS . HYPEREVM_USDT0 } ,
350
419
{ vault : TOKENS . HYPEREVM_MCHYPE , underlying : TOKENS . HYPEREVM_WHYPE } ,
351
420
{ vault : TOKENS . HYPEREVM_GTUETH , underlying : TOKENS . HYPEREVM_UETH } ,
421
+ { vault : TOKENS . HYPEREVM_BEHYPE , underlying : TOKENS . HYPEREVM_WHYPE } ,
422
+ { vault : TOKENS . HYPEREVM_HYPERBEAT_LST , underlying : TOKENS . HYPEREVM_WHYPE } ,
352
423
{ vault : TOKENS . HYPEREVM_SENTIMENT_HYPE_SUPER_POOL , underlying : TOKENS . HYPEREVM_WHYPE } ,
353
424
{ vault : TOKENS . HYPEREVM_USDT0_FELIX_METAMORPHO_VAULT , underlying : TOKENS . HYPEREVM_USDT0 } ,
354
425
{ vault : TOKENS . HYPEREVM_USDHL_FELIX_METAMORPHO_VAULT , underlying : TOKENS . HYPEREVM_USDHL } ,
@@ -472,4 +543,4 @@ module.exports = {
472
543
hyperliquid : {
473
544
tvl,
474
545
} ,
475
- } ;
546
+ } ;
0 commit comments