1- const { sumERC4626VaultsExport } = require ( '../helper/erc4626' )
1+ const abi = require ( './vaultsv2.json' )
2+ const { sui } = require ( "../helper/chain/rpcProxy" ) ;
3+ const axios = require ( "axios" ) ;
4+
5+ const suiVaultsEndpoint = "https://vaults.api.sui-prod.bluefin.io/api/v1/vaults/info" ;
6+ const PACKAGE_ID =
7+ "0xc83d5406fd355f34d3ce87b35ab2c0b099af9d309ba96c17e40309502a49976f" ;
8+
29const config = {
3- ethereum : [ "0xB7858b66dFA38b9Cb74d00421316116A7851c273" , "0x80E1048eDE66ec4c364b4F22C8768fc657FF6A42" , "0x18a5a3D575F34e5eBa92ac99B0976dBe26f9F869" , "0xEBac5e50003d4B17Be422ff9775043cD61002f7f" , "0xd684AF965b1c17D628ee0d77cae94259c41260F4" , "0x5Fde59415625401278c4d41C6beFCe3790eb357f" , "0xe1B4d34E8754600962Cd944B535180Bd758E6c2e" , "0xc824A08dB624942c5E5F330d56530cD1598859fD" , "0xeb402fc96C7ed2f889d837C9976D6d821c1B5f01" , "0x419386E3Ef42368e602720CC458e00c0B28c47A7" , "0xB78dAf3fD674B81ebeaaa88d711506fa069E1C5E" , "0x7383c2454D23A1e34B35ba02674be0a41Bd5aa56" , "0xc428439fB7B1EFE56360Eb837Ca98F551fdD9B26" , "0x686c83Aa81ba206354fDcbc2cd282B4531365E29" , "0x396A3f77EE1faf5A3C46e878bA7b7a2dcbe55517" , "0xE9B725010A9E419412ed67d0fA5f3A5f40159D32" , "0x828BC5895b78b2fb591018Ca5bDC2064742D6D0f" , "0x8AcA0841993ef4C87244d519166e767f49362C21" ] ,
10+ ethereum : [ "0x69FC3f84FD837217377d9Dae0212068cEB65818e" , "0xdA89af5bF2eb0B225d787aBfA9095610f2E79e7D" , "0xEAA3b922E9fEbCa37d1c02D2142A59595094C605" , "0xf7b65fBA4d02110089fC6e2bE6d73809b45852f8" , "0x6625bA54DC861e9f5c678983dBa5BA96d19a9224" , "0x787f5541Ee40cD0c94175251686DDBbcf69A7344" , "0xD066649Bcb7d8D3335fE29CaD0AED6E17D5828B5" , "0x02991EE6134dEE504668e2227C5879Dd78EfCDc3" , "0x998D7b14c123c1982404562b68edDB057b0477cB" , "0x0985C88929A776a2E059615137a48bA5A473E25D" , "0xB7858b66dFA38b9Cb74d00421316116A7851c273" , "0x80E1048eDE66ec4c364b4F22C8768fc657FF6A42" , "0x18a5a3D575F34e5eBa92ac99B0976dBe26f9F869" , "0xEBac5e50003d4B17Be422ff9775043cD61002f7f" , "0xd684AF965b1c17D628ee0d77cae94259c41260F4" , "0x5Fde59415625401278c4d41C6beFCe3790eb357f" , "0xe1B4d34E8754600962Cd944B535180Bd758E6c2e" , "0xc824A08dB624942c5E5F330d56530cD1598859fD" , "0xeb402fc96C7ed2f889d837C9976D6d821c1B5f01" , "0x419386E3Ef42368e602720CC458e00c0B28c47A7" , "0xB78dAf3fD674B81ebeaaa88d711506fa069E1C5E" , "0x7383c2454D23A1e34B35ba02674be0a41Bd5aa56" , "0xc428439fB7B1EFE56360Eb837Ca98F551fdD9B26" , "0x686c83Aa81ba206354fDcbc2cd282B4531365E29" , "0x396A3f77EE1faf5A3C46e878bA7b7a2dcbe55517" , "0xE9B725010A9E419412ed67d0fA5f3A5f40159D32" , "0x828BC5895b78b2fb591018Ca5bDC2064742D6D0f" , "0x8AcA0841993ef4C87244d519166e767f49362C21" , "0x866C6c6627303Be103814150fC0e886BE5D9ea83" ] ,
411 avax : [ "0x3408b22d8895753C9A3e14e4222E981d4E9A599E" , "0xB2bFb52cfc40584AC4e9e2B36a5B8d6554A56e0b" ] ,
512 base : [ "0x4e2D90f0307A93b54ACA31dc606F93FE6b9132d2" ] ,
6- hyperliquid : [ "0x96C6cBB6251Ee1c257b2162ca0f39AA5Fa44B1FB" ] ,
13+ hyperliquid : [ "0x96C6cBB6251Ee1c257b2162ca0f39AA5Fa44B1FB" , "0xc061d38903b99aC12713B550C2CB44B221674F94" ] ,
714 bsc : [ "0xD0b717ef23817b1a127139830Cf0FcD449ef74F0" ] ,
15+ mezo : [ "0x221B2D9aD7B994861Af3f4c8A80c86C4aa86Bf53" ]
16+ }
17+
18+ const v2Vaults = {
19+ ethereum : [ "0xAEEb2fB279a5aA837367B9D2582F898a63b06ca1" , "0xA38d92eC538e9aa3edb980b89701A9d38a1FE015" , "0x63C5d615e937697a80606788965E209414738820" , "0x18EE038C114a07f4B08b420fb1E4149a4F357249" , "0x3cC0D33B1AEac3d23eA89214b3AC5B4607032167" , "0x0C949AAf28bF0318bAa5f2cbF2F2D970f57879aB" , "0xd411aCaE2Bc7019322277A21ff005d94705661C5" ] ,
20+ hyperliquid : [ "0x8fFDcd8A96d293f45aA044d10b899F9D71897E8a" ] ,
21+ plasma : [ "0x517677A19D8ae6FF600FB86C3C7bFCCD651e3eec" ] ,
22+ }
23+
24+
25+
26+ // Custom function to handle v2 vaults with getTotalAssets
27+ async function sumV2Vaults ( api , vaults ) {
28+ const assets = await api . multiCall ( { abi : abi [ 1 ] , calls : vaults } )
29+ const totalAssets = await api . multiCall ( { abi : abi [ 0 ] , calls : vaults } )
30+
31+ api . addTokens ( assets , totalAssets )
32+ }
33+
34+ // Merge all chains from both configs
35+ const allChains = new Set ( [ ...Object . keys ( config ) , ...Object . keys ( v2Vaults ) ] )
36+
37+ const suiVaultsTvl = async ( ) => {
38+ const vaults = (
39+ await axios . get ( suiVaultsEndpoint )
40+ ) . data . Vaults ;
41+ for ( const vault of Object . values ( vaults ) ) {
42+ const vaultTvl = await sui . query ( {
43+ target : `${ PACKAGE_ID } ::vault::get_vault_tvl` ,
44+ contractId : vault . ObjectId ,
45+ typeArguments : [ vault . DepositCoinType , vault . ReceiptCoinType ] ,
46+ sender :
47+ "0xbaef681eafe323b507b76bdaf397731c26f46a311e5f3520ebb1bde091fff295" ,
48+ } ) ;
49+ api . add ( vault . DepositCoinType , vaultTvl [ 0 ] ) ;
50+ }
851}
952
1053module . exports = {
1154 doublecounted : true ,
1255 methodology : "TVL is the sum of tokens deposited in erc4626 vaults" ,
1356}
1457
15- Object . keys ( config ) . forEach ( chain => {
58+ allChains . forEach ( chain => {
1659 module . exports [ chain ] = {
17- tvl : sumERC4626VaultsExport ( { vaults : config [ chain ] , isOG4626 : true } )
60+ tvl : async ( api ) => {
61+ // Handle ERC4626 vaults if they exist for this chain
62+ if ( config [ chain ] ) {
63+ await api . erc4626Sum ( { calls : config [ chain ] , isOG4626 : true } )
64+ }
65+
66+ // Handle v2 vaults if they exist for this chain
67+ if ( v2Vaults [ chain ] ) {
68+ await sumV2Vaults ( api , v2Vaults [ chain ] )
69+ }
70+
71+ return api . getBalances ( )
72+ }
1873 }
19- } )
74+ } )
75+
76+
77+
78+ module . exports . sui = {
79+ tvl : suiVaultsTvl ,
80+ }
0 commit comments