@@ -17,12 +17,16 @@ const CONFIG = {
17
17
USD0 : '0x35f1C5cB7Fb977E669fD244C567Da99d8a3a6850' ,
18
18
CHAIN : 'Arbitrum' ,
19
19
} ,
20
+ USUSDSPP_VAULT : '0x67ec31a47a4126A66C7bb2fE017308cf5832A4Db' ,
21
+ USUSDSPP_VAULT_SYMBOL : 'usUSDS++' ,
20
22
USUAL_TOKEN : '0xC4441c2BE5d8fA8126822B9929CA0b81Ea0DE38E' ,
23
+ SUSDS_TOKEN : '0xa3931d71877C0E7a3148CB7Eb4463524FEc27fbD' ,
21
24
USUALX_TOKEN : '0x06B964d96f5dCF7Eae9d7C559B09EDCe244d4B8E' ,
22
25
USUALX_LOCKUP : '0x85B6F9BDdb10c6B320d07416a250F984f0F0E9ED' ,
23
26
USUALX_LOCKUP_SYMBOL : 'lUSUALx (12 months)' ,
24
27
USD0_SYMBOL : 'USD0' ,
25
28
USUAL_SYMBOL : 'USUAL' ,
29
+ USUALX_SYMBOL : 'USUALx' ,
26
30
USD0PP_SYMBOL : 'USD0++' ,
27
31
ETH0_SYMBOL : 'ETH0' ,
28
32
URLS : {
@@ -104,21 +108,6 @@ async function getETH0ChainData(chainConfig) {
104
108
}
105
109
106
110
async function getUsualXAPY ( chain , usualXPrice ) {
107
- const { output } = await sdk . api . abi . call ( {
108
- target : CONFIG . USUALX_TOKEN ,
109
- chain : chain . toLowerCase ( ) ,
110
- abi : abi . find ( ( abi ) => abi . name === 'totalAssets' ) ,
111
- } ) ;
112
- const totalAssets = output / CONFIG . SCALAR ;
113
- const rate =
114
- (
115
- await sdk . api . abi . call ( {
116
- target : CONFIG . USUALX_TOKEN ,
117
- chain : chain . toLowerCase ( ) ,
118
- abi : abi . find ( ( abi ) => abi . name === 'getYieldRate' ) ,
119
- } )
120
- ) . output / CONFIG . SCALAR ;
121
-
122
111
const blacklistedBalances = await sdk . api . abi
123
112
. multiCall ( {
124
113
abi : 'erc20:balanceOf' ,
@@ -145,13 +134,13 @@ async function getUsualXAPY(chain, usualXPrice) {
145
134
const usualXTVL =
146
135
rawUsualXTVL - ( blacklistedBalances ?. reduce ( ( a , b ) => a + b , 0 ) ?? 0 ) ;
147
136
148
- const usualXApr = ( rate * CONFIG . DAYS_PER_YEAR ) / totalAssets ;
137
+ const usualXApr = await getRewardData (
138
+ CONFIG . USUALX_SYMBOL ,
139
+ CONFIG . USUAL_SYMBOL
140
+ ) ;
149
141
150
- // Applying weekly compounding only to USUALx apyReward
151
- const usualxApyReward = utils . aprToApy (
152
- usualXApr * 100 ,
153
- CONFIG . WEEKS_PER_YEAR
154
- ) ; // Weekly compounding for apyReward
142
+ // Applying daily compounding only to USUALx apyReward
143
+ const usualxApyReward = utils . aprToApy ( usualXApr . apr , CONFIG . DAYS_PER_YEAR ) ; // Daily compounding for apyReward
155
144
156
145
const usualxMarketCap = usualXTVL * usualXPrice ;
157
146
const usualXLockupMarketCap = usualXLockupBalance * usualXPrice ;
@@ -175,6 +164,64 @@ async function getUsualXAPY(chain, usualXPrice) {
175
164
} ;
176
165
}
177
166
167
+ async function getUsUSDSAPY ( chain ) {
168
+ const { output } = await sdk . api . abi . call ( {
169
+ target : CONFIG . USUSDSPP_VAULT ,
170
+ chain : chain . toLowerCase ( ) ,
171
+ abi : abi . find ( ( abi ) => abi . name === 'totalAssets' ) ,
172
+ } ) ;
173
+ const totalAssets = output / CONFIG . SCALAR ;
174
+
175
+ const blacklistedBalances = await sdk . api . abi
176
+ . multiCall ( {
177
+ abi : 'erc20:balanceOf' ,
178
+ calls : CONFIG . USUALX_BALANCES_BLACKLIST . map ( ( address ) => ( {
179
+ target : CONFIG . USUSDSPP_VAULT ,
180
+ params : [ address ] ,
181
+ } ) ) ,
182
+ chain : chain . toLowerCase ( ) ,
183
+ permitFailure : true ,
184
+ } )
185
+ . then ( ( call ) =>
186
+ call . output . map ( ( e ) => {
187
+ return e . output / CONFIG . SCALAR ;
188
+ } )
189
+ ) ;
190
+
191
+ const rawUsUSDSppTVL = await getTokenSupply ( chain , CONFIG . USUSDSPP_VAULT ) ;
192
+
193
+ const usualXTVL =
194
+ rawUsUSDSppTVL - ( blacklistedBalances ?. reduce ( ( a , b ) => a + b , 0 ) ?? 0 ) ;
195
+
196
+ //sUSDS++ vault data
197
+ const susdsBalance = await getTokenBalance (
198
+ 'Ethereum' ,
199
+ CONFIG . SUSDS_TOKEN ,
200
+ CONFIG . USUSDSPP_VAULT
201
+ ) ;
202
+ const susdsPrice = await getTokenPrice ( 'Ethereum' , CONFIG . SUSDS_TOKEN ) ;
203
+ const usUSDSppMarketCap = susdsBalance * susdsPrice ;
204
+
205
+ const baseRewards = await getRewardData (
206
+ CONFIG . USUSDSPP_VAULT_SYMBOL ,
207
+ CONFIG . USD0PP_SYMBOL
208
+ ) ;
209
+ const baseUsUSDSApy = utils . aprToApy ( baseRewards . apr , CONFIG . WEEKS_PER_YEAR ) ;
210
+ const usualRewards = await getRewardData (
211
+ CONFIG . USUSDSPP_VAULT_SYMBOL ,
212
+ CONFIG . USUAL_SYMBOL
213
+ ) ;
214
+ const usUSDSRewardApy = utils . aprToApy (
215
+ usualRewards . apr ,
216
+ CONFIG . DAYS_PER_YEAR
217
+ ) ;
218
+ return {
219
+ baseUsUSDSApy,
220
+ usUSDSRewardApy,
221
+ usUSDSppMarketCap,
222
+ } ;
223
+ }
224
+
178
225
async function getRewardData ( pool , reward ) {
179
226
const { data } = await axios . get ( `${ CONFIG . URLS . REWARD_APR_RATE } ` ) ;
180
227
const apr = data [ pool ] [ reward ] ;
@@ -218,7 +265,8 @@ const apy = async () => {
218
265
usualXLockupMarketCap,
219
266
usualXUnlockedMarketCap,
220
267
} = await getUsualXAPY ( 'Ethereum' , usualxPrice ) ;
221
-
268
+ const { baseUsUSDSApy, usUSDSRewardApy, usUSDSppMarketCap } =
269
+ await getUsUSDSAPY ( 'Ethereum' ) ;
222
270
return [
223
271
createPoolData (
224
272
CONFIG . ETHEREUM . CHAIN ,
@@ -253,7 +301,7 @@ const apy = async () => {
253
301
project : 'usual' ,
254
302
symbol : 'USUALx' ,
255
303
tvlUsd : usualXUnlockedMarketCap ,
256
- apyBase : usualxApyReward , // Weekly compounding for USUALx APY
304
+ apyBase : usualxApyReward , // Daily compounding for USUALx APY
257
305
apyReward : 0 , // No additional reward for USUALx
258
306
rewardTokens : [ CONFIG . ETHEREUM . USD0 ] ,
259
307
poolMeta : 'Staked USUAL' ,
@@ -266,13 +314,26 @@ const apy = async () => {
266
314
project : 'usual' ,
267
315
symbol : 'USUALx' ,
268
316
tvlUsd : usualXLockupMarketCap ,
269
- apyBase : usualxApyReward , // Weekly compounding for USUALx APY
270
- apyReward : usualxApyRevenueSwitch , // Revenue switch APY for Lockup USUALx
317
+ apyBase : usualxApyReward , // Daily compounding for USUALx APY
318
+ apyReward : usualxApyRevenueSwitch , // Revenue switch APY for Lockup USUALx Weekly compounding
271
319
rewardTokens : [ CONFIG . ETHEREUM . USD0 ] ,
272
320
underlyingTokens : [ CONFIG . USUAL_TOKEN ] ,
273
- poolMeta : 'USUALx Lockup' ,
321
+ poolMeta : 'Lockup' ,
274
322
url : 'https://app.usual.money/swap?from=USUALx&to=lUSUALx' ,
275
323
} ,
324
+ {
325
+ pool : CONFIG . USUSDSPP_VAULT ,
326
+ chain : 'Ethereum' ,
327
+ project : 'usual' ,
328
+ symbol : 'usUSDS++' ,
329
+ tvlUsd : usUSDSppMarketCap ,
330
+ apyBase : baseUsUSDSApy , // Weekly compounding for USUSDS++ APY in USD0++
331
+ apyReward : usUSDSRewardApy , // Reward in Usual APY for USUSDS++
332
+ rewardTokens : [ CONFIG . USUAL_TOKEN ] ,
333
+ underlyingTokens : [ CONFIG . ETHEREUM . USD0PP ] ,
334
+ poolMeta : 'usUSDS++ vault' ,
335
+ url : 'https://app.usual.money/vault/susds' ,
336
+ } ,
276
337
] ;
277
338
} ;
278
339
0 commit comments