diff --git a/docs/asset-manifest.json b/docs/asset-manifest.json index ace3a2e..be94f1e 100644 --- a/docs/asset-manifest.json +++ b/docs/asset-manifest.json @@ -1,15 +1,15 @@ { "files": { "main.css": "/web3-snippets/static/css/main.534a6974.chunk.css", - "main.js": "/web3-snippets/static/js/main.0500f203.chunk.js", - "main.js.map": "/web3-snippets/static/js/main.0500f203.chunk.js.map", + "main.js": "/web3-snippets/static/js/main.09e4141f.chunk.js", + "main.js.map": "/web3-snippets/static/js/main.09e4141f.chunk.js.map", "runtime-main.js": "/web3-snippets/static/js/runtime-main.e9f1977e.js", "runtime-main.js.map": "/web3-snippets/static/js/runtime-main.e9f1977e.js.map", "static/css/2.181a3cb8.chunk.css": "/web3-snippets/static/css/2.181a3cb8.chunk.css", "static/js/2.d58a128c.chunk.js": "/web3-snippets/static/js/2.d58a128c.chunk.js", "static/js/2.d58a128c.chunk.js.map": "/web3-snippets/static/js/2.d58a128c.chunk.js.map", "index.html": "/web3-snippets/index.html", - "precache-manifest.2fb3d4d88dab1dc8887a3980a3ccc046.js": "/web3-snippets/precache-manifest.2fb3d4d88dab1dc8887a3980a3ccc046.js", + "precache-manifest.af1528e5c5b787ed8e50f59d3dbbe872.js": "/web3-snippets/precache-manifest.af1528e5c5b787ed8e50f59d3dbbe872.js", "service-worker.js": "/web3-snippets/service-worker.js", "static/css/2.181a3cb8.chunk.css.map": "/web3-snippets/static/css/2.181a3cb8.chunk.css.map", "static/css/main.534a6974.chunk.css.map": "/web3-snippets/static/css/main.534a6974.chunk.css.map", @@ -21,6 +21,6 @@ "static/css/2.181a3cb8.chunk.css", "static/js/2.d58a128c.chunk.js", "static/css/main.534a6974.chunk.css", - "static/js/main.0500f203.chunk.js" + "static/js/main.09e4141f.chunk.js" ] } \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 7587883..d354434 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1 +1 @@ -React App
\ No newline at end of file +React App
\ No newline at end of file diff --git a/docs/precache-manifest.2fb3d4d88dab1dc8887a3980a3ccc046.js b/docs/precache-manifest.af1528e5c5b787ed8e50f59d3dbbe872.js similarity index 93% rename from docs/precache-manifest.2fb3d4d88dab1dc8887a3980a3ccc046.js rename to docs/precache-manifest.af1528e5c5b787ed8e50f59d3dbbe872.js index 743b486..270f4cc 100644 --- a/docs/precache-manifest.2fb3d4d88dab1dc8887a3980a3ccc046.js +++ b/docs/precache-manifest.af1528e5c5b787ed8e50f59d3dbbe872.js @@ -1,6 +1,6 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ { - "revision": "846a9730367a494f6fb2190555e889a5", + "revision": "5938d3b28f9da6aa353884e038f523ad", "url": "/web3-snippets/index.html" }, { @@ -8,7 +8,7 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ "url": "/web3-snippets/static/css/2.181a3cb8.chunk.css" }, { - "revision": "0e189896282c930ce790", + "revision": "97fe755d54a87b852041", "url": "/web3-snippets/static/css/main.534a6974.chunk.css" }, { @@ -20,8 +20,8 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ "url": "/web3-snippets/static/js/2.d58a128c.chunk.js.LICENSE.txt" }, { - "revision": "0e189896282c930ce790", - "url": "/web3-snippets/static/js/main.0500f203.chunk.js" + "revision": "97fe755d54a87b852041", + "url": "/web3-snippets/static/js/main.09e4141f.chunk.js" }, { "revision": "55dd424de1c313764148", diff --git a/docs/service-worker.js b/docs/service-worker.js index 74df803..3668a7a 100644 --- a/docs/service-worker.js +++ b/docs/service-worker.js @@ -14,7 +14,7 @@ importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js"); importScripts( - "/web3-snippets/precache-manifest.2fb3d4d88dab1dc8887a3980a3ccc046.js" + "/web3-snippets/precache-manifest.af1528e5c5b787ed8e50f59d3dbbe872.js" ); self.addEventListener('message', (event) => { diff --git a/docs/static/js/main.0500f203.chunk.js.map b/docs/static/js/main.0500f203.chunk.js.map deleted file mode 100644 index d2bb687..0000000 --- a/docs/static/js/main.0500f203.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../lib/eth-helpers.js","ApiKeys.js","../../lib/helpers.js","../../lib/anti-phishing.js","snippets/CheckContract.js","snippets/CheckApprove.js","../../lib/abi/uniswap.js","../../lib/abi/erc20.js","../../lib/uniswap.js","snippets/UniswapLoss.js","../../lib/compounding.js","snippets/Compounding.js","../../lib/abi/pancake-pair.js","../../lib/abi/bep20.js","../../lib/pancake.js","snippets/PancakeLoss.js","../../lib/abi/balancer-pool.js","../../lib/abi/oneinche-pair.js","../../lib/abi/sushiswap-pair.js","../../lib/abi/sushi-masterchef.js","../../lib/abi/unic-pair.js","../../lib/abi/unicFarm.js","../../lib/abi/one-inch-farm.js","../../lib/pool-position.js","snippets/PoolPosition.js","App.js","serviceWorker.js","index.js"],"names":["getWeb3","endpoint","web3","Web3","eth","transactionBlockTimeout","transactionPollingTimeout","transactionConfirmationBlocks","getContract","address","abi","Contract","getTokenData","holderAddress","a","tokenContract","tokenDataTxs","methods","decimals","call","name","symbol","isAddress","push","balanceOf","Promise","all","tokenRawDatas","balance","BigNumber","Address","Decimals","Name","Symbol","Balance","bigToNumber","amount","tokenData","dividedBy","toNumber","uint256ToBigNumber","startsWith","ApiKeysContext","React","createContext","useApiKeys","useContext","sleep","milis","resolve","setTimeout","daysAgo","timestampSec","secDelta","Date","getTime","parseInt","Math","round","timestampNow","fetchJson","url","fetch","res","json","fetchJsonPost","dataStr","method","body","headers","checkContract","ethscn","hexData","PublishedAbi","SourceCodeUrl","DeployedDaysAgo","NumTx","NumTxHaveMore","NumTxInLast24Hours","TxListUrl","TxStats","Tx100DaysAgo","Tx1000DaysAgo","EthSpentOnGas","DifferentAddresses","MethodCall","abiReq","status","result","JSON","parse","firstTxs","lastTxs","length","to","input","timeStamp","_","some","tx","toLowerCase","Error","before24h","reduce","sum","gasUsed","gasPrice","uniqBy","from","getStatsPerMethod","decodeHexData","checkApprove","inputs","internalType","type","outputs","stateMutability","txs","total","sumPerMethod","decoder","InputDataDecoder","decoded","decodeData","mapValues","Method","Args","i","names","types","rawValue","value","toString","eq","BN","utils","toChecksumAddress","Type","Value","isContract","getCode","Snippet","useState","setInput","setResult","loading","setLoading","handleChange","_e","handleSubmit","Container","textAlign","Segment","secondary","style","width","margin","Form","onSubmit","spellcheck","Input","label","placeholder","onChange","TextArea","Button","primary","stringify","uniswapPairAbi","payable","anonymous","indexed","constant","erc20Abi","mintEventTopic0","burnEventTopic0","lpPosition","fromBlock","toBlock","pair","lp","Tokens","LiquidityChanges","SumLpTokens","SumTokenDeposits","AvailableTokensToWithdraw","undefined","TotalWorth","AvailableAfterRebalance","pairContract","getPairTokensData","tokenDatas","getPastEvents","filter","addEvents","map","transactionHash","blockNumber","returnValues","BlockNumber","TxHash","LpTokenDelta","SumLpTokensAfter","TokenDepositDelta","removeEvents","negated","sort","b","change","getTransactionReceipt","receipt","logs","log","topics","inputsAbi","find","en","decodeLog","data","drop","amount0","amount1","plus","totalSupply","totalSupplyLpTokens","fractionOfPool","getReserves","reserves","token0Reserve","_reserve0","token1Reserve","_reserve1","multipliedBy","CurrentPriceUSD","calcWorth","CurrentPriceBTC","CurrentPriceETH","rebalance","amountArray","tokenDataArray","currentPriceField","worth0","worth1","identicalIndex","targetAmount","diffInOtherToken","minus","getTokensTxs","token0","token1","tokens","getTokenDataTxs","fillInPrice","coingecko","market_data","current_price","usd","btc","Group","widths","fluid","compoundingSim","apy","days","cpCost","cpRateMinutes","internalCalculation","parseFloat","RecommendedMinutes","maxMin","bestProfit","bestMin","delta","CompoundingProfit","findRecommendedMinutes","ResultWithoutCompound","ResultWithCompound","CompoundingProfitPercent","amountSoFar","minutesSoFar","pancakePairAbi","bep20Abi","pancakeLpPosition","bscWeb3","coingeckoCoinsData","tokenPricesTxs","coinData","toUpperCase","id","tokenPrices","balancerPoolAbi","oneinchPairAbi","sushiswapPairAbi","sushiMasterchefAbi","unicPairAbi","unicFarmAbi","oneInchFarmAbi","PoolType","EmptyAddress","lpPositionStatus","holderInfo","poolType","poolAddress","optionalFarmAddress","getBalancerPoolData","getUniswapPoolData","getSushiswapPoolData","getOneInchPoolData","getUJennyPoolData","newPoolData","PoolAddress","HolderAddress","totalLPSupply","holderLPBalance","lpTokenDecimals","positionValue","farmAddress","indirectFranctionOfPool","farmRewardTokenData","holderPoolData","TotalLPSupply","HolderLPBalance","FarmAddress","HolderLPBalanceThroughFarm","UnclaimedReward","PositionValue","pool","poolDataTxs","getFinalTokens","poolDataRes","totalLp","holderLp","tokenTxs","tokenAddress","getBalance","tokenRes","positionValues","MasterChefAddress","farmPoolNumber","masterChef","userInfo","pendingSushi","sushiCalculateLocked","directFractionOfPool","holderLpInFarm","sushiRewardTokenData","ClaimedBalanceLeftInWallet","UnclaimedUnlockedBalance","UnclaimedLockedBalanceEstimate","Number","SushiGraphUrl","farmPoolId","query","response","errors","message","users","user","sushiPerShare","accSushiPerShare","sushiDebt","rewardDebt","pending","harvested","sushiHarvested","locked","getTokens","farm","earned","farmLp","holderFarmTokens","totalFarmTokens","getOneInchTokenData","getBalanceForRemoval","oneInchRewardTokenData","UnicFarmAddress","farmContract","pendingUnic","unicRewardTokenData","poolTypeOptions","key","text","farmLabel","hideFarming","setHideFarming","setFarmLabel","updateVisuals","findPoolType","option","Select","options","disabled","App","ApiKeys","Provider","basename","className","Menu","inverted","Item","exact","path","component","CheckContract","CheckApprove","UniswapLoss","Compounding","PancakeLoss","PoolPosition","Boolean","window","location","hostname","match","ReactDOM","render","StrictMode","document","getElementById","navigator","serviceWorker","ready","then","registration","unregister","catch","error","console"],"mappings":"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","file":"static/js/main.0500f203.chunk.js","sourcesContent":["import BigNumber from \"bignumber.js\";\nimport Web3 from \"web3\";\n\nexport function getWeb3(endpoint) {\n const web3 = new Web3(endpoint);\n web3.eth.transactionBlockTimeout = 0; // to stop web3 from polling pending tx\n web3.eth.transactionPollingTimeout = 0; // to stop web3 from polling pending tx\n web3.eth.transactionConfirmationBlocks = 1; // to stop web3 from polling pending tx\n return web3;\n}\n\n// Todo: if not a client web need to change this as the new here leaks\nexport function getContract(address, abi, web3) {\n return new web3.eth.Contract(abi, address);\n}\n\nexport async function getTokenData(address, abi, web3, holderAddress) {\n const tokenContract = getContract(address, abi, web3);\n const tokenDataTxs = [\n tokenContract.methods.decimals().call(),\n tokenContract.methods.name().call(),\n tokenContract.methods.symbol().call(),\n ];\n if (isAddress(holderAddress)) {\n tokenDataTxs.push(tokenContract.methods.balanceOf(holderAddress).call());\n }\n const tokenRawDatas = await Promise.all(tokenDataTxs);\n const balance = new BigNumber(isAddress(holderAddress) ? tokenRawDatas[3] : 0)\n return {\n Address: address,\n Decimals: tokenRawDatas[0],\n Name: tokenRawDatas[1],\n Symbol: tokenRawDatas[2],\n Balance: bigToNumber(balance, tokenRawDatas[0]) \n };\n}\n\nexport function bigToNumber(amount, tokenData) {\n const decimals = typeof tokenData === 'string' ? tokenData : tokenData.Decimals;\n return amount.dividedBy(`1e${decimals}`).toNumber();\n}\n\nexport function uint256ToBigNumber(amount, tokenData) {\n return new BigNumber(amount).dividedBy(`1e${tokenData.Decimals}`);\n}\n \nexport function isAddress(address) {\n return typeof address === 'string' && address.startsWith('0x');\n}","import React, { useContext } from \"react\";\n\nconst ApiKeysContext = React.createContext({});\n\nexport function useApiKeys() {\n return useContext(ApiKeysContext);\n}\n\nexport default ApiKeysContext;\n","import fetch from \"node-fetch\";\n\nexport async function sleep(milis) {\n return new Promise((resolve) => setTimeout(resolve, milis));\n}\n\nexport function daysAgo(timestampSec) {\n const secDelta = new Date().getTime() / 1000 - parseInt(timestampSec);\n return Math.round((10 * secDelta) / (24 * 60 * 60)) / 10;\n}\n\nexport function timestampNow() {\n return Math.round(new Date().getTime() / 1000);\n}\n\nexport async function fetchJson(url) {\n const res = await fetch(url);\n return await res.json();\n}\n\nexport async function fetchJsonPost(url, dataStr) {\n const res = await fetch(url,\n {\n method: 'post',\n body: dataStr,\n headers: { 'Content-Type': 'application/json' },\n });\n return await res.json();\n}\n","import _ from \"lodash\";\nimport BN from \"bn.js\";\nimport InputDataDecoder from \"ethereum-input-data-decoder\";\nimport { fetchJson, daysAgo, timestampNow, sleep } from \"./helpers\";\n\nconst MIN_CONTRACT_CODE_SIZE = 20;\n\n// takes a contract and method call and performs due diligence over both to protect against phishing\n// web3 - initialized web3 instance used for read only\n// ethscn - etherscan.io API key (string)\n// address - the address of the contract (0x string)\n// hexData - the encoded input data to the transaction (0x string)\nexport async function checkContract({ web3, ethscn, address, hexData }) {\n const res = {\n Address: address,\n PublishedAbi: false,\n SourceCodeUrl: \"\",\n DeployedDaysAgo: 0,\n NumTx: 0,\n NumTxHaveMore: false,\n NumTxInLast24Hours: 0,\n TxListUrl: \"\",\n TxStats: {},\n Tx100DaysAgo: 0,\n Tx1000DaysAgo: 0,\n EthSpentOnGas: 0,\n DifferentAddresses: 0,\n MethodCall: {},\n };\n\n // abi\n let abi;\n const abiReq = await fetchJson(\n `https://api.etherscan.io/api?module=contract&action=getabi&address=${address}&apikey=${ethscn}`\n );\n if (abiReq.status === \"1\" && abiReq.result) {\n abi = JSON.parse(abiReq.result);\n res.PublishedAbi = true;\n res.SourceCodeUrl = `https://etherscan.io/address/${address}#code`;\n }\n\n // transactions\n res.TxListUrl = `https://etherscan.io/txs?a=${address}`;\n const firstTxs = await fetchJson(\n `https://api.etherscan.io/api?module=account&action=txlist&address=${address}&startblock=0&endblock=99999999&sort=asc&apikey=${ethscn}`\n );\n const lastTxs = await fetchJson(\n `https://api.etherscan.io/api?module=account&action=txlist&address=${address}&startblock=0&endblock=99999999&sort=desc&apikey=${ethscn}`\n );\n if (\n firstTxs.status === \"1\" &&\n firstTxs.result &&\n firstTxs.result.length > 0 &&\n lastTxs.status === \"1\" &&\n lastTxs.result &&\n lastTxs.result.length > 0\n ) {\n if (firstTxs.result[0].to === \"\" && firstTxs.result[0].input.length > MIN_CONTRACT_CODE_SIZE) {\n res.DeployedDaysAgo = daysAgo(firstTxs.result[0].timeStamp);\n }\n if (\n _.some(firstTxs.result, (tx) => tx.to !== \"\" && tx.to !== address.toLowerCase()) ||\n _.some(firstTxs.result, (tx) => tx.to !== \"\" && tx.to !== address.toLowerCase())\n ) {\n throw new Error(\"Address is not destination of all transactions, is this a contract?\");\n }\n if (firstTxs.result.length < 10000 && lastTxs.result.length < 10000) {\n res.NumTx = firstTxs.result.length;\n res.NumTxHaveMore = false;\n } else {\n res.NumTx = 10000;\n res.NumTxHaveMore = true;\n }\n if (firstTxs.result.length > 100) {\n res.Tx100DaysAgo = daysAgo(firstTxs.result[100].timeStamp);\n }\n if (firstTxs.result.length > 1000) {\n res.Tx1000DaysAgo = daysAgo(firstTxs.result[1000].timeStamp);\n }\n const before24h = timestampNow() - 24 * 60 * 60;\n res.NumTxInLast24Hours = _.reduce(\n lastTxs.result,\n (sum, tx) => sum + (parseInt(tx.timeStamp) > before24h ? 1 : 0),\n 0\n );\n res.EthSpentOnGas = _.reduce(\n lastTxs.result,\n (sum, tx) => sum + parseInt(tx.gasUsed) * (parseInt(tx.gasPrice) / 1e18),\n 0\n );\n res.DifferentAddresses = _.uniqBy(lastTxs.result, (tx) => tx.from.toLowerCase()).length;\n res.EthSpentOnGas = Math.round(res.EthSpentOnGas * 1000) / 1000;\n if (abi) res.TxStats = getStatsPerMethod(abi, lastTxs.result);\n }\n\n // hex data\n if (hexData && abi) res.MethodCall = await decodeHexData(web3, ethscn, abi, hexData);\n else delete res.MethodCall;\n\n return res;\n}\n\n// takes input for an ERC20 Approve action and performs due diligence over it to protect against phishing\n// web3 - initialized web3 instance used for read only\n// ethscn - etherscan.io API key (string)\n// hexData - the encoded input data to the transaction (0x string)\nexport async function checkApprove({ web3, ethscn, hexData }) {\n const res = {\n MethodCall: {},\n };\n\n const abi = [\n {\n inputs: [\n { internalType: \"address\", name: \"spender\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n ],\n name: \"approve\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n ];\n res.MethodCall = await decodeHexData(web3, ethscn, abi, hexData);\n\n return res;\n}\n\nfunction getStatsPerMethod(abi, txs) {\n let total = 0;\n const sumPerMethod = {};\n const decoder = new InputDataDecoder(abi);\n for (const tx of txs) {\n const decoded = decoder.decodeData(tx.input);\n if (!decoded.method) continue;\n if (!sumPerMethod[decoded.method]) sumPerMethod[decoded.method] = 0;\n sumPerMethod[decoded.method]++;\n total++;\n if (total > 1000) break;\n }\n return _.mapValues(sumPerMethod, (sum) => Math.round((100 * 100 * sum) / total) / 100);\n}\n\nasync function decodeHexData(web3, ethscn, abi, hexData) {\n const decoder = new InputDataDecoder(abi);\n const decoded = decoder.decodeData(hexData);\n const res = {\n Method: decoded.method,\n Args: [],\n };\n for (let i = 0; i < decoded.names.length; i++) {\n const name = decoded.names[i];\n const type = decoded.types[i];\n const rawValue = decoded.inputs[i];\n let value = rawValue.toString();\n if (\n type === \"uint256\" &&\n rawValue.eq(new BN(\"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\", 16))\n ) {\n value = \"unlimited\";\n }\n if (type === \"address\") {\n value = web3.utils.toChecksumAddress(value);\n }\n res.Args[i] = {\n Name: name,\n Type: type,\n Value: value,\n };\n if (type === \"address\" && (await isContract(web3, value))) {\n await sleep(1100); // don't stress etherscan api\n res.Args[i].Contract = await checkContract({\n web3,\n ethscn,\n address: value,\n });\n }\n }\n return res;\n}\n\nasync function isContract(web3, address) {\n const res = await web3.eth.getCode(address);\n return res.length > MIN_CONTRACT_CODE_SIZE;\n}\n","import React, { useState } from \"react\";\nimport { Container, Segment, Form } from \"semantic-ui-react\";\nimport { checkContract } from \"web3-snippets/anti-phishing\";\nimport { useApiKeys } from \"../ApiKeys\";\n\nfunction Snippet() {\n const { web3, ethscn } = useApiKeys();\n const [input, setInput] = useState({});\n const [result, setResult] = useState();\n const [loading, setLoading] = useState(false);\n const handleChange = (_e, { name, value }) => setInput({ ...input, [name]: value });\n const handleSubmit = async () => {\n const { address, hexData } = input;\n setLoading(true);\n const result = await checkContract({ web3, ethscn, address, hexData });\n setResult(result);\n setLoading(false);\n };\n return (\n
\n

Check Contract (Anti-Phishing)

\n
\n \n \n
\n \n \n Submit\n \n
\n
{JSON.stringify(result, null, 2)}
\n
\n
\n );\n}\n\nexport default Snippet;\n","import React, { useState } from \"react\";\nimport { Container, Segment, Form } from \"semantic-ui-react\";\nimport { checkApprove } from \"web3-snippets/anti-phishing\";\nimport { useApiKeys } from \"../ApiKeys\";\n\nfunction Snippet() {\n const { web3, ethscn } = useApiKeys();\n const [input, setInput] = useState({});\n const [result, setResult] = useState();\n const [loading, setLoading] = useState(false);\n const handleChange = (_e, { name, value }) => setInput({ ...input, [name]: value });\n const handleSubmit = async () => {\n const { hexData } = input;\n setLoading(true);\n const result = await checkApprove({ web3, ethscn, hexData });\n setResult(result);\n setLoading(false);\n };\n return (\n
\n

Check Approve (Anti-Phishing)

\n
\n \n \n
\n \n Submit\n \n
\n
{JSON.stringify(result, null, 2)}
\n
\n
\n );\n}\n\nexport default Snippet;\n","export const uniswapPairAbi = [\n { inputs: [], payable: false, stateMutability: \"nonpayable\", type: \"constructor\" },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"owner\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"spender\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"value\", type: \"uint256\" },\n ],\n name: \"Approval\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"sender\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amount0\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"amount1\", type: \"uint256\" },\n { indexed: true, internalType: \"address\", name: \"to\", type: \"address\" },\n ],\n name: \"Burn\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"sender\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amount0\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"amount1\", type: \"uint256\" },\n ],\n name: \"Mint\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"sender\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amount0In\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"amount1In\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"amount0Out\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"amount1Out\", type: \"uint256\" },\n { indexed: true, internalType: \"address\", name: \"to\", type: \"address\" },\n ],\n name: \"Swap\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: false, internalType: \"uint112\", name: \"reserve0\", type: \"uint112\" },\n { indexed: false, internalType: \"uint112\", name: \"reserve1\", type: \"uint112\" },\n ],\n name: \"Sync\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"from\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"to\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"value\", type: \"uint256\" },\n ],\n name: \"Transfer\",\n type: \"event\",\n },\n {\n constant: true,\n inputs: [],\n name: \"DOMAIN_SEPARATOR\",\n outputs: [{ internalType: \"bytes32\", name: \"\", type: \"bytes32\" }],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"MINIMUM_LIQUIDITY\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"PERMIT_TYPEHASH\",\n outputs: [{ internalType: \"bytes32\", name: \"\", type: \"bytes32\" }],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [\n { internalType: \"address\", name: \"\", type: \"address\" },\n { internalType: \"address\", name: \"\", type: \"address\" },\n ],\n name: \"allowance\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n { internalType: \"address\", name: \"spender\", type: \"address\" },\n { internalType: \"uint256\", name: \"value\", type: \"uint256\" },\n ],\n name: \"approve\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n name: \"balanceOf\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [{ internalType: \"address\", name: \"to\", type: \"address\" }],\n name: \"burn\",\n outputs: [\n { internalType: \"uint256\", name: \"amount0\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"amount1\", type: \"uint256\" },\n ],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"decimals\",\n outputs: [{ internalType: \"uint8\", name: \"\", type: \"uint8\" }],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"factory\",\n outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"getReserves\",\n outputs: [\n { internalType: \"uint112\", name: \"_reserve0\", type: \"uint112\" },\n { internalType: \"uint112\", name: \"_reserve1\", type: \"uint112\" },\n { internalType: \"uint32\", name: \"_blockTimestampLast\", type: \"uint32\" },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n { internalType: \"address\", name: \"_token0\", type: \"address\" },\n { internalType: \"address\", name: \"_token1\", type: \"address\" },\n ],\n name: \"initialize\",\n outputs: [],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"kLast\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [{ internalType: \"address\", name: \"to\", type: \"address\" }],\n name: \"mint\",\n outputs: [{ internalType: \"uint256\", name: \"liquidity\", type: \"uint256\" }],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"name\",\n outputs: [{ internalType: \"string\", name: \"\", type: \"string\" }],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n name: \"nonces\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n { internalType: \"address\", name: \"owner\", type: \"address\" },\n { internalType: \"address\", name: \"spender\", type: \"address\" },\n { internalType: \"uint256\", name: \"value\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"deadline\", type: \"uint256\" },\n { internalType: \"uint8\", name: \"v\", type: \"uint8\" },\n { internalType: \"bytes32\", name: \"r\", type: \"bytes32\" },\n { internalType: \"bytes32\", name: \"s\", type: \"bytes32\" },\n ],\n name: \"permit\",\n outputs: [],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"price0CumulativeLast\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"price1CumulativeLast\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [{ internalType: \"address\", name: \"to\", type: \"address\" }],\n name: \"skim\",\n outputs: [],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n { internalType: \"uint256\", name: \"amount0Out\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"amount1Out\", type: \"uint256\" },\n { internalType: \"address\", name: \"to\", type: \"address\" },\n { internalType: \"bytes\", name: \"data\", type: \"bytes\" },\n ],\n name: \"swap\",\n outputs: [],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"symbol\",\n outputs: [{ internalType: \"string\", name: \"\", type: \"string\" }],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [],\n name: \"sync\",\n outputs: [],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"token0\",\n outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"token1\",\n outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"totalSupply\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n { internalType: \"address\", name: \"to\", type: \"address\" },\n { internalType: \"uint256\", name: \"value\", type: \"uint256\" },\n ],\n name: \"transfer\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n { internalType: \"address\", name: \"from\", type: \"address\" },\n { internalType: \"address\", name: \"to\", type: \"address\" },\n { internalType: \"uint256\", name: \"value\", type: \"uint256\" },\n ],\n name: \"transferFrom\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n];\n","export const erc20Abi = [\n {\n constant: true,\n inputs: [],\n name: \"name\",\n outputs: [{ name: \"\", type: \"string\" }],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n { name: \"guy\", type: \"address\" },\n { name: \"wad\", type: \"uint256\" },\n ],\n name: \"approve\",\n outputs: [{ name: \"\", type: \"bool\" }],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"totalSupply\",\n outputs: [{ name: \"\", type: \"uint256\" }],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n { name: \"src\", type: \"address\" },\n { name: \"dst\", type: \"address\" },\n { name: \"wad\", type: \"uint256\" },\n ],\n name: \"transferFrom\",\n outputs: [{ name: \"\", type: \"bool\" }],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [{ name: \"wad\", type: \"uint256\" }],\n name: \"withdraw\",\n outputs: [],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"decimals\",\n outputs: [{ name: \"\", type: \"uint8\" }],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [{ name: \"\", type: \"address\" }],\n name: \"balanceOf\",\n outputs: [{ name: \"\", type: \"uint256\" }],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"symbol\",\n outputs: [{ name: \"\", type: \"string\" }],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n { name: \"dst\", type: \"address\" },\n { name: \"wad\", type: \"uint256\" },\n ],\n name: \"transfer\",\n outputs: [{ name: \"\", type: \"bool\" }],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [],\n name: \"deposit\",\n outputs: [],\n payable: true,\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [\n { name: \"\", type: \"address\" },\n { name: \"\", type: \"address\" },\n ],\n name: \"allowance\",\n outputs: [{ name: \"\", type: \"uint256\" }],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n { payable: true, stateMutability: \"payable\", type: \"fallback\" },\n {\n anonymous: false,\n inputs: [\n { indexed: true, name: \"src\", type: \"address\" },\n { indexed: true, name: \"guy\", type: \"address\" },\n { indexed: false, name: \"wad\", type: \"uint256\" },\n ],\n name: \"Approval\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, name: \"src\", type: \"address\" },\n { indexed: true, name: \"dst\", type: \"address\" },\n { indexed: false, name: \"wad\", type: \"uint256\" },\n ],\n name: \"Transfer\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, name: \"dst\", type: \"address\" },\n { indexed: false, name: \"wad\", type: \"uint256\" },\n ],\n name: \"Deposit\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, name: \"src\", type: \"address\" },\n { indexed: false, name: \"wad\", type: \"uint256\" },\n ],\n name: \"Withdrawal\",\n type: \"event\",\n },\n];\n","import _ from \"lodash\";\nimport BigNumber from \"bignumber.js\";\nimport { uniswapPairAbi } from \"./abi/uniswap\";\nimport { erc20Abi } from \"./abi/erc20\";\nimport { getTokenData, uint256ToBigNumber } from \"./eth-helpers\";\nimport { fetchJson, sleep } from \"./helpers\";\n\nconst mintEventTopic0 = \"0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f\";\nconst burnEventTopic0 = \"0xdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496\";\n\n// analyze the current position (impermanent loss) for a liquidity provider (lp) in a uniswap pair\n// web3 - initialized web3 instance used for read only\n// fromBlock - eth block number to start analyzing activity from (use 0 for genesis)\n// toBlock - eth block number to end analyzing activity at (use \"latest\" for most recent)\n// pair - the address of the pair contract (0x string)\n// lp - the address of the liquidity provider (0x string)\nexport async function lpPosition({ web3, fromBlock, toBlock, pair, lp }) {\n const res = {\n Tokens: [],\n LiquidityChanges: [],\n SumLpTokens: new BigNumber(0),\n SumTokenDeposits: [new BigNumber(0), new BigNumber(0)],\n AvailableTokensToWithdraw: [undefined, undefined],\n TotalWorth: {},\n AvailableAfterRebalance: [],\n };\n\n if (!fromBlock) fromBlock = 0;\n if (!toBlock) toBlock = \"latest\";\n fromBlock = parseInt(fromBlock);\n if (toBlock !== \"latest\") toBlock = parseInt(toBlock);\n\n const pairContract = new web3.eth.Contract(uniswapPairAbi, pair);\n\n // token data\n const tokenDatas = await getPairTokensData(pairContract, web3);\n res.Tokens[0] = tokenDatas[0];\n res.Tokens[1] = tokenDatas[1];\n\n // add remove liquidity events\n const addEvents = await pairContract.getPastEvents(\"Transfer\", {\n filter: {\n from: \"0x0000000000000000000000000000000000000000\",\n to: lp,\n },\n fromBlock,\n toBlock,\n });\n res.LiquidityChanges.push(\n ...addEvents.map(({ transactionHash, blockNumber, returnValues }) => ({\n BlockNumber: blockNumber,\n TxHash: transactionHash,\n LpTokenDelta: new BigNumber(returnValues.value).dividedBy(\"1e18\"),\n SumLpTokensAfter: undefined,\n TokenDepositDelta: [],\n }))\n );\n const removeEvents = await pairContract.getPastEvents(\"Transfer\", {\n filter: {\n from: lp,\n to: pair,\n },\n fromBlock,\n toBlock,\n });\n res.LiquidityChanges.push(\n ...removeEvents.map(({ transactionHash, blockNumber, returnValues }) => ({\n BlockNumber: blockNumber,\n TxHash: transactionHash,\n LpTokenDelta: new BigNumber(returnValues.value).dividedBy(\"1e18\").negated(),\n SumLpTokensAfter: undefined,\n TokenDepositDelta: [],\n }))\n );\n res.LiquidityChanges.sort((a, b) => a.BlockNumber - b.BlockNumber);\n\n // download all receipts for additional logs\n for (const change of res.LiquidityChanges) {\n await sleep(200); // don't stress infura api\n const receipt = await web3.eth.getTransactionReceipt(change.TxHash);\n for (const log of receipt.logs) {\n if (log.topics[0].toLowerCase() === mintEventTopic0) {\n const inputsAbi = _.find(uniswapPairAbi, (en) => en.name === \"Mint\").inputs;\n const decoded = web3.eth.abi.decodeLog(inputsAbi, log.data, _.drop(log.topics, 1));\n change.TokenDepositDelta[0] = uint256ToBigNumber(decoded.amount0, res.Tokens[0]);\n change.TokenDepositDelta[1] = uint256ToBigNumber(decoded.amount1, res.Tokens[1]);\n }\n if (log.topics[0].toLowerCase() === burnEventTopic0) {\n const inputsAbi = _.find(uniswapPairAbi, (en) => en.name === \"Burn\").inputs;\n const decoded = web3.eth.abi.decodeLog(inputsAbi, log.data, _.drop(log.topics, 1));\n change.TokenDepositDelta[0] = uint256ToBigNumber(decoded.amount0, res.Tokens[0]).negated();\n change.TokenDepositDelta[1] = uint256ToBigNumber(decoded.amount1, res.Tokens[1]).negated();\n }\n }\n }\n\n // sums\n for (const change of res.LiquidityChanges) {\n res.SumLpTokens = res.SumLpTokens.plus(change.LpTokenDelta);\n change.SumLpTokensAfter = new BigNumber(res.SumLpTokens);\n res.SumTokenDeposits[0] = res.SumTokenDeposits[0].plus(change.TokenDepositDelta[0]);\n res.SumTokenDeposits[1] = res.SumTokenDeposits[1].plus(change.TokenDepositDelta[1]);\n }\n\n // available to withdraw\n const totalSupply = await pairContract.methods.totalSupply().call();\n const totalSupplyLpTokens = new BigNumber(totalSupply).dividedBy(\"1e18\");\n const fractionOfPool = res.SumLpTokens.dividedBy(totalSupplyLpTokens);\n const reserves = await pairContract.methods.getReserves().call();\n const token0Reserve = uint256ToBigNumber(reserves._reserve0, res.Tokens[0]);\n const token1Reserve = uint256ToBigNumber(reserves._reserve1, res.Tokens[1]);\n res.AvailableTokensToWithdraw[0] = token0Reserve.multipliedBy(fractionOfPool);\n res.AvailableTokensToWithdraw[1] = token1Reserve.multipliedBy(fractionOfPool);\n\n // worth\n res.TotalWorth.SumTokenDeposits = {\n CurrentPriceUSD: calcWorth(res.SumTokenDeposits, res.Tokens, \"CurrentPriceUSD\"),\n CurrentPriceBTC: calcWorth(res.SumTokenDeposits, res.Tokens, \"CurrentPriceBTC\"),\n CurrentPriceETH: calcWorth(res.SumTokenDeposits, res.Tokens, \"CurrentPriceETH\"),\n };\n res.TotalWorth.AvailableTokensToWithdraw = {\n CurrentPriceUSD: calcWorth(res.AvailableTokensToWithdraw, res.Tokens, \"CurrentPriceUSD\"),\n CurrentPriceBTC: calcWorth(res.AvailableTokensToWithdraw, res.Tokens, \"CurrentPriceBTC\"),\n CurrentPriceETH: calcWorth(res.AvailableTokensToWithdraw, res.Tokens, \"CurrentPriceETH\"),\n };\n\n // rebalance\n res.AvailableAfterRebalance[0] = rebalance(res.AvailableTokensToWithdraw, res.Tokens, 0, res.SumTokenDeposits[0]);\n res.AvailableAfterRebalance[1] = rebalance(res.AvailableTokensToWithdraw, res.Tokens, 1, res.SumTokenDeposits[1]);\n\n return res;\n}\n\nfunction calcWorth(amountArray, tokenDataArray, currentPriceField) {\n const worth0 = amountArray[0].multipliedBy(tokenDataArray[0][currentPriceField]);\n const worth1 = amountArray[1].multipliedBy(tokenDataArray[1][currentPriceField]);\n return worth0.plus(worth1);\n}\n\nfunction rebalance(amountArray, tokenDataArray, identicalIndex, targetAmount) {\n const res = [];\n res[identicalIndex] = new BigNumber(targetAmount);\n const diffInOriginalToken = amountArray[identicalIndex].minus(res[identicalIndex]);\n const diffInOtherToken = diffInOriginalToken\n .dividedBy(tokenDataArray[1 - identicalIndex].CurrentPriceUSD)\n .multipliedBy(tokenDataArray[identicalIndex].CurrentPriceUSD);\n res[1 - identicalIndex] = amountArray[1 - identicalIndex].plus(diffInOtherToken);\n return res;\n}\n\nasync function getPairTokensData(pairContract, web3) {\n const getTokensTxs = [\n pairContract.methods.token0().call(),\n pairContract.methods.token1().call()\n ];\n const tokens = await Promise.all(getTokensTxs);\n\n const getTokenDataTxs = [\n getTokenData(tokens[0], erc20Abi, web3),\n getTokenData(tokens[1], erc20Abi, web3),\n fetchJson(`https://api.coingecko.com/api/v3/coins/ethereum/contract/${tokens[0]}`),\n fetchJson(`https://api.coingecko.com/api/v3/coins/ethereum/contract/${tokens[1]}`)\n ]\n const tokenDatas = await Promise.all(getTokenDataTxs);\n \n return [\n fillInPrice(tokenDatas[0], tokenDatas[2]),\n fillInPrice(tokenDatas[1], tokenDatas[3])\n ];\n}\n\nfunction fillInPrice(tokenData, coingecko) {\n tokenData.CurrentPriceUSD = new BigNumber(coingecko.market_data.current_price.usd);\n tokenData.CurrentPriceBTC = new BigNumber(coingecko.market_data.current_price.btc);\n tokenData.CurrentPriceETH = new BigNumber(coingecko.market_data.current_price.eth);\n return tokenData;\n}","import React, { useState } from \"react\";\nimport { Container, Segment, Form } from \"semantic-ui-react\";\nimport { lpPosition } from \"web3-snippets/uniswap\";\nimport { useApiKeys } from \"../ApiKeys\";\n\nfunction Snippet() {\n const { web3 } = useApiKeys();\n const [input, setInput] = useState({});\n const [result, setResult] = useState();\n const [loading, setLoading] = useState(false);\n const handleChange = (_e, { name, value }) => setInput({ ...input, [name]: value });\n const handleSubmit = async () => {\n const { fromBlock, toBlock, pair, lp } = input;\n setLoading(true);\n const result = await lpPosition({ web3, fromBlock, toBlock, pair, lp });\n setResult(result);\n setLoading(false);\n };\n return (\n
\n

Uniswap Impermanent Loss

\n
\n \n \n
\n \n \n \n \n \n \n Submit\n \n
\n
{JSON.stringify(result, null, 2)}
\n
\n
\n );\n}\n\nexport default Snippet;\n","// calculate the profit from compounding an investment in a certain rate\n// amount - number of tokens being invested (before compounding)\n// apy - annual return (without compounding) in percent (ie. 19.2)\n// days - how many days the investment will remain active (ie. 7.4)\n// cpCost - cost of every compound operations in number of tokens like amount\n// cpRateMinutes - every how many minutes do we compound\nexport function compoundingSim({ amount, apy, days, cpCost, cpRateMinutes }) {\n amount = parseFloat(amount);\n apy = parseFloat(apy);\n days = parseFloat(days);\n cpCost = parseFloat(cpCost);\n cpRateMinutes = parseFloat(cpRateMinutes);\n\n const res = internalCalculation({ amount, apy, days, cpCost, cpRateMinutes });\n\n res.RecommendedMinutes = findRecommendedMinutes({ amount, apy, days, cpCost, maxMin: 7*24*60 });\n\n return res; \n}\n\nfunction internalCalculation({ amount, apy, days, cpCost, cpRateMinutes }) {\n const res = {\n ResultWithoutCompound: 0,\n ResultWithCompound: 0,\n CompoundingProfit: 0,\n CompoundingProfitPercent: 0,\n };\n \n res.ResultWithoutCompound = amount + amount * apy/100 * days/365;\n\n let amountSoFar = amount;\n let minutesSoFar = 0;\n while (minutesSoFar + cpRateMinutes < days*24*60) {\n minutesSoFar += cpRateMinutes;\n amountSoFar += amountSoFar * apy/100 * cpRateMinutes/24/60/365;\n amountSoFar -= cpCost;\n }\n const remainingMinutes = days*24*60 - minutesSoFar;\n amountSoFar += amountSoFar * apy/100 * remainingMinutes/24/60/365;\n res.ResultWithCompound = amountSoFar;\n\n res.CompoundingProfit = res.ResultWithCompound - res.ResultWithoutCompound;\n res.CompoundingProfitPercent = res.CompoundingProfit / res.ResultWithoutCompound * 100;\n\n return res;\n}\n\nfunction findRecommendedMinutes({ amount, apy, days, cpCost, maxMin }) {\n let bestProfit = 0;\n let bestMin = 0;\n\n const delta = maxMin / 100000;\n for (let cpRateMinutes = 0.1; cpRateMinutes < maxMin; cpRateMinutes += delta) {\n const res = internalCalculation({ amount, apy, days, cpCost, cpRateMinutes });\n if (res.CompoundingProfit > bestProfit) {\n bestProfit = res.CompoundingProfit;\n bestMin = cpRateMinutes;\n }\n }\n\n return bestMin;\n}","import React, { useState } from \"react\";\nimport { Container, Segment, Form } from \"semantic-ui-react\";\nimport { compoundingSim } from \"web3-snippets/compounding\";\n\nfunction Snippet() {\n const [input, setInput] = useState({});\n const [result, setResult] = useState();\n const [loading, setLoading] = useState(false);\n const handleChange = (_e, { name, value }) => setInput({ ...input, [name]: value });\n const handleSubmit = () => {\n const { amount, apy, days, cpCost, cpRateMinutes } = input;\n setLoading(true);\n const result = compoundingSim({ amount, apy, days, cpCost, cpRateMinutes });\n setResult(result);\n setLoading(false);\n };\n return (\n
\n

Compounding Profit Calculator

\n
\n \n \n
\n \n \n \n \n \n \n \n \n \n Submit\n \n
\n
{JSON.stringify(result, null, 2)}
\n
\n
\n );\n}\n\nexport default Snippet;\n","export const pancakePairAbi = [{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve0\",\"type\":\"uint112\"},{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve1\",\"type\":\"uint112\"}],\"name\":\"Sync\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MINIMUM_LIQUIDITY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"_reserve0\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"_reserve1\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"_blockTimestampLast\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token1\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"kLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"price0CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"price1CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"skim\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"sync\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}];","export const bep20Abi = [\n\t{\n\t\t\"anonymous\": false,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"owner\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"spender\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"indexed\": false,\n\t\t\t\t\"internalType\": \"uint256\",\n\t\t\t\t\"name\": \"value\",\n\t\t\t\t\"type\": \"uint256\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"Approval\",\n\t\t\"type\": \"event\"\n\t},\n\t{\n\t\t\"anonymous\": false,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"from\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"to\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"indexed\": false,\n\t\t\t\t\"internalType\": \"uint256\",\n\t\t\t\t\"name\": \"value\",\n\t\t\t\t\"type\": \"uint256\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"Transfer\",\n\t\t\"type\": \"event\"\n\t},\n\t{\n\t\t\"constant\": true,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"_owner\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"spender\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"allowance\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint256\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"uint256\"\n\t\t\t}\n\t\t],\n\t\t\"payable\": false,\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"constant\": false,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"spender\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint256\",\n\t\t\t\t\"name\": \"amount\",\n\t\t\t\t\"type\": \"uint256\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"approve\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bool\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bool\"\n\t\t\t}\n\t\t],\n\t\t\"payable\": false,\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"constant\": true,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"account\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"balanceOf\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint256\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"uint256\"\n\t\t\t}\n\t\t],\n\t\t\"payable\": false,\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"constant\": true,\n\t\t\"inputs\": [],\n\t\t\"name\": \"decimals\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint8\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"uint8\"\n\t\t\t}\n\t\t],\n\t\t\"payable\": false,\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"constant\": true,\n\t\t\"inputs\": [],\n\t\t\"name\": \"getOwner\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"payable\": false,\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"constant\": true,\n\t\t\"inputs\": [],\n\t\t\"name\": \"name\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"string\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"string\"\n\t\t\t}\n\t\t],\n\t\t\"payable\": false,\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"constant\": true,\n\t\t\"inputs\": [],\n\t\t\"name\": \"symbol\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"string\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"string\"\n\t\t\t}\n\t\t],\n\t\t\"payable\": false,\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"constant\": true,\n\t\t\"inputs\": [],\n\t\t\"name\": \"totalSupply\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint256\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"uint256\"\n\t\t\t}\n\t\t],\n\t\t\"payable\": false,\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"constant\": false,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"recipient\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint256\",\n\t\t\t\t\"name\": \"amount\",\n\t\t\t\t\"type\": \"uint256\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"transfer\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bool\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bool\"\n\t\t\t}\n\t\t],\n\t\t\"payable\": false,\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"constant\": false,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"sender\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"recipient\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint256\",\n\t\t\t\t\"name\": \"amount\",\n\t\t\t\t\"type\": \"uint256\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"transferFrom\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bool\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bool\"\n\t\t\t}\n\t\t],\n\t\t\"payable\": false,\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t}\n]; ","import _ from \"lodash\";\nimport BigNumber from \"bignumber.js\";\nimport { fetchJson } from \"./helpers\";\nimport { pancakePairAbi } from \"./abi/pancake-pair\";\nimport { bep20Abi } from \"./abi/bep20\";\nimport { getTokenData, uint256ToBigNumber } from \"./eth-helpers\";\n\nconst mintEventTopic0 = \"0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f\";\nconst burnEventTopic0 = \"0xdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496\";\n\n// analyze the current position (impermanent loss) for a liquidity provider (lp) in a uniswap pair\n// web3 - initialized web3 instance used for read only\n// fromBlock - eth block number to start analyzing activity from (use 0 for genesis)\n// toBlock - eth block number to end analyzing activity at (use \"latest\" for most recent)\n// pair - the address of the pair contract (0x string)\n// lp - the address of the liquidity provider (0x string)\nexport async function pancakeLpPosition({ bscWeb3, fromBlock, toBlock, pair, lp }) {\n const res = {\n Tokens: [],\n LiquidityChanges: [],\n SumLpTokens: new BigNumber(0),\n SumTokenDeposits: [new BigNumber(0), new BigNumber(0)],\n AvailableTokensToWithdraw: [undefined, undefined],\n TotalWorth: {},\n AvailableAfterRebalance: [],\n };\n\n if (!fromBlock) fromBlock = 0;\n if (!toBlock) toBlock = \"latest\";\n fromBlock = parseInt(fromBlock);\n if (toBlock !== \"latest\") toBlock = parseInt(toBlock);\n\n const pairContract = new bscWeb3.eth.Contract(pancakePairAbi, pair);\n const tokenDatas = await getPairTokensData(pairContract, bscWeb3);\n res.Tokens[0] = tokenDatas[0];\n res.Tokens[1] = tokenDatas[1];\n\n // add remove liquidity events\n const addEvents = await pairContract.getPastEvents(\"Transfer\", {\n filter: {\n from: \"0x0000000000000000000000000000000000000000\",\n to: lp,\n },\n fromBlock,\n toBlock,\n });\n res.LiquidityChanges.push(\n ...addEvents.map(({ transactionHash, blockNumber, returnValues }) => ({\n BlockNumber: blockNumber,\n TxHash: transactionHash,\n LpTokenDelta: new BigNumber(returnValues.value).dividedBy(\"1e18\"),\n SumLpTokensAfter: undefined,\n TokenDepositDelta: [],\n }))\n );\n const removeEvents = await pairContract.getPastEvents(\"Transfer\", {\n filter: {\n from: lp,\n to: pair,\n },\n fromBlock,\n toBlock,\n });\n res.LiquidityChanges.push(\n ...removeEvents.map(({ transactionHash, blockNumber, returnValues }) => ({\n BlockNumber: blockNumber,\n TxHash: transactionHash,\n LpTokenDelta: new BigNumber(returnValues.value).dividedBy(\"1e18\").negated(),\n SumLpTokensAfter: undefined,\n TokenDepositDelta: [],\n }))\n );\n res.LiquidityChanges.sort((a, b) => a.BlockNumber - b.BlockNumber);\n\n // download all receipts for additional logs\n for (const change of res.LiquidityChanges) {\n const receipt = await bscWeb3.eth.getTransactionReceipt(change.TxHash);\n for (const log of receipt.logs) {\n if (log.topics[0].toLowerCase() === mintEventTopic0) {\n const inputsAbi = _.find(pancakePairAbi, (en) => en.name === \"Mint\").inputs;\n const decoded = bscWeb3.eth.abi.decodeLog(inputsAbi, log.data, _.drop(log.topics, 1));\n change.TokenDepositDelta[0] = uint256ToBigNumber(decoded.amount0, res.Tokens[0]);\n change.TokenDepositDelta[1] = uint256ToBigNumber(decoded.amount1, res.Tokens[1]);\n }\n if (log.topics[0].toLowerCase() === burnEventTopic0) {\n const inputsAbi = _.find(pancakePairAbi, (en) => en.name === \"Burn\").inputs;\n const decoded = bscWeb3.eth.abi.decodeLog(inputsAbi, log.data, _.drop(log.topics, 1));\n change.TokenDepositDelta[0] = uint256ToBigNumber(decoded.amount0, res.Tokens[0]).negated();\n change.TokenDepositDelta[1] = uint256ToBigNumber(decoded.amount1, res.Tokens[1]).negated();\n }\n }\n }\n\n // sums\n for (const change of res.LiquidityChanges) {\n res.SumLpTokens = res.SumLpTokens.plus(change.LpTokenDelta);\n change.SumLpTokensAfter = new BigNumber(res.SumLpTokens);\n res.SumTokenDeposits[0] = res.SumTokenDeposits[0].plus(change.TokenDepositDelta[0]);\n res.SumTokenDeposits[1] = res.SumTokenDeposits[1].plus(change.TokenDepositDelta[1]);\n }\n\n // available to withdraw\n const totalSupply = await pairContract.methods.totalSupply().call();\n const totalSupplyLpTokens = new BigNumber(totalSupply).dividedBy(\"1e18\");\n const fractionOfPool = res.SumLpTokens.dividedBy(totalSupplyLpTokens);\n const reserves = await pairContract.methods.getReserves().call();\n const token0Reserve = uint256ToBigNumber(reserves._reserve0, res.Tokens[0]);\n const token1Reserve = uint256ToBigNumber(reserves._reserve1, res.Tokens[1]);\n res.AvailableTokensToWithdraw[0] = token0Reserve.multipliedBy(fractionOfPool);\n res.AvailableTokensToWithdraw[1] = token1Reserve.multipliedBy(fractionOfPool);\n\n // worth\n res.TotalWorth.SumTokenDeposits = {\n CurrentPriceUSD: calcWorth(res.SumTokenDeposits, res.Tokens, \"CurrentPriceUSD\"),\n CurrentPriceBTC: calcWorth(res.SumTokenDeposits, res.Tokens, \"CurrentPriceBTC\"),\n CurrentPriceETH: calcWorth(res.SumTokenDeposits, res.Tokens, \"CurrentPriceETH\"),\n };\n res.TotalWorth.AvailableTokensToWithdraw = {\n CurrentPriceUSD: calcWorth(res.AvailableTokensToWithdraw, res.Tokens, \"CurrentPriceUSD\"),\n CurrentPriceBTC: calcWorth(res.AvailableTokensToWithdraw, res.Tokens, \"CurrentPriceBTC\"),\n CurrentPriceETH: calcWorth(res.AvailableTokensToWithdraw, res.Tokens, \"CurrentPriceETH\"),\n };\n\n // rebalance\n res.AvailableAfterRebalance[0] = rebalance(res.AvailableTokensToWithdraw, res.Tokens, 0, res.SumTokenDeposits[0]);\n res.AvailableAfterRebalance[1] = rebalance(res.AvailableTokensToWithdraw, res.Tokens, 1, res.SumTokenDeposits[1]);\n\n return res;\n}\n\nfunction calcWorth(amountArray, tokenDataArray, currentPriceField) {\n const worth0 = amountArray[0].multipliedBy(tokenDataArray[0][currentPriceField]);\n const worth1 = amountArray[1].multipliedBy(tokenDataArray[1][currentPriceField]);\n return worth0.plus(worth1);\n}\n\nfunction rebalance(amountArray, tokenDataArray, identicalIndex, targetAmount) {\n const res = [];\n res[identicalIndex] = new BigNumber(targetAmount);\n const diffInOriginalToken = amountArray[identicalIndex].minus(res[identicalIndex]);\n const diffInOtherToken = diffInOriginalToken\n .dividedBy(tokenDataArray[1 - identicalIndex].CurrentPriceUSD)\n .multipliedBy(tokenDataArray[identicalIndex].CurrentPriceUSD);\n res[1 - identicalIndex] = amountArray[1 - identicalIndex].plus(diffInOtherToken);\n return res;\n}\n\nasync function getPairTokensData(pairContract, web3) {\n const getTokensTxs = [\n pairContract.methods.token0().call(),\n pairContract.methods.token1().call()\n ];\n const tokens = await Promise.all(getTokensTxs);\n\n const getTokenDataTxs = [\n getTokenData(tokens[0], bep20Abi, web3),\n getTokenData(tokens[1], bep20Abi, web3)\n ]\n const tokenDatas = await Promise.all(getTokenDataTxs);\n\n const coingeckoCoinsData = await fetchJson('https://api.coingecko.com/api/v3/coins/list');\n const tokenPricesTxs = [null, null];\n for(const coinData of coingeckoCoinsData) {\n const symbol = coinData.symbol.toUpperCase();\n if (symbol === tokenDatas[0].Symbol ) {\n tokenPricesTxs[0] = fetchJson(`https://api.coingecko.com/api/v3/coins/${coinData.id}`);\n }\n if (symbol === tokenDatas[1].Symbol ) {\n tokenPricesTxs[1] = fetchJson(`https://api.coingecko.com/api/v3/coins/${coinData.id}`);\n }\n }\n if (tokenPricesTxs[0] === null || tokenPricesTxs[1] === null) {\n throw new Error(`Could not find price data for one or both of the tokens (${tokenRawDatas[2]}, ${tokenRawDatas[5]})`)\n }\n const tokenPrices = await Promise.all(tokenPricesTxs);\n \n return [\n fillInPrice(tokenDatas[0], tokenPrices[0]),\n fillInPrice(tokenDatas[1], tokenPrices[1])\n ];\n}\n\nfunction fillInPrice(tokenData, coingecko) {\n tokenData.CurrentPriceUSD = new BigNumber(coingecko.market_data.current_price.usd);\n tokenData.CurrentPriceBTC = new BigNumber(coingecko.market_data.current_price.btc);\n tokenData.CurrentPriceETH = new BigNumber(coingecko.market_data.current_price.eth);\n return tokenData;\n}","import React, { useState } from \"react\";\nimport { Container, Segment, Form } from \"semantic-ui-react\";\nimport { pancakeLpPosition } from \"web3-snippets/pancake\";\nimport { useApiKeys } from \"../ApiKeys\";\n\nfunction Snippet() {\n const { bscWeb3 } = useApiKeys();\n const [input, setInput] = useState({});\n const [result, setResult] = useState();\n const [loading, setLoading] = useState(false);\n const handleChange = (_e, { name, value }) => setInput({ ...input, [name]: value });\n const handleSubmit = async () => {\n const { fromBlock, toBlock, pair, lp } = input;\n setLoading(true);\n const result = await pancakeLpPosition({ bscWeb3, fromBlock, toBlock, pair, lp });\n setResult(result);\n setLoading(false);\n };\n return (\n
\n

Pancake Impermanent Loss

\n
\n \n \n
\n \n \n \n \n \n \n Submit\n \n
\n
{JSON.stringify(result, null, 2)}
\n
\n
\n );\n}\n\nexport default Snippet;\n","export const balancerPoolAbi = [{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amt\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":true,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"sig\",\"type\":\"bytes4\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"LOG_CALL\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenAmountOut\",\"type\":\"uint256\"}],\"name\":\"LOG_EXIT\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenAmountIn\",\"type\":\"uint256\"}],\"name\":\"LOG_JOIN\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenAmountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenAmountOut\",\"type\":\"uint256\"}],\"name\":\"LOG_SWAP\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amt\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"BONE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"BPOW_PRECISION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"EXIT_FEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"INIT_POOL_SUPPLY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_BOUND_TOKENS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_BPOW_BASE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_FEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_IN_RATIO\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_OUT_RATIO\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_TOTAL_WEIGHT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_WEIGHT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MIN_BALANCE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MIN_BOUND_TOKENS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MIN_BPOW_BASE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MIN_FEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MIN_WEIGHT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amt\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"whom\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denorm\",\"type\":\"uint256\"}],\"name\":\"bind\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenBalanceIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenWeightIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenBalanceOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenWeightOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"swapFee\",\"type\":\"uint256\"}],\"name\":\"calcInGivenOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenAmountIn\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenBalanceIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenWeightIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenBalanceOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenWeightOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"swapFee\",\"type\":\"uint256\"}],\"name\":\"calcOutGivenIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenAmountOut\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenBalanceOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenWeightOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"poolSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalWeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"swapFee\",\"type\":\"uint256\"}],\"name\":\"calcPoolInGivenSingleOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"poolAmountIn\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenBalanceIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenWeightIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"poolSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalWeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"swapFee\",\"type\":\"uint256\"}],\"name\":\"calcPoolOutGivenSingleIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"poolAmountOut\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenBalanceIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenWeightIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"poolSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalWeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"poolAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"swapFee\",\"type\":\"uint256\"}],\"name\":\"calcSingleInGivenPoolOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenAmountIn\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenBalanceOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenWeightOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"poolSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalWeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"poolAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"swapFee\",\"type\":\"uint256\"}],\"name\":\"calcSingleOutGivenPoolIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenAmountOut\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenBalanceIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenWeightIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenBalanceOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenWeightOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"swapFee\",\"type\":\"uint256\"}],\"name\":\"calcSpotPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"spotPrice\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amt\",\"type\":\"uint256\"}],\"name\":\"decreaseApproval\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"poolAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"}],\"name\":\"exitPool\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPoolAmountIn\",\"type\":\"uint256\"}],\"name\":\"exitswapExternAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"poolAmountIn\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"poolAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"exitswapPoolAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenAmountOut\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"finalize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getColor\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getController\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCurrentTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getDenormalizedWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getFinalTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getNormalizedWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getNumTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"}],\"name\":\"getSpotPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"spotPrice\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"}],\"name\":\"getSpotPriceSansFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"spotPrice\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getSwapFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getTotalDenormalizedWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"gulp\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amt\",\"type\":\"uint256\"}],\"name\":\"increaseApproval\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"t\",\"type\":\"address\"}],\"name\":\"isBound\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isFinalized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isPublicSwap\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"poolAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"}],\"name\":\"joinPool\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minPoolAmountOut\",\"type\":\"uint256\"}],\"name\":\"joinswapExternAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"poolAmountOut\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"poolAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"}],\"name\":\"joinswapPoolAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenAmountIn\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denorm\",\"type\":\"uint256\"}],\"name\":\"rebind\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"}],\"name\":\"setController\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bool\",\"name\":\"public_\",\"type\":\"bool\"}],\"name\":\"setPublicSwap\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"swapFee\",\"type\":\"uint256\"}],\"name\":\"setSwapFee\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPrice\",\"type\":\"uint256\"}],\"name\":\"swapExactAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"spotPriceAfter\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPrice\",\"type\":\"uint256\"}],\"name\":\"swapExactAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"spotPriceAfter\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amt\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amt\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"unbind\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]","export const oneinchPairAbi = [{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"_token0\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"_token1\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"contract IMooniswapFactoryGovernance\",\"name\":\"_mooniswapFactoryGovernance\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decayPeriod\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isDefault\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"DecayPeriodVoteUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"share\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"token0Amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"token1Amount\",\"type\":\"uint256\"}],\"name\":\"Deposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"Error\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isDefault\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"FeeVoteUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slippageFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isDefault\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SlippageFeeVoteUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"srcToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"dstToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"result\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"srcAdditionBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"dstRemovalBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"referral\",\"type\":\"address\"}],\"name\":\"Swapped\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"srcBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"dstBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slippageFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"referralShare\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"governanceShare\",\"type\":\"uint256\"}],\"name\":\"Sync\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"share\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"token0Amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"token1Amount\",\"type\":\"uint256\"}],\"name\":\"Withdrawn\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decayPeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vote\",\"type\":\"uint256\"}],\"name\":\"decayPeriodVote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"decayPeriodVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[2]\",\"name\":\"maxAmounts\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"minAmounts\",\"type\":\"uint256[2]\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"fairSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256[2]\",\"name\":\"receivedAmounts\",\"type\":\"uint256[2]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[2]\",\"name\":\"maxAmounts\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"minAmounts\",\"type\":\"uint256[2]\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"depositFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"fairSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256[2]\",\"name\":\"receivedAmounts\",\"type\":\"uint256[2]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"discardDecayPeriodVote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"discardFeeVote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"discardSlippageFeeVote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vote\",\"type\":\"uint256\"}],\"name\":\"feeVote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"feeVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getBalanceForAddition\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getBalanceForRemoval\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"getReturn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTokens\",\"outputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mooniswapFactoryGovernance\",\"outputs\":[{\"internalType\":\"contract IMooniswapFactoryGovernance\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"rescueFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IMooniswapFactoryGovernance\",\"name\":\"newMooniswapFactoryGovernance\",\"type\":\"address\"}],\"name\":\"setMooniswapFactoryGovernance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slippageFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vote\",\"type\":\"uint256\"}],\"name\":\"slippageFeeVote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"slippageFeeVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minReturn\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"referral\",\"type\":\"address\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"result\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minReturn\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"referral\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"swapFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"result\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"}],\"name\":\"tokens\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"virtualBalancesForAddition\",\"outputs\":[{\"internalType\":\"uint216\",\"name\":\"balance\",\"type\":\"uint216\"},{\"internalType\":\"uint40\",\"name\":\"time\",\"type\":\"uint40\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"virtualBalancesForRemoval\",\"outputs\":[{\"internalType\":\"uint216\",\"name\":\"balance\",\"type\":\"uint216\"},{\"internalType\":\"uint40\",\"name\":\"time\",\"type\":\"uint40\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"virtualDecayPeriod\",\"outputs\":[{\"internalType\":\"uint104\",\"name\":\"\",\"type\":\"uint104\"},{\"internalType\":\"uint104\",\"name\":\"\",\"type\":\"uint104\"},{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"virtualFee\",\"outputs\":[{\"internalType\":\"uint104\",\"name\":\"\",\"type\":\"uint104\"},{\"internalType\":\"uint104\",\"name\":\"\",\"type\":\"uint104\"},{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"virtualSlippageFee\",\"outputs\":[{\"internalType\":\"uint104\",\"name\":\"\",\"type\":\"uint104\"},{\"internalType\":\"uint104\",\"name\":\"\",\"type\":\"uint104\"},{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"volumes\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"confirmed\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"result\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"minReturns\",\"type\":\"uint256[]\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256[2]\",\"name\":\"withdrawnAmounts\",\"type\":\"uint256[2]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"minReturns\",\"type\":\"uint256[]\"},{\"internalType\":\"address payable\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"withdrawFor\",\"outputs\":[{\"internalType\":\"uint256[2]\",\"name\":\"withdrawnAmounts\",\"type\":\"uint256[2]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}];","export const sushiswapPairAbi = [{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve0\",\"type\":\"uint112\"},{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve1\",\"type\":\"uint112\"}],\"name\":\"Sync\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINIMUM_LIQUIDITY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"_reserve0\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"_reserve1\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"_blockTimestampLast\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token1\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"kLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price0CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price1CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"skim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sync\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}];","export const sushiMasterchefAbi = [{\"inputs\":[{\"internalType\":\"contract SushiToken\",\"name\":\"_sushi\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_devaddr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_sushiPerBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_startBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_bonusEndBlock\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"EmergencyWithdraw\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BONUS_MULTIPLIER\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_allocPoint\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC20\",\"name\":\"_lpToken\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_withUpdate\",\"type\":\"bool\"}],\"name\":\"add\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bonusEndBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_devaddr\",\"type\":\"address\"}],\"name\":\"dev\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"devaddr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"}],\"name\":\"emergencyWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_from\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_to\",\"type\":\"uint256\"}],\"name\":\"getMultiplier\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"massUpdatePools\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"}],\"name\":\"migrate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"migrator\",\"outputs\":[{\"internalType\":\"contract IMigratorChef\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"pendingSushi\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"poolInfo\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"lpToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allocPoint\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastRewardBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"accSushiPerShare\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"poolLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_allocPoint\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_withUpdate\",\"type\":\"bool\"}],\"name\":\"set\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IMigratorChef\",\"name\":\"_migrator\",\"type\":\"address\"}],\"name\":\"setMigrator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sushi\",\"outputs\":[{\"internalType\":\"contract SushiToken\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sushiPerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalAllocPoint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"}],\"name\":\"updatePool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"userInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rewardDebt\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}];","export const unicPairAbi = [{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve0\",\"type\":\"uint112\"},{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve1\",\"type\":\"uint112\"}],\"name\":\"Sync\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINIMUM_LIQUIDITY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"_reserve0\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"_reserve1\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"_blockTimestampLast\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token1\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"kLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price0CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price1CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"skim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sync\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}];","export const unicFarmAbi = [{\"inputs\":[{\"internalType\":\"contract Unic\",\"name\":\"_unic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_devaddr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_mintRateMultiplier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_mintRateDivider\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_unicPerBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_startBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_blocksPerTranche\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"allocPoint\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"lpToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"withUpdate\",\"type\":\"bool\"}],\"name\":\"Add\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"devaddr\",\"type\":\"address\"}],\"name\":\"Dev\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"EmergencyWithdraw\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"MassUpdatePools\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"allocPoint\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"withUpdate\",\"type\":\"bool\"}],\"name\":\"Set\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"}],\"name\":\"UpdatePool\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_allocPoint\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC20\",\"name\":\"_lpToken\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_withUpdate\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"_uToken\",\"type\":\"address\"}],\"name\":\"add\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blocksPerTranche\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_devaddr\",\"type\":\"address\"}],\"name\":\"dev\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"devaddr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"}],\"name\":\"emergencyWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_from\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_to\",\"type\":\"uint256\"}],\"name\":\"getRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"massUpdatePools\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mintRateDivider\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mintRateMultiplier\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"pendingUnic\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"poolInfo\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"lpToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allocPoint\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastRewardBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"accUnicPerShare\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"uToken\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"poolLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_allocPoint\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_withUpdate\",\"type\":\"bool\"}],\"name\":\"set\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_mintRateMultiplier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_mintRateDivider\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_unicPerBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_blocksPerTranche\",\"type\":\"uint256\"}],\"name\":\"setMintRules\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_startBlock\",\"type\":\"uint256\"}],\"name\":\"setStartBlock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalAllocPoint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tranche\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unic\",\"outputs\":[{\"internalType\":\"contract Unic\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unicPerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"}],\"name\":\"updatePool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"userInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rewardDebt\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"whitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}];","export const oneInchFarmAbi = [{\"inputs\":[{\"internalType\":\"contract Mooniswap\",\"name\":\"_mooniswap\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"_gift\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_duration\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decayPeriod\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isDefault\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"DecayPeriodVoteUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isDefault\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"FeeVoteUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"}],\"name\":\"RewardAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"}],\"name\":\"RewardPaid\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slippageFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isDefault\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SlippageFeeVoteUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Staked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdrawn\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decayPeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vote\",\"type\":\"uint256\"}],\"name\":\"decayPeriodVote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"decayPeriodVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"discardDecayPeriodVote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"discardFeeVote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"discardSlippageFeeVote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"duration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"earned\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"exit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vote\",\"type\":\"uint256\"}],\"name\":\"feeVote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"feeVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gift\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastTimeRewardApplicable\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastUpdateTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mooniswap\",\"outputs\":[{\"internalType\":\"contract Mooniswap\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mooniswapFactoryGovernance\",\"outputs\":[{\"internalType\":\"contract IMooniswapFactoryGovernance\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"}],\"name\":\"notifyRewardAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"periodFinish\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"rescueFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardDistribution\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardPerToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardPerTokenStored\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"rewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_rewardDistribution\",\"type\":\"address\"}],\"name\":\"setRewardDistribution\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slippageFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vote\",\"type\":\"uint256\"}],\"name\":\"slippageFeeVote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"slippageFeeVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"stake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"userRewardPerTokenPaid\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}];","import BigNumber from 'bignumber.js';\nimport { erc20Abi } from './abi/erc20';\nimport { balancerPoolAbi } from './abi/balancer-pool';\nimport { uniswapPairAbi } from './abi/uniswap';\nimport { oneinchPairAbi } from './abi/oneinche-pair';\nimport { sushiswapPairAbi } from './abi/sushiswap-pair';\nimport { sushiMasterchefAbi } from './abi/sushi-masterchef';\nimport { unicPairAbi } from './abi/unic-pair';\nimport { unicFarmAbi } from './abi/unicFarm';\nimport { bigToNumber, getContract, getTokenData, isAddress } from './eth-helpers';\nimport { oneInchFarmAbi } from './abi/one-inch-farm';\nimport { fetchJsonPost } from './helpers';\n\nexport const PoolType = {\n BALANCER: 'BALANCER',\n UNISWAP: 'UNISWAP',\n SUSHISWAP: 'SUSHISWAP',\n ONEINCH: 'ONEINCH',\n UJENNY: 'UJENNY'\n}\n\nconst EmptyAddress = '0x0000000000000000000000000000000000000000';\n\nexport async function lpPositionStatus(holderInfo, poolType, poolAddress, web3, optionalFarmAddress) {\n switch(poolType) {\n case PoolType.BALANCER:\n return getBalancerPoolData(holderInfo, poolAddress, web3);\n case PoolType.UNISWAP:\n return getUniswapPoolData(holderInfo, poolAddress, web3);\n case PoolType.SUSHISWAP:\n return getSushiswapPoolData(holderInfo, poolAddress, optionalFarmAddress || '', web3);\n case PoolType.ONEINCH:\n return getOneInchPoolData(holderInfo, poolAddress, optionalFarmAddress || '', web3);\n case PoolType.UJENNY:\n return getUJennyPoolData(holderInfo, poolAddress, optionalFarmAddress || '', web3);\n default:\n throw new Error(`lpPositionStatus: Pool ${poolType} not recognized`);\n }\n}\n\nfunction newPoolData(PoolAddress, HolderAddress, totalLPSupply, holderLPBalance, lpTokenDecimals, positionValue, farmAddress, indirectFranctionOfPool, farmRewardTokenData){\n const holderPoolData = {\n PoolAddress,\n TotalLPSupply: bigToNumber(totalLPSupply, lpTokenDecimals),\n HolderAddress : isAddress(HolderAddress) ? HolderAddress : 'Not Given',\n HolderLPBalance: bigToNumber(holderLPBalance, lpTokenDecimals),\n };\n if(isAddress(farmAddress)) {\n holderPoolData.FarmAddress = farmAddress;\n holderPoolData.HolderLPBalanceThroughFarm = bigToNumber(totalLPSupply.multipliedBy(indirectFranctionOfPool), lpTokenDecimals);\n holderPoolData.UnclaimedReward = farmRewardTokenData;\n }\n holderPoolData.PositionValue = positionValue;\n return holderPoolData\n}\n\nasync function getBalancerPoolData(holderInfo, poolAddress, web3) {\n const pool = getContract(poolAddress, balancerPoolAbi, web3);\n const poolDataTxs = [\n pool.methods.totalSupply().call(),\n pool.methods.decimals().call(),\n pool.methods.getFinalTokens().call()\n ];\n if (isAddress(holderInfo)) {\n poolDataTxs.push(pool.methods.balanceOf(holderInfo).call());\n }\n const poolDataRes = await Promise.all(poolDataTxs);\n \n const totalLp = new BigNumber(poolDataRes[0])\n const holderLp = new BigNumber(isAddress(holderInfo) ? poolDataRes[3] : holderInfo);\n const lpTokenDecimals = poolDataRes[1];\n const fractionOfPool = holderLp.dividedBy(totalLp);\n\n const tokenTxs = [];\n poolDataRes[2].map(tokenAddress => {\n tokenTxs.push(getTokenData(tokenAddress, erc20Abi, web3));\n tokenTxs.push(pool.methods.getBalance(tokenAddress).call());\n });\n const tokenRes = await Promise.all(tokenTxs);\n const positionValues = [];\n for(let i = 0;i < tokenRes.length;i+=2){\n tokenRes[i].Balance = bigToNumber(new BigNumber(tokenRes[i+1]).multipliedBy(fractionOfPool), tokenRes[i]);\n positionValues.push(tokenRes[i]);\n }\n\n return newPoolData(poolAddress, holderInfo, totalLp, holderLp, lpTokenDecimals, positionValues); \n}\n\nasync function getUniswapPoolData(holderInfo, poolAddress, web3) {\n const pool = getContract(poolAddress, uniswapPairAbi, web3);\n const poolDataTxs = [\n pool.methods.totalSupply().call(),\n pool.methods.decimals().call(),\n pool.methods.token0().call(),\n pool.methods.token1().call(),\n pool.methods.getReserves().call()\n ];\n if (isAddress(holderInfo)) {\n poolDataTxs.push(pool.methods.balanceOf(holderInfo).call());\n }\n const poolDataRes = await Promise.all(poolDataTxs);\n \n const totalLp = new BigNumber(poolDataRes[0])\n const holderLp = new BigNumber(isAddress(holderInfo) ? poolDataRes[5] : holderInfo);\n const lpTokenDecimals = poolDataRes[1];\n const fractionOfPool = holderLp.dividedBy(totalLp);\n\n const tokenTxs = [\n getTokenData(poolDataRes[2], erc20Abi, web3),\n getTokenData(poolDataRes[3], erc20Abi, web3) \n ];\n const positionValues = await Promise.all(tokenTxs);\n positionValues[0].Balance = bigToNumber(new BigNumber(poolDataRes[4][\"0\"]).multipliedBy(fractionOfPool), positionValues[0]);\n positionValues[1].Balance = bigToNumber(new BigNumber(poolDataRes[4][\"1\"]).multipliedBy(fractionOfPool), positionValues[1]);\n\n return newPoolData(poolAddress, holderInfo, totalLp, holderLp, lpTokenDecimals, positionValues); \n}\n\nconst MasterChefAddress = '0xc2EdaD668740f1aA35E4D8f227fB8E17dcA888Cd';\nconst SushiTokenAddress = '0x6b3595068778dd592e39a122f4f5a5cf09c90fe2';\nasync function getSushiswapPoolData(holderInfo, poolAddress, farmPoolNumber, web3) {\n const pool = getContract(poolAddress, sushiswapPairAbi, web3);\n const poolDataTxs = [\n pool.methods.totalSupply().call(),\n pool.methods.decimals().call(),\n pool.methods.token0().call(),\n pool.methods.token1().call(),\n pool.methods.getReserves().call()\n ];\n if (isAddress(holderInfo)) {\n poolDataTxs.push(pool.methods.balanceOf(holderInfo).call());\n if (farmPoolNumber !== '') {\n const masterChef = getContract(MasterChefAddress, sushiMasterchefAbi, web3);\n poolDataTxs.push(masterChef.methods.userInfo(farmPoolNumber, holderInfo).call());\n poolDataTxs.push(masterChef.methods.pendingSushi(farmPoolNumber, holderInfo).call());\n poolDataTxs.push(getTokenData(SushiTokenAddress, erc20Abi, web3, holderInfo));\n poolDataTxs.push(sushiCalculateLocked(holderInfo, farmPoolNumber));\n }\n }\n const poolDataRes = await Promise.all(poolDataTxs);\n \n const totalLp = new BigNumber(poolDataRes[0])\n const holderLp = new BigNumber(isAddress(holderInfo) ? poolDataRes[5] : holderInfo);\n const lpTokenDecimals = poolDataRes[1];\n const directFractionOfPool = holderLp.dividedBy(totalLp);\n let indirectFranctionOfPool = new BigNumber(0);\n if (isAddress(holderInfo) && farmPoolNumber !== '') {\n const holderLpInFarm = new BigNumber(poolDataRes[6][\"0\"])\n indirectFranctionOfPool = holderLpInFarm.dividedBy(totalLp);\n }\n const fractionOfPool = directFractionOfPool.plus(indirectFranctionOfPool);\n\n const tokenTxs = [\n getTokenData(poolDataRes[2], erc20Abi, web3),\n getTokenData(poolDataRes[3], erc20Abi, web3) \n ];\n const positionValues = await Promise.all(tokenTxs);\n positionValues[0].Balance = bigToNumber(new BigNumber(poolDataRes[4][\"0\"]).multipliedBy(fractionOfPool), positionValues[0]);\n positionValues[1].Balance = bigToNumber(new BigNumber(poolDataRes[4][\"1\"]).multipliedBy(fractionOfPool), positionValues[1]);\n\n const sushiRewardTokenData = poolDataRes[8];\n if (isAddress(holderInfo) && farmPoolNumber !== '') {\n sushiRewardTokenData.ClaimedBalanceLeftInWallet = sushiRewardTokenData.Balance;\n delete sushiRewardTokenData.Balance;\n sushiRewardTokenData.UnclaimedUnlockedBalance = bigToNumber(new BigNumber(poolDataRes[7]), sushiRewardTokenData);\n sushiRewardTokenData.UnclaimedLockedBalanceEstimate = Number(poolDataRes[9]);\n }\n return newPoolData(poolAddress, holderInfo, totalLp, holderLp, lpTokenDecimals, positionValues, farmPoolNumber !== '' ? MasterChefAddress : '', indirectFranctionOfPool, sushiRewardTokenData); \n}\n\nconst SushiGraphUrl = \"https://api.thegraph.com/subgraphs/name/sushiswap/master-chef\"\nasync function sushiCalculateLocked(holderAddress, farmPoolId) {\n const data = `{ users(where: {address: \"${holderAddress}\"}) { amount sushiHarvested rewardDebt pool { id accSushiPerShare } } }`\n\n const response = await fetchJsonPost(SushiGraphUrl, JSON.stringify({query:data}));\n if (response.errors) {\n throw new Error(`Graph query error: ${response.errors[0].message}`);\n }\n\n for(const user of response.data.users) {\n if (user.pool.id === farmPoolId) {\n const sushiPerShare = new BigNumber(user.pool.accSushiPerShare).dividedBy('1e12');\n const sushiDebt = new BigNumber(user.rewardDebt).dividedBy('1e18');\n const pending = new BigNumber(user.amount).dividedBy('1e18').multipliedBy(sushiPerShare).minus(sushiDebt);\n \n const harvested = new BigNumber(user.sushiHarvested);\n const locked = pending.plus(harvested).multipliedBy(2);\n return locked;\n }\n }\n throw new Error(`Liquidity Provider Wallet Address ${holderAddress} with MasterChef Farm Pool Id ${farmPoolId} not found`)\n}\n\nconst OneInchTokenAddress = '0x111111111117dc0aa78b770fa6a738034120c302';\nasync function getOneInchPoolData(holderInfo, poolAddress, farmAddress, web3) {\n const pool = getContract(poolAddress, oneinchPairAbi, web3);\n const poolDataTxs = [\n pool.methods.totalSupply().call(),\n pool.methods.decimals().call(),\n pool.methods.getTokens().call(),\n ];\n if (isAddress(holderInfo)) {\n poolDataTxs.push(pool.methods.balanceOf(holderInfo).call());\n if (isAddress(farmAddress)) {\n const farm = getContract(farmAddress, oneInchFarmAbi, web3);\n poolDataTxs.push(pool.methods.balanceOf(farmAddress).call());\n poolDataTxs.push(farm.methods.totalSupply().call());\n poolDataTxs.push(farm.methods.balanceOf(holderInfo).call());\n poolDataTxs.push(farm.methods.earned(holderInfo).call());\n poolDataTxs.push(getTokenData(OneInchTokenAddress, erc20Abi, web3, holderInfo));\n }\n }\n const poolDataRes = await Promise.all(poolDataTxs);\n\n const totalLp = new BigNumber(poolDataRes[0])\n const holderLp = new BigNumber(isAddress(holderInfo) ? poolDataRes[3] : holderInfo);\n const lpTokenDecimals = poolDataRes[1];\n const directFractionOfPool = holderLp.dividedBy(totalLp);\n let indirectFranctionOfPool = new BigNumber(0);\n if (isAddress(holderInfo) && isAddress(farmAddress)) {\n const farmLp = new BigNumber(poolDataRes[4])\n const holderFarmTokens = new BigNumber(poolDataRes[6])\n const totalFarmTokens = new BigNumber(poolDataRes[5])\n indirectFranctionOfPool = farmLp.dividedBy(totalLp).multipliedBy(holderFarmTokens).dividedBy(totalFarmTokens);\n }\n const fractionOfPool = directFractionOfPool.plus(indirectFranctionOfPool);\n\n const tokenTxs = [];\n poolDataRes[2].map(tokenAddress => {\n tokenTxs.push(getOneInchTokenData(tokenAddress, erc20Abi, web3));\n tokenTxs.push(pool.methods.getBalanceForRemoval(tokenAddress).call());\n });\n const tokenRes = await Promise.all(tokenTxs);\n const positionValues = [];\n for(let i = 0;i < tokenRes.length;i+=2){\n tokenRes[i].Balance = bigToNumber(new BigNumber(tokenRes[i+1]).multipliedBy(fractionOfPool), tokenRes[i]);\n positionValues.push(tokenRes[i]);\n }\n\n const oneInchRewardTokenData = poolDataRes[8];\n if (isAddress(holderInfo) && isAddress(farmAddress)) {\n oneInchRewardTokenData.ClaimedBalanceLeftInWallet = oneInchRewardTokenData.Balance;\n delete oneInchRewardTokenData.Balance;\n oneInchRewardTokenData.UnclaimedUnlockedBalance = bigToNumber(new BigNumber(poolDataRes[7]), oneInchRewardTokenData);\n }\n return newPoolData(poolAddress, holderInfo, totalLp, holderLp, lpTokenDecimals, positionValues, farmAddress, indirectFranctionOfPool, oneInchRewardTokenData); \n}\n\nasync function getOneInchTokenData(tokenAddress, erc20Abi, web3) {\n if (tokenAddress === EmptyAddress) {\n return {\n Address: '0x0000000000000000000000000000000000000000',\n Decimals: '18',\n Name: 'Ether',\n Symbol: 'ETH',\n };\n } else {\n return getTokenData(tokenAddress, erc20Abi, web3);\n }\n}\n\nconst UnicFarmAddress = '0x4A25E4DF835B605A5848d2DB450fA600d96ee818';\nconst UnicTokenAddress = '0x94E0BAb2F6Ab1F19F4750E42d7349f2740513aD5';\nasync function getUJennyPoolData(holderInfo, poolAddress, farmPoolNumber, web3) {\n const pool = getContract(poolAddress, unicPairAbi, web3);\n const poolDataTxs = [\n pool.methods.totalSupply().call(),\n pool.methods.decimals().call(),\n pool.methods.token0().call(),\n pool.methods.token1().call(),\n pool.methods.getReserves().call()\n ];\n if (isAddress(holderInfo)) {\n poolDataTxs.push(pool.methods.balanceOf(holderInfo).call());\n if (farmPoolNumber !== '') {\n const farmContract = getContract(UnicFarmAddress, unicFarmAbi, web3);\n poolDataTxs.push(farmContract.methods.userInfo(farmPoolNumber, holderInfo).call());\n poolDataTxs.push(farmContract.methods.pendingUnic(farmPoolNumber, holderInfo).call());\n poolDataTxs.push(getTokenData(UnicTokenAddress, erc20Abi, web3, holderInfo));\n }\n }\n const poolDataRes = await Promise.all(poolDataTxs);\n \n const totalLp = new BigNumber(poolDataRes[0])\n const holderLp = new BigNumber(isAddress(holderInfo) ? poolDataRes[5] : holderInfo);\n const lpTokenDecimals = poolDataRes[1];\n const directFractionOfPool = holderLp.dividedBy(totalLp);\n let indirectFranctionOfPool = new BigNumber(0);\n if (isAddress(holderInfo) && farmPoolNumber !== '') {\n const holderLpInFarm = new BigNumber(poolDataRes[6][\"0\"])\n indirectFranctionOfPool = holderLpInFarm.dividedBy(totalLp);\n }\n const fractionOfPool = directFractionOfPool.plus(indirectFranctionOfPool);\n\n const tokenTxs = [\n getTokenData(poolDataRes[2], erc20Abi, web3),\n getTokenData(poolDataRes[3], erc20Abi, web3) \n ];\n const positionValues = await Promise.all(tokenTxs);\n positionValues[0].Balance = bigToNumber(new BigNumber(poolDataRes[4][\"0\"]).multipliedBy(fractionOfPool), positionValues[0]);\n positionValues[1].Balance = bigToNumber(new BigNumber(poolDataRes[4][\"1\"]).multipliedBy(fractionOfPool), positionValues[1]);\n\n const unicRewardTokenData = poolDataRes[8];\n if (isAddress(holderInfo) && farmPoolNumber !== '') {\n unicRewardTokenData.ClaimedBalanceLeftInWallet = unicRewardTokenData.Balance;\n delete unicRewardTokenData.Balance;\n unicRewardTokenData.UnclaimedUnlockedBalance = bigToNumber(new BigNumber(poolDataRes[7]), unicRewardTokenData);\n }\n return newPoolData(poolAddress, holderInfo, totalLp, holderLp, lpTokenDecimals, positionValues, farmPoolNumber !== '' ? UnicFarmAddress : '', indirectFranctionOfPool, unicRewardTokenData); \n}\n","import React, { useState } from \"react\";\nimport { Container, Segment, Form } from \"semantic-ui-react\";\nimport { lpPositionStatus, PoolType } from \"web3-snippets/pool-position\";\nimport { useApiKeys } from \"../ApiKeys\";\nconst poolTypeOptions = [\n {\n key: 'Balancer',\n text: 'Balancer',\n value: PoolType.BALANCER,\n farmLabel: 'Farm Address'\n },\n {\n key: 'Uniswap',\n text: 'Uniswap',\n value: PoolType.UNISWAP,\n farmLabel: 'Farm Address'\n },\n {\n key: 'Sushiswap',\n text: 'Sushiswap',\n value: PoolType.SUSHISWAP,\n farmLabel: 'MasterChef Farm Pool Id (optional)'\n },\n {\n key: '1Inch',\n text: '1Inch',\n value: PoolType.ONEINCH,\n farmLabel: 'Farming Contract Address (optional)'\n },\n {\n key: 'UJenny',\n text: 'UJenny',\n value: PoolType.UJENNY,\n farmLabel: 'Unic Farm Pool Id (optional)'\n }\n];\n\nfunction Snippet() {\n const { web3 } = useApiKeys();\n const [input, setInput] = useState({});\n const [result, setResult] = useState();\n const [loading, setLoading] = useState(false);\n const [hideFarming, setHideFarming] = useState(true);\n const [farmLabel, setFarmLabel] = useState(poolTypeOptions[0].farmLabel)\n const handleChange = (_e, { name, value }) => {setInput({ ...input, [name]: value }); updateVisuals(name, value);};\n const updateVisuals = (name, value) => {\n let { holderInfo, poolType } = input;\n if (name === 'poolType') {\n poolType = value;\n } else if (name === 'holderInfo') {\n holderInfo = value;\n }\n const pool = findPoolType(poolType);\n setFarmLabel(pool.farmLabel)\n if (holderInfo && holderInfo.startsWith('0x') && (pool.value === PoolType.ONEINCH || pool.value === PoolType.SUSHISWAP || pool.value === PoolType.UJENNY)) {\n setHideFarming(false);\n } else {\n setHideFarming(true);\n }\n\n };\n const handleSubmit = async () => {\n const { poolAddress, holderInfo, poolType, farmAddress } = input;\n setLoading(true);\n const result = await lpPositionStatus(holderInfo, poolType, poolAddress, web3, farmAddress);\n setResult(result);\n setLoading(false);\n };\n const findPoolType = (poolType) => {\n for(const option of poolTypeOptions) {\n if (option.value === poolType) {\n return option;\n }\n }\n return poolTypeOptions[0];\n }\n return (\n
\n

Pool Position Status

\n
\n \n \n
\n \n \n \n \n Submit\n \n
\n
{JSON.stringify(result, null, 2)}
\n
\n
\n );\n}\n\nexport default Snippet;\n","import React from \"react\";\nimport { HashRouter, Route, Link } from \"react-router-dom\";\nimport { Menu } from \"semantic-ui-react\";\nimport { getWeb3 } from \"web3-snippets/eth-helpers\";\nimport \"./App.css\";\nimport ApiKeysContext from \"./ApiKeys\";\nimport CheckContract from \"./snippets/CheckContract\";\nimport CheckApprove from \"./snippets/CheckApprove\";\nimport UniswapLoss from \"./snippets/UniswapLoss\";\nimport Compounding from \"./snippets/Compounding\";\nimport PancakeLoss from \"./snippets/PancakeLoss\";\nimport PoolPosition from \"./snippets/PoolPosition\";\n\nfunction App() {\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\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === \"localhost\" ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === \"[::1]\" ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === \"production\" && \"serviceWorker\" in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener(\"load\", () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n \"This web app is being served cache-first by a service \" +\n \"worker. To learn more, visit https://bit.ly/CRA-PWA\"\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then((registration) => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === \"installed\") {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n \"New content is available and will be used when all \" +\n \"tabs for this page are closed. See https://bit.ly/CRA-PWA.\"\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log(\"Content is cached for offline use.\");\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch((error) => {\n console.error(\"Error during service worker registration:\", error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { \"Service-Worker\": \"script\" },\n })\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get(\"content-type\");\n if (response.status === 404 || (contentType != null && contentType.indexOf(\"javascript\") === -1)) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\"No internet connection found. App is running in offline mode.\");\n });\n}\n\nexport function unregister() {\n if (\"serviceWorker\" in navigator) {\n navigator.serviceWorker.ready\n .then((registration) => {\n registration.unregister();\n })\n .catch((error) => {\n console.error(error.message);\n });\n }\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport \"semantic-ui-css/semantic.min.css\";\nimport \"./index.css\";\nimport App from \"./App\";\nimport * as serviceWorker from \"./serviceWorker\";\n\nReactDOM.render(\n \n \n ,\n document.getElementById(\"root\")\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/static/js/main.0500f203.chunk.js b/docs/static/js/main.09e4141f.chunk.js similarity index 91% rename from docs/static/js/main.0500f203.chunk.js rename to docs/static/js/main.09e4141f.chunk.js index a0a2f53..7b45239 100644 --- a/docs/static/js/main.0500f203.chunk.js +++ b/docs/static/js/main.09e4141f.chunk.js @@ -1,2 +1,2 @@ -(this.webpackJsonpwww=this.webpackJsonpwww||[]).push([[0],{437:function(e,t,n){e.exports=n(907)},443:function(e,t,n){},456:function(e,t){},480:function(e,t){},482:function(e,t){},499:function(e,t){},575:function(e,t){},577:function(e,t){},586:function(e,t){},588:function(e,t){},613:function(e,t){},615:function(e,t){},616:function(e,t){},622:function(e,t){},624:function(e,t){},642:function(e,t){},644:function(e,t){},656:function(e,t){},659:function(e,t){},665:function(e,t){},667:function(e,t){},700:function(e,t){},779:function(e,t,n){},907:function(e,t,n){"use strict";n.r(t);var a=n(0),i=n.n(a),u=n(78),p=n.n(u),s=(n(442),n(443),n(70)),r=n(26),y=n(918),o=n(7),l=n.n(o),d=n(19),m=n(8),c=n.n(m),b=n(407),T=n.n(b);function f(e){var t=new T.a(e);return t.eth.transactionBlockTimeout=0,t.eth.transactionPollingTimeout=0,t.eth.transactionConfirmationBlocks=1,t}function v(e,t,n){return new n.eth.Contract(t,e)}function w(e,t,n,a){return h.apply(this,arguments)}function h(){return(h=Object(d.a)(l.a.mark((function e(t,n,a,i){var u,p,s,r;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return u=v(t,n,a),p=[u.methods.decimals().call(),u.methods.name().call(),u.methods.symbol().call()],x(i)&&p.push(u.methods.balanceOf(i).call()),e.next=5,Promise.all(p);case 5:return s=e.sent,r=new c.a(x(i)?s[3]:0),e.abrupt("return",{Address:t,Decimals:s[0],Name:s[1],Symbol:s[2],Balance:M(r,s[0])});case 8:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function M(e,t){var n="string"===typeof t?t:t.Decimals;return e.dividedBy("1e".concat(n)).toNumber()}function k(e,t){return new c.a(e).dividedBy("1e".concat(t.Decimals))}function x(e){return"string"===typeof e&&e.startsWith("0x")}n(779);var g=i.a.createContext({});function O(){return Object(a.useContext)(g)}var A=g,S=n(37),E=n(30),C=n(24),I=n(916),B=n(919),P=n(917),D=n(36),_=n(33),L=n.n(_),j=n(16),R=n.n(j),F=n(232),W=n.n(F),U=n(233),N=n.n(U);function H(e){return G.apply(this,arguments)}function G(){return(G=Object(d.a)(l.a.mark((function e(t){return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e){return setTimeout(e,t)})));case 1:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function V(e){var t=(new Date).getTime()/1e3-parseInt(e);return Math.round(10*t/86400)/10}function q(){return Math.round((new Date).getTime()/1e3)}function J(e){return Y.apply(this,arguments)}function Y(){return(Y=Object(d.a)(l.a.mark((function e(t){var n;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,N()(t);case 2:return n=e.sent,e.next=5,n.json();case 5:return e.abrupt("return",e.sent);case 6:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function z(e,t){return X.apply(this,arguments)}function X(){return(X=Object(d.a)(l.a.mark((function e(t,n){var a;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,N()(t,{method:"post",body:n,headers:{"Content-Type":"application/json"}});case 2:return a=e.sent,e.next=5,a.json();case 5:return e.abrupt("return",e.sent);case 6:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function Q(e){return K.apply(this,arguments)}function K(){return(K=Object(d.a)(l.a.mark((function e(t){var n,a,i,u,p,s,r,y,o,d;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.web3,a=t.ethscn,i=t.address,u=t.hexData,p={Address:i,PublishedAbi:!1,SourceCodeUrl:"",DeployedDaysAgo:0,NumTx:0,NumTxHaveMore:!1,NumTxInLast24Hours:0,TxListUrl:"",TxStats:{},Tx100DaysAgo:0,Tx1000DaysAgo:0,EthSpentOnGas:0,DifferentAddresses:0,MethodCall:{}},e.next=4,J("https://api.etherscan.io/api?module=contract&action=getabi&address=".concat(i,"&apikey=").concat(a));case 4:return"1"===(r=e.sent).status&&r.result&&(s=JSON.parse(r.result),p.PublishedAbi=!0,p.SourceCodeUrl="https://etherscan.io/address/".concat(i,"#code")),p.TxListUrl="https://etherscan.io/txs?a=".concat(i),e.next=9,J("https://api.etherscan.io/api?module=account&action=txlist&address=".concat(i,"&startblock=0&endblock=99999999&sort=asc&apikey=").concat(a));case 9:return y=e.sent,e.next=12,J("https://api.etherscan.io/api?module=account&action=txlist&address=".concat(i,"&startblock=0&endblock=99999999&sort=desc&apikey=").concat(a));case 12:if(o=e.sent,!("1"===y.status&&y.result&&y.result.length>0&&"1"===o.status&&o.result&&o.result.length>0)){e.next=26;break}if(""===y.result[0].to&&y.result[0].input.length>20&&(p.DeployedDaysAgo=V(y.result[0].timeStamp)),!L.a.some(y.result,(function(e){return""!==e.to&&e.to!==i.toLowerCase()}))&&!L.a.some(y.result,(function(e){return""!==e.to&&e.to!==i.toLowerCase()}))){e.next=17;break}throw new Error("Address is not destination of all transactions, is this a contract?");case 17:y.result.length<1e4&&o.result.length<1e4?(p.NumTx=y.result.length,p.NumTxHaveMore=!1):(p.NumTx=1e4,p.NumTxHaveMore=!0),y.result.length>100&&(p.Tx100DaysAgo=V(y.result[100].timeStamp)),y.result.length>1e3&&(p.Tx1000DaysAgo=V(y.result[1e3].timeStamp)),d=q()-86400,p.NumTxInLast24Hours=L.a.reduce(o.result,(function(e,t){return e+(parseInt(t.timeStamp)>d?1:0)}),0),p.EthSpentOnGas=L.a.reduce(o.result,(function(e,t){return e+parseInt(t.gasUsed)*(parseInt(t.gasPrice)/1e18)}),0),p.DifferentAddresses=L.a.uniqBy(o.result,(function(e){return e.from.toLowerCase()})).length,p.EthSpentOnGas=Math.round(1e3*p.EthSpentOnGas)/1e3,s&&(p.TxStats=ee(s,o.result));case 26:if(!u||!s){e.next=32;break}return e.next=29,te(n,a,s,u);case 29:p.MethodCall=e.sent,e.next=33;break;case 32:delete p.MethodCall;case 33:return e.abrupt("return",p);case 34:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function $(e){return Z.apply(this,arguments)}function Z(){return(Z=Object(d.a)(l.a.mark((function e(t){var n,a,i,u,p;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.web3,a=t.ethscn,i=t.hexData,u={MethodCall:{}},p=[{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}],e.next=5,te(n,a,p,i);case 5:return u.MethodCall=e.sent,e.abrupt("return",u);case 7:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function ee(e,t){var n,a=0,i={},u=new W.a(e),p=Object(D.a)(t);try{for(p.s();!(n=p.n()).done;){var s=n.value,r=u.decodeData(s.input);if(r.method&&(i[r.method]||(i[r.method]=0),i[r.method]++,++a>1e3))break}}catch(y){p.e(y)}finally{p.f()}return L.a.mapValues(i,(function(e){return Math.round(1e4*e/a)/100}))}function te(e,t,n,a){return ne.apply(this,arguments)}function ne(){return(ne=Object(d.a)(l.a.mark((function e(t,n,a,i){var u,p,s,r,y,o,d,m;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:u=new W.a(a),p=u.decodeData(i),s={Method:p.method,Args:[]},r=0;case 4:if(!(r20);case 4:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var ue=function(){var e=O(),t=e.web3,n=e.ethscn,u=Object(a.useState)({}),p=Object(C.a)(u,2),s=p[0],r=p[1],y=Object(a.useState)(),o=Object(C.a)(y,2),m=o[0],c=o[1],b=Object(a.useState)(!1),T=Object(C.a)(b,2),f=T[0],v=T[1],w=function(e,t){var n=t.name,a=t.value;return r(Object(E.a)(Object(E.a)({},s),{},Object(S.a)({},n,a)))},h=function(){var e=Object(d.a)(l.a.mark((function e(){var a,i,u;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=s.address,i=s.hexData,v(!0),e.next=4,Q({web3:t,ethscn:n,address:a,hexData:i});case 4:u=e.sent,c(u),v(!1);case 7:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();return i.a.createElement("div",null,i.a.createElement("h2",null,"Check Contract (Anti-Phishing)"),i.a.createElement("br",null),i.a.createElement(I.a,{textAlign:"left"},i.a.createElement(B.a,{textAlign:"left",secondary:!0,style:{width:"50vw",margin:"auto"}},i.a.createElement(P.a,{loading:f,onSubmit:h,spellcheck:"false"},i.a.createElement(P.a.Input,{label:"Contract Address",name:"address",placeholder:"0xbD17B1ce622d73bD438b9E658acA5996dc394b0d",onChange:w}),i.a.createElement(P.a.TextArea,{label:"Method Call Hex Data",name:"hexData",placeholder:"0x095ea7b3000000000000000000000000...",onChange:w}),i.a.createElement(P.a.Button,{primary:!0},"Submit"))),i.a.createElement("pre",null,JSON.stringify(m,null,2))))};var pe=function(){var e=O(),t=e.web3,n=e.ethscn,u=Object(a.useState)({}),p=Object(C.a)(u,2),s=p[0],r=p[1],y=Object(a.useState)(),o=Object(C.a)(y,2),m=o[0],c=o[1],b=Object(a.useState)(!1),T=Object(C.a)(b,2),f=T[0],v=T[1],w=function(){var e=Object(d.a)(l.a.mark((function e(){var a,i;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=s.hexData,v(!0),e.next=4,$({web3:t,ethscn:n,hexData:a});case 4:i=e.sent,c(i),v(!1);case 7:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();return i.a.createElement("div",null,i.a.createElement("h2",null,"Check Approve (Anti-Phishing)"),i.a.createElement("br",null),i.a.createElement(I.a,{textAlign:"left"},i.a.createElement(B.a,{textAlign:"left",secondary:!0,style:{width:"50vw",margin:"auto"}},i.a.createElement(P.a,{loading:f,onSubmit:w,spellcheck:"false"},i.a.createElement(P.a.TextArea,{label:"Method Call Hex Data",name:"hexData",placeholder:"0x095ea7b3000000000000000000000000...",onChange:function(e,t){var n=t.name,a=t.value;return r(Object(E.a)(Object(E.a)({},s),{},Object(S.a)({},n,a)))}}),i.a.createElement(P.a.Button,{primary:!0},"Submit"))),i.a.createElement("pre",null,JSON.stringify(m,null,2))))},se=n(104),re=[{inputs:[],payable:!1,stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1",type:"uint256"},{indexed:!0,internalType:"address",name:"to",type:"address"}],name:"Burn",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1",type:"uint256"}],name:"Mint",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0In",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1In",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount0Out",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1Out",type:"uint256"},{indexed:!0,internalType:"address",name:"to",type:"address"}],name:"Swap",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint112",name:"reserve0",type:"uint112"},{indexed:!1,internalType:"uint112",name:"reserve1",type:"uint112"}],name:"Sync",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{constant:!0,inputs:[],name:"DOMAIN_SEPARATOR",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MINIMUM_LIQUIDITY",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"PERMIT_TYPEHASH",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"to",type:"address"}],name:"burn",outputs:[{internalType:"uint256",name:"amount0",type:"uint256"},{internalType:"uint256",name:"amount1",type:"uint256"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"factory",outputs:[{internalType:"address",name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getReserves",outputs:[{internalType:"uint112",name:"_reserve0",type:"uint112"},{internalType:"uint112",name:"_reserve1",type:"uint112"},{internalType:"uint32",name:"_blockTimestampLast",type:"uint32"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"_token0",type:"address"},{internalType:"address",name:"_token1",type:"address"}],name:"initialize",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"kLast",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"to",type:"address"}],name:"mint",outputs:[{internalType:"uint256",name:"liquidity",type:"uint256"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"",type:"address"}],name:"nonces",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"value",type:"uint256"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"}],name:"permit",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"price0CumulativeLast",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"price1CumulativeLast",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"to",type:"address"}],name:"skim",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"amount0Out",type:"uint256"},{internalType:"uint256",name:"amount1Out",type:"uint256"},{internalType:"address",name:"to",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"swap",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[],name:"sync",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"token0",outputs:[{internalType:"address",name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"token1",outputs:[{internalType:"address",name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"}],ye=[{constant:!0,inputs:[],name:"name",outputs:[{name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"guy",type:"address"},{name:"wad",type:"uint256"}],name:"approve",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"totalSupply",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"src",type:"address"},{name:"dst",type:"address"},{name:"wad",type:"uint256"}],name:"transferFrom",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{name:"wad",type:"uint256"}],name:"withdraw",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"decimals",outputs:[{name:"",type:"uint8"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{name:"",type:"address"}],name:"balanceOf",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"symbol",outputs:[{name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"dst",type:"address"},{name:"wad",type:"uint256"}],name:"transfer",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[],name:"deposit",outputs:[],payable:!0,stateMutability:"payable",type:"function"},{constant:!0,inputs:[{name:"",type:"address"},{name:"",type:"address"}],name:"allowance",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{payable:!0,stateMutability:"payable",type:"fallback"},{anonymous:!1,inputs:[{indexed:!0,name:"src",type:"address"},{indexed:!0,name:"guy",type:"address"},{indexed:!1,name:"wad",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"src",type:"address"},{indexed:!0,name:"dst",type:"address"},{indexed:!1,name:"wad",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"dst",type:"address"},{indexed:!1,name:"wad",type:"uint256"}],name:"Deposit",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"src",type:"address"},{indexed:!1,name:"wad",type:"uint256"}],name:"Withdrawal",type:"event"}],oe="0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f",le="0xdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496";function de(e){return me.apply(this,arguments)}function me(){return(me=Object(d.a)(l.a.mark((function e(t){var n,a,i,u,p,s,r,y,o,d,m,b,T,f,v,w,h,M,x,g,O,A,S,E,C,I,B,P,_,j,R,F;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=t.web3,u=t.fromBlock,p=t.toBlock,s=t.pair,r=t.lp,y={Tokens:[],LiquidityChanges:[],SumLpTokens:new c.a(0),SumTokenDeposits:[new c.a(0),new c.a(0)],AvailableTokensToWithdraw:[void 0,void 0],TotalWorth:{},AvailableAfterRebalance:[]},u||(u=0),p||(p="latest"),u=parseInt(u),"latest"!==p&&(p=parseInt(p)),o=new i.eth.Contract(re,s),e.next=9,Te(o,i);case 9:return d=e.sent,y.Tokens[0]=d[0],y.Tokens[1]=d[1],e.next=14,o.getPastEvents("Transfer",{filter:{from:"0x0000000000000000000000000000000000000000",to:r},fromBlock:u,toBlock:p});case 14:return m=e.sent,(n=y.LiquidityChanges).push.apply(n,Object(se.a)(m.map((function(e){var t=e.transactionHash,n=e.blockNumber,a=e.returnValues;return{BlockNumber:n,TxHash:t,LpTokenDelta:new c.a(a.value).dividedBy("1e18"),SumLpTokensAfter:void 0,TokenDepositDelta:[]}})))),e.next=18,o.getPastEvents("Transfer",{filter:{from:r,to:s},fromBlock:u,toBlock:p});case 18:b=e.sent,(a=y.LiquidityChanges).push.apply(a,Object(se.a)(b.map((function(e){var t=e.transactionHash,n=e.blockNumber,a=e.returnValues;return{BlockNumber:n,TxHash:t,LpTokenDelta:new c.a(a.value).dividedBy("1e18").negated(),SumLpTokensAfter:void 0,TokenDepositDelta:[]}})))),y.LiquidityChanges.sort((function(e,t){return e.BlockNumber-t.BlockNumber})),T=Object(D.a)(y.LiquidityChanges),e.prev=22,T.s();case 24:if((f=T.n()).done){e.next=35;break}return v=f.value,e.next=28,H(200);case 28:return e.next=30,i.eth.getTransactionReceipt(v.TxHash);case 30:w=e.sent,h=Object(D.a)(w.logs);try{for(h.s();!(M=h.n()).done;)(x=M.value).topics[0].toLowerCase()===oe&&(g=L.a.find(re,(function(e){return"Mint"===e.name})).inputs,O=i.eth.abi.decodeLog(g,x.data,L.a.drop(x.topics,1)),v.TokenDepositDelta[0]=k(O.amount0,y.Tokens[0]),v.TokenDepositDelta[1]=k(O.amount1,y.Tokens[1])),x.topics[0].toLowerCase()===le&&(A=L.a.find(re,(function(e){return"Burn"===e.name})).inputs,S=i.eth.abi.decodeLog(A,x.data,L.a.drop(x.topics,1)),v.TokenDepositDelta[0]=k(S.amount0,y.Tokens[0]).negated(),v.TokenDepositDelta[1]=k(S.amount1,y.Tokens[1]).negated())}catch(l){h.e(l)}finally{h.f()}case 33:e.next=24;break;case 35:e.next=40;break;case 37:e.prev=37,e.t0=e.catch(22),T.e(e.t0);case 40:return e.prev=40,T.f(),e.finish(40);case 43:E=Object(D.a)(y.LiquidityChanges);try{for(E.s();!(C=E.n()).done;)I=C.value,y.SumLpTokens=y.SumLpTokens.plus(I.LpTokenDelta),I.SumLpTokensAfter=new c.a(y.SumLpTokens),y.SumTokenDeposits[0]=y.SumTokenDeposits[0].plus(I.TokenDepositDelta[0]),y.SumTokenDeposits[1]=y.SumTokenDeposits[1].plus(I.TokenDepositDelta[1])}catch(l){E.e(l)}finally{E.f()}return e.next=47,o.methods.totalSupply().call();case 47:return B=e.sent,P=new c.a(B).dividedBy("1e18"),_=y.SumLpTokens.dividedBy(P),e.next=52,o.methods.getReserves().call();case 52:return j=e.sent,R=k(j._reserve0,y.Tokens[0]),F=k(j._reserve1,y.Tokens[1]),y.AvailableTokensToWithdraw[0]=R.multipliedBy(_),y.AvailableTokensToWithdraw[1]=F.multipliedBy(_),y.TotalWorth.SumTokenDeposits={CurrentPriceUSD:ce(y.SumTokenDeposits,y.Tokens,"CurrentPriceUSD"),CurrentPriceBTC:ce(y.SumTokenDeposits,y.Tokens,"CurrentPriceBTC"),CurrentPriceETH:ce(y.SumTokenDeposits,y.Tokens,"CurrentPriceETH")},y.TotalWorth.AvailableTokensToWithdraw={CurrentPriceUSD:ce(y.AvailableTokensToWithdraw,y.Tokens,"CurrentPriceUSD"),CurrentPriceBTC:ce(y.AvailableTokensToWithdraw,y.Tokens,"CurrentPriceBTC"),CurrentPriceETH:ce(y.AvailableTokensToWithdraw,y.Tokens,"CurrentPriceETH")},y.AvailableAfterRebalance[0]=be(y.AvailableTokensToWithdraw,y.Tokens,0,y.SumTokenDeposits[0]),y.AvailableAfterRebalance[1]=be(y.AvailableTokensToWithdraw,y.Tokens,1,y.SumTokenDeposits[1]),e.abrupt("return",y);case 62:case"end":return e.stop()}}),e,null,[[22,37,40,43]])})))).apply(this,arguments)}function ce(e,t,n){var a=e[0].multipliedBy(t[0][n]),i=e[1].multipliedBy(t[1][n]);return a.plus(i)}function be(e,t,n,a){var i=[];i[n]=new c.a(a);var u=e[n].minus(i[n]).dividedBy(t[1-n].CurrentPriceUSD).multipliedBy(t[n].CurrentPriceUSD);return i[1-n]=e[1-n].plus(u),i}function Te(e,t){return fe.apply(this,arguments)}function fe(){return(fe=Object(d.a)(l.a.mark((function e(t,n){var a,i,u,p;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=[t.methods.token0().call(),t.methods.token1().call()],e.next=3,Promise.all(a);case 3:return i=e.sent,u=[w(i[0],ye,n),w(i[1],ye,n),J("https://api.coingecko.com/api/v3/coins/ethereum/contract/".concat(i[0])),J("https://api.coingecko.com/api/v3/coins/ethereum/contract/".concat(i[1]))],e.next=7,Promise.all(u);case 7:return p=e.sent,e.abrupt("return",[ve(p[0],p[2]),ve(p[1],p[3])]);case 9:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function ve(e,t){return e.CurrentPriceUSD=new c.a(t.market_data.current_price.usd),e.CurrentPriceBTC=new c.a(t.market_data.current_price.btc),e.CurrentPriceETH=new c.a(t.market_data.current_price.eth),e}var we=function(){var e=O().web3,t=Object(a.useState)({}),n=Object(C.a)(t,2),u=n[0],p=n[1],s=Object(a.useState)(),r=Object(C.a)(s,2),y=r[0],o=r[1],m=Object(a.useState)(!1),c=Object(C.a)(m,2),b=c[0],T=c[1],f=function(e,t){var n=t.name,a=t.value;return p(Object(E.a)(Object(E.a)({},u),{},Object(S.a)({},n,a)))},v=function(){var t=Object(d.a)(l.a.mark((function t(){var n,a,i,p,s;return l.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=u.fromBlock,a=u.toBlock,i=u.pair,p=u.lp,T(!0),t.next=4,de({web3:e,fromBlock:n,toBlock:a,pair:i,lp:p});case 4:s=t.sent,o(s),T(!1);case 7:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}();return i.a.createElement("div",null,i.a.createElement("h2",null,"Uniswap Impermanent Loss"),i.a.createElement("br",null),i.a.createElement(I.a,{textAlign:"left"},i.a.createElement(B.a,{textAlign:"left",secondary:!0,style:{width:"50vw",margin:"auto"}},i.a.createElement(P.a,{loading:b,onSubmit:v,spellcheck:"false"},i.a.createElement(P.a.Input,{label:"Uniswap Pair Contract Address",name:"pair",placeholder:"0x0d4a11d5EEaaC28EC3F61d100daF4d40471f1852",onChange:f}),i.a.createElement(P.a.Input,{label:"Liquidity Provider Wallet Address",name:"lp",placeholder:"0x533D94255aDABE5F9AC7d6755ebCe1e93a00AfC7",onChange:f}),i.a.createElement(P.a.Group,{widths:"equal"},i.a.createElement(P.a.Input,{fluid:!0,label:"From Block",name:"fromBlock",value:"0",onChange:f}),i.a.createElement(P.a.Input,{fluid:!0,label:"To Block",name:"toBlock",value:"latest",onChange:f})),i.a.createElement(P.a.Button,{primary:!0},"Submit"))),i.a.createElement("pre",null,JSON.stringify(y,null,2))))};function he(e){var t=e.amount,n=e.apy,a=e.days,i=e.cpCost,u=e.cpRateMinutes,p=Me({amount:t=parseFloat(t),apy:n=parseFloat(n),days:a=parseFloat(a),cpCost:i=parseFloat(i),cpRateMinutes:u=parseFloat(u)});return p.RecommendedMinutes=function(e){for(var t=e.amount,n=e.apy,a=e.days,i=e.cpCost,u=e.maxMin,p=0,s=0,r=u/1e5,y=.1;yp&&(p=o.CompoundingProfit,s=y)}return s}({amount:t,apy:n,days:a,cpCost:i,maxMin:10080}),p}function Me(e){var t=e.amount,n=e.apy,a=e.days,i=e.cpCost,u=e.cpRateMinutes,p={ResultWithoutCompound:0,ResultWithCompound:0,CompoundingProfit:0,CompoundingProfitPercent:0};p.ResultWithoutCompound=t+t*n/100*a/365;for(var s=t,r=0;r+u<24*a*60;)r+=u,s+=s*n/100*u/24/60/365,s-=i;return s+=s*n/100*(24*a*60-r)/24/60/365,p.ResultWithCompound=s,p.CompoundingProfit=p.ResultWithCompound-p.ResultWithoutCompound,p.CompoundingProfitPercent=p.CompoundingProfit/p.ResultWithoutCompound*100,p}var ke=function(){var e=Object(a.useState)({}),t=Object(C.a)(e,2),n=t[0],u=t[1],p=Object(a.useState)(),s=Object(C.a)(p,2),r=s[0],y=s[1],o=Object(a.useState)(!1),l=Object(C.a)(o,2),d=l[0],m=l[1],c=function(e,t){var a=t.name,i=t.value;return u(Object(E.a)(Object(E.a)({},n),{},Object(S.a)({},a,i)))};return i.a.createElement("div",null,i.a.createElement("h2",null,"Compounding Profit Calculator"),i.a.createElement("br",null),i.a.createElement(I.a,{textAlign:"left"},i.a.createElement(B.a,{textAlign:"left",secondary:!0,style:{width:"50vw",margin:"auto"}},i.a.createElement(P.a,{loading:d,onSubmit:function(){var e=n.amount,t=n.apy,a=n.days,i=n.cpCost,u=n.cpRateMinutes;m(!0);var p=he({amount:e,apy:t,days:a,cpCost:i,cpRateMinutes:u});y(p),m(!1)},spellcheck:"false"},i.a.createElement(P.a.Input,{label:"Initial Amount (in tokens)",name:"amount",placeholder:"100000",onChange:c}),i.a.createElement(P.a.Group,{widths:"equal"},i.a.createElement(P.a.Input,{fluid:!0,label:"APY (%)",name:"apy",placeholder:"30",onChange:c}),i.a.createElement(P.a.Input,{fluid:!0,label:"Num Days Investing",name:"days",placeholder:"7",onChange:c})),i.a.createElement(P.a.Group,{widths:"equal"},i.a.createElement(P.a.Input,{fluid:!0,label:"Cost of Compound Operation (in tokens)",name:"cpCost",placeholder:"1",onChange:c}),i.a.createElement(P.a.Input,{fluid:!0,label:"Minutes Between Compounds",name:"cpRateMinutes",placeholder:"60",onChange:c})),i.a.createElement(P.a.Button,{primary:!0},"Submit"))),i.a.createElement("pre",null,JSON.stringify(r,null,2))))},xe=[{inputs:[],payable:!1,stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1",type:"uint256"},{indexed:!0,internalType:"address",name:"to",type:"address"}],name:"Burn",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1",type:"uint256"}],name:"Mint",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0In",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1In",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount0Out",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1Out",type:"uint256"},{indexed:!0,internalType:"address",name:"to",type:"address"}],name:"Swap",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint112",name:"reserve0",type:"uint112"},{indexed:!1,internalType:"uint112",name:"reserve1",type:"uint112"}],name:"Sync",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{constant:!0,inputs:[],name:"DOMAIN_SEPARATOR",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MINIMUM_LIQUIDITY",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"PERMIT_TYPEHASH",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"to",type:"address"}],name:"burn",outputs:[{internalType:"uint256",name:"amount0",type:"uint256"},{internalType:"uint256",name:"amount1",type:"uint256"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"factory",outputs:[{internalType:"address",name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getReserves",outputs:[{internalType:"uint112",name:"_reserve0",type:"uint112"},{internalType:"uint112",name:"_reserve1",type:"uint112"},{internalType:"uint32",name:"_blockTimestampLast",type:"uint32"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"_token0",type:"address"},{internalType:"address",name:"_token1",type:"address"}],name:"initialize",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"kLast",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"to",type:"address"}],name:"mint",outputs:[{internalType:"uint256",name:"liquidity",type:"uint256"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"",type:"address"}],name:"nonces",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"value",type:"uint256"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"}],name:"permit",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"price0CumulativeLast",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"price1CumulativeLast",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"to",type:"address"}],name:"skim",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"amount0Out",type:"uint256"},{internalType:"uint256",name:"amount1Out",type:"uint256"},{internalType:"address",name:"to",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"swap",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[],name:"sync",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"token0",outputs:[{internalType:"address",name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"token1",outputs:[{internalType:"address",name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"}],ge=[{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{constant:!0,inputs:[{internalType:"address",name:"_owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getOwner",outputs:[{internalType:"address",name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"}];function Oe(e){return Ae.apply(this,arguments)}function Ae(){return(Ae=Object(d.a)(l.a.mark((function e(t){var n,a,i,u,p,s,r,y,o,d,m,b,T,f,v,w,h,M,x,g,O,A,S,E,C,I,B,P,_,j,R,F;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=t.bscWeb3,u=t.fromBlock,p=t.toBlock,s=t.pair,r=t.lp,y={Tokens:[],LiquidityChanges:[],SumLpTokens:new c.a(0),SumTokenDeposits:[new c.a(0),new c.a(0)],AvailableTokensToWithdraw:[void 0,void 0],TotalWorth:{},AvailableAfterRebalance:[]},u||(u=0),p||(p="latest"),u=parseInt(u),"latest"!==p&&(p=parseInt(p)),o=new i.eth.Contract(xe,s),e.next=9,Ce(o,i);case 9:return d=e.sent,y.Tokens[0]=d[0],y.Tokens[1]=d[1],e.next=14,o.getPastEvents("Transfer",{filter:{from:"0x0000000000000000000000000000000000000000",to:r},fromBlock:u,toBlock:p});case 14:return m=e.sent,(n=y.LiquidityChanges).push.apply(n,Object(se.a)(m.map((function(e){var t=e.transactionHash,n=e.blockNumber,a=e.returnValues;return{BlockNumber:n,TxHash:t,LpTokenDelta:new c.a(a.value).dividedBy("1e18"),SumLpTokensAfter:void 0,TokenDepositDelta:[]}})))),e.next=18,o.getPastEvents("Transfer",{filter:{from:r,to:s},fromBlock:u,toBlock:p});case 18:b=e.sent,(a=y.LiquidityChanges).push.apply(a,Object(se.a)(b.map((function(e){var t=e.transactionHash,n=e.blockNumber,a=e.returnValues;return{BlockNumber:n,TxHash:t,LpTokenDelta:new c.a(a.value).dividedBy("1e18").negated(),SumLpTokensAfter:void 0,TokenDepositDelta:[]}})))),y.LiquidityChanges.sort((function(e,t){return e.BlockNumber-t.BlockNumber})),T=Object(D.a)(y.LiquidityChanges),e.prev=22,T.s();case 24:if((f=T.n()).done){e.next=33;break}return v=f.value,e.next=28,i.eth.getTransactionReceipt(v.TxHash);case 28:w=e.sent,h=Object(D.a)(w.logs);try{for(h.s();!(M=h.n()).done;)"0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f"===(x=M.value).topics[0].toLowerCase()&&(g=L.a.find(xe,(function(e){return"Mint"===e.name})).inputs,O=i.eth.abi.decodeLog(g,x.data,L.a.drop(x.topics,1)),v.TokenDepositDelta[0]=k(O.amount0,y.Tokens[0]),v.TokenDepositDelta[1]=k(O.amount1,y.Tokens[1])),"0xdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496"===x.topics[0].toLowerCase()&&(A=L.a.find(xe,(function(e){return"Burn"===e.name})).inputs,S=i.eth.abi.decodeLog(A,x.data,L.a.drop(x.topics,1)),v.TokenDepositDelta[0]=k(S.amount0,y.Tokens[0]).negated(),v.TokenDepositDelta[1]=k(S.amount1,y.Tokens[1]).negated())}catch(l){h.e(l)}finally{h.f()}case 31:e.next=24;break;case 33:e.next=38;break;case 35:e.prev=35,e.t0=e.catch(22),T.e(e.t0);case 38:return e.prev=38,T.f(),e.finish(38);case 41:E=Object(D.a)(y.LiquidityChanges);try{for(E.s();!(C=E.n()).done;)I=C.value,y.SumLpTokens=y.SumLpTokens.plus(I.LpTokenDelta),I.SumLpTokensAfter=new c.a(y.SumLpTokens),y.SumTokenDeposits[0]=y.SumTokenDeposits[0].plus(I.TokenDepositDelta[0]),y.SumTokenDeposits[1]=y.SumTokenDeposits[1].plus(I.TokenDepositDelta[1])}catch(l){E.e(l)}finally{E.f()}return e.next=45,o.methods.totalSupply().call();case 45:return B=e.sent,P=new c.a(B).dividedBy("1e18"),_=y.SumLpTokens.dividedBy(P),e.next=50,o.methods.getReserves().call();case 50:return j=e.sent,R=k(j._reserve0,y.Tokens[0]),F=k(j._reserve1,y.Tokens[1]),y.AvailableTokensToWithdraw[0]=R.multipliedBy(_),y.AvailableTokensToWithdraw[1]=F.multipliedBy(_),y.TotalWorth.SumTokenDeposits={CurrentPriceUSD:Se(y.SumTokenDeposits,y.Tokens,"CurrentPriceUSD"),CurrentPriceBTC:Se(y.SumTokenDeposits,y.Tokens,"CurrentPriceBTC"),CurrentPriceETH:Se(y.SumTokenDeposits,y.Tokens,"CurrentPriceETH")},y.TotalWorth.AvailableTokensToWithdraw={CurrentPriceUSD:Se(y.AvailableTokensToWithdraw,y.Tokens,"CurrentPriceUSD"),CurrentPriceBTC:Se(y.AvailableTokensToWithdraw,y.Tokens,"CurrentPriceBTC"),CurrentPriceETH:Se(y.AvailableTokensToWithdraw,y.Tokens,"CurrentPriceETH")},y.AvailableAfterRebalance[0]=Ee(y.AvailableTokensToWithdraw,y.Tokens,0,y.SumTokenDeposits[0]),y.AvailableAfterRebalance[1]=Ee(y.AvailableTokensToWithdraw,y.Tokens,1,y.SumTokenDeposits[1]),e.abrupt("return",y);case 60:case"end":return e.stop()}}),e,null,[[22,35,38,41]])})))).apply(this,arguments)}function Se(e,t,n){var a=e[0].multipliedBy(t[0][n]),i=e[1].multipliedBy(t[1][n]);return a.plus(i)}function Ee(e,t,n,a){var i=[];i[n]=new c.a(a);var u=e[n].minus(i[n]).dividedBy(t[1-n].CurrentPriceUSD).multipliedBy(t[n].CurrentPriceUSD);return i[1-n]=e[1-n].plus(u),i}function Ce(e,t){return Ie.apply(this,arguments)}function Ie(){return(Ie=Object(d.a)(l.a.mark((function e(t,n){var a,i,u,p,s,r,y,o,d,m,c;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=[t.methods.token0().call(),t.methods.token1().call()],e.next=3,Promise.all(a);case 3:return i=e.sent,u=[w(i[0],ge,n),w(i[1],ge,n)],e.next=7,Promise.all(u);case 7:return p=e.sent,e.next=10,J("https://api.coingecko.com/api/v3/coins/list");case 10:s=e.sent,r=[null,null],y=Object(D.a)(s);try{for(y.s();!(o=y.n()).done;)d=o.value,(m=d.symbol.toUpperCase())===p[0].Symbol&&(r[0]=J("https://api.coingecko.com/api/v3/coins/".concat(d.id))),m===p[1].Symbol&&(r[1]=J("https://api.coingecko.com/api/v3/coins/".concat(d.id)))}catch(l){y.e(l)}finally{y.f()}if(null!==r[0]&&null!==r[1]){e.next=16;break}throw new Error("Could not find price data for one or both of the tokens (".concat(tokenRawDatas[2],", ").concat(tokenRawDatas[5],")"));case 16:return e.next=18,Promise.all(r);case 18:return c=e.sent,e.abrupt("return",[Be(p[0],c[0]),Be(p[1],c[1])]);case 20:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function Be(e,t){return e.CurrentPriceUSD=new c.a(t.market_data.current_price.usd),e.CurrentPriceBTC=new c.a(t.market_data.current_price.btc),e.CurrentPriceETH=new c.a(t.market_data.current_price.eth),e}var Pe=function(){var e=O().bscWeb3,t=Object(a.useState)({}),n=Object(C.a)(t,2),u=n[0],p=n[1],s=Object(a.useState)(),r=Object(C.a)(s,2),y=r[0],o=r[1],m=Object(a.useState)(!1),c=Object(C.a)(m,2),b=c[0],T=c[1],f=function(e,t){var n=t.name,a=t.value;return p(Object(E.a)(Object(E.a)({},u),{},Object(S.a)({},n,a)))},v=function(){var t=Object(d.a)(l.a.mark((function t(){var n,a,i,p,s;return l.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=u.fromBlock,a=u.toBlock,i=u.pair,p=u.lp,T(!0),t.next=4,Oe({bscWeb3:e,fromBlock:n,toBlock:a,pair:i,lp:p});case 4:s=t.sent,o(s),T(!1);case 7:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}();return i.a.createElement("div",null,i.a.createElement("h2",null,"Pancake Impermanent Loss"),i.a.createElement("br",null),i.a.createElement(I.a,{textAlign:"left"},i.a.createElement(B.a,{textAlign:"left",secondary:!0,style:{width:"50vw",margin:"auto"}},i.a.createElement(P.a,{loading:b,onSubmit:v,spellcheck:"false"},i.a.createElement(P.a.Input,{label:"Pancake Pair Contract Address",name:"pair",placeholder:"0x1b96b92314c44b159149f7e0303511fb2fc4774f",onChange:f}),i.a.createElement(P.a.Input,{label:"Liquidity Provider Wallet Address",name:"lp",placeholder:"0x1f38c8bdd9cb174599574b6c8fadffd1fd987c85",onChange:f}),i.a.createElement(P.a.Group,{widths:"equal"},i.a.createElement(P.a.Input,{fluid:!0,label:"From Block",name:"fromBlock",value:"0",onChange:f}),i.a.createElement(P.a.Input,{fluid:!0,label:"To Block",name:"toBlock",value:"latest",onChange:f})),i.a.createElement(P.a.Button,{primary:!0},"Submit"))),i.a.createElement("pre",null,JSON.stringify(y,null,2))))},De=[{inputs:[],payable:!1,stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"src",type:"address"},{indexed:!0,internalType:"address",name:"dst",type:"address"},{indexed:!1,internalType:"uint256",name:"amt",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!0,inputs:[{indexed:!0,internalType:"bytes4",name:"sig",type:"bytes4"},{indexed:!0,internalType:"address",name:"caller",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"LOG_CALL",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"caller",type:"address"},{indexed:!0,internalType:"address",name:"tokenOut",type:"address"},{indexed:!1,internalType:"uint256",name:"tokenAmountOut",type:"uint256"}],name:"LOG_EXIT",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"caller",type:"address"},{indexed:!0,internalType:"address",name:"tokenIn",type:"address"},{indexed:!1,internalType:"uint256",name:"tokenAmountIn",type:"uint256"}],name:"LOG_JOIN",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"caller",type:"address"},{indexed:!0,internalType:"address",name:"tokenIn",type:"address"},{indexed:!0,internalType:"address",name:"tokenOut",type:"address"},{indexed:!1,internalType:"uint256",name:"tokenAmountIn",type:"uint256"},{indexed:!1,internalType:"uint256",name:"tokenAmountOut",type:"uint256"}],name:"LOG_SWAP",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"src",type:"address"},{indexed:!0,internalType:"address",name:"dst",type:"address"},{indexed:!1,internalType:"uint256",name:"amt",type:"uint256"}],name:"Transfer",type:"event"},{constant:!0,inputs:[],name:"BONE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"BPOW_PRECISION",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"EXIT_FEE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"INIT_POOL_SUPPLY",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MAX_BOUND_TOKENS",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MAX_BPOW_BASE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MAX_FEE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MAX_IN_RATIO",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MAX_OUT_RATIO",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MAX_TOTAL_WEIGHT",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MAX_WEIGHT",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MIN_BALANCE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MIN_BOUND_TOKENS",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MIN_BPOW_BASE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MIN_FEE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MIN_WEIGHT",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"src",type:"address"},{internalType:"address",name:"dst",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"dst",type:"address"},{internalType:"uint256",name:"amt",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"whom",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"balance",type:"uint256"},{internalType:"uint256",name:"denorm",type:"uint256"}],name:"bind",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{internalType:"uint256",name:"tokenBalanceIn",type:"uint256"},{internalType:"uint256",name:"tokenWeightIn",type:"uint256"},{internalType:"uint256",name:"tokenBalanceOut",type:"uint256"},{internalType:"uint256",name:"tokenWeightOut",type:"uint256"},{internalType:"uint256",name:"tokenAmountOut",type:"uint256"},{internalType:"uint256",name:"swapFee",type:"uint256"}],name:"calcInGivenOut",outputs:[{internalType:"uint256",name:"tokenAmountIn",type:"uint256"}],payable:!1,stateMutability:"pure",type:"function"},{constant:!0,inputs:[{internalType:"uint256",name:"tokenBalanceIn",type:"uint256"},{internalType:"uint256",name:"tokenWeightIn",type:"uint256"},{internalType:"uint256",name:"tokenBalanceOut",type:"uint256"},{internalType:"uint256",name:"tokenWeightOut",type:"uint256"},{internalType:"uint256",name:"tokenAmountIn",type:"uint256"},{internalType:"uint256",name:"swapFee",type:"uint256"}],name:"calcOutGivenIn",outputs:[{internalType:"uint256",name:"tokenAmountOut",type:"uint256"}],payable:!1,stateMutability:"pure",type:"function"},{constant:!0,inputs:[{internalType:"uint256",name:"tokenBalanceOut",type:"uint256"},{internalType:"uint256",name:"tokenWeightOut",type:"uint256"},{internalType:"uint256",name:"poolSupply",type:"uint256"},{internalType:"uint256",name:"totalWeight",type:"uint256"},{internalType:"uint256",name:"tokenAmountOut",type:"uint256"},{internalType:"uint256",name:"swapFee",type:"uint256"}],name:"calcPoolInGivenSingleOut",outputs:[{internalType:"uint256",name:"poolAmountIn",type:"uint256"}],payable:!1,stateMutability:"pure",type:"function"},{constant:!0,inputs:[{internalType:"uint256",name:"tokenBalanceIn",type:"uint256"},{internalType:"uint256",name:"tokenWeightIn",type:"uint256"},{internalType:"uint256",name:"poolSupply",type:"uint256"},{internalType:"uint256",name:"totalWeight",type:"uint256"},{internalType:"uint256",name:"tokenAmountIn",type:"uint256"},{internalType:"uint256",name:"swapFee",type:"uint256"}],name:"calcPoolOutGivenSingleIn",outputs:[{internalType:"uint256",name:"poolAmountOut",type:"uint256"}],payable:!1,stateMutability:"pure",type:"function"},{constant:!0,inputs:[{internalType:"uint256",name:"tokenBalanceIn",type:"uint256"},{internalType:"uint256",name:"tokenWeightIn",type:"uint256"},{internalType:"uint256",name:"poolSupply",type:"uint256"},{internalType:"uint256",name:"totalWeight",type:"uint256"},{internalType:"uint256",name:"poolAmountOut",type:"uint256"},{internalType:"uint256",name:"swapFee",type:"uint256"}],name:"calcSingleInGivenPoolOut",outputs:[{internalType:"uint256",name:"tokenAmountIn",type:"uint256"}],payable:!1,stateMutability:"pure",type:"function"},{constant:!0,inputs:[{internalType:"uint256",name:"tokenBalanceOut",type:"uint256"},{internalType:"uint256",name:"tokenWeightOut",type:"uint256"},{internalType:"uint256",name:"poolSupply",type:"uint256"},{internalType:"uint256",name:"totalWeight",type:"uint256"},{internalType:"uint256",name:"poolAmountIn",type:"uint256"},{internalType:"uint256",name:"swapFee",type:"uint256"}],name:"calcSingleOutGivenPoolIn",outputs:[{internalType:"uint256",name:"tokenAmountOut",type:"uint256"}],payable:!1,stateMutability:"pure",type:"function"},{constant:!0,inputs:[{internalType:"uint256",name:"tokenBalanceIn",type:"uint256"},{internalType:"uint256",name:"tokenWeightIn",type:"uint256"},{internalType:"uint256",name:"tokenBalanceOut",type:"uint256"},{internalType:"uint256",name:"tokenWeightOut",type:"uint256"},{internalType:"uint256",name:"swapFee",type:"uint256"}],name:"calcSpotPrice",outputs:[{internalType:"uint256",name:"spotPrice",type:"uint256"}],payable:!1,stateMutability:"pure",type:"function"},{constant:!0,inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"dst",type:"address"},{internalType:"uint256",name:"amt",type:"uint256"}],name:"decreaseApproval",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"poolAmountIn",type:"uint256"},{internalType:"uint256[]",name:"minAmountsOut",type:"uint256[]"}],name:"exitPool",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"tokenOut",type:"address"},{internalType:"uint256",name:"tokenAmountOut",type:"uint256"},{internalType:"uint256",name:"maxPoolAmountIn",type:"uint256"}],name:"exitswapExternAmountOut",outputs:[{internalType:"uint256",name:"poolAmountIn",type:"uint256"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"tokenOut",type:"address"},{internalType:"uint256",name:"poolAmountIn",type:"uint256"},{internalType:"uint256",name:"minAmountOut",type:"uint256"}],name:"exitswapPoolAmountIn",outputs:[{internalType:"uint256",name:"tokenAmountOut",type:"uint256"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[],name:"finalize",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"token",type:"address"}],name:"getBalance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getColor",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getController",outputs:[{internalType:"address",name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getCurrentTokens",outputs:[{internalType:"address[]",name:"tokens",type:"address[]"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"token",type:"address"}],name:"getDenormalizedWeight",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getFinalTokens",outputs:[{internalType:"address[]",name:"tokens",type:"address[]"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"token",type:"address"}],name:"getNormalizedWeight",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getNumTokens",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"tokenIn",type:"address"},{internalType:"address",name:"tokenOut",type:"address"}],name:"getSpotPrice",outputs:[{internalType:"uint256",name:"spotPrice",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"tokenIn",type:"address"},{internalType:"address",name:"tokenOut",type:"address"}],name:"getSpotPriceSansFee",outputs:[{internalType:"uint256",name:"spotPrice",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getSwapFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getTotalDenormalizedWeight",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"token",type:"address"}],name:"gulp",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"dst",type:"address"},{internalType:"uint256",name:"amt",type:"uint256"}],name:"increaseApproval",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"t",type:"address"}],name:"isBound",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"isFinalized",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"isPublicSwap",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"poolAmountOut",type:"uint256"},{internalType:"uint256[]",name:"maxAmountsIn",type:"uint256[]"}],name:"joinPool",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"tokenIn",type:"address"},{internalType:"uint256",name:"tokenAmountIn",type:"uint256"},{internalType:"uint256",name:"minPoolAmountOut",type:"uint256"}],name:"joinswapExternAmountIn",outputs:[{internalType:"uint256",name:"poolAmountOut",type:"uint256"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"tokenIn",type:"address"},{internalType:"uint256",name:"poolAmountOut",type:"uint256"},{internalType:"uint256",name:"maxAmountIn",type:"uint256"}],name:"joinswapPoolAmountOut",outputs:[{internalType:"uint256",name:"tokenAmountIn",type:"uint256"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"balance",type:"uint256"},{internalType:"uint256",name:"denorm",type:"uint256"}],name:"rebind",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"manager",type:"address"}],name:"setController",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"bool",name:"public_",type:"bool"}],name:"setPublicSwap",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"swapFee",type:"uint256"}],name:"setSwapFee",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"tokenIn",type:"address"},{internalType:"uint256",name:"tokenAmountIn",type:"uint256"},{internalType:"address",name:"tokenOut",type:"address"},{internalType:"uint256",name:"minAmountOut",type:"uint256"},{internalType:"uint256",name:"maxPrice",type:"uint256"}],name:"swapExactAmountIn",outputs:[{internalType:"uint256",name:"tokenAmountOut",type:"uint256"},{internalType:"uint256",name:"spotPriceAfter",type:"uint256"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"tokenIn",type:"address"},{internalType:"uint256",name:"maxAmountIn",type:"uint256"},{internalType:"address",name:"tokenOut",type:"address"},{internalType:"uint256",name:"tokenAmountOut",type:"uint256"},{internalType:"uint256",name:"maxPrice",type:"uint256"}],name:"swapExactAmountOut",outputs:[{internalType:"uint256",name:"tokenAmountIn",type:"uint256"},{internalType:"uint256",name:"spotPriceAfter",type:"uint256"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"dst",type:"address"},{internalType:"uint256",name:"amt",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"src",type:"address"},{internalType:"address",name:"dst",type:"address"},{internalType:"uint256",name:"amt",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"token",type:"address"}],name:"unbind",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"}],_e=[{inputs:[{internalType:"contract IERC20",name:"_token0",type:"address"},{internalType:"contract IERC20",name:"_token1",type:"address"},{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"symbol",type:"string"},{internalType:"contract IMooniswapFactoryGovernance",name:"_mooniswapFactoryGovernance",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"decayPeriod",type:"uint256"},{indexed:!1,internalType:"bool",name:"isDefault",type:"bool"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"DecayPeriodVoteUpdate",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!0,internalType:"address",name:"receiver",type:"address"},{indexed:!1,internalType:"uint256",name:"share",type:"uint256"},{indexed:!1,internalType:"uint256",name:"token0Amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"token1Amount",type:"uint256"}],name:"Deposited",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"string",name:"reason",type:"string"}],name:"Error",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"fee",type:"uint256"},{indexed:!1,internalType:"bool",name:"isDefault",type:"bool"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"FeeVoteUpdate",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"slippageFee",type:"uint256"},{indexed:!1,internalType:"bool",name:"isDefault",type:"bool"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"SlippageFeeVoteUpdate",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!0,internalType:"address",name:"receiver",type:"address"},{indexed:!0,internalType:"address",name:"srcToken",type:"address"},{indexed:!1,internalType:"address",name:"dstToken",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"result",type:"uint256"},{indexed:!1,internalType:"uint256",name:"srcAdditionBalance",type:"uint256"},{indexed:!1,internalType:"uint256",name:"dstRemovalBalance",type:"uint256"},{indexed:!1,internalType:"address",name:"referral",type:"address"}],name:"Swapped",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"srcBalance",type:"uint256"},{indexed:!1,internalType:"uint256",name:"dstBalance",type:"uint256"},{indexed:!1,internalType:"uint256",name:"fee",type:"uint256"},{indexed:!1,internalType:"uint256",name:"slippageFee",type:"uint256"},{indexed:!1,internalType:"uint256",name:"referralShare",type:"uint256"},{indexed:!1,internalType:"uint256",name:"governanceShare",type:"uint256"}],name:"Sync",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!0,internalType:"address",name:"receiver",type:"address"},{indexed:!1,internalType:"uint256",name:"share",type:"uint256"},{indexed:!1,internalType:"uint256",name:"token0Amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"token1Amount",type:"uint256"}],name:"Withdrawn",type:"event"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decayPeriod",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"vote",type:"uint256"}],name:"decayPeriodVote",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"decayPeriodVotes",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"subtractedValue",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256[2]",name:"maxAmounts",type:"uint256[2]"},{internalType:"uint256[2]",name:"minAmounts",type:"uint256[2]"}],name:"deposit",outputs:[{internalType:"uint256",name:"fairSupply",type:"uint256"},{internalType:"uint256[2]",name:"receivedAmounts",type:"uint256[2]"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256[2]",name:"maxAmounts",type:"uint256[2]"},{internalType:"uint256[2]",name:"minAmounts",type:"uint256[2]"},{internalType:"address",name:"target",type:"address"}],name:"depositFor",outputs:[{internalType:"uint256",name:"fairSupply",type:"uint256"},{internalType:"uint256[2]",name:"receivedAmounts",type:"uint256[2]"}],stateMutability:"payable",type:"function"},{inputs:[],name:"discardDecayPeriodVote",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"discardFeeVote",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"discardSlippageFeeVote",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"fee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"vote",type:"uint256"}],name:"feeVote",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"feeVotes",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract IERC20",name:"token",type:"address"}],name:"getBalanceForAddition",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract IERC20",name:"token",type:"address"}],name:"getBalanceForRemoval",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract IERC20",name:"src",type:"address"},{internalType:"contract IERC20",name:"dst",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"getReturn",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getTokens",outputs:[{internalType:"contract IERC20[]",name:"tokens",type:"address[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"addedValue",type:"uint256"}],name:"increaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"mooniswapFactoryGovernance",outputs:[{internalType:"contract IMooniswapFactoryGovernance",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC20",name:"token",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"rescueFunds",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IMooniswapFactoryGovernance",name:"newMooniswapFactoryGovernance",type:"address"}],name:"setMooniswapFactoryGovernance",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"slippageFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"vote",type:"uint256"}],name:"slippageFeeVote",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"slippageFeeVotes",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract IERC20",name:"src",type:"address"},{internalType:"contract IERC20",name:"dst",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"minReturn",type:"uint256"},{internalType:"address",name:"referral",type:"address"}],name:"swap",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"contract IERC20",name:"src",type:"address"},{internalType:"contract IERC20",name:"dst",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"minReturn",type:"uint256"},{internalType:"address",name:"referral",type:"address"},{internalType:"address payable",name:"receiver",type:"address"}],name:"swapFor",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"payable",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"token0",outputs:[{internalType:"contract IERC20",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"token1",outputs:[{internalType:"contract IERC20",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"i",type:"uint256"}],name:"tokens",outputs:[{internalType:"contract IERC20",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC20",name:"",type:"address"}],name:"virtualBalancesForAddition",outputs:[{internalType:"uint216",name:"balance",type:"uint216"},{internalType:"uint40",name:"time",type:"uint40"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract IERC20",name:"",type:"address"}],name:"virtualBalancesForRemoval",outputs:[{internalType:"uint216",name:"balance",type:"uint216"},{internalType:"uint40",name:"time",type:"uint40"}],stateMutability:"view",type:"function"},{inputs:[],name:"virtualDecayPeriod",outputs:[{internalType:"uint104",name:"",type:"uint104"},{internalType:"uint104",name:"",type:"uint104"},{internalType:"uint48",name:"",type:"uint48"}],stateMutability:"view",type:"function"},{inputs:[],name:"virtualFee",outputs:[{internalType:"uint104",name:"",type:"uint104"},{internalType:"uint104",name:"",type:"uint104"},{internalType:"uint48",name:"",type:"uint48"}],stateMutability:"view",type:"function"},{inputs:[],name:"virtualSlippageFee",outputs:[{internalType:"uint104",name:"",type:"uint104"},{internalType:"uint104",name:"",type:"uint104"},{internalType:"uint48",name:"",type:"uint48"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract IERC20",name:"",type:"address"}],name:"volumes",outputs:[{internalType:"uint128",name:"confirmed",type:"uint128"},{internalType:"uint128",name:"result",type:"uint128"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256[]",name:"minReturns",type:"uint256[]"}],name:"withdraw",outputs:[{internalType:"uint256[2]",name:"withdrawnAmounts",type:"uint256[2]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256[]",name:"minReturns",type:"uint256[]"},{internalType:"address payable",name:"target",type:"address"}],name:"withdrawFor",outputs:[{internalType:"uint256[2]",name:"withdrawnAmounts",type:"uint256[2]"}],stateMutability:"nonpayable",type:"function"}],Le=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1",type:"uint256"},{indexed:!0,internalType:"address",name:"to",type:"address"}],name:"Burn",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1",type:"uint256"}],name:"Mint",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0In",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1In",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount0Out",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1Out",type:"uint256"},{indexed:!0,internalType:"address",name:"to",type:"address"}],name:"Swap",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint112",name:"reserve0",type:"uint112"},{indexed:!1,internalType:"uint112",name:"reserve1",type:"uint112"}],name:"Sync",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{inputs:[],name:"DOMAIN_SEPARATOR",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"MINIMUM_LIQUIDITY",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"PERMIT_TYPEHASH",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"}],name:"burn",outputs:[{internalType:"uint256",name:"amount0",type:"uint256"},{internalType:"uint256",name:"amount1",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[],name:"factory",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getReserves",outputs:[{internalType:"uint112",name:"_reserve0",type:"uint112"},{internalType:"uint112",name:"_reserve1",type:"uint112"},{internalType:"uint32",name:"_blockTimestampLast",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_token0",type:"address"},{internalType:"address",name:"_token1",type:"address"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"kLast",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"}],name:"mint",outputs:[{internalType:"uint256",name:"liquidity",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"nonces",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"value",type:"uint256"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"}],name:"permit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"price0CumulativeLast",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"price1CumulativeLast",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"}],name:"skim",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount0Out",type:"uint256"},{internalType:"uint256",name:"amount1Out",type:"uint256"},{internalType:"address",name:"to",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"swap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"sync",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"token0",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"token1",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}],je=[{inputs:[{internalType:"contract SushiToken",name:"_sushi",type:"address"},{internalType:"address",name:"_devaddr",type:"address"},{internalType:"uint256",name:"_sushiPerBlock",type:"uint256"},{internalType:"uint256",name:"_startBlock",type:"uint256"},{internalType:"uint256",name:"_bonusEndBlock",type:"uint256"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"pid",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Deposit",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"pid",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"EmergencyWithdraw",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"pid",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Withdraw",type:"event"},{inputs:[],name:"BONUS_MULTIPLIER",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_allocPoint",type:"uint256"},{internalType:"contract IERC20",name:"_lpToken",type:"address"},{internalType:"bool",name:"_withUpdate",type:"bool"}],name:"add",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"bonusEndBlock",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"},{internalType:"uint256",name:"_amount",type:"uint256"}],name:"deposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_devaddr",type:"address"}],name:"dev",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"devaddr",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"}],name:"emergencyWithdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_from",type:"uint256"},{internalType:"uint256",name:"_to",type:"uint256"}],name:"getMultiplier",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"massUpdatePools",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"}],name:"migrate",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"migrator",outputs:[{internalType:"contract IMigratorChef",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"},{internalType:"address",name:"_user",type:"address"}],name:"pendingSushi",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"poolInfo",outputs:[{internalType:"contract IERC20",name:"lpToken",type:"address"},{internalType:"uint256",name:"allocPoint",type:"uint256"},{internalType:"uint256",name:"lastRewardBlock",type:"uint256"},{internalType:"uint256",name:"accSushiPerShare",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"poolLength",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"},{internalType:"uint256",name:"_allocPoint",type:"uint256"},{internalType:"bool",name:"_withUpdate",type:"bool"}],name:"set",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IMigratorChef",name:"_migrator",type:"address"}],name:"setMigrator",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"startBlock",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"sushi",outputs:[{internalType:"contract SushiToken",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"sushiPerBlock",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalAllocPoint",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"}],name:"updatePool",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],name:"userInfo",outputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"rewardDebt",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"},{internalType:"uint256",name:"_amount",type:"uint256"}],name:"withdraw",outputs:[],stateMutability:"nonpayable",type:"function"}],Re=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1",type:"uint256"},{indexed:!0,internalType:"address",name:"to",type:"address"}],name:"Burn",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1",type:"uint256"}],name:"Mint",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0In",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1In",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount0Out",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1Out",type:"uint256"},{indexed:!0,internalType:"address",name:"to",type:"address"}],name:"Swap",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint112",name:"reserve0",type:"uint112"},{indexed:!1,internalType:"uint112",name:"reserve1",type:"uint112"}],name:"Sync",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{inputs:[],name:"DOMAIN_SEPARATOR",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"MINIMUM_LIQUIDITY",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"PERMIT_TYPEHASH",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"}],name:"burn",outputs:[{internalType:"uint256",name:"amount0",type:"uint256"},{internalType:"uint256",name:"amount1",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[],name:"factory",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getReserves",outputs:[{internalType:"uint112",name:"_reserve0",type:"uint112"},{internalType:"uint112",name:"_reserve1",type:"uint112"},{internalType:"uint32",name:"_blockTimestampLast",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_token0",type:"address"},{internalType:"address",name:"_token1",type:"address"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"kLast",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"}],name:"mint",outputs:[{internalType:"uint256",name:"liquidity",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"nonces",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"value",type:"uint256"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"}],name:"permit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"price0CumulativeLast",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"price1CumulativeLast",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"}],name:"skim",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount0Out",type:"uint256"},{internalType:"uint256",name:"amount1Out",type:"uint256"},{internalType:"address",name:"to",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"swap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"sync",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"token0",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"token1",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}],Fe=[{inputs:[{internalType:"contract Unic",name:"_unic",type:"address"},{internalType:"address",name:"_devaddr",type:"address"},{internalType:"uint256",name:"_mintRateMultiplier",type:"uint256"},{internalType:"uint256",name:"_mintRateDivider",type:"uint256"},{internalType:"uint256",name:"_unicPerBlock",type:"uint256"},{internalType:"uint256",name:"_startBlock",type:"uint256"},{internalType:"uint256",name:"_blocksPerTranche",type:"uint256"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"allocPoint",type:"uint256"},{indexed:!1,internalType:"address",name:"lpToken",type:"address"},{indexed:!1,internalType:"bool",name:"withUpdate",type:"bool"}],name:"Add",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"pid",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Deposit",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"devaddr",type:"address"}],name:"Dev",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"pid",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"EmergencyWithdraw",type:"event"},{anonymous:!1,inputs:[],name:"MassUpdatePools",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"pid",type:"uint256"},{indexed:!1,internalType:"uint256",name:"allocPoint",type:"uint256"},{indexed:!1,internalType:"bool",name:"withUpdate",type:"bool"}],name:"Set",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"pid",type:"uint256"}],name:"UpdatePool",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"pid",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Withdraw",type:"event"},{inputs:[{internalType:"uint256",name:"_allocPoint",type:"uint256"},{internalType:"contract IERC20",name:"_lpToken",type:"address"},{internalType:"bool",name:"_withUpdate",type:"bool"},{internalType:"address",name:"_uToken",type:"address"}],name:"add",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"blocksPerTranche",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"},{internalType:"uint256",name:"_amount",type:"uint256"}],name:"deposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_devaddr",type:"address"}],name:"dev",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"devaddr",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"}],name:"emergencyWithdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_from",type:"uint256"},{internalType:"uint256",name:"_to",type:"uint256"}],name:"getRewards",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"massUpdatePools",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"mintRateDivider",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"mintRateMultiplier",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"},{internalType:"address",name:"_user",type:"address"}],name:"pendingUnic",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"poolInfo",outputs:[{internalType:"contract IERC20",name:"lpToken",type:"address"},{internalType:"uint256",name:"allocPoint",type:"uint256"},{internalType:"uint256",name:"lastRewardBlock",type:"uint256"},{internalType:"uint256",name:"accUnicPerShare",type:"uint256"},{internalType:"address",name:"uToken",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"poolLength",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"},{internalType:"uint256",name:"_allocPoint",type:"uint256"},{internalType:"bool",name:"_withUpdate",type:"bool"}],name:"set",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_mintRateMultiplier",type:"uint256"},{internalType:"uint256",name:"_mintRateDivider",type:"uint256"},{internalType:"uint256",name:"_unicPerBlock",type:"uint256"},{internalType:"uint256",name:"_blocksPerTranche",type:"uint256"}],name:"setMintRules",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_startBlock",type:"uint256"}],name:"setStartBlock",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"startBlock",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalAllocPoint",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"tranche",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"unic",outputs:[{internalType:"contract Unic",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"unicPerBlock",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"}],name:"updatePool",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],name:"userInfo",outputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"rewardDebt",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"whitelist",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"},{internalType:"uint256",name:"_amount",type:"uint256"}],name:"withdraw",outputs:[],stateMutability:"nonpayable",type:"function"}],We=[{inputs:[{internalType:"contract Mooniswap",name:"_mooniswap",type:"address"},{internalType:"contract IERC20",name:"_gift",type:"address"},{internalType:"uint256",name:"_duration",type:"uint256"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"decayPeriod",type:"uint256"},{indexed:!1,internalType:"bool",name:"isDefault",type:"bool"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"DecayPeriodVoteUpdate",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"fee",type:"uint256"},{indexed:!1,internalType:"bool",name:"isDefault",type:"bool"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"FeeVoteUpdate",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"reward",type:"uint256"}],name:"RewardAdded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"reward",type:"uint256"}],name:"RewardPaid",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"slippageFee",type:"uint256"},{indexed:!1,internalType:"bool",name:"isDefault",type:"bool"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"SlippageFeeVoteUpdate",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Staked",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Withdrawn",type:"event"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decayPeriod",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"vote",type:"uint256"}],name:"decayPeriodVote",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"decayPeriodVotes",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[],name:"discardDecayPeriodVote",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"discardFeeVote",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"discardSlippageFeeVote",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"duration",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"earned",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"exit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"fee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"vote",type:"uint256"}],name:"feeVote",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"feeVotes",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getReward",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"gift",outputs:[{internalType:"contract IERC20",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"lastTimeRewardApplicable",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"lastUpdateTime",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"mooniswap",outputs:[{internalType:"contract Mooniswap",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"mooniswapFactoryGovernance",outputs:[{internalType:"contract IMooniswapFactoryGovernance",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"reward",type:"uint256"}],name:"notifyRewardAmount",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"periodFinish",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC20",name:"token",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"rescueFunds",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"rewardDistribution",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"rewardPerToken",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"rewardPerTokenStored",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"rewardRate",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"rewards",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_rewardDistribution",type:"address"}],name:"setRewardDistribution",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"slippageFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"vote",type:"uint256"}],name:"slippageFeeVote",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"slippageFeeVotes",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"stake",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"userRewardPerTokenPaid",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"withdraw",outputs:[],stateMutability:"nonpayable",type:"function"}],Ue="BALANCER",Ne="UNISWAP",He="SUSHISWAP",Ge="ONEINCH",Ve="UJENNY",qe="0x0000000000000000000000000000000000000000";function Je(e,t,n,a,i){return Ye.apply(this,arguments)}function Ye(){return(Ye=Object(d.a)(l.a.mark((function e(t,n,a,i,u){return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:e.t0=n,e.next=e.t0===Ue?3:e.t0===Ne?4:e.t0===He?5:e.t0===Ge?6:e.t0===Ve?7:8;break;case 3:return e.abrupt("return",Xe(t,a,i));case 4:return e.abrupt("return",Ke(t,a,i));case 5:return e.abrupt("return",et(t,a,u||"",i));case 6:return e.abrupt("return",ut(t,a,u||"",i));case 7:return e.abrupt("return",ot(t,a,u||"",i));case 8:throw new Error("lpPositionStatus: Pool ".concat(n," not recognized"));case 9:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function ze(e,t,n,a,i,u,p,s,r){var y={PoolAddress:e,TotalLPSupply:M(n,i),HolderAddress:x(t)?t:"Not Given",HolderLPBalance:M(a,i)};return x(p)&&(y.FarmAddress=p,y.HolderLPBalanceThroughFarm=M(n.multipliedBy(s),i),y.UnclaimedReward=r),y.PositionValue=u,y}function Xe(e,t,n){return Qe.apply(this,arguments)}function Qe(){return(Qe=Object(d.a)(l.a.mark((function e(t,n,a){var i,u,p,s,r,y,o,d,m,b,T;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=v(n,De,a),u=[i.methods.totalSupply().call(),i.methods.decimals().call(),i.methods.getFinalTokens().call()],x(t)&&u.push(i.methods.balanceOf(t).call()),e.next=5,Promise.all(u);case 5:return p=e.sent,s=new c.a(p[0]),r=new c.a(x(t)?p[3]:t),y=p[1],o=r.dividedBy(s),d=[],p[2].map((function(e){d.push(w(e,ye,a)),d.push(i.methods.getBalance(e).call())})),e.next=14,Promise.all(d);case 14:for(m=e.sent,b=[],T=0;T0&&"1"===o.status&&o.result&&o.result.length>0)){e.next=26;break}if(""===y.result[0].to&&y.result[0].input.length>20&&(p.DeployedDaysAgo=V(y.result[0].timeStamp)),!L.a.some(y.result,(function(e){return""!==e.to&&e.to!==i.toLowerCase()}))&&!L.a.some(y.result,(function(e){return""!==e.to&&e.to!==i.toLowerCase()}))){e.next=17;break}throw new Error("Address is not destination of all transactions, is this a contract?");case 17:y.result.length<1e4&&o.result.length<1e4?(p.NumTx=y.result.length,p.NumTxHaveMore=!1):(p.NumTx=1e4,p.NumTxHaveMore=!0),y.result.length>100&&(p.Tx100DaysAgo=V(y.result[100].timeStamp)),y.result.length>1e3&&(p.Tx1000DaysAgo=V(y.result[1e3].timeStamp)),d=q()-86400,p.NumTxInLast24Hours=L.a.reduce(o.result,(function(e,t){return e+(parseInt(t.timeStamp)>d?1:0)}),0),p.EthSpentOnGas=L.a.reduce(o.result,(function(e,t){return e+parseInt(t.gasUsed)*(parseInt(t.gasPrice)/1e18)}),0),p.DifferentAddresses=L.a.uniqBy(o.result,(function(e){return e.from.toLowerCase()})).length,p.EthSpentOnGas=Math.round(1e3*p.EthSpentOnGas)/1e3,s&&(p.TxStats=ee(s,o.result));case 26:if(!u||!s){e.next=32;break}return e.next=29,te(n,a,s,u);case 29:p.MethodCall=e.sent,e.next=33;break;case 32:delete p.MethodCall;case 33:return e.abrupt("return",p);case 34:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function $(e){return Z.apply(this,arguments)}function Z(){return(Z=Object(d.a)(l.a.mark((function e(t){var n,a,i,u,p;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.web3,a=t.ethscn,i=t.hexData,u={MethodCall:{}},p=[{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}],e.next=5,te(n,a,p,i);case 5:return u.MethodCall=e.sent,e.abrupt("return",u);case 7:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function ee(e,t){var n,a=0,i={},u=new W.a(e),p=Object(D.a)(t);try{for(p.s();!(n=p.n()).done;){var s=n.value,r=u.decodeData(s.input);if(r.method&&(i[r.method]||(i[r.method]=0),i[r.method]++,++a>1e3))break}}catch(y){p.e(y)}finally{p.f()}return L.a.mapValues(i,(function(e){return Math.round(1e4*e/a)/100}))}function te(e,t,n,a){return ne.apply(this,arguments)}function ne(){return(ne=Object(d.a)(l.a.mark((function e(t,n,a,i){var u,p,s,r,y,o,d,m;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:u=new W.a(a),p=u.decodeData(i),s={Method:p.method,Args:[]},r=0;case 4:if(!(r20);case 4:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var ue=function(){var e=O(),t=e.web3,n=e.ethscn,u=Object(a.useState)({}),p=Object(C.a)(u,2),s=p[0],r=p[1],y=Object(a.useState)(),o=Object(C.a)(y,2),m=o[0],c=o[1],b=Object(a.useState)(!1),T=Object(C.a)(b,2),f=T[0],v=T[1],w=function(e,t){var n=t.name,a=t.value;return r(Object(E.a)(Object(E.a)({},s),{},Object(S.a)({},n,a)))},h=function(){var e=Object(d.a)(l.a.mark((function e(){var a,i,u;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=s.address,i=s.hexData,v(!0),e.next=4,Q({web3:t,ethscn:n,address:a,hexData:i});case 4:u=e.sent,c(u),v(!1);case 7:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();return i.a.createElement("div",null,i.a.createElement("h2",null,"Check Contract (Anti-Phishing)"),i.a.createElement("br",null),i.a.createElement(B.a,{textAlign:"left"},i.a.createElement(I.a,{textAlign:"left",secondary:!0,style:{width:"50vw",margin:"auto"}},i.a.createElement(P.a,{loading:f,onSubmit:h,spellcheck:"false"},i.a.createElement(P.a.Input,{label:"Contract Address",name:"address",placeholder:"0xbD17B1ce622d73bD438b9E658acA5996dc394b0d",onChange:w}),i.a.createElement(P.a.TextArea,{label:"Method Call Hex Data",name:"hexData",placeholder:"0x095ea7b3000000000000000000000000...",onChange:w}),i.a.createElement(P.a.Button,{primary:!0},"Submit"))),i.a.createElement("pre",null,JSON.stringify(m,null,2))))};var pe=function(){var e=O(),t=e.web3,n=e.ethscn,u=Object(a.useState)({}),p=Object(C.a)(u,2),s=p[0],r=p[1],y=Object(a.useState)(),o=Object(C.a)(y,2),m=o[0],c=o[1],b=Object(a.useState)(!1),T=Object(C.a)(b,2),f=T[0],v=T[1],w=function(){var e=Object(d.a)(l.a.mark((function e(){var a,i;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=s.hexData,v(!0),e.next=4,$({web3:t,ethscn:n,hexData:a});case 4:i=e.sent,c(i),v(!1);case 7:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();return i.a.createElement("div",null,i.a.createElement("h2",null,"Check Approve (Anti-Phishing)"),i.a.createElement("br",null),i.a.createElement(B.a,{textAlign:"left"},i.a.createElement(I.a,{textAlign:"left",secondary:!0,style:{width:"50vw",margin:"auto"}},i.a.createElement(P.a,{loading:f,onSubmit:w,spellcheck:"false"},i.a.createElement(P.a.TextArea,{label:"Method Call Hex Data",name:"hexData",placeholder:"0x095ea7b3000000000000000000000000...",onChange:function(e,t){var n=t.name,a=t.value;return r(Object(E.a)(Object(E.a)({},s),{},Object(S.a)({},n,a)))}}),i.a.createElement(P.a.Button,{primary:!0},"Submit"))),i.a.createElement("pre",null,JSON.stringify(m,null,2))))},se=n(104),re=[{inputs:[],payable:!1,stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1",type:"uint256"},{indexed:!0,internalType:"address",name:"to",type:"address"}],name:"Burn",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1",type:"uint256"}],name:"Mint",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0In",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1In",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount0Out",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1Out",type:"uint256"},{indexed:!0,internalType:"address",name:"to",type:"address"}],name:"Swap",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint112",name:"reserve0",type:"uint112"},{indexed:!1,internalType:"uint112",name:"reserve1",type:"uint112"}],name:"Sync",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{constant:!0,inputs:[],name:"DOMAIN_SEPARATOR",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MINIMUM_LIQUIDITY",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"PERMIT_TYPEHASH",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"to",type:"address"}],name:"burn",outputs:[{internalType:"uint256",name:"amount0",type:"uint256"},{internalType:"uint256",name:"amount1",type:"uint256"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"factory",outputs:[{internalType:"address",name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getReserves",outputs:[{internalType:"uint112",name:"_reserve0",type:"uint112"},{internalType:"uint112",name:"_reserve1",type:"uint112"},{internalType:"uint32",name:"_blockTimestampLast",type:"uint32"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"_token0",type:"address"},{internalType:"address",name:"_token1",type:"address"}],name:"initialize",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"kLast",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"to",type:"address"}],name:"mint",outputs:[{internalType:"uint256",name:"liquidity",type:"uint256"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"",type:"address"}],name:"nonces",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"value",type:"uint256"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"}],name:"permit",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"price0CumulativeLast",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"price1CumulativeLast",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"to",type:"address"}],name:"skim",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"amount0Out",type:"uint256"},{internalType:"uint256",name:"amount1Out",type:"uint256"},{internalType:"address",name:"to",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"swap",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[],name:"sync",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"token0",outputs:[{internalType:"address",name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"token1",outputs:[{internalType:"address",name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"}],ye=[{constant:!0,inputs:[],name:"name",outputs:[{name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"guy",type:"address"},{name:"wad",type:"uint256"}],name:"approve",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"totalSupply",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"src",type:"address"},{name:"dst",type:"address"},{name:"wad",type:"uint256"}],name:"transferFrom",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{name:"wad",type:"uint256"}],name:"withdraw",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"decimals",outputs:[{name:"",type:"uint8"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{name:"",type:"address"}],name:"balanceOf",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"symbol",outputs:[{name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"dst",type:"address"},{name:"wad",type:"uint256"}],name:"transfer",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[],name:"deposit",outputs:[],payable:!0,stateMutability:"payable",type:"function"},{constant:!0,inputs:[{name:"",type:"address"},{name:"",type:"address"}],name:"allowance",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{payable:!0,stateMutability:"payable",type:"fallback"},{anonymous:!1,inputs:[{indexed:!0,name:"src",type:"address"},{indexed:!0,name:"guy",type:"address"},{indexed:!1,name:"wad",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"src",type:"address"},{indexed:!0,name:"dst",type:"address"},{indexed:!1,name:"wad",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"dst",type:"address"},{indexed:!1,name:"wad",type:"uint256"}],name:"Deposit",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"src",type:"address"},{indexed:!1,name:"wad",type:"uint256"}],name:"Withdrawal",type:"event"}],oe="0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f",le="0xdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496";function de(e){return me.apply(this,arguments)}function me(){return(me=Object(d.a)(l.a.mark((function e(t){var n,a,i,u,p,s,r,y,o,d,m,b,T,f,v,w,h,M,x,g,O,A,S,E,C,B,I,P,_,j,R,F;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=t.web3,u=t.fromBlock,p=t.toBlock,s=t.pair,r=t.lp,y={Tokens:[],LiquidityChanges:[],SumLpTokens:new c.a(0),SumTokenDeposits:[new c.a(0),new c.a(0)],AvailableTokensToWithdraw:[void 0,void 0],TotalWorth:{},AvailableAfterRebalance:[]},u||(u=0),p||(p="latest"),u=parseInt(u),"latest"!==p&&(p=parseInt(p)),o=new i.eth.Contract(re,s),e.next=9,Te(o,i);case 9:return d=e.sent,y.Tokens[0]=d[0],y.Tokens[1]=d[1],e.next=14,o.getPastEvents("Transfer",{filter:{from:"0x0000000000000000000000000000000000000000",to:r},fromBlock:u,toBlock:p});case 14:return m=e.sent,(n=y.LiquidityChanges).push.apply(n,Object(se.a)(m.map((function(e){var t=e.transactionHash,n=e.blockNumber,a=e.returnValues;return{BlockNumber:n,TxHash:t,LpTokenDelta:new c.a(a.value).dividedBy("1e18"),SumLpTokensAfter:void 0,TokenDepositDelta:[]}})))),e.next=18,o.getPastEvents("Transfer",{filter:{from:r,to:s},fromBlock:u,toBlock:p});case 18:b=e.sent,(a=y.LiquidityChanges).push.apply(a,Object(se.a)(b.map((function(e){var t=e.transactionHash,n=e.blockNumber,a=e.returnValues;return{BlockNumber:n,TxHash:t,LpTokenDelta:new c.a(a.value).dividedBy("1e18").negated(),SumLpTokensAfter:void 0,TokenDepositDelta:[]}})))),y.LiquidityChanges.sort((function(e,t){return e.BlockNumber-t.BlockNumber})),T=Object(D.a)(y.LiquidityChanges),e.prev=22,T.s();case 24:if((f=T.n()).done){e.next=35;break}return v=f.value,e.next=28,H(200);case 28:return e.next=30,i.eth.getTransactionReceipt(v.TxHash);case 30:w=e.sent,h=Object(D.a)(w.logs);try{for(h.s();!(M=h.n()).done;)(x=M.value).topics[0].toLowerCase()===oe&&(g=L.a.find(re,(function(e){return"Mint"===e.name})).inputs,O=i.eth.abi.decodeLog(g,x.data,L.a.drop(x.topics,1)),v.TokenDepositDelta[0]=k(O.amount0,y.Tokens[0]),v.TokenDepositDelta[1]=k(O.amount1,y.Tokens[1])),x.topics[0].toLowerCase()===le&&(A=L.a.find(re,(function(e){return"Burn"===e.name})).inputs,S=i.eth.abi.decodeLog(A,x.data,L.a.drop(x.topics,1)),v.TokenDepositDelta[0]=k(S.amount0,y.Tokens[0]).negated(),v.TokenDepositDelta[1]=k(S.amount1,y.Tokens[1]).negated())}catch(l){h.e(l)}finally{h.f()}case 33:e.next=24;break;case 35:e.next=40;break;case 37:e.prev=37,e.t0=e.catch(22),T.e(e.t0);case 40:return e.prev=40,T.f(),e.finish(40);case 43:E=Object(D.a)(y.LiquidityChanges);try{for(E.s();!(C=E.n()).done;)B=C.value,y.SumLpTokens=y.SumLpTokens.plus(B.LpTokenDelta),B.SumLpTokensAfter=new c.a(y.SumLpTokens),y.SumTokenDeposits[0]=y.SumTokenDeposits[0].plus(B.TokenDepositDelta[0]),y.SumTokenDeposits[1]=y.SumTokenDeposits[1].plus(B.TokenDepositDelta[1])}catch(l){E.e(l)}finally{E.f()}return e.next=47,o.methods.totalSupply().call();case 47:return I=e.sent,P=new c.a(I).dividedBy("1e18"),_=y.SumLpTokens.dividedBy(P),e.next=52,o.methods.getReserves().call();case 52:return j=e.sent,R=k(j._reserve0,y.Tokens[0]),F=k(j._reserve1,y.Tokens[1]),y.AvailableTokensToWithdraw[0]=R.multipliedBy(_),y.AvailableTokensToWithdraw[1]=F.multipliedBy(_),y.TotalWorth.SumTokenDeposits={CurrentPriceUSD:ce(y.SumTokenDeposits,y.Tokens,"CurrentPriceUSD"),CurrentPriceBTC:ce(y.SumTokenDeposits,y.Tokens,"CurrentPriceBTC"),CurrentPriceETH:ce(y.SumTokenDeposits,y.Tokens,"CurrentPriceETH")},y.TotalWorth.AvailableTokensToWithdraw={CurrentPriceUSD:ce(y.AvailableTokensToWithdraw,y.Tokens,"CurrentPriceUSD"),CurrentPriceBTC:ce(y.AvailableTokensToWithdraw,y.Tokens,"CurrentPriceBTC"),CurrentPriceETH:ce(y.AvailableTokensToWithdraw,y.Tokens,"CurrentPriceETH")},y.AvailableAfterRebalance[0]=be(y.AvailableTokensToWithdraw,y.Tokens,0,y.SumTokenDeposits[0]),y.AvailableAfterRebalance[1]=be(y.AvailableTokensToWithdraw,y.Tokens,1,y.SumTokenDeposits[1]),e.abrupt("return",y);case 62:case"end":return e.stop()}}),e,null,[[22,37,40,43]])})))).apply(this,arguments)}function ce(e,t,n){var a=e[0].multipliedBy(t[0][n]),i=e[1].multipliedBy(t[1][n]);return a.plus(i)}function be(e,t,n,a){var i=[];i[n]=new c.a(a);var u=e[n].minus(i[n]).dividedBy(t[1-n].CurrentPriceUSD).multipliedBy(t[n].CurrentPriceUSD);return i[1-n]=e[1-n].plus(u),i}function Te(e,t){return fe.apply(this,arguments)}function fe(){return(fe=Object(d.a)(l.a.mark((function e(t,n){var a,i,u,p;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=[t.methods.token0().call(),t.methods.token1().call()],e.next=3,Promise.all(a);case 3:return i=e.sent,u=[w(i[0],ye,n),w(i[1],ye,n),J("https://api.coingecko.com/api/v3/coins/ethereum/contract/".concat(i[0])),J("https://api.coingecko.com/api/v3/coins/ethereum/contract/".concat(i[1]))],e.next=7,Promise.all(u);case 7:return p=e.sent,e.abrupt("return",[ve(p[0],p[2]),ve(p[1],p[3])]);case 9:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function ve(e,t){return e.CurrentPriceUSD=new c.a(t.market_data.current_price.usd),e.CurrentPriceBTC=new c.a(t.market_data.current_price.btc),e.CurrentPriceETH=new c.a(t.market_data.current_price.eth),e}var we=function(){var e=O().web3,t=Object(a.useState)({}),n=Object(C.a)(t,2),u=n[0],p=n[1],s=Object(a.useState)(),r=Object(C.a)(s,2),y=r[0],o=r[1],m=Object(a.useState)(!1),c=Object(C.a)(m,2),b=c[0],T=c[1],f=function(e,t){var n=t.name,a=t.value;return p(Object(E.a)(Object(E.a)({},u),{},Object(S.a)({},n,a)))},v=function(){var t=Object(d.a)(l.a.mark((function t(){var n,a,i,p,s;return l.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=u.fromBlock,a=u.toBlock,i=u.pair,p=u.lp,T(!0),t.next=4,de({web3:e,fromBlock:n,toBlock:a,pair:i,lp:p});case 4:s=t.sent,o(s),T(!1);case 7:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}();return i.a.createElement("div",null,i.a.createElement("h2",null,"Uniswap Impermanent Loss"),i.a.createElement("br",null),i.a.createElement(B.a,{textAlign:"left"},i.a.createElement(I.a,{textAlign:"left",secondary:!0,style:{width:"50vw",margin:"auto"}},i.a.createElement(P.a,{loading:b,onSubmit:v,spellcheck:"false"},i.a.createElement(P.a.Input,{label:"Uniswap Pair Contract Address",name:"pair",placeholder:"0x0d4a11d5EEaaC28EC3F61d100daF4d40471f1852",onChange:f}),i.a.createElement(P.a.Input,{label:"Liquidity Provider Wallet Address",name:"lp",placeholder:"0x533D94255aDABE5F9AC7d6755ebCe1e93a00AfC7",onChange:f}),i.a.createElement(P.a.Group,{widths:"equal"},i.a.createElement(P.a.Input,{fluid:!0,label:"From Block",name:"fromBlock",value:"0",onChange:f}),i.a.createElement(P.a.Input,{fluid:!0,label:"To Block",name:"toBlock",value:"latest",onChange:f})),i.a.createElement(P.a.Button,{primary:!0},"Submit"))),i.a.createElement("pre",null,JSON.stringify(y,null,2))))};function he(e){var t=e.amount,n=e.apy,a=e.days,i=e.cpCost,u=e.cpRateMinutes,p=Me({amount:t=parseFloat(t),apy:n=parseFloat(n),days:a=parseFloat(a),cpCost:i=parseFloat(i),cpRateMinutes:u=parseFloat(u)});return p.RecommendedMinutes=function(e){for(var t=e.amount,n=e.apy,a=e.days,i=e.cpCost,u=e.maxMin,p=0,s=0,r=u/1e5,y=.1;yp&&(p=o.CompoundingProfit,s=y)}return s}({amount:t,apy:n,days:a,cpCost:i,maxMin:10080}),p}function Me(e){var t=e.amount,n=e.apy,a=e.days,i=e.cpCost,u=e.cpRateMinutes,p={ResultWithoutCompound:0,ResultWithCompound:0,CompoundingProfit:0,CompoundingProfitPercent:0};p.ResultWithoutCompound=t+t*n/100*a/365;for(var s=t,r=0;r+u<24*a*60;)r+=u,s+=s*n/100*u/24/60/365,s-=i;return s+=s*n/100*(24*a*60-r)/24/60/365,p.ResultWithCompound=s,p.CompoundingProfit=p.ResultWithCompound-p.ResultWithoutCompound,p.CompoundingProfitPercent=p.CompoundingProfit/p.ResultWithoutCompound*100,p}var ke=function(){var e=Object(a.useState)({}),t=Object(C.a)(e,2),n=t[0],u=t[1],p=Object(a.useState)(),s=Object(C.a)(p,2),r=s[0],y=s[1],o=Object(a.useState)(!1),l=Object(C.a)(o,2),d=l[0],m=l[1],c=function(e,t){var a=t.name,i=t.value;return u(Object(E.a)(Object(E.a)({},n),{},Object(S.a)({},a,i)))};return i.a.createElement("div",null,i.a.createElement("h2",null,"Compounding Profit Calculator"),i.a.createElement("br",null),i.a.createElement(B.a,{textAlign:"left"},i.a.createElement(I.a,{textAlign:"left",secondary:!0,style:{width:"50vw",margin:"auto"}},i.a.createElement(P.a,{loading:d,onSubmit:function(){var e=n.amount,t=n.apy,a=n.days,i=n.cpCost,u=n.cpRateMinutes;m(!0);var p=he({amount:e,apy:t,days:a,cpCost:i,cpRateMinutes:u});y(p),m(!1)},spellcheck:"false"},i.a.createElement(P.a.Input,{label:"Initial Amount (in tokens)",name:"amount",placeholder:"100000",onChange:c}),i.a.createElement(P.a.Group,{widths:"equal"},i.a.createElement(P.a.Input,{fluid:!0,label:"APY (%)",name:"apy",placeholder:"30",onChange:c}),i.a.createElement(P.a.Input,{fluid:!0,label:"Num Days Investing",name:"days",placeholder:"7",onChange:c})),i.a.createElement(P.a.Group,{widths:"equal"},i.a.createElement(P.a.Input,{fluid:!0,label:"Cost of Compound Operation (in tokens)",name:"cpCost",placeholder:"1",onChange:c}),i.a.createElement(P.a.Input,{fluid:!0,label:"Minutes Between Compounds",name:"cpRateMinutes",placeholder:"60",onChange:c})),i.a.createElement(P.a.Button,{primary:!0},"Submit"))),i.a.createElement("pre",null,JSON.stringify(r,null,2))))},xe=[{inputs:[],payable:!1,stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1",type:"uint256"},{indexed:!0,internalType:"address",name:"to",type:"address"}],name:"Burn",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1",type:"uint256"}],name:"Mint",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0In",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1In",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount0Out",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1Out",type:"uint256"},{indexed:!0,internalType:"address",name:"to",type:"address"}],name:"Swap",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint112",name:"reserve0",type:"uint112"},{indexed:!1,internalType:"uint112",name:"reserve1",type:"uint112"}],name:"Sync",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{constant:!0,inputs:[],name:"DOMAIN_SEPARATOR",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MINIMUM_LIQUIDITY",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"PERMIT_TYPEHASH",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"to",type:"address"}],name:"burn",outputs:[{internalType:"uint256",name:"amount0",type:"uint256"},{internalType:"uint256",name:"amount1",type:"uint256"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"factory",outputs:[{internalType:"address",name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getReserves",outputs:[{internalType:"uint112",name:"_reserve0",type:"uint112"},{internalType:"uint112",name:"_reserve1",type:"uint112"},{internalType:"uint32",name:"_blockTimestampLast",type:"uint32"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"_token0",type:"address"},{internalType:"address",name:"_token1",type:"address"}],name:"initialize",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"kLast",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"to",type:"address"}],name:"mint",outputs:[{internalType:"uint256",name:"liquidity",type:"uint256"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"",type:"address"}],name:"nonces",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"value",type:"uint256"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"}],name:"permit",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"price0CumulativeLast",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"price1CumulativeLast",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"to",type:"address"}],name:"skim",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"amount0Out",type:"uint256"},{internalType:"uint256",name:"amount1Out",type:"uint256"},{internalType:"address",name:"to",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"swap",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[],name:"sync",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"token0",outputs:[{internalType:"address",name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"token1",outputs:[{internalType:"address",name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"}],ge=[{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{constant:!0,inputs:[{internalType:"address",name:"_owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getOwner",outputs:[{internalType:"address",name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"}];function Oe(e){return Ae.apply(this,arguments)}function Ae(){return(Ae=Object(d.a)(l.a.mark((function e(t){var n,a,i,u,p,s,r,y,o,d,m,b,T,f,v,w,h,M,x,g,O,A,S,E,C,B,I,P,_,j,R,F;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=t.bscWeb3,u=t.fromBlock,p=t.toBlock,s=t.pair,r=t.lp,y={Tokens:[],LiquidityChanges:[],SumLpTokens:new c.a(0),SumTokenDeposits:[new c.a(0),new c.a(0)],AvailableTokensToWithdraw:[void 0,void 0],TotalWorth:{},AvailableAfterRebalance:[]},u||(u=0),p||(p="latest"),u=parseInt(u),"latest"!==p&&(p=parseInt(p)),o=new i.eth.Contract(xe,s),e.next=9,Ce(o,i);case 9:return d=e.sent,y.Tokens[0]=d[0],y.Tokens[1]=d[1],e.next=14,o.getPastEvents("Transfer",{filter:{from:"0x0000000000000000000000000000000000000000",to:r},fromBlock:u,toBlock:p});case 14:return m=e.sent,(n=y.LiquidityChanges).push.apply(n,Object(se.a)(m.map((function(e){var t=e.transactionHash,n=e.blockNumber,a=e.returnValues;return{BlockNumber:n,TxHash:t,LpTokenDelta:new c.a(a.value).dividedBy("1e18"),SumLpTokensAfter:void 0,TokenDepositDelta:[]}})))),e.next=18,o.getPastEvents("Transfer",{filter:{from:r,to:s},fromBlock:u,toBlock:p});case 18:b=e.sent,(a=y.LiquidityChanges).push.apply(a,Object(se.a)(b.map((function(e){var t=e.transactionHash,n=e.blockNumber,a=e.returnValues;return{BlockNumber:n,TxHash:t,LpTokenDelta:new c.a(a.value).dividedBy("1e18").negated(),SumLpTokensAfter:void 0,TokenDepositDelta:[]}})))),y.LiquidityChanges.sort((function(e,t){return e.BlockNumber-t.BlockNumber})),T=Object(D.a)(y.LiquidityChanges),e.prev=22,T.s();case 24:if((f=T.n()).done){e.next=33;break}return v=f.value,e.next=28,i.eth.getTransactionReceipt(v.TxHash);case 28:w=e.sent,h=Object(D.a)(w.logs);try{for(h.s();!(M=h.n()).done;)"0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f"===(x=M.value).topics[0].toLowerCase()&&(g=L.a.find(xe,(function(e){return"Mint"===e.name})).inputs,O=i.eth.abi.decodeLog(g,x.data,L.a.drop(x.topics,1)),v.TokenDepositDelta[0]=k(O.amount0,y.Tokens[0]),v.TokenDepositDelta[1]=k(O.amount1,y.Tokens[1])),"0xdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496"===x.topics[0].toLowerCase()&&(A=L.a.find(xe,(function(e){return"Burn"===e.name})).inputs,S=i.eth.abi.decodeLog(A,x.data,L.a.drop(x.topics,1)),v.TokenDepositDelta[0]=k(S.amount0,y.Tokens[0]).negated(),v.TokenDepositDelta[1]=k(S.amount1,y.Tokens[1]).negated())}catch(l){h.e(l)}finally{h.f()}case 31:e.next=24;break;case 33:e.next=38;break;case 35:e.prev=35,e.t0=e.catch(22),T.e(e.t0);case 38:return e.prev=38,T.f(),e.finish(38);case 41:E=Object(D.a)(y.LiquidityChanges);try{for(E.s();!(C=E.n()).done;)B=C.value,y.SumLpTokens=y.SumLpTokens.plus(B.LpTokenDelta),B.SumLpTokensAfter=new c.a(y.SumLpTokens),y.SumTokenDeposits[0]=y.SumTokenDeposits[0].plus(B.TokenDepositDelta[0]),y.SumTokenDeposits[1]=y.SumTokenDeposits[1].plus(B.TokenDepositDelta[1])}catch(l){E.e(l)}finally{E.f()}return e.next=45,o.methods.totalSupply().call();case 45:return I=e.sent,P=new c.a(I).dividedBy("1e18"),_=y.SumLpTokens.dividedBy(P),e.next=50,o.methods.getReserves().call();case 50:return j=e.sent,R=k(j._reserve0,y.Tokens[0]),F=k(j._reserve1,y.Tokens[1]),y.AvailableTokensToWithdraw[0]=R.multipliedBy(_),y.AvailableTokensToWithdraw[1]=F.multipliedBy(_),y.TotalWorth.SumTokenDeposits={CurrentPriceUSD:Se(y.SumTokenDeposits,y.Tokens,"CurrentPriceUSD"),CurrentPriceBTC:Se(y.SumTokenDeposits,y.Tokens,"CurrentPriceBTC"),CurrentPriceETH:Se(y.SumTokenDeposits,y.Tokens,"CurrentPriceETH")},y.TotalWorth.AvailableTokensToWithdraw={CurrentPriceUSD:Se(y.AvailableTokensToWithdraw,y.Tokens,"CurrentPriceUSD"),CurrentPriceBTC:Se(y.AvailableTokensToWithdraw,y.Tokens,"CurrentPriceBTC"),CurrentPriceETH:Se(y.AvailableTokensToWithdraw,y.Tokens,"CurrentPriceETH")},y.AvailableAfterRebalance[0]=Ee(y.AvailableTokensToWithdraw,y.Tokens,0,y.SumTokenDeposits[0]),y.AvailableAfterRebalance[1]=Ee(y.AvailableTokensToWithdraw,y.Tokens,1,y.SumTokenDeposits[1]),e.abrupt("return",y);case 60:case"end":return e.stop()}}),e,null,[[22,35,38,41]])})))).apply(this,arguments)}function Se(e,t,n){var a=e[0].multipliedBy(t[0][n]),i=e[1].multipliedBy(t[1][n]);return a.plus(i)}function Ee(e,t,n,a){var i=[];i[n]=new c.a(a);var u=e[n].minus(i[n]).dividedBy(t[1-n].CurrentPriceUSD).multipliedBy(t[n].CurrentPriceUSD);return i[1-n]=e[1-n].plus(u),i}function Ce(e,t){return Be.apply(this,arguments)}function Be(){return(Be=Object(d.a)(l.a.mark((function e(t,n){var a,i,u,p,s,r,y,o,d,m,c;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=[t.methods.token0().call(),t.methods.token1().call()],e.next=3,Promise.all(a);case 3:return i=e.sent,u=[w(i[0],ge,n),w(i[1],ge,n)],e.next=7,Promise.all(u);case 7:return p=e.sent,e.next=10,J("https://api.coingecko.com/api/v3/coins/list");case 10:s=e.sent,r=[null,null],y=Object(D.a)(s);try{for(y.s();!(o=y.n()).done;)d=o.value,(m=d.symbol.toUpperCase())===p[0].Symbol&&(r[0]=J("https://api.coingecko.com/api/v3/coins/".concat(d.id))),m===p[1].Symbol&&(r[1]=J("https://api.coingecko.com/api/v3/coins/".concat(d.id)))}catch(l){y.e(l)}finally{y.f()}if(null!==r[0]&&null!==r[1]){e.next=16;break}throw new Error("Could not find price data for one or both of the tokens (".concat(tokenRawDatas[2],", ").concat(tokenRawDatas[5],")"));case 16:return e.next=18,Promise.all(r);case 18:return c=e.sent,e.abrupt("return",[Ie(p[0],c[0]),Ie(p[1],c[1])]);case 20:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function Ie(e,t){return e.CurrentPriceUSD=new c.a(t.market_data.current_price.usd),e.CurrentPriceBTC=new c.a(t.market_data.current_price.btc),e.CurrentPriceETH=new c.a(t.market_data.current_price.eth),e}var Pe=function(){var e=O().bscWeb3,t=Object(a.useState)({}),n=Object(C.a)(t,2),u=n[0],p=n[1],s=Object(a.useState)(),r=Object(C.a)(s,2),y=r[0],o=r[1],m=Object(a.useState)(!1),c=Object(C.a)(m,2),b=c[0],T=c[1],f=function(e,t){var n=t.name,a=t.value;return p(Object(E.a)(Object(E.a)({},u),{},Object(S.a)({},n,a)))},v=function(){var t=Object(d.a)(l.a.mark((function t(){var n,a,i,p,s;return l.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=u.fromBlock,a=u.toBlock,i=u.pair,p=u.lp,T(!0),t.next=4,Oe({bscWeb3:e,fromBlock:n,toBlock:a,pair:i,lp:p});case 4:s=t.sent,o(s),T(!1);case 7:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}();return i.a.createElement("div",null,i.a.createElement("h2",null,"Pancake Impermanent Loss"),i.a.createElement("br",null),i.a.createElement(B.a,{textAlign:"left"},i.a.createElement(I.a,{textAlign:"left",secondary:!0,style:{width:"50vw",margin:"auto"}},i.a.createElement(P.a,{loading:b,onSubmit:v,spellcheck:"false"},i.a.createElement(P.a.Input,{label:"Pancake Pair Contract Address",name:"pair",placeholder:"0x1b96b92314c44b159149f7e0303511fb2fc4774f",onChange:f}),i.a.createElement(P.a.Input,{label:"Liquidity Provider Wallet Address",name:"lp",placeholder:"0x1f38c8bdd9cb174599574b6c8fadffd1fd987c85",onChange:f}),i.a.createElement(P.a.Group,{widths:"equal"},i.a.createElement(P.a.Input,{fluid:!0,label:"From Block",name:"fromBlock",value:"0",onChange:f}),i.a.createElement(P.a.Input,{fluid:!0,label:"To Block",name:"toBlock",value:"latest",onChange:f})),i.a.createElement(P.a.Button,{primary:!0},"Submit"))),i.a.createElement("pre",null,JSON.stringify(y,null,2))))},De=[{inputs:[],payable:!1,stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"src",type:"address"},{indexed:!0,internalType:"address",name:"dst",type:"address"},{indexed:!1,internalType:"uint256",name:"amt",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!0,inputs:[{indexed:!0,internalType:"bytes4",name:"sig",type:"bytes4"},{indexed:!0,internalType:"address",name:"caller",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"LOG_CALL",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"caller",type:"address"},{indexed:!0,internalType:"address",name:"tokenOut",type:"address"},{indexed:!1,internalType:"uint256",name:"tokenAmountOut",type:"uint256"}],name:"LOG_EXIT",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"caller",type:"address"},{indexed:!0,internalType:"address",name:"tokenIn",type:"address"},{indexed:!1,internalType:"uint256",name:"tokenAmountIn",type:"uint256"}],name:"LOG_JOIN",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"caller",type:"address"},{indexed:!0,internalType:"address",name:"tokenIn",type:"address"},{indexed:!0,internalType:"address",name:"tokenOut",type:"address"},{indexed:!1,internalType:"uint256",name:"tokenAmountIn",type:"uint256"},{indexed:!1,internalType:"uint256",name:"tokenAmountOut",type:"uint256"}],name:"LOG_SWAP",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"src",type:"address"},{indexed:!0,internalType:"address",name:"dst",type:"address"},{indexed:!1,internalType:"uint256",name:"amt",type:"uint256"}],name:"Transfer",type:"event"},{constant:!0,inputs:[],name:"BONE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"BPOW_PRECISION",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"EXIT_FEE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"INIT_POOL_SUPPLY",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MAX_BOUND_TOKENS",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MAX_BPOW_BASE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MAX_FEE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MAX_IN_RATIO",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MAX_OUT_RATIO",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MAX_TOTAL_WEIGHT",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MAX_WEIGHT",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MIN_BALANCE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MIN_BOUND_TOKENS",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MIN_BPOW_BASE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MIN_FEE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MIN_WEIGHT",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"src",type:"address"},{internalType:"address",name:"dst",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"dst",type:"address"},{internalType:"uint256",name:"amt",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"whom",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"balance",type:"uint256"},{internalType:"uint256",name:"denorm",type:"uint256"}],name:"bind",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{internalType:"uint256",name:"tokenBalanceIn",type:"uint256"},{internalType:"uint256",name:"tokenWeightIn",type:"uint256"},{internalType:"uint256",name:"tokenBalanceOut",type:"uint256"},{internalType:"uint256",name:"tokenWeightOut",type:"uint256"},{internalType:"uint256",name:"tokenAmountOut",type:"uint256"},{internalType:"uint256",name:"swapFee",type:"uint256"}],name:"calcInGivenOut",outputs:[{internalType:"uint256",name:"tokenAmountIn",type:"uint256"}],payable:!1,stateMutability:"pure",type:"function"},{constant:!0,inputs:[{internalType:"uint256",name:"tokenBalanceIn",type:"uint256"},{internalType:"uint256",name:"tokenWeightIn",type:"uint256"},{internalType:"uint256",name:"tokenBalanceOut",type:"uint256"},{internalType:"uint256",name:"tokenWeightOut",type:"uint256"},{internalType:"uint256",name:"tokenAmountIn",type:"uint256"},{internalType:"uint256",name:"swapFee",type:"uint256"}],name:"calcOutGivenIn",outputs:[{internalType:"uint256",name:"tokenAmountOut",type:"uint256"}],payable:!1,stateMutability:"pure",type:"function"},{constant:!0,inputs:[{internalType:"uint256",name:"tokenBalanceOut",type:"uint256"},{internalType:"uint256",name:"tokenWeightOut",type:"uint256"},{internalType:"uint256",name:"poolSupply",type:"uint256"},{internalType:"uint256",name:"totalWeight",type:"uint256"},{internalType:"uint256",name:"tokenAmountOut",type:"uint256"},{internalType:"uint256",name:"swapFee",type:"uint256"}],name:"calcPoolInGivenSingleOut",outputs:[{internalType:"uint256",name:"poolAmountIn",type:"uint256"}],payable:!1,stateMutability:"pure",type:"function"},{constant:!0,inputs:[{internalType:"uint256",name:"tokenBalanceIn",type:"uint256"},{internalType:"uint256",name:"tokenWeightIn",type:"uint256"},{internalType:"uint256",name:"poolSupply",type:"uint256"},{internalType:"uint256",name:"totalWeight",type:"uint256"},{internalType:"uint256",name:"tokenAmountIn",type:"uint256"},{internalType:"uint256",name:"swapFee",type:"uint256"}],name:"calcPoolOutGivenSingleIn",outputs:[{internalType:"uint256",name:"poolAmountOut",type:"uint256"}],payable:!1,stateMutability:"pure",type:"function"},{constant:!0,inputs:[{internalType:"uint256",name:"tokenBalanceIn",type:"uint256"},{internalType:"uint256",name:"tokenWeightIn",type:"uint256"},{internalType:"uint256",name:"poolSupply",type:"uint256"},{internalType:"uint256",name:"totalWeight",type:"uint256"},{internalType:"uint256",name:"poolAmountOut",type:"uint256"},{internalType:"uint256",name:"swapFee",type:"uint256"}],name:"calcSingleInGivenPoolOut",outputs:[{internalType:"uint256",name:"tokenAmountIn",type:"uint256"}],payable:!1,stateMutability:"pure",type:"function"},{constant:!0,inputs:[{internalType:"uint256",name:"tokenBalanceOut",type:"uint256"},{internalType:"uint256",name:"tokenWeightOut",type:"uint256"},{internalType:"uint256",name:"poolSupply",type:"uint256"},{internalType:"uint256",name:"totalWeight",type:"uint256"},{internalType:"uint256",name:"poolAmountIn",type:"uint256"},{internalType:"uint256",name:"swapFee",type:"uint256"}],name:"calcSingleOutGivenPoolIn",outputs:[{internalType:"uint256",name:"tokenAmountOut",type:"uint256"}],payable:!1,stateMutability:"pure",type:"function"},{constant:!0,inputs:[{internalType:"uint256",name:"tokenBalanceIn",type:"uint256"},{internalType:"uint256",name:"tokenWeightIn",type:"uint256"},{internalType:"uint256",name:"tokenBalanceOut",type:"uint256"},{internalType:"uint256",name:"tokenWeightOut",type:"uint256"},{internalType:"uint256",name:"swapFee",type:"uint256"}],name:"calcSpotPrice",outputs:[{internalType:"uint256",name:"spotPrice",type:"uint256"}],payable:!1,stateMutability:"pure",type:"function"},{constant:!0,inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"dst",type:"address"},{internalType:"uint256",name:"amt",type:"uint256"}],name:"decreaseApproval",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"poolAmountIn",type:"uint256"},{internalType:"uint256[]",name:"minAmountsOut",type:"uint256[]"}],name:"exitPool",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"tokenOut",type:"address"},{internalType:"uint256",name:"tokenAmountOut",type:"uint256"},{internalType:"uint256",name:"maxPoolAmountIn",type:"uint256"}],name:"exitswapExternAmountOut",outputs:[{internalType:"uint256",name:"poolAmountIn",type:"uint256"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"tokenOut",type:"address"},{internalType:"uint256",name:"poolAmountIn",type:"uint256"},{internalType:"uint256",name:"minAmountOut",type:"uint256"}],name:"exitswapPoolAmountIn",outputs:[{internalType:"uint256",name:"tokenAmountOut",type:"uint256"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[],name:"finalize",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"token",type:"address"}],name:"getBalance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getColor",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getController",outputs:[{internalType:"address",name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getCurrentTokens",outputs:[{internalType:"address[]",name:"tokens",type:"address[]"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"token",type:"address"}],name:"getDenormalizedWeight",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getFinalTokens",outputs:[{internalType:"address[]",name:"tokens",type:"address[]"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"token",type:"address"}],name:"getNormalizedWeight",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getNumTokens",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"tokenIn",type:"address"},{internalType:"address",name:"tokenOut",type:"address"}],name:"getSpotPrice",outputs:[{internalType:"uint256",name:"spotPrice",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"tokenIn",type:"address"},{internalType:"address",name:"tokenOut",type:"address"}],name:"getSpotPriceSansFee",outputs:[{internalType:"uint256",name:"spotPrice",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getSwapFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getTotalDenormalizedWeight",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"token",type:"address"}],name:"gulp",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"dst",type:"address"},{internalType:"uint256",name:"amt",type:"uint256"}],name:"increaseApproval",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"t",type:"address"}],name:"isBound",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"isFinalized",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"isPublicSwap",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"poolAmountOut",type:"uint256"},{internalType:"uint256[]",name:"maxAmountsIn",type:"uint256[]"}],name:"joinPool",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"tokenIn",type:"address"},{internalType:"uint256",name:"tokenAmountIn",type:"uint256"},{internalType:"uint256",name:"minPoolAmountOut",type:"uint256"}],name:"joinswapExternAmountIn",outputs:[{internalType:"uint256",name:"poolAmountOut",type:"uint256"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"tokenIn",type:"address"},{internalType:"uint256",name:"poolAmountOut",type:"uint256"},{internalType:"uint256",name:"maxAmountIn",type:"uint256"}],name:"joinswapPoolAmountOut",outputs:[{internalType:"uint256",name:"tokenAmountIn",type:"uint256"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"balance",type:"uint256"},{internalType:"uint256",name:"denorm",type:"uint256"}],name:"rebind",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"manager",type:"address"}],name:"setController",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"bool",name:"public_",type:"bool"}],name:"setPublicSwap",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"swapFee",type:"uint256"}],name:"setSwapFee",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"tokenIn",type:"address"},{internalType:"uint256",name:"tokenAmountIn",type:"uint256"},{internalType:"address",name:"tokenOut",type:"address"},{internalType:"uint256",name:"minAmountOut",type:"uint256"},{internalType:"uint256",name:"maxPrice",type:"uint256"}],name:"swapExactAmountIn",outputs:[{internalType:"uint256",name:"tokenAmountOut",type:"uint256"},{internalType:"uint256",name:"spotPriceAfter",type:"uint256"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"tokenIn",type:"address"},{internalType:"uint256",name:"maxAmountIn",type:"uint256"},{internalType:"address",name:"tokenOut",type:"address"},{internalType:"uint256",name:"tokenAmountOut",type:"uint256"},{internalType:"uint256",name:"maxPrice",type:"uint256"}],name:"swapExactAmountOut",outputs:[{internalType:"uint256",name:"tokenAmountIn",type:"uint256"},{internalType:"uint256",name:"spotPriceAfter",type:"uint256"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"dst",type:"address"},{internalType:"uint256",name:"amt",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"src",type:"address"},{internalType:"address",name:"dst",type:"address"},{internalType:"uint256",name:"amt",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"token",type:"address"}],name:"unbind",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"}],_e=[{inputs:[{internalType:"contract IERC20",name:"_token0",type:"address"},{internalType:"contract IERC20",name:"_token1",type:"address"},{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"symbol",type:"string"},{internalType:"contract IMooniswapFactoryGovernance",name:"_mooniswapFactoryGovernance",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"decayPeriod",type:"uint256"},{indexed:!1,internalType:"bool",name:"isDefault",type:"bool"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"DecayPeriodVoteUpdate",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!0,internalType:"address",name:"receiver",type:"address"},{indexed:!1,internalType:"uint256",name:"share",type:"uint256"},{indexed:!1,internalType:"uint256",name:"token0Amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"token1Amount",type:"uint256"}],name:"Deposited",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"string",name:"reason",type:"string"}],name:"Error",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"fee",type:"uint256"},{indexed:!1,internalType:"bool",name:"isDefault",type:"bool"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"FeeVoteUpdate",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"slippageFee",type:"uint256"},{indexed:!1,internalType:"bool",name:"isDefault",type:"bool"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"SlippageFeeVoteUpdate",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!0,internalType:"address",name:"receiver",type:"address"},{indexed:!0,internalType:"address",name:"srcToken",type:"address"},{indexed:!1,internalType:"address",name:"dstToken",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"result",type:"uint256"},{indexed:!1,internalType:"uint256",name:"srcAdditionBalance",type:"uint256"},{indexed:!1,internalType:"uint256",name:"dstRemovalBalance",type:"uint256"},{indexed:!1,internalType:"address",name:"referral",type:"address"}],name:"Swapped",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"srcBalance",type:"uint256"},{indexed:!1,internalType:"uint256",name:"dstBalance",type:"uint256"},{indexed:!1,internalType:"uint256",name:"fee",type:"uint256"},{indexed:!1,internalType:"uint256",name:"slippageFee",type:"uint256"},{indexed:!1,internalType:"uint256",name:"referralShare",type:"uint256"},{indexed:!1,internalType:"uint256",name:"governanceShare",type:"uint256"}],name:"Sync",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!0,internalType:"address",name:"receiver",type:"address"},{indexed:!1,internalType:"uint256",name:"share",type:"uint256"},{indexed:!1,internalType:"uint256",name:"token0Amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"token1Amount",type:"uint256"}],name:"Withdrawn",type:"event"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decayPeriod",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"vote",type:"uint256"}],name:"decayPeriodVote",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"decayPeriodVotes",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"subtractedValue",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256[2]",name:"maxAmounts",type:"uint256[2]"},{internalType:"uint256[2]",name:"minAmounts",type:"uint256[2]"}],name:"deposit",outputs:[{internalType:"uint256",name:"fairSupply",type:"uint256"},{internalType:"uint256[2]",name:"receivedAmounts",type:"uint256[2]"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256[2]",name:"maxAmounts",type:"uint256[2]"},{internalType:"uint256[2]",name:"minAmounts",type:"uint256[2]"},{internalType:"address",name:"target",type:"address"}],name:"depositFor",outputs:[{internalType:"uint256",name:"fairSupply",type:"uint256"},{internalType:"uint256[2]",name:"receivedAmounts",type:"uint256[2]"}],stateMutability:"payable",type:"function"},{inputs:[],name:"discardDecayPeriodVote",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"discardFeeVote",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"discardSlippageFeeVote",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"fee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"vote",type:"uint256"}],name:"feeVote",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"feeVotes",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract IERC20",name:"token",type:"address"}],name:"getBalanceForAddition",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract IERC20",name:"token",type:"address"}],name:"getBalanceForRemoval",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract IERC20",name:"src",type:"address"},{internalType:"contract IERC20",name:"dst",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"getReturn",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getTokens",outputs:[{internalType:"contract IERC20[]",name:"tokens",type:"address[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"addedValue",type:"uint256"}],name:"increaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"mooniswapFactoryGovernance",outputs:[{internalType:"contract IMooniswapFactoryGovernance",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC20",name:"token",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"rescueFunds",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IMooniswapFactoryGovernance",name:"newMooniswapFactoryGovernance",type:"address"}],name:"setMooniswapFactoryGovernance",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"slippageFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"vote",type:"uint256"}],name:"slippageFeeVote",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"slippageFeeVotes",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract IERC20",name:"src",type:"address"},{internalType:"contract IERC20",name:"dst",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"minReturn",type:"uint256"},{internalType:"address",name:"referral",type:"address"}],name:"swap",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"contract IERC20",name:"src",type:"address"},{internalType:"contract IERC20",name:"dst",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"minReturn",type:"uint256"},{internalType:"address",name:"referral",type:"address"},{internalType:"address payable",name:"receiver",type:"address"}],name:"swapFor",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"payable",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"token0",outputs:[{internalType:"contract IERC20",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"token1",outputs:[{internalType:"contract IERC20",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"i",type:"uint256"}],name:"tokens",outputs:[{internalType:"contract IERC20",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC20",name:"",type:"address"}],name:"virtualBalancesForAddition",outputs:[{internalType:"uint216",name:"balance",type:"uint216"},{internalType:"uint40",name:"time",type:"uint40"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract IERC20",name:"",type:"address"}],name:"virtualBalancesForRemoval",outputs:[{internalType:"uint216",name:"balance",type:"uint216"},{internalType:"uint40",name:"time",type:"uint40"}],stateMutability:"view",type:"function"},{inputs:[],name:"virtualDecayPeriod",outputs:[{internalType:"uint104",name:"",type:"uint104"},{internalType:"uint104",name:"",type:"uint104"},{internalType:"uint48",name:"",type:"uint48"}],stateMutability:"view",type:"function"},{inputs:[],name:"virtualFee",outputs:[{internalType:"uint104",name:"",type:"uint104"},{internalType:"uint104",name:"",type:"uint104"},{internalType:"uint48",name:"",type:"uint48"}],stateMutability:"view",type:"function"},{inputs:[],name:"virtualSlippageFee",outputs:[{internalType:"uint104",name:"",type:"uint104"},{internalType:"uint104",name:"",type:"uint104"},{internalType:"uint48",name:"",type:"uint48"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract IERC20",name:"",type:"address"}],name:"volumes",outputs:[{internalType:"uint128",name:"confirmed",type:"uint128"},{internalType:"uint128",name:"result",type:"uint128"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256[]",name:"minReturns",type:"uint256[]"}],name:"withdraw",outputs:[{internalType:"uint256[2]",name:"withdrawnAmounts",type:"uint256[2]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256[]",name:"minReturns",type:"uint256[]"},{internalType:"address payable",name:"target",type:"address"}],name:"withdrawFor",outputs:[{internalType:"uint256[2]",name:"withdrawnAmounts",type:"uint256[2]"}],stateMutability:"nonpayable",type:"function"}],Le=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1",type:"uint256"},{indexed:!0,internalType:"address",name:"to",type:"address"}],name:"Burn",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1",type:"uint256"}],name:"Mint",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0In",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1In",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount0Out",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1Out",type:"uint256"},{indexed:!0,internalType:"address",name:"to",type:"address"}],name:"Swap",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint112",name:"reserve0",type:"uint112"},{indexed:!1,internalType:"uint112",name:"reserve1",type:"uint112"}],name:"Sync",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{inputs:[],name:"DOMAIN_SEPARATOR",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"MINIMUM_LIQUIDITY",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"PERMIT_TYPEHASH",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"}],name:"burn",outputs:[{internalType:"uint256",name:"amount0",type:"uint256"},{internalType:"uint256",name:"amount1",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[],name:"factory",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getReserves",outputs:[{internalType:"uint112",name:"_reserve0",type:"uint112"},{internalType:"uint112",name:"_reserve1",type:"uint112"},{internalType:"uint32",name:"_blockTimestampLast",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_token0",type:"address"},{internalType:"address",name:"_token1",type:"address"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"kLast",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"}],name:"mint",outputs:[{internalType:"uint256",name:"liquidity",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"nonces",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"value",type:"uint256"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"}],name:"permit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"price0CumulativeLast",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"price1CumulativeLast",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"}],name:"skim",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount0Out",type:"uint256"},{internalType:"uint256",name:"amount1Out",type:"uint256"},{internalType:"address",name:"to",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"swap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"sync",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"token0",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"token1",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}],je=[{inputs:[{internalType:"contract SushiToken",name:"_sushi",type:"address"},{internalType:"address",name:"_devaddr",type:"address"},{internalType:"uint256",name:"_sushiPerBlock",type:"uint256"},{internalType:"uint256",name:"_startBlock",type:"uint256"},{internalType:"uint256",name:"_bonusEndBlock",type:"uint256"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"pid",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Deposit",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"pid",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"EmergencyWithdraw",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"pid",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Withdraw",type:"event"},{inputs:[],name:"BONUS_MULTIPLIER",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_allocPoint",type:"uint256"},{internalType:"contract IERC20",name:"_lpToken",type:"address"},{internalType:"bool",name:"_withUpdate",type:"bool"}],name:"add",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"bonusEndBlock",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"},{internalType:"uint256",name:"_amount",type:"uint256"}],name:"deposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_devaddr",type:"address"}],name:"dev",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"devaddr",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"}],name:"emergencyWithdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_from",type:"uint256"},{internalType:"uint256",name:"_to",type:"uint256"}],name:"getMultiplier",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"massUpdatePools",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"}],name:"migrate",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"migrator",outputs:[{internalType:"contract IMigratorChef",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"},{internalType:"address",name:"_user",type:"address"}],name:"pendingSushi",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"poolInfo",outputs:[{internalType:"contract IERC20",name:"lpToken",type:"address"},{internalType:"uint256",name:"allocPoint",type:"uint256"},{internalType:"uint256",name:"lastRewardBlock",type:"uint256"},{internalType:"uint256",name:"accSushiPerShare",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"poolLength",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"},{internalType:"uint256",name:"_allocPoint",type:"uint256"},{internalType:"bool",name:"_withUpdate",type:"bool"}],name:"set",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IMigratorChef",name:"_migrator",type:"address"}],name:"setMigrator",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"startBlock",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"sushi",outputs:[{internalType:"contract SushiToken",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"sushiPerBlock",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalAllocPoint",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"}],name:"updatePool",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],name:"userInfo",outputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"rewardDebt",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"},{internalType:"uint256",name:"_amount",type:"uint256"}],name:"withdraw",outputs:[],stateMutability:"nonpayable",type:"function"}],Re=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1",type:"uint256"},{indexed:!0,internalType:"address",name:"to",type:"address"}],name:"Burn",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1",type:"uint256"}],name:"Mint",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0In",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1In",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount0Out",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1Out",type:"uint256"},{indexed:!0,internalType:"address",name:"to",type:"address"}],name:"Swap",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint112",name:"reserve0",type:"uint112"},{indexed:!1,internalType:"uint112",name:"reserve1",type:"uint112"}],name:"Sync",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{inputs:[],name:"DOMAIN_SEPARATOR",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"MINIMUM_LIQUIDITY",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"PERMIT_TYPEHASH",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"}],name:"burn",outputs:[{internalType:"uint256",name:"amount0",type:"uint256"},{internalType:"uint256",name:"amount1",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[],name:"factory",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getReserves",outputs:[{internalType:"uint112",name:"_reserve0",type:"uint112"},{internalType:"uint112",name:"_reserve1",type:"uint112"},{internalType:"uint32",name:"_blockTimestampLast",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_token0",type:"address"},{internalType:"address",name:"_token1",type:"address"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"kLast",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"}],name:"mint",outputs:[{internalType:"uint256",name:"liquidity",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"nonces",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"value",type:"uint256"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"}],name:"permit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"price0CumulativeLast",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"price1CumulativeLast",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"}],name:"skim",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount0Out",type:"uint256"},{internalType:"uint256",name:"amount1Out",type:"uint256"},{internalType:"address",name:"to",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"swap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"sync",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"token0",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"token1",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}],Fe=[{inputs:[{internalType:"contract Unic",name:"_unic",type:"address"},{internalType:"address",name:"_devaddr",type:"address"},{internalType:"uint256",name:"_mintRateMultiplier",type:"uint256"},{internalType:"uint256",name:"_mintRateDivider",type:"uint256"},{internalType:"uint256",name:"_unicPerBlock",type:"uint256"},{internalType:"uint256",name:"_startBlock",type:"uint256"},{internalType:"uint256",name:"_blocksPerTranche",type:"uint256"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"allocPoint",type:"uint256"},{indexed:!1,internalType:"address",name:"lpToken",type:"address"},{indexed:!1,internalType:"bool",name:"withUpdate",type:"bool"}],name:"Add",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"pid",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Deposit",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"devaddr",type:"address"}],name:"Dev",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"pid",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"EmergencyWithdraw",type:"event"},{anonymous:!1,inputs:[],name:"MassUpdatePools",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"pid",type:"uint256"},{indexed:!1,internalType:"uint256",name:"allocPoint",type:"uint256"},{indexed:!1,internalType:"bool",name:"withUpdate",type:"bool"}],name:"Set",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"pid",type:"uint256"}],name:"UpdatePool",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"pid",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Withdraw",type:"event"},{inputs:[{internalType:"uint256",name:"_allocPoint",type:"uint256"},{internalType:"contract IERC20",name:"_lpToken",type:"address"},{internalType:"bool",name:"_withUpdate",type:"bool"},{internalType:"address",name:"_uToken",type:"address"}],name:"add",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"blocksPerTranche",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"},{internalType:"uint256",name:"_amount",type:"uint256"}],name:"deposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_devaddr",type:"address"}],name:"dev",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"devaddr",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"}],name:"emergencyWithdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_from",type:"uint256"},{internalType:"uint256",name:"_to",type:"uint256"}],name:"getRewards",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"massUpdatePools",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"mintRateDivider",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"mintRateMultiplier",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"},{internalType:"address",name:"_user",type:"address"}],name:"pendingUnic",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"poolInfo",outputs:[{internalType:"contract IERC20",name:"lpToken",type:"address"},{internalType:"uint256",name:"allocPoint",type:"uint256"},{internalType:"uint256",name:"lastRewardBlock",type:"uint256"},{internalType:"uint256",name:"accUnicPerShare",type:"uint256"},{internalType:"address",name:"uToken",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"poolLength",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"},{internalType:"uint256",name:"_allocPoint",type:"uint256"},{internalType:"bool",name:"_withUpdate",type:"bool"}],name:"set",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_mintRateMultiplier",type:"uint256"},{internalType:"uint256",name:"_mintRateDivider",type:"uint256"},{internalType:"uint256",name:"_unicPerBlock",type:"uint256"},{internalType:"uint256",name:"_blocksPerTranche",type:"uint256"}],name:"setMintRules",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_startBlock",type:"uint256"}],name:"setStartBlock",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"startBlock",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalAllocPoint",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"tranche",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"unic",outputs:[{internalType:"contract Unic",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"unicPerBlock",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"}],name:"updatePool",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],name:"userInfo",outputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"rewardDebt",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"whitelist",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"},{internalType:"uint256",name:"_amount",type:"uint256"}],name:"withdraw",outputs:[],stateMutability:"nonpayable",type:"function"}],We=[{inputs:[{internalType:"contract Mooniswap",name:"_mooniswap",type:"address"},{internalType:"contract IERC20",name:"_gift",type:"address"},{internalType:"uint256",name:"_duration",type:"uint256"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"decayPeriod",type:"uint256"},{indexed:!1,internalType:"bool",name:"isDefault",type:"bool"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"DecayPeriodVoteUpdate",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"fee",type:"uint256"},{indexed:!1,internalType:"bool",name:"isDefault",type:"bool"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"FeeVoteUpdate",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"reward",type:"uint256"}],name:"RewardAdded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"reward",type:"uint256"}],name:"RewardPaid",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"slippageFee",type:"uint256"},{indexed:!1,internalType:"bool",name:"isDefault",type:"bool"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"SlippageFeeVoteUpdate",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Staked",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Withdrawn",type:"event"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decayPeriod",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"vote",type:"uint256"}],name:"decayPeriodVote",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"decayPeriodVotes",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[],name:"discardDecayPeriodVote",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"discardFeeVote",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"discardSlippageFeeVote",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"duration",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"earned",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"exit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"fee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"vote",type:"uint256"}],name:"feeVote",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"feeVotes",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getReward",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"gift",outputs:[{internalType:"contract IERC20",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"lastTimeRewardApplicable",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"lastUpdateTime",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"mooniswap",outputs:[{internalType:"contract Mooniswap",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"mooniswapFactoryGovernance",outputs:[{internalType:"contract IMooniswapFactoryGovernance",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"reward",type:"uint256"}],name:"notifyRewardAmount",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"periodFinish",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC20",name:"token",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"rescueFunds",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"rewardDistribution",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"rewardPerToken",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"rewardPerTokenStored",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"rewardRate",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"rewards",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_rewardDistribution",type:"address"}],name:"setRewardDistribution",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"slippageFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"vote",type:"uint256"}],name:"slippageFeeVote",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"slippageFeeVotes",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"stake",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"userRewardPerTokenPaid",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"withdraw",outputs:[],stateMutability:"nonpayable",type:"function"}],Ue="BALANCER",Ne="UNISWAP",He="SUSHISWAP",Ge="ONEINCH",Ve="UJENNY",qe="0x0000000000000000000000000000000000000000";function Je(e,t,n,a,i){return Ye.apply(this,arguments)}function Ye(){return(Ye=Object(d.a)(l.a.mark((function e(t,n,a,i,u){return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:e.t0=n,e.next=e.t0===Ue?3:e.t0===Ne?4:e.t0===He?5:e.t0===Ge?6:e.t0===Ve?7:8;break;case 3:return e.abrupt("return",Xe(t,a,i));case 4:return e.abrupt("return",Ke(t,a,i));case 5:return e.abrupt("return",et(t,a,u||"",i));case 6:return e.abrupt("return",ut(t,a,u||"",i));case 7:return e.abrupt("return",ot(t,a,u||"",i));case 8:throw new Error("lpPositionStatus: Pool ".concat(n," not recognized"));case 9:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function ze(e,t,n,a,i,u,p,s,r){var y={PoolAddress:e,TotalLPSupply:M(n,i),HolderAddress:x(t)?t:"Not Given",HolderLPBalance:M(a,i)};return x(p)&&(y.FarmAddress=p,y.HolderLPBalanceThroughFarm=M(n.multipliedBy(s),i),y.UnclaimedReward=r),y.PositionValue=u,y}function Xe(e,t,n){return Qe.apply(this,arguments)}function Qe(){return(Qe=Object(d.a)(l.a.mark((function e(t,n,a){var i,u,p,s,r,y,o,d,m,b,T;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=v(n,De,a),u=[i.methods.totalSupply().call(),i.methods.decimals().call(),i.methods.getFinalTokens().call()],x(t)&&u.push(i.methods.balanceOf(t).call()),e.next=5,Promise.all(u);case 5:return p=e.sent,s=new c.a(p[0]),r=new c.a(x(t)?p[3]:t),y=p[1],o=r.dividedBy(s),d=[],p[2].map((function(e){d.push(w(e,ye,a)),d.push(i.methods.getBalance(e).call())})),e.next=14,Promise.all(d);case 14:for(m=e.sent,b=[],T=0;T setTimeout(resolve, milis));\n}\n\nexport function daysAgo(timestampSec) {\n const secDelta = new Date().getTime() / 1000 - parseInt(timestampSec);\n return Math.round((10 * secDelta) / (24 * 60 * 60)) / 10;\n}\n\nexport function timestampNow() {\n return Math.round(new Date().getTime() / 1000);\n}\n\nexport async function fetchJson(url) {\n const res = await fetch(url);\n return await res.json();\n}\n\nexport async function fetchJsonPost(url, dataStr) {\n const res = await fetch(url,\n {\n method: 'post',\n body: dataStr,\n headers: { 'Content-Type': 'application/json' },\n });\n return await res.json();\n}\n","import _ from \"lodash\";\nimport BN from \"bn.js\";\nimport InputDataDecoder from \"ethereum-input-data-decoder\";\nimport { fetchJson, daysAgo, timestampNow, sleep } from \"./helpers\";\n\nconst MIN_CONTRACT_CODE_SIZE = 20;\n\n// takes a contract and method call and performs due diligence over both to protect against phishing\n// web3 - initialized web3 instance used for read only\n// ethscn - etherscan.io API key (string)\n// address - the address of the contract (0x string)\n// hexData - the encoded input data to the transaction (0x string)\nexport async function checkContract({ web3, ethscn, address, hexData }) {\n const res = {\n Address: address,\n PublishedAbi: false,\n SourceCodeUrl: \"\",\n DeployedDaysAgo: 0,\n NumTx: 0,\n NumTxHaveMore: false,\n NumTxInLast24Hours: 0,\n TxListUrl: \"\",\n TxStats: {},\n Tx100DaysAgo: 0,\n Tx1000DaysAgo: 0,\n EthSpentOnGas: 0,\n DifferentAddresses: 0,\n MethodCall: {},\n };\n\n // abi\n let abi;\n const abiReq = await fetchJson(\n `https://api.etherscan.io/api?module=contract&action=getabi&address=${address}&apikey=${ethscn}`\n );\n if (abiReq.status === \"1\" && abiReq.result) {\n abi = JSON.parse(abiReq.result);\n res.PublishedAbi = true;\n res.SourceCodeUrl = `https://etherscan.io/address/${address}#code`;\n }\n\n // transactions\n res.TxListUrl = `https://etherscan.io/txs?a=${address}`;\n const firstTxs = await fetchJson(\n `https://api.etherscan.io/api?module=account&action=txlist&address=${address}&startblock=0&endblock=99999999&sort=asc&apikey=${ethscn}`\n );\n const lastTxs = await fetchJson(\n `https://api.etherscan.io/api?module=account&action=txlist&address=${address}&startblock=0&endblock=99999999&sort=desc&apikey=${ethscn}`\n );\n if (\n firstTxs.status === \"1\" &&\n firstTxs.result &&\n firstTxs.result.length > 0 &&\n lastTxs.status === \"1\" &&\n lastTxs.result &&\n lastTxs.result.length > 0\n ) {\n if (firstTxs.result[0].to === \"\" && firstTxs.result[0].input.length > MIN_CONTRACT_CODE_SIZE) {\n res.DeployedDaysAgo = daysAgo(firstTxs.result[0].timeStamp);\n }\n if (\n _.some(firstTxs.result, (tx) => tx.to !== \"\" && tx.to !== address.toLowerCase()) ||\n _.some(firstTxs.result, (tx) => tx.to !== \"\" && tx.to !== address.toLowerCase())\n ) {\n throw new Error(\"Address is not destination of all transactions, is this a contract?\");\n }\n if (firstTxs.result.length < 10000 && lastTxs.result.length < 10000) {\n res.NumTx = firstTxs.result.length;\n res.NumTxHaveMore = false;\n } else {\n res.NumTx = 10000;\n res.NumTxHaveMore = true;\n }\n if (firstTxs.result.length > 100) {\n res.Tx100DaysAgo = daysAgo(firstTxs.result[100].timeStamp);\n }\n if (firstTxs.result.length > 1000) {\n res.Tx1000DaysAgo = daysAgo(firstTxs.result[1000].timeStamp);\n }\n const before24h = timestampNow() - 24 * 60 * 60;\n res.NumTxInLast24Hours = _.reduce(\n lastTxs.result,\n (sum, tx) => sum + (parseInt(tx.timeStamp) > before24h ? 1 : 0),\n 0\n );\n res.EthSpentOnGas = _.reduce(\n lastTxs.result,\n (sum, tx) => sum + parseInt(tx.gasUsed) * (parseInt(tx.gasPrice) / 1e18),\n 0\n );\n res.DifferentAddresses = _.uniqBy(lastTxs.result, (tx) => tx.from.toLowerCase()).length;\n res.EthSpentOnGas = Math.round(res.EthSpentOnGas * 1000) / 1000;\n if (abi) res.TxStats = getStatsPerMethod(abi, lastTxs.result);\n }\n\n // hex data\n if (hexData && abi) res.MethodCall = await decodeHexData(web3, ethscn, abi, hexData);\n else delete res.MethodCall;\n\n return res;\n}\n\n// takes input for an ERC20 Approve action and performs due diligence over it to protect against phishing\n// web3 - initialized web3 instance used for read only\n// ethscn - etherscan.io API key (string)\n// hexData - the encoded input data to the transaction (0x string)\nexport async function checkApprove({ web3, ethscn, hexData }) {\n const res = {\n MethodCall: {},\n };\n\n const abi = [\n {\n inputs: [\n { internalType: \"address\", name: \"spender\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n ],\n name: \"approve\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n ];\n res.MethodCall = await decodeHexData(web3, ethscn, abi, hexData);\n\n return res;\n}\n\nfunction getStatsPerMethod(abi, txs) {\n let total = 0;\n const sumPerMethod = {};\n const decoder = new InputDataDecoder(abi);\n for (const tx of txs) {\n const decoded = decoder.decodeData(tx.input);\n if (!decoded.method) continue;\n if (!sumPerMethod[decoded.method]) sumPerMethod[decoded.method] = 0;\n sumPerMethod[decoded.method]++;\n total++;\n if (total > 1000) break;\n }\n return _.mapValues(sumPerMethod, (sum) => Math.round((100 * 100 * sum) / total) / 100);\n}\n\nasync function decodeHexData(web3, ethscn, abi, hexData) {\n const decoder = new InputDataDecoder(abi);\n const decoded = decoder.decodeData(hexData);\n const res = {\n Method: decoded.method,\n Args: [],\n };\n for (let i = 0; i < decoded.names.length; i++) {\n const name = decoded.names[i];\n const type = decoded.types[i];\n const rawValue = decoded.inputs[i];\n let value = rawValue.toString();\n if (\n type === \"uint256\" &&\n rawValue.eq(new BN(\"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\", 16))\n ) {\n value = \"unlimited\";\n }\n if (type === \"address\") {\n value = web3.utils.toChecksumAddress(value);\n }\n res.Args[i] = {\n Name: name,\n Type: type,\n Value: value,\n };\n if (type === \"address\" && (await isContract(web3, value))) {\n await sleep(1100); // don't stress etherscan api\n res.Args[i].Contract = await checkContract({\n web3,\n ethscn,\n address: value,\n });\n }\n }\n return res;\n}\n\nasync function isContract(web3, address) {\n const res = await web3.eth.getCode(address);\n return res.length > MIN_CONTRACT_CODE_SIZE;\n}\n","import React, { useState } from \"react\";\nimport { Container, Segment, Form } from \"semantic-ui-react\";\nimport { checkContract } from \"web3-snippets/anti-phishing\";\nimport { useApiKeys } from \"../ApiKeys\";\n\nfunction Snippet() {\n const { web3, ethscn } = useApiKeys();\n const [input, setInput] = useState({});\n const [result, setResult] = useState();\n const [loading, setLoading] = useState(false);\n const handleChange = (_e, { name, value }) => setInput({ ...input, [name]: value });\n const handleSubmit = async () => {\n const { address, hexData } = input;\n setLoading(true);\n const result = await checkContract({ web3, ethscn, address, hexData });\n setResult(result);\n setLoading(false);\n };\n return (\n
\n

Check Contract (Anti-Phishing)

\n
\n \n \n
\n \n \n Submit\n \n
\n
{JSON.stringify(result, null, 2)}
\n
\n
\n );\n}\n\nexport default Snippet;\n","import React, { useState } from \"react\";\nimport { Container, Segment, Form } from \"semantic-ui-react\";\nimport { checkApprove } from \"web3-snippets/anti-phishing\";\nimport { useApiKeys } from \"../ApiKeys\";\n\nfunction Snippet() {\n const { web3, ethscn } = useApiKeys();\n const [input, setInput] = useState({});\n const [result, setResult] = useState();\n const [loading, setLoading] = useState(false);\n const handleChange = (_e, { name, value }) => setInput({ ...input, [name]: value });\n const handleSubmit = async () => {\n const { hexData } = input;\n setLoading(true);\n const result = await checkApprove({ web3, ethscn, hexData });\n setResult(result);\n setLoading(false);\n };\n return (\n
\n

Check Approve (Anti-Phishing)

\n
\n \n \n
\n \n Submit\n \n
\n
{JSON.stringify(result, null, 2)}
\n
\n
\n );\n}\n\nexport default Snippet;\n","export const uniswapPairAbi = [\n { inputs: [], payable: false, stateMutability: \"nonpayable\", type: \"constructor\" },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"owner\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"spender\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"value\", type: \"uint256\" },\n ],\n name: \"Approval\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"sender\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amount0\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"amount1\", type: \"uint256\" },\n { indexed: true, internalType: \"address\", name: \"to\", type: \"address\" },\n ],\n name: \"Burn\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"sender\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amount0\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"amount1\", type: \"uint256\" },\n ],\n name: \"Mint\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"sender\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"amount0In\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"amount1In\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"amount0Out\", type: \"uint256\" },\n { indexed: false, internalType: \"uint256\", name: \"amount1Out\", type: \"uint256\" },\n { indexed: true, internalType: \"address\", name: \"to\", type: \"address\" },\n ],\n name: \"Swap\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: false, internalType: \"uint112\", name: \"reserve0\", type: \"uint112\" },\n { indexed: false, internalType: \"uint112\", name: \"reserve1\", type: \"uint112\" },\n ],\n name: \"Sync\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"from\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"to\", type: \"address\" },\n { indexed: false, internalType: \"uint256\", name: \"value\", type: \"uint256\" },\n ],\n name: \"Transfer\",\n type: \"event\",\n },\n {\n constant: true,\n inputs: [],\n name: \"DOMAIN_SEPARATOR\",\n outputs: [{ internalType: \"bytes32\", name: \"\", type: \"bytes32\" }],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"MINIMUM_LIQUIDITY\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"PERMIT_TYPEHASH\",\n outputs: [{ internalType: \"bytes32\", name: \"\", type: \"bytes32\" }],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [\n { internalType: \"address\", name: \"\", type: \"address\" },\n { internalType: \"address\", name: \"\", type: \"address\" },\n ],\n name: \"allowance\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n { internalType: \"address\", name: \"spender\", type: \"address\" },\n { internalType: \"uint256\", name: \"value\", type: \"uint256\" },\n ],\n name: \"approve\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n name: \"balanceOf\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [{ internalType: \"address\", name: \"to\", type: \"address\" }],\n name: \"burn\",\n outputs: [\n { internalType: \"uint256\", name: \"amount0\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"amount1\", type: \"uint256\" },\n ],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"decimals\",\n outputs: [{ internalType: \"uint8\", name: \"\", type: \"uint8\" }],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"factory\",\n outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"getReserves\",\n outputs: [\n { internalType: \"uint112\", name: \"_reserve0\", type: \"uint112\" },\n { internalType: \"uint112\", name: \"_reserve1\", type: \"uint112\" },\n { internalType: \"uint32\", name: \"_blockTimestampLast\", type: \"uint32\" },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n { internalType: \"address\", name: \"_token0\", type: \"address\" },\n { internalType: \"address\", name: \"_token1\", type: \"address\" },\n ],\n name: \"initialize\",\n outputs: [],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"kLast\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [{ internalType: \"address\", name: \"to\", type: \"address\" }],\n name: \"mint\",\n outputs: [{ internalType: \"uint256\", name: \"liquidity\", type: \"uint256\" }],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"name\",\n outputs: [{ internalType: \"string\", name: \"\", type: \"string\" }],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n name: \"nonces\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n { internalType: \"address\", name: \"owner\", type: \"address\" },\n { internalType: \"address\", name: \"spender\", type: \"address\" },\n { internalType: \"uint256\", name: \"value\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"deadline\", type: \"uint256\" },\n { internalType: \"uint8\", name: \"v\", type: \"uint8\" },\n { internalType: \"bytes32\", name: \"r\", type: \"bytes32\" },\n { internalType: \"bytes32\", name: \"s\", type: \"bytes32\" },\n ],\n name: \"permit\",\n outputs: [],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"price0CumulativeLast\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"price1CumulativeLast\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [{ internalType: \"address\", name: \"to\", type: \"address\" }],\n name: \"skim\",\n outputs: [],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n { internalType: \"uint256\", name: \"amount0Out\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"amount1Out\", type: \"uint256\" },\n { internalType: \"address\", name: \"to\", type: \"address\" },\n { internalType: \"bytes\", name: \"data\", type: \"bytes\" },\n ],\n name: \"swap\",\n outputs: [],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"symbol\",\n outputs: [{ internalType: \"string\", name: \"\", type: \"string\" }],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [],\n name: \"sync\",\n outputs: [],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"token0\",\n outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"token1\",\n outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"totalSupply\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n { internalType: \"address\", name: \"to\", type: \"address\" },\n { internalType: \"uint256\", name: \"value\", type: \"uint256\" },\n ],\n name: \"transfer\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n { internalType: \"address\", name: \"from\", type: \"address\" },\n { internalType: \"address\", name: \"to\", type: \"address\" },\n { internalType: \"uint256\", name: \"value\", type: \"uint256\" },\n ],\n name: \"transferFrom\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n];\n","export const erc20Abi = [\n {\n constant: true,\n inputs: [],\n name: \"name\",\n outputs: [{ name: \"\", type: \"string\" }],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n { name: \"guy\", type: \"address\" },\n { name: \"wad\", type: \"uint256\" },\n ],\n name: \"approve\",\n outputs: [{ name: \"\", type: \"bool\" }],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"totalSupply\",\n outputs: [{ name: \"\", type: \"uint256\" }],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n { name: \"src\", type: \"address\" },\n { name: \"dst\", type: \"address\" },\n { name: \"wad\", type: \"uint256\" },\n ],\n name: \"transferFrom\",\n outputs: [{ name: \"\", type: \"bool\" }],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [{ name: \"wad\", type: \"uint256\" }],\n name: \"withdraw\",\n outputs: [],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"decimals\",\n outputs: [{ name: \"\", type: \"uint8\" }],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [{ name: \"\", type: \"address\" }],\n name: \"balanceOf\",\n outputs: [{ name: \"\", type: \"uint256\" }],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"symbol\",\n outputs: [{ name: \"\", type: \"string\" }],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n { name: \"dst\", type: \"address\" },\n { name: \"wad\", type: \"uint256\" },\n ],\n name: \"transfer\",\n outputs: [{ name: \"\", type: \"bool\" }],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [],\n name: \"deposit\",\n outputs: [],\n payable: true,\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [\n { name: \"\", type: \"address\" },\n { name: \"\", type: \"address\" },\n ],\n name: \"allowance\",\n outputs: [{ name: \"\", type: \"uint256\" }],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n { payable: true, stateMutability: \"payable\", type: \"fallback\" },\n {\n anonymous: false,\n inputs: [\n { indexed: true, name: \"src\", type: \"address\" },\n { indexed: true, name: \"guy\", type: \"address\" },\n { indexed: false, name: \"wad\", type: \"uint256\" },\n ],\n name: \"Approval\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, name: \"src\", type: \"address\" },\n { indexed: true, name: \"dst\", type: \"address\" },\n { indexed: false, name: \"wad\", type: \"uint256\" },\n ],\n name: \"Transfer\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, name: \"dst\", type: \"address\" },\n { indexed: false, name: \"wad\", type: \"uint256\" },\n ],\n name: \"Deposit\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, name: \"src\", type: \"address\" },\n { indexed: false, name: \"wad\", type: \"uint256\" },\n ],\n name: \"Withdrawal\",\n type: \"event\",\n },\n];\n","import _ from \"lodash\";\nimport BigNumber from \"bignumber.js\";\nimport { uniswapPairAbi } from \"./abi/uniswap\";\nimport { erc20Abi } from \"./abi/erc20\";\nimport { getTokenData, uint256ToBigNumber } from \"./eth-helpers\";\nimport { fetchJson, sleep } from \"./helpers\";\n\nconst mintEventTopic0 = \"0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f\";\nconst burnEventTopic0 = \"0xdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496\";\n\n// analyze the current position (impermanent loss) for a liquidity provider (lp) in a uniswap pair\n// web3 - initialized web3 instance used for read only\n// fromBlock - eth block number to start analyzing activity from (use 0 for genesis)\n// toBlock - eth block number to end analyzing activity at (use \"latest\" for most recent)\n// pair - the address of the pair contract (0x string)\n// lp - the address of the liquidity provider (0x string)\nexport async function lpPosition({ web3, fromBlock, toBlock, pair, lp }) {\n const res = {\n Tokens: [],\n LiquidityChanges: [],\n SumLpTokens: new BigNumber(0),\n SumTokenDeposits: [new BigNumber(0), new BigNumber(0)],\n AvailableTokensToWithdraw: [undefined, undefined],\n TotalWorth: {},\n AvailableAfterRebalance: [],\n };\n\n if (!fromBlock) fromBlock = 0;\n if (!toBlock) toBlock = \"latest\";\n fromBlock = parseInt(fromBlock);\n if (toBlock !== \"latest\") toBlock = parseInt(toBlock);\n\n const pairContract = new web3.eth.Contract(uniswapPairAbi, pair);\n\n // token data\n const tokenDatas = await getPairTokensData(pairContract, web3);\n res.Tokens[0] = tokenDatas[0];\n res.Tokens[1] = tokenDatas[1];\n\n // add remove liquidity events\n const addEvents = await pairContract.getPastEvents(\"Transfer\", {\n filter: {\n from: \"0x0000000000000000000000000000000000000000\",\n to: lp,\n },\n fromBlock,\n toBlock,\n });\n res.LiquidityChanges.push(\n ...addEvents.map(({ transactionHash, blockNumber, returnValues }) => ({\n BlockNumber: blockNumber,\n TxHash: transactionHash,\n LpTokenDelta: new BigNumber(returnValues.value).dividedBy(\"1e18\"),\n SumLpTokensAfter: undefined,\n TokenDepositDelta: [],\n }))\n );\n const removeEvents = await pairContract.getPastEvents(\"Transfer\", {\n filter: {\n from: lp,\n to: pair,\n },\n fromBlock,\n toBlock,\n });\n res.LiquidityChanges.push(\n ...removeEvents.map(({ transactionHash, blockNumber, returnValues }) => ({\n BlockNumber: blockNumber,\n TxHash: transactionHash,\n LpTokenDelta: new BigNumber(returnValues.value).dividedBy(\"1e18\").negated(),\n SumLpTokensAfter: undefined,\n TokenDepositDelta: [],\n }))\n );\n res.LiquidityChanges.sort((a, b) => a.BlockNumber - b.BlockNumber);\n\n // download all receipts for additional logs\n for (const change of res.LiquidityChanges) {\n await sleep(200); // don't stress infura api\n const receipt = await web3.eth.getTransactionReceipt(change.TxHash);\n for (const log of receipt.logs) {\n if (log.topics[0].toLowerCase() === mintEventTopic0) {\n const inputsAbi = _.find(uniswapPairAbi, (en) => en.name === \"Mint\").inputs;\n const decoded = web3.eth.abi.decodeLog(inputsAbi, log.data, _.drop(log.topics, 1));\n change.TokenDepositDelta[0] = uint256ToBigNumber(decoded.amount0, res.Tokens[0]);\n change.TokenDepositDelta[1] = uint256ToBigNumber(decoded.amount1, res.Tokens[1]);\n }\n if (log.topics[0].toLowerCase() === burnEventTopic0) {\n const inputsAbi = _.find(uniswapPairAbi, (en) => en.name === \"Burn\").inputs;\n const decoded = web3.eth.abi.decodeLog(inputsAbi, log.data, _.drop(log.topics, 1));\n change.TokenDepositDelta[0] = uint256ToBigNumber(decoded.amount0, res.Tokens[0]).negated();\n change.TokenDepositDelta[1] = uint256ToBigNumber(decoded.amount1, res.Tokens[1]).negated();\n }\n }\n }\n\n // sums\n for (const change of res.LiquidityChanges) {\n res.SumLpTokens = res.SumLpTokens.plus(change.LpTokenDelta);\n change.SumLpTokensAfter = new BigNumber(res.SumLpTokens);\n res.SumTokenDeposits[0] = res.SumTokenDeposits[0].plus(change.TokenDepositDelta[0]);\n res.SumTokenDeposits[1] = res.SumTokenDeposits[1].plus(change.TokenDepositDelta[1]);\n }\n\n // available to withdraw\n const totalSupply = await pairContract.methods.totalSupply().call();\n const totalSupplyLpTokens = new BigNumber(totalSupply).dividedBy(\"1e18\");\n const fractionOfPool = res.SumLpTokens.dividedBy(totalSupplyLpTokens);\n const reserves = await pairContract.methods.getReserves().call();\n const token0Reserve = uint256ToBigNumber(reserves._reserve0, res.Tokens[0]);\n const token1Reserve = uint256ToBigNumber(reserves._reserve1, res.Tokens[1]);\n res.AvailableTokensToWithdraw[0] = token0Reserve.multipliedBy(fractionOfPool);\n res.AvailableTokensToWithdraw[1] = token1Reserve.multipliedBy(fractionOfPool);\n\n // worth\n res.TotalWorth.SumTokenDeposits = {\n CurrentPriceUSD: calcWorth(res.SumTokenDeposits, res.Tokens, \"CurrentPriceUSD\"),\n CurrentPriceBTC: calcWorth(res.SumTokenDeposits, res.Tokens, \"CurrentPriceBTC\"),\n CurrentPriceETH: calcWorth(res.SumTokenDeposits, res.Tokens, \"CurrentPriceETH\"),\n };\n res.TotalWorth.AvailableTokensToWithdraw = {\n CurrentPriceUSD: calcWorth(res.AvailableTokensToWithdraw, res.Tokens, \"CurrentPriceUSD\"),\n CurrentPriceBTC: calcWorth(res.AvailableTokensToWithdraw, res.Tokens, \"CurrentPriceBTC\"),\n CurrentPriceETH: calcWorth(res.AvailableTokensToWithdraw, res.Tokens, \"CurrentPriceETH\"),\n };\n\n // rebalance\n res.AvailableAfterRebalance[0] = rebalance(res.AvailableTokensToWithdraw, res.Tokens, 0, res.SumTokenDeposits[0]);\n res.AvailableAfterRebalance[1] = rebalance(res.AvailableTokensToWithdraw, res.Tokens, 1, res.SumTokenDeposits[1]);\n\n return res;\n}\n\nfunction calcWorth(amountArray, tokenDataArray, currentPriceField) {\n const worth0 = amountArray[0].multipliedBy(tokenDataArray[0][currentPriceField]);\n const worth1 = amountArray[1].multipliedBy(tokenDataArray[1][currentPriceField]);\n return worth0.plus(worth1);\n}\n\nfunction rebalance(amountArray, tokenDataArray, identicalIndex, targetAmount) {\n const res = [];\n res[identicalIndex] = new BigNumber(targetAmount);\n const diffInOriginalToken = amountArray[identicalIndex].minus(res[identicalIndex]);\n const diffInOtherToken = diffInOriginalToken\n .dividedBy(tokenDataArray[1 - identicalIndex].CurrentPriceUSD)\n .multipliedBy(tokenDataArray[identicalIndex].CurrentPriceUSD);\n res[1 - identicalIndex] = amountArray[1 - identicalIndex].plus(diffInOtherToken);\n return res;\n}\n\nasync function getPairTokensData(pairContract, web3) {\n const getTokensTxs = [\n pairContract.methods.token0().call(),\n pairContract.methods.token1().call()\n ];\n const tokens = await Promise.all(getTokensTxs);\n\n const getTokenDataTxs = [\n getTokenData(tokens[0], erc20Abi, web3),\n getTokenData(tokens[1], erc20Abi, web3),\n fetchJson(`https://api.coingecko.com/api/v3/coins/ethereum/contract/${tokens[0]}`),\n fetchJson(`https://api.coingecko.com/api/v3/coins/ethereum/contract/${tokens[1]}`)\n ]\n const tokenDatas = await Promise.all(getTokenDataTxs);\n \n return [\n fillInPrice(tokenDatas[0], tokenDatas[2]),\n fillInPrice(tokenDatas[1], tokenDatas[3])\n ];\n}\n\nfunction fillInPrice(tokenData, coingecko) {\n tokenData.CurrentPriceUSD = new BigNumber(coingecko.market_data.current_price.usd);\n tokenData.CurrentPriceBTC = new BigNumber(coingecko.market_data.current_price.btc);\n tokenData.CurrentPriceETH = new BigNumber(coingecko.market_data.current_price.eth);\n return tokenData;\n}","import React, { useState } from \"react\";\nimport { Container, Segment, Form } from \"semantic-ui-react\";\nimport { lpPosition } from \"web3-snippets/uniswap\";\nimport { useApiKeys } from \"../ApiKeys\";\n\nfunction Snippet() {\n const { web3 } = useApiKeys();\n const [input, setInput] = useState({});\n const [result, setResult] = useState();\n const [loading, setLoading] = useState(false);\n const handleChange = (_e, { name, value }) => setInput({ ...input, [name]: value });\n const handleSubmit = async () => {\n const { fromBlock, toBlock, pair, lp } = input;\n setLoading(true);\n const result = await lpPosition({ web3, fromBlock, toBlock, pair, lp });\n setResult(result);\n setLoading(false);\n };\n return (\n
\n

Uniswap Impermanent Loss

\n
\n \n \n
\n \n \n \n \n \n \n Submit\n \n
\n
{JSON.stringify(result, null, 2)}
\n
\n
\n );\n}\n\nexport default Snippet;\n","// calculate the profit from compounding an investment in a certain rate\n// amount - number of tokens being invested (before compounding)\n// apy - annual return (without compounding) in percent (ie. 19.2)\n// days - how many days the investment will remain active (ie. 7.4)\n// cpCost - cost of every compound operations in number of tokens like amount\n// cpRateMinutes - every how many minutes do we compound\nexport function compoundingSim({ amount, apy, days, cpCost, cpRateMinutes }) {\n amount = parseFloat(amount);\n apy = parseFloat(apy);\n days = parseFloat(days);\n cpCost = parseFloat(cpCost);\n cpRateMinutes = parseFloat(cpRateMinutes);\n\n const res = internalCalculation({ amount, apy, days, cpCost, cpRateMinutes });\n\n res.RecommendedMinutes = findRecommendedMinutes({ amount, apy, days, cpCost, maxMin: 7*24*60 });\n\n return res; \n}\n\nfunction internalCalculation({ amount, apy, days, cpCost, cpRateMinutes }) {\n const res = {\n ResultWithoutCompound: 0,\n ResultWithCompound: 0,\n CompoundingProfit: 0,\n CompoundingProfitPercent: 0,\n };\n \n res.ResultWithoutCompound = amount + amount * apy/100 * days/365;\n\n let amountSoFar = amount;\n let minutesSoFar = 0;\n while (minutesSoFar + cpRateMinutes < days*24*60) {\n minutesSoFar += cpRateMinutes;\n amountSoFar += amountSoFar * apy/100 * cpRateMinutes/24/60/365;\n amountSoFar -= cpCost;\n }\n const remainingMinutes = days*24*60 - minutesSoFar;\n amountSoFar += amountSoFar * apy/100 * remainingMinutes/24/60/365;\n res.ResultWithCompound = amountSoFar;\n\n res.CompoundingProfit = res.ResultWithCompound - res.ResultWithoutCompound;\n res.CompoundingProfitPercent = res.CompoundingProfit / res.ResultWithoutCompound * 100;\n\n return res;\n}\n\nfunction findRecommendedMinutes({ amount, apy, days, cpCost, maxMin }) {\n let bestProfit = 0;\n let bestMin = 0;\n\n const delta = maxMin / 100000;\n for (let cpRateMinutes = 0.1; cpRateMinutes < maxMin; cpRateMinutes += delta) {\n const res = internalCalculation({ amount, apy, days, cpCost, cpRateMinutes });\n if (res.CompoundingProfit > bestProfit) {\n bestProfit = res.CompoundingProfit;\n bestMin = cpRateMinutes;\n }\n }\n\n return bestMin;\n}","import React, { useState } from \"react\";\nimport { Container, Segment, Form } from \"semantic-ui-react\";\nimport { compoundingSim } from \"web3-snippets/compounding\";\n\nfunction Snippet() {\n const [input, setInput] = useState({});\n const [result, setResult] = useState();\n const [loading, setLoading] = useState(false);\n const handleChange = (_e, { name, value }) => setInput({ ...input, [name]: value });\n const handleSubmit = () => {\n const { amount, apy, days, cpCost, cpRateMinutes } = input;\n setLoading(true);\n const result = compoundingSim({ amount, apy, days, cpCost, cpRateMinutes });\n setResult(result);\n setLoading(false);\n };\n return (\n
\n

Compounding Profit Calculator

\n
\n \n \n
\n \n \n \n \n \n \n \n \n \n Submit\n \n
\n
{JSON.stringify(result, null, 2)}
\n
\n
\n );\n}\n\nexport default Snippet;\n","export const pancakePairAbi = [{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve0\",\"type\":\"uint112\"},{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve1\",\"type\":\"uint112\"}],\"name\":\"Sync\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MINIMUM_LIQUIDITY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"_reserve0\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"_reserve1\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"_blockTimestampLast\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token1\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"kLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"price0CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"price1CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"skim\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"sync\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}];","export const bep20Abi = [\n\t{\n\t\t\"anonymous\": false,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"owner\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"spender\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"indexed\": false,\n\t\t\t\t\"internalType\": \"uint256\",\n\t\t\t\t\"name\": \"value\",\n\t\t\t\t\"type\": \"uint256\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"Approval\",\n\t\t\"type\": \"event\"\n\t},\n\t{\n\t\t\"anonymous\": false,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"from\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"to\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"indexed\": false,\n\t\t\t\t\"internalType\": \"uint256\",\n\t\t\t\t\"name\": \"value\",\n\t\t\t\t\"type\": \"uint256\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"Transfer\",\n\t\t\"type\": \"event\"\n\t},\n\t{\n\t\t\"constant\": true,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"_owner\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"spender\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"allowance\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint256\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"uint256\"\n\t\t\t}\n\t\t],\n\t\t\"payable\": false,\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"constant\": false,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"spender\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint256\",\n\t\t\t\t\"name\": \"amount\",\n\t\t\t\t\"type\": \"uint256\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"approve\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bool\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bool\"\n\t\t\t}\n\t\t],\n\t\t\"payable\": false,\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"constant\": true,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"account\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"balanceOf\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint256\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"uint256\"\n\t\t\t}\n\t\t],\n\t\t\"payable\": false,\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"constant\": true,\n\t\t\"inputs\": [],\n\t\t\"name\": \"decimals\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint8\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"uint8\"\n\t\t\t}\n\t\t],\n\t\t\"payable\": false,\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"constant\": true,\n\t\t\"inputs\": [],\n\t\t\"name\": \"getOwner\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"payable\": false,\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"constant\": true,\n\t\t\"inputs\": [],\n\t\t\"name\": \"name\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"string\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"string\"\n\t\t\t}\n\t\t],\n\t\t\"payable\": false,\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"constant\": true,\n\t\t\"inputs\": [],\n\t\t\"name\": \"symbol\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"string\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"string\"\n\t\t\t}\n\t\t],\n\t\t\"payable\": false,\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"constant\": true,\n\t\t\"inputs\": [],\n\t\t\"name\": \"totalSupply\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint256\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"uint256\"\n\t\t\t}\n\t\t],\n\t\t\"payable\": false,\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"constant\": false,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"recipient\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint256\",\n\t\t\t\t\"name\": \"amount\",\n\t\t\t\t\"type\": \"uint256\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"transfer\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bool\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bool\"\n\t\t\t}\n\t\t],\n\t\t\"payable\": false,\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"constant\": false,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"sender\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"recipient\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint256\",\n\t\t\t\t\"name\": \"amount\",\n\t\t\t\t\"type\": \"uint256\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"transferFrom\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bool\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bool\"\n\t\t\t}\n\t\t],\n\t\t\"payable\": false,\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t}\n]; ","import _ from \"lodash\";\nimport BigNumber from \"bignumber.js\";\nimport { fetchJson } from \"./helpers\";\nimport { pancakePairAbi } from \"./abi/pancake-pair\";\nimport { bep20Abi } from \"./abi/bep20\";\nimport { getTokenData, uint256ToBigNumber } from \"./eth-helpers\";\n\nconst mintEventTopic0 = \"0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f\";\nconst burnEventTopic0 = \"0xdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496\";\n\n// analyze the current position (impermanent loss) for a liquidity provider (lp) in a uniswap pair\n// web3 - initialized web3 instance used for read only\n// fromBlock - eth block number to start analyzing activity from (use 0 for genesis)\n// toBlock - eth block number to end analyzing activity at (use \"latest\" for most recent)\n// pair - the address of the pair contract (0x string)\n// lp - the address of the liquidity provider (0x string)\nexport async function pancakeLpPosition({ bscWeb3, fromBlock, toBlock, pair, lp }) {\n const res = {\n Tokens: [],\n LiquidityChanges: [],\n SumLpTokens: new BigNumber(0),\n SumTokenDeposits: [new BigNumber(0), new BigNumber(0)],\n AvailableTokensToWithdraw: [undefined, undefined],\n TotalWorth: {},\n AvailableAfterRebalance: [],\n };\n\n if (!fromBlock) fromBlock = 0;\n if (!toBlock) toBlock = \"latest\";\n fromBlock = parseInt(fromBlock);\n if (toBlock !== \"latest\") toBlock = parseInt(toBlock);\n\n const pairContract = new bscWeb3.eth.Contract(pancakePairAbi, pair);\n const tokenDatas = await getPairTokensData(pairContract, bscWeb3);\n res.Tokens[0] = tokenDatas[0];\n res.Tokens[1] = tokenDatas[1];\n\n // add remove liquidity events\n const addEvents = await pairContract.getPastEvents(\"Transfer\", {\n filter: {\n from: \"0x0000000000000000000000000000000000000000\",\n to: lp,\n },\n fromBlock,\n toBlock,\n });\n res.LiquidityChanges.push(\n ...addEvents.map(({ transactionHash, blockNumber, returnValues }) => ({\n BlockNumber: blockNumber,\n TxHash: transactionHash,\n LpTokenDelta: new BigNumber(returnValues.value).dividedBy(\"1e18\"),\n SumLpTokensAfter: undefined,\n TokenDepositDelta: [],\n }))\n );\n const removeEvents = await pairContract.getPastEvents(\"Transfer\", {\n filter: {\n from: lp,\n to: pair,\n },\n fromBlock,\n toBlock,\n });\n res.LiquidityChanges.push(\n ...removeEvents.map(({ transactionHash, blockNumber, returnValues }) => ({\n BlockNumber: blockNumber,\n TxHash: transactionHash,\n LpTokenDelta: new BigNumber(returnValues.value).dividedBy(\"1e18\").negated(),\n SumLpTokensAfter: undefined,\n TokenDepositDelta: [],\n }))\n );\n res.LiquidityChanges.sort((a, b) => a.BlockNumber - b.BlockNumber);\n\n // download all receipts for additional logs\n for (const change of res.LiquidityChanges) {\n const receipt = await bscWeb3.eth.getTransactionReceipt(change.TxHash);\n for (const log of receipt.logs) {\n if (log.topics[0].toLowerCase() === mintEventTopic0) {\n const inputsAbi = _.find(pancakePairAbi, (en) => en.name === \"Mint\").inputs;\n const decoded = bscWeb3.eth.abi.decodeLog(inputsAbi, log.data, _.drop(log.topics, 1));\n change.TokenDepositDelta[0] = uint256ToBigNumber(decoded.amount0, res.Tokens[0]);\n change.TokenDepositDelta[1] = uint256ToBigNumber(decoded.amount1, res.Tokens[1]);\n }\n if (log.topics[0].toLowerCase() === burnEventTopic0) {\n const inputsAbi = _.find(pancakePairAbi, (en) => en.name === \"Burn\").inputs;\n const decoded = bscWeb3.eth.abi.decodeLog(inputsAbi, log.data, _.drop(log.topics, 1));\n change.TokenDepositDelta[0] = uint256ToBigNumber(decoded.amount0, res.Tokens[0]).negated();\n change.TokenDepositDelta[1] = uint256ToBigNumber(decoded.amount1, res.Tokens[1]).negated();\n }\n }\n }\n\n // sums\n for (const change of res.LiquidityChanges) {\n res.SumLpTokens = res.SumLpTokens.plus(change.LpTokenDelta);\n change.SumLpTokensAfter = new BigNumber(res.SumLpTokens);\n res.SumTokenDeposits[0] = res.SumTokenDeposits[0].plus(change.TokenDepositDelta[0]);\n res.SumTokenDeposits[1] = res.SumTokenDeposits[1].plus(change.TokenDepositDelta[1]);\n }\n\n // available to withdraw\n const totalSupply = await pairContract.methods.totalSupply().call();\n const totalSupplyLpTokens = new BigNumber(totalSupply).dividedBy(\"1e18\");\n const fractionOfPool = res.SumLpTokens.dividedBy(totalSupplyLpTokens);\n const reserves = await pairContract.methods.getReserves().call();\n const token0Reserve = uint256ToBigNumber(reserves._reserve0, res.Tokens[0]);\n const token1Reserve = uint256ToBigNumber(reserves._reserve1, res.Tokens[1]);\n res.AvailableTokensToWithdraw[0] = token0Reserve.multipliedBy(fractionOfPool);\n res.AvailableTokensToWithdraw[1] = token1Reserve.multipliedBy(fractionOfPool);\n\n // worth\n res.TotalWorth.SumTokenDeposits = {\n CurrentPriceUSD: calcWorth(res.SumTokenDeposits, res.Tokens, \"CurrentPriceUSD\"),\n CurrentPriceBTC: calcWorth(res.SumTokenDeposits, res.Tokens, \"CurrentPriceBTC\"),\n CurrentPriceETH: calcWorth(res.SumTokenDeposits, res.Tokens, \"CurrentPriceETH\"),\n };\n res.TotalWorth.AvailableTokensToWithdraw = {\n CurrentPriceUSD: calcWorth(res.AvailableTokensToWithdraw, res.Tokens, \"CurrentPriceUSD\"),\n CurrentPriceBTC: calcWorth(res.AvailableTokensToWithdraw, res.Tokens, \"CurrentPriceBTC\"),\n CurrentPriceETH: calcWorth(res.AvailableTokensToWithdraw, res.Tokens, \"CurrentPriceETH\"),\n };\n\n // rebalance\n res.AvailableAfterRebalance[0] = rebalance(res.AvailableTokensToWithdraw, res.Tokens, 0, res.SumTokenDeposits[0]);\n res.AvailableAfterRebalance[1] = rebalance(res.AvailableTokensToWithdraw, res.Tokens, 1, res.SumTokenDeposits[1]);\n\n return res;\n}\n\nfunction calcWorth(amountArray, tokenDataArray, currentPriceField) {\n const worth0 = amountArray[0].multipliedBy(tokenDataArray[0][currentPriceField]);\n const worth1 = amountArray[1].multipliedBy(tokenDataArray[1][currentPriceField]);\n return worth0.plus(worth1);\n}\n\nfunction rebalance(amountArray, tokenDataArray, identicalIndex, targetAmount) {\n const res = [];\n res[identicalIndex] = new BigNumber(targetAmount);\n const diffInOriginalToken = amountArray[identicalIndex].minus(res[identicalIndex]);\n const diffInOtherToken = diffInOriginalToken\n .dividedBy(tokenDataArray[1 - identicalIndex].CurrentPriceUSD)\n .multipliedBy(tokenDataArray[identicalIndex].CurrentPriceUSD);\n res[1 - identicalIndex] = amountArray[1 - identicalIndex].plus(diffInOtherToken);\n return res;\n}\n\nasync function getPairTokensData(pairContract, web3) {\n const getTokensTxs = [\n pairContract.methods.token0().call(),\n pairContract.methods.token1().call()\n ];\n const tokens = await Promise.all(getTokensTxs);\n\n const getTokenDataTxs = [\n getTokenData(tokens[0], bep20Abi, web3),\n getTokenData(tokens[1], bep20Abi, web3)\n ]\n const tokenDatas = await Promise.all(getTokenDataTxs);\n\n const coingeckoCoinsData = await fetchJson('https://api.coingecko.com/api/v3/coins/list');\n const tokenPricesTxs = [null, null];\n for(const coinData of coingeckoCoinsData) {\n const symbol = coinData.symbol.toUpperCase();\n if (symbol === tokenDatas[0].Symbol ) {\n tokenPricesTxs[0] = fetchJson(`https://api.coingecko.com/api/v3/coins/${coinData.id}`);\n }\n if (symbol === tokenDatas[1].Symbol ) {\n tokenPricesTxs[1] = fetchJson(`https://api.coingecko.com/api/v3/coins/${coinData.id}`);\n }\n }\n if (tokenPricesTxs[0] === null || tokenPricesTxs[1] === null) {\n throw new Error(`Could not find price data for one or both of the tokens (${tokenRawDatas[2]}, ${tokenRawDatas[5]})`)\n }\n const tokenPrices = await Promise.all(tokenPricesTxs);\n \n return [\n fillInPrice(tokenDatas[0], tokenPrices[0]),\n fillInPrice(tokenDatas[1], tokenPrices[1])\n ];\n}\n\nfunction fillInPrice(tokenData, coingecko) {\n tokenData.CurrentPriceUSD = new BigNumber(coingecko.market_data.current_price.usd);\n tokenData.CurrentPriceBTC = new BigNumber(coingecko.market_data.current_price.btc);\n tokenData.CurrentPriceETH = new BigNumber(coingecko.market_data.current_price.eth);\n return tokenData;\n}","import React, { useState } from \"react\";\nimport { Container, Segment, Form } from \"semantic-ui-react\";\nimport { pancakeLpPosition } from \"web3-snippets/pancake\";\nimport { useApiKeys } from \"../ApiKeys\";\n\nfunction Snippet() {\n const { bscWeb3 } = useApiKeys();\n const [input, setInput] = useState({});\n const [result, setResult] = useState();\n const [loading, setLoading] = useState(false);\n const handleChange = (_e, { name, value }) => setInput({ ...input, [name]: value });\n const handleSubmit = async () => {\n const { fromBlock, toBlock, pair, lp } = input;\n setLoading(true);\n const result = await pancakeLpPosition({ bscWeb3, fromBlock, toBlock, pair, lp });\n setResult(result);\n setLoading(false);\n };\n return (\n
\n

Pancake Impermanent Loss

\n
\n \n \n
\n \n \n \n \n \n \n Submit\n \n
\n
{JSON.stringify(result, null, 2)}
\n
\n
\n );\n}\n\nexport default Snippet;\n","export const balancerPoolAbi = [{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amt\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":true,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"sig\",\"type\":\"bytes4\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"LOG_CALL\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenAmountOut\",\"type\":\"uint256\"}],\"name\":\"LOG_EXIT\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenAmountIn\",\"type\":\"uint256\"}],\"name\":\"LOG_JOIN\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenAmountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenAmountOut\",\"type\":\"uint256\"}],\"name\":\"LOG_SWAP\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amt\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"BONE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"BPOW_PRECISION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"EXIT_FEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"INIT_POOL_SUPPLY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_BOUND_TOKENS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_BPOW_BASE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_FEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_IN_RATIO\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_OUT_RATIO\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_TOTAL_WEIGHT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_WEIGHT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MIN_BALANCE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MIN_BOUND_TOKENS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MIN_BPOW_BASE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MIN_FEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MIN_WEIGHT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amt\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"whom\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denorm\",\"type\":\"uint256\"}],\"name\":\"bind\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenBalanceIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenWeightIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenBalanceOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenWeightOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"swapFee\",\"type\":\"uint256\"}],\"name\":\"calcInGivenOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenAmountIn\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenBalanceIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenWeightIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenBalanceOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenWeightOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"swapFee\",\"type\":\"uint256\"}],\"name\":\"calcOutGivenIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenAmountOut\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenBalanceOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenWeightOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"poolSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalWeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"swapFee\",\"type\":\"uint256\"}],\"name\":\"calcPoolInGivenSingleOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"poolAmountIn\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenBalanceIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenWeightIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"poolSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalWeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"swapFee\",\"type\":\"uint256\"}],\"name\":\"calcPoolOutGivenSingleIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"poolAmountOut\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenBalanceIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenWeightIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"poolSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalWeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"poolAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"swapFee\",\"type\":\"uint256\"}],\"name\":\"calcSingleInGivenPoolOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenAmountIn\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenBalanceOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenWeightOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"poolSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalWeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"poolAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"swapFee\",\"type\":\"uint256\"}],\"name\":\"calcSingleOutGivenPoolIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenAmountOut\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenBalanceIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenWeightIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenBalanceOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenWeightOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"swapFee\",\"type\":\"uint256\"}],\"name\":\"calcSpotPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"spotPrice\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amt\",\"type\":\"uint256\"}],\"name\":\"decreaseApproval\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"poolAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"}],\"name\":\"exitPool\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPoolAmountIn\",\"type\":\"uint256\"}],\"name\":\"exitswapExternAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"poolAmountIn\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"poolAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"exitswapPoolAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenAmountOut\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"finalize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getColor\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getController\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCurrentTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getDenormalizedWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getFinalTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getNormalizedWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getNumTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"}],\"name\":\"getSpotPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"spotPrice\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"}],\"name\":\"getSpotPriceSansFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"spotPrice\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getSwapFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getTotalDenormalizedWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"gulp\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amt\",\"type\":\"uint256\"}],\"name\":\"increaseApproval\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"t\",\"type\":\"address\"}],\"name\":\"isBound\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isFinalized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isPublicSwap\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"poolAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"}],\"name\":\"joinPool\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minPoolAmountOut\",\"type\":\"uint256\"}],\"name\":\"joinswapExternAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"poolAmountOut\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"poolAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"}],\"name\":\"joinswapPoolAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenAmountIn\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denorm\",\"type\":\"uint256\"}],\"name\":\"rebind\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"}],\"name\":\"setController\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bool\",\"name\":\"public_\",\"type\":\"bool\"}],\"name\":\"setPublicSwap\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"swapFee\",\"type\":\"uint256\"}],\"name\":\"setSwapFee\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPrice\",\"type\":\"uint256\"}],\"name\":\"swapExactAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"spotPriceAfter\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPrice\",\"type\":\"uint256\"}],\"name\":\"swapExactAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"spotPriceAfter\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amt\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amt\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"unbind\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]","export const oneinchPairAbi = [{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"_token0\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"_token1\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"contract IMooniswapFactoryGovernance\",\"name\":\"_mooniswapFactoryGovernance\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decayPeriod\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isDefault\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"DecayPeriodVoteUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"share\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"token0Amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"token1Amount\",\"type\":\"uint256\"}],\"name\":\"Deposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"Error\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isDefault\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"FeeVoteUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slippageFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isDefault\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SlippageFeeVoteUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"srcToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"dstToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"result\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"srcAdditionBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"dstRemovalBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"referral\",\"type\":\"address\"}],\"name\":\"Swapped\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"srcBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"dstBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slippageFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"referralShare\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"governanceShare\",\"type\":\"uint256\"}],\"name\":\"Sync\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"share\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"token0Amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"token1Amount\",\"type\":\"uint256\"}],\"name\":\"Withdrawn\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decayPeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vote\",\"type\":\"uint256\"}],\"name\":\"decayPeriodVote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"decayPeriodVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[2]\",\"name\":\"maxAmounts\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"minAmounts\",\"type\":\"uint256[2]\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"fairSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256[2]\",\"name\":\"receivedAmounts\",\"type\":\"uint256[2]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[2]\",\"name\":\"maxAmounts\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"minAmounts\",\"type\":\"uint256[2]\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"depositFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"fairSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256[2]\",\"name\":\"receivedAmounts\",\"type\":\"uint256[2]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"discardDecayPeriodVote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"discardFeeVote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"discardSlippageFeeVote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vote\",\"type\":\"uint256\"}],\"name\":\"feeVote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"feeVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getBalanceForAddition\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getBalanceForRemoval\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"getReturn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTokens\",\"outputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mooniswapFactoryGovernance\",\"outputs\":[{\"internalType\":\"contract IMooniswapFactoryGovernance\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"rescueFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IMooniswapFactoryGovernance\",\"name\":\"newMooniswapFactoryGovernance\",\"type\":\"address\"}],\"name\":\"setMooniswapFactoryGovernance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slippageFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vote\",\"type\":\"uint256\"}],\"name\":\"slippageFeeVote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"slippageFeeVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minReturn\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"referral\",\"type\":\"address\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"result\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minReturn\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"referral\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"swapFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"result\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"}],\"name\":\"tokens\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"virtualBalancesForAddition\",\"outputs\":[{\"internalType\":\"uint216\",\"name\":\"balance\",\"type\":\"uint216\"},{\"internalType\":\"uint40\",\"name\":\"time\",\"type\":\"uint40\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"virtualBalancesForRemoval\",\"outputs\":[{\"internalType\":\"uint216\",\"name\":\"balance\",\"type\":\"uint216\"},{\"internalType\":\"uint40\",\"name\":\"time\",\"type\":\"uint40\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"virtualDecayPeriod\",\"outputs\":[{\"internalType\":\"uint104\",\"name\":\"\",\"type\":\"uint104\"},{\"internalType\":\"uint104\",\"name\":\"\",\"type\":\"uint104\"},{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"virtualFee\",\"outputs\":[{\"internalType\":\"uint104\",\"name\":\"\",\"type\":\"uint104\"},{\"internalType\":\"uint104\",\"name\":\"\",\"type\":\"uint104\"},{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"virtualSlippageFee\",\"outputs\":[{\"internalType\":\"uint104\",\"name\":\"\",\"type\":\"uint104\"},{\"internalType\":\"uint104\",\"name\":\"\",\"type\":\"uint104\"},{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"volumes\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"confirmed\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"result\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"minReturns\",\"type\":\"uint256[]\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256[2]\",\"name\":\"withdrawnAmounts\",\"type\":\"uint256[2]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"minReturns\",\"type\":\"uint256[]\"},{\"internalType\":\"address payable\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"withdrawFor\",\"outputs\":[{\"internalType\":\"uint256[2]\",\"name\":\"withdrawnAmounts\",\"type\":\"uint256[2]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}];","export const sushiswapPairAbi = [{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve0\",\"type\":\"uint112\"},{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve1\",\"type\":\"uint112\"}],\"name\":\"Sync\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINIMUM_LIQUIDITY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"_reserve0\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"_reserve1\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"_blockTimestampLast\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token1\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"kLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price0CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price1CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"skim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sync\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}];","export const sushiMasterchefAbi = [{\"inputs\":[{\"internalType\":\"contract SushiToken\",\"name\":\"_sushi\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_devaddr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_sushiPerBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_startBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_bonusEndBlock\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"EmergencyWithdraw\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BONUS_MULTIPLIER\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_allocPoint\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC20\",\"name\":\"_lpToken\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_withUpdate\",\"type\":\"bool\"}],\"name\":\"add\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bonusEndBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_devaddr\",\"type\":\"address\"}],\"name\":\"dev\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"devaddr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"}],\"name\":\"emergencyWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_from\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_to\",\"type\":\"uint256\"}],\"name\":\"getMultiplier\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"massUpdatePools\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"}],\"name\":\"migrate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"migrator\",\"outputs\":[{\"internalType\":\"contract IMigratorChef\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"pendingSushi\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"poolInfo\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"lpToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allocPoint\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastRewardBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"accSushiPerShare\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"poolLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_allocPoint\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_withUpdate\",\"type\":\"bool\"}],\"name\":\"set\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IMigratorChef\",\"name\":\"_migrator\",\"type\":\"address\"}],\"name\":\"setMigrator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sushi\",\"outputs\":[{\"internalType\":\"contract SushiToken\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sushiPerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalAllocPoint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"}],\"name\":\"updatePool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"userInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rewardDebt\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}];","export const unicPairAbi = [{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve0\",\"type\":\"uint112\"},{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve1\",\"type\":\"uint112\"}],\"name\":\"Sync\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINIMUM_LIQUIDITY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"_reserve0\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"_reserve1\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"_blockTimestampLast\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token1\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"kLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price0CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price1CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"skim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sync\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}];","export const unicFarmAbi = [{\"inputs\":[{\"internalType\":\"contract Unic\",\"name\":\"_unic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_devaddr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_mintRateMultiplier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_mintRateDivider\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_unicPerBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_startBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_blocksPerTranche\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"allocPoint\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"lpToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"withUpdate\",\"type\":\"bool\"}],\"name\":\"Add\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"devaddr\",\"type\":\"address\"}],\"name\":\"Dev\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"EmergencyWithdraw\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"MassUpdatePools\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"allocPoint\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"withUpdate\",\"type\":\"bool\"}],\"name\":\"Set\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"}],\"name\":\"UpdatePool\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_allocPoint\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC20\",\"name\":\"_lpToken\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_withUpdate\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"_uToken\",\"type\":\"address\"}],\"name\":\"add\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blocksPerTranche\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_devaddr\",\"type\":\"address\"}],\"name\":\"dev\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"devaddr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"}],\"name\":\"emergencyWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_from\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_to\",\"type\":\"uint256\"}],\"name\":\"getRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"massUpdatePools\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mintRateDivider\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mintRateMultiplier\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"pendingUnic\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"poolInfo\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"lpToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allocPoint\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastRewardBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"accUnicPerShare\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"uToken\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"poolLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_allocPoint\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_withUpdate\",\"type\":\"bool\"}],\"name\":\"set\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_mintRateMultiplier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_mintRateDivider\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_unicPerBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_blocksPerTranche\",\"type\":\"uint256\"}],\"name\":\"setMintRules\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_startBlock\",\"type\":\"uint256\"}],\"name\":\"setStartBlock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalAllocPoint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tranche\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unic\",\"outputs\":[{\"internalType\":\"contract Unic\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unicPerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"}],\"name\":\"updatePool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"userInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rewardDebt\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"whitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}];","export const oneInchFarmAbi = [{\"inputs\":[{\"internalType\":\"contract Mooniswap\",\"name\":\"_mooniswap\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"_gift\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_duration\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decayPeriod\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isDefault\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"DecayPeriodVoteUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isDefault\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"FeeVoteUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"}],\"name\":\"RewardAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"}],\"name\":\"RewardPaid\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slippageFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isDefault\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SlippageFeeVoteUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Staked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdrawn\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decayPeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vote\",\"type\":\"uint256\"}],\"name\":\"decayPeriodVote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"decayPeriodVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"discardDecayPeriodVote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"discardFeeVote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"discardSlippageFeeVote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"duration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"earned\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"exit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vote\",\"type\":\"uint256\"}],\"name\":\"feeVote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"feeVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gift\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastTimeRewardApplicable\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastUpdateTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mooniswap\",\"outputs\":[{\"internalType\":\"contract Mooniswap\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mooniswapFactoryGovernance\",\"outputs\":[{\"internalType\":\"contract IMooniswapFactoryGovernance\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"}],\"name\":\"notifyRewardAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"periodFinish\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"rescueFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardDistribution\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardPerToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardPerTokenStored\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"rewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_rewardDistribution\",\"type\":\"address\"}],\"name\":\"setRewardDistribution\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slippageFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vote\",\"type\":\"uint256\"}],\"name\":\"slippageFeeVote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"slippageFeeVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"stake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"userRewardPerTokenPaid\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}];","import BigNumber from 'bignumber.js';\nimport { erc20Abi } from './abi/erc20';\nimport { balancerPoolAbi } from './abi/balancer-pool';\nimport { uniswapPairAbi } from './abi/uniswap';\nimport { oneinchPairAbi } from './abi/oneinche-pair';\nimport { sushiswapPairAbi } from './abi/sushiswap-pair';\nimport { sushiMasterchefAbi } from './abi/sushi-masterchef';\nimport { unicPairAbi } from './abi/unic-pair';\nimport { unicFarmAbi } from './abi/unicFarm';\nimport { bigToNumber, getContract, getTokenData, isAddress } from './eth-helpers';\nimport { oneInchFarmAbi } from './abi/one-inch-farm';\nimport { fetchJsonPost } from './helpers';\n\nexport const PoolType = {\n BALANCER: 'BALANCER',\n UNISWAP: 'UNISWAP',\n SUSHISWAP: 'SUSHISWAP',\n ONEINCH: 'ONEINCH',\n UJENNY: 'UJENNY'\n}\n\nconst EmptyAddress = '0x0000000000000000000000000000000000000000';\n\nexport async function lpPositionStatus(holderInfo, poolType, poolAddress, web3, optionalFarmAddress) {\n switch(poolType) {\n case PoolType.BALANCER:\n return getBalancerPoolData(holderInfo, poolAddress, web3);\n case PoolType.UNISWAP:\n return getUniswapPoolData(holderInfo, poolAddress, web3);\n case PoolType.SUSHISWAP:\n return getSushiswapPoolData(holderInfo, poolAddress, optionalFarmAddress || '', web3);\n case PoolType.ONEINCH:\n return getOneInchPoolData(holderInfo, poolAddress, optionalFarmAddress || '', web3);\n case PoolType.UJENNY:\n return getUJennyPoolData(holderInfo, poolAddress, optionalFarmAddress || '', web3);\n default:\n throw new Error(`lpPositionStatus: Pool ${poolType} not recognized`);\n }\n}\n\nfunction newPoolData(PoolAddress, HolderAddress, totalLPSupply, holderLPBalance, lpTokenDecimals, positionValue, farmAddress, indirectFranctionOfPool, farmRewardTokenData){\n const holderPoolData = {\n PoolAddress,\n TotalLPSupply: bigToNumber(totalLPSupply, lpTokenDecimals),\n HolderAddress : isAddress(HolderAddress) ? HolderAddress : 'Not Given',\n HolderLPBalance: bigToNumber(holderLPBalance, lpTokenDecimals),\n };\n if(isAddress(farmAddress)) {\n holderPoolData.FarmAddress = farmAddress;\n holderPoolData.HolderLPBalanceThroughFarm = bigToNumber(totalLPSupply.multipliedBy(indirectFranctionOfPool), lpTokenDecimals);\n holderPoolData.UnclaimedReward = farmRewardTokenData;\n }\n holderPoolData.PositionValue = positionValue;\n return holderPoolData\n}\n\nasync function getBalancerPoolData(holderInfo, poolAddress, web3) {\n const pool = getContract(poolAddress, balancerPoolAbi, web3);\n const poolDataTxs = [\n pool.methods.totalSupply().call(),\n pool.methods.decimals().call(),\n pool.methods.getFinalTokens().call()\n ];\n if (isAddress(holderInfo)) {\n poolDataTxs.push(pool.methods.balanceOf(holderInfo).call());\n }\n const poolDataRes = await Promise.all(poolDataTxs);\n \n const totalLp = new BigNumber(poolDataRes[0])\n const holderLp = new BigNumber(isAddress(holderInfo) ? poolDataRes[3] : holderInfo);\n const lpTokenDecimals = poolDataRes[1];\n const fractionOfPool = holderLp.dividedBy(totalLp);\n\n const tokenTxs = [];\n poolDataRes[2].map(tokenAddress => {\n tokenTxs.push(getTokenData(tokenAddress, erc20Abi, web3));\n tokenTxs.push(pool.methods.getBalance(tokenAddress).call());\n });\n const tokenRes = await Promise.all(tokenTxs);\n const positionValues = [];\n for(let i = 0;i < tokenRes.length;i+=2){\n tokenRes[i].Balance = bigToNumber(new BigNumber(tokenRes[i+1]).multipliedBy(fractionOfPool), tokenRes[i]);\n positionValues.push(tokenRes[i]);\n }\n\n return newPoolData(poolAddress, holderInfo, totalLp, holderLp, lpTokenDecimals, positionValues); \n}\n\nasync function getUniswapPoolData(holderInfo, poolAddress, web3) {\n const pool = getContract(poolAddress, uniswapPairAbi, web3);\n const poolDataTxs = [\n pool.methods.totalSupply().call(),\n pool.methods.decimals().call(),\n pool.methods.token0().call(),\n pool.methods.token1().call(),\n pool.methods.getReserves().call()\n ];\n if (isAddress(holderInfo)) {\n poolDataTxs.push(pool.methods.balanceOf(holderInfo).call());\n }\n const poolDataRes = await Promise.all(poolDataTxs);\n \n const totalLp = new BigNumber(poolDataRes[0])\n const holderLp = new BigNumber(isAddress(holderInfo) ? poolDataRes[5] : holderInfo);\n const lpTokenDecimals = poolDataRes[1];\n const fractionOfPool = holderLp.dividedBy(totalLp);\n\n const tokenTxs = [\n getTokenData(poolDataRes[2], erc20Abi, web3),\n getTokenData(poolDataRes[3], erc20Abi, web3) \n ];\n const positionValues = await Promise.all(tokenTxs);\n positionValues[0].Balance = bigToNumber(new BigNumber(poolDataRes[4][\"0\"]).multipliedBy(fractionOfPool), positionValues[0]);\n positionValues[1].Balance = bigToNumber(new BigNumber(poolDataRes[4][\"1\"]).multipliedBy(fractionOfPool), positionValues[1]);\n\n return newPoolData(poolAddress, holderInfo, totalLp, holderLp, lpTokenDecimals, positionValues); \n}\n\nconst MasterChefAddress = '0xc2EdaD668740f1aA35E4D8f227fB8E17dcA888Cd';\nconst SushiTokenAddress = '0x6b3595068778dd592e39a122f4f5a5cf09c90fe2';\nasync function getSushiswapPoolData(holderInfo, poolAddress, farmPoolNumber, web3) {\n const pool = getContract(poolAddress, sushiswapPairAbi, web3);\n const poolDataTxs = [\n pool.methods.totalSupply().call(),\n pool.methods.decimals().call(),\n pool.methods.token0().call(),\n pool.methods.token1().call(),\n pool.methods.getReserves().call()\n ];\n if (isAddress(holderInfo)) {\n poolDataTxs.push(pool.methods.balanceOf(holderInfo).call());\n if (farmPoolNumber !== '') {\n const masterChef = getContract(MasterChefAddress, sushiMasterchefAbi, web3);\n poolDataTxs.push(masterChef.methods.userInfo(farmPoolNumber, holderInfo).call());\n poolDataTxs.push(masterChef.methods.pendingSushi(farmPoolNumber, holderInfo).call());\n poolDataTxs.push(getTokenData(SushiTokenAddress, erc20Abi, web3, holderInfo));\n poolDataTxs.push(sushiCalculateLocked(holderInfo, farmPoolNumber));\n }\n }\n const poolDataRes = await Promise.all(poolDataTxs);\n \n const totalLp = new BigNumber(poolDataRes[0])\n const holderLp = new BigNumber(isAddress(holderInfo) ? poolDataRes[5] : holderInfo);\n const lpTokenDecimals = poolDataRes[1];\n const directFractionOfPool = holderLp.dividedBy(totalLp);\n let indirectFranctionOfPool = new BigNumber(0);\n if (isAddress(holderInfo) && farmPoolNumber !== '') {\n const holderLpInFarm = new BigNumber(poolDataRes[6][\"0\"])\n indirectFranctionOfPool = holderLpInFarm.dividedBy(totalLp);\n }\n const fractionOfPool = directFractionOfPool.plus(indirectFranctionOfPool);\n\n const tokenTxs = [\n getTokenData(poolDataRes[2], erc20Abi, web3),\n getTokenData(poolDataRes[3], erc20Abi, web3) \n ];\n const positionValues = await Promise.all(tokenTxs);\n positionValues[0].Balance = bigToNumber(new BigNumber(poolDataRes[4][\"0\"]).multipliedBy(fractionOfPool), positionValues[0]);\n positionValues[1].Balance = bigToNumber(new BigNumber(poolDataRes[4][\"1\"]).multipliedBy(fractionOfPool), positionValues[1]);\n\n const sushiRewardTokenData = poolDataRes[8];\n if (isAddress(holderInfo) && farmPoolNumber !== '') {\n sushiRewardTokenData.ClaimedBalanceLeftInWallet = sushiRewardTokenData.Balance;\n delete sushiRewardTokenData.Balance;\n sushiRewardTokenData.UnclaimedUnlockedBalance = bigToNumber(new BigNumber(poolDataRes[7]), sushiRewardTokenData);\n sushiRewardTokenData.UnclaimedLockedBalanceEstimate = Number(poolDataRes[9]);\n }\n return newPoolData(poolAddress, holderInfo, totalLp, holderLp, lpTokenDecimals, positionValues, farmPoolNumber !== '' ? MasterChefAddress : '', indirectFranctionOfPool, sushiRewardTokenData); \n}\n\nconst SushiGraphUrl = \"https://api.thegraph.com/subgraphs/name/sushiswap/master-chef\"\nasync function sushiCalculateLocked(holderAddress, farmPoolId) {\n const data = `{ users(where: {address: \"${holderAddress}\"}) { amount sushiHarvested rewardDebt pool { id accSushiPerShare } } }`\n\n const response = await fetchJsonPost(SushiGraphUrl, JSON.stringify({query:data}));\n if (response.errors) {\n throw new Error(`Graph query error: ${response.errors[0].message}`);\n }\n\n console.log(JSON.stringify(response.data.users, null, 2))\n for(const user of response.data.users) {\n console.log(JSON.stringify(user, null, 2))\n if (user.pool && user.pool.id === farmPoolId) {\n const sushiPerShare = new BigNumber(user.pool.accSushiPerShare).dividedBy('1e12');\n const sushiDebt = new BigNumber(user.rewardDebt).dividedBy('1e18');\n const pending = new BigNumber(user.amount).dividedBy('1e18').multipliedBy(sushiPerShare).minus(sushiDebt);\n \n const harvested = new BigNumber(user.sushiHarvested);\n const locked = pending.plus(harvested).multipliedBy(2);\n return locked;\n } else {\n return new BigNumber(user.sushiHarvested).multipliedBy(2);\n }\n }\n throw new Error(`Liquidity Provider Wallet Address ${holderAddress} with MasterChef Farm Pool Id ${farmPoolId} not found`)\n}\n\nconst OneInchTokenAddress = '0x111111111117dc0aa78b770fa6a738034120c302';\nasync function getOneInchPoolData(holderInfo, poolAddress, farmAddress, web3) {\n const pool = getContract(poolAddress, oneinchPairAbi, web3);\n const poolDataTxs = [\n pool.methods.totalSupply().call(),\n pool.methods.decimals().call(),\n pool.methods.getTokens().call(),\n ];\n if (isAddress(holderInfo)) {\n poolDataTxs.push(pool.methods.balanceOf(holderInfo).call());\n if (isAddress(farmAddress)) {\n const farm = getContract(farmAddress, oneInchFarmAbi, web3);\n poolDataTxs.push(pool.methods.balanceOf(farmAddress).call());\n poolDataTxs.push(farm.methods.totalSupply().call());\n poolDataTxs.push(farm.methods.balanceOf(holderInfo).call());\n poolDataTxs.push(farm.methods.earned(holderInfo).call());\n poolDataTxs.push(getTokenData(OneInchTokenAddress, erc20Abi, web3, holderInfo));\n }\n }\n const poolDataRes = await Promise.all(poolDataTxs);\n\n const totalLp = new BigNumber(poolDataRes[0])\n const holderLp = new BigNumber(isAddress(holderInfo) ? poolDataRes[3] : holderInfo);\n const lpTokenDecimals = poolDataRes[1];\n const directFractionOfPool = holderLp.dividedBy(totalLp);\n let indirectFranctionOfPool = new BigNumber(0);\n if (isAddress(holderInfo) && isAddress(farmAddress)) {\n const farmLp = new BigNumber(poolDataRes[4])\n const holderFarmTokens = new BigNumber(poolDataRes[6])\n const totalFarmTokens = new BigNumber(poolDataRes[5])\n indirectFranctionOfPool = farmLp.dividedBy(totalLp).multipliedBy(holderFarmTokens).dividedBy(totalFarmTokens);\n }\n const fractionOfPool = directFractionOfPool.plus(indirectFranctionOfPool);\n\n const tokenTxs = [];\n poolDataRes[2].map(tokenAddress => {\n tokenTxs.push(getOneInchTokenData(tokenAddress, erc20Abi, web3));\n tokenTxs.push(pool.methods.getBalanceForRemoval(tokenAddress).call());\n });\n const tokenRes = await Promise.all(tokenTxs);\n const positionValues = [];\n for(let i = 0;i < tokenRes.length;i+=2){\n tokenRes[i].Balance = bigToNumber(new BigNumber(tokenRes[i+1]).multipliedBy(fractionOfPool), tokenRes[i]);\n positionValues.push(tokenRes[i]);\n }\n\n const oneInchRewardTokenData = poolDataRes[8];\n if (isAddress(holderInfo) && isAddress(farmAddress)) {\n oneInchRewardTokenData.ClaimedBalanceLeftInWallet = oneInchRewardTokenData.Balance;\n delete oneInchRewardTokenData.Balance;\n oneInchRewardTokenData.UnclaimedUnlockedBalance = bigToNumber(new BigNumber(poolDataRes[7]), oneInchRewardTokenData);\n }\n return newPoolData(poolAddress, holderInfo, totalLp, holderLp, lpTokenDecimals, positionValues, farmAddress, indirectFranctionOfPool, oneInchRewardTokenData); \n}\n\nasync function getOneInchTokenData(tokenAddress, erc20Abi, web3) {\n if (tokenAddress === EmptyAddress) {\n return {\n Address: '0x0000000000000000000000000000000000000000',\n Decimals: '18',\n Name: 'Ether',\n Symbol: 'ETH',\n };\n } else {\n return getTokenData(tokenAddress, erc20Abi, web3);\n }\n}\n\nconst UnicFarmAddress = '0x4A25E4DF835B605A5848d2DB450fA600d96ee818';\nconst UnicTokenAddress = '0x94E0BAb2F6Ab1F19F4750E42d7349f2740513aD5';\nasync function getUJennyPoolData(holderInfo, poolAddress, farmPoolNumber, web3) {\n const pool = getContract(poolAddress, unicPairAbi, web3);\n const poolDataTxs = [\n pool.methods.totalSupply().call(),\n pool.methods.decimals().call(),\n pool.methods.token0().call(),\n pool.methods.token1().call(),\n pool.methods.getReserves().call()\n ];\n if (isAddress(holderInfo)) {\n poolDataTxs.push(pool.methods.balanceOf(holderInfo).call());\n if (farmPoolNumber !== '') {\n const farmContract = getContract(UnicFarmAddress, unicFarmAbi, web3);\n poolDataTxs.push(farmContract.methods.userInfo(farmPoolNumber, holderInfo).call());\n poolDataTxs.push(farmContract.methods.pendingUnic(farmPoolNumber, holderInfo).call());\n poolDataTxs.push(getTokenData(UnicTokenAddress, erc20Abi, web3, holderInfo));\n }\n }\n const poolDataRes = await Promise.all(poolDataTxs);\n \n const totalLp = new BigNumber(poolDataRes[0])\n const holderLp = new BigNumber(isAddress(holderInfo) ? poolDataRes[5] : holderInfo);\n const lpTokenDecimals = poolDataRes[1];\n const directFractionOfPool = holderLp.dividedBy(totalLp);\n let indirectFranctionOfPool = new BigNumber(0);\n if (isAddress(holderInfo) && farmPoolNumber !== '') {\n const holderLpInFarm = new BigNumber(poolDataRes[6][\"0\"])\n indirectFranctionOfPool = holderLpInFarm.dividedBy(totalLp);\n }\n const fractionOfPool = directFractionOfPool.plus(indirectFranctionOfPool);\n\n const tokenTxs = [\n getTokenData(poolDataRes[2], erc20Abi, web3),\n getTokenData(poolDataRes[3], erc20Abi, web3) \n ];\n const positionValues = await Promise.all(tokenTxs);\n positionValues[0].Balance = bigToNumber(new BigNumber(poolDataRes[4][\"0\"]).multipliedBy(fractionOfPool), positionValues[0]);\n positionValues[1].Balance = bigToNumber(new BigNumber(poolDataRes[4][\"1\"]).multipliedBy(fractionOfPool), positionValues[1]);\n\n const unicRewardTokenData = poolDataRes[8];\n if (isAddress(holderInfo) && farmPoolNumber !== '') {\n unicRewardTokenData.ClaimedBalanceLeftInWallet = unicRewardTokenData.Balance;\n delete unicRewardTokenData.Balance;\n unicRewardTokenData.UnclaimedUnlockedBalance = bigToNumber(new BigNumber(poolDataRes[7]), unicRewardTokenData);\n }\n return newPoolData(poolAddress, holderInfo, totalLp, holderLp, lpTokenDecimals, positionValues, farmPoolNumber !== '' ? UnicFarmAddress : '', indirectFranctionOfPool, unicRewardTokenData); \n}\n","import React, { useState } from \"react\";\nimport { Container, Segment, Form } from \"semantic-ui-react\";\nimport { lpPositionStatus, PoolType } from \"web3-snippets/pool-position\";\nimport { useApiKeys } from \"../ApiKeys\";\nconst poolTypeOptions = [\n {\n key: 'Balancer',\n text: 'Balancer',\n value: PoolType.BALANCER,\n farmLabel: 'Farm Address'\n },\n {\n key: 'Uniswap',\n text: 'Uniswap',\n value: PoolType.UNISWAP,\n farmLabel: 'Farm Address'\n },\n {\n key: 'Sushiswap',\n text: 'Sushiswap',\n value: PoolType.SUSHISWAP,\n farmLabel: 'MasterChef Farm Pool Id (optional)'\n },\n {\n key: '1Inch',\n text: '1Inch',\n value: PoolType.ONEINCH,\n farmLabel: 'Farming Contract Address (optional)'\n },\n {\n key: 'UJenny',\n text: 'UJenny',\n value: PoolType.UJENNY,\n farmLabel: 'Unic Farm Pool Id (optional)'\n }\n];\n\nfunction Snippet() {\n const { web3 } = useApiKeys();\n const [input, setInput] = useState({});\n const [result, setResult] = useState();\n const [loading, setLoading] = useState(false);\n const [hideFarming, setHideFarming] = useState(true);\n const [farmLabel, setFarmLabel] = useState(poolTypeOptions[0].farmLabel)\n const handleChange = (_e, { name, value }) => {setInput({ ...input, [name]: value }); updateVisuals(name, value);};\n const updateVisuals = (name, value) => {\n let { holderInfo, poolType } = input;\n if (name === 'poolType') {\n poolType = value;\n } else if (name === 'holderInfo') {\n holderInfo = value;\n }\n const pool = findPoolType(poolType);\n setFarmLabel(pool.farmLabel)\n if (holderInfo && holderInfo.startsWith('0x') && (pool.value === PoolType.ONEINCH || pool.value === PoolType.SUSHISWAP || pool.value === PoolType.UJENNY)) {\n setHideFarming(false);\n } else {\n setHideFarming(true);\n }\n\n };\n const handleSubmit = async () => {\n const { poolAddress, holderInfo, poolType, farmAddress } = input;\n setLoading(true);\n const result = await lpPositionStatus(holderInfo, poolType, poolAddress, web3, farmAddress);\n setResult(result);\n setLoading(false);\n };\n const findPoolType = (poolType) => {\n for(const option of poolTypeOptions) {\n if (option.value === poolType) {\n return option;\n }\n }\n return poolTypeOptions[0];\n }\n return (\n
\n

Pool Position Status

\n
\n \n \n
\n \n \n \n \n Submit\n \n
\n
{JSON.stringify(result, null, 2)}
\n
\n
\n );\n}\n\nexport default Snippet;\n","import React from \"react\";\nimport { HashRouter, Route, Link } from \"react-router-dom\";\nimport { Menu } from \"semantic-ui-react\";\nimport { getWeb3 } from \"web3-snippets/eth-helpers\";\nimport \"./App.css\";\nimport ApiKeysContext from \"./ApiKeys\";\nimport CheckContract from \"./snippets/CheckContract\";\nimport CheckApprove from \"./snippets/CheckApprove\";\nimport UniswapLoss from \"./snippets/UniswapLoss\";\nimport Compounding from \"./snippets/Compounding\";\nimport PancakeLoss from \"./snippets/PancakeLoss\";\nimport PoolPosition from \"./snippets/PoolPosition\";\n\nfunction App() {\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\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === \"localhost\" ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === \"[::1]\" ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === \"production\" && \"serviceWorker\" in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener(\"load\", () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n \"This web app is being served cache-first by a service \" +\n \"worker. To learn more, visit https://bit.ly/CRA-PWA\"\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then((registration) => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === \"installed\") {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n \"New content is available and will be used when all \" +\n \"tabs for this page are closed. See https://bit.ly/CRA-PWA.\"\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log(\"Content is cached for offline use.\");\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch((error) => {\n console.error(\"Error during service worker registration:\", error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { \"Service-Worker\": \"script\" },\n })\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get(\"content-type\");\n if (response.status === 404 || (contentType != null && contentType.indexOf(\"javascript\") === -1)) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\"No internet connection found. App is running in offline mode.\");\n });\n}\n\nexport function unregister() {\n if (\"serviceWorker\" in navigator) {\n navigator.serviceWorker.ready\n .then((registration) => {\n registration.unregister();\n })\n .catch((error) => {\n console.error(error.message);\n });\n }\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport \"semantic-ui-css/semantic.min.css\";\nimport \"./index.css\";\nimport App from \"./App\";\nimport * as serviceWorker from \"./serviceWorker\";\n\nReactDOM.render(\n \n \n ,\n document.getElementById(\"root\")\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""} \ No newline at end of file diff --git a/lib/pool-position.js b/lib/pool-position.js index 23bf76f..85e7dcf 100644 --- a/lib/pool-position.js +++ b/lib/pool-position.js @@ -177,8 +177,10 @@ async function sushiCalculateLocked(holderAddress, farmPoolId) { throw new Error(`Graph query error: ${response.errors[0].message}`); } + console.log(JSON.stringify(response.data.users, null, 2)) for(const user of response.data.users) { - if (user.pool.id === farmPoolId) { + console.log(JSON.stringify(user, null, 2)) + if (user.pool && user.pool.id === farmPoolId) { const sushiPerShare = new BigNumber(user.pool.accSushiPerShare).dividedBy('1e12'); const sushiDebt = new BigNumber(user.rewardDebt).dividedBy('1e18'); const pending = new BigNumber(user.amount).dividedBy('1e18').multipliedBy(sushiPerShare).minus(sushiDebt); @@ -186,6 +188,8 @@ async function sushiCalculateLocked(holderAddress, farmPoolId) { const harvested = new BigNumber(user.sushiHarvested); const locked = pending.plus(harvested).multipliedBy(2); return locked; + } else { + return new BigNumber(user.sushiHarvested).multipliedBy(2); } } throw new Error(`Liquidity Provider Wallet Address ${holderAddress} with MasterChef Farm Pool Id ${farmPoolId} not found`)