1
- const ADDRESSES = require ( ' ../helper/coreAssets.json' ) ;
1
+ const ADDRESSES = require ( " ../helper/coreAssets.json" ) ;
2
2
3
3
const WEETH_ADDRESS = {
4
4
ethereum : ADDRESSES . ethereum . WEETH ,
@@ -22,21 +22,82 @@ const CAP_ADDRESS = {
22
22
scroll : "0xcd32876b9B483eb75e8ca74935E4b51725F33A91" ,
23
23
} ;
24
24
25
+ const THEO_VAULT_ADDRESS = [
26
+ {
27
+ chainId : 1 ,
28
+ address : "0x0b75e167f8a37179b7044414ee43e94cabeaa2fa" ,
29
+ } ,
30
+ {
31
+ chainId : 42161 ,
32
+ address : "0x54602e5cba09e01eee9b2050f1f4f0dc902cee34" ,
33
+ } ,
34
+ {
35
+ chainId : 59144 ,
36
+ address : "0xcf101e13b5181f79094b0726b03e89d1cb95b28c" ,
37
+ } ,
38
+ ] ;
39
+
40
+ const THEO_UNDERLYING_ASSETS = {
41
+ "0x0b75e167f8a37179b7044414ee43e94cabeaa2fa" : WEETH_ADDRESS . ethereum ,
42
+ "0x54602e5cba09e01eee9b2050f1f4f0dc902cee34" : WEETH_ADDRESS . arbitrum ,
43
+ "0xcf101e13b5181f79094b0726b03e89d1cb95b28c" : WEETH_ADDRESS . linea ,
44
+ } ;
25
45
26
46
const chainTVL = ( { vaults = [ ] } ) => async ( api ) => {
27
- const caps = [ ]
47
+ const caps = [ ] ;
28
48
if ( CAP_ADDRESS [ api . chain ] && WEETH_ADDRESS [ api . chain ] ) {
29
- caps . push ( { cap : CAP_ADDRESS [ api . chain ] , asset : WEETH_ADDRESS [ api . chain ] } )
49
+ caps . push ( { cap : CAP_ADDRESS [ api . chain ] , asset : WEETH_ADDRESS [ api . chain ] } ) ;
50
+ }
51
+ const capContracts = caps . map ( ( i ) => i . cap ) ;
52
+ const capTokens = caps . map ( ( i ) => i . asset ) ;
53
+ const capTokenBals = await api . multiCall ( {
54
+ abi : "uint256:load" ,
55
+ calls : capContracts ,
56
+ } ) ;
57
+ api . add ( capTokens , capTokenBals ) ;
58
+
59
+ const theoVaults = THEO_VAULT_ADDRESS . filter (
60
+ ( vault ) => vault . chainId === api . chainId
61
+ ) . map ( ( vault ) => vault . address . toLowerCase ( ) ) ;
62
+
63
+ const regularVaults = vaults . filter (
64
+ ( vault ) => ! theoVaults . includes ( vault . toLowerCase ( ) )
65
+ ) ;
66
+
67
+ const vaultInfos = await api . multiCall ( {
68
+ abi : "function vaultParams() view returns (uint8 decimals, address asset, uint56 minimumSupply, uint104 cap)" ,
69
+ calls : regularVaults ,
70
+ permitFailure : true ,
71
+ } ) ;
72
+ const vaultInfos2 = await api . multiCall ( {
73
+ abi : "address:asset" ,
74
+ calls : regularVaults ,
75
+ permitFailure : true ,
76
+ } ) ;
77
+ const vaultTokens = vaultInfos . map ( ( v , i ) => v ?. asset ?? vaultInfos2 [ i ] ) ;
78
+
79
+ const balances = await api . sumTokens ( {
80
+ tokensAndOwners2 : [ vaultTokens , regularVaults ] ,
81
+ } ) ;
82
+
83
+ if ( theoVaults . length > 0 ) {
84
+ const theoTotalSupplies = await api . multiCall ( {
85
+ abi : "uint256:totalSupply" ,
86
+ calls : theoVaults ,
87
+ } ) ;
88
+
89
+ theoVaults . forEach ( ( theoVault , i ) => {
90
+ const underlyingAsset = THEO_UNDERLYING_ASSETS [ theoVault ] ;
91
+ if ( underlyingAsset ) {
92
+ api . add ( underlyingAsset , theoTotalSupplies [ i ] ) ;
93
+ } else {
94
+ api . add ( theoVault , theoTotalSupplies [ i ] ) ;
95
+ }
96
+ } ) ;
30
97
}
31
- const capContracts = caps . map ( i => i . cap ) ;
32
- const capTokens = caps . map ( i => i . asset )
33
- const capTokenBals = await api . multiCall ( { abi : 'uint256:load' , calls : capContracts } )
34
- api . add ( capTokens , capTokenBals )
35
- const vaultInfos = await api . multiCall ( { abi : "function vaultParams() view returns (uint8 decimals, address asset, uint56 minimumSupply, uint104 cap)" , calls : vaults , permitFailure : true } )
36
- const vaultInfos2 = await api . multiCall ( { abi : "address:asset" , calls : vaults , permitFailure : true } )
37
- const vaultTokens = vaultInfos . map ( ( v , i ) => v ?. asset ?? vaultInfos2 [ i ] )
38
- return api . sumTokens ( { tokensAndOwners2 : [ vaultTokens , vaults ] } )
39
- }
98
+
99
+ return balances ;
100
+ } ;
40
101
41
102
module . exports = {
42
103
doublecounted : true ,
@@ -48,15 +109,13 @@ module.exports = {
48
109
"0xA1eBd23c4364e7491633237A0d9359D82c629182" ,
49
110
"0x0109e9f292516dAB3E15EfC61811C5e5a7FA5358" ,
50
111
"0x0B75e167F8A37179b7044414EE43e94cabeAA2FA" ,
51
- "0x14C5a9007FDC5eE4De1581C892b5fd4623D8cdBf" ,
52
112
] ,
53
113
} ) ,
54
114
} ,
55
115
scroll : {
56
116
tvl : chainTVL ( {
57
117
vaults : [
58
118
"0xA0EeB418213f8472cba2c842378E1bB64e28bd28" ,
59
- "0xb9ca61a6d5fa0c443f3c48ab1fbf0118964308d6" ,
60
119
]
61
120
} ) ,
62
121
} ,
@@ -67,64 +126,52 @@ module.exports = {
67
126
"0x73981B0496fC08e9136BAF74b79d32A4d4F2a007" ,
68
127
"0xbEd575b0FeDa4F84b71144634693DaCc07749471" ,
69
128
"0x54602E5cBa09e01EeE9B2050F1F4f0Dc902CeE34" ,
70
- "0x3c09fb9630B8f89F73871506F445F5DbedBEB0DF" ,
71
129
]
72
130
} ) ,
73
131
} ,
74
132
optimism : {
75
133
tvl : chainTVL ( {
76
134
vaults : [
77
135
"0x5616Fe2762687Cd8a9158c27F62aff84E36821Be" ,
78
- "0xea8eDdb19a980B6D9D77167ca08a70a692DA0DD7" ,
79
136
] ,
80
137
} ) ,
81
138
} ,
82
139
mode : {
83
140
tvl : chainTVL ( {
84
141
vaults : [
85
142
"0xbEd575b0FeDa4F84b71144634693DaCc07749471" ,
86
- "0xa30c1544d12309a519A205A486f6AF0515dFA442" ,
87
143
] ,
88
144
} ) ,
89
145
} ,
90
146
manta : {
91
147
tvl : chainTVL ( {
92
- vaults : [
93
- "0x8735C80fb5aEfF60d35C9d6E663758Af7861981E" ,
94
- ] ,
148
+ vaults : [ ] ,
95
149
} ) ,
96
150
} ,
97
151
blast : {
98
152
tvl : chainTVL ( {
99
153
vaults : [
100
154
"0x8506fD66FCeD711c11F9E837EcAEC0F87C3F60A0" ,
101
- "0x0817b88a528E2F5F980d26e98fC950CbD6aE31Ef" ,
102
155
] ,
103
156
} ) ,
104
-
105
157
} ,
106
158
linea : {
107
159
tvl : chainTVL ( {
108
160
vaults : [
109
161
"0x56ceD49205e5D9b4d8D9B29f4aBfbe7bb8b08768" ,
110
162
"0x96d6cE4e83dB947fF6bD1Ab0B377F23cd5D9ec2D" ,
111
163
"0xcF101e13b5181f79094B0726B03e89d1cB95b28C" ,
112
- "0x3478dE5e82431676C87113001bBeeb359cb5eAa5" ,
113
164
] ,
114
165
} ) ,
115
166
} ,
116
167
bsc : {
117
168
tvl : chainTVL ( {
118
- vaults : [
119
- "0xaDd58517c5D45c8ed361986f193785F8Ed1ABFc2" ,
120
- ]
121
- } )
169
+ vaults : [ "0xaDd58517c5D45c8ed361986f193785F8Ed1ABFc2" ] ,
170
+ } ) ,
122
171
} ,
123
172
mantle : {
124
173
tvl : chainTVL ( {
125
- vaults : [
126
- "0x6FF000453a9c14f7d3bf381925c8cde565DbCe55" ,
127
- ]
128
- } )
174
+ vaults : [ "0x6FF000453a9c14f7d3bf381925c8cde565DbCe55" ] ,
175
+ } ) ,
129
176
} ,
130
- } ;
177
+ } ;
0 commit comments