{"version":3,"sources":["utils/getVaults.js","utils/chainHelpers.js","hooks/useWeb3.js","utils/apiCacheTime.js","utils/fetchPrice.js","utils/getHolders.js","utils/getEarnings.js","utils/format.js","utils/fetchChainVaults.js","components/Context/ContextProvider.js","constants/Palette.js","components/NavBar/style.js","components/NavBar/NavBar.js","components/Metrics/style.js","components/Metrics/BaseMetric.js","components/Metrics/GlobalTvlMetric.js","components/Metrics/TreasuryMetric.js","components/Metrics/GenericMetric.js","components/Metrics/Metrics.js","components/Vaults/style.js","App.js","components/Vaults/Vaults.js","reportWebVitals.js","i18n.js","index.js"],"names":["getVaults","chainId","a","console","log","vaultEndpoint","getChainVaultEndpoint","axios","get","response","data","vaults","substring","indexOf","eval","error","vaultEndpoints","56","128","137","250","43114","1666600000","42161","42220","1285","25","122","1088","1313161554","1284","apps","explorers","rewardTokens","treasuryLinks","stakedLinks","buyLinks","getChainAppLink","getChainExplorerLink","getChainRewardTokenSymbol","getChainTreasuryLink","getChainStakedLink","getChainBuyLink","useWeb3","provider","ethers","providers","Web3Provider","window","ethereum","signer","getSigner","useState","network","setChainId","web3","Web3","useEffect","getNetwork","then","apiCacheTime","Math","trunc","Date","now","endpoints","cache","isCached","oracle","id","t","getCachedPrice","price","addToCache","fetchCoingecko","params","ids","vs_currencies","usd","fetchTokens","fetchLP","fetchPrice","undefined","getHolders","getEarnings","formatTvl","tvl","order","floor","log10","num","toFixed","MULTICALLS","multicallAddress","fetchVaultsTvl","multicall","MultiCall","balanceCalls","forEach","vault","vaultContract","eth","Contract","BeefyVault","earnedTokenAddress","push","balance","methods","all","res","balances","map","v","BigNumber","i","length","vaultBal","tokenPrice","oracleId","times","dividedBy","tokenDecimals","isNaN","VaultsContext","createContext","fetchGlobalTvl","setGlobalTvl","globalTvl","isUniqueEarnContract","pool","index","pools","earnContractAddress","findIndex","p","filter","status","Number","fetchBalance","token","address","contract","ERC20","balanceOf","fetchTreasuryBalance","setTreasury","addr","addresses","toString","Promise","BIFI","Treasury","WBNB","values","utils","formatEther","fetchStakedBifi","setStakedBifi","RewardPool","stakedBifi","fetchBifiHolders","setBifiHolders","holders","fetchBifiPrice","setBifiPrice","setMarketCap","mcap","fetchEarnings","setDailyEarnings","setTotalEarnings","daily","total","earnings","String","ContextProvider","children","vaultCount","setVaultCount","treasury","bifiHolders","bifiPrice","marketCap","dailyEarnings","totalEarnings","setVaults","on","location","reload","Provider","value","Palette","white","black","bg","green","gray","debug","Nav","styled","nav","NavSection","div","NavLogo","img","NavItem","NavName","NavBtn","NavBar","useTranslation","useContext","appLink","src","href","target","rel","Metrics","Link","Metric","MetricName","MetricValue","BaseMetric","name","link","className","GlobalTvlMetric","TreasuryMetric","tokenName","GenericMetric","metric","context","stakedLink","treasuryLink","rewardTokenSymbol","buyLink","web3Modal","TableContainer","Table","TableHead","TableBody","TableRow","TableCell","ContractAddress","ContractTVL","span","BasicTable","sortedVaults","sort","b","explorerLink","row","tokenDescription","platform","providerOptions","walletconnect","package","WalletConnectProvider","options","rpc","inject","enable","Web3Modal","cacheProvider","disableInjectedProvider","connect","App","alert","initialize","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","resources","en","translation","pt","i18n","use","LanguageDetector","initReactI18next","init","fallbackLng","interpolation","escapeValue","ReactDOM","render","StrictMode","document","getElementById"],"mappings":"w0OAGMA,UAAS,uTAAG,iBAAOC,SAAP,kLAAAC,EAAA,uFAChBC,QAAQC,IAAI,uBAAwBH,SAC/BA,QAFW,uDAEK,IAFL,8BAIRI,cAAgBC,qDAAsBL,SAJ9B,gBAKSM,6CAAMC,IAAIH,eALnB,cAKRI,SALQ,cAMRC,KAAOD,SAASC,KAClBC,OAAS,IAAMD,KAAKE,UAAUF,KAAKG,QAAQ,MAAQ,GACvDF,OAASG,KAAKH,QARA,yBASPA,QATO,8DAWdR,QAAQY,MAAR,aAXc,yBAYP,IAZO,uEAAH,0D,o1OCHf,kPAAMC,EAAiB,CACtBC,GAAI,0GACJC,IAAK,2GACLC,IAAK,8GACLC,IAAK,6GACLC,MAAO,gHACPC,QAAY,8GACZC,MAAO,+GACPC,MAAO,2GACPC,KAAM,gHACNC,GAAI,6GACJC,IAAK,2GACLC,KAAM,4GACNC,WAAY,6GACZC,KAAM,gHAGDC,EAAO,CACZd,GAAI,kCACJC,IAAK,mCACLC,IAAK,sCACLC,IAAK,qCACLC,MAAO,mCACPC,QAAY,sCACZC,MAAO,uCACPC,MAAO,mCACPC,KAAM,wCACNC,GAAI,qCACJC,IAAK,mCACLC,KAAM,oCACNC,WAAY,qCACZC,KAAO,wCAGFE,EAAY,CACjBf,GAAI,sBACJC,IAAK,wBACLC,IAAK,0BACLC,IAAK,sBACLC,MAAO,uBACPC,QAAY,+BACZC,MAAO,sBACPC,MAAO,4BACPC,KAAM,gCACNC,GAAI,yBACJC,IAAK,4BACLC,KAAM,uCACNC,WAAY,uCACZC,KAAM,wBAGDG,EAAe,CACpBhB,GAAI,MACJC,IAAK,KACLC,IAAK,QACLC,IAAK,MACLC,MAAO,OACPC,QAAY,MACZC,MAAO,MACPC,MAAO,OACPC,KAAM,OACNC,GAAI,MACJC,IAAK,OACLC,KAAM,QACNC,WAAY,MACZC,KAAM,QAGDI,EAAgB,CACrBjB,GAAI,yEACJC,IAAK,0EACLC,IAAK,6EACLC,IAAK,yEACLC,MAAO,0EACPC,QAAY,kFACZC,MAAO,yEACPC,MAAO,+EACPC,KAAM,mFACNC,GAAI,2EACJC,IAAK,8EACLC,KAAM,0FACNC,WAAY,0FACZC,KAAM,0EAIDK,EAAc,CACnBlB,GAAI,oHACJC,IAAK,qHACLC,IAAK,wHACLC,IAAK,oHACLC,MAAO,qHACPC,QAAY,8FACZC,MAAO,oHACPC,MAAO,sFACPC,KAAM,8HACNC,GAAI,wFACJC,IAAK,8EACLC,KAAM,0FACNC,WAAY,0FACZC,KAAM,0EAGDM,EAAW,CAChBnB,GAAI,sEACJC,IAAK,gJACLC,IAAK,sEACLC,IAAK,qJACLC,MAAO,sEACPC,QAAY,yGACZC,MAAO,yGACPC,MAAO,yGACPC,KAAM,yGACNC,GAAI,0BACJC,IAAK,6BACLC,KAAM,qFACNC,WAAY,GACZC,KAAM,4JAGA,SAASO,EAAgBpC,GAC/B,OAAO8B,EAAK9B,GAGN,SAASqC,EAAqBrC,GACpC,OAAO+B,EAAU/B,GAGX,SAASsC,EAA0BtC,GACzC,OAAOgC,EAAahC,GAGd,SAASuC,EAAqBvC,GACpC,OAAOiC,EAAcjC,GAGf,SAASwC,EAAmBxC,GAClC,OAAOkC,EAAYlC,GAGb,SAASyC,EAAgBzC,GAC/B,OAAOmC,EAASnC,GAGV,SAASK,EAAsBL,GACrC,OAAOe,EAAef,K,yXC3HR0C,MAlBR,WAAoB,IAAD,EAElBC,EAAW,IAAIC,IAAOC,UAAUC,aAAaC,OAAOC,UACpDC,EAASN,EAASO,YAHA,EAIMC,mBAAQ,UAACR,EAASS,eAAV,aAAC,EAAkBpD,SAJjC,mBAIjBA,EAJiB,KAIRqD,EAJQ,KAKlBC,EAAO,IAAIC,IAAKZ,EAASA,UAU/B,OARAa,qBAAU,WACHxD,GACH2C,EAASc,aAAaC,MAAK,SAAAN,GACzBC,EAAWD,EAAQpD,eAKlB,CAAE2C,WAAUM,SAAQjD,UAASsD,S,iBCnBzBK,EAAe,kBAAMC,KAAKC,MAAMC,KAAKC,MAAL,MCGvCC,EACO,gDAMPC,EAAQ,GAEd,SAASC,EAAT,GAAmC,IAAfC,EAAc,EAAdA,OAAQC,EAAM,EAANA,GAC1B,MAAI,UAAGD,EAAH,YAAaC,KAAQH,GAChBA,EAAM,GAAD,OAAIE,EAAJ,YAAcC,IAAMC,EALd,IAKkCP,KAAKC,MAK7D,SAASO,EAAT,GAAyC,IAAfH,EAAc,EAAdA,OAAQC,EAAM,EAANA,GAChC,OAAOH,EAAM,GAAD,OAAIE,EAAJ,YAAcC,IAAMG,MAGlC,SAASC,EAAT,GAA4C,IAAtBL,EAAqB,EAArBA,OAAQC,EAAa,EAAbA,GAAIG,EAAS,EAATA,MAChCN,EAAM,GAAD,OAAIE,EAAJ,YAAcC,IAAQ,CAAEG,MAAOA,EAAOF,EAAGP,KAAKC,OAGrD,IAAMU,EAAc,uCAAG,WAAML,GAAN,eAAAnE,EAAA,+EAEIK,IAAMC,IAAIyD,EAAqB,CACpDU,OAAQ,CAAEC,IAAKP,EAAIQ,cAAe,SAHjB,cAEbpE,EAFa,yBAKZA,EAASC,KAAK2D,GAAIS,KALN,uCAOnB3E,QAAQY,MAAR,MAPmB,kBAQZ,GARY,yDAAH,sDAYdgE,EAAW,uCAAG,WAAMV,GAAN,eAAAnE,EAAA,+EAEOK,IAAMC,IAAN,6CAAgDoD,MAFvD,cAEVnD,EAFU,yBAGTA,EAASC,KAAK2D,IAHL,uCAKhBlE,QAAQY,MAAR,MALgB,kBAMT,GANS,yDAAH,sDAUXiE,EAAO,uCAAG,WAAOX,GAAP,eAAAnE,EAAA,+EAEWK,IAAMC,IAAN,0CAA6CoD,MAFxD,cAENnD,EAFM,yBAGLA,EAASC,KAAK2D,IAHT,uCAKZlE,QAAQY,MAAR,MALY,kBAML,GANK,yDAAH,sDAUAkE,EAAU,uCAAG,iCAAA/E,EAAA,yDAASkE,EAAT,EAASA,OAAQC,EAAjB,EAAiBA,QAC1Ba,IAAXd,EADoB,uBAEtBjE,QAAQY,MAAM,oBAFQ,kBAGf,GAHe,eAKbmE,IAAPb,EALoB,uBAMtBlE,QAAQY,MAAM,kBANQ,kBAOf,GAPe,WAUpBoD,EAAS,CAAEC,SAAQC,OAVC,yCAWfE,EAAe,CAAEH,SAAQC,QAXV,OAcpBG,EAAQ,EAdY,KAehBJ,EAfgB,OAgBjB,cAhBiB,QAoBjB,WApBiB,QAwBjB,QAxBiB,0CAiBNM,EAAeL,GAjBT,eAiBpBG,EAjBoB,qDAqBNO,EAAYV,GArBN,eAqBpBG,EArBoB,qDAyBNQ,EAAQX,GAzBF,eAyBpBG,EAzBoB,oCA4BbA,EAAQ,EA5BK,eA+BxBC,EAAW,CAAEL,SAAQC,KAAIG,UA/BD,kBAgCjBA,GAhCiB,4CAAH,sDCxDjBW,EAAU,uCAAG,4BAAAjF,EAAA,+EAEQK,IAAMC,IAAN,8CAAiDoD,MAFzD,cAETnD,EAFS,yBAGRA,EAASC,KAAT,aAHQ,uCAKfP,QAAQY,MAAR,MALe,kBAMR,GANQ,yDAAH,qDCAVqE,EAAW,uCAAG,4BAAAlF,EAAA,+EAEOK,IAAMC,IAAN,+CAAkDoD,MAFzD,cAEVnD,EAFU,yBAGTA,EAASC,MAHA,uCAKhBP,QAAQY,MAAR,MALgB,kBAMT,GANS,yDAAH,qDCHJsE,EAAY,SAACC,GACxB,IAAMC,EAAQ1B,KAAK2B,MAAM3B,KAAK4B,MAAMH,GAAO,GAC3C,GAAIC,EAAQ,EAAK,MAAO,QAExB,IACMG,EAAMJ,EAAG,SAAG,IAAQC,GAE1B,MAAM,KAAN,OAAYG,EAAIC,QAAQ,IAAxB,OAHc,CAAC,GAAI,IAAK,IAAK,IAAK,KAGCJ,K,6CCF/BK,EAAa,CACjB3E,GAAI,6CACJC,IAAK,6CACLC,IAAK,6CACLC,IAAK,6CACLC,MAAO,6CACPC,QAAY,6CACZC,MAAO,6CACPC,MAAO,6CACPC,KAAM,6CACNC,GAAI,6CACJC,IAAK,6CACLC,KAAM,6CACNC,WAAY,6CACZC,KAAM,8CAGF+D,EAAmB,SAAC5F,GAAD,OAAa2F,EAAW3F,IAEpC6F,EAAc,uCAAG,qDAAA5F,EAAA,6DAASS,EAAT,EAASA,OAAQ4C,EAAjB,EAAiBA,KAAMtD,EAAvB,EAAuBA,QAAvB,SAEpB8F,EAAY,IAAIC,YAAUzC,EAAMsC,EAAiB5F,IACjDgG,EAAe,GACrBtF,EAAOuF,SAAQ,SAAAC,GACb,IAAMC,EAAgB,IAAI7C,EAAK8C,IAAIC,SAASC,EAAYJ,EAAMK,oBAC9DP,EAAaQ,KAAK,CAChBC,QAASN,EAAcO,QAAQD,eAPT,SAURX,EAAUa,IAAI,CAACX,IAVP,OAUpBY,EAVoB,OAWpBC,EAAWD,EAAI,GAAGE,KAAI,SAAAC,GAAC,OAAI,IAAIC,IAAUD,EAAEN,YAExCQ,EAAI,EAba,aAaVA,EAAIvG,EAAOwG,QAbD,wBAclBhB,EAAQxF,EAAOuG,GACfE,EAAWN,EAASI,GAEtBG,EAAa,EAjBO,oBAmBHpC,EAAW,CAAEb,OAAQ+B,EAAM/B,OAAQC,GAAI8B,EAAMmB,WAnB1C,QAmBtBD,EAnBsB,0DAqBtBlH,QAAQC,IAAI,4BAA6B+F,EAAMmB,SAAUnB,EAAM/B,QArBzC,SAwBpBkB,EAAM8B,EAASG,MAAMF,GAAYG,UAA3B,SAAqC,GAArC,UAA4CrB,EAAMsB,qBAAlD,QAAmE,MACrEC,UACNpC,EAAM,IAAI2B,IAAU,IAEtBd,EAAMb,IAAMA,EAAIK,QAAQ,GA5BA,QAaSuB,IAbT,0EA+B1B/G,QAAQC,IAAI,4BAAZ,MA/B0B,kEAAH,sDCTduH,EAAgBC,wBAAc,MAErCC,EAAc,uCAAG,uCAAA3H,EAAA,6DAASS,EAAT,EAASA,OAAQ4C,EAAjB,EAAiBA,KAAMtD,EAAvB,EAAuBA,QAAS6H,EAAhC,EAAgCA,aAAhC,SACfhC,EAAe,CAAEnF,SAAQ4C,OAAMtD,YADhB,OAGjB8H,EAAY,EAEVC,EAAuB,SAACC,EAAMC,EAAOC,GACzC,IAAMC,EAAsBH,EAAKG,oBACjC,OAAOD,EAAME,WAAU,SAAAC,GAAC,OAAIA,EAAEF,sBAAwBA,OAAyBF,GAGjFvH,EACG4H,QAAO,SAAAD,GAAC,MAAiB,WAAbA,EAAEE,UACdD,OAAOP,GACP9B,SAAQ,YAAc,IAAXZ,EAAU,EAAVA,IACVyC,GAAaU,OAAOnD,MAGxBwC,EAAaC,GAjBQ,2CAAH,sDAoBdW,EAAY,uCAAG,mCAAAxI,EAAA,6DAASyI,EAAT,EAASA,MAAOC,EAAhB,EAAgBA,QAAS1F,EAAzB,EAAyBA,OACtC2F,EAAW,IAAIhG,IAAOyD,SAASqC,EAAOG,EAAO5F,GADhC,SAEN2F,EAASE,UAAUH,GAFb,mFAAH,sDAKZI,EAAoB,uCAAG,qCAAA9I,EAAA,yDAASgD,EAAT,EAASA,OAAQjD,EAAjB,EAAiBA,QAASgJ,EAA1B,EAA0BA,YAChDhJ,EADsB,wDAErBiJ,EAAOC,EAAUlJ,EAAQmJ,YAFJ,SAGNC,QAAQzC,IAAI,CAC/B8B,EAAa,CAAEC,MAAOO,EAAKI,KAAMV,QAASM,EAAKK,SAAUrG,WACzDwF,EAAa,CAAEC,MAAOO,EAAKM,KAAMZ,QAASM,EAAKK,SAAUrG,aALhC,OAGrBuG,EAHqB,OAQ3BR,EAAY,CACVK,KAAMb,OAAOiB,QAAMC,YAAYF,EAAO,KAAK9D,QAAQ,GACnD6D,KAAMf,OAAOiB,QAAMC,YAAYF,EAAO,KAAK9D,QAAQ,KAV1B,2CAAH,sDAcpBiE,EAAe,uCAAG,uCAAA1J,EAAA,yDAASgD,EAAT,EAASA,OAAQjD,EAAjB,EAAiBA,QAAS4J,EAA1B,EAA0BA,cAC3C5J,EADiB,wDAEhBiJ,EAAOC,EAAUlJ,EAAQmJ,YAFT,SAGDV,EAAa,CAAEC,MAAOO,EAAKI,KAAMV,QAASM,EAAKY,WAAY5G,WAH1D,OAGhBuG,EAHgB,OAIhBM,EAAatB,OAAOiB,QAAMC,YAAYF,IAE5CI,EAAc,GAAD,QADOE,EAAU,KAAqB,KACvBpE,QAAQ,GAAvB,OANS,4CAAH,sDASfqE,EAAgB,uCAAG,+BAAA9J,EAAA,6DAAS+J,EAAT,EAASA,eAAT,SACA9E,IADA,gDACiB,EADjB,OACjB+E,EADiB,KAEvBD,EAAeC,GAFQ,2CAAH,sDAKhBC,EAAc,uCAAG,mCAAAjK,EAAA,6DAASkK,EAAT,EAASA,aAAcC,EAAvB,EAAuBA,aAAvB,SACDpF,EAAW,CAAEb,OAAQ,SAAUC,GAAI,SADlC,OACfG,EADe,OAEf8F,EAAOjF,EAAU,KAAiBb,GACxC4F,EAAa,IAAD,OAAK5F,EAAMmB,QAAQ,KAC/B0E,EAAaC,GAJQ,2CAAH,sDAOdC,EAAa,uCAAG,yCAAArK,EAAA,6DAASsK,EAAT,EAASA,iBAAkBC,EAA3B,EAA2BA,iBAA3B,SACErF,IADF,gDACoB,CAAEsF,MAAO,EAAGC,MAAO,GADvC,QAChBC,EADgB,MAEND,QACZC,EAASD,MAAQ,IAEW,kBAAnBC,EAASD,OAAsBC,EAASD,iBAAiBE,UAClED,EAASD,MAAQlC,OAAOmC,EAASD,OAAS,MAG5CH,EAAgB,oBAACI,EAASF,aAAV,aAAC,EAAgB/E,QAAQ,UAAzB,QAA+B,GAC/C8E,EAAgB,oBAACG,EAASD,aAAV,aAAC,EAAgBhF,QAAQ,UAAzB,QAA+B,GAV3B,4CAAH,sDA+DJmF,GAlDS,SAAC,GAAkB,IAAD,EAAfC,EAAe,EAAfA,SAAe,EACJ3H,mBAAS,GADL,mBACjC4H,EADiC,KACrBC,EADqB,OAEN7H,mBAAS,GAFH,mBAEjC2E,EAFiC,KAEtBD,EAFsB,OAGR1E,mBAAS,CAAEkG,KAAM,EAAGE,KAAM,IAHlB,mBAGjC0B,EAHiC,KAGvBjC,EAHuB,OAIJ7F,mBAAS,GAJL,mBAIjC2G,EAJiC,KAIrBF,EAJqB,OAKFzG,mBAAS,GALP,mBAKjC+H,EALiC,KAKpBlB,EALoB,OAMN7G,mBAAS,GANH,mBAMjCgI,EANiC,KAMtBhB,EANsB,OAONhH,mBAAS,GAPH,mBAOjCiI,EAPiC,KAOtBhB,EAPsB,OAQEjH,mBAAS,GARX,mBAQjCkI,EARiC,KAQlBd,EARkB,OASEpH,mBAAS,GATX,mBASjCmI,EATiC,KASlBd,EATkB,OAUZrH,mBAAS,IAVG,mBAUjCzC,EAViC,KAUzB6K,GAVyB,QAWI7I,IAApCC,GAXgC,GAWhCA,SAAUM,GAXsB,GAWtBA,OAAQjD,GAXc,GAWdA,QAASsD,GAXK,GAWLA,KAkBnC,OAhBQ,OAARX,SAAQ,IAARA,IAAA,UAAAA,GAAUA,gBAAV,SAAoB6I,GAAG,gBAAgB,kBAAMzI,OAAO0I,SAASC,YAE7DlI,qBAAU,WACRzD,YAAUC,IAAS0D,MAAK,SAAChD,GAAD,OAAY6K,GAAU7K,QAC7C,CAACV,KAEJwD,qBAAU,WACRwH,EAActK,EAAO4H,QAAO,SAAApC,GAAK,MAAqB,WAAjBA,EAAMqC,UAAqBrB,QAChEU,EAAe,CAAElH,SAAQ4C,QAAMtD,WAAS6H,iBACxCkB,EAAqB,CAAE9F,UAAQjD,WAASgJ,gBACxCW,EAAgB,CAAE1G,UAAQjD,WAAS4J,kBACnCG,EAAiB,CAAEC,mBACnBE,EAAe,CAAEC,eAAcC,iBAC/BE,EAAc,CAAEC,mBAAkBC,uBACjC,CAAC9J,IAGF,cAACgH,EAAciE,SAAf,CACEC,MAAO,CACLlL,SACAqK,aACAjD,YACAmD,WACAI,gBACAC,gBACAxB,aACAoB,cACAC,YACAC,YACApL,YAZJ,SAeG8K,K,4BCvIDe,GAAU,CACdC,MAAO,OACPC,MAAO,OACPC,GAAI,UAEJC,MAAO,CAAC,UAAW,WACnBC,KAAM,CAAC,UAAW,WAElBC,MAAO,CAAC,OAAQ,OAAQ,S,kjCCJ1B,IAAMC,GAAMC,KAAOC,IAAV,MAUHC,GAAaF,KAAOG,IAAV,MAKVC,GAAUJ,KAAOK,IAAV,MAMPC,GAAUN,KAAOG,IAAV,MAMPI,GAAUP,aAAOM,GAAPN,CAAH,MAEPQ,GAASR,KAAOpM,EAAV,KAGI4L,GAAQI,MAAM,GACnBJ,GAAQC,MAQKD,GAAQI,MAAM,GAIdJ,GAAQE,O,SC3CjB,SAASe,KAAU,IACtBzI,EAAM0I,eAAN1I,EACHrE,EAAYgN,qBAAWtF,GAAvB1H,QACFiN,EAAU7K,aAAgBpC,GAE7B,OACF,eAACoM,GAAD,WACC,eAACG,GAAD,WACC,cAACE,GAAD,CAASS,IAAI,mBACT,cAACN,GAAD,CAASO,KAAK,kCAAd,0BAEL,cAACZ,GAAD,UACC,cAACM,GAAD,CAAQM,KAAMF,EAASG,OAAO,SAASC,IAAI,aAA3C,SAAyDhJ,EAAE,oB,84CCd/D,IAAMiJ,GAAUjB,KAAOC,IAAV,MAUPiB,GAAOlB,KAAOpM,EAAV,KAEA4L,GAAQE,OAOZyB,GAASnB,KAAOG,IAAV,KAKSX,GAAQK,KAAK,GACbL,GAAQK,KAAK,IAmB5BuB,GAAapB,KAAOG,IAAV,KAGNX,GAAQK,KAAK,GAEpBsB,GAIAA,IAKGE,GAAcrB,KAAOG,IAAV,KAKdgB,GAMAA,ICtEY,SAASG,GAAT,GAA4C,IAAtBC,EAAqB,EAArBA,KAAMhC,EAAe,EAAfA,MAAOiC,EAAQ,EAARA,KACjD,OACC,eAACL,GAAD,CAAQM,UAAU,KAAlB,UACC,cAACJ,GAAD,UAAc9B,IACd,cAAC6B,GAAD,UACC,cAACF,GAAD,CAAMJ,KAAMU,EAAMT,OAAO,SAASC,IAAI,aAAtC,SACEO,SCKSG,OAPf,YAAoC,IAATF,EAAQ,EAARA,KAClB/F,EAAckF,qBAAWtF,GAAzBI,UACAzD,EAAM0I,eAAN1I,EAER,OAAO,cAACsJ,GAAD,CAAYC,KAAMvJ,EAAE,oBAAqBuH,MAAOxG,EAAUoD,OAAOV,IAAa+F,KAAMA,KCC7EG,OAPf,YAAqD,IAA3BtF,EAA0B,EAA1BA,MAAOuF,EAAmB,EAAnBA,UAAWJ,EAAQ,EAARA,KACnC5C,EAAa+B,qBAAWtF,GAAxBuD,SACA5G,EAAM0I,eAAN1I,EAEP,OAAO,cAACsJ,GAAD,CAAYC,KAAMvJ,EAAE,kBAAmB,CAAEqE,MAAOuF,IAAcrC,MAAOX,EAASvC,GAAQmF,KAAMA,KCEtFK,OANf,YAAgD,IAAvBN,EAAsB,EAAtBA,KAAMO,EAAgB,EAAhBA,OAAQN,EAAQ,EAARA,KAChCO,EAAUpB,qBAAWtF,GAE3B,OAAO,cAACiG,GAAD,CAAYC,KAAMA,EAAMhC,MAAK,UAAKwC,EAAQD,IAAWN,KAAMA,KCOpD,SAASf,KAAU,IACzBzI,EAAM0I,eAAN1I,EACArE,EAAYgN,qBAAWtF,GAAvB1H,QACFiN,EAAU7K,aAAgBpC,GAC1BqO,EAAa7L,aAAmBxC,GAChCsO,EAAe/L,aAAqBvC,GACpCuO,EAAoBjM,aAA0BtC,GAC9CwO,EAAU/L,aAAgBzC,GAEhC,OACC,eAACsN,GAAD,WACC,cAAC,GAAD,CAAiBO,KAAMZ,IACvB,cAAC,GAAD,CACCW,KAAMvJ,EAAE,uBACR8J,OAAO,aACPN,KAAMZ,IAEM,KAAZjN,EACA,cAAC,GAAD,CACC4N,KAAMvJ,EAAE,uBACR8J,OAAO,gBACPN,KAAK,qIACD,GACO,KAAZ7N,EACA,cAAC,GAAD,CACC4N,KAAMvJ,EAAE,uBACR8J,OAAO,gBACPN,KAAK,qIACD,GACN,cAAC,GAAD,CACCD,KAAMvJ,EAAE,qBACR8J,OAAO,aACPN,KAAMQ,IAEM,KAAZrO,EACA,cAAC,GAAD,CACC4N,KAAMvJ,EAAE,sBACR8J,OAAO,gBACH,GACN,cAAC,GAAD,CACCzF,MAAM,OACNuF,UAAU,OACVJ,KAAMS,IAEP,cAAC,GAAD,CACC5F,MAAM,OACNuF,UAAWM,EACXV,KAAMS,IAEP,cAAC,GAAD,CACCV,KAAMvJ,EAAE,oBACR8J,OAAO,YACPN,KAAMW,IAEP,cAAC,GAAD,CACCZ,KAAMvJ,EAAE,oBACR8J,OAAO,YACPN,KAAK,2D,moCCpET,ICOIY,GACA9L,GDRE+L,GAAiBrC,KAAOC,IAAV,MAKdqC,GAAQtC,KAAOG,IAAV,MAQLoC,GAAYvC,KAAOG,IAAV,KAIOX,GAAQI,MAAM,GACzBJ,GAAQC,OAIb+C,GAAYxC,KAAOG,IAAV,KAEJX,GAAQE,OAGb+C,GAAWzC,KAAOG,IAAV,KAGVqC,GACoBhD,GAAQG,IAI1B+C,GAAY1C,KAAOG,IAAV,MAMTwC,GAAkB3C,KAAOpM,EAAV,KAEV4L,GAAQE,OAObkD,GAAc5C,KAAO6C,KAAV,MEtCF,SAASC,KAAc,IAAD,EACPnC,qBAAWtF,GAA/BhH,EAD2B,EAC3BA,OAAQV,EADmB,EACnBA,QACRqE,EAAM0I,eAAN1I,EACF+K,EAAe1O,EAAO2O,MAAK,SAACpP,EAAGqP,GAAJ,OAAU9G,OAAO8G,EAAEjK,KAAOmD,OAAOvI,EAAEoF,QAC9D4H,EAAU7K,aAAgBpC,GAC1BuP,EAAelN,aAAqBrC,GAE1C,OACE,cAAC0O,GAAD,UACE,eAACC,GAAD,WACE,cAACC,GAAD,UACE,eAACE,GAAD,WACE,cAACC,GAAD,UAAY1K,EAAE,wBACd,cAAC0K,GAAD,UAAY1K,EAAE,0BACd,cAAC0K,GAAD,uBAGJ,cAACF,GAAD,UACGO,EAAatI,KAAI,SAAC0I,GAAD,OAChB,eAACV,GAAD,WACE,eAACC,GAAD,WACE,cAACC,GAAD,CAAiB7B,KAAI,UAAKF,EAAL,kBAAsBuC,EAAIpL,IAAMgJ,OAAO,SAC3CC,IAAI,aADrB,SACmCmC,EAAI5B,OACvC,wCAAS4B,EAAIC,iBAAb,cAAmCD,EAAIE,eAEzC,cAACX,GAAD,UACE,cAACC,GAAD,CAAiB7B,KAAI,UAAKoC,EAAL,oBAA6BC,EAAIrH,qBACrCiF,OAAO,SACPC,IAAI,aAFrB,SAEmCmC,EAAIrH,wBAEzC,cAAC4G,GAAD,UACE,cAACE,GAAD,UAAc7J,EAAUoK,EAAInK,WAZjBmK,EAAIpL,cDrB/B,IAAMuL,GAAkB,CACvBC,cAAe,CACZC,QAASC,IACTC,QAAS,CACPC,IAAK,CACHhP,GAAI,mCACJC,IAAK,qCACLC,IAAK,qCACLC,IAAK,wBACLC,MAAO,wCACPC,QAAY,0BACZC,MAAO,+BACPC,MAAO,yBACPC,KAAM,yCACNC,GAAI,gCACJC,IAAK,sBACLC,KAAM,yCACNC,WAAY,6BACZC,KAAM,uCAMRoO,GAAM,uCAAG,sBAAAhQ,EAAA,0DACT8C,OAAOC,SADE,uBAEXD,OAAOO,KAAO,IAAIC,IAAKR,OAAOC,UAC9BD,OAAOC,SAASkN,SAHL,mBAIJ,GAJI,uBAQTzB,GAAY,IAAI0B,IAAU,CACxBC,eAAe,EACfT,mBACAU,yBAAyB,IAXlB,UAcQ5B,GAAU6B,UAdlB,eAcT3N,GAdS,OAeTI,OAAOO,KAAO,IAAIC,IAAKZ,IAfd,mBAiBF,GAjBE,kCAmBTzC,QAAQY,MAAR,MAnBS,kCAuBN,GAvBM,0DAAH,qDAgDGyP,OAtBf,WAcC,OAbA/M,qBAAU,YACO,uCAAG,sBAAAvD,EAAA,sEACKgQ,KADL,wCAIjBO,MAAM,yBAJW,8DAAH,qDAShBC,KACE,IAGF,eAAC,GAAD,WACC,cAAC3D,GAAD,IACA,cAAC,GAAD,IACA,cAAC,GAAD,QEtEY4D,GAZS,SAAAC,GAClBA,GAAeA,aAAuBC,UACxC,8BAAqBlN,MAAK,YAAkD,IAA/CmN,EAA8C,EAA9CA,OAAQC,EAAsC,EAAtCA,OAAQC,EAA8B,EAA9BA,OAAQC,EAAsB,EAAtBA,OAAQC,EAAc,EAAdA,QAC3DJ,EAAOF,GACPG,EAAOH,GACPI,EAAOJ,GACPK,EAAOL,GACPM,EAAQN,O,8BCARO,GAAY,CAChBC,GAAI,CAAEC,Y,QACNC,GAAI,CAAED,Y,SAIRE,KAIGC,IAAIC,MAEJD,IAAIE,MAGJC,KAAK,CACJR,aACAS,YAAa,KAEbC,cAAe,CACbC,aAAa,KAIJP,GAAf,ECvBAQ,IAASC,OACP,cAAC,IAAMC,WAAP,UACE,cAAC,GAAD,MAEFC,SAASC,eAAe,SAM1BxB,O","file":"static/js/main.202e5c5c.chunk.js","sourcesContent":["import axios from \"axios\";\nimport {getChainVaultEndpoint} from './chainHelpers';\n\nconst getVaults = async (chainId) => {\n console.log(\"get vaults on chain \", chainId);\n if (!chainId) return [];\n try {\n const vaultEndpoint = getChainVaultEndpoint(chainId);\n const response = await axios.get(vaultEndpoint);\n const data = response.data;\n let vaults = \"[\" + data.substring(data.indexOf(\"\\n\") + 1);\n vaults = eval(vaults);\n return vaults;\n } catch (err) {\n console.error(err);\n return [];\n }\n};\n\nexport { getVaults };\n","const vaultEndpoints = {\n\t56: 'https://raw.githubusercontent.com/beefyfinance/beefy-app/prod/src/features/configure/vault/bsc_pools.js',\n\t128: 'https://raw.githubusercontent.com/beefyfinance/beefy-app/prod/src/features/configure/vault/heco_pools.js',\n\t137: 'https://raw.githubusercontent.com/beefyfinance/beefy-app/prod/src/features/configure/vault/polygon_pools.js',\n\t250: 'https://raw.githubusercontent.com/beefyfinance/beefy-app/prod/src/features/configure/vault/fantom_pools.js',\n\t43114: 'https://raw.githubusercontent.com/beefyfinance/beefy-app/prod/src/features/configure/vault/avalanche_pools.js',\n\t1666600000: 'https://raw.githubusercontent.com/beefyfinance/beefy-app/prod/src/features/configure/vault/harmony_pools.js',\n\t42161: 'https://raw.githubusercontent.com/beefyfinance/beefy-app/prod/src/features/configure/vault/arbitrum_pools.js',\n\t42220: 'https://raw.githubusercontent.com/beefyfinance/beefy-app/prod/src/features/configure/vault/celo_pools.js',\n\t1285: 'https://raw.githubusercontent.com/beefyfinance/beefy-app/prod/src/features/configure/vault/moonriver_pools.js',\n\t25: 'https://raw.githubusercontent.com/beefyfinance/beefy-app/prod/src/features/configure/vault/cronos_pools.js',\n\t122: 'https://raw.githubusercontent.com/beefyfinance/beefy-app/prod/src/features/configure/vault/fuse_pools.js',\n\t1088: 'https://raw.githubusercontent.com/beefyfinance/beefy-app/prod/src/features/configure/vault/metis_pools.js',\n\t1313161554: 'https://raw.githubusercontent.com/beefyfinance/beefy-app/prod/src/features/configure/vault/aurora_pools.js',\n\t1284: 'https://raw.githubusercontent.com/beefyfinance/beefy-app/prod/src/features/configure/vault/moonbeam_pools.js',\n};\n\nconst apps = {\n\t56: 'https://app.beefy.finance/#/bsc',\n\t128: 'https://app.beefy.finance/#/heco',\n\t137: 'https://app.beefy.finance/#/polygon',\n\t250: 'https://app.beefy.finance/#/fantom',\n\t43114: 'https://app.beefy.finance/#/avax',\n\t1666600000: 'https://app.beefy.finance/#/harmony',\n\t42161: 'https://app.beefy.finance/#/arbitrum',\n\t42220: 'https://app.beefy.finance/#/celo',\n\t1285: 'https://app.beefy.finance/#/moonriver',\n\t25: 'https://app.beefy.finance/#/cronos',\n\t122: 'https://app.beefy.finance/#/fuse',\n\t1088: 'https://app.beefy.finance/#/metis',\n\t1313161554: 'https://app.beefy.finance/#/aurora',\n\t1284: 'https://app.beefy.finance/#/moonbeam',\n};\n\nconst explorers = {\n\t56: 'https://bscscan.com',\n\t128: 'https://hecoinfo.com/',\n\t137: 'https://polygonscan.com',\n\t250: 'https://ftmscan.com',\n\t43114: 'https://snowtrace.io',\n\t1666600000: 'https://explorer.harmony.one',\n\t42161: 'https://arbiscan.io',\n\t42220: 'https://explorer.celo.org',\n\t1285: 'https://moonriver.moonscan.io',\n\t25: 'https://cronoscan.com/',\n\t122: 'https://explorer.fuse.io/',\n\t1088: 'https://andromeda-explorer.metis.io/',\n\t1313161554: 'https://explorer.mainnet.aurora.dev/',\n\t1284: 'https://moonscan.io/'\n};\n\nconst rewardTokens = {\n\t56: 'BNB',\n\t128: 'HT',\n\t137: 'MATIC',\n\t250: 'FTM',\n\t43114: 'AVAX',\n\t1666600000: 'ONE',\n\t42161: 'ETH',\n\t42220: 'CELO',\n\t1285: 'MOVR',\n\t25: 'CRO',\n\t122: 'FUSE',\n\t1088: 'METIS',\n\t1313161554: 'ETH',\n\t1284: 'GLMR',\n};\n\nconst treasuryLinks = {\n\t56: 'https://bscscan.com/address/0x4a32de8c248533c28904b24b4cfcfe18e9f2ad01',\n\t128: 'https://hecoinfo.com/address/0xf4859A3f36fBcA24BF8299bf56359fB441b03034',\n\t137: 'https://polygonscan.com/address/0x09EF0e7b555599A9F810789FfF68Db8DBF4c51a0',\n\t250: 'https://ftmscan.com/address/0xe6CcE165Aa3e52B2cC55F17b1dBC6A8fe5D66610',\n\t43114: 'https://snowtrace.io/address/0xA3e3Af161943CfB3941B631676134bb048739727',\n\t1666600000: 'https://explorer.harmony.one/address/0xadb9ddfa24e326dc9d337561f6c7ba2a6ecec697',\n\t42161: 'https://arbiscan.io/address/0xc3a4fdcba79DB04b4C3e352b1C467B3Ba909D84A',\n\t42220: 'https://explorer.celo.org/address/0xd9F2Da642FAA1307e4F70a5E3aC31b9bfe920eAF',\n\t1285: 'https://moonriver.moonscan.io/address/0xB6Fb58eea08b5539f371A744bb9Ef86283F1B3c2',\n\t25: 'https://cronoscan.com/address/0x3f385082Ee3dFf58ca0a6a7fe44Ea0B5d6b4168E',\n\t122: 'https://explorer.fuse.io/address/0x922f8807E781739DDefEe51df990457B522cBCf5',\n\t1088: 'https://andromeda-explorer.metis.io/address/0x0f9602B7E7146a9BaE16dB948281BebDb7C2D095/',\n\t1313161554: 'https://explorer.mainnet.aurora.dev/address/0x8c2d54BA94f4638f1bb91f623F378B66d6023324/',\n\t1284: 'https://moonscan.io/address/0x3E7F60B442CEAE0FE5e48e07EB85Cfb1Ed60e81A',\n\n};\n\nconst stakedLinks = {\n\t56: 'https://bscscan.com/token/0xCa3F508B8e4Dd382eE878A314789373D80A5190A?a=0x453D4Ba9a2D594314DF88564248497F7D74d6b2C',\n\t128: 'https://hecoinfo.com/token/0x765277eebeca2e31912c9946eae1021199b39c61?a=0x5f7347fedfD0b374e8CE8ed19Fc839F59FB59a3B',\n\t137: 'https://polygonscan.com/token/0xfbdd194376de19a88118e84e279b977f165d01b8?a=0xDeB0a777ba6f59C78c654B8c92F80238c8002DD2',\n\t250: 'https://ftmscan.com/token/0xd6070ae98b8069de6b494332d1a1a81b6179d960?a=0x7fB900C14c9889A559C777D016a885995cE759Ee',\n\t43114: 'https://snowtrace.io/token/0xd6070ae98b8069de6b494332d1a1a81b6179d960?a=0x86d38c6b6313c5A3021D68D1F57CF5e69197592A',\n\t1666600000: 'https://explorer.harmony.one/address/0x6ab6d61428fde76768d7b45d8bfeec19c6ef91a8?activeTab=0',\n\t42161: 'https://arbiscan.io/token/0x99c409e5f62e4bd2ac142f17cafb6810b8f0baae?a=0x48f4634c8383af01bf71aefbc125eb582eb3c74d',\n\t42220: 'https://explorer.celo.org/address/0x2D250016E3621CfC50A0ff7e5f6E34bbC6bfE50E/tokens',\n\t1285: 'https://moonriver.moonscan.io/token/0x173fd7434B8B50dF08e3298f173487ebDB35FD14?a=0x4Aabd0d73181325DD1609Ce696eF048702DE7153',\n\t25: 'https://cronos.crypto.org/explorer/address/0x107Dbf9c9C0EF2Df114159e5C7DC2baf7C444cFF',\n\t122: 'https://explorer.fuse.io/address/0x107Dbf9c9C0EF2Df114159e5C7DC2baf7C444cFF',\n\t1088: 'https://andromeda-explorer.metis.io/address/0x2a30C5e0d577108F694d2A96179cd73611Ee069b/',\n\t1313161554: 'https://explorer.mainnet.aurora.dev/address/0xE6ab45f5e93FA377D0c4cC097187Ab7256c2AEBf/',\n\t1284: 'https://moonscan.io/address/0x1198f78efd67DFc917510aaA07d49545f4B24f11',\n};\n\nconst buyLinks = {\n\t56: 'https://app.1inch.io/#/r/0xF4cb25a1FF50E319c267b3E51CBeC2699FB2A43B',\n\t128: 'https://ht.mdex.com/#/swap?inputCurrency=0xa71edc38d189767582c38a3145b5873052c3e47a&outputCurrency=0x765277eebeca2e31912c9946eae1021199b39c61',\n\t137: 'https://app.1inch.io/#/r/0xF4cb25a1FF50E319c267b3E51CBeC2699FB2A43B',\n\t250: 'https://spookyswap.finance/swap?inputCurrency=0x04068da6c83afcfa0e13ba15a6696662335d5b75&outputCurrency=0xd6070ae98b8069de6B494332d1A1a81B6179D960',\n\t43114: 'https://app.1inch.io/#/r/0xF4cb25a1FF50E319c267b3E51CBeC2699FB2A43B',\n\t1666600000: 'https://app.sushi.com/swap?inputCurrency=ETH&outputCurrency=0x6ab6d61428fde76768d7b45d8bfeec19c6ef91a8',\n\t42161: 'https://app.sushi.com/swap?inputCurrency=ETH&outputCurrency=0x99C409E5f62E4bd2AC142f17caFb6810B8F0BAAE',\n\t42220: 'https://app.sushi.com/swap?inputCurrency=ETH&outputCurrency=0x639A647fbe20b6c8ac19E48E2de44ea792c62c5C',\n\t1285: 'https://app.sushi.com/swap?inputCurrency=ETH&outputCurrency=0x173fd7434B8B50dF08e3298f173487ebDB35FD14',\n\t25: 'https://multichain.xyz/',\n\t122: 'https://app.fuse.fi/#/swap',\n\t1088: 'https://netswap.io/#/swap?inputCurrency=0xe6801928061cdbe32ac5ad0634427e140efd05f9',\n\t1313161554: '',\n\t1284: 'https://app.beamswap.io/exchange/swap?inputCurrency=0x595c8481c48894771ce8fade54ac6bf59093f9e8&outputCurrency=0xacc15dc74880c9944775448304b263d191c6077f'\n};\n\nexport function getChainAppLink(chainId) {\n\treturn apps[chainId];\n}\n\nexport function getChainExplorerLink(chainId) {\n\treturn explorers[chainId];\n}\n\nexport function getChainRewardTokenSymbol(chainId) {\n\treturn rewardTokens[chainId];\n}\n\nexport function getChainTreasuryLink(chainId) {\n\treturn treasuryLinks[chainId];\n}\n\nexport function getChainStakedLink(chainId) {\n\treturn stakedLinks[chainId];\n}\n\nexport function getChainBuyLink(chainId) {\n\treturn buyLinks[chainId];\n}\n\nexport function getChainVaultEndpoint(chainId) {\n\treturn vaultEndpoints[chainId];\n}","import { ethers } from \"ethers\";\nimport { useEffect, useState } from \"react\";\nimport Web3 from \"web3\";\n\nexport function useWeb3() {\n // FIXME: is there a safer way to fetch the provider?\n const provider = new ethers.providers.Web3Provider(window.ethereum);\n const signer = provider.getSigner();\n const [chainId, setChainId] = useState(provider.network?.chainId);\n const web3 = new Web3(provider.provider);\n\n useEffect(() => {\n if (!chainId) {\n provider.getNetwork().then(network => {\n setChainId(network.chainId);\n });\n }\n });\n\n return { provider, signer, chainId, web3 };\n}\n\nexport default useWeb3;\n","export const apiCacheTime = () => Math.trunc(Date.now() / (15 * 60 * 1000));","import axios from \"axios\";\nimport { apiCacheTime } from \"./apiCacheTime\";\n\nconst endpoints = {\n coingecko: \"https://api.coingecko.com/api/v3/simple/price\",\n tokens: \"https://api.beefy.finance/prices\",\n lps: \"https://api.beefy.finance/lps\",\n};\n\nconst CACHE_TIMEOUT = 5 * 60 * 1000;\nconst cache = {};\n\nfunction isCached({ oracle, id }) {\n if (`${oracle}-${id}` in cache) {\n return cache[`${oracle}-${id}`].t + CACHE_TIMEOUT > Date.now();\n }\n return false;\n}\n\nfunction getCachedPrice({ oracle, id }) {\n return cache[`${oracle}-${id}`].price;\n}\n\nfunction addToCache({ oracle, id, price }) {\n cache[`${oracle}-${id}`] = { price: price, t: Date.now() };\n}\n\nconst fetchCoingecko = async id => {\n try {\n const response = await axios.get(endpoints.coingecko, {\n params: { ids: id, vs_currencies: \"usd\" },\n });\n return response.data[id].usd;\n } catch (err) {\n console.error(err);\n return 0;\n }\n};\n\nconst fetchTokens = async id => {\n try {\n const response = await axios.get(`https://api.beefy.finance/prices?_=${apiCacheTime()}`);\n return response.data[id];\n } catch (err) {\n console.error(err);\n return 0;\n }\n};\n\nconst fetchLP = async (id) => {\n try {\n const response = await axios.get(`https://api.beefy.finance/lps?_=${apiCacheTime()}`);\n return response.data[id];\n } catch (err) {\n console.error(err);\n return 0;\n }\n};\n\nexport const fetchPrice = async ({ oracle, id }) => {\n if (oracle === undefined) {\n console.error(\"Undefined oracle\");\n return 0;\n }\n if (id === undefined) {\n console.error(\"Undefined pair\");\n return 0;\n }\n\n if (isCached({ oracle, id })) {\n return getCachedPrice({ oracle, id });\n }\n\n let price = 0;\n switch (oracle) {\n case \"coingecko\":\n price = await fetchCoingecko(id);\n break;\n\n case \"tokens\":\n price = await fetchTokens(id);\n break;\n\n case 'lps':\n price = await fetchLP(id);\n break;\n\n default: price = 0;\n }\n\n addToCache({ oracle, id, price });\n return price;\n};\n","import axios from 'axios';\r\nimport { apiCacheTime } from \"./apiCacheTime\";\r\n\r\nconst getHolders = async () => {\r\n try {\r\n const response = await axios.get(`https://api.beefy.finance/holders?_=${apiCacheTime()}`);\r\n return response.data[\"holderCount\"];\r\n } catch (err) {\r\n console.error(err);\r\n return 0;\r\n }\r\n};\r\n\r\nexport { getHolders };","import axios from \"axios\";\nimport { apiCacheTime } from \"./apiCacheTime\";\n\nconst getEarnings = async () => {\n try {\n const response = await axios.get(`https://api.beefy.finance/earnings?_=${apiCacheTime()}`);\n return response.data;\n } catch (err) {\n console.error(err);\n return 0;\n }\n};\n\nexport { getEarnings };","export const formatTvl = (tvl) => {\n const order = Math.floor(Math.log10(tvl) / 3);\n if (order < 0) { return '$0.00'; }\n\n const units = ['', 'k', 'M', 'B', 'T'];\n const num = tvl / 1000 ** order;\n\n return `$ ${num.toFixed(2)}${units[order]}`;\n};","import { MultiCall } from \"eth-multicall\";\nimport BeefyVault from \"../abis/BeefyVault.json\";\nimport BigNumber from \"bignumber.js\";\nimport { fetchPrice } from \"./fetchPrice\";\n\nconst MULTICALLS = {\n 56: \"0xB94858b0bB5437498F5453A16039337e5Fdc269C\",\n 128: \"0x2776CF9B6E2Fa7B33A37139C3CB1ee362Ff0356e\",\n 137: \"0xC3821F0b56FA4F4794d5d760f94B812DE261361B\",\n 250: \"0xC9F6b1B53E056fd04bE5a197ce4B2423d456B982\",\n 43114: \"0x6FfF95AC47b586bDDEea244b3c2fe9c4B07b9F76\",\n 1666600000: \"0xBa5041B1c06e8c9cFb5dDB4b82BdC52E41EA5FC5\",\n 42161: \"0x13aD51a6664973EbD0749a7c84939d973F247921\",\n 42220: \"0xa9E6E271b27b20F65394914f8784B3B860dBd259\",\n 1285: \"0x55f46144bC62e9Af4bAdB71842B62162e2194E90\",\n 25: \"0x13aD51a6664973EbD0749a7c84939d973F247921\",\n 122: \"0xFE40f6eAD11099D91D51a945c145CFaD1DD15Bb8\",\n 1088: \"0x13C6bCC2411861A31dcDC2f990ddbe2325482222\",\n 1313161554: '0x1198f78efd67DFc917510aaA07d49545f4B24f11',\n 1284: '0xC9F6b1B53E056fd04bE5a197ce4B2423d456B982',\n};\n\nconst multicallAddress = (chainId) => MULTICALLS[chainId];\n\nexport const fetchVaultsTvl = async ({ vaults, web3, chainId }) => {\n try {\n const multicall = new MultiCall(web3, multicallAddress(chainId));\n const balanceCalls = [];\n vaults.forEach(vault => {\n const vaultContract = new web3.eth.Contract(BeefyVault, vault.earnedTokenAddress);\n balanceCalls.push({\n balance: vaultContract.methods.balance()\n });\n });\n const res = await multicall.all([balanceCalls]);\n const balances = res[0].map(v => new BigNumber(v.balance));\n\n for (let i = 0; i < vaults.length; i++) {\n const vault = vaults[i];\n const vaultBal = balances[i];\n\n let tokenPrice = 0;\n try {\n tokenPrice = await fetchPrice({ oracle: vault.oracle, id: vault.oracleId });\n } catch (err) {\n console.log(\"error fetching price tvl:\", vault.oracleId, vault.oracle);\n }\n\n let tvl = vaultBal.times(tokenPrice).dividedBy(10 ** (vault.tokenDecimals ?? 18));\n if (tvl.isNaN()) {\n tvl = new BigNumber(0);\n }\n vault.tvl = tvl.toFixed(2);\n }\n } catch (err) {\n console.log(\"error fetching vaults tvl\", err);\n }\n};\n","import { createContext, useState, useEffect } from \"react\";\r\nimport { ethers, utils } from \"ethers\";\r\n\r\nimport ERC20 from \"../../abis/ERC20.json\";\r\n\r\nimport addresses from \"../../data/addresses\";\r\n\r\nimport useWeb3 from \"../../hooks/useWeb3\";\r\nimport { fetchPrice } from \"../../utils/fetchPrice\";\r\nimport { getHolders } from \"../../utils/getHolders\";\r\nimport { getEarnings } from \"../../utils/getEarnings\";\r\nimport { formatTvl } from \"../../utils/format\";\r\nimport { getVaults } from \"../../utils/getVaults\";\r\nimport { fetchVaultsTvl } from \"../../utils/fetchChainVaults\";\r\n\r\nexport const VaultsContext = createContext(null);\r\n\r\nconst fetchGlobalTvl = async ({ vaults, web3, chainId, setGlobalTvl }) => {\r\n await fetchVaultsTvl({ vaults, web3, chainId });\r\n\r\n let globalTvl = 0;\r\n\r\n const isUniqueEarnContract = (pool, index, pools) => {\r\n const earnContractAddress = pool.earnContractAddress;\r\n return pools.findIndex(p => p.earnContractAddress === earnContractAddress) === index;\r\n };\r\n\r\n vaults\r\n .filter(p => p.status === \"active\")\r\n .filter(isUniqueEarnContract)\r\n .forEach(({ tvl }) => {\r\n globalTvl += Number(tvl);\r\n });\r\n\r\n setGlobalTvl(globalTvl);\r\n};\r\n\r\nconst fetchBalance = async ({ token, address, signer }) => {\r\n const contract = new ethers.Contract(token, ERC20, signer);\r\n return await contract.balanceOf(address);\r\n};\r\n\r\nconst fetchTreasuryBalance = async ({ signer, chainId, setTreasury }) => {\r\n if (!chainId) return;\r\n const addr = addresses[chainId.toString()];\r\n const values = await Promise.all([\r\n fetchBalance({ token: addr.BIFI, address: addr.Treasury, signer }),\r\n fetchBalance({ token: addr.WBNB, address: addr.Treasury, signer })\r\n ]);\r\n\r\n setTreasury({\r\n BIFI: Number(utils.formatEther(values[0])).toFixed(2),\r\n WBNB: Number(utils.formatEther(values[1])).toFixed(2)\r\n });\r\n};\r\n\r\nconst fetchStakedBifi = async ({ signer, chainId, setStakedBifi }) => {\r\n if (!chainId) return;\r\n const addr = addresses[chainId.toString()];\r\n const values = await fetchBalance({ token: addr.BIFI, address: addr.RewardPool, signer });\r\n const stakedBifi = Number(utils.formatEther(values));\r\n const percentage = (stakedBifi / (80000 - 4000)) * 100;\r\n setStakedBifi(`${percentage.toFixed(2)} %`);\r\n};\r\n\r\nconst fetchBifiHolders = async ({ setBifiHolders }) => {\r\n const holders = (await getHolders()) || 0;\r\n setBifiHolders(holders);\r\n};\r\n\r\nconst fetchBifiPrice = async ({ setBifiPrice, setMarketCap }) => {\r\n const price = await fetchPrice({ oracle: \"tokens\", id: \"BIFI\" });\r\n const mcap = formatTvl((80000 - 4000) * price);\r\n setBifiPrice(`$${price.toFixed(2)}`);\r\n setMarketCap(mcap);\r\n};\r\n\r\nconst fetchEarnings = async ({ setDailyEarnings, setTotalEarnings }) => {\r\n let earnings = (await getEarnings()) || { daily: 0, total: 0 };\r\n if (!earnings.total) {\r\n earnings.total = 0;\r\n }\r\n if (typeof earnings.total === \"string\" || earnings.total instanceof String) {\r\n earnings.total = Number(earnings.total) / 1e18;\r\n }\r\n\r\n setDailyEarnings(earnings.daily?.toFixed(2) ?? 0);\r\n setTotalEarnings(earnings.total?.toFixed(2) ?? 0);\r\n};\r\n\r\nconst ContextProvider = ({ children }) => {\r\n const [vaultCount, setVaultCount] = useState(0);\r\n const [globalTvl, setGlobalTvl] = useState(0);\r\n const [treasury, setTreasury] = useState({ BIFI: 0, WBNB: 0 });\r\n const [stakedBifi, setStakedBifi] = useState(0);\r\n const [bifiHolders, setBifiHolders] = useState(0);\r\n const [bifiPrice, setBifiPrice] = useState(0);\r\n const [marketCap, setMarketCap] = useState(0);\r\n const [dailyEarnings, setDailyEarnings] = useState(0);\r\n const [totalEarnings, setTotalEarnings] = useState(0);\r\n const [vaults, setVaults] = useState([]);\r\n const { provider, signer, chainId, web3 } = useWeb3();\r\n\r\n provider?.provider?.on(\"chainChanged\", () => window.location.reload());\r\n\r\n useEffect(() => {\r\n getVaults(chainId).then((vaults) => setVaults(vaults));\r\n }, [chainId]);\r\n\r\n useEffect(() => {\r\n setVaultCount(vaults.filter(vault => vault.status === \"active\").length);\r\n fetchGlobalTvl({ vaults, web3, chainId, setGlobalTvl });\r\n fetchTreasuryBalance({ signer, chainId, setTreasury });\r\n fetchStakedBifi({ signer, chainId, setStakedBifi });\r\n fetchBifiHolders({ setBifiHolders });\r\n fetchBifiPrice({ setBifiPrice, setMarketCap });\r\n fetchEarnings({ setDailyEarnings, setTotalEarnings });\r\n }, [vaults]);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport default ContextProvider;\r\n","const Palette = {\n white: '#fff',\n black: '#000',\n bg: '#F9F3EB',\n\n green: ['#5A8F69', '#4B7958'],\n gray: ['#FBF6F0', '#DED9D5'],\n\n debug: ['#f0f', '#ff0', '#0ff'],\n};\n\nexport { Palette };\n","import styled from 'styled-components';\n\nimport { Palette } from '../../constants/Palette';\n\nconst Nav = styled.nav`\n display: flex;\n align-content: center;\n justify-content: space-between;\n width: 80%;\n max-width: 80rem;\n margin: 0 auto;\n padding: 1rem 0 1.5rem;\n`;\n\nconst NavSection = styled.div`\n display: flex;\n align-items: self-end;\n`;\n\nconst NavLogo = styled.img`\n width: 4rem;\n min-height: 3rem;\n margin-right: 2rem;\n`;\n\nconst NavItem = styled.div`\n font-weight: 900;\n font-size: 1.4rem;\n text-decoration: none;\n`;\n\nconst NavName = styled(NavItem)``;\n\nconst NavBtn = styled.a`\n cursor: pointer;\n padding: .5rem 1.5rem;\n background: ${Palette.green[0]};\n color: ${Palette.white};\n border-radius: 2rem;\n font-weight: 700;\n font-size: 1rem;\n text-decoration: none !important;\n outline: none;\n\n &:hover {\n background-color: ${Palette.green[1]};\n }\n\n &:active {\n background-color: ${Palette.black};\n }\n`;\n\nexport {\n Nav,\n NavSection,\n NavItem,\n NavLogo,\n NavName,\n NavBtn\n};\n","import React, {useContext} from 'react';\nimport {useTranslation} from 'react-i18next';\nimport {Nav, NavBtn, NavLogo, NavName, NavSection} from './style';\nimport {VaultsContext} from '../Context/ContextProvider';\nimport {getChainAppLink} from '../../utils/chainHelpers';\n\nexport default function NavBar() {\n const { t } = useTranslation();\n\tconst { chainId } = useContext(VaultsContext);\n\tconst appLink = getChainAppLink(chainId);\n\n return (\n\t\t\n\t);\n}\n","import styled from 'styled-components';\n\nimport { Palette } from '../../constants/Palette';\n\nconst Metrics = styled.nav`\n\tposition: relative;\n\twidth: 80%;\n\tmax-width: 80rem;\n\tmargin-left: auto;\n\tmargin-right: auto;\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tpadding: 3rem 0;\n`;\nconst Link = styled.a`\n\ttext-decoration: none;\n\tcolor: ${Palette.black};\n\n\t&:hover {\n\t\ttext-decoration: underline;\n\t}\n`;\n\nconst Metric = styled.div`\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: left;\n\tuser-select: none;\n\tbackground-color: ${Palette.gray[0]};\n\tborder: 1px solid ${Palette.gray[1]};\n\n\tmin-width: 7rem;\n\tmargin: 0 1rem 1rem 0;\n\tpadding: 0.25rem 1rem 0.75rem 0.5rem;\n\n\t&.sm {\n\t\tmin-width: 5rem;\n\t\tmargin: 0 1rem 1rem 0;\n\t\tpadding: 0.5rem 0.5rem 0.75rem 0.5rem;\n\t}\n\n\t&.lg {\n\t\tmin-width: 10rem;\n\t\tmargin: 0 2rem 2rem 0;\n\t\tpadding: 1rem 2rem 1.5rem 1rem;\n\t}\n`;\n\nconst MetricName = styled.div`\n\tfont-size: 1rem;\n\tfont-weight: 400;\n\tcolor: ${Palette.gray[6]};\n\n\t${Metric}.sm & {\n\t\tfont-size: 0.9rem;\n\t}\n\n\t${Metric}.lg & {\n\t\tfont-size: 1.2rem;\n\t}\n`;\n\nconst MetricValue = styled.div`\n\tfont-weight: 700;\n\tfont-size: 2rem;\n\tmargin: 0.5rem 0;\n\n\t${Metric}.sm & {\n\t\tfont-size: 1.5rem;\n\t\tfont-weight: 400;\n\t\tmargin: 0.25rem 0 0.5rem;\n\t}\n\n\t${Metric}.lg & {\n\t\tfont-size: 3rem;\n\t}\n`;\n\nexport { Metrics, Metric, MetricName, MetricValue, Link };\n","import React from 'react';\nimport { Metric, MetricValue, MetricName, Link } from './style';\n\nexport default function BaseMetric({ name, value, link }) {\n\treturn (\n\t\t\n\t\t\t{value}\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{name}\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n}\n","import { useContext } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { VaultsContext } from '../Context/ContextProvider';\n\nimport BaseMetric from './BaseMetric';\nimport { formatTvl } from '../../utils/format';\n\nfunction GlobalTvlMetric({ link }) {\n\tconst { globalTvl } = useContext(VaultsContext);\n\tconst { t } = useTranslation();\n\n\treturn ;\n}\n\nexport default GlobalTvlMetric;\n","import { useContext } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { VaultsContext } from '../Context/ContextProvider';\nimport BaseMetric from './BaseMetric';\n\nfunction TreasuryMetric({ token, tokenName, link }) {\n\tconst { treasury } = useContext(VaultsContext);\n\tconst { t } = useTranslation();\n\n return ;\n}\n\nexport default TreasuryMetric;\n","import { useContext } from 'react';\nimport { VaultsContext } from '../Context/ContextProvider';\n\nimport BaseMetric from './BaseMetric';\n\nfunction GenericMetric({ name, metric, link }) {\n\tconst context = useContext(VaultsContext);\n\n\treturn ;\n}\n\nexport default GenericMetric;\n","import React, {useContext} from 'react';\r\nimport {useTranslation} from 'react-i18next';\r\nimport {Metrics} from './style';\r\nimport GlobalTvlMetric from './GlobalTvlMetric';\r\nimport TreasuryMetric from './TreasuryMetric';\r\nimport GenericMetric from './GenericMetric';\r\nimport {VaultsContext} from '../Context/ContextProvider';\r\nimport {\r\n\tgetChainAppLink,\r\n\tgetChainBuyLink,\r\n\tgetChainRewardTokenSymbol,\r\n\tgetChainStakedLink,\r\n\tgetChainTreasuryLink,\r\n} from '../../utils/chainHelpers';\r\n\r\nexport default function NavBar() {\r\n\tconst { t } = useTranslation();\r\n\tconst { chainId } = useContext(VaultsContext);\r\n\tconst appLink = getChainAppLink(chainId);\r\n\tconst stakedLink = getChainStakedLink(chainId);\r\n\tconst treasuryLink = getChainTreasuryLink(chainId);\r\n\tconst rewardTokenSymbol = getChainRewardTokenSymbol(chainId);\r\n\tconst buyLink = getChainBuyLink(chainId);\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t{chainId === 56 ?\r\n\t\t\t\t : ''}\r\n\t\t\t{chainId === 56 ?\r\n\t\t\t\t : ''}\r\n\t\t\t\r\n\t\t\t{chainId === 56 ?\r\n\t\t\t\t : ''}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n}\r\n","import styled from 'styled-components';\n\nimport { Palette } from '../../constants/Palette';\n\nconst TableContainer = styled.nav`\n position: relative;\n padding: 0 0 4rem;\n`;\n\nconst Table = styled.div`\n display: table;\n width: 80%;\n max-width: 80rem;\n margin: 0 auto;\n border: none;\n`;\n\nconst TableHead = styled.div`\n display: table-header-group;\n position: sticky;\n top: 0;\n background-color: ${Palette.green[0]};\n color: ${Palette.white};\n font-weight: 700;\n`;\n\nconst TableBody = styled.div`\n display: table-row-group;\n color: ${Palette.black};\n`;\n\nconst TableRow = styled.div`\n display: table-row;\n\n ${TableBody} > &:hover {\n background-color: ${Palette.bg};\n }\n`;\n\nconst TableCell = styled.div`\n display: table-cell;\n padding: 1rem 2rem;\n border: none;\n`;\n\nconst ContractAddress = styled.a`\n text-decoration: none;\n color: ${Palette.black};\n\n &:hover {\n text-decoration: underline;\n }\n`;\n\nconst ContractTVL = styled.span`\n font-size: 1.1rem;\n`;\n\nexport {\n TableContainer,\n Table,\n TableHead,\n TableBody,\n TableRow,\n TableCell,\n ContractAddress,\n ContractTVL\n};\n","import {useEffect} from 'react';\n\nimport Web3 from 'web3';\nimport Web3Modal from 'web3modal';\nimport WalletConnectProvider from '@walletconnect/web3-provider';\n\nimport ContextProvider from './components/Context/ContextProvider';\nimport NavBar from './components/NavBar/NavBar';\nimport Metrics from './components/Metrics/Metrics';\nimport Vaults from './components/Vaults/Vaults';\n\nlet web3Modal\nlet provider;\n\nconst providerOptions = {\n\twalletconnect: {\n package: WalletConnectProvider,\n options: {\n rpc: {\n 56: 'https://bsc-dataseed.binance.org',\n 128: 'https://http-mainnet.hecochain.com',\n 137: 'https://rpc-mainnet.maticvigil.com',\n 250: 'https://rpc.ftm.tools',\n 43114: 'https://api.avax.network/ext/bc/C/rpc',\n 1666600000: 'https://api.harmony.one',\n 42161: 'https://arb1.arbitrum.io/rpc',\n 42220: 'https://forno.celo.org',\n 1285: 'https://rpc.moonriver.moonbeam.network',\n 25: 'https://evm-cronos.crypto.org',\n 122: 'https://rpc.fuse.io',\n 1088: 'https://andromeda.metis.io/?owner=1088',\n 1313161554: 'https://mainnet.aurora.dev',\n 1284: 'https://rpc.api.moonbeam.network'\n },\n },\n },\n};\n\nconst inject = async () => {\n if (window.ethereum) { \n window.web3 = new Web3(window.ethereum); \n window.ethereum.enable(); \n return true;\n \n } else { \n try {\n web3Modal = new Web3Modal({\n cacheProvider: true,\n providerOptions,\n disableInjectedProvider: false,\n });\n \n provider = await web3Modal.connect();\n window.web3 = new Web3(provider);\n \n return true;\n } catch (err) {\n console.error(err);\n }\n }\n\n return false;\n}\n\nfunction App() {\n\tuseEffect(() => {\n\t\tconst initialize = async () => {\n\t\t\tconst injected = await inject();\n\n\t\t\tif (!injected) {\n\t\t\t\talert(\"web3 object not found\");\n\t\t\t\treturn;\n\t\t\t}\t\t\t\n\t\t}\n\n\t\tinitialize();\n\t}, []);\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t);\n}\nexport default App;\n","import React, { useContext } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { VaultsContext } from \"../Context/ContextProvider\";\nimport { formatTvl } from \"../../utils/format\";\nimport {\n TableContainer,\n Table,\n TableHead,\n TableBody,\n TableRow,\n TableCell,\n ContractAddress,\n ContractTVL\n} from \"./style\";\nimport {getChainAppLink, getChainExplorerLink} from '../../utils/chainHelpers';\n\nexport default function BasicTable() {\n const { vaults, chainId } = useContext(VaultsContext);\n const { t } = useTranslation();\n const sortedVaults = vaults.sort((a, b) => Number(b.tvl) - Number(a.tvl));\n const appLink = getChainAppLink(chainId);\n const explorerLink = getChainExplorerLink(chainId);\n\n return (\n \n \n \n \n {t(\"VaultsColumn-Vault\")}\n {t(\"VaultsColumn-Address\")}\n TVL\n \n \n \n {sortedVaults.map((row) => (\n \n \n {row.name}\n
{`${row.tokenDescription} / ${row.platform}`}
\n
\n \n {row.earnContractAddress}\n \n \n {formatTvl(row.tvl)}\n \n
\n ))}\n
\n
\n
\n );\n}\n","const reportWebVitals = onPerfEntry => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import i18n from 'i18next';\nimport LanguageDetector from 'i18next-browser-languagedetector';\nimport { initReactI18next } from 'react-i18next';\n\nimport translationEN from './locales/en/translation.json';\nimport translationPT from './locales/pt/translation.json';\n\nconst resources = {\n en: { translation: translationEN },\n pt: { translation: translationPT },\n // TODO: more translations\n};\n\ni18n\n // load translation using http -> see /public/locales\n // detect user language\n // learn more: https://github.com/i18next/i18next-browser-languageDetector\n .use(LanguageDetector)\n // pass the i18n instance to react-i18next.\n .use(initReactI18next)\n // init i18next\n // for all options read: https://www.i18next.com/overview/configuration-options\n .init({\n resources,\n fallbackLng: 'en',\n\n interpolation: {\n escapeValue: false, // not needed for react as it escapes by default\n },\n });\n\nexport default i18n;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\n\nimport './i18n';\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}