{"version":3,"sources":["Utils/EventEmitter.ts","Components/Button/index.tsx","Views/Home/index.tsx","Store/Adapter.ts","Config.ts","Store/Balance.ts","Adapter/Contract.ts","Components/ConnectedModal/index.tsx","Adapter/IAdapter.ts","Utils/BigNumber.ts","Utils/Decimals.ts","Adapter/ABI/ERC20.ts","Adapter/ABI/MIGRATION.ts","Adapter/EthAdapter.ts","Adapter/BSCAdapter.ts","Assets/Wallet/metamask.png","Components/ConnectionModal/index.tsx","Hooks/useAdapter.ts","Assets/Wallet/mathwallet.png","Assets/Unifi.svg","Components/Header/index.tsx","Views/HomeHeader/index.tsx","Components/Body/index.tsx","Components/Notifications/index.ts","Components/Updater/index.tsx","Utils/useInterval.ts","Store/Loading.ts","Components/Loading/index.tsx","App.tsx","reportWebVitals.ts","index.tsx"],"names":["EmitterAction","Button","onClick","disabled","children","className","Home","window","open","Adapter","atom","key","default","undefined","dangerouslyAllowMutability","Config","blockchain","blockchainToken","transactionExplorer","accountExplorer","depositContract","address","decimals","contracts","UNFI","BNB","globalPrecision","Math","pow","globalPowerPrecision","percentagePrecision","numberLocale","Balances","eventEmitter","EventEmitter","Emitter","on","event","fn","once","off","emit","payload","Object","freeze","ContractMethod","ConnectedModal","isOpen","close","adapter","useRecoilValue","resetBalances","useResetRecoilState","resetAdapter","explorerLink","useMemo","replace","getAddress","Close","href","target","rel","NOTIFICATION","notification","type","NON_SUCCESS_RESPONSE","success","value","hash","BigNumber","arg","base","BN","powerDictionary","keys","forEach","c","contractName","contract","precision","getPrecision","tokenOrContract","ERC20","constant","inputs","name","outputs","payable","stateMutability","anonymous","indexed","MIGRATION","abi","computeInvocationParams","params","gasOptions","args","callValue","reducedContractParameters","BSCAdapter","chainId","nativeTokenName","etherClient","onConnectCallback","signer","lastGasLimit","this","getNativeBalance","ETH","BALANCE","balances","cntrct","getBalanceOf","token","push","console","error","Promise","resolve","a","performConnection","handleEthereum","ethereum","request","method","then","accounts","ethers","providers","Web3Provider","parseInt","provider","getSigner","initializeContracts","addEventListener","setTimeout","cb","entries","ERC20ABI","Contract","isWrite","APPROVE","multipliedBy","decimalPlaces","toFixed","getEstimatedGasPrice","gasLimit","apply","contractCall","waitForTransaction","functionName","toString","targetAddress","isConnected","balance","getBalance","balanceOf","dividedBy","contractAddress","balanceBN","contractMethod","v","mul","toHexString","ConnectionModal","connect","useRecoilState","setAdapter","ins","useAdapter","onConnectClick","src","MetaMask","alt","_extends","assign","i","arguments","length","source","prototype","hasOwnProperty","call","_objectWithoutProperties","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","d","_ref4","_ref7","_ref8","SvgUnifi","_ref","svgRef","title","titleId","props","id","x","y","viewBox","style","enableBackground","xmlSpace","ref","fill","ForwardRef","Header","useState","connectionModal","setConnectionModal","HomeHeader","Body","Notification","NO_WALLET","CONNECTED","DISCONNECT","AUTHORIZE_WALLET","CLAIM_SUCCESSFUL","CLAIM_FAILED","STAKE_SUCCESSFUL","STAKE_FAILED","DEPOSIT_SUCCESSFUL","DEPOSIT_FAILED","UNSTAKE_SUCCESSFUL","UNSTAKE_FAILED","INVALID_AMOUNT","INVALID_ADDRESS","Updater","setBalances","addToast","useToasts","updateStateBalances","useCallback","b","state","fetchBalances","getBalances","useEffect","REFRESH_BALANCES","appearance","callback","delay","savedCallback","useRef","current","interval","setInterval","clearInterval","useInterval","Loading","loading","totalRequests","isLoading","selector","get","LinearProgress","App","autoDismissTimeout","autoDismiss","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","StrictMode","document","getElementById"],"mappings":"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","file":"static/js/main.0e4daa2a.chunk.js","sourcesContent":["import EventEmitter from \"eventemitter3\";\n\nconst eventEmitter = new EventEmitter();\n\nconst Emitter = {\n on: (event: string, fn: () => void) => eventEmitter.on(event, fn),\n once: (event: string, fn: (...args: any[]) => void) =>\n eventEmitter.once(event, fn),\n off: (event: string, fn: (...args: any[]) => void) =>\n eventEmitter.off(event, fn),\n emit: (event: string, payload?: any) => eventEmitter.emit(event, payload),\n};\n\nObject.freeze(Emitter);\n\nenum EmitterAction {\n REFRESH_BALANCES = \"REFRESH_BALANCES\",\n BALANCE = \"BALANCE\",\n NOTIFICATION = \"NOTIFICATION\",\n}\n\nexport { Emitter, EmitterAction };\n","import React from \"react\";\n\nimport \"./Button.scss\";\n\nexport const Button: React.FC<{ onClick: () => void; disabled?: boolean }> = ({\n onClick,\n disabled,\n children,\n}) => {\n return (\n \n );\n};\n","import React from \"react\";\nimport { Button } from \"../../Components/Button\";\n// import { Deposit } from \"../../Components/Deposit\";\n\nimport \"./Home.scss\";\n\nexport const Home = () => {\n return (\n
\n
\n {/* */}\n
\n
Claim UNFI
\n
\n

Click the button below to claim your UNFI tokens on Ethereum.

\n

\n The tokens will be made claimable within 7 days after the Unifi\n Protocol BSC to ETH event has concluded.\n

\n
\n
\n \n window.open(\"https://gov.unifiprotocol.com/my-dashboard\")\n }\n >\n Go to Claim page\n \n
\n
\n
\n
\n );\n};\n","import { atom } from \"recoil\";\nimport { IAdapter } from \"../Adapter/IAdapter\";\n\nexport const Adapter = atom({\n key: \"adapter\",\n default: undefined,\n dangerouslyAllowMutability: true,\n});\n","export const Config = {\n blockchain: \"binance\",\n blockchainToken: \"BNB\",\n transactionExplorer: \"https://bscscan.com/tx/{{TRANSACTION_HASH}}\",\n accountExplorer: \"https://bscscan.com/address/{{ADDRESS}}\",\n depositContract: {\n address: \"0x11C7DdDce2C0F9974a9c78EC7D246629fe004445\",\n decimals: 18,\n },\n contracts: {\n UNFI: {\n address: \"0x728C5baC3C3e370E372Fc4671f9ef6916b814d8B\",\n decimals: 18,\n },\n BNB: {\n address: \"BNB\",\n decimals: 18,\n },\n },\n globalPrecision: Math.pow(10, 18),\n globalPowerPrecision: 18,\n percentagePrecision: 100000,\n numberLocale: \"en-US\",\n};\n","import { atom } from \"recoil\";\nimport { Config } from \"../Config\";\n\ntype BalanceKeys = \"BNB\" | string;\n\nexport const Balances = atom<{ [K in BalanceKeys]: string }>({\n key: \"balance\",\n default: {\n BNB: \"0\",\n [Config.contracts.UNFI.address]: \"0\",\n },\n});\n","export enum ContractMethod {\n TRANSFER = \"transfer\",\n BALANCE_OF = \"balanceOf\",\n APPROVE = \"approve\",\n GET_ALLOWANCE = \"getAllowance\",\n TOTAL_STAKE_AMOUNT = \"totalStakeAmount\",\n USER_STAKE_AMOUNT = \"userStakeAmount\",\n CONTRACT_TOTAL_CLAIMED = \"contractTotalClaimed\",\n STAKE = \"stake\",\n UNSTAKE = \"unstake\",\n CLAIM = \"claim\",\n REWARD_RATE = \"rewardRate\",\n TOTAL_CLAIMED = \"totalClaimed\",\n PENDING_CLAIM = \"stakePendingReward\",\n PERIOD_FINISH = \"periodFinish\",\n DEPOSIT = \"deposit\",\n DEPOSIT_UNFI_TOKEN = \"depositUNFIToken\",\n UNFI_DEPOSITED_OF = \"unfiDepositedOf\",\n}\n","import React, { useMemo } from \"react\";\nimport Modal from \"react-modal\";\nimport { useRecoilValue, useResetRecoilState } from \"recoil\";\nimport { Adapter } from \"../../Store/Adapter\";\nimport { Config } from \"../../Config\";\nimport { Button } from \"../Button\";\nimport { Close } from \"@material-ui/icons\";\nimport { Emitter, EmitterAction } from \"../../Utils/EventEmitter\";\nimport { Balances } from \"../../Store/Balance\";\n\nimport \"./ConnectedModal.scss\";\n\nexport const ConnectedModal: React.FC<{\n isOpen: boolean;\n close: () => void;\n}> = ({ isOpen, close }) => {\n const adapter = useRecoilValue(Adapter);\n const resetBalances = useResetRecoilState(Balances);\n const resetAdapter = useResetRecoilState(Adapter);\n\n const explorerLink = useMemo(() => {\n return adapter\n ? Config.accountExplorer.replace(/{{ADDRESS}}/, adapter.getAddress())\n : \"#\";\n }, [adapter]);\n\n const onDisconnectClick = () => {\n resetAdapter();\n resetBalances();\n close();\n Emitter.emit(EmitterAction.NOTIFICATION, {\n notification: \"DISCONNECT\",\n type: \"info\",\n });\n };\n\n return (\n \n
\n
\n Your wallet\n \n \n \n
\n\n
\n
\n \n {adapter?.getAddress()}\n \n
\n \n
\n
\n
\n
\n
\n );\n};\n","import { ContractMethod } from \"./Contract\";\n\ntype Balance = string;\n\nexport type Contract = {\n address: string;\n decimals: number;\n};\n\nexport type AdapterBalance = { name: string; balance: Balance };\n\nexport type ExecutionResponse = {\n success: boolean;\n functionName: ContractMethod;\n value: string;\n hash: string;\n params: ExecutionValueProps;\n};\n\nexport type ExecutionValueProps = {\n args?: Array;\n callValue?: string | number | undefined;\n};\n\nexport type ExecutionParams = {\n args: Array;\n callValue: string | number | undefined;\n};\n\nexport interface IAdapter {\n isConnected(): boolean;\n getAddress(): string;\n getBalances(): Promise;\n\n connect(): Promise;\n\n logout(): Promise;\n\n onConnect(cb: () => void): void;\n\n execute(\n contractName: string,\n method: ContractMethod,\n values: ExecutionValueProps,\n isWrite: boolean\n ): Promise;\n\n getBalanceOf(\n contractAddress: string,\n targetAddress?: string\n ): Promise;\n}\n\nexport const NON_SUCCESS_RESPONSE = { success: false, value: \"\", hash: \"\" };\n","import BN from \"bignumber.js\";\nimport { Config } from \"Config\";\n\nexport const BigNumber = (arg: BN.Value, base?: number) => new BN(arg, base);\n\nexport const isNumber = (num: string | number) => !BigNumber(num).isNaN();\n\nexport const isNumberAndNonZero = (n: string | number) => {\n const num = BigNumber(n);\n return !num.isNaN() && !num.isZero();\n};\n\nexport const areNumbers = (numbers: Array) =>\n numbers.every(isNumber);\n\nexport const localiseNumber = (num: string | number) =>\n BigNumber(num).toNumber().toLocaleString(Config.numberLocale);\n\nexport const truncate = (num: string | number) =>\n Math.trunc(BigNumber(num).toNumber()).toString(10);\n\nexport const toNumber = (num: string | number) => BigNumber(num).toNumber();\n\nexport const toBNFixed = (num: string | number) => BigNumber(num).toFixed();\n\nexport const toHex = (num: string | number) =>\n \"0x\" + BigNumber(num).toString(16);\n\nexport const truncateDecimals = (\n num: string | number,\n decimalPlaces = Config.globalPowerPrecision\n) => {\n if (typeof num === \"string\" && /\\.(0{0,})?$/.test(num)) return num;\n return BigNumber(num).decimalPlaces(decimalPlaces).toFixed();\n};\n\nexport const isNaN = (num: string) => {\n return BigNumber(num).isNaN();\n};\n","import { Config } from \"Config\";\n\nconst powerDictionary: {\n [key: string]: { precision: number; decimals: number };\n} = {};\n\n(() => {\n Object.keys(Config.contracts).forEach((c) => {\n const contractName = c as keyof typeof Config.contracts;\n const contract = Config.contracts[contractName];\n powerDictionary[contractName] = {\n decimals: contract.decimals,\n precision: Math.pow(10, contract.decimals),\n };\n powerDictionary[contract.address] = {\n decimals: contract.decimals,\n precision: Math.pow(10, contract.decimals),\n };\n });\n powerDictionary[Config.depositContract.address] = {\n decimals: Config.depositContract.decimals,\n precision: Math.pow(10, Config.depositContract.decimals),\n };\n})();\n\nexport const getPrecision = (tokenOrContract: string) => {\n return powerDictionary[tokenOrContract]\n ? powerDictionary[tokenOrContract][\"precision\"]\n : Config.globalPrecision;\n};\n\nexport const getDecimals = (tokenOrContract: string) => {\n return powerDictionary[tokenOrContract]\n ? powerDictionary[tokenOrContract][\"decimals\"]\n : Config.globalPowerPrecision;\n};\n","const ERC20 = [\n {\n constant: true,\n inputs: [],\n name: \"name\",\n outputs: [\n {\n name: \"\",\n type: \"string\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"spender\",\n type: \"address\",\n },\n {\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"approve\",\n outputs: [\n {\n name: \"\",\n type: \"bool\",\n },\n ],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"removeAdmin\",\n outputs: [],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"totalSupply\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"tokenAddress\",\n type: \"address\",\n },\n {\n name: \"amount\",\n type: \"uint256\",\n },\n ],\n name: \"transferOtherTokens\",\n outputs: [\n {\n name: \"\",\n type: \"bool\",\n },\n ],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"from\",\n type: \"address\",\n },\n {\n name: \"to\",\n type: \"address\",\n },\n {\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"transferFrom\",\n outputs: [\n {\n name: \"\",\n type: \"bool\",\n },\n ],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [\n {\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"isAdmin\",\n outputs: [\n {\n name: \"\",\n type: \"bool\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [\n {\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"isOwner\",\n outputs: [\n {\n name: \"\",\n type: \"bool\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"removeMinter\",\n outputs: [],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"decimals\",\n outputs: [\n {\n name: \"\",\n type: \"uint8\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"to\",\n type: \"address[]\",\n },\n {\n name: \"value\",\n type: \"uint256[]\",\n },\n ],\n name: \"transferMulti\",\n outputs: [\n {\n name: \"\",\n type: \"bool\",\n },\n ],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [\n {\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"getVirtualPriceForMinting\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"spender\",\n type: \"address\",\n },\n {\n name: \"addedValue\",\n type: \"uint256\",\n },\n ],\n name: \"increaseAllowance\",\n outputs: [\n {\n name: \"\",\n type: \"bool\",\n },\n ],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"to\",\n type: \"address\",\n },\n {\n name: \"amount\",\n type: \"uint256\",\n },\n ],\n name: \"mint\",\n outputs: [\n {\n name: \"\",\n type: \"bool\",\n },\n ],\n payable: true,\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"burn\",\n outputs: [],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"justBurn\",\n outputs: [],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"addAdmin\",\n outputs: [],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [\n {\n name: \"owner\",\n type: \"address\",\n },\n ],\n name: \"balanceOf\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"fieldName\",\n type: \"string\",\n },\n {\n name: \"amount\",\n type: \"uint256\",\n },\n ],\n name: \"updateValues\",\n outputs: [\n {\n name: \"\",\n type: \"bool\",\n },\n ],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [],\n name: \"renounceOwnership\",\n outputs: [],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"from\",\n type: \"address\",\n },\n {\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"burnFrom\",\n outputs: [],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [],\n name: \"renounceAdmin\",\n outputs: [],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"symbol\",\n outputs: [\n {\n name: \"\",\n type: \"string\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"addMinter\",\n outputs: [],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [],\n name: \"renounceMinter\",\n outputs: [],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"spender\",\n type: \"address\",\n },\n {\n name: \"subtractedValue\",\n type: \"uint256\",\n },\n ],\n name: \"decreaseAllowance\",\n outputs: [\n {\n name: \"\",\n type: \"bool\",\n },\n ],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"to\",\n type: \"address\",\n },\n {\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"transfer\",\n outputs: [\n {\n name: \"\",\n type: \"bool\",\n },\n ],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [\n {\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"isMinter\",\n outputs: [\n {\n name: \"\",\n type: \"bool\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [\n {\n name: \"owner\",\n type: \"address\",\n },\n {\n name: \"spender\",\n type: \"address\",\n },\n ],\n name: \"allowance\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"getVirtualPrice\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"updateFTToken\",\n outputs: [\n {\n name: \"\",\n type: \"address\",\n },\n ],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n {\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"transferOwnership\",\n outputs: [],\n payable: false,\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n name: \"decimals\",\n type: \"uint8\",\n },\n {\n name: \"FTtoken\",\n type: \"address\",\n },\n ],\n payable: true,\n stateMutability: \"payable\",\n type: \"constructor\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"MinterAdded\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"MinterRemoved\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"AdminAdded\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"AdminRemoved\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"OwnerRemoved\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: \"previousAccount\",\n type: \"address\",\n },\n {\n indexed: true,\n name: \"newAccount\",\n type: \"address\",\n },\n ],\n name: \"OwnershipTransferred\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: \"from\",\n type: \"address\",\n },\n {\n indexed: true,\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: false,\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"Transfer\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: \"owner\",\n type: \"address\",\n },\n {\n indexed: true,\n name: \"spender\",\n type: \"address\",\n },\n {\n indexed: false,\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"Approval\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: \"owner\",\n type: \"address\",\n },\n {\n indexed: false,\n name: \"proposalID\",\n type: \"uint256\",\n },\n {\n indexed: false,\n name: \"result\",\n type: \"bool\",\n },\n {\n indexed: false,\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"ProposalUpdated\",\n type: \"event\",\n },\n];\n\nexport default ERC20;\n","const MIGRATION = {\r\n abi: [\r\n {\r\n constant: true,\r\n inputs: [],\r\n name: \"unfiMigrationLockCheck\",\r\n outputs: [\r\n {\r\n name: \"\",\r\n type: \"bool\",\r\n },\r\n ],\r\n payable: false,\r\n stateMutability: \"view\",\r\n type: \"function\",\r\n },\r\n {\r\n constant: true,\r\n inputs: [\r\n {\r\n name: \"counter\",\r\n type: \"uint256\",\r\n },\r\n ],\r\n name: \"checkPointData\",\r\n outputs: [\r\n {\r\n name: \"\",\r\n type: \"address\",\r\n },\r\n {\r\n name: \"\",\r\n type: \"address\",\r\n },\r\n {\r\n name: \"\",\r\n type: \"uint256\",\r\n },\r\n {\r\n name: \"\",\r\n type: \"bool\",\r\n },\r\n ],\r\n payable: false,\r\n stateMutability: \"view\",\r\n type: \"function\",\r\n },\r\n {\r\n constant: true,\r\n inputs: [],\r\n name: \"unfiToken\",\r\n outputs: [\r\n {\r\n name: \"\",\r\n type: \"address\",\r\n },\r\n ],\r\n payable: false,\r\n stateMutability: \"view\",\r\n type: \"function\",\r\n },\r\n {\r\n constant: false,\r\n inputs: [\r\n {\r\n name: \"ethAddress\",\r\n type: \"address\",\r\n },\r\n ],\r\n name: \"updateETHAddress\",\r\n outputs: [],\r\n payable: false,\r\n stateMutability: \"nonpayable\",\r\n type: \"function\",\r\n },\r\n {\r\n constant: true,\r\n inputs: [\r\n {\r\n name: \"owner\",\r\n type: \"address\",\r\n },\r\n ],\r\n name: \"ethAddressOf\",\r\n outputs: [\r\n {\r\n name: \"\",\r\n type: \"address\",\r\n },\r\n ],\r\n payable: false,\r\n stateMutability: \"view\",\r\n type: \"function\",\r\n },\r\n {\r\n constant: false,\r\n inputs: [\r\n {\r\n name: \"tokenAddress\",\r\n type: \"address\",\r\n },\r\n ],\r\n name: \"updateTokenAddress\",\r\n outputs: [],\r\n payable: false,\r\n stateMutability: \"nonpayable\",\r\n type: \"function\",\r\n },\r\n {\r\n constant: false,\r\n inputs: [],\r\n name: \"renounceOwnership\",\r\n outputs: [],\r\n payable: false,\r\n stateMutability: \"nonpayable\",\r\n type: \"function\",\r\n },\r\n {\r\n constant: false,\r\n inputs: [\r\n {\r\n name: \"unfiAmount\",\r\n type: \"uint256\",\r\n },\r\n {\r\n name: \"ethAddress\",\r\n type: \"address\",\r\n },\r\n ],\r\n name: \"depositUNFIToken\",\r\n outputs: [],\r\n payable: false,\r\n stateMutability: \"nonpayable\",\r\n type: \"function\",\r\n },\r\n {\r\n constant: true,\r\n inputs: [],\r\n name: \"owner\",\r\n outputs: [\r\n {\r\n name: \"\",\r\n type: \"address\",\r\n },\r\n ],\r\n payable: false,\r\n stateMutability: \"view\",\r\n type: \"function\",\r\n },\r\n {\r\n constant: true,\r\n inputs: [],\r\n name: \"isOwner\",\r\n outputs: [\r\n {\r\n name: \"\",\r\n type: \"bool\",\r\n },\r\n ],\r\n payable: false,\r\n stateMutability: \"view\",\r\n type: \"function\",\r\n },\r\n {\r\n constant: true,\r\n inputs: [],\r\n name: \"totalUNFIDeposited\",\r\n outputs: [\r\n {\r\n name: \"\",\r\n type: \"uint256\",\r\n },\r\n ],\r\n payable: false,\r\n stateMutability: \"view\",\r\n type: \"function\",\r\n },\r\n {\r\n constant: false,\r\n inputs: [\r\n {\r\n name: \"tokenAddress\",\r\n type: \"address\",\r\n },\r\n {\r\n name: \"amount\",\r\n type: \"uint256\",\r\n },\r\n ],\r\n name: \"withdrawAllTokens\",\r\n outputs: [],\r\n payable: false,\r\n stateMutability: \"nonpayable\",\r\n type: \"function\",\r\n },\r\n {\r\n constant: true,\r\n inputs: [\r\n {\r\n name: \"owner\",\r\n type: \"address\",\r\n },\r\n ],\r\n name: \"unfiDepositedOf\",\r\n outputs: [\r\n {\r\n name: \"\",\r\n type: \"uint256\",\r\n },\r\n ],\r\n payable: false,\r\n stateMutability: \"view\",\r\n type: \"function\",\r\n },\r\n {\r\n constant: true,\r\n inputs: [],\r\n name: \"totalUNFIUsers\",\r\n outputs: [\r\n {\r\n name: \"\",\r\n type: \"uint256\",\r\n },\r\n ],\r\n payable: false,\r\n stateMutability: \"view\",\r\n type: \"function\",\r\n },\r\n {\r\n constant: true,\r\n inputs: [],\r\n name: \"totalCheckPoints\",\r\n outputs: [\r\n {\r\n name: \"\",\r\n type: \"uint256\",\r\n },\r\n ],\r\n payable: false,\r\n stateMutability: \"view\",\r\n type: \"function\",\r\n },\r\n {\r\n constant: false,\r\n inputs: [\r\n {\r\n name: \"value\",\r\n type: \"bool\",\r\n },\r\n ],\r\n name: \"updateUNFIMigration\",\r\n outputs: [],\r\n payable: false,\r\n stateMutability: \"nonpayable\",\r\n type: \"function\",\r\n },\r\n {\r\n constant: false,\r\n inputs: [\r\n {\r\n name: \"newOwner\",\r\n type: \"address\",\r\n },\r\n ],\r\n name: \"transferOwnership\",\r\n outputs: [],\r\n payable: false,\r\n stateMutability: \"nonpayable\",\r\n type: \"function\",\r\n },\r\n {\r\n anonymous: false,\r\n inputs: [\r\n {\r\n indexed: false,\r\n name: \"checkpointNo\",\r\n type: \"uint256\",\r\n },\r\n {\r\n indexed: false,\r\n name: \"account\",\r\n type: \"address\",\r\n },\r\n {\r\n indexed: false,\r\n name: \"unfiAmount\",\r\n type: \"uint256\",\r\n },\r\n {\r\n indexed: false,\r\n name: \"ethAddress\",\r\n type: \"address\",\r\n },\r\n ],\r\n name: \"DepositAdded\",\r\n type: \"event\",\r\n },\r\n {\r\n anonymous: false,\r\n inputs: [\r\n {\r\n indexed: false,\r\n name: \"account\",\r\n type: \"address\",\r\n },\r\n {\r\n indexed: false,\r\n name: \"ethAddress\",\r\n type: \"address\",\r\n },\r\n ],\r\n name: \"DepositUpdate\",\r\n type: \"event\",\r\n },\r\n {\r\n anonymous: false,\r\n inputs: [\r\n {\r\n indexed: true,\r\n name: \"previousOwner\",\r\n type: \"address\",\r\n },\r\n {\r\n indexed: true,\r\n name: \"newOwner\",\r\n type: \"address\",\r\n },\r\n ],\r\n name: \"OwnershipTransferred\",\r\n type: \"event\",\r\n },\r\n ],\r\n};\r\n\r\nexport default MIGRATION;\r\n","import { ethers } from \"ethers\";\nimport {\n IAdapter,\n AdapterBalance,\n NON_SUCCESS_RESPONSE,\n ExecutionParams,\n} from \"./IAdapter\";\nimport { Config } from \"Config\";\nimport { ContractMethod } from \"./Contract\";\nimport { Emitter, EmitterAction } from \"Utils/EventEmitter\";\nimport { BigNumber as BN } from \"Utils/BigNumber\";\nimport { getPrecision } from \"../Utils/Decimals\";\nimport ERC20ABI from \"./ABI/ERC20\";\nimport MIGRATION from \"./ABI/MIGRATION\";\n\ndeclare global {\n interface Window {\n ethereum: any;\n }\n}\n\nexport default class EthAdapter implements IAdapter {\n protected etherClient:\n | ethers.providers.JsonRpcProvider\n | ethers.providers.Web3Provider\n | undefined;\n protected onConnectCallback = () => {};\n protected contracts: { [nameContract: string]: ethers.Contract } = {};\n protected address: string | undefined;\n protected nativeTokenName = \"ETH\";\n protected chainId = 1;\n protected signer:\n | ethers.providers.BaseProvider\n | ethers.Signer\n | undefined = undefined;\n private lastGasLimit: string | undefined;\n\n isConnected() {\n return this.getAddress() !== undefined && this.etherClient !== undefined;\n }\n\n getAddress(): string {\n return this.address || \"\";\n }\n\n async getBalances() {\n try {\n const ETH = await this.getNativeBalance();\n Emitter.emit(EmitterAction.BALANCE, [ETH]);\n\n const balances = [];\n for (const cntrct of Object.keys(Config.contracts)) {\n const contract = cntrct as keyof typeof Config.contracts;\n const token = await this.getBalanceOf(\n Config.contracts[contract].address\n );\n balances.push(token);\n Emitter.emit(EmitterAction.BALANCE, [token]);\n }\n\n return [ETH, ...balances];\n } catch (err) {\n console.error(\"EthAdapter -> getBalances -> err\", err);\n return [];\n }\n }\n\n async connect(): Promise {\n return new Promise(async (resolve) => {\n const performConnection = async () => {\n try {\n const handleEthereum = () => {\n const { ethereum } = window;\n if (ethereum) {\n ethereum\n .request({ method: \"eth_requestAccounts\" })\n .then(async (accounts: string[]) => {\n this.etherClient = new ethers.providers.Web3Provider(\n ethereum\n );\n const chainId = parseInt(\n (this.etherClient as any).provider.chainId\n );\n if (chainId === this.chainId) {\n this.address = accounts[0];\n this.signer = this.etherClient.getSigner();\n this.onConnectCallback();\n this.initializeContracts();\n resolve(this);\n }\n });\n } else {\n return false;\n }\n };\n\n if (window.ethereum) {\n handleEthereum();\n } else {\n window.addEventListener(\"ethereum#initialized\", handleEthereum, {\n once: true,\n });\n setTimeout(handleEthereum, 3000);\n }\n } catch (e) {\n return false;\n }\n };\n\n setTimeout(async () => {\n await performConnection();\n }, 1000);\n });\n }\n\n async logout() {}\n\n onConnect(cb: () => void) {\n this.onConnectCallback = cb;\n }\n\n initializeContracts() {\n const contracts: { address: string; abi: ethers.ContractInterface }[] = [];\n\n Object.entries(Config.contracts).forEach(([, { address }]) => {\n if (address !== this.nativeTokenName) {\n contracts.push({ address, abi: ERC20ABI });\n }\n });\n\n contracts.push({\n address: Config.depositContract.address,\n abi: MIGRATION.abi,\n });\n\n contracts.forEach((c) => {\n this.contracts[c.address] = new ethers.Contract(\n c.address,\n c.abi,\n this.signer\n );\n });\n }\n\n async execute(\n contractName: string,\n method: ContractMethod,\n params: ExecutionParams,\n isWrite = false\n ) {\n try {\n const contract = this.contracts[contractName];\n\n if (isWrite) {\n if (method === ContractMethod.APPROVE) {\n // FIX> APPROVAL AMOUNT * 2\n params[\"args\"][1] = BN(params[\"args\"][1]!)\n .multipliedBy(1.05)\n .decimalPlaces(0)\n .toFixed();\n }\n\n const gasLimit = await this.getEstimatedGasPrice(\n contract,\n method,\n params\n );\n\n const contractCall = await contract[method].apply(\n null,\n computeInvocationParams(params, { gasLimit })\n );\n\n if (method === ContractMethod.APPROVE) {\n await this.etherClient!.waitForTransaction(contractCall.hash);\n }\n\n if (contractCall && contractCall.hash) {\n return {\n success: true,\n value: \"\",\n hash: contractCall.hash,\n functionName: method,\n params,\n };\n }\n } else {\n const contractCall = await contract[method].apply(\n null,\n computeInvocationParams(params)\n );\n if (contractCall) {\n const value = contractCall.toString();\n return {\n success: true,\n value,\n hash: \"\",\n functionName: method,\n params,\n };\n }\n }\n return { ...NON_SUCCESS_RESPONSE, functionName: method, params };\n } catch (err) {\n console.error(\"EthAdapter -> execute -> err\", method, params, err);\n return { ...NON_SUCCESS_RESPONSE, functionName: method, params };\n }\n }\n\n protected async getNativeBalance(\n targetAddress: string = this.getAddress()\n ): Promise {\n if (!this.isConnected()) {\n return { name: this.nativeTokenName, balance: \"0\" };\n }\n const balanceOf = await this.etherClient!.getBalance(targetAddress);\n\n const balance = BN((balanceOf || 0).toString())\n .dividedBy(Config.globalPrecision)\n .toFixed();\n\n return { name: this.nativeTokenName, balance };\n }\n\n async getBalanceOf(\n contractAddress: string,\n targetAddress: string = this.getAddress()\n ) {\n if (!this.isConnected()) {\n return { name: contractAddress, balance: \"0\" };\n }\n\n if (contractAddress === this.nativeTokenName) {\n return this.getNativeBalance(targetAddress);\n }\n\n const balanceOf = await this.contracts[contractAddress].balanceOf(\n targetAddress\n );\n\n const balanceBN = \"balance\" in balanceOf ? balanceOf.balance : balanceOf;\n\n const balance = BN((balanceBN || 0).toString())\n .dividedBy(getPrecision(contractAddress))\n .toFixed();\n return { name: contractAddress, balance };\n }\n\n protected async getEstimatedGasPrice(\n contract: ethers.Contract,\n contractMethod: ContractMethod,\n params: ExecutionParams\n ) {\n try {\n const gasLimit = await contract[\"estimateGas\"][contractMethod]\n .apply(null, computeInvocationParams(params))\n .then((v: ethers.BigNumber) => v.mul(1).toHexString());\n this.lastGasLimit = gasLimit;\n return gasLimit;\n } catch (err) {\n return this.lastGasLimit\n ? \"0x\" +\n BN(this.lastGasLimit).multipliedBy(2).decimalPlaces(0).toString(16)\n : undefined;\n }\n }\n}\n\nexport function computeInvocationParams(\n params: ExecutionParams,\n gasOptions: { gasPrice?: string; gasLimit?: string } = {}\n) {\n const { args, callValue } = params;\n const reducedContractParameters = [\n ...(args || []),\n callValue ? { value: callValue, ...gasOptions } : { ...gasOptions },\n ];\n return reducedContractParameters;\n}\n","import EthAdapter from \"./EthAdapter\";\n\nexport default class BSCAdapter extends EthAdapter {\n constructor() {\n super();\n this.chainId = 56;\n this.nativeTokenName = \"BNB\";\n }\n}\n","export default __webpack_public_path__ + \"static/media/metamask.a756aeb9.png\";","import React from \"react\";\nimport Modal from \"react-modal\";\nimport { useAdapter } from \"Hooks/useAdapter\";\nimport { Close } from \"@material-ui/icons\";\nimport MetaMask from \"Assets/Wallet/metamask.png\";\nimport MathWallet from \"Assets/Wallet/mathwallet.png\";\n\nimport \"./ConnectionModal.scss\";\n\nexport const ConnectionModal: React.FC<{\n isOpen: boolean;\n close: () => void;\n}> = ({ isOpen, close }) => {\n const { connect } = useAdapter();\n\n const onConnectClick = () => {\n connect();\n close();\n };\n\n return (\n \n
\n
\n Connect to wallet\n \n \n \n
\n\n
\n
    \n
  • \n MetaMask\n \n \"metamask\"\n \n
  • \n
  • \n MathWallet\n \n \"mathwallet\"\n \n
  • \n
\n
\n
\n
\n );\n};\n","import { useRecoilState } from \"recoil\";\nimport { Adapter } from \"../Store/Adapter\";\nimport { Emitter, EmitterAction } from \"../Utils/EventEmitter\";\nimport BSCAdapter from \"../Adapter/BSCAdapter\";\n\nexport const useAdapter = () => {\n const [, setAdapter] = useRecoilState(Adapter);\n\n const connect = () => {\n const adapter = new BSCAdapter();\n adapter.connect().then((ins) => {\n setAdapter(ins);\n Emitter.emit(EmitterAction.NOTIFICATION, {\n notification: \"CONNECTED\",\n type: \"info\",\n });\n });\n };\n\n return {\n connect,\n };\n};\n","export default \"data:image/png;base64,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\"","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"style\", {\n type: \"text/css\"\n}, \"\\n\\t.st0{fill:#38F997;}\\n\");\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M69,98.3l-13.4,0l-13.4,0l-19-19l0-13.4l0-13.4l19-19l13.4,0l13.4,0l19,19l0,13.4l0,13.4L69,98.3z M55.5,90.3l10.1,0 L80,76l0-10.1l0-10.1L65.7,41.4l-10.1,0l-10.1,0L31.1,55.8l0,10.1l0,10.1l14.3,14.3L55.5,90.3z\"\n});\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n className: \"st0\",\n d: \"M88.1,79.1l-13.4,0l-13.4,0l-19-19l0-13.4l0-13.4l19-19l13.4,0l13.4,0l19,19l0,13.4l0,13.4L88.1,79.1z M74.7,71.1l10.1,0l14.3-14.3l0-10.1l0-10.1L84.8,22.2l-10.1,0l-10.1,0L50.2,36.5l0,10.1l0,10.1l14.3,14.3L74.7,71.1z\"\n}));\n\nvar _ref5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.6,118.9v19.6c0,1.9,0.4,3.3,1.3,4.4c0.9,1,2.2,1.5,3.9,1.5c1.3,0,2.5-0.3,3.6-0.9c1.1-0.6,2.2-1.4,3.2-2.4v-22.3H35 v30.8h-4.5c-1,0-1.6-0.5-1.9-1.3l-0.5-2.5c-0.6,0.6-1.3,1.2-2,1.8c-0.7,0.5-1.4,1-2.2,1.3c-0.8,0.4-1.6,0.7-2.5,0.9 c-0.9,0.2-1.8,0.3-2.9,0.3c-1.7,0-3.2-0.3-4.5-0.9s-2.4-1.4-3.3-2.4c-0.9-1-1.5-2.3-2-3.7c-0.4-1.4-0.7-3-0.7-4.7v-19.6H15.6z\"\n});\n\nvar _ref6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M42.9,149.7v-30.8h4.5c1,0,1.6,0.5,1.9,1.4l0.5,2.4c0.6-0.6,1.3-1.2,2-1.7c0.7-0.5,1.4-1,2.2-1.3c0.8-0.4,1.6-0.7,2.5-0.9 c0.9-0.2,1.8-0.3,2.9-0.3c1.7,0,3.2,0.3,4.5,0.9c1.3,0.6,2.4,1.4,3.3,2.4s1.5,2.3,2,3.7c0.5,1.4,0.7,3,0.7,4.7v19.6h-7.4v-19.6 c0-1.9-0.4-3.3-1.3-4.4c-0.9-1-2.2-1.5-3.9-1.5c-1.3,0-2.5,0.3-3.6,0.9s-2.2,1.4-3.2,2.4v22.3H42.9z\"\n});\n\nvar _ref7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M86,110c0,0.6-0.1,1.2-0.4,1.8c-0.3,0.6-0.6,1-1,1.5c-0.4,0.4-0.9,0.8-1.5,1c-0.6,0.2-1.2,0.4-1.9,0.4 c-0.6,0-1.2-0.1-1.8-0.4c-0.6-0.2-1.1-0.6-1.5-1c-0.4-0.4-0.8-0.9-1-1.5c-0.3-0.6-0.4-1.2-0.4-1.8c0-0.7,0.1-1.3,0.4-1.9 c0.2-0.6,0.6-1.1,1-1.5s0.9-0.8,1.5-1c0.6-0.2,1.2-0.4,1.8-0.4c0.7,0,1.3,0.1,1.9,0.4c0.6,0.3,1.1,0.6,1.5,1c0.4,0.4,0.8,0.9,1,1.5 C85.9,108.7,86,109.3,86,110z M84.9,118.9v30.8h-7.4v-30.8H84.9z\"\n});\n\nvar _ref8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M94.6,149.7v-25.2l-2.7-0.4c-0.6-0.1-1-0.3-1.4-0.6c-0.4-0.3-0.5-0.7-0.5-1.3v-3h4.6v-1c0-1.9,0.3-3.6,0.9-5.2 c0.6-1.6,1.6-3,2.8-4.2c1.3-1.2,2.9-2.1,4.8-2.8c1.9-0.7,4.2-1,6.8-1c0.8,0,1.7,0,2.6,0.1c0.9,0.1,1.6,0.2,2.3,0.4l-0.2,3.8 c0,0.5-0.3,0.7-0.8,0.8c-0.5,0.1-1,0.1-1.7,0.1c-1.9,0-3.6,0.2-4.9,0.5c-1.3,0.3-2.4,0.8-3.2,1.5s-1.4,1.5-1.7,2.5 c-0.4,1-0.5,2.2-0.5,3.5v0.8h19.1v30.5h-7.4v-25.2H102v25.2H94.6z\"\n});\n\nfunction SvgUnifi(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Layer_1\",\n x: \"0px\",\n y: \"0px\",\n viewBox: \"0 0 129.7 164.3\",\n style: {\n enableBackground: \"new 0 0 129.7 164.3\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2, /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"g\", {\n style: {\n fill: \"#fff\"\n }\n }, _ref3), _ref4), /*#__PURE__*/React.createElement(\"g\", {\n style: {\n fill: \"#fff\"\n }\n }, _ref5, _ref6, _ref7, _ref8));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgUnifi);\nexport default __webpack_public_path__ + \"static/media/Unifi.24a1724c.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useState } from \"react\";\nimport { useRecoilValue } from \"recoil\";\nimport { Adapter } from \"../../Store/Adapter\";\nimport { Balances } from \"../../Store/Balance\";\nimport { ConnectedModal } from \"../ConnectedModal\";\nimport { ConnectionModal } from \"../ConnectionModal\";\nimport { ReactComponent as UnifiLogo } from \"Assets/Unifi.svg\";\nimport { Config } from \"../../Config\";\n\nimport \"./Header.scss\";\n\nexport const Header: React.FC = ({ children }) => {\n const adapter = useRecoilValue(Adapter);\n const balance = useRecoilValue(Balances);\n const [connectionModal, setConnectionModal] = useState(false);\n\n return (\n
\n
\n \n \n \n\n \n {adapter && (\n <>\n \n {balance[Config.blockchainToken]} {Config.blockchainToken}\n \n {balance[Config.contracts.UNFI.address]} UNFI\n \n )}\n setConnectionModal(true)}\n >\n {adapter ? adapter.getAddress() : \"Connect a Wallet\"}\n \n \n Go to uTrade\n \n \n\n setConnectionModal(false)}\n />\n setConnectionModal(false)}\n />\n
\n
{children}
\n
\n );\n};\n","import React from \"react\";\nimport { Button } from \"../../Components/Button\";\n\nimport \"./HomeHeader.scss\";\n\nexport const HomeHeader = () => {\n return (\n
\n
\n
\n Transfer UNFI from Binance Smart Chain to Ethereum\n
\n
\n BEP20 UNFI tokens on BSC can be deposited on this page and then\n transferred to Ethereum via the transfer bridge. You must input an\n Ethereum address for which you own the private key. Do not use an\n exchange wallet. If you make a typo, or paste the wrong address, or\n input a BSC address, your funds may be lost.\n
\n No refunds are possible for any reason. Unifi is not responsible for\n any loss, regardless of cause.\n

Instructions:

\n
    \n
  1. Connect to Binance Smart Chain with a supported wallet.
  2. \n
  3. \n Enter an amount of BEP20 UNFI tokens to transfer to Ethereum.\n
  4. \n
  5. \n Enter an appropriate Ethereum address. See above for important\n details.\n
  6. \n
  7. Press the Transfer UNFI button. Network fees apply.
  8. \n
  9. Go to Claim page for ERC20 tokens.
  10. \n
\n
\n
\n \n \n \n
\n
\n
\n
\n );\n};\n","import React from \"react\";\n\nimport \"./Body.scss\";\n\nexport const Body: React.FC = ({ children }) => {\n return
{children}
;\n};\n","export const Notification = {\n NO_WALLET: \"Connect a wallet before start.\",\n CONNECTED: \"Logged in.\",\n DISCONNECT: \"Disconnected.\",\n AUTHORIZE_WALLET: \"Authorizing your UNFI usage.\",\n CLAIM_SUCCESSFUL: \"Your claim has been processed.\",\n CLAIM_FAILED: \"Your claim has failed.\",\n STAKE_SUCCESSFUL: \"Your stake has been processed.\",\n STAKE_FAILED: \"Your stake has failed.\",\n DEPOSIT_SUCCESSFUL: \"Your deposit has been processed.\",\n DEPOSIT_FAILED: \"Your deposit has failed.\",\n UNSTAKE_SUCCESSFUL: \"Your unstake has been processed.\",\n UNSTAKE_FAILED: \"Your unstake has failed.\",\n INVALID_AMOUNT:\n \"Typed amount is invalid - Is not a number or is greater than your balances.\",\n INVALID_ADDRESS: \"Typed address is not a valid Ethereum address.\",\n};\n\nexport type NotificationType = keyof typeof Notification;\n","import React, { useCallback, useEffect } from \"react\";\nimport { useRecoilState, useRecoilValue } from \"recoil\";\nimport { AdapterBalance } from \"../../Adapter/IAdapter\";\nimport { Adapter } from \"../../Store/Adapter\";\nimport { Balances } from \"../../Store/Balance\";\nimport { useToasts } from \"react-toast-notifications\";\nimport { Emitter, EmitterAction } from \"../../Utils/EventEmitter\";\nimport { Notification, NotificationType } from \"../Notifications\";\nimport { useInterval } from \"../../Utils/useInterval\";\n\nexport const Updater = () => {\n const adapter = useRecoilValue(Adapter);\n const [, setBalances] = useRecoilState(Balances);\n const { addToast } = useToasts();\n\n const updateStateBalances = useCallback(\n (balances: AdapterBalance[]) => {\n balances.forEach((b) => {\n setBalances((state) => ({ ...state, [b.name]: b.balance }));\n });\n },\n [setBalances]\n );\n\n const fetchBalances = useCallback(() => {\n if (!adapter) return;\n adapter.getBalances();\n }, [adapter]);\n\n useEffect(() => {\n fetchBalances();\n Emitter.on(EmitterAction.BALANCE, updateStateBalances as any);\n Emitter.on(EmitterAction.REFRESH_BALANCES, fetchBalances as any);\n }, [adapter, updateStateBalances, fetchBalances]);\n\n useEffect(() => {\n const cb = (payload: {\n notification: NotificationType;\n type: \"error\" | \"warning\" | \"success\";\n }) => {\n addToast(
{Notification[payload.notification]}
, {\n appearance: payload.type,\n });\n };\n Emitter.on(EmitterAction.NOTIFICATION, cb as any);\n return () => {\n Emitter.off(EmitterAction.NOTIFICATION, cb);\n };\n }, [addToast]);\n\n useInterval(\n () => {\n Emitter.emit(EmitterAction.REFRESH_BALANCES);\n },\n adapter ? 5000 : null\n );\n\n return <>;\n};\n","import { useEffect, useRef } from \"react\";\n\nexport const useInterval = (callback: Function, delay?: number | null) => {\n const savedCallback = useRef(() => {});\n\n useEffect(() => {\n savedCallback.current = callback;\n });\n\n useEffect(() => {\n if (delay !== null) {\n const interval = setInterval(() => savedCallback.current(), delay || 0);\n return () => clearInterval(interval);\n }\n\n return undefined;\n }, [delay]);\n};\n","import { atom, selector } from \"recoil\";\n\nexport const Loading = atom<{ loading: number; totalRequests: number }>({\n key: \"loading\",\n default: { loading: 0, totalRequests: 0 },\n});\n\nexport const isLoading = selector({\n key: \"is-loading\",\n get: ({ get }) => {\n const { loading, totalRequests } = get(Loading);\n return loading !== totalRequests;\n },\n});\n","import React from \"react\";\nimport LinearProgress from \"@material-ui/core/LinearProgress\";\nimport { useRecoilValue } from \"recoil\";\nimport { isLoading } from \"../../Store/Loading\";\n\nimport \"./Loading.scss\";\n\nconst Loading: React.FC = () => {\n const loading = useRecoilValue(isLoading);\n\n return
{loading && }
;\n};\n\nexport default Loading;\n","import React from \"react\";\n// import { BrowserRouter as Router, Switch, Route } from \"react-router-dom\";\nimport { Home } from \"./Views/Home\";\nimport { Header } from \"./Components/Header\";\nimport { HomeHeader } from \"./Views/HomeHeader\";\nimport { Body } from \"./Components/Body\";\nimport { RecoilRoot } from \"recoil\";\nimport { Updater } from \"./Components/Updater\";\nimport Loading from \"./Components/Loading\";\nimport { ToastProvider } from \"react-toast-notifications\";\n\nimport \"./App.scss\";\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\nexport default App;\n","import { ReportHandler } from 'web-vitals';\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry); \n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n}\n\nexport default reportWebVitals;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}