11const sdk = require ( '@defillama/sdk' ) ;
2- const { formatChain, getERC4626Info, getPrices } = require ( '../utils' ) ;
2+ const { formatChain, getERC4626Info, getPrices, getData } = require ( '../utils' ) ;
33
4- const PROJECT_NAME = 'mystic-finance' ;
4+ const PROJECT_NAME = 'mystic-finance-lending ' ;
55const CHAIN = 'flare' ;
66
77const VAULTS = [
@@ -38,14 +38,27 @@ const apy = async (timestamp) => {
3838 ) ;
3939 const { pricesByAddress } = await getPrices ( priceKeys , CHAIN ) ;
4040
41+ // Fetch campaignApr
42+ let vaultsApiData = [ ] ;
43+ try {
44+ const apiData = await getData ( 'https://api.mysticfinance.xyz/morphoCache/lite?chainId=14' ) ;
45+ if ( apiData && apiData . vaults ) {
46+ vaultsApiData = apiData . vaults ;
47+ }
48+ } catch { }
49+
4150 return VAULTS . map ( ( vault , i ) => {
4251 const { tvl, apyBase } = vaultInfos [ i ] ;
4352 const tokenAmount = tvl / 10 ** vault . decimals ;
4453 const price =
4554 pricesByAddress [ vault . underlyingToken . toLowerCase ( ) ] || 0 ;
4655 const tvlUsd = tokenAmount * price ;
4756
48- return {
57+ const apiVault = vaultsApiData . find ( v => v . vaultAddress . toLowerCase ( ) === vault . address . toLowerCase ( ) ) ;
58+ const apyReward = apiVault && apiVault . campaignApr ? apiVault . campaignApr : null ;
59+ const vaultApr = apiVault && apiVault . vaultApr ? apiVault . vaultApr : null ;
60+
61+ const poolData = {
4962 pool : `${ vault . address } -${ CHAIN } ` ,
5063 chain : formatChain ( CHAIN ) ,
5164 project : PROJECT_NAME ,
@@ -55,6 +68,16 @@ const apy = async (timestamp) => {
5568 underlyingTokens : [ vault . underlyingToken ] ,
5669 url : `https://app.mysticfinance.xyz/vault?vaultAddress=${ vault . address } &chainId=14` ,
5770 } ;
71+
72+ if ( apyReward !== null ) {
73+ poolData . apyReward = apyReward ;
74+ }
75+
76+ if ( vaultApr !== null ) {
77+ poolData . apyBase = vaultApr ;
78+ }
79+
80+ return poolData ;
5881 } ) ;
5982} ;
6083
0 commit comments