{"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","utils/multicall.ts","config/constants/contracts.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","lpTokenRatio","quoteTokenAmount","comparedTo","masterchefABI","pid","info","totalAllocPoint","scxPerBlock","allocPoint","_hex","poolWeight","toJSON","toNumber","multiplier","toString","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","console","log","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","abi","web3","getWeb3","multi","eth","Contract","MultiCallAbi","getMulticallAddress","itf","Interface","calldata","call","toLowerCase","encodeFunctionData","methods","aggregate","returnData","res","decodeFunctionResult","cake","56","97","masterChef","wbnb","lottery","usdt","lotteryNFT","mulltiCall","busd","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","pendingSCX","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","Exchange","NotFound","EXPONENTIAL_AT","DECIMAL_PLACES","App","window","src","alt","style","zIndex","position","top","left","width","height","Global","fallback","path","exact","tokenMode","component","bottom","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.a3bf1b3d.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 [tokenBalanceLP, quoteTokenBlanceLP, lpTokenBalanceMC, lpTotalSupply, tokenDecimals, 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 } 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 // 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, scxPerBlock] = 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: 'scxPerBlock',\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 scxPerBlock: new BigNumber(scxPerBlock).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: 'pendingSCX',\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// 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 = 3 // BUSD-BNB LP\n const farm = useFarmFromPid(pid)\n return farm.tokenPriceVsQuote ? new BigNumber(farm.tokenPriceVsQuote) : ZERO\n}\n\nexport const usePriceCakeBusd = (): BigNumber => {\n const pid = 0 // CAKE-BNB LP\n const bnbPriceUSD = usePriceBnbBusd()\n const farm = useFarmFromPid(pid)\nconsole.log(\"bnbpriceeee\",bnbPriceUSD.toNumber())\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 \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}\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 'UST' = 'UST',\n 'USDT' = 'USDT',\n\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","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","export default {\n cake: {\n 56: '0x73972F91fbFd8673Eafaab0105481A90D25E153d',\n 97: '0x1de7921C03AC76894e8c930654A12c60d4979217',\n },\n masterChef: {\n 56: '0xe50b2bE455517b59170887d883963536e50eD262',\n 97: '0x69732418b7CCAAfE0bD42d37A0e66A788b93DA9c',\n },\n wbnb: {\n 56: '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c',\n 97: '0xae13d989dac2f0debff460ac112a837c89baa7cd',\n },\n lottery: {\n 56: '',\n 97: '',\n },\n usdt: {\n 56: '0x55d398326f99059ff775485246999027b3197955',\n 97: '',\n },\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 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.pendingSCX('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 pid: 8,\n risk: 5,\n isTokenOnly: true,\n lpSymbol: 'SCX',\n lpAddresses: {\n 97: '0x1de7921C03AC76894e8c930654A12c60d4979217',\n 56: '0xAd745402E568A1880c95e7BC1B927E3BD2f11B60', // AUTO-BNB LP\n },\n tokenSymbol: 'SCX',\n tokenAddresses: {\n 97: '0x1de7921C03AC76894e8c930654A12c60d4979217',\n 56: '0x73972F91fbFd8673Eafaab0105481A90D25E153d',\n },\n quoteTokenSymbol: QuoteToken.BNB,\n quoteTokenAdresses: contracts.wbnb,\n },\n\n\n {\n pid: 0,\n risk: 5,\n // isTokenOnly: true,\n lpSymbol: 'SCX-BNB',\n lpAddresses: {\n 97: '0x1de7921C03AC76894e8c930654A12c60d4979217',\n 56: '0xAd745402E568A1880c95e7BC1B927E3BD2f11B60', // AUTO-BNB LP\n },\n tokenSymbol: 'SCX',\n tokenAddresses: {\n 97: '0x1de7921C03AC76894e8c930654A12c60d4979217',\n 56: '0x73972F91fbFd8673Eafaab0105481A90D25E153d',\n },\n quoteTokenSymbol: QuoteToken.BNB,\n quoteTokenAdresses: contracts.wbnb,\n },\n {\n pid: 1,\n risk: 5,\n // isTokenOnly: true,\n lpSymbol: 'SCX-BUSD',\n lpAddresses: {\n 97: '0x1de7921C03AC76894e8c930654A12c60d4979217',\n 56: '0x2A12fdCBf11CA67560Bb8b37e97112694548D1fC', // AUTO-BNB LP\n },\n tokenSymbol: 'SCX',\n tokenAddresses: {\n 97: '0x1de7921C03AC76894e8c930654A12c60d4979217',\n 56: '0x73972F91fbFd8673Eafaab0105481A90D25E153d',\n },\n quoteTokenSymbol: QuoteToken.BUSD,\n quoteTokenAdresses: contracts.busd,\n },\n\n\n\n {\n pid: 2,\n risk: 5,\n // isTokenOnly: true,\n lpSymbol: 'CAKE-BNB',\n lpAddresses: {\n 97: '0x1de7921C03AC76894e8c930654A12c60d4979217',\n 56: '0x0eD7e52944161450477ee417DE9Cd3a859b14fD0', // AUTO-BNB LP\n },\n tokenSymbol: 'CAKE',\n tokenAddresses: {\n 97: '0x1de7921C03AC76894e8c930654A12c60d4979217',\n 56: '0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82',\n },\n quoteTokenSymbol: QuoteToken.BNB,\n quoteTokenAdresses: contracts.wbnb,\n },\n\n\n\n {\n pid: 3,\n risk: 5,\n // isTokenOnly: true,\n lpSymbol: 'BUSD-BNB',\n lpAddresses: {\n 97: '0x1de7921C03AC76894e8c930654A12c60d4979217',\n 56: '0x58F876857a02D6762E0101bb5C46A8c1ED44Dc16', // AUTO-BNB LP\n },\n tokenSymbol: 'BNB',\n tokenAddresses: {\n 97: '0x1de7921C03AC76894e8c930654A12c60d4979217',\n 56: '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c',\n },\n quoteTokenSymbol: QuoteToken.BUSD,\n quoteTokenAdresses: contracts.busd,\n },\n\n {\n pid: 4,\n risk: 5,\n // isTokenOnly: true,\n lpSymbol: 'USDC-USDT',\n lpAddresses: {\n 97: '0x1de7921C03AC76894e8c930654A12c60d4979217',\n 56: '0xEc6557348085Aa57C72514D67070dC863C0a5A8c', // AUTO-BNB LP\n },\n tokenSymbol: 'USDC',\n tokenAddresses: {\n 97: '0x1de7921C03AC76894e8c930654A12c60d4979217',\n 56: '0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d',\n },\n quoteTokenSymbol: QuoteToken.USDT,\n quoteTokenAdresses: contracts.usdt,\n },\n\n\n\n {\n pid: 5,\n risk: 5,\n // isTokenOnly: true,\n lpSymbol: 'USDC-BUSD',\n lpAddresses: {\n 97: '0x1de7921C03AC76894e8c930654A12c60d4979217',\n 56: '0x2354ef4DF11afacb85a5C7f98B624072ECcddbB1', // AUTO-BNB LP\n },\n tokenSymbol: 'USDC',\n tokenAddresses: {\n 97: '0x1de7921C03AC76894e8c930654A12c60d4979217',\n 56: '0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d',\n },\n quoteTokenSymbol: QuoteToken.BUSD,\n quoteTokenAdresses: contracts.busd,\n },\n\n\n {\n pid: 6,\n risk: 5,\n // isTokenOnly: true,\n lpSymbol: 'BTCB-BNB',\n lpAddresses: {\n 97: '0x1de7921C03AC76894e8c930654A12c60d4979217',\n 56: '0x61EB789d75A95CAa3fF50ed7E47b96c132fEc082', // AUTO-BNB LP\n },\n tokenSymbol: 'BTCB',\n tokenAddresses: {\n 97: '0x1de7921C03AC76894e8c930654A12c60d4979217',\n 56: '0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c',\n },\n quoteTokenSymbol: QuoteToken.BNB,\n quoteTokenAdresses: contracts.wbnb,\n },\n\n\n {\n pid: 7,\n risk: 5,\n // isTokenOnly: true,\n lpSymbol: 'ETH-BNB',\n lpAddresses: {\n 97: '0x1de7921C03AC76894e8c930654A12c60d4979217',\n 56: '0x74E4716E431f45807DCF19f284c7aA99F18a4fbc', // AUTO-BNB LP\n },\n tokenSymbol: 'ETH',\n tokenAddresses: {\n 97: '0x1de7921C03AC76894e8c930654A12c60d4979217',\n 56: '0x2170ed0880ac9a755fd29b2688956bd959f933f8',\n },\n quoteTokenSymbol: QuoteToken.BNB,\n quoteTokenAdresses: contracts.wbnb,\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 {\n label: 'SecureFarms',\n icon: 'FarmIcon',\n href: '/farms',\n },\n {\n label: 'SecurePools',\n icon: 'PoolIcon',\n href: '/nests',\n },\n {\n label: 'Trade',\n icon: 'TradeIcon',\n items: [\n {\n label: 'Exchange',\n href: 'https://exchange.secureswap.io/#/swap?outputCurrency=0x73972F91fbFd8673Eafaab0105481A90D25E153d', // 'https://exchange.goosedefi.com/',\n },\n {\n label: 'Liquidity',\n href: 'https://exchange.secureswap.io/#/pool', // 'https://exchange.goosedefi.com/#/pool',\n },\n ],\n },\n // {\n // label:\"SecureVaults\",\n // icon:'VaultsIcon',\n // href:\"\"\n // },\n // {\n // label:\"SecureCard\",\n // icon:'BondsIcon',\n // href:\"\"\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 {\n label: 'Price Charts',\n icon: 'GroupsIcon',\n initialOpenState: false,\n items: [\n {\n label: 'Dex Guru',\n href: 'https://dex.guru/token/0x73972F91fbFd8673Eafaab0105481A90D25E153d-bsc',\n },\n {\n label: 'Poo Coin',\n href: 'https://poocoin.app/tokens/0x73972F91fbFd8673Eafaab0105481A90D25E153d',\n },\n {\n label: 'Bogged Finance',\n href: 'https://charts.bogged.finance/?token=0x73972F91fbFd8673Eafaab0105481A90D25E153d',\n },\n {\n label: 'Dex Tools',\n href: 'https://www.dextools.io/app/bsc/pair-explorer/0x2a12fdcbf11ca67560bb8b37e97112694548d1fc',\n },\n ],\n },\n\n {\n label: 'Audit',\n icon: 'AuditIcon',\n href: '',\n },\n\n {\n label: 'More',\n icon: 'MoreIcon',\n items: [\n // {\n // label: 'Github',\n // href: '',\n // },\n\n {\n label: 'Yield Calculator',\n href: 'https://vfat.tools/bsc/secureswap/',\n },\n {\n label: 'Docs',\n href: 'https://docs.secureswap.io',\n },\n {\n label: 'Blog',\n href: 'https://secureswap.medium.com/',\n },\n ],\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'))\nconst Exchange = lazy(() => import('./views/Exchange'))\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 (localStorage.getItem('IS_DARK') === 'false') {\n console.log('logic right')\n // localStorage.setItem(\"IS_DARK\", \"true\")\n }\n if (localStorage.getItem('IS_DARK') === 'true') {\n console.log('logic right')\n // localStorage.setItem(\"IS_DARK\", \"true\")\n } else {\n localStorage.setItem('IS_DARK', 'false')\n }\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 \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":""}