{"version":3,"sources":["webpack:///./src/pages/tools/calculate-goose-lp-token-value.js"],"names":["goosePoolPairs","contractAbis","eggBusdContractAbi","eggBnbContractAbi","gg1BusdContractAbi","gg1BnbContractAbi","bnbBusdContractAbi","usdtBusdContractAbi","btcbBnbContractAbi","ethBnbContractAbi","daiBusdContractAbi","usdcBusdContractAbi","dotBnbContractAbi","cakeBusdContractAbi","cakeBnbContractAbi","contractAddresses","poolTokens","cgIdToName","initialClickedPairs","LpTokenSelectionContainer","styled","div","LpTokenSelectionCard","props","isSelected","LpTokenValueCardContainer","LpTokenValueCard","LpTokenValueCardTitle","CalcInput","input","CalcResult","formatNumber","num","decimalPlaces","numberWithCommas","toFixed","x","toString","replace","LpTokenSelection","lpTokenPair","onClick","pairName","toUpperCase","LpTokenValue","pair","useState","lpInfo","setLpInfo","providedQuantity","setProvidedQuantity","collectPrice","web3","apiRes","tokenId","cb","eth","Contract","methods","getReserves","call","then","res","data","usd","useEffect","ids","url","Web3","contractAbi","contractAddress","contract","tokenIds","axios","get","totalSupply","supply","priceTokenA","priceTokenB","Math","pow","reserveA","reserveB","priceAName","priceBName","lpSupply","priceA","priceB","totalPoolValue","pricePerLpCoin","value","type","onChange","e","target","CalcEggLpValue","clickedPairs","setClickedPairs","onSelectionClick","JSON","parse","stringify","noneSelected","Object","keys","reduce","acc","cur","concat","length","showAffiliateLink","title","description","map","i","key"],"mappings":"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","file":"component---src-pages-tools-calculate-goose-lp-token-value-js-4947932d4adbf78397a8.js","sourcesContent":["import React, { useEffect, useState } from \"react\"\r\nimport PageLayout from \"../../components/page-layout\"\r\nimport SEO from \"../../components/seo\"\r\nimport Web3 from \"web3\"\r\nimport axios from \"axios\"\r\nimport styled from \"styled-components\"\r\n\r\nimport eggBusdContractAbi from \"./contract-abis/egg-busd.json\"\r\nimport eggBnbContractAbi from \"./contract-abis/egg-bnb.json\"\r\nimport gg1BusdContractAbi from \"./contract-abis/gg1-busd.json\"\r\nimport gg1BnbContractAbi from \"./contract-abis/gg1-bnb.json\"\r\nimport bnbBusdContractAbi from './contract-abis/bnb-busd.json'\r\nimport usdtBusdContractAbi from './contract-abis/usdt-busd.json'\r\nimport btcbBnbContractAbi from './contract-abis/btcb-bnb.json'\r\nimport ethBnbContractAbi from './contract-abis/eth-bnb.json'\r\nimport daiBusdContractAbi from './contract-abis/dai-busd.json'\r\nimport usdcBusdContractAbi from './contract-abis/usdc-busd.json'\r\nimport dotBnbContractAbi from './contract-abis/dot-bnb.json'\r\nimport cakeBusdContractAbi from './contract-abis/cake-busd.json'\r\nimport cakeBnbContractAbi from './contract-abis/cake-bnb.json'\r\n\r\nconst bscRemoteNode = \"https://bsc-dataseed1.binance.org:443\"\r\n\r\nconst goosePoolPairs = [\r\n 'egg-busd',\r\n 'egg-bnb',\r\n 'gg1-busd',\r\n 'gg1-bnb',\r\n 'gg2-busd',\r\n 'gg2-bnb',\r\n 'bnb-busd',\r\n 'usdt-busd',\r\n 'btcb-bnb',\r\n 'eth-bnb',\r\n 'dai-busd',\r\n 'usdc-busd',\r\n 'dot-bnb',\r\n 'cake-busd',\r\n 'cake-bnb'\r\n]\r\n\r\nconst contractAbis = {\r\n 'egg-busd': eggBusdContractAbi,\r\n 'egg-bnb': eggBnbContractAbi,\r\n 'gg1-busd': gg1BusdContractAbi,\r\n 'gg1-bnb': gg1BnbContractAbi,\r\n 'gg2-busd': gg1BusdContractAbi,\r\n 'gg2-bnb': gg1BnbContractAbi,\r\n 'bnb-busd': bnbBusdContractAbi,\r\n 'usdt-busd': usdtBusdContractAbi,\r\n 'btcb-bnb': btcbBnbContractAbi,\r\n 'eth-bnb': ethBnbContractAbi,\r\n 'dai-busd': daiBusdContractAbi,\r\n 'usdc-busd': usdcBusdContractAbi,\r\n 'dot-bnb': dotBnbContractAbi,\r\n 'cake-busd': cakeBusdContractAbi,\r\n 'cake-bnb': cakeBnbContractAbi\r\n}\r\n\r\nconst contractAddresses = {\r\n 'egg-busd': '0x19e7cbecdd23a16dfa5573df54d98f7caae03019',\r\n 'egg-bnb': '0xd1b59d11316e87c3a0a069e80f590ba35cd8d8d3',\r\n 'gg1-busd': '0xb22708B6fe748EEc5bAFe770e4Ea48292C332aB0',\r\n 'gg1-bnb': '0x3544bb241aAbeD125fe2eAd4DCC6271c546725f7',\r\n 'gg2-busd': '0x78A4a02a0F437daf2ACDB09B1655A5c54747ABcB',\r\n 'gg2-bnb': '0xC2015012fc30090b35Be493327Ed1f762e43f4C6',\r\n 'bnb-busd': '0x1b96b92314c44b159149f7e0303511fb2fc4774f',\r\n 'usdt-busd': '0xc15fa3e22c912a276550f3e5fe3b0deb87b55acd',\r\n 'btcb-bnb': '0x7561eee90e24f3b348e1087a005f78b4c8453524',\r\n 'eth-bnb': '0x70d8929d04b60af4fb9b58713ebcf18765ade422',\r\n 'dai-busd': '0x3ab77e40340ab084c3e23be8e5a6f7afed9d41dc',\r\n 'usdc-busd': '0x680dd100e4b394bda26a59dd5c119a391e747d18',\r\n 'dot-bnb': '0xbcd62661a6b1ded703585d3af7d7649ef4dcdb5c',\r\n 'cake-busd': '0x0ed8e0a2d99643e1e65cca22ed4424090b8b7458',\r\n 'cake-bnb': '0xa527a61703d82139f8a06bc30097cc9caa2df5a6'\r\n}\r\n\r\n// IMPORTANT, THE ORDER OF TOKENS MATTERS\r\n// The order of tokens is used for matching reserves0 and reserves1\r\n// Also: this is the name used on CG\r\nconst poolTokens = {\r\n 'egg-busd': ['busd', 'goose-finance'],\r\n 'egg-bnb': ['binancecoin', 'goose-finance'],\r\n 'gg1-busd': ['GG1', 'busd'],\r\n 'gg1-bnb': ['GG1', 'binancecoin'],\r\n 'gg2-busd': ['GG2', 'busd'],\r\n 'gg2-bnb': ['GG2', 'binancecoin'],\r\n 'bnb-busd': ['binancecoin', 'busd'],\r\n 'usdt-busd': ['tether', 'busd'],\r\n 'btcb-bnb': ['bitcoin-bep2', 'binancecoin'],\r\n 'eth-bnb': ['binance-eth', 'binancecoin'],\r\n 'dai-busd': ['dai', 'busd'],\r\n 'usdc-busd': ['usd-coin', 'busd'],\r\n 'dot-bnb': ['polkadot', 'binancecoin'],\r\n 'cake-busd': ['pancakeswap-token', 'busd'],\r\n 'cake-bnb': ['pancakeswap-token', 'binancecoin']\r\n}\r\n\r\nconst cgIdToName = {\r\n 'busd': 'busd',\r\n 'binancecoin': 'bnb',\r\n 'tether': 'usdt',\r\n 'polkadot': 'dot',\r\n 'dai': 'dai',\r\n 'goose-finance': 'egg',\r\n 'bitcoin-bep2': 'btcb',\r\n 'binance-eth': 'eth',\r\n 'usd-coin': 'usdc',\r\n 'pancakeswap-token': 'cake',\r\n 'GG1': 'gg1',\r\n 'GG2': 'gg2'\r\n}\r\n\r\nconst initialClickedPairs = {\r\n 'egg-busd': true,\r\n 'egg-bnb': true\r\n}\r\n\r\nconst LpTokenSelectionContainer = styled.div`\r\n display: grid;\r\n grid-template-columns: repeat(4, 1fr);\r\n column-gap: 15px;\r\n row-gap: 15px;\r\n padding-bottom: 1rem;\r\n\r\n @media (max-width: 600px) {\r\n grid-template-columns: repeat(2, 1fr);\r\n }\r\n\r\n @media (min-width:600px) and (max-width: 820px) {\r\n grid-template-columns: repeat(3, 1fr);\r\n }\r\n`\r\n\r\nconst LpTokenSelectionCard = styled.div`\r\n padding: 0.75rem 0;\r\n border-radius: 10px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n text-align: center;\r\n\r\n background: ${props => props.isSelected ? \"#ddd\" : \"white\"};\r\n\r\n border: ${props => props.isSelected \r\n ? \"1px solid cornflowerblue\" : \"1px solid #ccc\"};\r\n\r\n &:hover {\r\n cursor: pointer;\r\n }\r\n`\r\n\r\nconst LpTokenValueCardContainer = styled.div``\r\n\r\nconst LpTokenValueCard = styled.div`\r\n margin-bottom: 1.5rem;\r\n padding: 1rem;\r\n border: 1px solid #ccc;\r\n border-radius: 10px;\r\n`\r\n\r\nconst LpTokenValueCardTitle = styled.div`\r\n font-weight: bold;\r\n`\r\n\r\nconst CalcInput = styled.input`\r\n width: 80px;\r\n margin-left: 0.5rem;\r\n padding: 0.25rem;\r\n border: 1px solid #ccc;\r\n border-radius: 3px;\r\n`\r\n\r\nconst CalcResult = styled.div`\r\n padding-top: 0.5rem;\r\n`\r\n\r\nconst formatNumber = (num, decimalPlaces) => {\r\n return numberWithCommas(num.toFixed(decimalPlaces))\r\n}\r\n\r\nconst getCoinPrices = ids => {\r\n const url = `https://api.coingecko.com/api/v3/simple/price?ids=${ids}&vs_currencies=usd`\r\n return axios.get(url)\r\n}\r\n\r\nconst numberWithCommas = x => {\r\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\")\r\n}\r\n\r\nconst LpTokenSelection = ({lpTokenPair, isSelected, onClick}) => {\r\n const pairName = lpTokenPair.toUpperCase()\r\n return (\r\n onClick(lpTokenPair)}\r\n isSelected={isSelected}\r\n >\r\n {pairName}\r\n \r\n )\r\n}\r\n\r\nconst LpTokenValue = ({pair}) => {\r\n const pairName = pair.toUpperCase()\r\n const [lpInfo, setLpInfo] = useState({})\r\n const [providedQuantity, setProvidedQuantity] = useState(0)\r\n\r\n const collectPrice = (web3, apiRes, tokenId, cb) => {\r\n if (tokenId !== 'GG1' && tokenId !== 'GG2') {\r\n cb(apiRes.data[tokenId].usd)\r\n return\r\n }\r\n if (tokenId === 'GG1') {\r\n const gg1BusdContract = new web3.eth.Contract(contractAbis['gg1-busd'], contractAddresses['gg1-busd'])\r\n gg1BusdContract.methods.getReserves().call().then(res => {\r\n cb(res[1] / res[0])\r\n })\r\n }\r\n if (tokenId === 'GG2') {\r\n const gg2BusdContract = new web3.eth.Contract(contractAbis['gg2-busd'], contractAddresses['gg2-busd'])\r\n gg2BusdContract.methods.getReserves().call().then(res => {\r\n cb(res[1] / res[0])\r\n })\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n const web3 = new Web3(bscRemoteNode)\r\n const contractAbi = contractAbis[pair]\r\n const contractAddress = contractAddresses[pair]\r\n const contract = new web3.eth.Contract(contractAbi, contractAddress)\r\n\r\n const tokenIds = poolTokens[pair]\r\n getCoinPrices(tokenIds).then(apiRes => {\r\n contract.methods.totalSupply().call().then(supply => {\r\n contract.methods.getReserves().call().then(res => {\r\n collectPrice(web3, apiRes, tokenIds[0], priceTokenA => {\r\n collectPrice(web3, apiRes, tokenIds[1], priceTokenB => {\r\n setLpInfo({\r\n supply: supply / Math.pow(10, 18),\r\n reserveA: res[0] / Math.pow(10, 18),\r\n reserveB: res[1] / Math.pow(10, 18),\r\n priceTokenA,\r\n priceTokenB\r\n })\r\n })\r\n })\r\n })\r\n })\r\n })\r\n }, [pair])\r\n\r\n const priceAName = cgIdToName[poolTokens[pair][0]].toUpperCase()\r\n const priceBName = cgIdToName[poolTokens[pair][1]].toUpperCase()\r\n\r\n const lpSupply = lpInfo[\"supply\"] ? lpInfo[\"supply\"] : 0\r\n const reserveA = lpInfo[\"reserveA\"] ? lpInfo[\"reserveA\"] : 0\r\n const reserveB = lpInfo[\"reserveB\"] ? lpInfo[\"reserveB\"] : 0\r\n const priceA = lpInfo[\"priceTokenA\"] ? lpInfo[\"priceTokenA\"] : 0\r\n const priceB = lpInfo[\"priceTokenB\"] ? lpInfo[\"priceTokenB\"] : 0\r\n\r\n const totalPoolValue = (reserveA * priceA) + (reserveB * priceB)\r\n const pricePerLpCoin = lpSupply > 0 ? totalPoolValue / lpSupply : 0\r\n\r\n return (\r\n \r\n \r\n {pairName}\r\n \r\n

{priceAName}: ${formatNumber(priceA, 2)}

\r\n

{priceBName}: ${formatNumber(priceB, 2)}

\r\n

{pairName} LP Token Supply: {formatNumber(lpSupply, 2)}

\r\n

Value of Entire {pairName} Pool: ${formatNumber(totalPoolValue, 2)}

\r\n

Price Per {pairName} LP Token: ${formatNumber(pricePerLpCoin, 2)}

\r\n
\r\n

Calculate Your LP Token Value

\r\n
\r\n
\r\n LP Token Quantity\r\n setProvidedQuantity(e.target.value)}\r\n />\r\n
\r\n \r\n { \r\n (pricePerLpCoin > 0 && providedQuantity !== 0)\r\n ? `= $${formatNumber(pricePerLpCoin * providedQuantity, 2)}`\r\n : \"= $0.00\"\r\n }\r\n \r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default function CalcEggLpValue() {\r\n\r\n const [clickedPairs, setClickedPairs] = useState(initialClickedPairs)\r\n\r\n const onSelectionClick = lpTokenPair => {\r\n if (lpTokenPair in clickedPairs) {\r\n clickedPairs[lpTokenPair] = !clickedPairs[lpTokenPair]\r\n setClickedPairs(JSON.parse(JSON.stringify(clickedPairs)))\r\n } else {\r\n clickedPairs[lpTokenPair] = true;\r\n setClickedPairs(JSON.parse(JSON.stringify(clickedPairs)))\r\n }\r\n }\r\n\r\n const noneSelected = Object.keys(clickedPairs).reduce((acc, cur) => {\r\n return clickedPairs[cur] ? acc.concat(cur) : acc\r\n }, []).length === 0\r\n\r\n return (\r\n \r\n \r\n\r\n

Select LP Tokens

\r\n \r\n {\r\n goosePoolPairs.map((pair, i) => {\r\n return (\r\n \r\n )\r\n })\r\n }\r\n \r\n
\r\n\r\n

LP Token Valuations

\r\n \r\n {\r\n Object.keys(clickedPairs).map((key, i) => {\r\n if (!clickedPairs[key]) {\r\n return null;\r\n }\r\n return (\r\n \r\n )\r\n })\r\n }\r\n { \r\n noneSelected &&\r\n

Please select at least one LP token.

\r\n }\r\n
\r\n
\r\n )\r\n}\r\n"],"sourceRoot":""}