{"version":3,"sources":["state/farms/fetchFarms.ts","state/farms/fetchFarmUser.ts","state/farms/index.ts","state/hooks.ts","contexts/Localisation/languageContext.tsx","contexts/ThemeContext.tsx","contexts/RefreshContext.tsx","hooks/useRefresh.ts","utils/erc20.ts","utils/translateTextHelpers.ts","hooks/useI18n.ts","components/layout/Page.tsx","hooks/useApprove.ts","components/layout/Container.tsx","components/layout/Flex.tsx","config/constants/index.ts","config/constants/types.ts","hooks/useAllowance.ts","utils/addressHelpers.ts","utils/multicall.ts","config/constants/contracts.ts","hooks/useWeb3.ts","hooks/useContract.ts","config/constants/pools.ts","config/constants/farms.ts","state/pools/fetchPoolsUser.ts","state/pools/index.ts","views/Casino/components/Game.tsx","views/Casino/Casino.tsx","style/Global.tsx","hooks/useTheme.ts","components/Menu/config.ts","components/Menu/index.tsx","components/PageLoader.tsx","views/Nft/components/NftGlobalNotification.tsx","App.tsx","contexts/BlockContext.tsx","state/index.ts","Providers.tsx","index.tsx","config/localisation/languageCodes.ts","state/actions.ts","utils/web3.ts","utils/getRpcUrl.ts","contexts/Localisation/translationsContext.ts","utils/callHelpers.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","eggPerBlock","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","useDotPrice","cakePriceUSD","useTotalValue","bnbPrice","cakePrice","dotPrice","value","i","length","val","BNB","CAKE","DOT","console","log","lpSymbol","plus","CACHE_KEY","LanguageContext","React","createContext","selectedLanguage","EN","setSelectedLanguage","translatedLanguage","setTranslatedLanguage","LanguageContextProvider","parseInt","process","REACT_APP_CROWDIN_PROJECTID","StringTranslations","token","REACT_APP_CROWDIN_APIKEY","children","useState","translations","setTranslations","storedLangCode","localStorage","getItem","storedLang","allLanguages","filter","language","code","getStoredLang","fetch","then","r","json","translationApiResponse","catch","e","error","Provider","langObject","setItem","ThemeContext","isDark","toggleTheme","ThemeContextProvider","isDarkUserSetting","JSON","parse","setIsDark","prevState","stringify","theme","light","RefreshContext","slow","fast","RefreshContextProvider","setSlow","setFast","interval","setInterval","prev","clearInterval","useContext","fastRefresh","getContract","provider","Web3","eth","Contract","getAllowance","lpContract","masterChefContract","methods","options","call","getTokenBalance","tokenAddress","userAddress","contract","balanceOf","balance","variableRegex","getTranslation","translationId","fallback","foundTranslation","translation","stringId","translatedString","text","includes","stringToReplace","exec","fallbackValueAtIndex","split","replace","replaceDynamicString","useI18n","TranslationsContext","Page","styled","Container","mediaQueries","sm","lg","useApprove","useWallet","useMasterchef","onApprove","useCallback","approve","tx","useLotteryApprove","cakeContract","useCake","lotteryContract","useLottery","useCasinoApprove","casinoContract","useCasino","FlexLayout","isCommunity","PoolCategory","useLotteryAllowance","setAllowance","fetchAllowance","res","useCasinoAllowance","getCakeAddress","addresses","cake","chainId","masterChef","getMulticallAddress","mulltiCall","getWbnbAddress","wbnb","getLotteryAddress","lottery","getLotteryTicketAddress","lotteryNFT","getCasinoContractAddress","casino","abi","web3","getWeb3","multi","MultiCallAbi","itf","Interface","calldata","toLowerCase","encodeFunctionData","aggregate","returnData","decodeFunctionResult","97","56","dot","busd","ust","RPC_URL","getRpcUrl","httpProvider","providers","HttpProvider","timeout","useWeb3","ethereum","refEth","useRef","setweb3","current","useContract","contractOptions","setContract","useLotteryTicket","lotteryTicket","useSousChef","id","config","poolsConfig","pool","sousId","rawAbi","poolCategory","BINANCE","sousChefBnb","sousChef","contractAddress","pools","risk","contracts","title","nonBnbPools","p","stakingTokenName","bnbPools","nonMasterPools","masterChefABI","fetchPoolsAllowance","stakingTokenAddress","allowances","reduce","acc","fetchUserBalances","tokenBalancesRaw","tokenBalances","getBalance","bnbBalance","bnbBalances","fetchUserStakeBalances","sousChefABI","userInfo","stakedBalances","amount","masterPoolAmount","0","fetchUserPendingRewards","pendingRewards","pendingEgg","pendingReward","PoolsSlice","setPoolsPublicData","livePoolsData","livePoolData","entry","setPoolsUserData","userPoolData","updatePoolsUserData","field","findIndex","fetchPoolsUserDataAsync","stakingTokenBalances","stakingTokenBalance","updateUserAllowance","updateUserBalance","updateUserStakedBalance","updateUserPendingReward","Game","main","setmain","setvalue","billFilpped","setbillFilpped","myFlipped","setmyFlipped","billNumber","setBillNumber","playerNumber","setPlayerNumber","winModal","setwinModal","requestedApproval","selectedButton","setSelectedButton","allowanceLoaded","setAllowanceLoaded","getRandomNumber","min","max","Math","floor","random","Spinner","className","handleApprove","respo","onGameStart","price","Audio","play","playGame","send","from","resp","event","events","onGamePlayed","returnValues","userNumber","newGame","winGame","setTimeout","style","marginTop","width","margin","paddingTop","fontSize","borderRadius","onClick","fullWidth","disabled","Flex","src","alt","position","left","top","bottom","right","display","textAlign","lineHeight","fontFamily","letterSpacing","color","Casino","backgroundRepeat","backgroundSize","height","zIndex","maxWidth","GlobalStyle","createGlobalStyle","colors","background","useTheme","StyledThemeCopntext","label","icon","href","items","Menu","props","connect","reset","cakePriceUsd","login","logout","currentLang","langs","setLang","links","priceLink","Wrapper","PageLoader","ModalContent","Actions","NftYouWonModal","onDismiss","TranslateString","marginBottom","size","as","NftGlobalNotification","useModal","onPresentBurnModal","Home","lazy","Farms","Lottery","Ifos","NotFound","Vault","Trade","EXPONENTIAL_AT","DECIMAL_PLACES","App","window","Global","path","exact","tokenMode","url","component","memo","BlockContext","BlockContextProvider","previousBlock","block","setBlock","getBlockNumber","blockNumber","configureStore","devTools","reducer","farmsReducer","poolsReducer","Providers","rpcUrl","store","connectors","walletconnect","bsc","ReactDOM","render","StrictMode","document","getElementById","nodes","getNodeUrl","randomIndex","defaultTranslationState","ethers","constants","MaxUint256","stake","deposit","on","transactionHash","sousStake","sousChefContract","sousStakeBnb","unstake","withdraw","sousUnstake","emergencyWithdraw","sousEmegencyUnstake","harvest","soushHarvest","soushHarvestBnb"],"mappings":"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","file":"static/js/main.855cbe30.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 }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, eggPerBlock] = 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: 'billPerBlock',\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 eggPerBlock: new BigNumber(eggPerBlock).toNumber(),\n }\n }),\n )\n return data\n}\n\nexport default fetchFarms","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: 'pendingBILL',\n params: [farm.pid, account],\n }\n })\n\n // console.log(masterchefABI,\"masterchef abi\")\n const rawEarnings = await multicall(masterchefABI, calls)\n // console.log(rawEarnings,\"rawEarning\")\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 \n const pid = 5 // BUSD-BNB LP\n const farm = useFarmFromPid(pid)\n return farm.tokenPriceVsQuote ? new BigNumber(farm.tokenPriceVsQuote) : ZERO\n\n}\n\nexport const usePriceCakeBusd = (): BigNumber => {\n const pid = 7 // CAKE-BNB LP\n const bnbPriceUSD = usePriceBnbBusd()\n const farm = useFarmFromPid(pid)\n return farm.tokenPriceVsQuote ? bnbPriceUSD.times(farm.tokenPriceVsQuote) : ZERO\n // const pid = 8; // EGG-BUSD LP\n // const farm = useFarmFromPid(pid);\n\n // return farm.tokenPriceVsQuote ? new BigNumber(farm.tokenPriceVsQuote) : ZERO;\n}\n\n\nexport const useDotPrice=(): BigNumber => {\n const pid = 11 // CAKE-BNB LP\n const cakePriceUSD = usePriceCakeBusd()\n const farm = useFarmFromPid(pid)\n return farm.tokenPriceVsQuote ? cakePriceUSD.times(farm.tokenPriceVsQuote) : ZERO\n}\n\n\n\n\nexport const useTotalValue = (): BigNumber => {\n const farms = useFarms();\n const bnbPrice = usePriceBnbBusd();\n const cakePrice = usePriceCakeBusd();\n const dotPrice = useDotPrice()\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 if (farm.quoteTokenSymbol === QuoteToken.BUSD) {\n // val = (cakePrice.times(farm.lpTotalInQuoteToken));\n val = (farm.lpTotalInQuoteToken);\n\n }else if (farm.quoteTokenSymbol === QuoteToken.DOT) {\n val = (dotPrice.times(farm.lpTotalInQuoteToken));\n\n\n }\n\n if(new BigNumber(val).toNumber()){\n console.log(\"dfffff\",\"val\",new BigNumber(val).toNumber(),\"farm.lpSymbol\",farm.lpSymbol)\n\n value = value.plus(val);\n\n }\n }\n\n\n }\n return value;\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 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","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 Web3 from 'web3'\nimport { provider as ProviderType } from 'web3-core'\nimport { Contract } from 'web3-eth-contract'\nimport { AbiItem } from 'web3-utils'\nimport erc20 from 'config/abi/erc20.json'\n\nexport const getContract = (provider: ProviderType, address: string) => {\n const web3 = new Web3(provider)\n const contract = new web3.eth.Contract((erc20 as unknown) as AbiItem, address)\n // console.log(contract,\"contract\")\n return contract\n}\n\nexport const getAllowance = async (\n lpContract: Contract,\n masterChefContract: Contract,\n account: string,\n): Promise => {\n try {\n const allowance: string = await lpContract.methods.allowance(account, masterChefContract.options.address).call()\n return allowance\n } catch (e) {\n return '0'\n }\n}\n\nexport const getTokenBalance = async (\n provider: ProviderType,\n tokenAddress: string,\n userAddress: string,\n): Promise => {\n const contract = getContract(provider, tokenAddress)\n try {\n const balance: string = await contract.methods.balanceOf(userAddress).call()\n return balance\n } catch (e) {\n return '0'\n }\n}\n","import { useContext } from 'react'\nimport { TranslationsContext } from '../contexts/Localisation/translationsContext'\n\nconst variableRegex = /%(.*?)%/\n\nconst replaceDynamicString = (foundTranslation: string, fallback: string) => {\n const stringToReplace = variableRegex.exec(foundTranslation)[0]\n // const indexToReplace = foundTranslation.split(' ').indexOf(stringToReplace)\n const fallbackValueAtIndex = fallback.split(' ')[0]\n return foundTranslation.replace(stringToReplace, fallbackValueAtIndex)\n}\n\nexport const getTranslation = (translations: Array, translationId: number, fallback: string) => {\n const foundTranslation = translations.find((translation) => {\n return translation.data.stringId === translationId\n })\n if (foundTranslation) {\n const translatedString = foundTranslation.data.text\n const includesVariable = translatedString.includes('%')\n if (includesVariable) {\n return replaceDynamicString(translatedString, fallback)\n }\n return translatedString\n }\n return fallback\n}\n\n// TODO: Replace instances where this is called directly with the \"useI18n\" hook.\n// Using this directly can lead to errors because \"useContext\" is not preserved between renders\n// @see https://reactjs.org/docs/hooks-rules.html\nexport const TranslateString = (translationId: number, fallback: string) => {\n const { translations } = useContext(TranslationsContext)\n if (translations[0] === 'error') {\n return fallback\n }\n if (translations.length > 0) {\n return getTranslation(translations, translationId, fallback)\n }\n return fallback\n}\n","import { useContext } from 'react'\nimport { TranslationsContext } from '../contexts/Localisation/translationsContext'\nimport { getTranslation } from '../utils/translateTextHelpers'\n\nconst useI18n = () => {\n const { translations } = useContext(TranslationsContext)\n\n return (translationId: number, fallback: string) => {\n if (translations[0] === 'error') {\n return fallback\n }\n if (translations.length > 0) {\n return getTranslation(translations, translationId, fallback)\n }\n return fallback\n }\n}\n\nexport default useI18n\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","import { useCallback } from 'react'\nimport { useWallet } from '@binance-chain/bsc-use-wallet'\nimport { Contract } from 'web3-eth-contract'\nimport { ethers } from 'ethers'\nimport { useDispatch } from 'react-redux'\nimport { updateUserAllowance, fetchFarmUserDataAsync } from 'state/actions'\nimport { approve } from 'utils/callHelpers'\nimport { useMasterchef, useCake, useSousChef, useLottery,useCasino } from './useContract'\n\n// Approve a Farm\nexport const useApprove = (lpContract) => {\n const dispatch = useDispatch()\n const { account }: { account: string } = useWallet()\n const masterChefContract = useMasterchef()\n console.log(lpContract,\"lpContract in approve\")\n const handleApprove = useCallback(async () => {\n try {\n const tx = await approve(lpContract, masterChefContract, account)\n dispatch(fetchFarmUserDataAsync(account))\n return tx\n } catch (e) {\n return false\n }\n }, [account, dispatch, lpContract, masterChefContract])\n\n return { onApprove: handleApprove }\n}\n\n// Approve a Pool\nexport const useSousApprove = (lpContract, sousId) => {\n const dispatch = useDispatch()\n const { account }: { account: string } = useWallet()\n const sousChefContract = useSousChef(sousId)\n\n const handleApprove = useCallback(async () => {\n try {\n const tx = await approve(lpContract, sousChefContract, account)\n dispatch(updateUserAllowance(sousId, account))\n return tx\n } catch (e) {\n return false\n }\n }, [account, dispatch, lpContract, sousChefContract, sousId])\n\n return { onApprove: handleApprove }\n}\n\n// Approve the lottery\nexport const useLotteryApprove = () => {\n const { account }: { account: string } = useWallet()\n const cakeContract = useCake()\n const lotteryContract = useLottery()\n\n const handleApprove = useCallback(async () => {\n try {\n const tx = await approve(cakeContract, lotteryContract, account)\n return tx\n } catch (e) {\n return false\n }\n }, [account, cakeContract, lotteryContract])\n\n return { onApprove: handleApprove }\n}\n\n// Approve an IFO\nexport const useIfoApprove = (tokenContract, spenderAddress: string) => {\n const { account } = useWallet()\n const onApprove = useCallback(async () => {\n try {\n const tx = await tokenContract.methods\n .approve(spenderAddress, ethers.constants.MaxUint256)\n .send({ from: account })\n return tx\n } catch {\n return false\n }\n }, [account, spenderAddress, tokenContract])\n\n return onApprove\n}\n\n\n\n// Approve the lottery\nexport const useCasinoApprove = () => {\n const { account }: { account: string } = useWallet()\n const cakeContract = useCake()\n const casinoContract = useCasino()\n\n const handleApprove = useCallback(async () => {\n try {\n const tx = await approve(cakeContract, casinoContract, account)\n return tx\n } catch (e) {\n return false\n }\n }, [account, cakeContract, casinoContract])\n\n return { onApprove: handleApprove }\n}\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'\n\nconst FlexLayout = styled.div`\n display: flex;\n justify-content: center;\n flex-wrap: wrap;\n & > * { \n min-width: 280px;\n max-width: 31.5%;\n width: 100%;\n margin: 0 8px;\n margin-bottom: 32px;\n box-shadow: 0 0 10px #ffffff, 0 0 10px #ffffff, 0 0 10px #ffffff, 0 0 10px #ffffff, 0 0 10px #f9c947;\n }\n`\n\nexport default FlexLayout\n\n","import farmsConfig from './farms'\n\nconst communityFarms = farmsConfig.filter((farm) => farm.isCommunity).map((farm) => farm.tokenSymbol)\n\nexport { farmsConfig, communityFarms }\nexport { default as poolsConfig } from './pools'\nexport { default as ifosConfig } from './ifo'\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' = 'BILL',\n 'SYRUP' = 'SYRUP',\n 'BUSD' = 'BUSD',\n 'TWT' = 'TWT',\n 'UST' = 'UST',\n 'DOT' = \"DOT\"\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 title?:string\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 { useEffect, useState } from 'react'\nimport BigNumber from 'bignumber.js'\nimport { useWallet } from '@binance-chain/bsc-use-wallet'\nimport { Contract } from 'web3-eth-contract'\nimport { useCake, useCasino, useLottery } from './useContract'\nimport { getAllowance } from '../utils/erc20'\n\n// Retrieve lottery allowance\nexport const useLotteryAllowance = () => {\n const [allowance, setAllowance] = useState(new BigNumber(0))\n const { account }: { account: string } = useWallet()\n const lotteryContract = useLottery()\n const cakeContract = useCake()\n\n useEffect(() => {\n if(cakeContract) {\n const fetchAllowance = async () => {\n\n const res = await getAllowance(cakeContract, lotteryContract, account)\n setAllowance(new BigNumber(res))\n }\n\n if (account && cakeContract && cakeContract) {\n fetchAllowance()\n }\n const refreshInterval = setInterval(fetchAllowance, 10000)\n // return () => clearInterval(refreshInterval)\n }\n }, [account, cakeContract, lotteryContract])\n\n return allowance\n}\n\n// Retrieve IFO allowance\nexport const useIfoAllowance = (tokenContract, spenderAddress: string, dependency?: any) => {\n const { account }: { account: string } = useWallet()\n const [allowance, setAllowance] = useState(null)\n\n useEffect(() => {\n const fetch = async () => {\n try {\n const res = await tokenContract.methods.allowance(account, spenderAddress).call()\n setAllowance(new BigNumber(res))\n } catch (e) {\n setAllowance(null)\n }\n }\n fetch()\n }, [account, spenderAddress, tokenContract, dependency])\n\n return allowance\n}\n\nexport const useCasinoAllowance = () => {\n const [allowance, setAllowance] = useState(new BigNumber(0))\n const { account }: { account: string } = useWallet()\n const casinoContract = useCasino()\n const cakeContract = useCake()\n\n useEffect(() => {\n if(cakeContract) {\n const fetchAllowance = async () => {\n\n const res = await getAllowance(cakeContract, casinoContract, account)\n setAllowance(new BigNumber(res))\n }\n\n if (account && cakeContract && cakeContract) {\n fetchAllowance()\n }\n const refreshInterval = setInterval(fetchAllowance, 10000)\n // return () => clearInterval(refreshInterval)\n }\n }, [account, cakeContract, casinoContract])\n\n return allowance\n}","import addresses from 'config/constants/contracts'\n\nconst chainId = process.env.REACT_APP_CHAIN_ID\n\nexport const getCakeAddress = () => {\n // console.log(addresses.cake[\"97\"],\"cake address\");\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\nexport const getCasinoContractAddress = () => {\n return addresses.casino[chainId]\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 97: '0x71240D6160438dAbD0e95def72C29B1Dd493d8dE',\n 56: '0x1f36f067f4e425994763da9ee5bcc76f154c82d1',\n },\n // syrup: {\n // 97: '0x6e6059CdcF38252B9ad5DC743e7ea27B4E8a3e49',\n // 56: '0x009cF7bC57584b7998236eff51b98A168DceA9B0',\n // },\n \n\n casino: {\n 97: '0xAdfcC9eBD4d3dCAe8d41604B175fa25cDCe75044',\n 56: '0x965ede0910eB6be4b233E3cc0b077eC06072F4af',\n },\n\n dot: {\n 97: '0xAdfcC9eBD4d3dCAe8d41604B175fa25cDCe75044',\n 56: '0x7083609fce4d1d8dc0c979aab8c869ea2c873402',\n },\n\n\n masterChef: {\n 97: '0xD787843CdB3125BeD5830221cb7DBb063ade7200',\n 56: '0xd12a952f87e8d5d58c8ca55ce083e5f7a34fd4e3',\n },\n // sousChef: {\n // 97: '0xd3af5fe61dbaf8f73149bfcfa9fb653ff096029a',\n // 56: '0x6ab8463a4185b80905e05a9ff80a2d6b714b9e95',\n // },\n wbnb: {\n 97: '0xA73D61379627dB94f968C7bb4BD7fF5c07723Ec2',\n 56: '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c',\n },\n lottery: {\n 97: '0x0B37Ab7C7Dc1177dc73BB804FEf4A24A9446904d',\n 56: '0x3C3f2049cc17C136a604bE23cF7E42745edf3b91',\n },\n lotteryNFT: {\n 97: '0x14276AdAD51E99C76A5997A9b7e392901497C7d3',\n 56: '0x5e74094Cd416f55179DBd0E45b1a8ED030e396A1',\n },\n mulltiCall: {\n 56: '0x1ee38d535d541c55c9dae27b12edf090c608e6fb',\n 97: '0x67ADCB4dF3931b0C5Da724058ADC2174a9844412',\n },\n busd: {\n 56: '0xe9e7cea3dedca5984780bafc599bd69add087d56',\n 97: '0x4998c1031e1c9cd49fe31f6786a0e6090fda95ea',\n },\n\n\n\n\n\n \n ust: {\n 56: '0x55d398326f99059ff775485246999027b3197955',\n 97: '',\n },\n // pancakeProfile: {\n // 56: '0xDf4dBf6536201370F95e06A0F8a7a70fE40E388a',\n // 97: '0x4B683C7E13B6d5D7fd1FeA9530F451954c1A7c8A',\n // },\n // pancakeRabbits: {\n // 56: '0xDf7952B35f24aCF7fC0487D01c8d5690a60DBa07',\n // 97: '0x60935F36e4631F73f0f407e68642144e07aC7f5E',\n // },\n // bunnyFactory: {\n // 56: '0xfa249Caa1D16f75fa159F7DFBAc0cC5EaB48CeFf',\n // 97: '0x707CBF373175fdB601D34eeBF2Cf665d08f01148',\n // },\n // eth: {\n // 56: '0x2170ed0880ac9a755fd29b2688956bd959f933f8',\n // 97: '0xd0b4c1b5d59aa41e522699b6e469704916faed95',\n // },\n // claimRefund: {\n // 56: '0xE7e53A7e9E3Cf6b840f167eF69519175c497e149',\n // 97: '',\n // },\n // pointCenterIfo: {\n // 56: '0x3C6919b132462C1FEc572c6300E83191f4F0012a',\n // 97: '0xd2Ac1B1728Bb1C11ae02AB6e75B76Ae41A2997e3',\n // },\n // bunnySpecial: {\n // 56: '0xFee8A195570a18461146F401d6033f5ab3380849',\n // 97: '0x7b7b1583De1DeB32Ce6605F6deEbF24A0671c17C',\n // },\n}\n","import { useEffect, useState, useRef } from 'react'\nimport Web3 from 'web3'\nimport { HttpProviderOptions } from 'web3-core-helpers'\nimport { provider as ProviderType } from 'web3-core'\nimport { useWallet } from '@binance-chain/bsc-use-wallet'\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 the provider provided by useWallet\n * with a fallback of an httpProver\n * Recreate web3 instance only if the ethereum provider change\n */\nconst useWeb3 = () => {\n const { ethereum }: { ethereum: ProviderType } = useWallet()\n const refEth = useRef(ethereum)\n const [web3, setweb3] = useState(new Web3(ethereum || httpProvider))\n\n useEffect(() => {\n if (ethereum !== refEth.current) {\n setweb3(new Web3(ethereum || httpProvider))\n refEth.current = ethereum\n }\n }, [ethereum])\n\n return web3\n}\n\nexport default useWeb3\n","import { useEffect, useState } from 'react'\nimport { AbiItem } from 'web3-utils'\nimport { ContractOptions } from 'web3-eth-contract'\nimport useWeb3 from 'hooks/useWeb3'\nimport { getMasterChefAddress, getCakeAddress, getLotteryAddress, getLotteryTicketAddress ,getCasinoContractAddress} from 'utils/addressHelpers'\nimport { poolsConfig } from 'config/constants'\nimport { PoolCategory } from 'config/constants/types'\nimport ifo from 'config/abi/ifo.json'\nimport erc20 from 'config/abi/erc20.json'\nimport rabbitmintingfarm from 'config/abi/rabbitmintingfarm.json'\nimport pancakeRabbits from 'config/abi/pancakeRabbits.json'\nimport lottery from 'config/abi/lottery.json'\nimport lotteryTicket from 'config/abi/lotteryNft.json'\nimport masterChef from 'config/abi/masterchef.json'\nimport sousChef from 'config/abi/sousChef.json'\nimport sousChefBnb from 'config/abi/sousChefBnb.json'\nimport casino from 'config/abi/BillCasino.json'\n\n\nconst useContract = (abi: AbiItem, address: string, contractOptions?: ContractOptions) => {\n const web3 = useWeb3()\n const [contract, setContract] = useState(new web3.eth.Contract(abi, address, contractOptions))\n\n useEffect(() => {\n setContract(new web3.eth.Contract(abi, address, contractOptions))\n }, [abi, address, contractOptions, web3])\n\n return contract\n}\n\n/**\n * Helper hooks to get specific contracts (by ABI)\n */\n\nexport const useIfoContract = (address: string) => {\n const ifoAbi = (ifo as unknown) as AbiItem\n return useContract(ifoAbi, address)\n}\n\nexport const useERC20 = (address: string) => {\n const erc20Abi = (erc20 as unknown) as AbiItem\n return useContract(erc20Abi, address)\n}\n\nexport const useCake = () => {\n return useERC20(getCakeAddress())\n}\n\nexport const useRabbitMintingFarm = (address: string) => {\n const rabbitMintingFarmAbi = (rabbitmintingfarm as unknown) as AbiItem\n return useContract(rabbitMintingFarmAbi, address)\n}\n\nexport const usePancakeRabbits = (address: string) => {\n const pancakeRabbitsAbi = (pancakeRabbits as unknown) as AbiItem\n return useContract(pancakeRabbitsAbi, address)\n}\n\nexport const useLottery = () => {\n const abi = (lottery as unknown) as AbiItem\n return useContract(abi, getLotteryAddress())\n}\n\nexport const useLotteryTicket = () => {\n const abi = (lotteryTicket as unknown) as AbiItem\n return useContract(abi, getLotteryTicketAddress())\n}\n\nexport const useMasterchef = () => {\n const abi = (masterChef as unknown) as AbiItem\n return useContract(abi, getMasterChefAddress())\n}\n\n\n\nexport const useCasino = () => {\n const abi = (casino as unknown) as AbiItem\n return useContract(abi, getCasinoContractAddress())\n}\n\n\n\nexport const useSousChef = (id) => {\n const config = poolsConfig.find((pool) => pool.sousId === id)\n const rawAbi = config.poolCategory === PoolCategory.BINANCE ? sousChefBnb : sousChef\n const abi = (rawAbi as unknown) as AbiItem\n return useContract(abi, config.contractAddress[\"56\"])\n}\n\nexport default useContract\n","import { PoolConfig, QuoteToken, PoolCategory } from './types'\n\nconst pools: PoolConfig[] = [\n // {\n // sousId: 0,\n // tokenName: 'ELON',\n // // tokenAddress: '0x9be066Fb1C1154e6DF79477e1B032b1dB193650b',\n // stakingTokenName: QuoteToken.CAKE,\n // stakingTokenAddress: '0x050d88709607f05c0FA3ca49987F81468b005bDD',\n // contractAddress: {\n // 97: '0x5b44ADe9937459085B8d629d7019bfbF5Dc1c2AE',\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 { isToken } from 'typescript'\nimport contracts from './contracts'\nimport { FarmConfig, QuoteToken } from './types'\n\nconst farms: FarmConfig[] = [\n {\n pid: 7,\n risk:5,\n lpSymbol: 'BILL-BNB',\n lpAddresses: {\n 97: '0x93dFbB3E3bC4b4b10574d908FE9598d38AA764e6',\n 56: '0xbbA912e253FA8D593986aa7f7924016b644438c5',\n },\n tokenSymbol: 'BILL',\n tokenAddresses: {\n 97: '0x93dFbB3E3bC4b4b10574d908FE9598d38AA764e6',\n 56: '0x1f36f067f4e425994763da9ee5bcc76f154c82d1',\n },\n quoteTokenSymbol: QuoteToken.BNB,\n quoteTokenAdresses: contracts.wbnb,\n title:\"Credit Suisse\"\n\n },\n\n\n \n {\n pid: 8,\n risk:5,\n lpSymbol: 'BILL-BUSD',\n lpAddresses: {\n 97: '0x9ce40a056d3168d13b3af06366ef2666e1b1025d',\n 56: '0x362316b94AEc405B8fFF2446FBeBe07e59dCAd0f',\n },\n tokenSymbol: 'BILL',\n tokenAddresses: {\n 97: '0x93dFbB3E3bC4b4b10574d908FE9598d38AA764e6',\n 56: '0x1f36f067f4e425994763da9ee5bcc76f154c82d1',\n },\n quoteTokenSymbol: QuoteToken.BUSD,\n quoteTokenAdresses: contracts.busd,\n title:\"Nomura\"\n },\n\n {\n pid: 9,\n risk:5,\n lpSymbol: 'BILL-USDT',\n lpAddresses: {\n 97: '0x11b9a40538544cc00b31803a34dd619a2be6586d',\n 56: '0x63c0556d537038efC5a07Fd7178F3838B1E34E8A',\n },\n tokenSymbol: 'BILL',\n tokenAddresses: {\n 97: '0x4998c1031e1c9cd49fe31f6786a0e6090fda95ea',\n 56: '0x1f36f067f4e425994763da9ee5bcc76f154c82d1',\n },\n quoteTokenSymbol: QuoteToken.BUSD,\n quoteTokenAdresses: contracts.ust,\n title:\"Goldman Sachs\"\n },\n\n\n {\n pid: 11,\n risk:5,\n lpSymbol: 'BILL-DOT',\n lpAddresses: {\n 97: '0x11b9a40538544cc00b31803a34dd619a2be6586d',\n 56: '0x78a990b0ffb1dde339d2b2af38bdbae2b4648e0e',\n },\n tokenSymbol: 'BILL',\n tokenAddresses: {\n 97: '0x4998c1031e1c9cd49fe31f6786a0e6090fda95ea',\n 56: contracts.cake[56],\n },\n quoteTokenSymbol: QuoteToken.DOT,\n quoteTokenAdresses: contracts.cake,\n title:\"Morgan Stanley\"\n },\n\n\n\n {\n pid: 4,\n risk:5,\n lpSymbol: 'USDT-BUSD',\n lpAddresses: {\n 97: '0x11b9a40538544cc00b31803a34dd619a2be6586d',\n 56: '0x7EFaEf62fDdCCa950418312c6C91Aef321375A00',\n },\n tokenSymbol: 'USDT',\n tokenAddresses: {\n 97: '0x4998c1031e1c9cd49fe31f6786a0e6090fda95ea',\n 56: '0x55d398326f99059ff775485246999027b3197955',\n },\n quoteTokenSymbol: QuoteToken.BUSD,\n quoteTokenAdresses: contracts.busd,\n title:\"UBS\"\n },\n\n\n\n\n {\n pid: 5,\n risk:5,\n lpSymbol: 'BNB-BUSD',\n lpAddresses: {\n 97: '0x5151D1Fd6aCF781144175383C65744Db0c5A28a9',\n 56: '0x58F876857a02D6762E0101bb5C46A8c1ED44Dc16',\n },\n tokenSymbol: 'BUSD',\n tokenAddresses: {\n 97: '0xd0b4c1b5d59aa41e522699b6e469704916faed95',\n 56: '0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c',\n },\n quoteTokenSymbol: QuoteToken.BUSD,\n quoteTokenAdresses: contracts.busd,\n title:\"\",\n },\n\n\n\n {\n pid: 6,\n risk:5,\n lpSymbol: 'BILL',\n lpAddresses: {\n 97: '0x5151D1Fd6aCF781144175383C65744Db0c5A28a9',\n 56: '0x362316b94AEc405B8fFF2446FBeBe07e59dCAd0f',\n },\n tokenSymbol: 'BILL',\n tokenAddresses: {\n 97: '0xd0b4c1b5d59aa41e522699b6e469704916faed95',\n 56: '0x1f36f067f4e425994763da9ee5bcc76f154c82d1',\n },\n quoteTokenSymbol: QuoteToken.BUSD,\n quoteTokenAdresses: contracts.busd,\n title:\"Archegos\",\n isTokenOnly:true\n },\n\n\n\n\n\n\n]\n\nexport default farms\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.pendingEgg('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 React, { useState, useCallback, useEffect } from 'react'\n\nimport { Button, Card } from '@pancakeswap-libs/uikit'\nimport { useCasinoApprove } from 'hooks/useApprove'\nimport { useWallet } from '@binance-chain/bsc-use-wallet'\n\nimport './Css/ButtonWrapper.css'\nimport './Css/loader.css'\n\nimport FlexLayout from 'components/layout/Flex'\nimport { useCasino } from 'hooks/useContract'\nimport { useCasinoAllowance } from 'hooks/useAllowance'\nimport { fontSize } from 'styled-system'\n// import {CardAudio} from './Css/card.mp3';\n\nconst Game = () => {\n const [main, setmain] = useState(true)\n const [value, setvalue] = useState(0)\n const [billFilpped, setbillFilpped] = useState(false)\n const [myFlipped, setmyFlipped] = useState(false)\n const [billNumber, setBillNumber] = useState(0)\n const [playerNumber, setPlayerNumber] = useState(0)\n const [winModal, setwinModal] = useState(false)\n const [requestedApproval, setRequestedApproval] = useState(false)\n const { onApprove } = useCasinoApprove()\n const allowance = useCasinoAllowance()\n const casinoContract = useCasino()\n const { account } = useWallet()\n \n const [selectedButton, setSelectedButton] = useState(\"\")\n\n const [allowanceLoaded,setAllowanceLoaded] = useState(false)\n const getRandomNumber = (min, max) => {\n return Math.floor(Math.random() * (max - min + 1) + min)\n\n }\n\n const Spinner = ()=>{\n return
Loading...
\n }\n\n\n useEffect(()=>{\n if(allowance.toNumber()){\n setAllowanceLoaded(true)\n }\n },[allowance])\n\n const handleApprove = useCallback(async () => {\n let respo = false\n try {\n respo = await onApprove()\n return respo\n } catch (e) {\n console.error(e)\n }\n\n return respo\n }, [onApprove])\n\n // const buyTicket = async(amount)=>{\n\n // }\n\n const onGameStart=async(price)=> {\n // ButtonClick()\n // setvalue(e)\n\n setSelectedButton(price.toString())\n const audio = new Audio('https://s3-us-west-2.amazonaws.com/s.cdpn.io/242518/click.mp3')\n audio.play()\n\n const amount = `${price}000000000000000000`;\n \n \n \n try {\n const resp = await casinoContract.methods.playGame(amount).send({from:account});\n const event = resp.events.onGamePlayed.returnValues;\n \n console.log(\"ressss\",resp)\n setBillNumber(parseInt(event.billNumber))\n setmain(false)\n setPlayerNumber(parseInt(event.userNumber))\n }\n catch(err) {\n setSelectedButton(\"\")\n\n }\n\n }\n const ButtonClick = () => {\n const audio = new Audio('https://s3-us-west-2.amazonaws.com/s.cdpn.io/242518/click.mp3')\n audio.play()\n //
\n //
\n }\n function newGame() {\n setSelectedButton(\"\")\n ButtonClick()\n const audio = new Audio('https://s3-us-west-2.amazonaws.com/s.cdpn.io/242518/click.mp3')\n audio.play()\n setmyFlipped(false)\n setbillFilpped(false)\n setmain(true)\n setvalue(0)\n setwinModal(false)\n }\n\n const renderCasinoTicketButtons = () => {\n if (!allowance.toNumber() && !allowanceLoaded) {\n return (\n <>\n \n \n )\n }\n return (\n <>\n {\n onGameStart(50)\n }}\n >\n {selectedButton === \"50\" ? : '50'}\n \n\n {\n onGameStart(250)\n }}\n >\n {selectedButton === \"250\" ? : '250'}\n \n\n onGameStart(1000)}\n >\n {selectedButton === \"1000\" ? : '1000'}\n \n\n onGameStart(5000)}\n >\n {selectedButton === \"5000\" ? : '5000'}\n \n\n onGameStart(10000)}\n >\n {selectedButton === \"10000\" ? : '10000'}\n \n\n onGameStart(1000000)}\n >\n {selectedButton === \"1000000\" ? : '1 Million'}\n \n \n )\n }\n\n function winGame(name) {\n if (name !== 'myCard') {\n const audio = new Audio('https://safyfinance.s3.amazonaws.com/card.mp3')\n audio.play()\n console.log('in if')\n setbillFilpped(true)\n if (myFlipped) {\n setTimeout(() => {\n setwinModal(true)\n }, 2000)\n }\n }\n // if (myFlipped && !billFilpped) {\n // const audio = new Audio('https://safyfinance.s3.amazonaws.com/card.mp3');\n // audio.play();\n // setbillFilpped(true);\n // console.log(main, \"main\");\n\n // setTimeout(() => {\n // setwinModal(true);\n // }, 2000)\n // // const audio = new Audio('https://safyfinance.s3.amazonaws.com/card.mp3');\n // // audio.play();\n // // CardAudio();\n // }\n // if (!myFlipped && billFilpped) {\n // const audio = new Audio('https://safyfinance.s3.amazonaws.com/card.mp3');\n // audio.play();\n // setmyFlipped(true)\n // console.log(main, \"main\");\n // setTimeout(() => {\n // setwinModal(true);\n // }, 2000)\n\n // // CardAudio();\n // }\n else {\n const audio = new Audio('https://safyfinance.s3.amazonaws.com/card.mp3')\n audio.play()\n setmyFlipped(true)\n if (billFilpped) {\n setTimeout(() => {\n setwinModal(true)\n }, 2000)\n }\n // CardAudio();\n }\n }\n\n return (\n
\n
\n
\n
\n

Welcome to Bill Casino. Wall Street Games

\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n {/*
*/}\n
\n
\n {main && (\n
\n W\n A\n L\n L\n S\n T\n R\n E\n E\n T\n G\n A\n M\n E\n S\n
\n )}\n {main &&
{renderCasinoTicketButtons()}
}\n \n {!main && !winModal && (\n \n winGame('billCard')}>\n
\n {billFilpped && (\n \n )}\n {!billFilpped && Bill Card}\n\n {!billFilpped &&

Click To Flip

}\n
\n
\n \n {\n winGame('myCard')\n }}\n >\n
\n {!myFlipped && Your Card}\n\n {myFlipped && (\n \n )}\n\n {!myFlipped && (\n

\n Click To Flip\n

\n )}\n
\n
\n \n \n )}\n\n {winModal && (\n
\n {billNumber < playerNumber ? (\n \"winning\"\n ) : (\n \"loosing\"\n )}\n\n
\n
\n {billNumber < playerNumber ? (\n
\n Y\n O\n U\n   \n W\n I\n N\n
\n ) : (\n
\n Y\n O\n U\n   \n L\n O\n S\n T\n
\n )}\n
\n newGame()}\n >\n New Game{' '}\n \n
\n )}\n
\n\n
\n
\n
\n \n
\n
\n
\n
\n
\n )\n}\n\nexport default Game\n","import React from 'react'\nimport Game from './components/Game'\n\nfunction Casino() {\n return (\n
\n \"bgimgae\"\n \n
\n )\n}\n\nexport default Casino\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 iMuQQP,.desktop-icon{\n width:180px !important\n }\n`\n\nexport default GlobalStyle\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.billhwangdefi.co/#/swap?outputCurrency=0x1f36f067f4e425994763da9ee5bcc76f154c82d1',\n },\n {\n label: 'Liquidity',\n href: 'https://exchange.billhwangdefi.co/#/pool',\n },\n ],\n },\n {\n label: 'Insider Trading',\n icon: 'FarmIcon',\n href: '/farms',\n },\n {\n label: 'FOMO',\n icon: 'PoolIcon',\n href: '/nests',\n },\n {\n label: 'Casino',\n icon: 'PoolIcon',\n href: '/casino',\n },\n\n\n {\n label: 'BillVaults',\n icon: 'PoolIcon',\n href: 'https://vaults.billhwangdefi.co',\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\n {\n label: 'IMO',\n icon: 'GooseIcon',\n href: '/imo',\n },\n // {\n // label: 'NFT',\n // icon: 'NftIcon',\n // href: '/nft',\n // },\n // {\n // label: 'Info',\n // icon: 'InfoIcon',\n // items: [\n // {\n // label: 'PancakeSwap',\n // href: 'https://pancakeswap.info/token/0xE38676028803b9F6c7ef36642d68bAf6F0D4f846',\n // },\n \n // {\n // label: 'AstroTools',\n // href: 'https://app.astrotools.io/pancake-pair-explorer/0xE38676028803b9F6c7ef36642d68bAf6F0D4f846',\n // },\n // ],\n // },\n\n {\n label: 'Audit by CertiK',\n icon: 'AuditIcon',\n href: 'https://www.certik.org/projects/billhwangfinance',\n },\n {\n label: 'Audit By Solidity',\n icon: 'AuditIcon',\n href: 'https://solidity.finance/audits/BillHwang/',\n },\n \n {\n label: 'More',\n icon: 'MoreIcon',\n items: [\n {\n label: 'Github',\n href: 'https://github.com/BillHwang/',\n },\n {\n label:\"Blog\",\n href:\"https://medium.com/@billhwangfinance\"\n },\n {\n label:\"Documentation\",\n href:\"https://billhwang-defi.gitbook.io/billhwang-defi/\"\n }\n \n ],\n },\n \n // {\n // label: 'Audit',\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, useRef } from 'react'\nimport BigNumber from 'bignumber.js'\nimport styled from 'styled-components'\nimport { Button, Heading, Modal, useModal } from '@pancakeswap-libs/uikit'\nimport useI18n from 'hooks/useI18n'\nimport { useWallet } from '@binance-chain/bsc-use-wallet'\nimport rabbitmintingfarm from 'config/abi/rabbitmintingfarm.json'\nimport { RABBIT_MINTING_FARM_ADDRESS } from 'config/constants/nfts'\nimport multicall from 'utils/multicall'\n\ninterface NftYouWonModalProps {\n onDismiss?: () => void\n}\n\nconst ModalContent = styled.div`\n padding: 24px;\n text-align: center;\n`\n\nconst Actions = styled.div`\n text-align: center;\n`\n\nconst NftYouWonModal: React.FC = ({ onDismiss }) => {\n const TranslateString = useI18n()\n return (\n \n \n \"You\n \n {TranslateString(999, 'You won an NFT!')}\n \n \n \n \n \n \n )\n}\n\n/**\n * 1. Checks if nft supply available\n * 2. If supply is available check if the user can claim\n * 3. If the user can claim show a modal\n */\nconst NftGlobalNotification = () => {\n const { account } = useWallet()\n const [onPresentBurnModal] = useModal()\n const showModal = useRef(() => onPresentBurnModal())\n\n // useEffect(() => {\n // const checkNftStatus = async () => {\n // const [totalSupplyDistributedArr, currentDistributedSupplyArr, canClaimArr, hasClaimedArr] = await multicall(\n // rabbitmintingfarm,\n // [\n // { address: RABBIT_MINTING_FARM_ADDRESS, name: 'totalSupplyDistributed' },\n // { address: RABBIT_MINTING_FARM_ADDRESS, name: 'currentDistributedSupply' },\n // { address: RABBIT_MINTING_FARM_ADDRESS, name: 'canClaim', params: [account] },\n // { address: RABBIT_MINTING_FARM_ADDRESS, name: 'hasClaimed', params: [account] },\n // ],\n // )\n\n // // TODO: Figure out why these values are coming back as an array\n // const [totalSupplyDistributed]: [BigNumber] = totalSupplyDistributedArr\n // const [currentDistributedSupply]: [BigNumber] = currentDistributedSupplyArr\n // const [canClaim]: [boolean] = canClaimArr\n // const [hasClaimed]: [boolean] = hasClaimedArr\n\n // if (currentDistributedSupply.lt(totalSupplyDistributed) && canClaim && !hasClaimed) {\n // showModal.current()\n // }\n // }\n\n // if (account && !document.location.href.includes('/nft')) {\n // checkNftStatus()\n // }\n // }, [account, showModal])\n\n return
\n}\n\nexport default NftGlobalNotification\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 Casino from 'views/Casino'\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 Lottery = lazy(() => import('./views/Lottery'))\n// const Pools = lazy(() => import('./views/Pools'))\nconst Ifos = lazy(() => import('./views/Ifos'))\nconst NotFound = lazy(() => import('./views/NotFound'))\nconst Vault = lazy(() => import('./views/Vault'))\nconst Trade = lazy(() => import('./views/Trade'))\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 \n \n \n \n \n \n \n {/* */}\n {/* */}\n {/* */}\n \n \n \n \n \n \n \n \n \n\n\n \n \n \n\n\n \n \n \n \n {/* */}\n {/* */}\n {/* */}\n {/* Redirect */}\n {/* */}\n {/* */}\n {/* */}\n {/* */}\n {/* */}\n {/* */}\n {/* 404 */}\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","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","export { fetchFarmsPublicDataAsync, fetchFarmUserDataAsync } from './farms'\nexport {\n fetchPoolsPublicDataAsync,\n fetchPoolsUserDataAsync,\n updateUserAllowance,\n updateUserBalance,\n updateUserPendingReward,\n updateUserStakedBalance,\n} from './pools'\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","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, { 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 BigNumber from 'bignumber.js'\nimport { ethers } from 'ethers'\n\nexport const approve = async (lpContract, masterChefContract, account) => {\n console.log(\"in helper\")\n return lpContract.methods\n .approve(masterChefContract.options.address, ethers.constants.MaxUint256)\n .send({ from: account })\n}\n\nexport const stake = async (masterChefContract, pid, amount, account) => {\n return masterChefContract.methods\n .deposit(pid, new BigNumber(amount).times(new BigNumber(10).pow(18)).toString())\n .send({ from: account })\n .on('transactionHash', (tx) => {\n return tx.transactionHash\n })\n}\n\nexport const sousStake = async (sousChefContract, amount, account) => {\n return sousChefContract.methods\n .deposit(new BigNumber(amount).times(new BigNumber(10).pow(18)).toString())\n .send({ from: account })\n .on('transactionHash', (tx) => {\n return tx.transactionHash\n })\n}\n\nexport const sousStakeBnb = async (sousChefContract, amount, account) => {\n return sousChefContract.methods\n .deposit()\n .send({ from: account, value: new BigNumber(amount).times(new BigNumber(10).pow(18)).toString() })\n .on('transactionHash', (tx) => {\n return tx.transactionHash\n })\n}\n\nexport const unstake = async (masterChefContract, pid, amount, account) => {\n return masterChefContract.methods\n .withdraw(pid, new BigNumber(amount).times(new BigNumber(10).pow(18)).toString())\n .send({ from: account })\n .on('transactionHash', (tx) => {\n return tx.transactionHash\n })\n}\n\nexport const sousUnstake = async (sousChefContract, amount, account) => {\n // shit code: hard fix for old CTK and BLK\n if (sousChefContract.options.address === '0x3B9B74f48E89Ebd8b45a53444327013a2308A9BC') {\n return sousChefContract.methods\n .emergencyWithdraw()\n .send({ from: account })\n .on('transactionHash', (tx) => {\n return tx.transactionHash\n })\n }\n if (sousChefContract.options.address === '0xBb2B66a2c7C2fFFB06EA60BeaD69741b3f5BF831') {\n return sousChefContract.methods\n .emergencyWithdraw()\n .send({ from: account })\n .on('transactionHash', (tx) => {\n return tx.transactionHash\n })\n }\n return sousChefContract.methods\n .withdraw(new BigNumber(amount).times(new BigNumber(10).pow(18)).toString())\n .send({ from: account })\n .on('transactionHash', (tx) => {\n return tx.transactionHash\n })\n}\n\nexport const sousEmegencyUnstake = async (sousChefContract, amount, account) => {\n return sousChefContract.methods\n .emergencyWithdraw()\n .send({ from: account })\n .on('transactionHash', (tx) => {\n return tx.transactionHash\n })\n}\n\nexport const harvest = async (masterChefContract, pid, account) => {\n return masterChefContract.methods\n .deposit(pid, '0')\n .send({ from: account })\n .on('transactionHash', (tx) => {\n return tx.transactionHash\n })\n}\n\nexport const soushHarvest = async (sousChefContract, account) => {\n return sousChefContract.methods\n .deposit('0')\n .send({ from: account })\n .on('transactionHash', (tx) => {\n return tx.transactionHash\n })\n}\n\nexport const soushHarvestBnb = async (sousChefContract, account) => {\n return sousChefContract.methods\n .deposit()\n .send({ from: account, value: new BigNumber(0) })\n .on('transactionHash', (tx) => {\n return tx.transactionHash\n })\n}\n"],"sourceRoot":""}