{"version":3,"sources":["state/farms/fetchFarms.ts","state/farms/fetchFarmUser.ts","state/farms/index.ts","state/hooks.ts","utils/getRpcUrl.ts","contexts/RefreshContext.tsx","state/actions.ts","hooks/useRefresh.ts","contexts/Localisation/translationsContext.ts","components/layout/Container.tsx","components/layout/Page.tsx","config/constants/types.ts","config/constants/contracts.ts","utils/multicall.ts","utils/addressHelpers.ts","config/constants/pools.ts","state/pools/fetchPoolsUser.ts","state/pools/index.ts","config/constants/farms.ts","style/Global.tsx","config/localisation/languageCodes.ts","contexts/Localisation/languageContext.tsx","contexts/ThemeContext.tsx","hooks/useTheme.ts","components/Menu/config.ts","components/Menu/index.tsx","components/PageLoader.tsx","App.tsx","contexts/BlockContext.tsx","state/index.ts","Providers.tsx","index.tsx","utils/web3.ts"],"names":["fetchFarms","a","Promise","all","farmsConfig","map","farmConfig","lpAdress","lpAddresses","CHAIN_ID","calls","address","tokenAddresses","name","params","quoteTokenAdresses","isTokenOnly","getMasterChefAddress","multicall","erc20","tokenBalanceLP","quoteTokenBlanceLP","lpTokenBalanceMC","lpTotalSupply","tokenDecimals","quoteTokenDecimals","tokenAmount","BigNumber","div","pow","tokenPriceVsQuote","tokenSymbol","QuoteToken","BUSD","quoteTokenSymbol","lpTotalInQuoteToken","times","console","log","lpTokenRatio","toString","quoteTokenAmount","comparedTo","masterchefABI","pid","info","totalAllocPoint","wishPerBlock","allocPoint","_hex","poolWeight","toJSON","toNumber","multiplier","depositFeeBP","data","fetchFarmUserAllowances","account","masterChefAdress","farm","erc20ABI","rawLpAllowances","parsedLpAllowances","lpBalance","fetchFarmUserTokenBalances","rawTokenBalances","parsedTokenBalances","tokenBalance","fetchFarmUserStakedBalances","rawStakedBalances","parsedStakedBalances","stakedBalance","fetchFarmUserEarnings","rawEarnings","parsedEarnings","earnings","initialState","farmsSlice","createSlice","reducers","setFarmsPublicData","state","action","liveFarmsData","payload","liveFarmData","find","f","setFarmUserData","arrayOfUserDataObjects","forEach","userDataEl","index","userData","actions","fetchFarmsPublicDataAsync","dispatch","farms","fetchFarmUserDataAsync","userFarmAllowances","userFarmTokenBalances","userStakedBalances","userFarmEarnings","farmAllowance","allowance","ZERO","useFetchPublicData","useDispatch","slowRefresh","useRefresh","useEffect","useFarms","useSelector","useFarmFromPid","useFarmUser","usePriceBnbBusd","usePriceCakeBusd","bnbPriceUSD","useTotalValue","bnbPrice","cakePrice","value","i","length","val","BNB","CAKE","plus","nodes","process","getNodeUrl","randomIndex","random","RefreshContext","React","createContext","slow","fast","RefreshContextProvider","children","useState","setSlow","setFast","interval","setInterval","prev","clearInterval","Provider","useContext","fastRefresh","defaultTranslationState","translations","setTranslations","TranslationsContext","Container","styled","theme","mediaQueries","sm","Page","lg","PoolCategory","cake","56","97","masterChef","wbnb","usdt","lottery","lotteryNFT","mulltiCall","busd","abi","web3","getWeb3","multi","eth","Contract","MultiCallAbi","getMulticallAddress","itf","Interface","calldata","call","toLowerCase","encodeFunctionData","methods","aggregate","returnData","res","decodeFunctionResult","getCakeAddress","addresses","chainId","getWbnbAddress","getLotteryAddress","getLotteryTicketAddress","pools","nonBnbPools","poolsConfig","filter","p","stakingTokenName","bnbPools","nonMasterPools","sousId","masterChefContract","masterChefABI","fetchPoolsAllowance","stakingTokenAddress","contractAddress","allowances","reduce","acc","pool","fetchUserBalances","tokenBalancesRaw","tokenBalances","getBalance","bnbBalance","bnbBalances","fetchUserStakeBalances","sousChefABI","userInfo","stakedBalances","amount","masterPoolAmount","0","fetchUserPendingRewards","pendingRewards","pendingWISH","pendingReward","PoolsSlice","setPoolsPublicData","livePoolsData","livePoolData","entry","setPoolsUserData","userPoolData","updatePoolsUserData","field","findIndex","fetchPoolsUserDataAsync","stakingTokenBalances","stakingTokenBalance","updateUserAllowance","updateUserBalance","updateUserStakedBalance","updateUserPendingReward","risk","lpSymbol","contracts","USDT","GlobalStyle","createGlobalStyle","colors","background","EN","code","language","allLanguages","CACHE_KEY","LanguageContext","selectedLanguage","setSelectedLanguage","translatedLanguage","setTranslatedLanguage","LanguageContextProvider","parseInt","REACT_APP_CROWDIN_PROJECTID","StringTranslations","token","REACT_APP_CROWDIN_APIKEY","storedLangCode","localStorage","getItem","storedLang","getStoredLang","fetch","then","r","json","translationApiResponse","catch","e","error","langObject","setItem","ThemeContext","isDark","toggleTheme","ThemeContextProvider","isDarkUserSetting","JSON","parse","setIsDark","prevState","stringify","dark","light","useTheme","StyledThemeCopntext","config","label","icon","href","items","initialOpenState","Menu","props","useWallet","connect","reset","cakePriceUsd","login","logout","currentLang","langs","setLang","links","priceLink","Wrapper","PageLoader","Home","lazy","Farms","NotFound","EXPONENTIAL_AT","DECIMAL_PLACES","App","window","Global","fallback","path","exact","tokenMode","component","memo","BlockContext","BlockContextProvider","previousBlock","useRef","block","setBlock","getBlockNumber","blockNumber","current","configureStore","devTools","reducer","farmsReducer","poolsReducer","Providers","rpcUrl","getRpcUrl","store","connectors","walletconnect","bsc","ReactDOM","render","StrictMode","document","getElementById","RPC_URL","httpProvider","Web3","providers","HttpProvider","timeout","getContract","contractOptions"],"mappings":"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","file":"static/js/main.971b71d5.chunk.js","sourcesContent":["import BigNumber from 'bignumber.js'\nimport erc20 from 'config/abi/erc20.json'\nimport masterchefABI from 'config/abi/masterchef.json'\nimport multicall from 'utils/multicall'\nimport { getMasterChefAddress } from 'utils/addressHelpers'\nimport farmsConfig from 'config/constants/farms'\nimport { QuoteToken } from '../../config/constants/types'\n\nconst CHAIN_ID = process.env.REACT_APP_CHAIN_ID\n\nconst fetchFarms = async () => {\n const data = await Promise.all(\n farmsConfig.map(async (farmConfig) => {\n const lpAdress = farmConfig.lpAddresses[CHAIN_ID]\n const calls = [\n // Balance of token in the LP contract\n {\n address: farmConfig.tokenAddresses[CHAIN_ID],\n name: 'balanceOf',\n params: [lpAdress],\n },\n // Balance of quote token on LP contract\n {\n address: farmConfig.quoteTokenAdresses[CHAIN_ID],\n name: 'balanceOf',\n params: [lpAdress],\n },\n // Balance of LP tokens in the master chef contract\n {\n address: farmConfig.isTokenOnly ? farmConfig.tokenAddresses[CHAIN_ID] : lpAdress,\n name: 'balanceOf',\n params: [getMasterChefAddress()],\n },\n // Total supply of LP tokens\n {\n address: lpAdress,\n name: 'totalSupply',\n },\n // Token decimals\n {\n address: farmConfig.tokenAddresses[CHAIN_ID],\n name: 'decimals',\n },\n // Quote token decimals\n {\n address: farmConfig.quoteTokenAdresses[CHAIN_ID],\n name: 'decimals',\n },\n ]\n\n const [\n tokenBalanceLP,\n quoteTokenBlanceLP,\n lpTokenBalanceMC,\n lpTotalSupply,\n tokenDecimals,\n quoteTokenDecimals\n ] = await multicall(erc20, calls)\n\n let tokenAmount;\n let lpTotalInQuoteToken;\n let tokenPriceVsQuote;\n if(farmConfig.isTokenOnly){\n tokenAmount = new BigNumber(lpTokenBalanceMC).div(new BigNumber(10).pow(tokenDecimals));\n if(farmConfig.tokenSymbol === QuoteToken.BUSD && farmConfig.quoteTokenSymbol === QuoteToken.BUSD){\n tokenPriceVsQuote = new BigNumber(1);\n }else{\n tokenPriceVsQuote = new BigNumber(quoteTokenBlanceLP).div(new BigNumber(tokenBalanceLP));\n }\n lpTotalInQuoteToken = tokenAmount.times(tokenPriceVsQuote);\n\n console.log(lpTotalInQuoteToken,\"lp token \")\n }else{\n // Ratio in % a LP tokens that are in staking, vs the total number in circulation\n const lpTokenRatio = new BigNumber(lpTokenBalanceMC).div(new BigNumber(lpTotalSupply))\n\n // Total value in staking in quote token value\n lpTotalInQuoteToken = new BigNumber(quoteTokenBlanceLP)\n .div(new BigNumber(10).pow(18))\n .times(new BigNumber(2))\n .times(lpTokenRatio)\n\n console.log(quoteTokenBlanceLP.toString(),\"lp token \")\n // Amount of token in the LP that are considered staking (i.e amount of token * lp ratio)\n tokenAmount = new BigNumber(tokenBalanceLP).div(new BigNumber(10).pow(tokenDecimals)).times(lpTokenRatio)\n const quoteTokenAmount = new BigNumber(quoteTokenBlanceLP)\n .div(new BigNumber(10).pow(quoteTokenDecimals))\n .times(lpTokenRatio)\n\n if(tokenAmount.comparedTo(0) > 0){\n tokenPriceVsQuote = quoteTokenAmount.div(tokenAmount);\n }else{\n tokenPriceVsQuote = new BigNumber(quoteTokenBlanceLP).div(new BigNumber(tokenBalanceLP));\n }\n }\n\n const [info, totalAllocPoint, wishPerBlock] = await multicall(masterchefABI, [\n {\n address: getMasterChefAddress(),\n name: 'poolInfo',\n params: [farmConfig.pid],\n },\n {\n address: getMasterChefAddress(),\n name: 'totalAllocPoint',\n },\n {\n address: getMasterChefAddress(),\n name: 'wishPerBlock',\n },\n ])\n\n const allocPoint = new BigNumber(info.allocPoint._hex)\n const poolWeight = allocPoint.div(new BigNumber(totalAllocPoint))\n\n return {\n ...farmConfig,\n tokenAmount: tokenAmount.toJSON(),\n // quoteTokenAmount: quoteTokenAmount,\n lpTotalInQuoteToken: lpTotalInQuoteToken.toJSON(),\n tokenPriceVsQuote: tokenPriceVsQuote.toJSON(),\n poolWeight: poolWeight.toNumber(),\n multiplier: `${allocPoint.div(100).toString()}X`,\n depositFeeBP: info.depositFeeBP,\n wishPerBlock: new BigNumber(wishPerBlock).toNumber(),\n }\n }),\n )\n return data\n}\n\nexport default fetchFarms\n","import BigNumber from 'bignumber.js'\nimport erc20ABI from 'config/abi/erc20.json'\nimport masterchefABI from 'config/abi/masterchef.json'\nimport multicall from 'utils/multicall'\nimport farmsConfig from 'config/constants/farms'\nimport { getMasterChefAddress } from 'utils/addressHelpers'\n\nconst CHAIN_ID = process.env.REACT_APP_CHAIN_ID\n\nexport const fetchFarmUserAllowances = async (account: string) => {\n const masterChefAdress = getMasterChefAddress()\n\n const calls = farmsConfig.map((farm) => {\n const lpContractAddress = farm.isTokenOnly ? farm.tokenAddresses[CHAIN_ID] : farm.lpAddresses[CHAIN_ID]\n return { address: lpContractAddress, name: 'allowance', params: [account, masterChefAdress] }\n })\n\n const rawLpAllowances = await multicall(erc20ABI, calls)\n const parsedLpAllowances = rawLpAllowances.map((lpBalance) => {\n return new BigNumber(lpBalance).toJSON()\n })\n return parsedLpAllowances\n}\n\nexport const fetchFarmUserTokenBalances = async (account: string) => {\n const calls = farmsConfig.map((farm) => {\n const lpContractAddress = farm.isTokenOnly ? farm.tokenAddresses[CHAIN_ID] : farm.lpAddresses[CHAIN_ID]\n return {\n address: lpContractAddress,\n name: 'balanceOf',\n params: [account],\n }\n })\n\n const rawTokenBalances = await multicall(erc20ABI, calls)\n const parsedTokenBalances = rawTokenBalances.map((tokenBalance) => {\n return new BigNumber(tokenBalance).toJSON()\n })\n return parsedTokenBalances\n}\n\nexport const fetchFarmUserStakedBalances = async (account: string) => {\n const masterChefAdress = getMasterChefAddress()\n\n const calls = farmsConfig.map((farm) => {\n return {\n address: masterChefAdress,\n name: 'userInfo',\n params: [farm.pid, account],\n }\n })\n\n const rawStakedBalances = await multicall(masterchefABI, calls)\n const parsedStakedBalances = rawStakedBalances.map((stakedBalance) => {\n return new BigNumber(stakedBalance[0]._hex).toJSON()\n })\n return parsedStakedBalances\n}\n\nexport const fetchFarmUserEarnings = async (account: string) => {\n const masterChefAdress = getMasterChefAddress()\n\n const calls = farmsConfig.map((farm) => {\n return {\n address: masterChefAdress,\n name: 'pendingWISH',\n params: [farm.pid, account],\n }\n })\n\n const rawEarnings = await multicall(masterchefABI, calls)\n const parsedEarnings = rawEarnings.map((earnings) => {\n return new BigNumber(earnings).toJSON()\n })\n return parsedEarnings\n}\n","/* eslint-disable no-param-reassign */\nimport { createSlice } from '@reduxjs/toolkit'\nimport farmsConfig from 'config/constants/farms'\nimport fetchFarms from './fetchFarms'\nimport {\n fetchFarmUserEarnings,\n fetchFarmUserAllowances,\n fetchFarmUserTokenBalances,\n fetchFarmUserStakedBalances,\n} from './fetchFarmUser'\nimport { FarmsState, Farm } from '../types'\n\nconst initialState: FarmsState = { data: [...farmsConfig] }\n\nexport const farmsSlice = createSlice({\n name: 'Farms',\n initialState,\n reducers: {\n setFarmsPublicData: (state, action) => {\n const liveFarmsData: Farm[] = action.payload\n state.data = state.data.map((farm) => {\n const liveFarmData = liveFarmsData.find((f) => f.pid === farm.pid)\n return { ...farm, ...liveFarmData }\n })\n },\n setFarmUserData: (state, action) => {\n const { arrayOfUserDataObjects } = action.payload\n arrayOfUserDataObjects.forEach((userDataEl) => {\n const { index } = userDataEl\n state.data[index] = { ...state.data[index], userData: userDataEl }\n })\n },\n },\n})\n\n// Actions\nexport const { setFarmsPublicData, setFarmUserData } = farmsSlice.actions\n\n// Thunks\nexport const fetchFarmsPublicDataAsync = () => async (dispatch) => {\n const farms = await fetchFarms()\n dispatch(setFarmsPublicData(farms))\n}\nexport const fetchFarmUserDataAsync = (account) => async (dispatch) => {\n const userFarmAllowances = await fetchFarmUserAllowances(account)\n const userFarmTokenBalances = await fetchFarmUserTokenBalances(account)\n const userStakedBalances = await fetchFarmUserStakedBalances(account)\n const userFarmEarnings = await fetchFarmUserEarnings(account)\n\n const arrayOfUserDataObjects = userFarmAllowances.map((farmAllowance, index) => {\n return {\n index,\n allowance: userFarmAllowances[index],\n tokenBalance: userFarmTokenBalances[index],\n stakedBalance: userStakedBalances[index],\n earnings: userFarmEarnings[index],\n }\n })\n\n dispatch(setFarmUserData({ arrayOfUserDataObjects }))\n}\n\nexport default farmsSlice.reducer\n","import BigNumber from 'bignumber.js'\nimport { useEffect, useMemo } from 'react'\nimport { useSelector, useDispatch } from 'react-redux'\nimport useRefresh from 'hooks/useRefresh'\nimport { fetchFarmsPublicDataAsync, fetchPoolsPublicDataAsync, fetchPoolsUserDataAsync } from './actions'\nimport { State, Farm, Pool } from './types'\nimport { QuoteToken } from '../config/constants/types'\n\nconst ZERO = new BigNumber(0)\n\nexport const useFetchPublicData = () => {\n const dispatch = useDispatch()\n const { slowRefresh } = useRefresh()\n useEffect(() => {\n dispatch(fetchFarmsPublicDataAsync())\n // dispatch(fetchPoolsPublicDataAsync())\n }, [dispatch, slowRefresh])\n}\n\n// Farms\n\nexport const useFarms = (): Farm[] => {\n const farms = useSelector((state: State) => state.farms.data)\n return farms\n}\n\nexport const useFarmFromPid = (pid): Farm => {\n const farm = useSelector((state: State) => state.farms.data.find((f) => f.pid === pid))\n return farm\n}\n\nexport const useFarmFromSymbol = (lpSymbol: string): Farm => {\n const farm = useSelector((state: State) => state.farms.data.find((f) => f.lpSymbol === lpSymbol))\n return farm\n}\n\nexport const useFarmUser = (pid) => {\n const farm = useFarmFromPid(pid)\n\n return {\n allowance: farm.userData ? new BigNumber(farm.userData.allowance) : new BigNumber(0),\n tokenBalance: farm.userData ? new BigNumber(farm.userData.tokenBalance) : new BigNumber(0),\n stakedBalance: farm.userData ? new BigNumber(farm.userData.stakedBalance) : new BigNumber(0),\n earnings: farm.userData ? new BigNumber(farm.userData.earnings) : new BigNumber(0),\n }\n}\n\n\n// Pools\n\nexport const usePools = (account): Pool[] => {\n const { fastRefresh } = useRefresh()\n const dispatch = useDispatch()\n useEffect(() => {\n if (account) {\n dispatch(fetchPoolsUserDataAsync(account))\n }\n }, [account, dispatch, fastRefresh])\n\n const pools = useSelector((state: State) => state.pools.data)\n return pools\n}\n\nexport const usePoolFromPid = (sousId): Pool => {\n const pool = useSelector((state: State) => state.pools.data.find((p) => p.sousId === sousId))\n return pool\n}\n\n// Prices\n\nexport const usePriceBnbBusd = (): BigNumber => {\n const pid = 4 // BUSD-BNB LP\n const farm = useFarmFromPid(pid)\n // return ZERO;\n return farm.tokenPriceVsQuote ? new BigNumber(farm.tokenPriceVsQuote) : ZERO\n}\n\nexport const usePriceCakeBusd = (): BigNumber => {\n const pid = 1 // CAKE-BNB LP\n const bnbPriceUSD = usePriceBnbBusd()\n const farm = useFarmFromPid(pid)\n return farm.tokenPriceVsQuote ? bnbPriceUSD.times(farm.tokenPriceVsQuote) : ZERO\n // const pid = 0; // EGG-BUSD LP\n // const farm = useFarmFromPid(pid);\n // return farm.tokenPriceVsQuote ? new BigNumber(farm.tokenPriceVsQuote) : ZERO;\n}\n\nexport const useTotalValue = (): BigNumber => {\n const farms = useFarms();\n const bnbPrice = usePriceBnbBusd();\n const cakePrice = usePriceCakeBusd();\n let value = new BigNumber(0);\n for (let i = 0; i < farms.length; i++) {\n const farm = farms[i]\n if (farm.lpTotalInQuoteToken) {\n let val;\n if (farm.quoteTokenSymbol === QuoteToken.BNB) {\n val = (bnbPrice.times(farm.lpTotalInQuoteToken));\n }else if (farm.quoteTokenSymbol === QuoteToken.CAKE) {\n val = (cakePrice.times(farm.lpTotalInQuoteToken));\n }else{\n val = (farm.lpTotalInQuoteToken);\n }\n value = value.plus(val);\n }\n }\n return value;\n}","import random from 'lodash/random'\n\n// Array of available nodes to connect to\nconst nodes = [process.env.REACT_APP_NODE_1, process.env.REACT_APP_NODE_2, process.env.REACT_APP_NODE_3]\n\nconst getNodeUrl = () => {\n const randomIndex = random(0, nodes.length - 1)\n return nodes[randomIndex]\n}\n\nexport default getNodeUrl\n","import React, { useState, useEffect } from 'react'\n\nconst FAST_INTERVAL = 10000\nconst SLOW_INTERVAL = 60000\n\nconst RefreshContext = React.createContext({ slow: 0, fast: 0 })\n\n// This context maintain 2 counters that can be used as a dependencies on other hooks to force a periodic refresh\nconst RefreshContextProvider = ({ children }) => {\n const [slow, setSlow] = useState(0)\n const [fast, setFast] = useState(0)\n\n useEffect(() => {\n const interval = setInterval(async () => {\n setFast((prev) => prev + 1)\n }, FAST_INTERVAL)\n return () => clearInterval(interval)\n }, [])\n\n useEffect(() => {\n const interval = setInterval(async () => {\n setSlow((prev) => prev + 1)\n }, SLOW_INTERVAL)\n return () => clearInterval(interval)\n }, [])\n\n return {children}\n}\n\nexport { RefreshContext, RefreshContextProvider }\n","export { fetchFarmsPublicDataAsync, fetchFarmUserDataAsync } from './farms'\nexport {\n fetchPoolsPublicDataAsync,\n fetchPoolsUserDataAsync,\n updateUserAllowance,\n updateUserBalance,\n updateUserPendingReward,\n updateUserStakedBalance,\n} from './pools'\n","import { useContext } from 'react'\nimport { RefreshContext } from 'contexts/RefreshContext'\n\nconst useRefresh = () => {\n const { fast, slow } = useContext(RefreshContext)\n return { fastRefresh: fast, slowRefresh: slow }\n}\n\nexport default useRefresh\n","import React, { createContext } from 'react'\n\nexport interface TranslationState {\n translations: Array\n setTranslations: React.Dispatch>>\n}\n\nconst defaultTranslationState: TranslationState = {\n translations: [],\n setTranslations: (): void => undefined,\n}\n\nexport const TranslationsContext = createContext(defaultTranslationState as TranslationState)\n","import styled from 'styled-components'\n\nconst Container = styled.div`\n margin-left: auto;\n margin-right: auto;\n max-width: 992px;\n padding-left: 16px;\n padding-right: 16px;\n\n ${({ theme }) => theme.mediaQueries.sm} {\n padding-left: 24px;\n padding-right: 24px;\n }\n`\n\nexport default Container\n","import styled from 'styled-components'\nimport Container from './Container'\n\nconst Page = styled(Container)`\n min-height: calc(100vh - 64px);\n padding-top: 16px;\n padding-bottom: 16px;\n\n ${({ theme }) => theme.mediaQueries.sm} {\n padding-top: 24px;\n padding-bottom: 24px;\n }\n\n ${({ theme }) => theme.mediaQueries.lg} {\n padding-top: 32px;\n padding-bottom: 32px;\n }\n`\n\nexport default Page\n","export type IfoStatus = 'coming_soon' | 'live' | 'finished'\n\nexport interface Ifo {\n id: string\n isActive: boolean\n address: string\n name: string\n subTitle?: string\n description?: string\n launchDate: string\n launchTime: string\n saleAmount: string\n raiseAmount: string\n cakeToBurn: string\n projectSiteUrl: string\n currency: string\n currencyAddress: string\n tokenDecimals: number\n releaseBlockNumber: number\n}\n\nexport enum QuoteToken {\n 'BNB' = 'BNB',\n 'CAKE' = 'CAKE',\n 'SYRUP' = 'SYRUP',\n 'BUSD' = 'BUSD',\n 'TWT' = 'TWT',\n 'USDT' = 'USDT',\n}\n\nexport enum PoolCategory {\n 'COMMUNITY' = 'Community',\n 'CORE' = 'Core',\n 'BINANCE' = 'Binance', // Pools using native BNB behave differently than pools using a token\n}\n\nexport interface Address {\n 97?: string\n 56: string\n}\n\nexport interface FarmConfig {\n pid: number\n lpSymbol: string\n lpAddresses: Address\n tokenSymbol: string\n tokenAddresses: Address\n quoteTokenSymbol: QuoteToken\n quoteTokenAdresses: Address\n multiplier?: string\n isTokenOnly?: boolean\n isCommunity?: boolean\n risk: number\n dual?: {\n rewardPerBlock: number\n earnLabel: string\n endBlock: number\n }\n}\n\nexport interface PoolConfig {\n sousId: number\n image?: string\n tokenName: string\n stakingTokenName: QuoteToken\n stakingLimit?: number\n stakingTokenAddress?: string\n contractAddress: Address\n poolCategory: PoolCategory\n projectLink: string\n tokenPerBlock: string\n sortOrder?: number\n harvest?: boolean\n isFinished?: boolean\n tokenDecimals: number\n}\n\nexport type Nft = {\n name: string\n description: string\n originalImage: string\n previewImage: string\n blurImage: string\n sortOrder: number\n bunnyId: number\n}\n","export default {\n cake: {\n 56: '0x980e2937677c7af859b0a9c741370c60c0a28b26',\n 97: '0xFC741A2e0620e438Bfae6A7f289b1bAe3B343Daa',\n },\n masterChef: {\n 56: '0x7aA3F97ce34139302D856F6861751Ce2F128a212',\n 97: '0xd1984594bcFe09efd2356b17c8dD8d93F1D4Bde0',\n },\n wbnb: {\n 56: '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c',\n 97: '0xae13d989dac2f0debff460ac112a837c89baa7cd',\n },\n\n usdt:{\n 56: '0x55d398326f99059fF775485246999027B3197955',\n 97: '0xae13d989dac2f0debff460ac112a837c89baa7cd',\n },\n lottery: {\n 56: '',\n 97: '',\n },\n lotteryNFT: {\n 56: '',\n 97: '',\n },\n mulltiCall: {\n 56: '0x1ee38d535d541c55c9dae27b12edf090c608e6fb',\n 97: '0x67ADCB4dF3931b0C5Da724058ADC2174a9844412',\n },\n busd: {\n 56: '0xe9e7cea3dedca5984780bafc599bd69add087d56',\n 97: '',\n },\n}\n","import { AbiItem } from 'web3-utils'\nimport { Interface } from '@ethersproject/abi'\nimport { getWeb3 } from 'utils/web3'\nimport MultiCallAbi from 'config/abi/Multicall.json'\nimport { getMulticallAddress } from 'utils/addressHelpers'\n\ninterface Call {\n address: string // Address of the contract\n name: string // Function name on the contract (exemple: balanceOf)\n params?: any[] // Function params\n}\n\nconst multicall = async (abi: any[], calls: Call[]) => {\n const web3 = getWeb3()\n const multi = new web3.eth.Contract((MultiCallAbi as unknown) as AbiItem, getMulticallAddress())\n const itf = new Interface(abi)\n\n const calldata = calls.map((call) => [call.address.toLowerCase(), itf.encodeFunctionData(call.name, call.params)])\n const { returnData } = await multi.methods.aggregate(calldata).call()\n const res = returnData.map((call, i) => itf.decodeFunctionResult(calls[i].name, call))\n\n return res\n}\n\nexport default multicall\n","import addresses from 'config/constants/contracts'\n\nconst chainId = process.env.REACT_APP_CHAIN_ID\n\nexport const getCakeAddress = () => {\n return addresses.cake[chainId]\n}\nexport const getMasterChefAddress = () => {\n return addresses.masterChef[chainId]\n}\nexport const getMulticallAddress = () => {\n return addresses.mulltiCall[chainId]\n}\nexport const getWbnbAddress = () => {\n return addresses.wbnb[chainId]\n}\nexport const getLotteryAddress = () => {\n return addresses.lottery[chainId]\n}\nexport const getLotteryTicketAddress = () => {\n return addresses.lotteryNFT[chainId]\n}\n","import { PoolConfig, QuoteToken, PoolCategory } from './types'\n\nconst pools: PoolConfig[] = [\n // {\n // sousId: 0,\n // tokenName: 'CAKE',\n // stakingTokenName: QuoteToken.CAKE,\n // stakingTokenAddress: '0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82',\n // contractAddress: {\n // 97: '0xd3af5fe61dbaf8f73149bfcfa9fb653ff096029a',\n // 56: '0x73feaa1eE314F8c655E354234017bE2193C9E24E',\n // },\n // poolCategory: PoolCategory.CORE,\n // projectLink: 'https://pancakeswap.finance/',\n // harvest: true,\n // tokenPerBlock: '10',\n // sortOrder: 1,\n // isFinished: false,\n // tokenDecimals: 18,\n // },\n // {\n // sousId: 1,\n // tokenName: 'TWT',\n // stakingTokenName: QuoteToken.SYRUP,\n // stakingTokenAddress: '0x009cF7bC57584b7998236eff51b98A168DceA9B0',\n // contractAddress: {\n // 97: '0xAfd61Dc94f11A70Ae110dC0E0F2061Af5633061A',\n // 56: '0xAfd61Dc94f11A70Ae110dC0E0F2061Af5633061A',\n // },\n // poolCategory: PoolCategory.CORE,\n // projectLink: 'https://trustwallet.com/',\n // harvest: true,\n // tokenPerBlock: '20',\n // sortOrder: 999,\n // isFinished: true,\n // tokenDecimals: 18,\n // },\n]\n\nexport default pools\n","import { AbiItem } from 'web3-utils'\nimport poolsConfig from 'config/constants/pools'\nimport masterChefABI from 'config/abi/masterchef.json'\nimport sousChefABI from 'config/abi/sousChef.json'\nimport erc20ABI from 'config/abi/erc20.json'\nimport { QuoteToken } from 'config/constants/types'\nimport multicall from 'utils/multicall'\nimport { getMasterChefAddress } from 'utils/addressHelpers'\nimport { getWeb3 } from 'utils/web3'\nimport BigNumber from 'bignumber.js'\n\nconst CHAIN_ID = process.env.REACT_APP_CHAIN_ID\n\n// Pool 0, Cake / Cake is a different kind of contract (master chef)\n// BNB pools use the native BNB token (wrapping ? unwrapping is done at the contract level)\nconst nonBnbPools = poolsConfig.filter((p) => p.stakingTokenName !== QuoteToken.BNB)\nconst bnbPools = poolsConfig.filter((p) => p.stakingTokenName === QuoteToken.BNB)\nconst nonMasterPools = poolsConfig.filter((p) => p.sousId !== 0)\nconst web3 = getWeb3()\nconst masterChefContract = new web3.eth.Contract((masterChefABI as unknown) as AbiItem, getMasterChefAddress())\n\nexport const fetchPoolsAllowance = async (account) => {\n const calls = nonBnbPools.map((p) => ({\n address: p.stakingTokenAddress,\n name: 'allowance',\n params: [account, p.contractAddress[CHAIN_ID]],\n }))\n\n const allowances = await multicall(erc20ABI, calls)\n return nonBnbPools.reduce(\n (acc, pool, index) => ({ ...acc, [pool.sousId]: new BigNumber(allowances[index]).toJSON() }),\n {},\n )\n}\n\nexport const fetchUserBalances = async (account) => {\n // Non BNB pools\n const calls = nonBnbPools.map((p) => ({\n address: p.stakingTokenAddress,\n name: 'balanceOf',\n params: [account],\n }))\n const tokenBalancesRaw = await multicall(erc20ABI, calls)\n const tokenBalances = nonBnbPools.reduce(\n (acc, pool, index) => ({ ...acc, [pool.sousId]: new BigNumber(tokenBalancesRaw[index]).toJSON() }),\n {},\n )\n\n // BNB pools\n const bnbBalance = await web3.eth.getBalance(account)\n const bnbBalances = bnbPools.reduce(\n (acc, pool) => ({ ...acc, [pool.sousId]: new BigNumber(bnbBalance).toJSON() }),\n {},\n )\n\n return { ...tokenBalances, ...bnbBalances }\n}\n\nexport const fetchUserStakeBalances = async (account) => {\n const calls = nonMasterPools.map((p) => ({\n address: p.contractAddress[CHAIN_ID],\n name: 'userInfo',\n params: [account],\n }))\n const userInfo = await multicall(sousChefABI, calls)\n const stakedBalances = nonMasterPools.reduce(\n (acc, pool, index) => ({\n ...acc,\n [pool.sousId]: new BigNumber(userInfo[index].amount._hex).toJSON(),\n }),\n {},\n )\n\n // Cake / Cake pool\n const { amount: masterPoolAmount } = await masterChefContract.methods.userInfo('0', account).call()\n\n return { ...stakedBalances, 0: new BigNumber(masterPoolAmount).toJSON() }\n}\n\nexport const fetchUserPendingRewards = async (account) => {\n const calls = nonMasterPools.map((p) => ({\n address: p.contractAddress[CHAIN_ID],\n name: 'pendingReward',\n params: [account],\n }))\n const res = await multicall(sousChefABI, calls)\n const pendingRewards = nonMasterPools.reduce(\n (acc, pool, index) => ({\n ...acc,\n [pool.sousId]: new BigNumber(res[index]).toJSON(),\n }),\n {},\n )\n\n // Cake / Cake pool\n const pendingReward = await masterChefContract.methods.pendingWISH('0', account).call()\n\n return { ...pendingRewards, 0: new BigNumber(pendingReward).toJSON() }\n}\n","/* eslint-disable no-param-reassign */\nimport { createSlice } from '@reduxjs/toolkit'\nimport poolsConfig from 'config/constants/pools'\nimport { fetchPoolsBlockLimits, fetchPoolsTotalStatking } from './fetchPools'\nimport {\n fetchPoolsAllowance,\n fetchUserBalances,\n fetchUserStakeBalances,\n fetchUserPendingRewards,\n} from './fetchPoolsUser'\nimport { PoolsState, Pool } from '../types'\n\nconst initialState: PoolsState = { data: [...poolsConfig] }\n\nexport const PoolsSlice = createSlice({\n name: 'Pools',\n initialState,\n reducers: {\n setPoolsPublicData: (state, action) => {\n const livePoolsData: Pool[] = action.payload\n state.data = state.data.map((pool) => {\n const livePoolData = livePoolsData.find((entry) => entry.sousId === pool.sousId)\n return { ...pool, ...livePoolData }\n })\n },\n setPoolsUserData: (state, action) => {\n const userData = action.payload\n state.data = state.data.map((pool) => {\n const userPoolData = userData.find((entry) => entry.sousId === pool.sousId)\n return { ...pool, userData: userPoolData }\n })\n },\n updatePoolsUserData: (state, action) => {\n const { field, value, sousId } = action.payload\n const index = state.data.findIndex((p) => p.sousId === sousId)\n state.data[index] = { ...state.data[index], userData: { ...state.data[index].userData, [field]: value } }\n },\n },\n})\n\n// Actions\nexport const { setPoolsPublicData, setPoolsUserData, updatePoolsUserData } = PoolsSlice.actions\n\n// Thunks\nexport const fetchPoolsPublicDataAsync = () => async (dispatch) => {\n const blockLimits = await fetchPoolsBlockLimits()\n const totalStakings = await fetchPoolsTotalStatking()\n\n const liveData = poolsConfig.map((pool) => {\n const blockLimit = blockLimits.find((entry) => entry.sousId === pool.sousId)\n const totalStaking = totalStakings.find((entry) => entry.sousId === pool.sousId)\n return {\n ...blockLimit,\n ...totalStaking,\n }\n })\n\n dispatch(setPoolsPublicData(liveData))\n}\n\nexport const fetchPoolsUserDataAsync = (account) => async (dispatch) => {\n const allowances = await fetchPoolsAllowance(account)\n const stakingTokenBalances = await fetchUserBalances(account)\n const stakedBalances = await fetchUserStakeBalances(account)\n const pendingRewards = await fetchUserPendingRewards(account)\n\n const userData = poolsConfig.map((pool) => ({\n sousId: pool.sousId,\n allowance: allowances[pool.sousId],\n stakingTokenBalance: stakingTokenBalances[pool.sousId],\n stakedBalance: stakedBalances[pool.sousId],\n pendingReward: pendingRewards[pool.sousId],\n }))\n\n dispatch(setPoolsUserData(userData))\n}\n\nexport const updateUserAllowance = (sousId: string, account: string) => async (dispatch) => {\n const allowances = await fetchPoolsAllowance(account)\n dispatch(updatePoolsUserData({ sousId, field: 'allowance', value: allowances[sousId] }))\n}\n\nexport const updateUserBalance = (sousId: string, account: string) => async (dispatch) => {\n const tokenBalances = await fetchUserBalances(account)\n dispatch(updatePoolsUserData({ sousId, field: 'stakingTokenBalance', value: tokenBalances[sousId] }))\n}\n\nexport const updateUserStakedBalance = (sousId: string, account: string) => async (dispatch) => {\n const stakedBalances = await fetchUserStakeBalances(account)\n dispatch(updatePoolsUserData({ sousId, field: 'stakedBalance', value: stakedBalances[sousId] }))\n}\n\nexport const updateUserPendingReward = (sousId: string, account: string) => async (dispatch) => {\n const pendingRewards = await fetchUserPendingRewards(account)\n dispatch(updatePoolsUserData({ sousId, field: 'pendingReward', value: pendingRewards[sousId] }))\n}\n\nexport default PoolsSlice.reducer\n","import contracts from './contracts'\nimport { FarmConfig, QuoteToken } from './types'\n\nconst farms: FarmConfig[] = [\n \n \n {\n pid: 0,\n risk: 5,\n isTokenOnly: true,\n lpSymbol: 'WISH',\n lpAddresses: {\n 97: '0xFC741A2e0620e438Bfae6A7f289b1bAe3B343Daa',\n 56: '0x9063ECe8577A0112FcEE5E3b8bb66fa212B020Ad', // AUTO-BNB LP\n },\n tokenSymbol: 'WISH',\n tokenAddresses: {\n 97: '0xFC741A2e0620e438Bfae6A7f289b1bAe3B343Daa',\n 56: '0x980e2937677c7af859b0a9c741370c60c0a28b26',\n },\n quoteTokenSymbol: QuoteToken.BNB,\n quoteTokenAdresses: contracts.wbnb,\n },\n\n {\n pid: 1,\n risk: 5,\n lpSymbol: 'WISH-BNB',\n lpAddresses: {\n 97: '0xFC741A2e0620e438Bfae6A7f289b1bAe3B343Daa',\n 56: '0x9063ECe8577A0112FcEE5E3b8bb66fa212B020Ad', // AUTO-BNB LP\n },\n tokenSymbol: 'WISH',\n tokenAddresses: {\n 97: '0xFC741A2e0620e438Bfae6A7f289b1bAe3B343Daa',\n 56: '0x980e2937677c7af859b0a9c741370c60c0a28b26',\n },\n quoteTokenSymbol: QuoteToken.BNB,\n quoteTokenAdresses: contracts.wbnb,\n },\n\n\n {\n pid: 2,\n risk: 5,\n lpSymbol: 'PRV-BNB',\n lpAddresses: {\n 97: '0xFC741A2e0620e438Bfae6A7f289b1bAe3B343Daa',\n 56: '0xCd18e1151a4831e5EbCEcC611369123012674253', // AUTO-BNB LP\n },\n tokenSymbol: 'PRV',\n tokenAddresses: {\n 97: '0xFC741A2e0620e438Bfae6A7f289b1bAe3B343Daa',\n 56: '0x7762a14082ab475c06d3868b385e46ae27017231',\n },\n quoteTokenSymbol: QuoteToken.BNB,\n quoteTokenAdresses: contracts.wbnb,\n },\n\n\n {\n pid: 3,\n risk: 5,\n lpSymbol: 'CAKE-BNB',\n lpAddresses: {\n 97: '0xFC741A2e0620e438Bfae6A7f289b1bAe3B343Daa',\n 56: '0x0eD7e52944161450477ee417DE9Cd3a859b14fD0', // AUTO-BNB LP\n },\n tokenSymbol: 'CAKE',\n tokenAddresses: {\n 97: '0xFC741A2e0620e438Bfae6A7f289b1bAe3B343Daa',\n 56: '0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82',\n },\n quoteTokenSymbol: QuoteToken.BNB,\n quoteTokenAdresses: contracts.wbnb,\n },\n\n\n {\n pid: 4,\n risk: 5,\n lpSymbol: 'BNB-BUSD',\n lpAddresses: {\n 97: '0xFC741A2e0620e438Bfae6A7f289b1bAe3B343Daa',\n 56: '0x58F876857a02D6762E0101bb5C46A8c1ED44Dc16', // AUTO-BNB LP\n },\n tokenSymbol: 'BNB',\n tokenAddresses: {\n 97: '0xFC741A2e0620e438Bfae6A7f289b1bAe3B343Daa',\n 56: '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c',\n },\n quoteTokenSymbol: QuoteToken.BUSD,\n quoteTokenAdresses: contracts.busd,\n },\n\n\n {\n pid: 5,\n risk: 5,\n lpSymbol: 'USDC-USDT',\n lpAddresses: {\n 97: '0xFC741A2e0620e438Bfae6A7f289b1bAe3B343Daa',\n 56: '0xEc6557348085Aa57C72514D67070dC863C0a5A8c', // AUTO-BNB LP //bnb -wish\n },\n tokenSymbol: 'USDC',\n tokenAddresses: {\n 97: '0xFC741A2e0620e438Bfae6A7f289b1bAe3B343Daa',\n 56: '0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d',\n },\n quoteTokenSymbol: QuoteToken.USDT,\n quoteTokenAdresses: contracts.usdt,\n },\n\n\n {\n pid: 6,\n risk: 5,\n lpSymbol: 'USDC-BUSD',\n lpAddresses: {\n 97: '0xFC741A2e0620e438Bfae6A7f289b1bAe3B343Daa',\n 56: '0x2354ef4DF11afacb85a5C7f98B624072ECcddbB1', // AUTO-BNB LP //\n },\n tokenSymbol: 'USDC',\n tokenAddresses: {\n 97: '0xFC741A2e0620e438Bfae6A7f289b1bAe3B343Daa',\n 56: '0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d',\n },\n quoteTokenSymbol: QuoteToken.BUSD,\n quoteTokenAdresses: contracts.busd,\n },\n\n\n\n {\n pid: 7,\n risk: 5,\n lpSymbol: 'BTCB-BNB',\n lpAddresses: {\n 97: '0xFC741A2e0620e438Bfae6A7f289b1bAe3B343Daa',\n 56: '0x61EB789d75A95CAa3fF50ed7E47b96c132fEc082', // AUTO-BNB LP\n },\n tokenSymbol: 'BTCB',\n tokenAddresses: {\n 97: '0xFC741A2e0620e438Bfae6A7f289b1bAe3B343Daa',\n 56: '0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c',\n },\n quoteTokenSymbol: QuoteToken.BNB,\n quoteTokenAdresses: contracts.wbnb,\n },\n\n {\n pid: 8,\n risk: 5,\n lpSymbol: 'ETH-BNB',\n lpAddresses: {\n 97: '0xFC741A2e0620e438Bfae6A7f289b1bAe3B343Daa',\n 56: '0x74E4716E431f45807DCF19f284c7aA99F18a4fbc', // AUTO-BNB LP\n },\n tokenSymbol: 'ETH',\n tokenAddresses: {\n 97: '0xFC741A2e0620e438Bfae6A7f289b1bAe3B343Daa',\n 56: '0x2170Ed0880ac9A755fd29B2688956BD959F933F8',\n },\n quoteTokenSymbol: QuoteToken.BNB,\n quoteTokenAdresses: contracts.wbnb,\n },\n\n {\n pid: 9,\n risk: 5,\n isTokenOnly: true,\n lpSymbol: 'BUSD',\n lpAddresses: {\n 97: '0xFC741A2e0620e438Bfae6A7f289b1bAe3B343Daa',\n 56: '0xe9e7cea3dedca5984780bafc599bd69add087d56', // AUTO-BNB LP\n },\n tokenSymbol: 'BUSD',\n tokenAddresses: {\n 97: '0xFC741A2e0620e438Bfae6A7f289b1bAe3B343Daa',\n 56: '0xe9e7cea3dedca5984780bafc599bd69add087d56',\n },\n quoteTokenSymbol: QuoteToken.BUSD,\n quoteTokenAdresses: contracts.busd,\n },\n\n {\n pid: 10,\n risk: 5,\n isTokenOnly: true,\n lpSymbol: 'WBNB',\n lpAddresses: {\n 97: '0xFC741A2e0620e438Bfae6A7f289b1bAe3B343Daa',\n 56: '0x58F876857a02D6762E0101bb5C46A8c1ED44Dc16', // AUTO-BNB LP\n },\n tokenSymbol: 'WBNB',\n tokenAddresses: {\n 97: '0xFC741A2e0620e438Bfae6A7f289b1bAe3B343Daa',\n 56: '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c',\n },\n quoteTokenSymbol: QuoteToken.BUSD,\n quoteTokenAdresses: contracts.busd,\n },\n\n\n\n\n \n \n]\n\nexport default farms\n","import { createGlobalStyle } from 'styled-components'\n// eslint-disable-next-line import/no-unresolved\nimport { PancakeTheme } from '@pancakeswap-libs/uikit'\n\ndeclare module 'styled-components' {\n /* eslint-disable @typescript-eslint/no-empty-interface */\n export interface DefaultTheme extends PancakeTheme {}\n}\n\nconst GlobalStyle = createGlobalStyle`\n * {\n font-family: 'Kanit', sans-serif;\n }\n body {\n background-color: ${({ theme }) => theme.colors.background};\n\n img {\n height: auto;\n max-width: 100%;\n }\n }\n`\n\nexport default GlobalStyle\n","export const EN = { code: 'en', language: 'English' }\nexport const AR = { code: 'ar', language: 'العربية' }\nexport const CA = { code: 'ca', language: 'Català' }\nexport const ZHCN = { code: 'zh-CN', language: '简体中文' }\nexport const ZHTW = { code: 'zh-TW', language: '繁體中文' }\nexport const CS = { code: 'cs', language: 'Čeština' }\nexport const DA = { code: 'da', language: 'Dansk' }\nexport const DE = { code: 'de', language: 'Deutsch' }\nexport const NL = { code: 'nl', language: 'Nederlands' }\nexport const FIL = { code: 'fil', language: 'Filipino' }\nexport const FI = { code: 'fi', language: 'Suomalainen' }\nexport const FR = { code: 'fr', language: 'Français' }\nexport const EL = { code: 'el', language: 'Ελληνικά' }\nexport const HI = { code: 'hi', language: 'हिंदी' }\nexport const HU = { code: 'hu', language: 'Magyar' }\nexport const ID = { code: 'id', language: 'Bahasa Indonesia' }\nexport const IT = { code: 'it', language: 'Italiano' }\nexport const JA = { code: 'ja', language: '日本語' }\nexport const KO = { code: 'ko', language: '한국어' }\nexport const PTBR = { code: 'pt-BR', language: 'Português' }\nexport const RO = { code: 'ro', language: 'Română' }\nexport const RU = { code: 'ru', language: 'Русский' }\nexport const SR = { code: 'sr', language: 'Српски' }\nexport const ESES = { code: 'es-ES', language: 'Español' }\nexport const SVSE = { code: 'sv-SE', language: 'Svenska' }\nexport const TA = { code: 'ta', language: 'தமிழ்' }\nexport const TR = { code: 'tr', language: 'Türkçe' }\nexport const UK = { code: 'uk', language: 'Українська' }\nexport const VI = { code: 'vi', language: 'Tiếng Việt' }\n\nexport const allLanguages = [\n EN,\n // AR,\n // CA,\n ZHCN,\n ZHTW,\n // CS,\n // DA,\n // DE,\n // NL,\n // FIL,\n // FI,\n // FR,\n // EL,\n // HI,\n // HU,\n // ID,\n // IT,\n // JA,\n // KO,\n // PTBR,\n // RO,\n // RU,\n // SR,\n // ESES,\n // SVSE,\n // TA,\n // TR,\n // UK,\n // VI,\n]\n","import React, { useState, useEffect } from 'react'\nimport { StringTranslations } from '@crowdin/crowdin-api-client'\nimport { TranslationsContext } from 'contexts/Localisation/translationsContext'\nimport { allLanguages, EN } from 'config/localisation/languageCodes'\n\nconst CACHE_KEY = 'pancakeSwapLanguage'\n\nexport interface LangType {\n code: string\n language: string\n}\n\nexport interface LanguageState {\n selectedLanguage: LangType\n setSelectedLanguage: (langObject: LangType) => void\n translatedLanguage: LangType\n setTranslatedLanguage: React.Dispatch>\n}\n\nconst LanguageContext = React.createContext({\n selectedLanguage: EN,\n setSelectedLanguage: () => undefined,\n translatedLanguage: EN,\n setTranslatedLanguage: () => undefined,\n} as LanguageState)\n\nconst fileId = 8\nconst projectId = parseInt(process.env.REACT_APP_CROWDIN_PROJECTID)\nconst stringTranslationsApi = new StringTranslations({\n token: process.env.REACT_APP_CROWDIN_APIKEY,\n})\n\nconst fetchTranslationsForSelectedLanguage = (selectedLanguage) => {\n return stringTranslationsApi.listLanguageTranslations(projectId, selectedLanguage.code, undefined, fileId, 200)\n}\n\nconst LanguageContextProvider = ({ children }) => {\n const [selectedLanguage, setSelectedLanguage] = useState(EN)\n const [translatedLanguage, setTranslatedLanguage] = useState(EN)\n const [translations, setTranslations] = useState>([])\n\n const getStoredLang = (storedLangCode: string) => {\n return allLanguages.filter((language) => {\n return language.code === storedLangCode\n })[0]\n }\n\n useEffect(() => {\n const storedLangCode = localStorage.getItem(CACHE_KEY)\n if (storedLangCode) {\n const storedLang = getStoredLang(storedLangCode)\n setSelectedLanguage(storedLang)\n } else {\n setSelectedLanguage(EN)\n }\n }, [])\n\n useEffect(() => {\n if (selectedLanguage) {\n console.log(`import(\\`../../../public/i18n/${selectedLanguage.code}.json\\`)`);\n fetch(`./i18n/${selectedLanguage.code}.json`)\n .then(r=>r.json())\n // fetchTranslationsForSelectedLanguage(selectedLanguage)\n .then((translationApiResponse) => {\n if (translationApiResponse.data.length < 1) {\n setTranslations(['error'])\n } else {\n setTranslations(translationApiResponse.data)\n }\n })\n .then(() => setTranslatedLanguage(selectedLanguage))\n .catch((e) => {\n console.error(\"ERROR\");\n console.error(e);\n setTranslations(['error'])\n })\n }\n }, [selectedLanguage, setTranslations])\n\n const handleLanguageSelect = (langObject: LangType) => {\n setSelectedLanguage(langObject)\n localStorage.setItem(CACHE_KEY, langObject.code)\n }\n\n return (\n \n {children}\n \n )\n}\n\nexport { LanguageContext, LanguageContextProvider }\n","import React, { useState } from 'react'\nimport { ThemeProvider as SCThemeProvider } from 'styled-components'\nimport { light, dark } from '@pancakeswap-libs/uikit'\n\nconst CACHE_KEY = 'IS_DARK'\n\nconst ThemeContext = React.createContext({ isDark: null, toggleTheme: () => null })\n\nconst ThemeContextProvider = ({ children }) => {\n const [isDark, setIsDark] = useState(() => {\n const isDarkUserSetting = localStorage.getItem(CACHE_KEY)\n return isDarkUserSetting ? JSON.parse(isDarkUserSetting) : false\n })\n\n const toggleTheme = () => {\n setIsDark((prevState) => {\n localStorage.setItem(CACHE_KEY, JSON.stringify(!prevState))\n return !prevState\n })\n }\n\n return (\n \n {children}\n \n )\n}\n\nexport { ThemeContext, ThemeContextProvider }\n","import { useContext } from 'react'\nimport { ThemeContext as StyledThemeCopntext } from 'styled-components'\nimport { ThemeContext } from 'contexts/ThemeContext'\n\nconst useTheme = () => {\n const { isDark, toggleTheme } = useContext(ThemeContext)\n const theme = useContext(StyledThemeCopntext)\n return { isDark, toggleTheme, theme }\n}\n\nexport default useTheme\n","import { MenuEntry } from '@pancakeswap-libs/uikit'\n\nconst config: MenuEntry[] = [\n {\n label: 'Home',\n icon: 'HomeIcon',\n href: '/',\n },\n {\n label: 'Trade',\n icon: 'TradeIcon',\n items: [\n {\n label: 'Exchange',\n href: 'https://exchange.wishfinance.io/#/swap', // 'https://exchange.goosedefi.com/',\n },\n {\n label: 'Liquidity',\n href: 'https://exchange.wishfinance.io/#/pool ', // 'https://exchange.goosedefi.com/#/pool',\n },\n ],\n },\n {\n label: 'Farms', // 'Farms',\n icon: 'FarmIcon',\n href: '/farms',\n },\n {\n label: 'Pool', // 'Nests',\n icon: 'PoolIcon',\n href: '/pools',\n },\n\n\n {\n label: 'Price Charts',\n icon: 'InfoIcon',\n initialOpenState: false,\n items: [\n // {\n // label:\"GitBook\",\n // href:\"https://wishfinance.gitbook.io/wishfinance/tokenomics/wish-token-wish\"\n // },\n {\n label: 'Dex Guru',\n href: 'https://dex.guru/token/0x980e2937677c7af859b0a9c741370c60c0a28b26-bsc',\n },\n {\n label: 'Poo Coin',\n href: 'https://poocoin.app/tokens/0x980e2937677c7af859b0a9c741370c60c0a28b26',\n },\n // {\n // label: 'Bogged Finance',\n // href: 'https://charts.bogged.finance/?token=0x980e2937677c7af859b0a9c741370c60c0a28b26',\n // },\n // {\n // label: 'Dex Tools',\n // href: 'https://www.dextools.io/app/pancakeswap/pair-explorer/0x9063ECe8577A0112FcEE5E3b8bb66fa212B020Ad',\n // },\n ],\n },\n\n\n \n\n {\n label: 'Docs',\n icon: 'GroupsIcon',\n initialOpenState: false,\n items: [\n {\n label:\"GitBook\",\n href:\"https://wishfinance.gitbook.io/wishfinance/tokenomics/wish-token-wish\"\n },\n \n // {\n // label: 'Bogged Finance',\n // href: 'https://charts.bogged.finance/?token=0x980e2937677c7af859b0a9c741370c60c0a28b26',\n // },\n // {\n // label: 'Dex Tools',\n // href: 'https://www.dextools.io/app/pancakeswap/pair-explorer/0x9063ECe8577A0112FcEE5E3b8bb66fa212B020Ad',\n // },\n ],\n },\n\n // {\n // label: 'Pools',\n // icon: 'PoolIcon',\n // href: '/pools',\n // },\n // {\n // label: 'Lottery',\n // icon: 'TicketIcon',\n // href: '/lottery',\n // },\n // {\n // label: 'NFT',\n // icon: 'NftIcon',\n // href: '/nft',\n // },\n // {\n // label: 'Info',\n // icon: 'InfoIcon',\n // items: [\n // {\n // label: 'WishFinance',\n // href: '/', // 'https://pancakeswap.info/token/0xF952Fc3ca7325Cc27D15885d37117676d25BfdA6',\n // },\n // {\n // label: 'CoinGecko',\n // href: '/', // 'https://www.coingecko.com/en/coins/goose-finance',\n // },\n // {\n // label: 'CoinMarketCap',\n // href: '/', // 'https://coinmarketcap.com/currencies/goose-finance/',\n // },\n // {\n // label: 'AstroTools',\n // href: '/', // 'https://app.astrotools.io/pancake-pair-explorer/0x19e7cbecdd23a16dfa5573df54d98f7caae03019',\n // },\n // ],\n // },\n // {\n // label: 'More',\n // icon: 'MoreIcon',\n // items: [\n // {\n // label: 'Github',\n // href: '/', // 'https://github.com/goosedefi/',\n // },\n // {\n // label: 'Docs',\n // href: '/', // 'https://goosedefi.gitbook.io/goose-finance/',\n // },\n // {\n // label: 'Blog',\n // href: '/', // 'https://goosefinance.medium.com/',\n // },\n // ],\n // },\n // {\n // label: 'Partnerships/IFO',\n // icon: 'GooseIcon',\n // href: '/', // 'https://docs.google.com/forms/d/e/1FAIpQLSe7ycrw8Dq4C5Vjc9WNlRtTxEhFDB1Ny6jlAByZ2Y6qBo7SKg/viewform?usp=sf_link',\n // },\n // {\n // label: 'Audit by Hacken',\n // icon: 'AuditIcon',\n // href: '/', // 'https://www.goosedefi.com/files/hackenAudit.pdf',\n // },\n // {\n // label: 'Audit by CertiK',\n // icon: 'AuditIcon',\n // href: '/', // 'https://certik.org/projects/goose-finance',\n // },\n]\n\nexport default config\n","import React, { useContext } from 'react'\nimport { useWallet } from '@binance-chain/bsc-use-wallet'\nimport { allLanguages } from 'config/localisation/languageCodes'\nimport { LanguageContext } from 'contexts/Localisation/languageContext'\nimport useTheme from 'hooks/useTheme'\nimport { usePriceCakeBusd } from 'state/hooks'\nimport { Menu as UikitMenu } from '@pancakeswap-libs/uikit'\nimport config from './config'\n\nconst Menu = (props) => {\n const { account, connect, reset } = useWallet()\n const { selectedLanguage, setSelectedLanguage } = useContext(LanguageContext)\n const { isDark, toggleTheme } = useTheme()\n const cakePriceUsd = usePriceCakeBusd()\n\n return (\n \n )\n}\n\nexport default Menu\n","import React from 'react'\nimport styled from 'styled-components'\nimport { Spinner } from '@pancakeswap-libs/uikit'\nimport Page from './layout/Page'\n\nconst Wrapper = styled(Page)`\n display: flex;\n justify-content: center;\n align-items: center;\n`\n\nconst PageLoader: React.FC = () => {\n return (\n \n \n \n )\n}\n\nexport default PageLoader\n","import React, { useEffect, Suspense, lazy } from 'react'\nimport { BrowserRouter as Router, Redirect, Route, Switch } from 'react-router-dom'\nimport { useWallet } from '@binance-chain/bsc-use-wallet'\nimport { ResetCSS } from '@pancakeswap-libs/uikit'\nimport BigNumber from 'bignumber.js'\nimport { useFetchPublicData } from 'state/hooks'\nimport GlobalStyle from './style/Global'\nimport Menu from './components/Menu'\nimport PageLoader from './components/PageLoader'\nimport NftGlobalNotification from './views/Nft/components/NftGlobalNotification'\n\n// Route-based code splitting\n// Only pool is included in the main bundle because of it's the most visited page'\nconst Home = lazy(() => import('./views/Home'))\nconst Farms = lazy(() => import('./views/Farms'))\n// const Lottery = lazy(() => import('./views/Lottery'))\n// const Pools = lazy(() => import('./views/Pools'))\n// const Ifos = lazy(() => import('./views/Ifos'))\nconst NotFound = lazy(() => import('./views/NotFound'))\n// const Nft = lazy(() => import('./views/Nft'))\n\n// This config is required for number formating\nBigNumber.config({\n EXPONENTIAL_AT: 1000,\n DECIMAL_PLACES: 80,\n})\n\nconst App: React.FC = () => {\n const { account, connect } = useWallet()\n useEffect(() => {\n if (!account && window.localStorage.getItem('accountStatus')) {\n connect('injected')\n }\n }, [account, connect])\n\n useFetchPublicData()\n\n return (\n \n \n \n \n {/* */}\n \n )\n}\n\nexport default React.memo(App)\n","import React, { useState, useEffect, useRef } from 'react'\nimport { getWeb3 } from 'utils/web3'\n\nconst BlockContext = React.createContext(0)\n\nconst BlockContextProvider = ({ children }) => {\n const previousBlock = useRef(0)\n const [block, setBlock] = useState(0)\n\n useEffect(() => {\n const web3 = getWeb3()\n const interval = setInterval(async () => {\n const blockNumber = await web3.eth.getBlockNumber()\n if (blockNumber !== previousBlock.current) {\n previousBlock.current = blockNumber\n setBlock(blockNumber)\n }\n }, 6000)\n\n return () => clearInterval(interval)\n }, [])\n\n return {children}\n}\n\nexport { BlockContext, BlockContextProvider }\n","import { configureStore } from '@reduxjs/toolkit'\nimport farmsReducer from './farms'\nimport poolsReducer from './pools'\n\nexport default configureStore({\n devTools: process.env.NODE_ENV !== 'production',\n reducer: {\n farms: farmsReducer,\n pools: poolsReducer,\n },\n})\n","import React from 'react'\nimport { ModalProvider } from '@pancakeswap-libs/uikit'\n// import bsc, { UseWalletProvider } from '@binance-chain/bsc-use-wallet'\nimport * as bsc from '@binance-chain/bsc-use-wallet'\nimport { Provider } from 'react-redux'\nimport getRpcUrl from 'utils/getRpcUrl'\nimport { LanguageContextProvider } from 'contexts/Localisation/languageContext'\nimport { ThemeContextProvider } from 'contexts/ThemeContext'\nimport { BlockContextProvider } from 'contexts/BlockContext'\nimport { RefreshContextProvider } from 'contexts/RefreshContext'\nimport store from 'state'\n\nconst Providers: React.FC = ({ children }) => {\n const rpcUrl = getRpcUrl()\n const chainId = parseInt(process.env.REACT_APP_CHAIN_ID);\n return (\n \n \n \n \n \n \n {children}\n \n \n \n \n \n \n )\n}\n\nexport default Providers\n","import React from 'react'\nimport ReactDOM from 'react-dom'\nimport App from './App'\nimport Providers from './Providers'\n\nReactDOM.render(\n \n \n \n \n ,\n document.getElementById('root'),\n)\n","import Web3 from 'web3'\nimport { HttpProviderOptions } from 'web3-core-helpers'\nimport { AbiItem } from 'web3-utils'\nimport { ContractOptions } from 'web3-eth-contract'\nimport getRpcUrl from 'utils/getRpcUrl'\n\nconst RPC_URL = getRpcUrl()\nconst httpProvider = new Web3.providers.HttpProvider(RPC_URL, { timeout: 10000 } as HttpProviderOptions)\n\n/**\n * Provides a web3 instance using our own private provider httpProver\n */\nconst getWeb3 = () => {\n const web3 = new Web3(httpProvider)\n return web3\n}\nconst getContract = (abi: any, address: string, contractOptions?: ContractOptions) => {\n const web3 = getWeb3()\n return new web3.eth.Contract((abi as unknown) as AbiItem, address, contractOptions)\n}\n\nexport { getWeb3, getContract, httpProvider }\n"],"sourceRoot":""}