{"version":3,"file":"static/chunks/1063-1c240636c7922837.js","mappings":"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","sources":["webpack://_N_E/./src/components/DoubleLogo/index.tsx","webpack://_N_E/./src/components/Search/index.tsx","webpack://_N_E/./src/features/onsen/hooks.ts","webpack://_N_E/./src/functions/convert/apyApr.ts","webpack://_N_E/./src/hooks/useFarmRewards.ts","webpack://_N_E/./src/hooks/useFuse.ts"],"sourcesContent":["import { Currency } from '@sushiswap/core-sdk'\nimport CurrencyLogo from '../CurrencyLogo'\nimport React from 'react'\nimport { classNames } from '../../functions'\n\ninterface DoubleCurrencyLogoProps {\n margin?: boolean\n size?: number\n currency0?: Currency\n currency1?: Currency\n className?: string\n logoClassName?: string\n}\n\nexport default function DoubleCurrencyLogo({\n currency0,\n currency1,\n className = '',\n logoClassName = '',\n size = 16,\n}: DoubleCurrencyLogoProps) {\n return (\n
\n \n \n
\n )\n}\n","import React from 'react'\nimport { Search as SearchIcon } from 'react-feather'\nimport { classNames } from '../../functions'\n\nexport default function Search({\n term,\n search,\n className = 'bg-dark-900',\n inputProps = {\n className:\n 'text-baseline bg-transparent w-full py-3 pl-4 pr-14 rounded w-full bg-transparent focus:outline-none bg-dark-700 rounded focus:ring focus:ring-blue',\n },\n ...rest\n}: {\n term: string\n search: (value: string) => void\n inputProps?: any\n className?: string\n}) {\n return (\n
\n search(e.target.value)}\n value={term}\n placeholder=\"Search by name, symbol, address\"\n {...inputProps}\n />\n
\n \n
\n
\n )\n}\n","import {\n ChainId,\n CurrencyAmount,\n JSBI,\n MASTERCHEF_ADDRESS,\n MASTERCHEF_V2_ADDRESS,\n MINICHEF_ADDRESS,\n SUSHI,\n} from '@sushiswap/core-sdk'\nimport { Chef, PairType } from './enum'\nimport { Dispatch, useCallback, useEffect, useMemo, useState } from 'react'\nimport { NEVER_RELOAD, useSingleCallResult, useSingleContractMultipleData } from '../../state/multicall/hooks'\nimport { useMasterChefContract, useMasterChefV2Contract, useMiniChefContract } from '../../hooks/useContract'\n\nimport { Contract } from '@ethersproject/contracts'\nimport { Zero } from '@ethersproject/constants'\nimport concat from 'lodash/concat'\nimport { useActiveWeb3React } from '../../services/web3'\nimport zip from 'lodash/zip'\n\nexport function useChefContract(chef: Chef) {\n const masterChefContract = useMasterChefContract()\n const masterChefV2Contract = useMasterChefV2Contract()\n const miniChefContract = useMiniChefContract()\n const contracts = useMemo(\n () => ({\n [Chef.MASTERCHEF]: masterChefContract,\n [Chef.MASTERCHEF_V2]: masterChefV2Contract,\n [Chef.MINICHEF]: miniChefContract,\n }),\n [masterChefContract, masterChefV2Contract, miniChefContract]\n )\n return useMemo(() => {\n return contracts[chef]\n }, [contracts, chef])\n}\n\nconst CHEFS = {\n [ChainId.ETHEREUM]: [Chef.MASTERCHEF, Chef.MASTERCHEF_V2],\n [ChainId.MATIC]: [Chef.MINICHEF],\n}\n\nexport function useChefContracts(chefs: Chef[]) {\n const masterChefContract = useMasterChefContract()\n const masterChefV2Contract = useMasterChefV2Contract()\n const miniChefContract = useMiniChefContract()\n const contracts = useMemo(\n () => ({\n [Chef.MASTERCHEF]: masterChefContract,\n [Chef.MASTERCHEF_V2]: masterChefV2Contract,\n [Chef.MINICHEF]: miniChefContract,\n }),\n [masterChefContract, masterChefV2Contract, miniChefContract]\n )\n return chefs.map((chef) => contracts[chef])\n}\n\nexport function useUserInfo(farm, token) {\n const { account } = useActiveWeb3React()\n\n const contract = useChefContract(farm.chef)\n\n const args = useMemo(() => {\n if (!account) {\n return\n }\n return [String(farm.id), String(account)]\n }, [farm, account])\n\n const result = useSingleCallResult(args ? contract : null, 'userInfo', args)?.result\n\n const value = result?.[0]\n\n const amount = value ? JSBI.BigInt(value.toString()) : undefined\n\n return amount ? CurrencyAmount.fromRawAmount(token, amount) : undefined\n}\n\nexport function usePendingSushi(farm) {\n const { account, chainId } = useActiveWeb3React()\n\n const contract = useChefContract(farm.chef)\n\n const args = useMemo(() => {\n if (!account) {\n return\n }\n return [String(farm.id), String(account)]\n }, [farm, account])\n\n const result = useSingleCallResult(args ? contract : null, 'pendingSushi', args)?.result\n\n const value = result?.[0]\n\n const amount = value ? JSBI.BigInt(value.toString()) : undefined\n\n return amount ? CurrencyAmount.fromRawAmount(SUSHI[chainId], amount) : undefined\n}\n\nexport function usePendingToken(farm, contract) {\n const { account } = useActiveWeb3React()\n\n const args = useMemo(() => {\n if (!account || !farm) {\n return\n }\n return [String(farm.pid), String(account)]\n }, [farm, account])\n\n const pendingTokens = useSingleContractMultipleData(\n args ? contract : null,\n 'pendingTokens',\n args.map((arg) => [...arg, '0'])\n )\n\n return useMemo(() => pendingTokens, [pendingTokens])\n}\n\nexport function useChefPositions(contract?: Contract | null, rewarder?: Contract | null, chainId = undefined) {\n const { account } = useActiveWeb3React()\n\n const numberOfPools = useSingleCallResult(contract ? contract : null, 'poolLength', undefined, NEVER_RELOAD)\n ?.result?.[0]\n\n const args = useMemo(() => {\n if (!account || !numberOfPools) {\n return\n }\n return [...Array(numberOfPools.toNumber()).keys()].map((pid) => [String(pid), String(account)])\n }, [numberOfPools, account])\n\n const pendingSushi = useSingleContractMultipleData(args ? contract : null, 'pendingSushi', args)\n\n const userInfo = useSingleContractMultipleData(args ? contract : null, 'userInfo', args)\n\n // const pendingTokens = useSingleContractMultipleData(\n // rewarder,\n // 'pendingTokens',\n // args.map((arg) => [...arg, '0'])\n // )\n\n const getChef = useCallback(() => {\n if (MASTERCHEF_ADDRESS[chainId] === contract.address) {\n return Chef.MASTERCHEF\n } else if (MASTERCHEF_V2_ADDRESS[chainId] === contract.address) {\n return Chef.MASTERCHEF_V2\n } else if (MINICHEF_ADDRESS[chainId] === contract.address) {\n return Chef.MINICHEF\n }\n }, [chainId, contract])\n\n return useMemo(() => {\n if (!pendingSushi || !userInfo) {\n return []\n }\n return zip(pendingSushi, userInfo)\n .map((data, i) => ({\n id: args[i][0],\n pendingSushi: data[0].result?.[0] || Zero,\n amount: data[1].result?.[0] || Zero,\n chef: getChef(),\n // pendingTokens: data?.[2]?.result,\n }))\n .filter(({ pendingSushi, amount }) => {\n return (pendingSushi && !pendingSushi.isZero()) || (amount && !amount.isZero())\n })\n }, [args, getChef, pendingSushi, userInfo])\n}\n\nexport function usePositions(chainId = undefined) {\n const [masterChefV1Positions, masterChefV2Positions, miniChefPositions] = [\n useChefPositions(useMasterChefContract(), undefined, chainId),\n useChefPositions(useMasterChefV2Contract(), undefined, chainId),\n useChefPositions(useMiniChefContract(), undefined, chainId),\n ]\n return concat(masterChefV1Positions, masterChefV2Positions, miniChefPositions)\n}\n\n/*\n Currently expensive to render farm list item. The infinite scroll is used to\n to minimize this impact. This hook pairs with it, keeping track of visible\n items and passes this to component.\n*/\nexport function useInfiniteScroll(items): [number, Dispatch] {\n const [itemsDisplayed, setItemsDisplayed] = useState(10)\n useEffect(() => setItemsDisplayed(10), [items.length])\n return [itemsDisplayed, setItemsDisplayed]\n}\n","/**\n * @file apyApr\n * @note original implementation: https://gist.github.com/sterlu/4b44f59ea665819974ae684d7f564d9b\n */\n\n/**\n * @const SECONDS_PER_YEAR\n * @summary\n * A four-century period will be missing 3 of its 100 Julian leap years, leaving 97.\n * So the average year has 365 + 97/400 = 365.2425 days\n * ERROR RATE (Julian): -0.0078 = 365.25\n * ERROR RATE (Gregorian): -0.0003 = 365.2425\n * A Day = 24 * 60 * 60 sec = 86400 sec\n * (Gregorian): 365.2425 * 86400 = 31556952.0\n * see https://github.com/yearn/yearn-vaults/blob/912e04db254c6c3b4ea420a97fe42495c4d5343a/contracts/Vault.vy#L235\n */\n\nconst SECONDS_PER_YEAR = 365.2425 * 86400 /** SECONDS_PER_YEAR = 31,556,952 */\n\n/**\n * @const BLOCKS_IN_A_YEAR\n * @summary\n * London / Berlin / Muir Glacier Block Speed\n * AVERAGE: 13.2\n * MEDIAN: 13.21475904\n * Source: https://openmev.page.link/block-delta\n *\n * @NOTE: We round up due to an observed increase in block prop. from Muir Glacier <> Berlin vs. Berlin <> London\n * Muir-Glacier <> Berlin sees ~13.15\n */\n\nconst BLOCKS_IN_A_YEAR = SECONDS_PER_YEAR / 13.25\n\n/**\n * Formula source: http://www.linked8.com/blog/158-apy-to-apr-and-apr-to-apy-calculation-methodologies\n *\n * @param apy {Number} APY as percentage (ie. 6)\n * @param frequency {Number} Compounding frequency (times a year)\n * @returns {Number} APR as percentage (ie. 5.82 for APY of 6%)\n */\nexport const apyToApr = (apy, frequency = BLOCKS_IN_A_YEAR) =>\n ((1 + apy / 100) ** (1 / frequency) - 1) * frequency * 100\n\n/**\n * Formula source: http://www.linked8.com/blog/158-apy-to-apr-and-apr-to-apy-calculation-methodologies\n *\n * @param apr {Number} APR as percentage (ie. 5.82)\n * @param frequency {Number} Compounding frequency (times a year)\n * @returns {Number} APY as percentage (ie. 6 for APR of 5.82%)\n */\nexport const aprToApy = (apr, frequency = BLOCKS_IN_A_YEAR) => ((1 + apr / 100 / frequency) ** frequency - 1) * 100\n","import { Chef, PairType } from '../features/onsen/enum'\nimport {\n useAverageBlockTime,\n useBlock,\n useEthPrice,\n useFarms,\n useKashiPairs,\n useMasterChefV1SushiPerBlock,\n useMasterChefV1TotalAllocPoint,\n useMaticPrice,\n useOnePrice,\n useCeloPrice,\n useMovrPrice,\n useSpellPrice,\n useStakePrice,\n useSushiPairs,\n useSushiPrice,\n} from '../services/graph'\n\nimport { ChainId } from '@sushiswap/core-sdk'\nimport { getAddress } from '@ethersproject/address'\nimport { useActiveWeb3React } from '../services/web3'\nimport { useMemo } from 'react'\nimport { usePositions } from '../features/onsen/hooks'\nimport { aprToApy } from '../functions/convert/apyApr'\nimport toLower from 'lodash/toLower'\n\nexport default function useFarmRewards() {\n const { chainId } = useActiveWeb3React()\n\n const positions = usePositions(chainId)\n\n const block1d = useBlock({ chainId, daysAgo: 1 })\n\n const farms = useFarms({ chainId })\n\n const farmAddresses = useMemo(() => farms.map((farm) => farm.pair), [farms])\n\n const swapPairs = useSushiPairs({\n chainId,\n variables: {\n where: {\n id_in: farmAddresses.map(toLower),\n },\n },\n shouldFetch: !!farmAddresses,\n })\n\n const swapPairs1d = useSushiPairs({\n chainId,\n variables: {\n block: block1d,\n where: {\n id_in: farmAddresses.map(toLower),\n },\n },\n shouldFetch: !!block1d && !!farmAddresses,\n })\n\n const kashiPairs = useKashiPairs({\n chainId,\n variables: { where: { id_in: farmAddresses.map(toLower) } },\n shouldFetch: !!farmAddresses,\n })\n\n const averageBlockTime = useAverageBlockTime({ chainId })\n\n const masterChefV1TotalAllocPoint = useMasterChefV1TotalAllocPoint()\n const masterChefV1SushiPerBlock = useMasterChefV1SushiPerBlock()\n\n const [sushiPrice, ethPrice, maticPrice, stakePrice, onePrice, spellPrice, celoPrice, movrPrice] = [\n useSushiPrice(),\n useEthPrice(),\n useMaticPrice(),\n useStakePrice(),\n useOnePrice(),\n useSpellPrice(),\n useCeloPrice(),\n useMovrPrice(),\n ]\n\n const blocksPerDay = 86400 / Number(averageBlockTime)\n\n const map = (pool) => {\n // TODO: Deal with inconsistencies between properties on subgraph\n pool.owner = pool?.owner || pool?.masterChef || pool?.miniChef\n pool.balance = pool?.balance || pool?.slpBalance\n\n const swapPair = swapPairs?.find((pair) => pair.id === pool.pair)\n const swapPair1d = swapPairs1d?.find((pair) => pair.id === pool.pair)\n const kashiPair = kashiPairs?.find((pair) => pair.id === pool.pair)\n\n const pair = swapPair || kashiPair\n\n const type = swapPair ? PairType.SWAP : PairType.KASHI\n\n const blocksPerHour = 3600 / averageBlockTime\n\n function getRewards() {\n // TODO: Some subgraphs give sushiPerBlock & sushiPerSecond, and mcv2 gives nothing\n const sushiPerBlock =\n pool?.owner?.sushiPerBlock / 1e18 ||\n (pool?.owner?.sushiPerSecond / 1e18) * averageBlockTime ||\n masterChefV1SushiPerBlock\n\n const rewardPerBlock = (pool.allocPoint / pool.owner.totalAllocPoint) * sushiPerBlock\n\n const defaultReward = {\n token: 'SUSHI',\n icon: 'https://raw.githubusercontent.com/sushiswap/logos/main/network/ethereum/0x6B3595068778DD592e39A122f4f5a5cF09C90fE2.jpg',\n rewardPerBlock,\n rewardPerDay: rewardPerBlock * blocksPerDay,\n rewardPrice: sushiPrice,\n }\n\n let rewards = [defaultReward]\n\n if (pool.chef === Chef.MASTERCHEF_V2) {\n // override for mcv2...\n pool.owner.totalAllocPoint = masterChefV1TotalAllocPoint\n\n // vestedQUARTZ to QUARTZ adjustments\n if (pool.rewarder.rewardToken === '0x5dd8905aec612529361a35372efd5b127bb182b3') {\n pool.rewarder.rewardToken = '0xba8a621b4a54e61c442f5ec623687e2a942225ef'\n pool.rewardToken.symbol = 'vestedQUARTZ'\n pool.rewardToken.derivedETH = pair.token1.derivedETH\n pool.rewardToken.decimals = 18\n }\n\n const icon = `https://raw.githubusercontent.com/sushiswap/logos/main/network/ethereum/${getAddress(\n pool.rewarder.rewardToken\n )}.jpg`\n\n const decimals = 10 ** pool.rewardToken.decimals\n\n if (pool.rewarder.rewardToken !== '0x0000000000000000000000000000000000000000') {\n const rewardPerBlock =\n pool.rewardToken.symbol === 'ALCX'\n ? pool.rewarder.rewardPerSecond / decimals\n : pool.rewardToken.symbol === 'LDO'\n ? (77160493827160493 / decimals) * averageBlockTime\n : (pool.rewarder.rewardPerSecond / decimals) * averageBlockTime\n\n const rewardPerDay =\n pool.rewardToken.symbol === 'ALCX'\n ? (pool.rewarder.rewardPerSecond / decimals) * blocksPerDay\n : pool.rewardToken.symbol === 'LDO'\n ? (77160493827160493 / decimals) * averageBlockTime * blocksPerDay\n : (pool.rewarder.rewardPerSecond / decimals) * averageBlockTime * blocksPerDay\n\n const rewardPrice = pool.rewardToken.derivedETH * ethPrice\n\n const reward = {\n token: pool.rewardToken.symbol,\n icon: icon,\n rewardPerBlock,\n rewardPerDay,\n rewardPrice,\n }\n\n rewards[1] = reward\n }\n } else if (pool.chef === Chef.MINICHEF) {\n const sushiPerSecond = ((pool.allocPoint / pool.miniChef.totalAllocPoint) * pool.miniChef.sushiPerSecond) / 1e18\n const sushiPerBlock = sushiPerSecond * averageBlockTime\n const sushiPerDay = sushiPerBlock * blocksPerDay\n\n const rewardPerSecond =\n pool.rewarder.rewardPerSecond && chainId == ChainId.ARBITRUM\n ? pool.rewarder.rewardPerSecond / 1e18\n : ((pool.allocPoint / pool.miniChef.totalAllocPoint) * pool.rewarder.rewardPerSecond) / 1e18\n\n const rewardPerBlock = rewardPerSecond * averageBlockTime\n\n const rewardPerDay = rewardPerBlock * blocksPerDay\n\n const reward = {\n [ChainId.MATIC]: {\n token: 'MATIC',\n icon: 'https://raw.githubusercontent.com/sushiswap/logos/main/network/matic/0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270.jpg',\n rewardPerBlock,\n rewardPerDay: rewardPerSecond * 86400,\n rewardPrice: maticPrice,\n },\n [ChainId.XDAI]: {\n token: 'STAKE',\n icon: 'https://raw.githubusercontent.com/sushiswap/logos/main/network/xdai/0xb7D311E2Eb55F2f68a9440da38e7989210b9A05e.jpg',\n rewardPerBlock,\n rewardPerDay: rewardPerSecond * 86400,\n rewardPrice: stakePrice,\n },\n [ChainId.HARMONY]: {\n token: 'ONE',\n icon: 'https://raw.githubusercontent.com/sushiswap/logos/main/network/harmony/0xcF664087a5bB0237a0BAd6742852ec6c8d69A27a.jpg',\n rewardPerBlock,\n rewardPerDay: rewardPerSecond * 86400,\n rewardPrice: onePrice,\n },\n [ChainId.CELO]: {\n token: 'CELO',\n icon: 'https://raw.githubusercontent.com/sushiswap/icons/master/token/celo.jpg',\n rewardPerBlock,\n rewardPerDay: rewardPerSecond * 86400,\n rewardPrice: celoPrice,\n },\n [ChainId.MOONRIVER]: {\n token: 'MOVR',\n icon: 'https://raw.githubusercontent.com/sushiswap/icons/master/token/movr.jpg',\n rewardPerBlock,\n rewardPerDay: rewardPerSecond * 86400,\n rewardPrice: movrPrice,\n },\n }\n\n rewards[0] = {\n ...defaultReward,\n rewardPerBlock: sushiPerBlock,\n rewardPerDay: sushiPerDay,\n }\n\n if (chainId in reward) {\n rewards[1] = reward[chainId]\n }\n\n if (chainId === ChainId.ARBITRUM && ['9', '11'].includes(pool.id)) {\n rewards[1] = {\n token: 'SPELL',\n icon: 'https://raw.githubusercontent.com/sushiswap/logos/main/network/ethereum/0x090185f2135308BaD17527004364eBcC2D37e5F6.jpg',\n rewardPerBlock,\n rewardPerDay,\n rewardPrice: spellPrice,\n }\n }\n }\n\n return rewards\n }\n\n const rewards = getRewards()\n\n const balance = swapPair ? Number(pool.balance / 1e18) : pool.balance / 10 ** kashiPair.token0.decimals\n\n const tvl = swapPair\n ? (balance / Number(swapPair.totalSupply)) * Number(swapPair.reserveUSD)\n : balance * kashiPair.token0.derivedETH * ethPrice\n\n const feeApyPerYear =\n swapPair && swapPair1d\n ? aprToApy((((pair?.volumeUSD - swapPair1d?.volumeUSD) * 0.0025 * 365) / pair?.reserveUSD) * 100, 3650) / 100\n : 0\n\n const feeApyPerMonth = feeApyPerYear / 12\n const feeApyPerDay = feeApyPerMonth / 30\n const feeApyPerHour = feeApyPerDay / blocksPerHour\n\n // console.log({ feeApyPerYear, feeApyPerMonth, feeApyPerDay, feeApyPerHour })\n\n const roiPerBlock =\n rewards.reduce((previousValue, currentValue) => {\n return previousValue + currentValue.rewardPerBlock * currentValue.rewardPrice\n }, 0) / tvl\n\n const rewardAprPerHour = roiPerBlock * blocksPerHour\n const rewardAprPerDay = rewardAprPerHour * 24\n const rewardAprPerMonth = rewardAprPerDay * 30\n const rewardAprPerYear = rewardAprPerMonth * 12\n\n const roiPerHour = rewardAprPerHour + feeApyPerHour\n const roiPerMonth = rewardAprPerMonth + feeApyPerMonth\n const roiPerDay = rewardAprPerDay + feeApyPerDay\n const roiPerYear = rewardAprPerYear + feeApyPerYear\n\n const position = positions.find((position) => position.id === pool.id && position.chef === pool.chef)\n\n return {\n ...pool,\n ...position,\n pair: {\n ...pair,\n decimals: pair.type === PairType.KASHI ? Number(pair.asset.tokenInfo.decimals) : 18,\n type,\n },\n balance,\n feeApyPerHour,\n feeApyPerDay,\n feeApyPerMonth,\n feeApyPerYear,\n rewardAprPerHour,\n rewardAprPerDay,\n rewardAprPerMonth,\n rewardAprPerYear,\n roiPerBlock,\n roiPerHour,\n roiPerDay,\n roiPerMonth,\n roiPerYear,\n rewards,\n tvl,\n }\n }\n\n return farms\n .filter((farm) => {\n return (\n (swapPairs && swapPairs.find((pair) => pair.id === farm.pair)) ||\n (kashiPairs && kashiPairs.find((pair) => pair.id === farm.pair))\n )\n })\n .map(map)\n}\n","import Fuse from 'fuse.js'\nimport { useState } from 'react'\n\nfunction fuzzySearch({ fuse, data, term }) {\n const results = fuse.search(term)\n return term ? results.map((result) => result.item) : data\n}\n\nfunction useFuse({ data, options }) {\n const [term, setTerm] = useState('')\n const fuseOptions = {\n ...options,\n }\n const fuse = new Fuse(data || [], fuseOptions)\n const result = fuzzySearch({ fuse, data, term })\n const reset = () => setTerm('')\n return {\n result,\n search: setTerm,\n term,\n reset,\n }\n}\n\nexport default useFuse\n"],"names":["DoubleCurrencyLogo","currency0","currency1","className","logoClassName","size","classNames","currency","toString","Search","term","search","inputProps","rest","onChange","e","target","value","placeholder","useChefContract","chef","masterChefContract","useMasterChefContract","masterChefV2Contract","useMasterChefV2Contract","miniChefContract","useMiniChefContract","contracts","useMemo","Chef","ChainId","useUserInfo","farm","token","account","useActiveWeb3React","contract","args","String","id","result","useSingleCallResult","amount","JSBI","undefined","CurrencyAmount","usePendingSushi","chainId","SUSHI","useChefPositions","rewarder","numberOfPools","NEVER_RELOAD","Array","toNumber","keys","map","pid","pendingSushi","useSingleContractMultipleData","userInfo","getChef","useCallback","MASTERCHEF_ADDRESS","address","MASTERCHEF_V2_ADDRESS","MINICHEF_ADDRESS","zip","data","i","Zero","filter","isZero","usePositions","masterChefV1Positions","masterChefV2Positions","miniChefPositions","concat","useInfiniteScroll","items","itemsDisplayed","setItemsDisplayed","useState","useEffect","length","BLOCKS_IN_A_YEAR","aprToApy","apr","frequency","useFarmRewards","positions","block1d","useBlock","daysAgo","farms","useFarms","farmAddresses","pair","swapPairs","useSushiPairs","variables","where","id_in","toLower","shouldFetch","swapPairs1d","block","kashiPairs","useKashiPairs","averageBlockTime","useAverageBlockTime","masterChefV1TotalAllocPoint","useMasterChefV1TotalAllocPoint","masterChefV1SushiPerBlock","useMasterChefV1SushiPerBlock","sushiPrice","ethPrice","maticPrice","stakePrice","onePrice","spellPrice","celoPrice","movrPrice","useSushiPrice","useEthPrice","useMaticPrice","useStakePrice","useOnePrice","useSpellPrice","useCeloPrice","useMovrPrice","blocksPerDay","Number","find","pool","owner","masterChef","miniChef","balance","slpBalance","swapPair","swapPair1d","kashiPair","type","PairType","blocksPerHour","rewards","sushiPerBlock","sushiPerSecond","rewardPerBlock","allocPoint","totalAllocPoint","defaultReward","icon","rewardPerDay","rewardPrice","rewardToken","symbol","derivedETH","token1","decimals","getAddress","rewardPerSecond","reward","sushiPerDay","includes","getRewards","token0","tvl","totalSupply","reserveUSD","feeApyPerYear","volumeUSD","feeApyPerMonth","feeApyPerDay","feeApyPerHour","roiPerBlock","reduce","previousValue","currentValue","rewardAprPerHour","rewardAprPerDay","rewardAprPerMonth","rewardAprPerYear","roiPerHour","roiPerMonth","roiPerDay","roiPerYear","position","asset","tokenInfo","options","setTerm","fuseOptions","fuse","results","item","fuzzySearch","Fuse","reset"],"sourceRoot":""}