gitextract_warb6kwy/ ├── .eslintignore ├── .github/ │ └── workflows/ │ ├── tests.yml │ └── translations.yml ├── .gitignore ├── .nycrc.json ├── .prettierrc ├── .vscode/ │ └── launch.json ├── LICENSE ├── README.md ├── api/ │ ├── rss.ts │ ├── stats.ts │ ├── tokenData.ts │ └── tsconfig.json ├── cypress/ │ ├── README.md │ ├── e2e/ │ │ └── E2E.spec.js │ ├── fixtures/ │ │ └── example.json │ ├── plugins/ │ │ └── index.js │ └── support/ │ ├── commands.js │ └── index.js ├── cypress.json ├── hardhat.config.js ├── i18next-scanner.config.js ├── package.json ├── public/ │ ├── index.html │ ├── manifest.json │ └── robots.txt ├── src/ │ ├── components/ │ │ ├── App.tsx │ │ ├── pages/ │ │ │ ├── ErrorPage.tsx │ │ │ ├── Fuse/ │ │ │ │ ├── FuseLiquidationsPage.tsx │ │ │ │ ├── FusePoolCreatePage.tsx │ │ │ │ ├── FusePoolEditPage.tsx │ │ │ │ ├── FusePoolInfoPage.tsx │ │ │ │ ├── FusePoolPage.tsx │ │ │ │ ├── FusePoolsPage.tsx │ │ │ │ ├── FuseStatsBar.tsx │ │ │ │ ├── FuseTabBar.tsx │ │ │ │ └── Modals/ │ │ │ │ ├── AddAssetModal/ │ │ │ │ │ ├── AddAssetModal.tsx │ │ │ │ │ ├── AssetConfig.tsx │ │ │ │ │ ├── AssetSettings.tsx │ │ │ │ │ ├── DeployButton.tsx │ │ │ │ │ ├── IRMChart.tsx │ │ │ │ │ ├── OracleConfig/ │ │ │ │ │ │ ├── BaseTokenOracleConfig.tsx │ │ │ │ │ │ ├── OracleConfig.tsx │ │ │ │ │ │ ├── UniswapV2OrSushiPriceOracleConfigurator.tsx │ │ │ │ │ │ └── UniswapV3PriceOracleConfigurator.tsx │ │ │ │ │ └── Screens/ │ │ │ │ │ ├── Screen1.tsx │ │ │ │ │ ├── Screen2.tsx │ │ │ │ │ └── Screen3.tsx │ │ │ │ ├── AddAssetModal.tsx │ │ │ │ ├── AddRewardsDistributorModal.tsx │ │ │ │ ├── Edit/ │ │ │ │ │ ├── AssetConfiguration.tsx │ │ │ │ │ ├── MarketCapConfigurator.tsx │ │ │ │ │ ├── OraclesTable.tsx │ │ │ │ │ └── PoolConfiguration.tsx │ │ │ │ ├── EditRewardsDistributorModal.tsx │ │ │ │ └── PoolModal/ │ │ │ │ ├── AmountSelect.tsx │ │ │ │ └── index.tsx │ │ │ ├── InterestRates/ │ │ │ │ ├── InterestRates.tsx │ │ │ │ ├── InterestRatesTable.tsx │ │ │ │ ├── InterestRatesView.tsx │ │ │ │ ├── MultiPicker.tsx │ │ │ │ └── TokenSearch.tsx │ │ │ ├── MultiPoolPortal.tsx │ │ │ ├── Pool2/ │ │ │ │ ├── Pool2Modal/ │ │ │ │ │ ├── AmountSelect.tsx │ │ │ │ │ ├── OptionsMenu.tsx │ │ │ │ │ └── index.tsx │ │ │ │ └── Pool2Page.tsx │ │ │ ├── PoolPortal.tsx │ │ │ ├── RariDepositModal/ │ │ │ │ ├── AmountSelect.tsx │ │ │ │ ├── OptionsMenu.tsx │ │ │ │ ├── TokenSelect.tsx │ │ │ │ └── index.tsx │ │ │ ├── Stats/ │ │ │ │ ├── StatsEarnSection.tsx │ │ │ │ ├── StatsFuseSection.tsx │ │ │ │ ├── StatsPage.tsx │ │ │ │ ├── StatsPool2Section.tsx │ │ │ │ ├── StatsSubNav.tsx │ │ │ │ ├── StatsTranchesSection.tsx │ │ │ │ ├── Totals/ │ │ │ │ │ ├── EarnRow.tsx │ │ │ │ │ ├── FuseRow.tsx │ │ │ │ │ ├── Pool2Row.tsx │ │ │ │ │ ├── StatsTotalSection.tsx │ │ │ │ │ └── TranchesRow.tsx │ │ │ │ └── index.ts │ │ │ └── Tranches/ │ │ │ ├── SaffronContext.tsx │ │ │ ├── SaffronDepositModal/ │ │ │ │ ├── AmountSelect.tsx │ │ │ │ └── index.tsx │ │ │ ├── SaffronPoolABI.json │ │ │ ├── SaffronStrategyABI.json │ │ │ └── TranchesPage.tsx │ │ └── shared/ │ │ ├── AccountButton.tsx │ │ ├── AdminAlert.tsx │ │ ├── CTokenIcon.tsx │ │ ├── CaptionedStat.tsx │ │ ├── ClaimRGTModal.tsx │ │ ├── CopyrightSpacer.tsx │ │ ├── CountdownBanner.tsx │ │ ├── DashboardBox.tsx │ │ ├── Footer.tsx │ │ ├── FullPageSpinner.test.tsx │ │ ├── FullPageSpinner.tsx │ │ ├── GlowingButton.tsx │ │ ├── Header.tsx │ │ ├── Layout.tsx │ │ ├── Logos.tsx │ │ ├── Modal.tsx │ │ ├── MovingStat.tsx │ │ ├── PoolsPerformance.tsx │ │ ├── ProgressBar.tsx │ │ ├── SimpleTooltip.tsx │ │ ├── SliderWithLabel.tsx │ │ ├── SwitchCSS.tsx │ │ ├── TransactionStepper.tsx │ │ └── TranslateButton.tsx │ ├── constants/ │ │ ├── homepage.ts │ │ ├── networks.ts │ │ ├── pools.ts │ │ ├── saffron.ts │ │ └── tokenData.ts │ ├── context/ │ │ ├── AddAssetContext.tsx │ │ ├── PoolContext.tsx │ │ └── RariContext.tsx │ ├── fuse-sdk/ │ │ ├── .browserslistrc │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── LICENSE │ │ ├── README.md │ │ ├── package.json │ │ ├── scripts/ │ │ │ └── minify-contracts.js │ │ ├── src/ │ │ │ ├── abi/ │ │ │ │ ├── FuseFeeDistributor.json │ │ │ │ ├── FusePoolDirectory.json │ │ │ │ ├── FusePoolLens.json │ │ │ │ ├── FusePoolLensSecondary.json │ │ │ │ ├── FuseSafeLiquidator.json │ │ │ │ ├── InitializableClones.json │ │ │ │ └── UniswapV3Pool.slim.json │ │ │ ├── contracts/ │ │ │ │ ├── compound-protocol.json │ │ │ │ ├── compound-protocol.min.json │ │ │ │ ├── open-oracle.json │ │ │ │ ├── open-oracle.min.json │ │ │ │ ├── oracles/ │ │ │ │ │ ├── AlphaHomoraV1PriceOracle.json │ │ │ │ │ ├── BalancerLpTokenPriceOracle.json │ │ │ │ │ ├── ChainlinkPriceOracle.json │ │ │ │ │ ├── CurveLpTokenPriceOracle.json │ │ │ │ │ ├── Keep3rPriceOracle.json │ │ │ │ │ ├── MasterPriceOracle.json │ │ │ │ │ ├── PreferredPriceOracle.json │ │ │ │ │ ├── RecursivePriceOracle.json │ │ │ │ │ ├── SynthetixPriceOracle.json │ │ │ │ │ ├── UniswapLpTokenPriceOracle.json │ │ │ │ │ ├── UniswapTwapPriceOracleV2Factory.json │ │ │ │ │ ├── UniswapV3TwapPriceOracleV2Factory.json │ │ │ │ │ ├── YVaultV1PriceOracle.json │ │ │ │ │ └── YVaultV2PriceOracle.json │ │ │ │ └── oracles.min.json │ │ │ ├── index.js │ │ │ └── irm/ │ │ │ ├── DAIInterestRateModelV2.js │ │ │ ├── JumpRateModel.js │ │ │ ├── JumpRateModelV2.js │ │ │ └── WhitePaperInterestRateModel.js │ │ ├── test/ │ │ │ ├── launch-pools.js │ │ │ ├── live-price-oracle.js │ │ │ ├── oracles.js │ │ │ ├── public-contracts.js │ │ │ ├── safe-liquidator.js │ │ │ └── update-interest-rate-models-v2.js │ │ └── webpack.config.js │ ├── hooks/ │ │ ├── fuse/ │ │ │ ├── useCTokenData.ts │ │ │ ├── useFusePools.ts │ │ │ ├── useFuseTVL.ts │ │ │ ├── useFuseTotalBorrowAndSupply.ts │ │ │ ├── useIRMCurves.ts │ │ │ ├── useLiquidationIncentive.ts │ │ │ ├── useOracleData.ts │ │ │ └── useOraclesForPool.ts │ │ ├── homepage/ │ │ │ └── useOpportunitySubtitle.ts │ │ ├── interestRates/ │ │ │ ├── aave/ │ │ │ │ ├── LendingPool.ts │ │ │ │ └── useReserves.ts │ │ │ ├── compound/ │ │ │ │ ├── CErc20.ts │ │ │ │ ├── contracts/ │ │ │ │ │ └── CErc20.json │ │ │ │ └── useCompoundMarkets.ts │ │ │ ├── fuse/ │ │ │ │ └── useFuseMarkets.ts │ │ │ └── types.ts │ │ ├── pool2/ │ │ │ ├── usePool2APR.ts │ │ │ ├── usePool2Balance.ts │ │ │ ├── usePool2TotalStaked.ts │ │ │ ├── usePool2UnclaimedRGT.ts │ │ │ └── useSushiswapRewards.ts │ │ ├── rewards/ │ │ │ ├── useClaimable.ts │ │ │ ├── usePoolIncentives.ts │ │ │ ├── useRewardAPY.ts │ │ │ ├── useRewardsDistributorsForPool.ts │ │ │ ├── useUnclaimedFuseRewards.ts │ │ │ └── useUnclaimedRGT.ts │ │ ├── tranches/ │ │ │ ├── useSFIDistributions.ts │ │ │ ├── useSFIEarnings.ts │ │ │ └── useSaffronData.ts │ │ ├── useAssetsMap.ts │ │ ├── useAuthedCallback.ts │ │ ├── useBorrowLimit.ts │ │ ├── useFusePoolData.ts │ │ ├── useIsSemiSmallScreen.tsx │ │ ├── useIsSmallScreen.tsx │ │ ├── useIsUpgradable.ts │ │ ├── useMaxWithdraw.ts │ │ ├── useMaybeResponsiveProp.ts │ │ ├── useNoSlippageCurrencies.ts │ │ ├── usePoolAPY.ts │ │ ├── usePoolBalance.ts │ │ ├── usePoolInfo.ts │ │ ├── usePoolInterest.ts │ │ ├── useRSS.ts │ │ ├── useTVL.ts │ │ ├── useTokenBalance.ts │ │ └── useTokenData.ts │ ├── index.css │ ├── index.tsx │ ├── locales/ │ │ ├── en.json │ │ ├── zh-CN.json │ │ └── zh-TW.json │ ├── rari-sdk/ │ │ ├── 0x.js │ │ ├── abi/ │ │ │ └── ERC20.json │ │ ├── cache.js │ │ ├── docs/ │ │ │ ├── governance.md │ │ │ └── pools/ │ │ │ ├── ethereum.md │ │ │ ├── stable.md │ │ │ └── yield.md │ │ ├── governance/ │ │ │ └── abi/ │ │ │ ├── RariGovernanceToken.json │ │ │ ├── RariGovernanceTokenDistributor.json │ │ │ ├── RariGovernanceTokenUniswapDistributor.json │ │ │ └── RariGovernanceTokenVesting.json │ │ ├── governance.js │ │ ├── index.js │ │ ├── package.json │ │ ├── pools/ │ │ │ ├── dai/ │ │ │ │ └── abi/ │ │ │ │ └── legacy/ │ │ │ │ └── v1.0.0/ │ │ │ │ ├── RariFundController.json │ │ │ │ └── RariFundProxy.json │ │ │ ├── dai.js │ │ │ ├── ethereum/ │ │ │ │ └── abi/ │ │ │ │ ├── RariFundController.json │ │ │ │ ├── RariFundManager.json │ │ │ │ ├── RariFundProxy.json │ │ │ │ ├── RariFundToken.json │ │ │ │ └── legacy/ │ │ │ │ └── v1.0.0/ │ │ │ │ └── RariFundController.json │ │ │ ├── ethereum.js │ │ │ ├── stable/ │ │ │ │ └── abi/ │ │ │ │ ├── RariFundController.json │ │ │ │ ├── RariFundManager.json │ │ │ │ ├── RariFundPriceConsumer.json │ │ │ │ ├── RariFundProxy.json │ │ │ │ ├── RariFundToken.json │ │ │ │ └── legacy/ │ │ │ │ ├── v1.0.0/ │ │ │ │ │ ├── RariFundManager.json │ │ │ │ │ ├── RariFundProxy.json │ │ │ │ │ └── RariFundToken.json │ │ │ │ ├── v1.1.0/ │ │ │ │ │ ├── RariFundController.json │ │ │ │ │ ├── RariFundManager.json │ │ │ │ │ └── RariFundProxy.json │ │ │ │ ├── v1.2.0/ │ │ │ │ │ └── RariFundProxy.json │ │ │ │ ├── v2.0.0/ │ │ │ │ │ ├── RariFundController.json │ │ │ │ │ ├── RariFundManager.json │ │ │ │ │ └── RariFundProxy.json │ │ │ │ ├── v2.2.0/ │ │ │ │ │ └── RariFundProxy.json │ │ │ │ ├── v2.4.0/ │ │ │ │ │ └── RariFundProxy.json │ │ │ │ └── v2.5.0/ │ │ │ │ └── RariFundController.json │ │ │ ├── stable.js │ │ │ ├── yield/ │ │ │ │ └── abi/ │ │ │ │ └── legacy/ │ │ │ │ ├── v1.0.0/ │ │ │ │ │ ├── RariFundController.json │ │ │ │ │ └── RariFundProxy.json │ │ │ │ └── v1.1.0/ │ │ │ │ └── RariFundProxy.json │ │ │ └── yield.js │ │ └── subpools/ │ │ ├── aave.js │ │ ├── alpha/ │ │ │ └── abi/ │ │ │ ├── Bank.json │ │ │ └── ConfigurableInterestBankConfig.json │ │ ├── alpha.js │ │ ├── compound.js │ │ ├── dydx.js │ │ ├── fuse/ │ │ │ └── abi/ │ │ │ └── CErc20Delegate.json │ │ ├── fuse.js │ │ ├── keeperdao.js │ │ ├── mstable/ │ │ │ └── abi/ │ │ │ ├── Masset.json │ │ │ └── MassetValidationHelper.json │ │ ├── mstable.js │ │ └── yvault.js │ ├── rari-sdk.d.ts │ ├── react-app-env.d.ts │ ├── setupTests.ts │ ├── static/ │ │ └── compiled/ │ │ ├── info.txt │ │ └── tokens.json │ └── utils/ │ ├── apyUtils.ts │ ├── bigUtils.ts │ ├── chakraUtils.tsx │ ├── chartOptions.ts │ ├── createComptroller.ts │ ├── errorHandling.ts │ ├── fetchFusePoolData.ts │ ├── fetchPoolAPY.ts │ ├── fetchPoolInterest.ts │ ├── fetchTVL.ts │ ├── format.ts │ ├── homepage.ts │ ├── i18n.ts │ ├── multicall.ts │ ├── poolIconUtils.ts │ ├── poolUtils.ts │ ├── rewards.ts │ ├── shortAddress.ts │ ├── stringUtils.ts │ ├── symbolUtils.ts │ ├── tokenUtils.ts │ └── web3Providers.ts └── tsconfig.json