1
1
/**
2
- * STRKFarm is a yield aggregator and strategy builder on Starknet
2
+ * Troves is a yield aggregator and strategy builder on Starknet
3
3
* - We use various DeFi protocols on starknet to design yield strategies
4
4
*/
5
5
6
6
const { multiCall } = require ( "../helper/chain/starknet" ) ;
7
- const { call } = require ( "../helper/chain/starknet" ) ;
8
7
const ADDRESSES = require ( '../helper/coreAssets.json' ) ;
9
- const { ERC4626AbiMap } = require ( './erc4626 ' ) ;
8
+ const { EkuboAbiMap } = require ( './ekubo ' ) ;
10
9
const { SINGLETONabiMap } = require ( './singleton' ) ;
11
10
const { endurABIMap } = require ( './endur' ) ;
12
11
const { FusionAbiMap } = require ( './fusionAbi' ) ;
13
- const { ERC721StratAbiMap } = require ( './sensei' ) ;
14
12
15
13
const STRATEGIES = {
16
14
"AutoCompounding" : [ { // auto-compounds user tokens (e.g. STRK) by investing in zkLend
@@ -41,7 +39,7 @@ const STRATEGIES = {
41
39
address : "0x7023a5cadc8a5db80e4f0fde6b330cbd3c17bbbf9cb145cbabd7bd5e6fb7b0b" ,
42
40
token : ADDRESSES . starknet . STRK ,
43
41
xSTRK : ADDRESSES . starknet . XSTRK ,
44
- vesu : "0x02545b2e5d519fc230e9cd781046d3a64e092114f07e44771e0d719d148725ef "
42
+ vesu : "0x000d8d6dfec4d33bfb6895de9f3852143a17c6f92fd2a21da3d6924d34870160 "
45
43
} ] ,
46
44
"FusionVaults" : [ {
47
45
address : "0x07fb5bcb8525954a60fde4e8fb8220477696ce7117ef264775a1770e23571929" ,
@@ -55,6 +53,11 @@ const STRATEGIES = {
55
53
} , {
56
54
address : "0x0115e94e722cfc4c77a2f15c4aefb0928c1c0029e5a57570df24c650cb7cec2c" ,
57
55
token : ADDRESSES . starknet . USDT , // Fusion USDT
56
+ } ] ,
57
+ "EkuboVaults" : [ {
58
+ address : "0x01f083b98674bc21effee29ef443a00c7b9a500fd92cf30341a3da12c73f2324" ,
59
+ token1 : ADDRESSES . starknet . STRK ,
60
+ token2 : ADDRESSES . starknet . XSTRK
58
61
} ]
59
62
}
60
63
@@ -84,7 +87,7 @@ async function computeXSTRKStratTVL(api) {
84
87
params : [ pool_id , c . xSTRK , c . token , c . address ]
85
88
} ) ) ,
86
89
abi : { ...SINGLETONabiMap . position , customInput : 'address' } ,
87
- } ) ;
90
+ } )
88
91
89
92
90
93
let collateral = Number ( data [ 0 ] [ '2' ] ) ;
@@ -114,11 +117,34 @@ async function computeFusionTVL(api) {
114
117
api . addTokens ( fusionContracts . map ( c => c . token ) , totalAssets ) ;
115
118
}
116
119
120
+ async function computeEkuboTVL ( api ) {
121
+ const ekuboContracts = STRATEGIES . EkuboVaults
122
+ // calculate tvl for each
123
+ const totalShares = await multiCall ( {
124
+ calls : ekuboContracts . map ( c => c . address ) ,
125
+ abi : EkuboAbiMap . total_supply
126
+ } ) ;
127
+
128
+ const hexValues = totalShares . map ( v => '0x' + v . toString ( 16 ) ) ;
129
+
130
+ const assets = await multiCall ( {
131
+ calls : ekuboContracts . map ( c => ( {
132
+ target : c . address ,
133
+ params : [ hexValues [ 0 ] , '0x0' ]
134
+ } ) ) ,
135
+ abi : { ...EkuboAbiMap . convert_to_assets , customInput : 'address' }
136
+ } )
137
+
138
+ api . addTokens ( ADDRESSES . starknet . XSTRK , [ assets [ 0 ] [ '1' ] ] )
139
+ api . addTokens ( ADDRESSES . starknet . STRK , [ assets [ 0 ] [ '2' ] ] )
140
+ }
141
+
117
142
async function tvl ( api ) {
118
143
await computeAutoCompoundingTVL ( api ) ;
119
144
await computeSenseiTVL ( api ) ;
120
145
await computeXSTRKStratTVL ( api ) ;
121
146
await computeFusionTVL ( api ) ;
147
+ await computeEkuboTVL ( api ) ;
122
148
}
123
149
124
150
module . exports = {
0 commit comments