{"version":3,"sources":["utils/formatBalance.ts","hooks/useWeb3.ts","hooks/useContract.ts","utils/callHelpers.ts","hooks/useHarvest.ts","components/UnlockButton.tsx","config/constants/index.ts"],"names":["getBalanceNumber","balance","decimals","displayBalance","BigNumber","dividedBy","pow","toNumber","getFullDisplayBalance","toFixed","RPC_URL","getRpcUrl","httpProvider","Web3","providers","HttpProvider","timeout","useWeb3","ethereum","useWallet","refEth","useRef","useState","web3","setweb3","useEffect","current","useContract","abi","address","contractOptions","eth","Contract","contract","setContract","useERC20","erc20","useCake","getCakeAddress","useLottery","lottery","getLotteryAddress","useMasterchef","masterChef","getMasterChefAddress","useSousChef","id","config","poolsConfig","find","pool","sousId","rawAbi","poolCategory","PoolCategory","BINANCE","sousChefBnb","sousChef","contractAddress","process","approve","lpContract","masterChefContract","account","a","methods","options","ethers","constants","MaxUint256","send","from","stake","pid","amount","deposit","times","toString","on","tx","transactionHash","sousStake","sousChefContract","sousStakeBnb","value","unstake","withdraw","sousUnstake","emergencyWithdraw","sousEmegencyUnstake","harvest","soushHarvest","soushHarvestBnb","useHarvest","farmPid","dispatch","useDispatch","onReward","useCallback","txHash","fetchFarmUserDataAsync","useAllHarvest","farmPids","harvestPromises","reduce","accum","Promise","all","useSousHarvest","isUsingBnb","handleHarvest","updateUserPendingReward","updateUserBalance","UnlockButton","props","TranslateString","useI18n","connect","reset","onPresentConnectModal","useWalletModal","onClick","size","farmsConfig","filter","farm","isCommunity","map","tokenSymbol"],"mappings":"yHAAA,yFAEaA,EAAmB,SAACC,GAAuC,IAAnBC,EAAkB,uDAAP,GACxDC,EAAiB,IAAIC,IAAUH,GAASI,UAAU,IAAID,IAAU,IAAIE,IAAIJ,IAC9E,OAAOC,EAAeI,YAGXC,EAAwB,SAACP,GAAuC,IAAnBC,EAAkB,uDAAP,GACnE,OAAOD,EAAQI,UAAU,IAAID,IAAU,IAAIE,IAAIJ,IAAWO,Y,kQCDtDC,EAAUC,cACVC,EAAe,IAAIC,IAAKC,UAAUC,aAAaL,EAAS,CAAEM,QAAS,MAsB1DC,EAfC,WACd,IAAQC,EAAyCC,cAAzCD,SACFE,EAASC,iBAAOH,GACtB,EAAwBI,mBAAS,IAAIT,IAAKK,GAAYN,IAAtD,mBAAOW,EAAP,KAAaC,EAAb,KASA,OAPAC,qBAAU,WACJP,IAAaE,EAAOM,UACtBF,EAAQ,IAAIX,IAAKK,GAAYN,IAC7BQ,EAAOM,QAAUR,KAElB,CAACA,IAEGK,G,6GCVHI,EAAc,SAACC,EAAcC,EAAiBC,GAClD,IAAMP,EAAON,IACb,EAAgCK,mBAAS,IAAIC,EAAKQ,IAAIC,SAASJ,EAAKC,EAASC,IAA7E,mBAAOG,EAAP,KAAiBC,EAAjB,KAMA,OAJAT,qBAAU,WACRS,EAAY,IAAIX,EAAKQ,IAAIC,SAASJ,EAAKC,EAASC,MAC/C,CAACF,EAAKC,EAASC,EAAiBP,IAE5BU,GAYIE,EAAW,SAACN,GAEvB,OAAOF,EADUS,EACYP,IAGlBQ,EAAU,WACrB,OAAOF,EAASG,gBAaLC,EAAa,WAExB,OAAOZ,EADKa,EACYC,gBAQbC,EAAgB,WAE3B,OAAOf,EADKgB,EACYC,gBAGbC,EAAc,SAACC,GAC1B,IAAMC,EAASC,IAAYC,MAAK,SAACC,GAAD,OAAUA,EAAKC,SAAWL,KACpDM,EAASL,EAAOM,eAAiBC,IAAaC,QAAUC,EAAcC,EAE5E,OAAO9B,EADKyB,EACYL,EAAOW,gBAAgBC,O,6aCxEpCC,EAAO,uCAAG,WAAOC,EAAYC,EAAoBC,GAAvC,SAAAC,EAAA,+EACdH,EAAWI,QACfL,QAAQE,EAAmBI,QAAQrC,QAASsC,SAAOC,UAAUC,YAC7DC,KAAK,CAAEC,KAAMR,KAHK,2CAAH,0DAMPS,EAAK,uCAAG,WAAOV,EAAoBW,EAAKC,EAAQX,GAAxC,SAAAC,EAAA,+EACZF,EAAmBG,QACvBU,QAAQF,EAAK,IAAIrE,IAAUsE,GAAQE,MAAM,IAAIxE,IAAU,IAAIE,IAAI,KAAKuE,YACpEP,KAAK,CAAEC,KAAMR,IACbe,GAAG,mBAAmB,SAACC,GACtB,OAAOA,EAAGC,oBALK,2CAAH,4DASLC,EAAS,uCAAG,WAAOC,EAAkBR,EAAQX,GAAjC,SAAAC,EAAA,+EAChBkB,EAAiBjB,QACrBU,QAAQ,IAAIvE,IAAUsE,GAAQE,MAAM,IAAIxE,IAAU,IAAIE,IAAI,KAAKuE,YAC/DP,KAAK,CAAEC,KAAMR,IACbe,GAAG,mBAAmB,SAACC,GACtB,OAAOA,EAAGC,oBALS,2CAAH,0DASTG,EAAY,uCAAG,WAAOD,EAAkBR,EAAQX,GAAjC,SAAAC,EAAA,+EACnBkB,EAAiBjB,QACrBU,UACAL,KAAK,CAAEC,KAAMR,EAASqB,MAAO,IAAIhF,IAAUsE,GAAQE,MAAM,IAAIxE,IAAU,IAAIE,IAAI,KAAKuE,aACpFC,GAAG,mBAAmB,SAACC,GACtB,OAAOA,EAAGC,oBALY,2CAAH,0DASZK,EAAO,uCAAG,WAAOvB,EAAoBW,EAAKC,EAAQX,GAAxC,SAAAC,EAAA,+EACdF,EAAmBG,QACvBqB,SAASb,EAAK,IAAIrE,IAAUsE,GAAQE,MAAM,IAAIxE,IAAU,IAAIE,IAAI,KAAKuE,YACrEP,KAAK,CAAEC,KAAMR,IACbe,GAAG,mBAAmB,SAACC,GACtB,OAAOA,EAAGC,oBALO,2CAAH,4DASPO,EAAW,uCAAG,WAAOL,EAAkBR,EAAQX,GAAjC,SAAAC,EAAA,yDAEgB,+CAArCkB,EAAiBhB,QAAQrC,QAFJ,yCAGhBqD,EAAiBjB,QACrBuB,oBACAlB,KAAK,CAAEC,KAAMR,IACbe,GAAG,mBAAmB,SAACC,GACtB,OAAOA,EAAGC,oBAPS,UAUgB,+CAArCE,EAAiBhB,QAAQrC,QAVJ,yCAWhBqD,EAAiBjB,QACrBuB,oBACAlB,KAAK,CAAEC,KAAMR,IACbe,GAAG,mBAAmB,SAACC,GACtB,OAAOA,EAAGC,oBAfS,gCAkBlBE,EAAiBjB,QACrBqB,SAAS,IAAIlF,IAAUsE,GAAQE,MAAM,IAAIxE,IAAU,IAAIE,IAAI,KAAKuE,YAChEP,KAAK,CAAEC,KAAMR,IACbe,GAAG,mBAAmB,SAACC,GACtB,OAAOA,EAAGC,oBAtBW,2CAAH,0DA0BXS,EAAmB,uCAAG,WAAOP,EAAkBR,EAAQX,GAAjC,SAAAC,EAAA,+EAC1BkB,EAAiBjB,QACrBuB,oBACAlB,KAAK,CAAEC,KAAMR,IACbe,GAAG,mBAAmB,SAACC,GACtB,OAAOA,EAAGC,oBALmB,2CAAH,0DASnBU,EAAO,uCAAG,WAAO5B,EAAoBW,EAAKV,GAAhC,SAAAC,EAAA,+EACdF,EAAmBG,QACvBU,QAAQF,EAAK,KACbH,KAAK,CAAEC,KAAMR,IACbe,GAAG,mBAAmB,SAACC,GACtB,OAAOA,EAAGC,oBALO,2CAAH,0DASPW,EAAY,uCAAG,WAAOT,EAAkBnB,GAAzB,SAAAC,EAAA,+EACnBkB,EAAiBjB,QACrBU,QAAQ,KACRL,KAAK,CAAEC,KAAMR,IACbe,GAAG,mBAAmB,SAACC,GACtB,OAAOA,EAAGC,oBALY,2CAAH,wDASZY,EAAe,uCAAG,WAAOV,EAAkBnB,GAAzB,SAAAC,EAAA,+EACtBkB,EAAiBjB,QACrBU,UACAL,KAAK,CAAEC,KAAMR,EAASqB,MAAO,IAAIhF,IAAU,KAC3C0E,GAAG,mBAAmB,SAACC,GACtB,OAAOA,EAAGC,oBALe,2CAAH,yD,yOCvFfa,EAAa,SAACC,GACzB,IAAMC,EAAWC,cACTjC,EAAY5C,cAAZ4C,QACFD,EAAqBpB,cAQ3B,MAAO,CAAEuD,SANaC,sBAAW,sBAAC,4BAAAlC,EAAA,sEACX0B,YAAQ5B,EAAoBgC,EAAS/B,GAD1B,cAC1BoC,EAD0B,OAEhCJ,EAASK,YAAuBrC,IAFA,kBAGzBoC,GAHyB,2CAI/B,CAACpC,EAASgC,EAAUD,EAAShC,MAKrBuC,EAAgB,SAACC,GAC5B,IAAQvC,EAAY5C,cAAZ4C,QACFD,EAAqBpB,cAU3B,MAAO,CAAEuD,SARaC,sBAAW,sBAAC,4BAAAlC,EAAA,6DAC1BuC,EAAkBD,EAASE,QAAO,SAACC,EAAOhC,GAC9C,MAAM,GAAN,mBAAWgC,GAAX,CAAkBf,YAAQ5B,EAAoBW,EAAKV,OAClD,IAH6B,kBAKzB2C,QAAQC,IAAIJ,IALa,2CAM/B,CAACxC,EAASuC,EAAUxC,MAKZ8C,EAAiB,SAACzD,GAAgC,IAAxB0D,EAAuB,wDACtDd,EAAWC,cACjB,EAAoB7E,cAAZ4C,EAAR,EAAQA,QACFmB,EAAmBrC,YAAYM,GAC/BW,EAAqBpB,cAErBoE,EAAgBZ,sBAAW,sBAAC,sBAAAlC,EAAA,yDACjB,IAAXb,EAD4B,gCAExBuC,YAAQ5B,EAAoB,EAAGC,GAFP,kCAGrB8C,EAHqB,iCAIxBjB,YAAgBV,EAAkBnB,GAJV,gDAMxB4B,YAAaT,EAAkBnB,GANP,QAQhCgC,EAASgB,YAAwB5D,EAAQY,IACzCgC,EAASiB,YAAkB7D,EAAQY,IATH,4CAU/B,CAACA,EAASgC,EAAUc,EAAY/C,EAAoBoB,EAAkB/B,IAEzE,MAAO,CAAE8C,SAAUa,K,qFCzCNG,IAZM,SAACC,GACpB,IAAMC,EAAkBC,cACxB,EAA2BjG,cAAnBkG,EAAR,EAAQA,QAASC,EAAjB,EAAiBA,MACTC,EAA0BC,YAAeH,EAASC,GAAlDC,sBAER,OACE,cAAC,IAAD,yBAAQE,QAASF,GAA2BL,GAA5C,IAAmDQ,KAAK,KAAxD,SACGP,EAAgB,IAAK,sB,8HCVLQ,IAAYC,QAAO,SAACC,GAAD,OAAUA,EAAKC,eAAaC,KAAI,SAACF,GAAD,OAAUA,EAAKG,gB","file":"static/js/1.9eb44901.chunk.js","sourcesContent":["import BigNumber from 'bignumber.js'\n\nexport const getBalanceNumber = (balance: BigNumber, decimals = 18) => {\n const displayBalance = new BigNumber(balance).dividedBy(new BigNumber(10).pow(decimals))\n return displayBalance.toNumber()\n}\n\nexport const getFullDisplayBalance = (balance: BigNumber, decimals = 18) => {\n return balance.dividedBy(new BigNumber(10).pow(decimals)).toFixed()\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'\r\nimport { AbiItem } from 'web3-utils'\r\nimport { ContractOptions } from 'web3-eth-contract'\r\nimport useWeb3 from 'hooks/useWeb3'\r\nimport { getMasterChefAddress, getCakeAddress, getLotteryAddress, getLotteryTicketAddress } from 'utils/addressHelpers'\r\nimport { poolsConfig } from 'config/constants'\r\nimport { PoolCategory } from 'config/constants/types'\r\nimport ifo from 'config/abi/ifo.json'\r\nimport erc20 from 'config/abi/erc20.json'\r\nimport rabbitmintingfarm from 'config/abi/rabbitmintingfarm.json'\r\nimport pancakeRabbits from 'config/abi/pancakeRabbits.json'\r\nimport lottery from 'config/abi/lottery.json'\r\nimport lotteryTicket from 'config/abi/lotteryNft.json'\r\nimport masterChef from 'config/abi/masterchef.json'\r\nimport sousChef from 'config/abi/sousChef.json'\r\nimport sousChefBnb from 'config/abi/sousChefBnb.json'\r\n\r\nconst useContract = (abi: AbiItem, address: string, contractOptions?: ContractOptions) => {\r\n const web3 = useWeb3()\r\n const [contract, setContract] = useState(new web3.eth.Contract(abi, address, contractOptions))\r\n\r\n useEffect(() => {\r\n setContract(new web3.eth.Contract(abi, address, contractOptions))\r\n }, [abi, address, contractOptions, web3])\r\n\r\n return contract\r\n}\r\n\r\n/**\r\n * Helper hooks to get specific contracts (by ABI)\r\n */\r\n\r\nexport const useIfoContract = (address: string) => {\r\n const ifoAbi = ifo as unknown as AbiItem\r\n return useContract(ifoAbi, address)\r\n}\r\n\r\nexport const useERC20 = (address: string) => {\r\n const erc20Abi = erc20 as unknown as AbiItem\r\n return useContract(erc20Abi, address)\r\n}\r\n\r\nexport const useCake = () => {\r\n return useERC20(getCakeAddress())\r\n}\r\n\r\nexport const useRabbitMintingFarm = (address: string) => {\r\n const rabbitMintingFarmAbi = rabbitmintingfarm as unknown as AbiItem\r\n return useContract(rabbitMintingFarmAbi, address)\r\n}\r\n\r\nexport const usePancakeRabbits = (address: string) => {\r\n const pancakeRabbitsAbi = pancakeRabbits as unknown as AbiItem\r\n return useContract(pancakeRabbitsAbi, address)\r\n}\r\n\r\nexport const useLottery = () => {\r\n const abi = lottery as unknown as AbiItem\r\n return useContract(abi, getLotteryAddress())\r\n}\r\n\r\nexport const useLotteryTicket = () => {\r\n const abi = lotteryTicket as unknown as AbiItem\r\n return useContract(abi, getLotteryTicketAddress())\r\n}\r\n\r\nexport const useMasterchef = () => {\r\n const abi = masterChef as unknown as AbiItem\r\n return useContract(abi, getMasterChefAddress())\r\n}\r\n\r\nexport const useSousChef = (id) => {\r\n const config = poolsConfig.find((pool) => pool.sousId === id)\r\n const rawAbi = config.poolCategory === PoolCategory.BINANCE ? sousChefBnb : sousChef\r\n const abi = rawAbi as unknown as AbiItem\r\n return useContract(abi, config.contractAddress[process.env.REACT_APP_CHAIN_ID])\r\n}\r\n\r\nexport default useContract\r\n","import BigNumber from 'bignumber.js'\nimport { ethers } from 'ethers'\n\nexport const approve = async (lpContract, masterChefContract, account) => {\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","import { useCallback } from 'react'\r\nimport { useWallet } from '@binance-chain/bsc-use-wallet'\r\nimport { useDispatch } from 'react-redux'\r\nimport { updateUserBalance, updateUserPendingReward } from 'state/pools'\r\nimport { fetchFarmUserDataAsync} from 'state/actions'\r\nimport { soushHarvest, soushHarvestBnb, harvest } from 'utils/callHelpers'\r\nimport { useMasterchef, useSousChef } from './useContract'\r\n\r\n\r\n// updateUserBalance, updateUserPendingReward\r\n\r\nexport const useHarvest = (farmPid: number) => {\r\n const dispatch = useDispatch()\r\n const { account } = useWallet()\r\n const masterChefContract = useMasterchef()\r\n\r\n const handleHarvest = useCallback(async () => {\r\n const txHash = await harvest(masterChefContract, farmPid, account)\r\n dispatch(fetchFarmUserDataAsync(account))\r\n return txHash\r\n }, [account, dispatch, farmPid, masterChefContract])\r\n\r\n return { onReward: handleHarvest }\r\n}\r\n\r\nexport const useAllHarvest = (farmPids: number[]) => {\r\n const { account } = useWallet()\r\n const masterChefContract = useMasterchef()\r\n\r\n const handleHarvest = useCallback(async () => {\r\n const harvestPromises = farmPids.reduce((accum, pid) => {\r\n return [...accum, harvest(masterChefContract, pid, account)]\r\n }, [])\r\n\r\n return Promise.all(harvestPromises)\r\n }, [account, farmPids, masterChefContract])\r\n\r\n return { onReward: handleHarvest }\r\n}\r\n\r\nexport const useSousHarvest = (sousId, isUsingBnb = false) => {\r\n const dispatch = useDispatch()\r\n const { account } = useWallet()\r\n const sousChefContract = useSousChef(sousId)\r\n const masterChefContract = useMasterchef()\r\n\r\n const handleHarvest = useCallback(async () => {\r\n if (sousId === 0) {\r\n await harvest(masterChefContract, 0, account)\r\n } else if (isUsingBnb) {\r\n await soushHarvestBnb(sousChefContract, account)\r\n } else {\r\n await soushHarvest(sousChefContract, account)\r\n }\r\n dispatch(updateUserPendingReward(sousId, account))\r\n dispatch(updateUserBalance(sousId, account))\r\n }, [account, dispatch, isUsingBnb, masterChefContract, sousChefContract, sousId])\r\n// dispatch,\r\n return { onReward: handleHarvest }\r\n}\r\n","import React from 'react'\nimport { Button, useWalletModal } from '@pancakeswap-libs/uikit'\nimport { useWallet } from '@binance-chain/bsc-use-wallet'\nimport useI18n from 'hooks/useI18n'\n\nconst UnlockButton = (props) => {\n const TranslateString = useI18n()\n const { connect, reset } = useWallet()\n const { onPresentConnectModal } = useWalletModal(connect, reset)\n\n return (\n \n )\n}\n\nexport default UnlockButton\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"],"sourceRoot":""}