{"version":3,"sources":["../ /^/.//.*/.po$/ groupOptions: {} namespace object","constants/chains.ts","assets/svg/logo.svg","assets/svg/arbitrum_logo.svg","assets/svg/optimism_logo.svg","utils/getLibrary.ts","connectors/Fortmatic.ts","connectors/NetworkConnector.ts","connectors/index.ts","constants/misc.ts","hooks/web3.ts","components/Blocklist/index.tsx","constants/locales.ts","state/hooks.ts","utils/constructSameAddressMap.ts","constants/addresses.ts","constants/tokens.ts","constants/routing.ts","utils/index.ts","components/SearchModal/filtering.ts","constants/lists.ts","utils/listSort.ts","state/lists/wrappedTokenInfo.ts","state/lists/hooks.ts","state/application/actions.ts","state/application/hooks.ts","state/multicall/actions.ts","state/multicall/utils.ts","state/multicall/hooks.ts","hooks/useContract.ts","hooks/Tokens.ts","state/user/actions.ts","state/user/hooks.tsx","hooks/useParsedQueryString.ts","hooks/useActiveLocale.ts","i18n.tsx","hooks/useApeModeQueryParamReader.ts","components/analytics/GoogleAnalyticsReporter.tsx","utils/getExplorerLink.ts","components/Modal/index.tsx","components/Column/index.tsx","assets/images/big_unicorn.png","assets/images/xl_uni.png","assets/images/noise.png","components/earn/styled.ts","components/Row/index.tsx","utils/anonymizeLink.ts","theme/components.tsx","theme/index.tsx","hooks/useTheme.ts","components/Button/index.tsx","utils/calculateGasMargin.ts","state/transactions/actions.ts","state/transactions/hooks.tsx","state/claim/hooks.ts","assets/images/token-logo.png","assets/images/blue-loader.svg","utils/isZero.ts","hooks/useDebounce.ts","hooks/useENSAddress.ts","hooks/useENSName.ts","hooks/useENS.ts","components/AddressInputPanel/index.tsx","hooks/useWindowSize.ts","components/Confetti/index.tsx","components/claim/AddressClaimModal.tsx","state/application/reducer.ts","state/global/actions.ts","state/user/reducer.ts","state/swap/actions.ts","state/transactions/reducer.ts","state/mint/actions.ts","state/swap/reducer.ts","state/mint/v3/actions.ts","state/mint/reducer.ts","state/burn/actions.ts","state/mint/v3/reducer.ts","state/lists/actions.ts","state/lists/reducer.ts","state/burn/reducer.ts","state/burn/v3/actions.ts","state/burn/v3/reducer.ts","state/logs/utils.ts","state/logs/slice.ts","state/multicall/reducer.ts","state/data/slice.ts","state/routing/slice.ts","state/index.ts","components/ErrorBoundary/index.tsx","utils/getUserAgent.ts","hooks/useAllCurrencyCombinations.ts","hooks/usePools.ts","hooks/useBestV3Trade.ts","hooks/useAllV3Routes.ts","hooks/useV3SwapPools.ts","hooks/useToggledVersion.ts","hooks/useSwapSlippageTolerance.ts","utils/isTradeBetter.ts","hooks/useV2Pairs.ts","hooks/useV2Trade.ts","state/swap/hooks.ts","hooks/useCurrentBlockTimestamp.ts","state/stake/hooks.ts","state/wallet/hooks.ts","assets/svg/logo_white.svg","components/claim/ClaimModal.tsx","assets/images/menu.svg","hooks/useOnClickOutside.tsx","hooks/useLocationLinkProps.ts","components/Menu/index.tsx","components/swap/styleds.tsx","assets/images/coinbaseWalletIcon.svg","assets/images/fortmaticIcon.png","assets/images/portisIcon.png","assets/images/walletConnectIcon.svg","hooks/useSocksBalance.ts","components/Identicon/index.tsx","components/Loader/index.tsx","assets/images/metamask.png","assets/images/x.svg","assets/images/arrow-right.svg","constants/wallet.ts","hooks/usePrevious.ts","components/AccountDetails/Copy.tsx","hooks/useCopyClipboard.ts","components/AccountDetails/Transaction.tsx","components/AccountDetails/index.tsx","components/WalletModal/Option.tsx","components/WalletModal/PendingView.tsx","components/Card/index.tsx","components/WalletModal/index.tsx","components/Web3Status/index.tsx","utils/switchToNetwork.ts","components/Header/NetworkCard.tsx","hooks/useTotalSupply.ts","hooks/useUSDCPrice.ts","utils/computeUniCirculation.ts","components/Header/UniBalanceContent.tsx","components/Header/index.tsx","components/Header/Polling.tsx","components/Popups/TransactionPopup.tsx","components/Popups/PopupItem.tsx","components/Popups/ClaimPopup.tsx","components/Popups/index.tsx","components/Web3ReactManager/index.tsx","theme/DarkModeQueryParamReader.tsx","hooks/useIsArgentWallet.ts","hooks/useArgentWalletContract.ts","utils/contenthashToUri.ts","utils/parseENSAddress.ts","utils/uriToHttp.ts","hooks/useHttpLocations.ts","hooks/useENSContentHash.ts","components/Logo/index.tsx","components/CurrencyLogo/index.tsx","assets/images/ethereum-logo.png","components/TransactionConfirmationModal/index.tsx","hooks/useAddTokenToMetamask.ts","utils/currencyId.ts","hooks/useInterval.ts","components/Popover/index.tsx","components/Tooltip/index.tsx","components/QuestionHelper/index.tsx","components/SearchModal/CommonBases.tsx","components/SearchModal/styleds.tsx","components/ListLogo/index.tsx","components/SearchModal/ImportRow.tsx","assets/svg/tokenlist.svg","components/SearchModal/CurrencyList.tsx","components/SearchModal/sorting.ts","hooks/useToggle.ts","components/SearchModal/CurrencySearch.tsx","components/SearchModal/ImportToken.tsx","hooks/useColor.ts","utils/getTokenList.ts","utils/resolveENSContentHash.ts","hooks/useFetchListCallback.ts","components/Toggle/ListToggle.tsx","components/SearchModal/ManageLists.tsx","utils/listVersionLabel.ts","components/SearchModal/ManageTokens.tsx","components/SearchModal/Manage.tsx","components/SearchModal/ImportList.tsx","components/SearchModal/CurrencySearchModal.tsx","hooks/useLast.ts","components/DoubleLogo/index.tsx","assets/images/dropdown.svg","components/NumericalInput/index.tsx","utils/prices.ts","components/HoverInlineText/index.tsx","components/CurrencyInputPanel/FiatValue.tsx","utils/formatCurrencyAmount.ts","components/CurrencyInputPanel/index.tsx","hooks/useIsSwapUnsupported.ts","utils/approveAmountCalldata.ts","utils/supportedChainId.ts","utils/unwrappedToken.ts","components/Toggle/MultiToggle.tsx","components/Badge/index.tsx","components/RateToggle/index.tsx","components/Badge/RangeBadge.tsx","utils/formatTickPrice.ts","components/PositionPreview/index.tsx","pages/AddLiquidity/Review.tsx","hooks/useApproveCallback.ts","hooks/useTokenAllowance.ts","hooks/useTransactionDeadline.ts","components/NetworkAlert/NetworkAlert.tsx","components/NetworkAlert/AddLiquidityNetworkAlert.tsx","utils/maxAmountSpend.ts","pages/Pool/styleds.tsx","components/swap/UnsupportedCurrencyFooter.tsx","pages/AppBody.tsx","pages/AddLiquidity/styled.tsx","utils/getTickToPrice.ts","state/data/generated.ts","state/mint/v3/utils.ts","state/mint/v3/hooks.ts","hooks/useV3Positions.ts","state/data/enhanced.ts","hooks/useFeeTierDistribution.ts","components/FeeSelector/index.tsx","components/InputStepCounter/InputStepCounter.tsx","components/RangeSelector/index.tsx","components/Toggle/index.tsx","components/TransactionSettings/index.tsx","components/Settings/index.tsx","components/NavigationTabs/index.tsx","components/SwitchLocaleLink/index.tsx","components/LiquidityChartRangeInput/Area.tsx","components/LiquidityChartRangeInput/AxisBottom.tsx","components/LiquidityChartRangeInput/svg.tsx","components/LiquidityChartRangeInput/Brush.tsx","components/LiquidityChartRangeInput/Line.tsx","components/LiquidityChartRangeInput/Zoom.tsx","components/LiquidityChartRangeInput/Chart.tsx","utils/computeSurroundingTicks.ts","hooks/usePoolTickData.ts","components/LiquidityChartRangeInput/index.tsx","components/LiquidityChartRangeInput/hooks.ts","components/OptimismDowntimeWarning/index.tsx","pages/AddLiquidity/index.tsx","hooks/useDerivedPositionInfo.ts","pages/AddLiquidity/redirects.tsx","components/PositionCard/index.tsx","state/mint/hooks.ts","utils/calculateSlippageAmount.ts","pages/AddLiquidityV2/ConfirmAddModalBottom.tsx","pages/AddLiquidityV2/PoolPriceBar.tsx","pages/AddLiquidityV2/index.tsx","pages/CreateProposal/ProposalActionSelector.tsx","pages/AddLiquidityV2/redirects.tsx","components/TextInput/index.tsx","pages/CreateProposal/ProposalEditor.tsx","pages/CreateProposal/ProposalActionDetail.tsx","components/ModalViews/index.tsx","pages/CreateProposal/ProposalSubmissionModal.tsx","state/logs/hooks.ts","state/governance/hooks.ts","constants/proposals/index.ts","constants/proposals/uniswap_grants_proposal_description.ts","pages/CreateProposal/index.tsx","components/earn/PoolCard.tsx","pages/Earn/Countdown.tsx","pages/Earn/index.tsx","hooks/useERC20Permit.ts","components/ProgressSteps/index.tsx","components/earn/StakingModal.tsx","components/FormattedCurrencyAmount/index.tsx","components/earn/UnstakingModal.tsx","components/earn/ClaimRewardModal.tsx","pages/Earn/Manage.tsx","components/PositionCard/V2.tsx","components/PositionCard/Sushi.tsx","pages/MigrateV2/index.tsx","pages/MigrateV2/MigrateV2Pair.tsx","hooks/useIsTickAtLimit.ts","components/PositionListItem/index.tsx","components/PositionList/index.tsx","components/NetworkAlert/MinimalNetworkAlert.tsx","assets/images/sandtexture.webp","pages/Pool/CTACards.tsx","pages/Pool/index.tsx","hooks/usePositionTokenURI.ts","hooks/useV3PositionFees.ts","pages/Pool/PositionPage.tsx","pages/Pool/v2.tsx","pages/PoolFinder/index.tsx","components/Slider/index.tsx","hooks/useDebouncedChangeHandler.tsx","state/burn/hooks.ts","pages/RemoveLiquidity/index.tsx","state/burn/v3/hooks.ts","pages/RemoveLiquidity/styled.ts","pages/RemoveLiquidity/V3.tsx","components/swap/FormattedPriceImpact.tsx","components/swap/SwapRoute.tsx","components/swap/AdvancedSwapDetails.tsx","components/swap/BetterTradeLink.tsx","components/swap/SwapModalFooter.tsx","utils/computeFiatValuePriceImpact.tsx","components/swap/TradePrice.tsx","components/swap/SwapModalHeader.tsx","components/swap/ConfirmSwapModal.tsx","components/swap/SwapHeader.tsx","hooks/useSwapCallback.ts","hooks/useWrapCallback.ts","components/TokenWarningModal/index.tsx","utils/getTradeVersion.ts","pages/Swap/index.tsx","components/swap/confirmPriceImpactWithoutFee.ts","pages/Swap/redirects.tsx","components/vote/ProposalEmptyState.tsx","components/vote/DelegateModal.tsx","pages/Vote/styled.tsx","pages/Vote/index.tsx","components/vote/VoteModal.tsx","constants/governance.ts","pages/Vote/VotePage.tsx","pages/App.tsx","serviceWorkerRegistration.ts","hooks/useIsWindowVisible.ts","state/application/updater.ts","state/lists/updater.ts","utils/chunkArray.ts","utils/retry.ts","state/multicall/updater.tsx","state/logs/updater.ts","state/transactions/updater.tsx","state/user/updater.tsx","theme/RadialGradientByChainUpdater.ts","index.tsx"],"names":["map","webpackAsyncContext","req","__webpack_require__","o","Promise","resolve","then","e","Error","code","ids","id","t","keys","Object","module","exports","SupportedChainId","ALL_SUPPORTED_CHAIN_IDS","MAINNET","ROPSTEN","RINKEBY","GOERLI","KOVAN","ARBITRUM_ONE","ARBITRUM_RINKEBY","OPTIMISM","OPTIMISTIC_KOVAN","L1_CHAIN_IDS","L2_CHAIN_IDS","CHAIN_INFO","bridge","docs","explorer","infoLink","label","logoUrl","arbitrumLogoUrl","optimismLogoUrl","NETWORK_POLLING_INTERVALS","getLibrary","provider","library","Web3Provider","chainId","parseInt","pollingInterval","detectNetwork","network","networkPollingInterval","console","debug","OVERLAY_READY","CHAIN_ID_NETWORK_ARGUMENT","undefined","FortmaticConnector","a","this","fortmatic","Fortmatic","default","apiKey","getProvider","pollForOverlayReady","interval","setInterval","overlayReady","clearInterval","emit","all","enable","accounts","account","FortmaticConnectorCore","RequestError","message","data","MiniRpcProvider","url","batchWaitTimeMs","isMetaMask","host","path","nextId","batchTimeoutId","batch","clearBatch","fetch","method","headers","accept","body","JSON","stringify","item","request","response","forEach","reject","ok","status","statusText","json","byKey","reduce","memo","current","result","error","sendAsync","callback","params","jsonrpc","catch","toString","promise","push","setTimeout","parsed","URL","pathname","NetworkConnector","urls","defaultChainId","invariant","length","supportedChainIds","k","Number","providers","currentChainId","accumulator","AbstractConnector","INFURA_KEY","process","FORMATIC_KEY","PORTIS_ID","networkLibrary","NETWORK_URLS","getNetworkLibrary","injected","InjectedConnector","gnosisSafe","SafeAppConnector","walletconnect","WalletConnectConnector","rpc","qrcode","portis","PortisConnector","dAppId","networks","walletlink","WalletLinkConnector","appName","appLogoUrl","UNISWAP_LOGO_URL","ZERO_ADDRESS","NetworkContextName","DEFAULT_DEADLINE_FROM_NOW","BIG_INT_SECONDS_IN_WEEK","JSBI","BigInt","BIG_INT_ZERO","BIPS_BASE","ONE_BIPS","Percent","ALLOWED_PRICE_IMPACT_LOW","ALLOWED_PRICE_IMPACT_MEDIUM","ALLOWED_PRICE_IMPACT_HIGH","PRICE_IMPACT_WITHOUT_FEE_CONFIRM_MIN","BLOCKED_PRICE_IMPACT_NON_EXPERT","BETTER_TRADE_LESS_HOPS_THRESHOLD","ZERO_PERCENT","ONE_HUNDRED_PERCENT","IS_ON_APP_URL","window","location","hostname","useActiveWeb3React","context","useWeb3ReactCore","contextNetwork","active","BLOCKED_ADDRESSES","Blocklist","children","useMemo","Boolean","indexOf","SUPPORTED_LOCALES","DEFAULT_LOCALE","LOCALE_LABEL","useAppDispatch","useDispatch","useAppSelector","useSelector","constructSameAddressMap","address","additionalNetworks","concat","UNI_ADDRESS","MULTICALL_ADDRESS","V2_FACTORY_ADDRESSES","V2_FACTORY_ADDRESS","V2_ROUTER_ADDRESS","GOVERNANCE_ALPHA_V0_ADDRESSES","GOVERNANCE_ALPHA_V1_ADDRESSES","TIMELOCK_ADDRESS","MERKLE_DISTRIBUTOR_ADDRESS","ARGENT_WALLET_DETECTOR_ADDRESS","V3_CORE_FACTORY_ADDRESSES","V3_FACTORY_ADDRESS","QUOTER_ADDRESSES","NONFUNGIBLE_POSITION_MANAGER_ADDRESSES","ENS_REGISTRAR_ADDRESSES","SOCKS_CONTROLLER_ADDRESSES","SWAP_ROUTER_ADDRESSES","V3_MIGRATOR_ADDRESSES","AMPL","Token","DAI","USDC","USDC_ARBITRUM","DAI_OPTIMISM","USDT","USDT_OPTIMISM","WBTC","WBTC_OPTIMISM","FEI","TRIBE","FRAX","FXS","renBTC","UMA","ETH2X_FLI","UST","MIR","UNI","WETH9_EXTENDED","WETH9","ExtendedEther","_cachedEther","Ether","mAssetsAdditionalBases","WETH_ONLY","fromEntries","entries","BASES_TO_CHECK_TRADES_AGAINST","ADDITIONAL_BASES","CUSTOM_BASES","COMMON_BASES","onChain","BASES_TO_TRACK_LIQUIDITY_FOR","PINNED_PAIRS","isAddress","value","getAddress","shortenAddress","chars","substring","getContract","ABI","AddressZero","Contract","getSigner","connectUnchecked","getProviderOrSigner","alwaysTrue","createTokenFilterFunction","search","searchingAddress","lower","toLowerCase","lowerSearchParts","split","filter","s","matchesSearch","sParts","every","p","some","sp","startsWith","endsWith","name","symbol","GEMINI_LIST","OPTIMISM_LIST","UNSUPPORTED_LIST_URLS","DEFAULT_LIST_OF_LISTS","DEFAULT_ACTIVE_LIST_URLS","DEFAULT_LIST_PRIORITIES","listUrl","index","sortByListPriority","urlA","urlB","WrappedTokenInfo","tokenInfo","list","isNative","isToken","_checksummedAddress","_tags","checksummedAddress","decimals","logoURI","tags","listTags","tagId","other","equals","listCache","WeakMap","listToTokenMap","get","tokens","tokenMap","token","set","TRANSFORMED_DEFAULT_TOKEN_LIST","DEFAULT_TOKEN_LIST","useAllLists","state","lists","byUrl","combineMaps","map1","map2","useCombinedTokenMapFromUrls","slice","sort","allTokens","currentUrl","useActiveListUrls","activeListUrls","includes","useInactiveListUrls","allActiveListUrls","useCombinedActiveList","ApplicationModal","updateChainId","createAction","updateBlockNumber","setOpenModal","addPopup","removePopup","useBlockNumber","application","blockNumber","useModalOpen","modal","openModal","useToggleModal","open","dispatch","useCallback","useWalletModalToggle","WALLET","useShowClaimPopup","CLAIM_POPUP","useToggleSelfClaimModal","SELF_CLAIM","useToggleDelegateModal","DELEGATE","addMulticallListeners","removeMulticallListeners","fetchingMulticallResults","errorFetchingMulticallResults","updateMulticallResults","toCallKey","call","key","callData","gasRequired","isSafeInteger","parseCallKey","callKey","pcs","isMethodArg","x","BigNumber","isBigNumber","isValidMethodArgs","Array","isArray","xi","INVALID_RESULT","valid","NEVER_RELOAD","blocksPerFetch","Infinity","useCallsData","calls","callResults","multicall","serializedCallKeys","c","useEffect","callKeys","parse","options","INVALID_CALL_STATE","loading","syncing","LOADING_CALL_STATE","toCallState","callResult","contractInterface","fragment","latestBlockNumber","success","decodeFunctionResult","useSingleContractMultipleData","contract","methodName","callInputs","interface","getFunction","inputs","encodeFunctionData","results","useMultipleContractSingleData","addresses","useSingleCallResult","useContract","addressOrAddressMap","withSignerIfPossible","useTokenContract","tokenAddress","ERC20_ABI","useENSRegistrarContract","ENS_ABI","useENSResolverContract","ENS_PUBLIC_RESOLVER_ABI","usePairContract","pairAddress","IUniswapV2PairABI","useV2RouterContract","IUniswapV2Router02ABI","useMulticall2Contract","MulticallABI","useMerkleDistributorContract","MERKLE_DISTRIBUTOR_ABI","useGovernanceV1Contract","GOVERNANCE_ABI","useLatestGovernanceContract","useUniContract","UNI_ABI","useStakingContract","stakingAddress","STAKING_REWARDS_ABI","useV3NFTPositionManagerContract","NFTPositionManagerABI","useV3Quoter","QuoterABI","useTokensFromMap","includeUserAdded","userAddedTokens","useUserAddedTokens","mapWithoutUrls","newMap","useAllTokens","useUnsupportedTokens","localUnsupportedListMap","UNSUPPORTED_TOKEN_LIST","brokenListMap","BROKEN_LIST","loadedUnsupportedListMap","useUnsupportedTokenList","useIsUserAddedToken","currency","find","BYTES32_REGEX","parseStringOrBytes32","str","bytes32","defaultValue","test","arrayify","parseBytes32String","useToken","tokenContract","tokenContractBytes32","ERC20_BYTES32_ABI","useBytes32TokenContract","tokenName","tokenNameBytes32","symbolBytes32","useCurrency","currencyId","isETH","toUpperCase","extendedEther","weth","updateMatchesDarkMode","updateArbitrumAlphaAcknowledged","updateUserDarkMode","updateUserExpertMode","updateUserLocale","updateUserSingleHopOnly","updateHideClosedPositions","updateUserSlippageTolerance","updateUserDeadline","addSerializedToken","removeSerializedToken","addSerializedPair","removeSerializedPair","serializeToken","deserializeToken","serializedToken","useIsDarkMode","user","matchesDarkMode","userDarkMode","shallowEqual","useDarkModeManager","darkMode","toggleSetDarkMode","useUserLocale","userLocale","useIsExpertMode","userExpertMode","useExpertModeManager","expertMode","toggleSetExpertMode","useUserSingleHopOnly","userSingleHopOnly","newSingleHopOnly","useUserSlippageTolerance","userSlippageTolerance","useUserSlippageToleranceWithDefault","defaultSlippageTolerance","allowedSlippage","serializedTokensMap","values","serializePair","pair","token0","token1","toV2LiquidityToken","tokenA","tokenB","computePairAddress","factoryAddress","useTrackedTokenPairs","pinnedPairs","generatedPairs","flatMap","base","savedSerializedPairs","pairs","userPairs","forChain","pairId","combinedList","keyed","sorted","sortsBefore","useArbitrumAlphaAlert","arbitrumAlphaAcknowledged","useParsedQueryString","useLocation","parseArrays","ignoreQueryPrefix","parseLocale","maybeSupportedLocale","lowerMaybeSupportedLocale","locale","navigatorLocale","navigator","language","region","useSetLocaleFromUrl","newLocale","useUserLocaleManager","setUserLocale","urlLocale","lng","useActiveLocale","plurals","af","ar","ca","cs","da","de","el","en","es","fi","fr","he","hu","it","ja","ko","nl","no","pl","pt","ro","ru","sr","sv","tr","uk","vi","zh","messages","i18n","loadLocaleData","load","activate","LanguageProvider","useState","loaded","setLoaded","dynamicActivate","forceRenderOnLocaleChange","ApeModeQueryParamReader","ape","useApeModeQueryParamReader","GoogleAnalyticsReporter","ReactGA","pageview","ExplorerDataType","ETHERSCAN_PREFIXES","getExplorerLink","type","TRANSACTION","ADDRESS","TOKEN","BLOCK","prefix","AnimatedDialogOverlay","animated","DialogOverlay","StyledDialogOverlay","styled","theme","modalBG","AnimatedDialogContent","DialogContent","StyledDialogContent","minHeight","maxHeight","mobile","isOpen","rest","attrs","bg0","bg1","transparentize","shadow1","css","mediaWidth","upToMedium","upToSmall","Modal","onDismiss","initialFocusRef","fadeTransition","useTransition","config","duration","from","opacity","enter","leave","useSpring","y","mass","tension","friction","bind","useGesture","onDrag","down","movement","velocity","direction","props","style","unstable_lockFocusAcrossFrames","isMobile","transform","interpolate","tabIndex","Column","div","ColumnCenter","AutoColumn","gap","justify","DataCard","CardBGImage","span","uImage","desaturate","CardBGImageSmaller","xlUnicorn","CardNoise","noise","CardSection","disabled","Break","Row","Box","width","align","padding","border","borderRadius","RowBetween","RowFlat","AutoRow","RowFixed","EXPLORER_HOSTNAMES","ButtonText","button","CloseIcon","X","IconWrapper","size","marginRight","marginLeft","stroke","blue1","LinkStyledButton","text2","primary1","StyledInternalLink","Link","StyledLink","LinkIconWrapper","LinkIcon","LinkIconFeather","TrashIcon","Trash","text3","rotateImg","keyframes","UniTokenAnimated","img","handleClickExternalLink","event","currentTarget","target","anonymizedHref","href","anonymizedPath","pc","join","protocol","anonymizeLink","ctrlKey","metaKey","outboundLink","preventDefault","ExternalLink","rel","onClick","ExternalLinkIcon","rotate","Spinner","BackArrowLink","text1","BackArrow","to","CustomLightSpinner","HideSmall","HideExtraSmall","upToExtraSmall","SmallOnly","MEDIA_WIDTHS","upToLarge","mediaWidthTemplates","b","ThemeProvider","themeObject","white","black","text4","text5","bg2","bg3","bg4","bg5","bg6","advancedBG","primary2","primary3","primary4","primary5","primaryText1","secondary1","secondary2","secondary3","red1","red2","red3","green1","yellow1","yellow2","yellow3","blue2","warning","blue4","colors","grids","sm","md","lg","flexColumnNoWrap","flexRowNoWrap","TextWrapper","Text","color","TYPE","fontWeight","fontSize","fontStyle","ThemedGlobalStyle","createGlobalStyle","useTheme","useContext","ThemeContext","Base","RebassButton","$borderRadius","ButtonPrimary","darken","altDisabledStyle","ButtonLight","ButtonGray","ButtonSecondary","ButtonOutlined","ButtonYellow","ButtonEmpty","ButtonConfirmedStyle","ButtonErrorStyle","ButtonConfirmed","confirmed","ButtonError","ButtonDropdownLight","display","alignItems","ActiveOutlined","Circle","CheckboxWrapper","ResponsiveCheck","Check","ButtonRadioChecked","calculateGasMargin","mul","addTransaction","clearAllTransactions","finalizeTransaction","checkedTransaction","useTransactionAdder","summary","approval","claim","hash","useAllTransactions","transactions","useIsTransactionPending","transactionHash","receipt","isTransactionRecent","tx","Date","getTime","addedTime","useUserHasSubmittedClaim","allTransactions","claimTxn","txnIndex","recipient","claimSubmitted","FETCH_CLAIM_MAPPING_PROMISE","FETCH_CLAIM_FILE_PROMISES","fetchClaimFile","res","FETCH_CLAIM_PROMISES","fetchClaim","formatted","fetchClaimMapping","mapping","startingAddress","lastAddress","useUserClaimData","claimInfo","setClaimInfo","accountClaimInfo","useUserHasAvailableClaim","userClaimData","isClaimedResult","useUserUnclaimedAmount","canClaim","uni","CurrencyAmount","fromRawAmount","amount","useClaimCallback","claimData","unclaimedAmount","distributorContract","claimCallback","args","proof","estimateGas","estimatedGasLimit","gasLimit","toSignificant","isZero","hexNumberString","useDebounce","delay","debouncedValue","setDebouncedValue","handler","clearTimeout","useENSAddress","ensName","debouncedName","ensNodeArgument","namehash","resolverAddress","resolverAddressResult","addr","changed","useENSName","debouncedAddress","substr","ENSName","useENS","nameOrAddress","validated","reverseLookup","lookup","InputPanel","ContainerRow","InputContainer","Input","input","AddressInputPanel","className","placeholder","onChange","handleInput","withoutSpaces","replace","autoComplete","autoCorrect","autoCapitalize","spellCheck","pattern","isClient","getSize","innerWidth","height","innerHeight","Confetti","start","variant","windowSize","setWindowSize","handleResize","addEventListener","removeEventListener","useWindowSize","_variant","zIndex","numberOfPieces","recycle","run","confettiSource","h","w","initialVelocityX","initialVelocityY","gravity","tweenDuration","wind","ContentWrapper","ModalUpper","ConfirmOrLoadingWrapper","activeBG","ConfirmedIcon","AddressClaimModal","typed","setTyped","parsedAddress","attempting","setAttempting","hasAvailableClaim","setHash","claimPending","claimConfirmed","wrappedOnDismiss","toFixed","groupSeparator","paddingTop","val","mt","log","src","tokenLogo","alt","role","createReducer","popupList","builder","addCase","action","payload","Math","max","content","removeAfterMs","popup","nanoid","show","updateVersion","currentTimestamp","pairKey","token0Address","token1Address","Field","initialState","userHideClosedPositions","userSlippageToleranceHasBeenMigratedToAuto","userDeadline","timestamp","URLWarningVisible","isInteger","lastUpdateVersionTimestamp","serializedPair","tokenAAddress","tokenBAddress","now","txs","lastCheckedBlockNumber","confirmedTime","selectCurrency","switchCurrencies","typeInput","replaceSwapState","setRecipient","independentField","INPUT","typedValue","OUTPUT","field","inputCurrencyId","outputCurrencyId","otherField","Bound","resetMintState","CURRENCY_A","otherTypedValue","startPriceTypedValue","leftRangeTypedValue","rightRangeTypedValue","noLiquidity","typeStartPriceInput","typeLeftRangeInput","typeRightRangeInput","setFullRange","fetchTokenList","pending","fulfilled","rejected","addList","removeList","enableList","disableList","acceptListUpdate","NEW_LIST_STATE","loadingRequestId","pendingUpdate","lastInitializedDefaultListOfLists","requestId","tokenList","getVersionUpgrade","version","VersionUpgrade","NONE","errorMessage","u","lastInitializedSet","l","add","Set","newListOfListsSet","has","LIQUIDITY_PERCENT","selectPercent","percent","filterToKey","topics","topic","createSlice","reducers","addListener","listeners","fetchingLogs","filters","fetchingBlockNumber","fetchedLogs","fetchState","fetchedLogsError","removeListener","actions","callListeners","CHAIN_SUBGRAPH_URL","api","createApi","reducerPath","baseQuery","document","variables","getState","subgraphUrl","stack","GraphQLClient","meta","ClientError","endpoints","allV3Ticks","query","poolAddress","skip","gql","feeTierDistribution","routingApi","fetchBaseQuery","baseUrl","build","getQuote","qs","PERSISTED_KEYS","useGetQuoteQuery","store","configureStore","reducer","swap","mint","mintV3","burn","burnV3","logs","dataApi","middleware","getDefaultMiddleware","thunk","save","states","debounce","preloadedState","FallbackWrapper","BodyWrapper","CodeBlockWrapper","LinkWrapper","SomethingWentWrongWrapper","ErrorBoundary","errorInfo","exception","fatal","encodedBody","encodeURIComponent","relevantState","pieces","getRelevantState","deviceData","UAParser","userAgent","getResult","issueBody","React","Component","useAllCurrencyCombinations","currencyA","currencyB","wrapped","bases","common","additionalA","additionalB","basePairs","otherBase","t0","t1","customBases","customBasesA","customBasesB","PoolState","V3TradeState","POOL_STATE_INTERFACE","Interface","IUniswapV3PoolStateABI","usePools","poolKeys","transformed","feeAmount","poolAddresses","v3CoreFactoryAddress","computePoolAddress","fee","slot0s","liquidities","_key","INVALID","slot0","slot0Loading","slot0Valid","liquidity","liquidityLoading","liquidityValid","LOADING","NOT_EXISTS","sqrtPriceX96","eq","EXISTS","Pool","tick","usePool","computeAllRoutes","currencyIn","currencyOut","pools","currentPath","allPaths","startCurrencyIn","maxHops","tokenIn","tokenOut","pool","involvesToken","outputToken","Route","useAllV3Routes","allCurrencyCombinations","FeeAmount","LOW","MEDIUM","HIGH","tuple","useV3SwapPools","poolsLoading","singleHopOnly","routes","QUOTE_GAS_OVERRIDES","DEFAULT_GAS_QUOTE","useBestV3TradeExactOut","amountOut","quoter","routesLoading","quotesResults","route","encodeRouteToPath","quotient","trade","currentBest","i","amountIn","gt","bestRoute","SYNCING","VALID","Trade","createUncheckedTrade","tradeType","TradeType","EXACT_OUTPUT","inputAmount","outputAmount","NO_ROUTE_FOUND","Version","V2_SWAP_DEFAULT_SLIPPAGE","V3_SWAP_DEFAULT_SLIPPAGE","ONE_TENTHS_PERCENT","DEFAULT_VERSION","v3","isTradeBetter","tradeA","tradeB","minimumDelta","equalTo","executionPrice","lessThan","asFraction","multiply","PairState","PAIR_INTERFACE","useV2Pairs","currencies","reserves","reserve0","reserve1","Pair","useV2Pair","useAllCommonPairs","allPairs","curr","liquidityToken","useV2TradeExactOut","currencyAmountOut","allowedPairs","bestTradeExactOut","maxNumResults","bestTradeSoFar","currentTrade","useSwapState","tryParseAmount","typedValueParsed","parseUnits","BAD_RECIPIENT_ADDRESSES","involvesAddress","V2Trade","tokenPath","useDerivedSwapInfo","toggledVersion","inputError","inputCurrency","outputCurrency","recipientLookup","relevantTokenBalances","useCurrencyBalances","isExactIn","parsedAmount","bestV2TradeExactIn","currencyAmountIn","bestTradeExactIn","useV2TradeExactIn","bestV2TradeExactOut","bestV3TradeExactIn","lt","EXACT_INPUT","useBestV3TradeExactIn","bestV3TradeExactOut","v2Trade","v3Trade","currencyBalances","formattedTo","toggledTrade","v2","onL2","useSwapSlippageTolerance","maximumAmountIn","balanceIn","v3TradeState","parseCurrencyFromURLParameter","urlParam","ENS_NAME_REGEX","ADDRESS_REGEX","queryParametersToSwapState","parsedQs","validatedRecipient","exactAmount","isNaN","parseFloat","parseIndependentFieldURLParameter","exactField","useCurrentBlockTimestamp","STAKING_REWARDS_INTERFACE","STAKING_GENESIS","STAKING_REWARDS_INFO","stakingRewardAddress","useStakingInfo","pairToFilterBy","currentBlockTimestamp","info","stakingRewardInfo","rewardsAddresses","accountArg","balances","earnedAmounts","totalSupplies","rewardRates","periodFinishes","rewardsAddress","balanceState","earnedAmountState","totalSupplyState","rewardRateState","periodFinishState","dummyPair","stakedAmount","totalStakedAmount","totalRewardRate","getHypotheticalRewardRate","greaterThan","divide","individualRewardRate","periodFinishSeconds","toNumber","periodFinishMs","periodFinish","earnedAmount","rewardRate","useTotalUniEarned","stakingInfos","stakingInfo","useETHBalances","uncheckedAddresses","multicallContract","TOKEN_BALANCE_GAS_OVERRIDE","useTokenBalancesWithLoadingIndicator","validatedTokens","vt","ERC20ABI","anyLoading","callState","useTokenBalances","useTokenBalance","tokenBalances","ethBalance","useCurrencyBalance","ClaimModal","toggleClaimModal","nonLPAmount","flags","isSOCKS","isUser","exponentiate","isLP","greaterThanOrEqual","subtract","_path","_path2","_path3","_extends","assign","arguments","source","prototype","hasOwnProperty","apply","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","SvgMenu","_ref","svgRef","title","titleId","viewBox","fill","xmlns","ref","d","strokeWidth","strokeLinecap","strokeLinejoin","ForwardRef","useOnClickOutside","node","handlerRef","useRef","handleClickOutside","contains","useLocationLinkProps","activeLocale","category","FlyoutAlignment","StyledMenuIcon","MenuIcon","StyledMenuButton","UNIbutton","StyledMenu","MenuFlyout","flyoutAlignment","RIGHT","MenuItem","InternalMenuItem","InternalLinkMenuItem","ToggleMenuItem","LanguageMenuItem","LanguageMenu","close","Menu","MENU","toggle","openClaimModal","ADDRESS_CLAIM","showUNIClaimOption","toggleDarkMode","menu","setMenu","NewMenuFlyout","NewMenuItem","ExternalMenuItem","Wrapper","ArrowWrapper","clickable","SectionBreak","ErrorText","severity","TruncatedText","Dots","SwapCallbackErrorInner","SwapCallbackErrorInnerAlertTriangle","SwapCallbackError","wordBreak","SwapShowAcceptChanges","SOCKS","StyledIdenticonContainer","Identicon","innerHTML","appendChild","Jazzicon","StyledSVG","svg","Loader","_line","_line2","SvgX","x1","y1","x2","y2","SUPPORTED_WALLETS","INJECTED","connector","iconURL","INJECTED_ICON_URL","description","primary","METAMASK","METAMASK_ICON_URL","WALLET_CONNECT","WALLETCONNECT_ICON_URL","WALLET_LINK","COINBASE_ICON_URL","COINBASE_LINK","mobileOnly","FORTMATIC","FORTMATIC_ICON_URL","Portis","PORTIS_ICON_URL","usePrevious","CopyIcon","TransactionStatusText","CopyHelper","timeout","isCopied","setIsCopied","staticCopy","text","didCopy","copy","hide","useCopyClipboard","setCopied","toCopy","TransactionWrapper","TransactionState","Transaction","HeaderRow","UpperSection","InfoCard","AccountGroupingRow","AccountSection","YourAccount","LowerSection","AccountControl","AddressLink","CloseColor","Close","WalletName","TransactionListWrapper","WalletAction","MainWalletAction","renderTransactions","AccountDetails","toggleWalletModal","pendingTransactions","confirmedTransactions","openOptions","getStatusIcon","WalletConnectIcon","CoinbaseWalletIcon","FortmaticIcon","PortisIcon","showPortis","clearAllTransactionsCallback","ethereum","formatConnectorName","hasENS","isENS","mb","justifyContent","OptionCard","OptionCardLeft","OptionCardClickable","GreenCircle","CircleWrapper","HeaderText","SubHeader","Option","link","header","subheader","icon","PendingSection","StyledLoader","LoadingMessage","ErrorGroup","ErrorButton","LoadingWrapper","PendingView","setPendingError","tryActivation","isMetamask","option","Card","LightCard","LightGreyCard","GreyCard","DarkGreyCard","DarkCard","OutlineCard","YellowCard","BlueCard","OptionGrid","HoverText","WALLET_VIEWS","WalletModal","useWeb3React","walletView","setWalletView","pendingWallet","setPendingWallet","pendingError","walletModalOpen","previousAccount","activePrevious","connectorPrevious","walletConnectProvider","wc","uri","UnsupportedChainIdError","getOptions","web3","MetamaskIcon","on","marginBottom","flexWrap","Web3StatusGeneric","Web3StatusError","Web3StatusConnect","faded","Web3StatusConnected","NetworkIcon","Activity","newTransactionsFirst","Sock","marginTop","StatusIcon","Web3StatusInner","hasPendingTransactions","hasSocks","balance","useHasSocks","Web3Status","sortedRecentTransactions","switchToNetwork","formattedChainId","utils","hexStripZeros","toHexString","BaseWrapper","L2Wrapper","BaseMenuItem","DisabledMenuItem","Icon","LinkOutCircle","ArrowDownCircle","ButtonMenuItem","NetworkInfo","NetworkName","NetworkCard","ARBITRUM_OPTIONS","implements3085","setImplements3085","isArbitrum","useTotalSupply","totalSupply","STABLECOIN_AMOUNT_OUT","useUSDCPrice","stablecoin","v2USDCTrade","v3USDCTrade","Price","midPrice","numerator","denominator","useUSDCValue","currencyAmount","price","quote","TREASURY_BEGIN_YEAR_1","TREASURY_CLIFF_YEAR_1","TREASURY_END_YEAR_1","TREASURY_BEGIN_YEAR_2","TREASURY_END_YEAR_2","TREASURY_BEGIN_YEAR_3","TREASURY_END_YEAR_3","TREASURY_BEGIN_YEAR_4","TREASURY_END_YEAR_4","withVesting","before","time","end","cliff","gte","sub","StyledClose","UniBalanceContent","setShowUniBalanceModal","total","uniBalance","uniUnclaimed","uniUnHarvested","useAggregateUniBalance","uniToClaim","uniPrice","blockTimestamp","unclaimedUni","circulation","wholeAmount","computeUniCirculation","HeaderFrame","showBackground","HeaderControls","HeaderElement","HeaderLinks","AccountElement","UNIAmount","UNIWrapper","BalanceText","Title","UniIcon","activeClassName","StyledNavLink","NavLink","StyledExternalLink","Header","userEthBalance","availableClaim","showUniBalanceModal","showClaimPopup","scrollY","useScrollPosition","LogoDark","Logo","isActive","match","pointerEvents","flexShrink","pr","StyledPolling","StyledPollingNumber","breathe","hovering","StyledPollingDot","rotate360","Polling","isMounting","setIsMounting","isHover","setIsHover","mountingTimer","onMouseEnter","onMouseLeave","RowNoFlex","TransactionPopup","paddingRight","Popup","Fader","AnimatedFader","PopupItem","popKey","useRemovePopup","removeThisPopup","popupContent","txn","faderStyle","StyledClaimPopup","UniToken","ClaimPopup","toggleShowClaimPopup","showClaimModal","toggleSelfClaimModal","handleToggleSelfClaimModal","userHasAvailableclaim","textAlign","MobilePopupWrapper","MobilePopupInner","StopOverflowQuery","FixedPopupColumn","extraPadding","xlPadding","Popups","activePopups","useActivePopups","urlWarningActive","isNotOnMainnet","reverse","MessageWrapper","Message","h2","Web3ReactManager","networkActive","networkError","activateNetwork","triedEager","tried","setTried","triedToConnectToSafe","useSafeAppConnection","isAuthorized","useEagerConnect","suppress","handleChainChanged","handleAccountsChanged","useInactiveListener","showLoader","setShowLoader","DarkModeQueryParamReader","useIsArgentWallet","ARGENT_WALLET_DETECTOR_ABI","useArgentWalletContract","ArgentWalletContractABI","UTF_8_DECODER","TextDecoder","contenthashToUri","contenthash","buff","hex","arr","Uint8Array","hexToUint8Array","codec","getCodec","rmPrefix","cid","CID","toB58String","multihash","decode","digest","trim","parseENSAddress","ensAddress","ensPath","uriToHttp","useHttpLocations","ens","resolvedContentHash","useENSContentHash","BAD_SRCS","srcs","refresh","onError","getTokenLogoURL","StyledEthereumLogo","StyledLogo","CurrencyLogo","uriLocations","defaultUrls","Section","inline","BottomSection","ConfirmationPendingContent","pendingText","TransactionSubmittedContent","currencyToAdd","setSuccess","addToken","image","useAddTokenToMetamask","MetaMaskLogo","margin","ConfirmationModalContent","bottomContent","topContent","TransactionErrorContent","TransactionConfirmationModal","attemptingTxn","useInterval","leading","savedCallback","PopoverContainer","ReferenceElement","Arrow","Popover","placement","referenceElement","setReferenceElement","popperElement","setPopperElement","arrowElement","setArrowElement","usePopper","strategy","modifiers","offset","element","styles","update","attributes","popper","arrow","TooltipContainer","Tooltip","TooltipContent","MouseoverTooltip","setShow","MouseoverTooltipContent","lineHeight","QuestionWrapper","QuestionMark","QuestionHelper","MobileWrapper","disable","CommonBases","onSelect","selectedCurrency","isSelected","TextDot","Checkbox","PaddedColumn","selected","SearchInput","Separator","SeparatorDark","StyledListLogo","ListLogo","TokenSection","dim","CheckIcon","CheckCircle","NameOverflow","ImportRow","showImportView","setImportToken","isAdded","activeTokens","useIsTokenActive","ml","mr","minWidth","currencyKey","StyledBalanceText","Tag","FixedContentRow","Balance","toExact","TagContainer","TokenListLogoWrapper","TokenTags","tag","CurrencyRow","otherSelected","showCurrencyAmount","isOnSelectedList","tokenAddressMap","isTokenOnList","customAdded","justifySelf","BREAK_LINE","isBreakLine","BreakLineComponent","TokenListLogo","CurrencyList","otherListTokens","onCurrencySelect","otherCurrency","fixedListRef","itemData","row","itemKey","itemCount","itemSize","useTokenComparator","inverted","useAllTokenBalances","comparator","balanceA","balanceB","balanceComp","getTokenComparator","useToggle","setState","Footer","CurrencySearch","otherSelectedCurrency","showCommonBases","disableNonToken","showManageView","fixedList","searchQuery","setSearchQuery","debouncedQuery","invertSearchOrder","isAddressSearch","searchToken","searchTokenIsAdded","tokenComparator","filteredTokens","filteredSortedTokens","symbolMatch","exactMatches","symbolSubtrings","useSortedTokensByQuery","ether","filteredSortedTokensWithETH","handleCurrencySelect","inputRef","checksummedInput","scrollTo","handleEnter","filteredInactiveTokens","minResults","inactiveUrls","tokenFilter","addressSet","useSearchInactiveTokenLists","onKeyDown","flex","disableWidth","WarningWrapper","highWarning","AddressText","ImportToken","onBack","useAddUserToken","cursor","backgroundColor","Vibrant","getPalette","palette","detectedHex","AAscore","shade","formattedPath","useColor","setColor","useLayoutEffect","stale","getColorFromToken","tokenColor","useListColor","listImageUri","getColorFromUriPath","tokenListValidator","Ajv","allErrors","compile","schema","getTokenList","resolveENSContentHash","parsedENS","contentHashUri","translatedUri","isLast","credentials","validationErrors","errors","dataPath","REGISTRAR_ABI","constant","outputs","payable","stateMutability","REGISTRAR_ADDRESS","RESOLVER_ABI","internalType","resolverContract","ensRegistrarContract","resolver","useFetchListCallback","ensResolver","getNetwork","sendDispatch","ToggleElement","bgColor","StatusText","ListToggle","UnpaddedLinkStyledButton","StyledTitleText","StyledListUrlText","RowWrapper","hasActiveTokens","listUrlRowHTMLId","ListRow","listsByUrl","activeTokensOnThisChain","acc","cur","listColor","useIsListActive","handleAcceptListUpdate","handleRemoveList","prompt","handleEnableList","handleDisableList","major","minor","patch","ListContainer","ManageLists","setModalView","setImportList","setListUrl","listUrlInput","setListUrlInput","tokenCountByListName","count","fetchList","validUrl","sortedLists","listUrlA","listUrlB","listA","listB","tempList","setTempList","addError","setAddError","fetchTempList","isImported","handleImport","CurrencyModalView","importList","textOverflow","overflow","ManageTokens","removeToken","useRemoveUserAddedToken","handleRemoveAll","importToken","ToggleWrapper","ToggleOption","Manage","showLists","setShowLists","paddingBottom","ImportList","listURL","setConfirmed","adding","handleAddList","manage","checked","CurrencySearchModal","modalView","lastOpen","filterFn","last","setLast","useLast","prevView","sizeraw","HigherLogo","CoveredLogo","DoubleCurrencyLogo","currency0","currency1","StyledInput","inputRegex","RegExp","onUserInput","prependSymbol","enforcer","nextUserInput","formattedValue","inputMode","minLength","maxLength","SvgDropdown","THIRTY_BIPS_FEE","INPUT_FRACTION_AFTER_FEE","computeRealizedLPFeePercent","currentFee","Fraction","IMPACT_TIERS","warningSeverity","priceImpact","impact","adjustSize","HoverInlineText","maxCharacters","showHover","setShowHover","FiatValue","fiatValue","priceImpactColor","formatCurrencyAmount","sigFigs","equal","decimalScale","hideInput","FixedContainer","Container","CurrencySelect","InputRow","LabelRow","FiatRow","Aligner","StyledDropDown","DropDown","StyledTokenName","StyledBalanceMax","CurrencyInputPanel","onMax","showMaxButton","renderBalance","hideBalance","locked","modalOpen","setModalOpen","selectedCurrencyBalance","handleDismissSearch","useIsSwapUnsupported","unsupportedTokens","ERC20_INTERFACE","approveAmountCalldata","spender","approveData","toHex","supportedChainId","unwrappedToken","BadgeVariant","RateToggle","handleRateToggle","isSorted","Badge","NEGATIVE","POSITIVE","PRIMARY","WARNING","WARNING_OUTLINE","pickBackgroundColor","pickBorder","readableColor","pickFontColor","BadgeWrapper","BadgeText","ActiveDot","RangeBadge","removed","inRange","DEFAULT","formatTickPrice","atLimit","LOWER","formatPrice","PositionPreview","position","baseCurrencyDefault","ticksAtLimit","baseCurrency","setBaseCurrency","quoteCurrency","priceOf","priceLower","token0PriceLower","token0PriceUpper","invert","priceUpper","handleRateChange","amount0","amount1","UPPER","Review","outOfRange","ApprovalState","useApproveCallback","amountToApprove","currentAllowance","owner","allowance","useTokenAllowance","pendingApproval","useHasPendingApproval","approvalState","APPROVED","PENDING","NOT_APPROVED","UNKNOWN","approve","useExact","MaxUint256","estimatedGas","useTransactionDeadline","ttl","L2Icon","ArbitrumWrapperBackgroundDarkMode","ArbitrumWrapperBackgroundLightMode","OptimismWrapperBackgroundDarkMode","OptimismWrapperBackgroundLightMode","RootWrapper","Body","LinkOutToBridge","NetworkAlert","setArbitrumAlphaAcknowledged","locallyDismissed","setLocallyDimissed","dismiss","depositUrl","DesktopTextBreak","AddLiquidityNetworkAlert","MIN_NATIVE_CURRENCY_FOR_GAS","maxAmountSpend","ClickableText","MaxButton","loadingAnimation","LoadingRows","DetailsFooter","UnsupportedCurrencyFooter","showDetails","setShowDetails","maxWidth","AppBody","PageWrapper","wide","ScrollablePage","DynamicSection","CurrencyDropdown","ResponsiveTwoColumns","RightContainer","StackedContainer","StackedItem","MediumOnly","HideMedium","getTickToPrice","baseToken","quoteToken","tickToPrice","Bundle_OrderBy","Burn_OrderBy","Collect_OrderBy","Factory_OrderBy","Flash_OrderBy","Mint_OrderBy","OrderDirection","PoolDayData_OrderBy","PoolHourData_OrderBy","Pool_OrderBy","PositionSnapshot_OrderBy","Position_OrderBy","Swap_OrderBy","TickDayData_OrderBy","TickHourData_OrderBy","Tick_OrderBy","TokenDayData_OrderBy","TokenHourData_OrderBy","Token_OrderBy","Transaction_OrderBy","UniswapDayData_OrderBy","_SubgraphErrorPolicy_","tryParseTick","whole","fraction","withoutDecimals","tryParsePrice","sqrtRatioX96","encodeSqrtRatioX96","TickMath","MAX_SQRT_RATIO","MAX_TICK","lessThanOrEqual","MIN_SQRT_RATIO","MIN_TICK","priceToClosestTick","nearestUsableTick","TICK_SPACINGS","useV3MintState","useV3MintActionHandlers","onFieldAInput","onFieldBInput","CURRENCY_B","onLeftRangeInput","onRightRangeInput","onStartPriceInput","useV3DerivedMintInfo","existingPosition","dependentField","poolState","invertPrice","parsedQuoteAmount","baseAmount","invalidPrice","mockPool","currentTick","currentSqrt","getSqrtRatioAtTick","poolForPosition","tickSpaceLimits","ticks","tickLower","tickUpper","invalidRange","pricesAtTicks","lowerPrice","upperPrice","independentAmount","dependentAmount","wrappedIndependentAmount","dependentCurrency","Position","fromAmount0","useFullPrecision","fromAmount1","dependentTokenAmount","parsedAmounts","deposit0Disabled","tickCurrent","deposit1Disabled","depositADisabled","depositBDisabled","fromAmounts","currencyAAmount","currencyBAmount","invalidPool","useRangeHopCallbacks","getDecrementLower","Rounding","ROUND_UP","getIncrementLower","getDecrementUpper","getIncrementUpper","getSetRange","numTicks","newPriceLower","newPriceUpper","min","getSetFullRange","useV3PositionsFromTokenIds","tokenIds","positionManager","tokenId","positions","feeGrowthInside0LastX128","feeGrowthInside1LastX128","nonce","operator","tokensOwed0","tokensOwed1","useV3PositionFromTokenId","injectedRtkApi","injectEndpoints","CHAIN_TAG","useAllV3TicksQuery","useLazyAllV3TicksQuery","useFeeTierDistributionQuery","useLazyFeeTierDistributionQuery","generatedApi","enhanceEndpoints","addTagTypes","providesTags","useFeeTierDistribution","latestBlock","skipToken","isLoading","isFetching","isUninitialized","isError","asToken0","asToken1","_meta","block","number","tvlByFeeTer","feeTier","totalValueLockedToken0","totalValueLockedToken1","sumToken0Tvl","sumToken1Tvl","mean","tvl0","sumTvl0","tvl1","sumTvl1","distributions","usePoolTVL","poolStateLow","poolStateMedium","poolStateHigh","largestUsageFeeTier","percentages","ResponsiveText","FocusedOutlineCard","pulsing","FeeAmountLabel","FeeTierPercentageBadge","percentage","FeeSelector","handleFeePoolSelect","showOptions","setShowOptions","setPulsing","previousFeeAmount","recommended","handleFeePoolSelectWithEvent","onAnimationEnd","SmallButton","NumericalInput","InputTitle","ButtonLabel","StepCounter","decrement","increment","decrementDisabled","incrementDisabled","setActive","localValue","setLocalValue","useLocalValue","setUseLocalValue","handleOnBlur","handleDecrement","handleIncrement","onFocus","onBlur","RangeSelector","leftPrice","rightPrice","SlippageError","DeadlineError","isOnSwitch","StyledToggle","Toggle","unchecked","FancyButton","OptionCustom","SlippageEmojiContainer","TransactionSettings","placeholderSlippage","setUserSlippageTolerance","useSetUserSlippageTolerance","useUserTransactionTTL","deadline","setDeadline","slippageInput","setSlippageInput","slippageError","setSlippageError","deadlineInput","setDeadlineInput","deadlineError","setDeadlineError","parseSlippageInput","floor","InvalidInput","tooLow","tooHigh","showCustomDeadlineRow","parseCustomDeadline","paddingLeft","Settings","StyledCloseIcon","EmojiWrapper","ModalContentWrapper","SettingsTab","SETTINGS","toggleExpertMode","setSingleHopOnly","showConfirmation","setShowConfirmation","confirmWord","Tabs","StyledHistoryLink","HistoryLink","ActiveText","StyledArrowLeft","ArrowLeft","SwapPoolTabs","FindPoolTabs","origin","AddRemoveTabs","creating","defaultSlippage","positionID","poolLink","resetMintV3State","CreateProposalTabs","SwitchLocaleLink","targetLocale","browserLocale","useTargetLocale","Path","Area","series","xScale","yScale","xValue","yValue","area","curve","curveStepAfter","y0","StyledGroup","g","Axis","axisGenerator","axis","select","remove","AxisBottom","axisBottom","brushHandlePath","brushHandleAccentPath","OffScreenHandle","points","Handle","HandleAccent","LabelGroup","visible","TooltipBackground","rect","compare","a1","a2","Brush","interactive","brushLabelValue","brushExtent","setBrushExtent","westHandleColor","eastHandleColor","brushRef","brushBehavior","localBrushExtent","setLocalBrushExtent","showLabels","setShowLabels","setHovering","previousBrushExtent","brushed","selection","scaled","brushX","extent","handleSize","transition","move","selectAll","attr","flipWestHandle","flipEastHandle","showWestArrow","showEastArrow","westHandleInView","eastHandleInView","stopColor","clipPath","rx","dominantBaseline","StyledLine","line","Line","Button","ZoomOverlay","Zoom","setZoom","showClear","zoomLevels","zoomBehavior","scaleBy","scaleTo","zoomIn","zoomOut","reset","initial","zoom","scaleExtent","xAccessor","price0","yAccessor","activeLiquidity","Chart","dimensions","margins","brushDomain","brushLabels","onBrushDomainChange","zoomRef","top","bottom","left","right","scales","scaleLinear","domain","initialMin","initialMax","range","newXscale","rescaleX","mask","brush","handle","west","east","computeSurroundingTicks","activeTickProcessed","sortedTickData","pivot","ascending","previousTickProcessed","processedTicks","tickIdx","currentTickProcessed","liquidityActive","liquidityNet","notEqual","usePoolActiveLiquidity","activeTick","getActiveTick","useAllV3Ticks","findIndex","subsequentTicks","ticksProcessed","ZOOM_LEVELS","ChartWrapper","InfoBox","LiquidityChartRangeInput","tokenAColor","tokenBColor","formatData","newData","chartEntry","formattedData","useDensityChartData","onBrushDomainChangeEnded","leftRangeValue","rightRangeValue","format","abs","saturate","Root","WarningIcon","AlertOctagon","TitleRow","LinkOutToNotion","OptimismDowntimeWarning","DEFAULT_ADD_IN_RANGE_SLIPPAGE_TOLERANCE","AddLiquidity","currencyIdA","currencyIdB","feeAmountFromUrl","history","existingPositionDetails","positionLoading","hasExistingPosition","positionDetails","useDerivedPositionInfo","isValid","showConfirm","setShowConfirm","setAttemptingTxn","showCapitalEfficiencyWarning","setShowCapitalEfficiencyWarning","txHash","setTxHash","formattedAmounts","usdcValues","maxAmounts","atMaxAmounts","argentWalletContract","approvalA","approveACallback","approvalB","approveBCallback","onCreate","NonfungiblePositionManager","createCallParameters","calldata","estimate","newTxn","sendTransaction","onAdd","useNative","addCallParameters","slippageTolerance","createPool","amountA","amountB","currencyNew","currencyIdOther","currencyIdNew","isETHOrWETHNew","isETHOrWETHOther","handleCurrencyASelect","currencyANew","idA","idB","handleCurrencyBSelect","currencyBNew","newFeeAmount","mustCreateSeparately","handleDismissConfirmation","addIsUnsupported","clearAll","showApprovalA","showApprovalB","Buttons","showBackLink","flexDirection","borderColor","textDecoration","RedirectDuplicateTokenIds","isETHOrWETHA","isETHOrWETHB","FixedHeightRow","StyledPositionCard","MinimalPositionCard","showUnwrapped","showMore","setShowMore","userPoolBalance","totalPoolTokens","poolTokenPercentage","getLiquidityValue","token0Deposited","token1Deposited","FullPositionCard","stakedBalance","userDefaultPoolBalance","as","ZERO","useMintState","ONE","calculateSlippageAmount","slippage","ConfirmAddModalBottom","PoolPriceBar","ProposalAction","DEFAULT_ADD_V2_SLIPPAGE_TOLERANCE","oneCurrencyIsWETH","pairState","wrappedCurrencyA","liquidityMinted","tokenAmountA","tokenAmountB","getLiquidityMinted","useDerivedMintInfo","useMintActionHandlers","router","parsedAmountA","parsedAmountB","amountsMin","tokenBIsETH","addLiquidityETH","addLiquidity","modalHeader","modalBottom","newCurrencyIdA","newCurrencyIdB","isCreate","RedirectDuplicateTokenIdsV2","ActionSelectorHeader","ActionDropdown","ProposalActionSelectorFlex","ProposalActionSelectorContainer","ProposalActionSelector","proposalAction","ProposalActionSelectorModal","onProposalActionSelect","handleProposalActionSelect","TRANSFER_TOKEN","APPROVE_TOKEN","TextAreaInput","textarea","ResizingTextArea","createElement","scrollHeight","displayName","ProposalActionDetailField","ProposalEditorHeader","ProposalTitle","ProposalEditorContainer","ProposalEditor","onTitleInput","onBodyInput","ProposalActionDetailContainer","ProposalActionDetail","toAddress","onAmountInput","onToAddressInput","proposalActionsData","CURRENCY","LoadingView","SubmittedView","LogsState","ProposalState","ProposalSubmissionModal","GovernanceInterface","GOV_ABI","useProposalCount","useFormattedProposalCreatedLogs","useLogsResult","filterKey","ERROR","SYNCED","useLogs","ProposalCreated","parseLog","details","targets","signature","signatures","types","calldatas","functionSig","defaultAbiCoder","V0_PROPOSAL_IDS","countToIndices","_","useAllProposalData","gov0","gov1","proposalCount0","proposalCount1","gov0ProposalIndexes","gov1ProposalIndexes","proposalsV0","proposalsV1","proposalStatesV0","proposalStatesV1","formattedLogsV0","formattedLogsV1","proposalsCallData","proposalStatesCallData","formattedLogs","proposal","startBlock","proposer","UNDETERMINED","forCount","formatUnits","forVotes","againstCount","againstVotes","endBlock","governorIndex","useProposalData","useUserDelegatee","useUserVotes","votes","CreateProposalButton","proposalThreshold","hasActiveOrPendingProposal","hasEnoughVote","isFormInvalid","handleCreateProposal","formattedProposalThreshold","toLocaleString","CreateProposalWrapper","AutonomousProposalCTA","CreateProposal","latestProposalData","useLatestProposalId","availableVotes","useProposalThreshold","setProposalAction","toAddressValue","setToAddressValue","currencyValue","setCurrencyValue","amountValue","setAmountValue","titleValue","setTitleValue","bodyValue","setBodyValue","handleActionSelectorClick","handleActionChange","handleDismissActionSelector","handleDismissSubmissionModal","handleToAddressInput","handleAmountInput","handleTitleInput","handleBodyInput","createProposalCallback","latestGovernanceContract","createProposalData","propose","useCreateProposalCallback","tokenAmount","encode","ACTIVE","StatContainer","TopSection","PoolCard","valueOfTotalStakedAmountInWETH","isStaking","WETH","totalSupplyOfStakingToken","stakingTokenPair","reserveOf","USDPrice","valueOfTotalStakedAmountInUSDC","HOUR","MINUTE","DAY","REWARDS_DURATION","Countdown","exactEnd","begin","setTime","timeRemaining","timeUntilGenesis","timeUntilEnd","days","hours","minutes","seconds","isFinite","padStart","PermitType","PoolSection","DataRow","Earn","stakingInfosWithBalance","stakingRewardsExist","UseERC20PermitState","PERMITTABLE_TOKENS","AMOUNT","ALLOWED","EIP712_DOMAIN_TYPE","EIP712_DOMAIN_TYPE_NO_VERSION","EIP2612_TYPE","PERMIT_ALLOWED_TYPE","useERC20Permit","overridePermitInfo","transactionDeadline","eip2612Contract","EIP_2612","useEIP2612Contract","isArgentWallet","nonceInputs","tokenNonceState","permitInfo","signatureData","setSignatureData","NOT_APPLICABLE","gatherPermitSignature","nonceNumber","isSignatureDataValid","SIGNED","NOT_SIGNED","allowed","signatureDeadline","holder","expiry","verifyingContract","EIP712Domain","Permit","primaryType","send","splitSignature","v","r","permitType","REMOVE_V2_LIQUIDITY_PERMIT_INFO","useV2LiquidityTokenPermit","liquidityAmount","Grouping","CircleRow","ProgressCircles","steps","step","HypotheticalRewardRate","StakingModal","userLiquidityUnstaked","setTypedValue","stakingToken","parsedInput","useDerivedStakeInfo","parsedAmountWrapped","hypotheticalRewardRate","pairContract","approveCallback","stakingContract","stake","stakeWithPermit","maxAmountInput","atMaxAmount","handleMax","CURRENCY_AMOUNT_MIN","FormattedCurrencyAmount","significantDigits","UnstakingModal","wrappedOndismiss","exit","ClaimRewardModal","getReward","PositionInfo","StyledDataCard","StyledBottomCard","PoolData","VoteCard","showAddLiquidityButton","showStakingModal","setShowStakingModal","showUnstakingModal","setShowUnstakingModal","showClaimRewardModal","setShowClaimRewardModal","disableTop","countUpAmount","countUpAmountPrevious","handleDepositClick","isCounting","decimalPlaces","thousandsSeparator","V2PositionCard","SushiPositionCard","EmptyState","toSushiLiquidityToken","getCreate2Address","keccak256","pack","computeSushiPairAddress","MigrateV2","v2FactoryAddress","trackedTokenPairs","tokenPairsWithLiquidityTokens","sushiLiquidityToken","v2liquidityToken","sushi","pairBalances","fetchingPairBalances","tokenPairsWithV2Balance","tokenPairsWithSushiBalance","v2Pairs","v2IsLoading","DEFAULT_MIGRATE_SLIPPAGE_TOLERANCE","LiquidityInfo","token0Amount","token1Amount","V2PairMigration","pairBalance","pairFactory","isNotUniswap","token0Value","token1Value","setFeeAmount","v2SpotPrice","v3SpotPrice","token0Price","priceDifferenceFraction","largePriceDifference","setBaseToken","sqrtPrice","mintAmountsWithSlippage","v3Amount0Min","v3Amount1Min","refund0","refund1","confirmingMigration","setConfirmingMigration","pendingMigrationHash","setPendingMigrationHash","migrator","V2MigratorABI","approveManually","isMigrationPending","migrate","deadlineToUse","liquidityToMigrate","percentageToMigrate","amount0Min","amount1Min","refundAsETH","gasEstimate","isSuccessfullyMigrated","my","MigrateV2Pair","validatedAddress","token0AddressCallState","reserve0Raw","reserve1Raw","useIsTickAtLimit","LinkRow","DataLineItem","RangeLineItem","DoubleArrow","RangeText","ExtentsText","PrimaryPositionIdData","DataText","getPriceOrderingFromPositionForUI","stable","PositionListItem","tickAtLimit","currencyQuote","currencyBase","positionSummaryLink","DesktopHeader","MobileHeader","PositionList","MinimalNetworkAlert","CTASection","section","CTA1","Texture","CTA2","ResponsiveColumn","CTACards","alignSelf","ButtonRow","ToggleUI","menuItems","POOL_OVERVIEW_OPTIONS","external","MoreOptionsButton","NoLiquidity","ResponsiveButtonPrimary","MainContentWrapper","main","ShowInactiveToggle","ResponsiveRow","newHideClosedPositions","useUserHideClosedPositions","setUserHideClosedPositions","balanceLoading","balanceResult","accountBalance","tokenIdResults","tokenRequests","someTokenIdsLoading","positionsLoading","useV3Positions","openPositions","closedPositions","filteredPositions","showConnectAWallet","showV2Features","LEFT","STARTS_WITH","MAX_UINT128","pow","useV3PositionFees","asWETH","tokenIdHexString","amounts","setAmounts","callStatic","collect","amount0Max","amount1Max","Label","NFTGrid","NFTCanvas","canvas","NFTImage","CurrentPriceCard","token1Price","LinkedCurrency","getSnapshot","targetHeight","getContext","ratio","round","devicePixelRatio","scale","clearRect","drawImage","NFT","animate","setAnimate","canvasRef","imageRef","hidden","onLoad","PositionPage","tokenIdFromUrl","parsedTokenId","metadata","tokenURI","atob","usePositionTokenURI","receiveWETH","setReceiveWETH","pricesFromPosition","manuallyInverted","setManuallyInverted","useInverter","upper","sqrt","getRatio","feeValue0","feeValue1","collecting","setCollecting","collectMigrationHash","setCollectMigrationHash","isCollectPending","price1","fiatValueOfFees","feeValue0Wrapped","feeValue1Wrapped","fiatValueOfLiquidity","collectCallParameters","expectedCurrencyOwed0","expectedCurrencyOwed1","ownsNFT","feeValueUpper","feeValueLower","below","above","onOptimisticChain","showCollectAsWeth","Fields","ResponsiveButtonSecondary","EmptyProposals","Layer2Prompt","tpwlt","v2PairsBalances","fetchingV2PairBalances","liquidityTokensWithBalances","V2Pair","allV2PairsWithLiquidity","v2Pair","stakingPairs","v2PairsWithoutStakedAmount","stakingPair","ON_L2","PoolFinder","URLSearchParams","showSearch","setShowSearch","TOKEN1","activeField","setActiveField","setCurrency0","setCurrency1","addPair","usePairAdder","validPairNoLiquidity","hasPosition","TOKEN0","handleSearchDismiss","prerequisiteMessage","justifyItems","StyledRangeInput","Slider","changeCallback","useDebouncedChangeHandler","debouncedMs","inner","setInner","timer","onChangeInner","newValue","useBurnState","DEFAULT_REMOVE_LIQUIDITY_SLIPPAGE_TOLERANCE","RemoveLiquidity","userLiquidity","LIQUIDITY","liquidityValueA","liquidityValueB","liquidityValues","percentToRemove","liquidityValue","useDerivedBurnInfo","_onUserInput","useBurnActionHandlers","showDetailed","setShowDetailed","onLiquidityInput","onCurrencyAInput","onCurrencyBInput","onRemove","currencyAmountA","currencyAmountB","currencyBIsETH","oneCurrencyIsETH","methodNames","safeGasEstimates","indexOfSuccessfulEstimation","safeGasEstimate","liquidityPercentChangeCallback","handleSelectCurrencyA","handleSelectCurrencyB","innerLiquidityPercentage","setInnerLiquidityPercentage","useBurnV3State","SmallMaxButton","ResponsiveHeaderText","DEFAULT_REMOVE_V3_LIQUIDITY_SLIPPAGE_TOLERANCE","RemoveLiquidityV3","Remove","positionSDK","liquidityPercentage","discountedAmount0","discountedAmount1","liquidityValue0","liquidityValue1","useDerivedV3BurnInfo","onPercentSelect","useBurnV3ActionHandlers","percentForSlider","onPercentSelectForSlider","txnHash","setTxnHash","removeCallParameters","collectOptions","FormattedPriceImpact","LabeledArrow","isLastItem","AdvancedSwapDetails","realizedLPFee","realizedLpFeePercent","minimumAmountOut","ResponsiveButton","BetterTradeLink","otherTradeNonexistent","linkDestination","use","SwapModalFooter","onConfirm","swapErrorMessage","disabledConfirm","computeFiatValuePriceImpact","fiatValueInput","fiatValueOutput","pct","StyledPriceContainer","TradePrice","formattedPrice","showInverted","setShowInverted","labelInverted","flipPrice","SwapModalHeader","showAcceptChanges","onAcceptChanges","tradeMeaningfullyDiffers","ConfirmSwapModal","originalTrade","V3Trade","confirmationContent","SwapCallbackState","WrapType","StyledSwapHeader","SwapHeader","TokenWarningModal","getTradeVersion","swapErrorToUserReadableMessage","reason","originalError","useSwapCallback","recipientAddressOrName","swapCalls","recipientAddress","routerContract","swapMethods","Router","swapCallParameters","feeOnTransfer","swapRouterAddress","SwapRouter","inputTokenPermit","useSwapCallArguments","gasError","callError","estimatedCalls","bestCallOption","ix","errorCalls","firstNoErrorCall","inputSymbol","outputSymbol","withRecipient","tradeVersion","withVersion","wrapType","useWrapCallback","wethContract","WETH_ABI","useWETHContract","hasInputAmount","sufficientBalance","WRAP","execute","deposit","txReceipt","UNWRAP","withdraw","StyledInfo","Info","Swap","loadedUrlParams","setResult","useDefaultsFromURLSearch","loadedInputCurrency","loadedOutputCurrency","dismissTokenWarning","setDismissTokenWarning","urlLoadedTokens","handleConfirmTokenWarning","defaultTokens","importTokensNotInDefault","isExpertMode","useToggledVersion","swapInputError","onWrap","wrapInputError","showWrap","onCurrencySelection","onSwitchTokens","onChangeRecipient","useSwapActionHandlers","handleTypeInput","handleTypeOutput","handleDismissTokenWarning","tradeToConfirm","setSwapState","userHasSpecifiedInputOutput","routeNotFound","isLoadingRoute","v3SwapRouterAddress","useApproveCallbackFromTrade","useERC20PermitFromTrade","signatureState","handleApprove","approvalSubmitted","setApprovalSubmitted","maxInputAmount","swapCallback","swapCallbackError","handleSwap","priceImpactWithoutFee","confirm","priceImpactSeverity","executionPriceImpact","showApproveFlow","handleConfirmDismiss","handleAcceptChanges","handleInputSelect","handleMaxInput","handleOutputSelect","swapIsUnsupported","priceImpactTooHigh","RedirectPathToSwapOnly","RedirectToSwap","OpenClaimAddressModalAndRedirectToSwap","Sub","HeaderContent","SubHeaderContent","ProposalEmptyState","StyledClosed","TextButton","DelegateModal","usingDelegate","setUsingDelegate","delegateCallback","uniContract","delegatee","delegate","useDelegateCallback","handleColorType","SUCCEEDED","EXECUTED","DEFEATED","QUEUED","CANCELED","EXPIRED","StyledProposalContainer","ProposalStatus","Proposal","ProposalNumber","WrapSmall","AddressButton","Vote","showDelegateModal","toggleDelegateModal","allProposals","loadingProposals","loadingAvailableVotes","userDelegatee","showUnlockVoting","VoteModal","proposalId","support","voteCallback","castVote","useVoteCallback","COMMON_CONTRACT_NAMES","AVERAGE_BLOCK_TIME_IN_SECS","ProposalInfo","CardWrapper","ProgressWrapper","Progress","percentageString","MarkDownWrapper","DetailText","ProposerAddressLink","VotePage","proposalData","setSupport","showVoteModal","VOTE","toggleVoteModal","currentBlock","endDate","DateTime","fromSeconds","local","totalVotes","forPercentage","againstPercentage","useUserVotesAsOfBlock","showVotingButtons","showLinkForUnlock","linkIfAddress","commonName","DATETIME_FULL","maximumFractionDigits","AppWrapper","HeaderWrapper","Marginer","TopLevelModals","App","component","exact","strict","PoolV2","VISIBILITY_STATE_SUPPORTED","isWindowVisible","visibilityState","useIsWindowVisible","focused","setFocused","listener","Updater","windowVisible","util","invalidateTags","useQueryCacheInvalidator","blockNumberCallback","getBlockNumber","debouncedState","fetchAllListsCallback","bump","PATCH","MINOR","minVersionBump","MAJOR","DEFAULT_GAS_REQUIRED","waitRandom","ms","random","CancelledError","isCancelledError","RetryableError","isRetryableError","retry","fn","rejectCancelled","n","minWait","maxWait","completed","cancel","chunk","obj","blockTag","returnData","debouncedListeners","multicall2Contract","cancellations","listeningKeys","allListeners","keyListeners","previousMin","activeListeningKeys","unserializedOutdatedCallKeys","minDataBlockNumber","outdatedListeningKeys","serializedOutdatedCallKeys","outdatedCallKeys","chunkedCalls","items","CONSERVATIVE_BLOCK_GAS_LIMIT","chunks","currentChunk","currentChunkCumulativeGas","chunkArray","fetchChunk","firstCallKeyIndex","lastCallKeyIndex","erroredCalls","filtersNeedFetch","parts","keyToFilter","getLogs","fromBlock","toBlock","RETRY_OPTIONS_BY_CHAIN_ID","DEFAULT_RETRY_OPTIONS","lastBlockNumber","useAddPopup","getReceipt","getTransactionReceipt","cancels","blocksSinceCheck","minutesPending","shouldCheck","blockHash","contractAddress","transactionIndex","darkHandler","matches","matchMedia","initialStyles","backgroundResetStyles","backgroundRadialGradientElement","getElementById","setBackground","newValues","RadialGradientByChainUpdater","background","Web3ProviderNetwork","createWeb3ReactRoot","autoRefreshOnNetworkChange","GOOGLE_ANALYTICS_ID","Updaters","initialize","gaOptions","storage","storeGac","anonymizeIp","customBrowserType","ReactDOM","render","serviceWorker","ready","registration","unregister"],"mappings":"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BAAAA,E,qBAAAA,Q,cA0IAC,K,QAAAA,E,sBAAAA,E,kBAAAA,E,gCAAAA,E,gCAAAA,E,4BAAAA,E,4BAAAA,E,wCAAAA,E,0CAAAA,E,0CAAAA,E,4DAAAA,E,4DAAAA,E,eAAAA,Q,cA2IAC,K,QAAAA,E,0BAAAA,E,sBAAAA,E,YAAAA,E,gBAAAA,E,sBAAAA,E,kBAAAA,E,kBAAAA,E,sBAAAA,E,0BAAAA,E,0BAAAA,E,qBAAAA,Q,cAwLAC,K,QAAAA,E,0BAAAA,E,sBAAAA,E,YAAAA,E,gBAAAA,E,gBAAAA,E,cAAAA,E,gBAAAA,E,gBAAAA,E,gBAAAA,E,kBAAAA,E,kBAAAA,E,sBAAAA,E,sBAAAA,E,sBAAAA,E,qBAAAA,Q,cAmBAC,K,UAAAA,E,aAAAA,Q,cA6SAC,K,QAAAA,E,YAAAA,E,YAAAA,E,sBAAAA,E,sBAAAA,E,0BAAAA,E,0BAAAA,E,YAAAA,E,4CAAAA,E,4CAAAA,E,gBAAAA,E,4BAAAA,E,4BAAAA,E,sBAAAA,E,kBAAAA,E,kBAAAA,E,YAAAA,E,YAAAA,E,UAAAA,E,eAAAA,Q,cAwNAC,K,QAAAA,E,kCAAAA,E,YAAAA,E,sBAAAA,E,sBAAAA,E,0BAAAA,E,0BAAAA,E,YAAAA,E,4CAAAA,E,4CAAAA,E,gBAAAA,E,4BAAAA,E,4BAAAA,E,sBAAAA,E,kBAAAA,E,kBAAAA,E,YAAAA,E,YAAAA,E,UAAAA,E,eAAAA,Q,cA8QAC,K,QAAAA,E,wCAAAA,E,4CAAAA,E,gBAAAA,E,gBAAAA,E,kBAAAA,E,sBAAAA,E,sBAAAA,E,4CAAAA,E,4CAAAA,E,0BAAAA,E,0BAAAA,E,YAAAA,E,oCAAAA,E,4BAAAA,E,4BAAAA,E,sBAAAA,E,wCAAAA,E,kBAAAA,E,kBAAAA,E,0CAAAA,E,0CAAAA,E,oCAAAA,E,gDAAAA,E,gDAAAA,E,0CAAAA,E,0CAAAA,E,4DAAAA,E,gDAAAA,E,4BAAAA,E,0BAAAA,E,cAAAA,E,cAAAA,E,cAAAA,E,oBAAAA,E,eAAAA,Q,cAmOAC,K,QAAAA,E,cAAAA,E,YAAAA,E,oBAAAA,E,0BAAAA,E,sBAAAA,E,sBAAAA,E,kCAAAA,E,k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","file":"static/js/main.b50380e6.chunk.js","sourcesContent":["var map = {\n\t\"./af-ZA.po\": [\n\t\t851,\n\t\t10\n\t],\n\t\"./ar-SA.po\": [\n\t\t852,\n\t\t11\n\t],\n\t\"./ca-ES.po\": [\n\t\t853,\n\t\t12\n\t],\n\t\"./cs-CZ.po\": [\n\t\t854,\n\t\t13\n\t],\n\t\"./da-DK.po\": [\n\t\t855,\n\t\t14\n\t],\n\t\"./de-DE.po\": [\n\t\t856,\n\t\t15\n\t],\n\t\"./el-GR.po\": [\n\t\t857,\n\t\t16\n\t],\n\t\"./en-US.po\": [\n\t\t858,\n\t\t17\n\t],\n\t\"./es-ES.po\": [\n\t\t859,\n\t\t18\n\t],\n\t\"./fi-FI.po\": [\n\t\t860,\n\t\t19\n\t],\n\t\"./fr-FR.po\": [\n\t\t861,\n\t\t20\n\t],\n\t\"./he-IL.po\": [\n\t\t862,\n\t\t21\n\t],\n\t\"./hu-HU.po\": [\n\t\t863,\n\t\t22\n\t],\n\t\"./id-ID.po\": [\n\t\t864,\n\t\t23\n\t],\n\t\"./it-IT.po\": [\n\t\t865,\n\t\t24\n\t],\n\t\"./ja-JP.po\": [\n\t\t866,\n\t\t25\n\t],\n\t\"./ko-KR.po\": [\n\t\t867,\n\t\t26\n\t],\n\t\"./nl-NL.po\": [\n\t\t868,\n\t\t27\n\t],\n\t\"./no-NO.po\": [\n\t\t869,\n\t\t28\n\t],\n\t\"./pl-PL.po\": [\n\t\t870,\n\t\t29\n\t],\n\t\"./pt-BR.po\": [\n\t\t871,\n\t\t30\n\t],\n\t\"./pt-PT.po\": [\n\t\t872,\n\t\t31\n\t],\n\t\"./ro-RO.po\": [\n\t\t873,\n\t\t32\n\t],\n\t\"./ru-RU.po\": [\n\t\t874,\n\t\t33\n\t],\n\t\"./sr-SP.po\": [\n\t\t875,\n\t\t34\n\t],\n\t\"./sv-SE.po\": [\n\t\t876,\n\t\t35\n\t],\n\t\"./tr-TR.po\": [\n\t\t877,\n\t\t36\n\t],\n\t\"./uk-UA.po\": [\n\t\t878,\n\t\t37\n\t],\n\t\"./vi-VN.po\": [\n\t\t879,\n\t\t38\n\t],\n\t\"./zh-CN.po\": [\n\t\t880,\n\t\t39\n\t],\n\t\"./zh-TW.po\": [\n\t\t881,\n\t\t40\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__.t(id, 7);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 569;\nmodule.exports = webpackAsyncContext;","import arbitrumLogoUrl from 'assets/svg/arbitrum_logo.svg'\nimport optimismLogoUrl from 'assets/svg/optimism_logo.svg'\n\nexport enum SupportedChainId {\n MAINNET = 1,\n ROPSTEN = 3,\n RINKEBY = 4,\n GOERLI = 5,\n KOVAN = 42,\n\n ARBITRUM_ONE = 42161,\n ARBITRUM_RINKEBY = 421611,\n OPTIMISM = 10,\n OPTIMISTIC_KOVAN = 69,\n}\n\nexport const ALL_SUPPORTED_CHAIN_IDS: SupportedChainId[] = [\n SupportedChainId.MAINNET,\n SupportedChainId.ROPSTEN,\n SupportedChainId.RINKEBY,\n SupportedChainId.GOERLI,\n SupportedChainId.KOVAN,\n\n SupportedChainId.ARBITRUM_ONE,\n SupportedChainId.ARBITRUM_RINKEBY,\n SupportedChainId.OPTIMISM,\n SupportedChainId.OPTIMISTIC_KOVAN,\n]\n\nexport const L1_CHAIN_IDS = [\n SupportedChainId.MAINNET,\n SupportedChainId.ROPSTEN,\n SupportedChainId.RINKEBY,\n SupportedChainId.GOERLI,\n SupportedChainId.KOVAN,\n] as const\n\nexport type SupportedL1ChainId = typeof L1_CHAIN_IDS[number]\n\nexport const L2_CHAIN_IDS = [\n SupportedChainId.ARBITRUM_ONE,\n SupportedChainId.ARBITRUM_RINKEBY,\n SupportedChainId.OPTIMISM,\n SupportedChainId.OPTIMISTIC_KOVAN,\n] as const\n\nexport type SupportedL2ChainId = typeof L2_CHAIN_IDS[number]\n\ninterface L1ChainInfo {\n readonly docs: string\n readonly explorer: string\n readonly infoLink: string\n readonly label: string\n}\ninterface L2ChainInfo extends L1ChainInfo {\n readonly bridge: string\n readonly logoUrl: string\n}\n\ntype ChainInfo = { readonly [chainId: number]: L1ChainInfo | L2ChainInfo } & {\n readonly [chainId in SupportedL2ChainId]: L2ChainInfo\n} &\n { readonly [chainId in SupportedL1ChainId]: L1ChainInfo }\n\nexport const CHAIN_INFO: ChainInfo = {\n [SupportedChainId.ARBITRUM_ONE]: {\n bridge: 'https://bridge.arbitrum.io/',\n docs: 'https://offchainlabs.com/',\n explorer: 'https://explorer.arbitrum.io/',\n infoLink: 'https://info.uniswap.org/#/arbitrum',\n label: 'Arbitrum',\n logoUrl: arbitrumLogoUrl,\n },\n [SupportedChainId.ARBITRUM_RINKEBY]: {\n bridge: 'https://bridge.arbitrum.io/',\n docs: 'https://offchainlabs.com/',\n explorer: 'https://explorer.arbitrum.io/',\n infoLink: 'https://info.uniswap.org/#/arbitrum/',\n label: 'Arbitrum Rinkeby',\n logoUrl: arbitrumLogoUrl,\n },\n [SupportedChainId.MAINNET]: {\n docs: 'https://docs.uniswap.org/',\n explorer: 'https://etherscan.io/',\n infoLink: 'https://info.uniswap.org/#/',\n label: 'Mainnet',\n },\n [SupportedChainId.RINKEBY]: {\n docs: 'https://docs.uniswap.org/',\n explorer: 'https://rinkeby.etherscan.io/',\n infoLink: 'https://info.uniswap.org/#/',\n label: 'Rinkeby',\n },\n [SupportedChainId.ROPSTEN]: {\n docs: 'https://docs.uniswap.org/',\n explorer: 'https://ropsten.etherscan.io/',\n infoLink: 'https://info.uniswap.org/#/',\n label: 'Ropsten',\n },\n [SupportedChainId.KOVAN]: {\n docs: 'https://docs.uniswap.org/',\n explorer: 'https://kovan.etherscan.io/',\n infoLink: 'https://info.uniswap.org/#/',\n label: 'Kovan',\n },\n [SupportedChainId.GOERLI]: {\n docs: 'https://docs.uniswap.org/',\n explorer: 'https://goerli.etherscan.io/',\n infoLink: 'https://info.uniswap.org/#/',\n label: 'Görli',\n },\n [SupportedChainId.OPTIMISM]: {\n bridge: 'https://gateway.optimism.io/',\n docs: 'https://optimism.io/',\n explorer: 'https://optimistic.etherscan.io/',\n infoLink: 'https://info.uniswap.org/#/optimism/',\n label: 'Optimism',\n logoUrl: optimismLogoUrl,\n },\n [SupportedChainId.OPTIMISTIC_KOVAN]: {\n bridge: 'https://gateway.optimism.io/',\n docs: 'https://optimism.io/',\n explorer: 'https://optimistic.etherscan.io/',\n infoLink: 'https://info.uniswap.org/#/optimism',\n label: 'Optimistic Kovan',\n logoUrl: optimismLogoUrl,\n },\n}\n","export default __webpack_public_path__ + \"static/media/logo.4a50b488.svg\";","export default __webpack_public_path__ + \"static/media/arbitrum_logo.ec8e5080.svg\";","export default __webpack_public_path__ + \"static/media/optimism_logo.34412af2.svg\";","import { Web3Provider } from '@ethersproject/providers'\nimport ms from 'ms.macro'\nimport { SupportedChainId } from '../constants/chains'\n\nconst NETWORK_POLLING_INTERVALS: { [chainId: number]: number } = {\n [SupportedChainId.ARBITRUM_ONE]: ms`1s`,\n [SupportedChainId.ARBITRUM_RINKEBY]: ms`1s`,\n [SupportedChainId.OPTIMISM]: ms`1s`,\n [SupportedChainId.OPTIMISTIC_KOVAN]: ms`1s`,\n}\n\nexport default function getLibrary(provider: any): Web3Provider {\n const library = new Web3Provider(\n provider,\n typeof provider.chainId === 'number'\n ? provider.chainId\n : typeof provider.chainId === 'string'\n ? parseInt(provider.chainId)\n : 'any'\n )\n library.pollingInterval = 15_000\n library.detectNetwork().then((network) => {\n const networkPollingInterval = NETWORK_POLLING_INTERVALS[network.chainId]\n if (networkPollingInterval) {\n console.debug('Setting polling interval', networkPollingInterval)\n library.pollingInterval = networkPollingInterval\n }\n })\n return library\n}\n","import { FortmaticConnector as FortmaticConnectorCore } from '@web3-react/fortmatic-connector'\n\nexport const OVERLAY_READY = 'OVERLAY_READY'\n\ntype FormaticSupportedChains = 1 | 3 | 4 | 42\n\nconst CHAIN_ID_NETWORK_ARGUMENT: { readonly [chainId in FormaticSupportedChains]: string | undefined } = {\n [1]: undefined,\n [3]: 'ropsten',\n [4]: 'rinkeby',\n [42]: 'kovan',\n}\n\nexport class FortmaticConnector extends FortmaticConnectorCore {\n async activate() {\n if (!this.fortmatic) {\n const { default: Fortmatic } = await import('fortmatic')\n\n const { apiKey, chainId } = this as any\n if (chainId in CHAIN_ID_NETWORK_ARGUMENT) {\n this.fortmatic = new Fortmatic(apiKey, CHAIN_ID_NETWORK_ARGUMENT[chainId as FormaticSupportedChains])\n } else {\n throw new Error(`Unsupported network ID: ${chainId}`)\n }\n }\n\n const provider = this.fortmatic.getProvider()\n\n const pollForOverlayReady = new Promise((resolve) => {\n const interval = setInterval(() => {\n if (provider.overlayReady) {\n clearInterval(interval)\n this.emit(OVERLAY_READY)\n resolve()\n }\n }, 200)\n })\n\n const [account] = await Promise.all([\n provider.enable().then((accounts: string[]) => accounts[0]),\n pollForOverlayReady,\n ])\n\n return { provider: this.fortmatic.getProvider(), chainId: (this as any).chainId, account }\n }\n}\n","import { ConnectorUpdate } from '@web3-react/types'\nimport { AbstractConnector } from '@web3-react/abstract-connector'\nimport invariant from 'tiny-invariant'\n\ninterface NetworkConnectorArguments {\n urls: { [chainId: number]: string }\n defaultChainId?: number\n}\n\n// taken from ethers.js, compatible interface with web3 provider\ntype AsyncSendable = {\n isMetaMask?: boolean\n host?: string\n path?: string\n sendAsync?: (request: any, callback: (error: any, response: any) => void) => void\n send?: (request: any, callback: (error: any, response: any) => void) => void\n}\n\nclass RequestError extends Error {\n constructor(message: string, public code: number, public data?: unknown) {\n super(message)\n }\n}\n\ninterface BatchItem {\n request: { jsonrpc: '2.0'; id: number; method: string; params: unknown }\n resolve: (result: any) => void\n reject: (error: Error) => void\n}\n\nclass MiniRpcProvider implements AsyncSendable {\n public readonly isMetaMask: false = false\n public readonly chainId: number\n public readonly url: string\n public readonly host: string\n public readonly path: string\n public readonly batchWaitTimeMs: number\n\n private nextId = 1\n private batchTimeoutId: ReturnType | null = null\n private batch: BatchItem[] = []\n\n constructor(chainId: number, url: string, batchWaitTimeMs?: number) {\n this.chainId = chainId\n this.url = url\n const parsed = new URL(url)\n this.host = parsed.host\n this.path = parsed.pathname\n // how long to wait to batch calls\n this.batchWaitTimeMs = batchWaitTimeMs ?? 50\n }\n\n public readonly clearBatch = async () => {\n console.debug('Clearing batch', this.batch)\n const batch = this.batch\n this.batch = []\n this.batchTimeoutId = null\n let response: Response\n try {\n response = await fetch(this.url, {\n method: 'POST',\n headers: { 'content-type': 'application/json', accept: 'application/json' },\n body: JSON.stringify(batch.map((item) => item.request)),\n })\n } catch (error) {\n batch.forEach(({ reject }) => reject(new Error('Failed to send batch call')))\n return\n }\n\n if (!response.ok) {\n batch.forEach(({ reject }) => reject(new RequestError(`${response.status}: ${response.statusText}`, -32000)))\n return\n }\n\n let json\n try {\n json = await response.json()\n } catch (error) {\n batch.forEach(({ reject }) => reject(new Error('Failed to parse JSON response')))\n return\n }\n const byKey = batch.reduce<{ [id: number]: BatchItem }>((memo, current) => {\n memo[current.request.id] = current\n return memo\n }, {})\n for (const result of json) {\n const {\n resolve,\n reject,\n request: { method },\n } = byKey[result.id]\n if ('error' in result) {\n reject(new RequestError(result?.error?.message, result?.error?.code, result?.error?.data))\n } else if ('result' in result && resolve) {\n resolve(result.result)\n } else {\n reject(new RequestError(`Received unexpected JSON-RPC response to ${method} request.`, -32000, result))\n }\n }\n }\n\n public readonly sendAsync = (\n request: {\n jsonrpc: '2.0'\n id: number | string | null\n method: string\n params?: unknown[] | Record\n },\n callback: (error: any, response: any) => void\n ): void => {\n this.request(request.method, request.params)\n .then((result) => callback(null, { jsonrpc: '2.0', id: request.id, result }))\n .catch((error) => callback(error, null))\n }\n\n public readonly request = async (\n method: string | { method: string; params: unknown[] },\n params?: unknown[] | Record\n ): Promise => {\n if (typeof method !== 'string') {\n return this.request(method.method, method.params)\n }\n if (method === 'eth_chainId') {\n return `0x${this.chainId.toString(16)}`\n }\n const promise = new Promise((resolve, reject) => {\n this.batch.push({\n request: {\n jsonrpc: '2.0',\n id: this.nextId++,\n method,\n params,\n },\n resolve,\n reject,\n })\n })\n this.batchTimeoutId = this.batchTimeoutId ?? setTimeout(this.clearBatch, this.batchWaitTimeMs)\n return promise\n }\n}\n\nexport class NetworkConnector extends AbstractConnector {\n private readonly providers: { [chainId: number]: MiniRpcProvider }\n private currentChainId: number\n\n constructor({ urls, defaultChainId }: NetworkConnectorArguments) {\n invariant(defaultChainId || Object.keys(urls).length === 1, 'defaultChainId is a required argument with >1 url')\n super({ supportedChainIds: Object.keys(urls).map((k): number => Number(k)) })\n\n this.currentChainId = defaultChainId || Number(Object.keys(urls)[0])\n this.providers = Object.keys(urls).reduce<{ [chainId: number]: MiniRpcProvider }>((accumulator, chainId) => {\n accumulator[Number(chainId)] = new MiniRpcProvider(Number(chainId), urls[Number(chainId)])\n return accumulator\n }, {})\n }\n\n public get provider(): MiniRpcProvider {\n return this.providers[this.currentChainId]\n }\n\n public async activate(): Promise {\n return { provider: this.providers[this.currentChainId], chainId: this.currentChainId, account: null }\n }\n\n public async getProvider(): Promise {\n return this.providers[this.currentChainId]\n }\n\n public async getChainId(): Promise {\n return this.currentChainId\n }\n\n public async getAccount(): Promise {\n return null\n }\n\n public deactivate() {\n return\n }\n}\n","import { Web3Provider } from '@ethersproject/providers'\nimport { SafeAppConnector } from '@gnosis.pm/safe-apps-web3-react'\nimport { InjectedConnector } from '@web3-react/injected-connector'\nimport { PortisConnector } from '@web3-react/portis-connector'\nimport { WalletConnectConnector } from '@web3-react/walletconnect-connector'\nimport { WalletLinkConnector } from '@web3-react/walletlink-connector'\nimport UNISWAP_LOGO_URL from '../assets/svg/logo.svg'\nimport { ALL_SUPPORTED_CHAIN_IDS, SupportedChainId } from '../constants/chains'\nimport getLibrary from '../utils/getLibrary'\nimport { FortmaticConnector } from './Fortmatic'\nimport { NetworkConnector } from './NetworkConnector'\n\nconst INFURA_KEY = process.env.REACT_APP_INFURA_KEY\nconst FORMATIC_KEY = process.env.REACT_APP_FORTMATIC_KEY\nconst PORTIS_ID = process.env.REACT_APP_PORTIS_ID\nconst WALLETCONNECT_BRIDGE_URL = process.env.REACT_APP_WALLETCONNECT_BRIDGE_URL\n\nif (typeof INFURA_KEY === 'undefined') {\n throw new Error(`REACT_APP_INFURA_KEY must be a defined environment variable`)\n}\n\nconst NETWORK_URLS: { [key in SupportedChainId]: string } = {\n [SupportedChainId.MAINNET]: `https://mainnet.infura.io/v3/${INFURA_KEY}`,\n [SupportedChainId.RINKEBY]: `https://rinkeby.infura.io/v3/${INFURA_KEY}`,\n [SupportedChainId.ROPSTEN]: `https://ropsten.infura.io/v3/${INFURA_KEY}`,\n [SupportedChainId.GOERLI]: `https://goerli.infura.io/v3/${INFURA_KEY}`,\n [SupportedChainId.KOVAN]: `https://kovan.infura.io/v3/${INFURA_KEY}`,\n [SupportedChainId.OPTIMISM]: `https://optimism-mainnet.infura.io/v3/${INFURA_KEY}`,\n [SupportedChainId.OPTIMISTIC_KOVAN]: `https://optimism-kovan.infura.io/v3/${INFURA_KEY}`,\n [SupportedChainId.ARBITRUM_ONE]: `https://arbitrum-mainnet.infura.io/v3/${INFURA_KEY}`,\n [SupportedChainId.ARBITRUM_RINKEBY]: `https://arbitrum-rinkeby.infura.io/v3/${INFURA_KEY}`,\n}\n\nexport const network = new NetworkConnector({\n urls: NETWORK_URLS,\n defaultChainId: 1,\n})\n\nlet networkLibrary: Web3Provider | undefined\nexport function getNetworkLibrary(): Web3Provider {\n return (networkLibrary = networkLibrary ?? getLibrary(network.provider))\n}\n\nexport const injected = new InjectedConnector({\n supportedChainIds: ALL_SUPPORTED_CHAIN_IDS,\n})\n\nexport const gnosisSafe = new SafeAppConnector()\n\nexport const walletconnect = new WalletConnectConnector({\n supportedChainIds: ALL_SUPPORTED_CHAIN_IDS,\n rpc: NETWORK_URLS,\n bridge: WALLETCONNECT_BRIDGE_URL,\n qrcode: true,\n pollingInterval: 15000,\n})\n\n// mainnet only\nexport const fortmatic = new FortmaticConnector({\n apiKey: FORMATIC_KEY ?? '',\n chainId: 1,\n})\n\n// mainnet only\nexport const portis = new PortisConnector({\n dAppId: PORTIS_ID ?? '',\n networks: [1],\n})\n\n// mainnet only\nexport const walletlink = new WalletLinkConnector({\n url: NETWORK_URLS[SupportedChainId.MAINNET],\n appName: 'Uniswap',\n appLogoUrl: UNISWAP_LOGO_URL,\n})\n","import { Percent } from '@uniswap/sdk-core'\nimport JSBI from 'jsbi'\n\nexport const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000'\n\nexport const NetworkContextName = 'NETWORK'\n\n// 30 minutes, denominated in seconds\nexport const DEFAULT_DEADLINE_FROM_NOW = 60 * 30\nexport const L2_DEADLINE_FROM_NOW = 60 * 5\n\n// used for rewards deadlines\nexport const BIG_INT_SECONDS_IN_WEEK = JSBI.BigInt(60 * 60 * 24 * 7)\n\nexport const BIG_INT_ZERO = JSBI.BigInt(0)\n\n// one basis JSBI.BigInt\nconst BIPS_BASE = JSBI.BigInt(10000)\nexport const ONE_BIPS = new Percent(JSBI.BigInt(1), BIPS_BASE)\n\n// used for warning states\nexport const ALLOWED_PRICE_IMPACT_LOW: Percent = new Percent(JSBI.BigInt(100), BIPS_BASE) // 1%\nexport const ALLOWED_PRICE_IMPACT_MEDIUM: Percent = new Percent(JSBI.BigInt(300), BIPS_BASE) // 3%\nexport const ALLOWED_PRICE_IMPACT_HIGH: Percent = new Percent(JSBI.BigInt(500), BIPS_BASE) // 5%\n// if the price slippage exceeds this number, force the user to type 'confirm' to execute\nexport const PRICE_IMPACT_WITHOUT_FEE_CONFIRM_MIN: Percent = new Percent(JSBI.BigInt(1000), BIPS_BASE) // 10%\n// for non expert mode disable swaps above this\nexport const BLOCKED_PRICE_IMPACT_NON_EXPERT: Percent = new Percent(JSBI.BigInt(1500), BIPS_BASE) // 15%\n\nexport const BETTER_TRADE_LESS_HOPS_THRESHOLD = new Percent(JSBI.BigInt(50), BIPS_BASE)\n\nexport const ZERO_PERCENT = new Percent('0')\nexport const ONE_HUNDRED_PERCENT = new Percent('1')\n\nexport const IS_ON_APP_URL = window && window.location.hostname === 'app.uniswap.org'\n","import { Web3Provider } from '@ethersproject/providers'\nimport { useSafeAppConnection } from '@gnosis.pm/safe-apps-web3-react'\nimport { useWeb3React as useWeb3ReactCore } from '@web3-react/core'\nimport { Web3ReactContextInterface } from '@web3-react/core/dist/types'\nimport { useEffect, useState } from 'react'\nimport { isMobile } from 'react-device-detect'\nimport { gnosisSafe, injected } from '../connectors'\nimport { NetworkContextName } from '../constants/misc'\n\nexport function useActiveWeb3React(): Web3ReactContextInterface {\n const context = useWeb3ReactCore()\n const contextNetwork = useWeb3ReactCore(NetworkContextName)\n return context.active ? context : contextNetwork\n}\n\nexport function useEagerConnect() {\n const { activate, active } = useWeb3ReactCore() // specifically using useWeb3ReactCore because of what this hook does\n const [tried, setTried] = useState(false)\n\n const triedToConnectToSafe = useSafeAppConnection(gnosisSafe)\n\n useEffect(() => {\n if (triedToConnectToSafe && !active) {\n injected.isAuthorized().then((isAuthorized) => {\n if (isAuthorized) {\n activate(injected, undefined, true).catch(() => {\n setTried(true)\n })\n } else {\n if (isMobile && window.ethereum) {\n activate(injected, undefined, true).catch(() => {\n setTried(true)\n })\n } else {\n setTried(true)\n }\n }\n })\n }\n }, [activate, active, triedToConnectToSafe]) // intentionally only running on mount (make sure it's only mounted once :))\n\n // if the connection worked, wait until we get confirmation of that to flip the flag\n useEffect(() => {\n if (active && triedToConnectToSafe) {\n setTried(true)\n }\n }, [active, triedToConnectToSafe])\n\n return tried\n}\n\n/**\n * Use for network and injected - logs user in\n * and out after checking what network theyre on\n */\nexport function useInactiveListener(suppress = false) {\n const { active, error, activate } = useWeb3ReactCore() // specifically using useWeb3React because of what this hook does\n\n useEffect(() => {\n const { ethereum } = window\n\n if (ethereum && ethereum.on && !active && !error && !suppress) {\n const handleChainChanged = () => {\n // eat errors\n activate(injected, undefined, true).catch((error) => {\n console.error('Failed to activate after chain changed', error)\n })\n }\n\n const handleAccountsChanged = (accounts: string[]) => {\n if (accounts.length > 0) {\n // eat errors\n activate(injected, undefined, true).catch((error) => {\n console.error('Failed to activate after accounts changed', error)\n })\n }\n }\n\n ethereum.on('chainChanged', handleChainChanged)\n ethereum.on('accountsChanged', handleAccountsChanged)\n\n return () => {\n if (ethereum.removeListener) {\n ethereum.removeListener('chainChanged', handleChainChanged)\n ethereum.removeListener('accountsChanged', handleAccountsChanged)\n }\n }\n }\n return undefined\n }, [active, error, suppress, activate])\n}\n","import { ReactNode, useMemo } from 'react'\nimport { useActiveWeb3React } from '../../hooks/web3'\nimport { Trans } from '@lingui/macro'\n\n// SDN OFAC addresses\nconst BLOCKED_ADDRESSES: string[] = [\n '0x7F367cC41522cE07553e823bf3be79A889DEbe1B',\n '0xd882cFc20F52f2599D84b8e8D58C7FB62cfE344b',\n '0x901bb9583b24D97e995513C6778dc6888AB6870e',\n '0xA7e5d5A720f06526557c513402f2e6B5fA20b008',\n '0x8576aCC5C05D6Ce88f4e49bf65BdF0C62F91353C',\n]\n\nexport default function Blocklist({ children }: { children: ReactNode }) {\n const { account } = useActiveWeb3React()\n const blocked: boolean = useMemo(() => Boolean(account && BLOCKED_ADDRESSES.indexOf(account) !== -1), [account])\n if (blocked) {\n return (\n
\n Blocked address\n
\n )\n }\n return <>{children}\n}\n","export const SUPPORTED_LOCALES = [\n // order as they appear in the language dropdown\n 'en-US',\n 'af-ZA',\n 'ar-SA',\n 'ca-ES',\n 'cs-CZ',\n 'da-DK',\n 'de-DE',\n 'el-GR',\n 'es-ES',\n 'fi-FI',\n 'fr-FR',\n 'he-IL',\n 'hu-HU',\n 'id-ID',\n 'it-IT',\n 'ja-JP',\n 'ko-KR',\n 'nl-NL',\n 'no-NO',\n 'pl-PL',\n 'pt-BR',\n 'pt-PT',\n 'ro-RO',\n 'ru-RU',\n 'sr-SP',\n 'sv-SE',\n 'tr-TR',\n 'uk-UA',\n 'vi-VN',\n 'zh-CN',\n 'zh-TW',\n] as const\nexport type SupportedLocale = typeof SUPPORTED_LOCALES[number]\n\nexport const DEFAULT_LOCALE: SupportedLocale = 'en-US'\n\nexport const LOCALE_LABEL: { [locale in SupportedLocale]: string } = {\n 'af-ZA': 'Afrikaans',\n 'ar-SA': 'العربية',\n 'ca-ES': 'Català',\n 'cs-CZ': 'čeština',\n 'da-DK': 'dansk',\n 'de-DE': 'Deutsch',\n 'el-GR': 'ελληνικά',\n 'en-US': 'English',\n 'es-ES': 'Español',\n 'fi-FI': 'Suomalainen',\n 'fr-FR': 'français',\n 'he-IL': 'עִברִית',\n 'hu-HU': 'Magyar',\n 'id-ID': 'bahasa Indonesia',\n 'it-IT': 'Italiano',\n 'ja-JP': '日本語',\n 'ko-KR': '한국어',\n 'nl-NL': 'Nederlands',\n 'no-NO': 'norsk',\n 'pl-PL': 'Polskie',\n 'pt-BR': 'português',\n 'pt-PT': 'português',\n 'ro-RO': 'Română',\n 'ru-RU': 'русский',\n 'sr-SP': 'Српски',\n 'sv-SE': 'svenska',\n 'tr-TR': 'Türkçe',\n 'uk-UA': 'Український',\n 'vi-VN': 'Tiếng Việt',\n 'zh-CN': '中文 ( 中国 )',\n 'zh-TW': '中文 ( 台灣 )',\n}\n","import { TypedUseSelectorHook, useDispatch, useSelector } from 'react-redux'\nimport { AppDispatch, AppState } from 'state'\n\nexport const useAppDispatch = () => useDispatch()\nexport const useAppSelector: TypedUseSelectorHook = useSelector\n","import { L1_CHAIN_IDS, SupportedChainId } from '../constants/chains'\n\nexport function constructSameAddressMap(\n address: T,\n additionalNetworks: SupportedChainId[] = []\n): { [chainId: number]: T } {\n return (L1_CHAIN_IDS as readonly SupportedChainId[])\n .concat(additionalNetworks)\n .reduce<{ [chainId: number]: T }>((memo, chainId) => {\n memo[chainId] = address\n return memo\n }, {})\n}\n","import { FACTORY_ADDRESS as V2_FACTORY_ADDRESS } from '@uniswap/v2-sdk'\nimport { FACTORY_ADDRESS as V3_FACTORY_ADDRESS } from '@uniswap/v3-sdk'\nimport { constructSameAddressMap } from '../utils/constructSameAddressMap'\nimport { SupportedChainId } from './chains'\n\ntype AddressMap = { [chainId: number]: string }\n\nexport const UNI_ADDRESS: AddressMap = constructSameAddressMap('0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984')\nexport const MULTICALL_ADDRESS: AddressMap = {\n ...constructSameAddressMap('0x1F98415757620B543A52E61c46B32eB19261F984', [SupportedChainId.OPTIMISTIC_KOVAN]),\n [SupportedChainId.OPTIMISM]: '0x90f872b3d8f33f305e0250db6A2761B354f7710A',\n [SupportedChainId.ARBITRUM_ONE]: '0xadF885960B47eA2CD9B55E6DAc6B42b7Cb2806dB',\n [SupportedChainId.ARBITRUM_RINKEBY]: '0xa501c031958F579dB7676fF1CE78AD305794d579',\n}\nexport const V2_FACTORY_ADDRESSES: AddressMap = constructSameAddressMap(V2_FACTORY_ADDRESS)\nexport const V2_ROUTER_ADDRESS: AddressMap = constructSameAddressMap('0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D')\n\n/**\n * The older V0 governance account\n */\nexport const GOVERNANCE_ALPHA_V0_ADDRESSES: AddressMap = constructSameAddressMap(\n '0x5e4be8Bc9637f0EAA1A755019e06A68ce081D58F'\n)\n/**\n * The latest governor alpha that is currently admin of timelock\n */\nexport const GOVERNANCE_ALPHA_V1_ADDRESSES: AddressMap = {\n [SupportedChainId.MAINNET]: '0xC4e172459f1E7939D522503B81AFAaC1014CE6F6',\n}\n\nexport const TIMELOCK_ADDRESS: AddressMap = constructSameAddressMap('0x1a9C8182C09F50C8318d769245beA52c32BE35BC')\n\nexport const MERKLE_DISTRIBUTOR_ADDRESS: AddressMap = {\n [SupportedChainId.MAINNET]: '0x090D4613473dEE047c3f2706764f49E0821D256e',\n}\nexport const ARGENT_WALLET_DETECTOR_ADDRESS: AddressMap = {\n [SupportedChainId.MAINNET]: '0xeca4B0bDBf7c55E9b7925919d03CbF8Dc82537E8',\n}\nexport const V3_CORE_FACTORY_ADDRESSES: AddressMap = constructSameAddressMap(V3_FACTORY_ADDRESS, [\n SupportedChainId.OPTIMISM,\n SupportedChainId.OPTIMISTIC_KOVAN,\n SupportedChainId.ARBITRUM_ONE,\n SupportedChainId.ARBITRUM_RINKEBY,\n])\nexport const QUOTER_ADDRESSES: AddressMap = constructSameAddressMap('0xb27308f9F90D607463bb33eA1BeBb41C27CE5AB6', [\n SupportedChainId.OPTIMISM,\n SupportedChainId.OPTIMISTIC_KOVAN,\n SupportedChainId.ARBITRUM_ONE,\n SupportedChainId.ARBITRUM_RINKEBY,\n])\nexport const NONFUNGIBLE_POSITION_MANAGER_ADDRESSES: AddressMap = constructSameAddressMap(\n '0xC36442b4a4522E871399CD717aBDD847Ab11FE88',\n [\n SupportedChainId.OPTIMISM,\n SupportedChainId.OPTIMISTIC_KOVAN,\n SupportedChainId.ARBITRUM_ONE,\n SupportedChainId.ARBITRUM_RINKEBY,\n ]\n)\nexport const ENS_REGISTRAR_ADDRESSES: AddressMap = {\n [SupportedChainId.MAINNET]: '0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e',\n [SupportedChainId.ROPSTEN]: '0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e',\n [SupportedChainId.GOERLI]: '0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e',\n [SupportedChainId.RINKEBY]: '0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e',\n}\nexport const SOCKS_CONTROLLER_ADDRESSES: AddressMap = {\n [SupportedChainId.MAINNET]: '0x65770b5283117639760beA3F867b69b3697a91dd',\n}\nexport const SWAP_ROUTER_ADDRESSES: AddressMap = constructSameAddressMap('0xE592427A0AEce92De3Edee1F18E0157C05861564', [\n SupportedChainId.OPTIMISM,\n SupportedChainId.OPTIMISTIC_KOVAN,\n SupportedChainId.ARBITRUM_ONE,\n SupportedChainId.ARBITRUM_RINKEBY,\n])\nexport const V3_MIGRATOR_ADDRESSES: AddressMap = constructSameAddressMap('0xA5644E29708357803b5A882D272c41cC0dF92B34', [\n SupportedChainId.ARBITRUM_ONE,\n SupportedChainId.ARBITRUM_RINKEBY,\n])\n","import { WETH9, Token, Ether } from '@uniswap/sdk-core'\nimport { UNI_ADDRESS } from './addresses'\nimport { SupportedChainId } from './chains'\n\nexport const AMPL = new Token(\n SupportedChainId.MAINNET,\n '0xD46bA6D942050d489DBd938a2C909A5d5039A161',\n 9,\n 'AMPL',\n 'Ampleforth'\n)\nexport const DAI = new Token(\n SupportedChainId.MAINNET,\n '0x6B175474E89094C44Da98b954EedeAC495271d0F',\n 18,\n 'DAI',\n 'Dai Stablecoin'\n)\nexport const USDC = new Token(\n SupportedChainId.MAINNET,\n '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',\n 6,\n 'USDC',\n 'USD//C'\n)\nexport const USDC_ARBITRUM = new Token(\n SupportedChainId.ARBITRUM_ONE,\n '0xe865dF68133fcEd7c2285ff3896B406CAfAa2dB8',\n 6,\n 'USDC',\n 'USD//C'\n)\nexport const DAI_OPTIMISM = new Token(\n SupportedChainId.OPTIMISM,\n '0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1',\n 18,\n 'DAI',\n 'Dai stable coin'\n)\nexport const USDT = new Token(\n SupportedChainId.MAINNET,\n '0xdAC17F958D2ee523a2206206994597C13D831ec7',\n 6,\n 'USDT',\n 'Tether USD'\n)\nexport const USDT_OPTIMISM = new Token(\n SupportedChainId.OPTIMISM,\n '0x94b008aA00579c1307B0EF2c499aD98a8ce58e58',\n 6,\n 'USDT',\n 'Tether USD'\n)\nexport const WBTC = new Token(\n SupportedChainId.MAINNET,\n '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599',\n 8,\n 'WBTC',\n 'Wrapped BTC'\n)\nexport const WBTC_OPTIMISM = new Token(\n SupportedChainId.OPTIMISM,\n '0x68f180fcCe6836688e9084f035309E29Bf0A2095',\n 8,\n 'WBTC',\n 'Wrapped BTC'\n)\nexport const FEI = new Token(\n SupportedChainId.MAINNET,\n '0x956F47F50A910163D8BF957Cf5846D573E7f87CA',\n 18,\n 'FEI',\n 'Fei USD'\n)\nexport const TRIBE = new Token(\n SupportedChainId.MAINNET,\n '0xc7283b66Eb1EB5FB86327f08e1B5816b0720212B',\n 18,\n 'TRIBE',\n 'Tribe'\n)\nexport const FRAX = new Token(\n SupportedChainId.MAINNET,\n '0x853d955aCEf822Db058eb8505911ED77F175b99e',\n 18,\n 'FRAX',\n 'Frax'\n)\nexport const FXS = new Token(\n SupportedChainId.MAINNET,\n '0x3432B6A60D23Ca0dFCa7761B7ab56459D9C964D0',\n 18,\n 'FXS',\n 'Frax Share'\n)\nexport const renBTC = new Token(\n SupportedChainId.MAINNET,\n '0xEB4C2781e4ebA804CE9a9803C67d0893436bB27D',\n 8,\n 'renBTC',\n 'renBTC'\n)\nexport const UMA = new Token(\n SupportedChainId.MAINNET,\n '0x04Fa0d235C4abf4BcF4787aF4CF447DE572eF828',\n 18,\n 'UMA',\n 'UMA Voting Token v1'\n)\nexport const ETH2X_FLI = new Token(\n SupportedChainId.MAINNET,\n '0xAa6E8127831c9DE45ae56bB1b0d4D4Da6e5665BD',\n 18,\n 'ETH2x-FLI',\n 'ETH 2x Flexible Leverage Index'\n)\n// Mirror Protocol compat.\nexport const UST = new Token(\n SupportedChainId.MAINNET,\n '0xa47c8bf37f92abed4a126bda807a7b7498661acd',\n 18,\n 'UST',\n 'Wrapped UST'\n)\nexport const MIR = new Token(\n SupportedChainId.MAINNET,\n '0x09a3ecafa817268f77be1283176b946c4ff2e608',\n 18,\n 'MIR',\n 'Wrapped MIR'\n)\nexport const UNI: { [chainId: number]: Token } = {\n [SupportedChainId.MAINNET]: new Token(SupportedChainId.MAINNET, UNI_ADDRESS[1], 18, 'UNI', 'Uniswap'),\n [SupportedChainId.RINKEBY]: new Token(SupportedChainId.RINKEBY, UNI_ADDRESS[4], 18, 'UNI', 'Uniswap'),\n [SupportedChainId.ROPSTEN]: new Token(SupportedChainId.ROPSTEN, UNI_ADDRESS[3], 18, 'UNI', 'Uniswap'),\n [SupportedChainId.GOERLI]: new Token(SupportedChainId.GOERLI, UNI_ADDRESS[5], 18, 'UNI', 'Uniswap'),\n [SupportedChainId.KOVAN]: new Token(SupportedChainId.KOVAN, UNI_ADDRESS[42], 18, 'UNI', 'Uniswap'),\n}\n\nexport const WETH9_EXTENDED: { [chainId: number]: Token } = {\n ...WETH9,\n [SupportedChainId.OPTIMISM]: new Token(\n SupportedChainId.OPTIMISM,\n '0x4200000000000000000000000000000000000006',\n 18,\n 'WETH',\n 'Wrapped Ether'\n ),\n [SupportedChainId.OPTIMISTIC_KOVAN]: new Token(\n SupportedChainId.OPTIMISTIC_KOVAN,\n '0x4200000000000000000000000000000000000006',\n 18,\n 'WETH',\n 'Wrapped Ether'\n ),\n [SupportedChainId.ARBITRUM_ONE]: new Token(\n SupportedChainId.ARBITRUM_ONE,\n '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1',\n 18,\n 'WETH',\n 'Wrapped Ether'\n ),\n [SupportedChainId.ARBITRUM_RINKEBY]: new Token(\n SupportedChainId.ARBITRUM_RINKEBY,\n '0xB47e6A5f8b33b3F17603C83a0535A9dcD7E32681',\n 18,\n 'WETH',\n 'Wrapped Ether'\n ),\n}\n\nexport class ExtendedEther extends Ether {\n public get wrapped(): Token {\n if (this.chainId in WETH9_EXTENDED) return WETH9_EXTENDED[this.chainId]\n throw new Error('Unsupported chain ID')\n }\n\n private static _cachedEther: { [chainId: number]: ExtendedEther } = {}\n\n public static onChain(chainId: number): ExtendedEther {\n return this._cachedEther[chainId] ?? (this._cachedEther[chainId] = new ExtendedEther(chainId))\n }\n}\n","// a list of tokens by chain\nimport { Currency, Token } from '@uniswap/sdk-core'\nimport { SupportedChainId } from './chains'\nimport {\n AMPL,\n DAI,\n ExtendedEther,\n FEI,\n FRAX,\n FXS,\n MIR,\n renBTC,\n TRIBE,\n UMA,\n UNI,\n USDC,\n USDT,\n UST,\n WBTC,\n ETH2X_FLI,\n WETH9_EXTENDED,\n DAI_OPTIMISM,\n USDT_OPTIMISM,\n WBTC_OPTIMISM,\n} from './tokens'\n\ntype ChainTokenList = {\n readonly [chainId: number]: Token[]\n}\n\ntype ChainCurrencyList = {\n readonly [chainId: number]: Currency[]\n}\n\n// List of all mirror's assets addresses.\n// Last pulled from : https://whitelist.mirror.finance/eth/tokenlists.json\n// TODO: Generate this programmatically ?\nconst mAssetsAdditionalBases: { [tokenAddress: string]: Token[] } = {\n [UST.address]: [MIR],\n [MIR.address]: [UST],\n '0xd36932143F6eBDEDD872D5Fb0651f4B72Fd15a84': [MIR, UST], // mAAPL\n '0x59A921Db27Dd6d4d974745B7FfC5c33932653442': [MIR, UST], // mGOOGL\n '0x21cA39943E91d704678F5D00b6616650F066fD63': [MIR, UST], // mTSLA\n '0xC8d674114bac90148d11D3C1d33C61835a0F9DCD': [MIR, UST], // mNFLX\n '0x13B02c8dE71680e71F0820c996E4bE43c2F57d15': [MIR, UST], // mQQQ\n '0xEdb0414627E6f1e3F082DE65cD4F9C693D78CCA9': [MIR, UST], // mTWTR\n '0x41BbEDd7286dAab5910a1f15d12CBda839852BD7': [MIR, UST], // mMSFT\n '0x0cae9e4d663793c2a2A0b211c1Cf4bBca2B9cAa7': [MIR, UST], // mAMZN\n '0x56aA298a19C93c6801FDde870fA63EF75Cc0aF72': [MIR, UST], // mBABA\n '0x1d350417d9787E000cc1b95d70E9536DcD91F373': [MIR, UST], // mIAU\n '0x9d1555d8cB3C846Bb4f7D5B1B1080872c3166676': [MIR, UST], // mSLV\n '0x31c63146a635EB7465e5853020b39713AC356991': [MIR, UST], // mUSO\n '0xf72FCd9DCF0190923Fadd44811E240Ef4533fc86': [MIR, UST], // mVIXY\n}\n\nconst WETH_ONLY: ChainTokenList = Object.fromEntries(\n Object.entries(WETH9_EXTENDED).map(([key, value]) => [key, [value]])\n)\n\n// used to construct intermediary pairs for trading\nexport const BASES_TO_CHECK_TRADES_AGAINST: ChainTokenList = {\n ...WETH_ONLY,\n [SupportedChainId.MAINNET]: [...WETH_ONLY[SupportedChainId.MAINNET], DAI, USDC, USDT, WBTC],\n [SupportedChainId.OPTIMISM]: [...WETH_ONLY[SupportedChainId.OPTIMISM], DAI_OPTIMISM, USDT_OPTIMISM, WBTC_OPTIMISM],\n}\nexport const ADDITIONAL_BASES: { [chainId: number]: { [tokenAddress: string]: Token[] } } = {\n [SupportedChainId.MAINNET]: {\n ...mAssetsAdditionalBases,\n '0xF16E4d813f4DcfDe4c5b44f305c908742De84eF0': [ETH2X_FLI],\n '0xA948E86885e12Fb09AfEF8C52142EBDbDf73cD18': [UNI[SupportedChainId.MAINNET]],\n '0x561a4717537ff4AF5c687328c0f7E90a319705C0': [UNI[SupportedChainId.MAINNET]],\n '0xE0360A9e2cdd7d03B9408c7D3001E017BAc2EcD5': [UNI[SupportedChainId.MAINNET]],\n '0xa6e3454fec677772dd771788a079355e43910638': [UMA],\n '0xB46F57e7Ce3a284d74b70447Ef9352B5E5Df8963': [UMA],\n [FEI.address]: [TRIBE],\n [TRIBE.address]: [FEI],\n [FRAX.address]: [FXS],\n [FXS.address]: [FRAX],\n [WBTC.address]: [renBTC],\n [renBTC.address]: [WBTC],\n },\n}\n/**\n * Some tokens can only be swapped via certain pairs, so we override the list of bases that are considered for these\n * tokens.\n */\nexport const CUSTOM_BASES: { [chainId: number]: { [tokenAddress: string]: Token[] } } = {\n [SupportedChainId.MAINNET]: {\n [AMPL.address]: [DAI, WETH9_EXTENDED[SupportedChainId.MAINNET]],\n },\n}\n\n/**\n * Shows up in the currency select for swap and add liquidity\n */\nexport const COMMON_BASES: ChainCurrencyList = {\n [SupportedChainId.MAINNET]: [\n ExtendedEther.onChain(SupportedChainId.MAINNET),\n DAI,\n USDC,\n USDT,\n WBTC,\n WETH9_EXTENDED[SupportedChainId.MAINNET],\n ],\n [SupportedChainId.ROPSTEN]: [\n ExtendedEther.onChain(SupportedChainId.ROPSTEN),\n WETH9_EXTENDED[SupportedChainId.ROPSTEN],\n ],\n [SupportedChainId.RINKEBY]: [\n ExtendedEther.onChain(SupportedChainId.RINKEBY),\n WETH9_EXTENDED[SupportedChainId.RINKEBY],\n ],\n [SupportedChainId.GOERLI]: [ExtendedEther.onChain(SupportedChainId.GOERLI), WETH9_EXTENDED[SupportedChainId.GOERLI]],\n [SupportedChainId.KOVAN]: [ExtendedEther.onChain(SupportedChainId.KOVAN), WETH9_EXTENDED[SupportedChainId.KOVAN]],\n [SupportedChainId.ARBITRUM_ONE]: [\n ExtendedEther.onChain(SupportedChainId.ARBITRUM_ONE),\n WETH9_EXTENDED[SupportedChainId.ARBITRUM_ONE],\n ],\n [SupportedChainId.ARBITRUM_RINKEBY]: [\n ExtendedEther.onChain(SupportedChainId.ARBITRUM_RINKEBY),\n WETH9_EXTENDED[SupportedChainId.ARBITRUM_RINKEBY],\n ],\n [SupportedChainId.OPTIMISM]: [ExtendedEther.onChain(SupportedChainId.OPTIMISM)],\n [SupportedChainId.OPTIMISTIC_KOVAN]: [ExtendedEther.onChain(SupportedChainId.OPTIMISTIC_KOVAN)],\n}\n\n// used to construct the list of all pairs we consider by default in the frontend\nexport const BASES_TO_TRACK_LIQUIDITY_FOR: ChainTokenList = {\n ...WETH_ONLY,\n [SupportedChainId.MAINNET]: [...WETH_ONLY[SupportedChainId.MAINNET], DAI, USDC, USDT, WBTC],\n}\nexport const PINNED_PAIRS: { readonly [chainId: number]: [Token, Token][] } = {\n [SupportedChainId.MAINNET]: [\n [\n new Token(SupportedChainId.MAINNET, '0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643', 8, 'cDAI', 'Compound Dai'),\n new Token(\n SupportedChainId.MAINNET,\n '0x39AA39c021dfbaE8faC545936693aC917d5E7563',\n 8,\n 'cUSDC',\n 'Compound USD Coin'\n ),\n ],\n [USDC, USDT],\n [DAI, USDT],\n ],\n}\n","import { getAddress } from '@ethersproject/address'\nimport { AddressZero } from '@ethersproject/constants'\nimport { Contract } from '@ethersproject/contracts'\nimport { JsonRpcSigner, Web3Provider } from '@ethersproject/providers'\nimport { Token } from '@uniswap/sdk-core'\nimport { FeeAmount } from '@uniswap/v3-sdk/dist/'\nimport { TokenAddressMap } from '../state/lists/hooks'\n\n// returns the checksummed address if the address is valid, otherwise returns false\nexport function isAddress(value: any): string | false {\n try {\n return getAddress(value)\n } catch {\n return false\n }\n}\n\n// shorten the checksummed version of the input address to have 0x + 4 characters at start and end\nexport function shortenAddress(address: string, chars = 4): string {\n const parsed = isAddress(address)\n if (!parsed) {\n throw Error(`Invalid 'address' parameter '${address}'.`)\n }\n return `${parsed.substring(0, chars + 2)}...${parsed.substring(42 - chars)}`\n}\n\n// account is not optional\nfunction getSigner(library: Web3Provider, account: string): JsonRpcSigner {\n return library.getSigner(account).connectUnchecked()\n}\n\n// account is optional\nfunction getProviderOrSigner(library: Web3Provider, account?: string): Web3Provider | JsonRpcSigner {\n return account ? getSigner(library, account) : library\n}\n\n// account is optional\nexport function getContract(address: string, ABI: any, library: Web3Provider, account?: string): Contract {\n if (!isAddress(address) || address === AddressZero) {\n throw Error(`Invalid 'address' parameter '${address}'.`)\n }\n\n return new Contract(address, ABI, getProviderOrSigner(library, account) as any)\n}\n\nexport function escapeRegExp(string: string): string {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&') // $& means the whole matched string\n}\n\nexport function isTokenOnList(tokenAddressMap: TokenAddressMap, token?: Token): boolean {\n return Boolean(token?.isToken && tokenAddressMap[token.chainId]?.[token.address])\n}\n\nexport function formattedFeeAmount(feeAmount: FeeAmount): number {\n return feeAmount / 10000\n}\n","import { TokenInfo } from '@uniswap/token-lists'\nimport { useMemo } from 'react'\nimport { isAddress } from '../../utils'\nimport { Token } from '@uniswap/sdk-core'\n\nconst alwaysTrue = () => true\n\n/**\n * Create a filter function to apply to a token for whether it matches a particular search query\n * @param search the search query to apply to the token\n */\nexport function createTokenFilterFunction(search: string): (tokens: T) => boolean {\n const searchingAddress = isAddress(search)\n\n if (searchingAddress) {\n const lower = searchingAddress.toLowerCase()\n return (t: T) => ('isToken' in t ? searchingAddress === t.address : lower === t.address.toLowerCase())\n }\n\n const lowerSearchParts = search\n .toLowerCase()\n .split(/\\s+/)\n .filter((s) => s.length > 0)\n\n if (lowerSearchParts.length === 0) return alwaysTrue\n\n const matchesSearch = (s: string): boolean => {\n const sParts = s\n .toLowerCase()\n .split(/\\s+/)\n .filter((s) => s.length > 0)\n\n return lowerSearchParts.every((p) => p.length === 0 || sParts.some((sp) => sp.startsWith(p) || sp.endsWith(p)))\n }\n\n return ({ name, symbol }: T): boolean => Boolean((symbol && matchesSearch(symbol)) || (name && matchesSearch(name)))\n}\n\nexport function filterTokens(tokens: T[], search: string): T[] {\n return tokens.filter(createTokenFilterFunction(search))\n}\n\nexport function useSortedTokensByQuery(tokens: Token[] | undefined, searchQuery: string): Token[] {\n return useMemo(() => {\n if (!tokens) {\n return []\n }\n\n const symbolMatch = searchQuery\n .toLowerCase()\n .split(/\\s+/)\n .filter((s) => s.length > 0)\n\n if (symbolMatch.length > 1) {\n return tokens\n }\n\n const exactMatches: Token[] = []\n const symbolSubtrings: Token[] = []\n const rest: Token[] = []\n\n // sort tokens by exact match -> subtring on symbol match -> rest\n tokens.map((token) => {\n if (token.symbol?.toLowerCase() === symbolMatch[0]) {\n return exactMatches.push(token)\n } else if (token.symbol?.toLowerCase().startsWith(searchQuery.toLowerCase().trim())) {\n return symbolSubtrings.push(token)\n } else {\n return rest.push(token)\n }\n })\n\n return [...exactMatches, ...symbolSubtrings, ...rest]\n }, [tokens, searchQuery])\n}\n","import { IS_ON_APP_URL } from './misc'\n\nconst AAVE_LIST = 'tokenlist.aave.eth'\nconst BA_LIST = 'https://raw.githubusercontent.com/The-Blockchain-Association/sec-notice-list/master/ba-sec-list.json'\nconst CMC_ALL_LIST = 'defi.cmc.eth'\nconst CMC_STABLECOIN = 'stablecoin.cmc.eth'\nconst COINGECKO_LIST = 'https://tokens.coingecko.com/uniswap/all.json'\nconst COMPOUND_LIST = 'https://raw.githubusercontent.com/compound-finance/token-list/master/compound.tokenlist.json'\nconst GEMINI_LIST = 'https://www.gemini.com/uniswap/manifest.json'\nconst KLEROS_LIST = 't2crtokens.eth'\nexport const OPTIMISM_LIST = 'https://static.optimism.io/optimism.tokenlist.json'\nconst ROLL_LIST = 'https://app.tryroll.com/tokens.json'\nconst SET_LIST = 'https://raw.githubusercontent.com/SetProtocol/uniswap-tokenlist/main/set.tokenlist.json'\nconst WRAPPED_LIST = 'wrapped.tokensoft.eth'\n\n// only load blocked list if on app url\nexport const UNSUPPORTED_LIST_URLS: string[] = IS_ON_APP_URL ? [BA_LIST] : []\n\n// lower index == higher priority for token import\nexport const DEFAULT_LIST_OF_LISTS: string[] = [\n COMPOUND_LIST,\n AAVE_LIST,\n CMC_ALL_LIST,\n CMC_STABLECOIN,\n WRAPPED_LIST,\n SET_LIST,\n ROLL_LIST,\n COINGECKO_LIST,\n KLEROS_LIST,\n OPTIMISM_LIST,\n GEMINI_LIST,\n ...UNSUPPORTED_LIST_URLS, // need to load unsupported tokens as well\n]\n\n// default lists to be 'active' aka searched across\nexport const DEFAULT_ACTIVE_LIST_URLS: string[] = [GEMINI_LIST]\n","import { DEFAULT_LIST_OF_LISTS } from './../constants/lists'\n\nconst DEFAULT_LIST_PRIORITIES = DEFAULT_LIST_OF_LISTS.reduce<{ [listUrl: string]: number }>((memo, listUrl, index) => {\n memo[listUrl] = index + 1\n return memo\n}, {})\n\n// use ordering of default list of lists to assign priority\nexport default function sortByListPriority(urlA: string, urlB: string) {\n if (DEFAULT_LIST_PRIORITIES[urlA] && DEFAULT_LIST_PRIORITIES[urlB]) {\n return DEFAULT_LIST_PRIORITIES[urlA] - DEFAULT_LIST_PRIORITIES[urlB]\n }\n return 0\n}\n","import { Currency, Token } from '@uniswap/sdk-core'\nimport { Tags, TokenInfo } from '@uniswap/token-lists'\nimport { TokenList } from '@uniswap/token-lists/dist/types'\nimport { isAddress } from '../../utils'\n\ntype TagDetails = Tags[keyof Tags]\ninterface TagInfo extends TagDetails {\n id: string\n}\n/**\n * Token instances created from token info on a token list.\n */\nexport class WrappedTokenInfo implements Token {\n public readonly isNative: false = false\n public readonly isToken: true = true\n public readonly list: TokenList\n\n public readonly tokenInfo: TokenInfo\n\n constructor(tokenInfo: TokenInfo, list: TokenList) {\n this.tokenInfo = tokenInfo\n this.list = list\n }\n\n private _checksummedAddress: string | null = null\n\n public get address(): string {\n if (this._checksummedAddress) return this._checksummedAddress\n const checksummedAddress = isAddress(this.tokenInfo.address)\n if (!checksummedAddress) throw new Error(`Invalid token address: ${this.tokenInfo.address}`)\n return (this._checksummedAddress = checksummedAddress)\n }\n\n public get chainId(): number {\n return this.tokenInfo.chainId\n }\n\n public get decimals(): number {\n return this.tokenInfo.decimals\n }\n\n public get name(): string {\n return this.tokenInfo.name\n }\n\n public get symbol(): string {\n return this.tokenInfo.symbol\n }\n\n public get logoURI(): string | undefined {\n return this.tokenInfo.logoURI\n }\n\n private _tags: TagInfo[] | null = null\n public get tags(): TagInfo[] {\n if (this._tags !== null) return this._tags\n if (!this.tokenInfo.tags) return (this._tags = [])\n const listTags = this.list.tags\n if (!listTags) return (this._tags = [])\n\n return (this._tags = this.tokenInfo.tags.map((tagId) => {\n return {\n ...listTags[tagId],\n id: tagId,\n }\n }))\n }\n\n equals(other: Currency): boolean {\n return other.chainId === this.chainId && other.isToken && other.address.toLowerCase() === this.address.toLowerCase()\n }\n\n sortsBefore(other: Token): boolean {\n if (this.equals(other)) throw new Error('Addresses should not be equal')\n return this.address.toLowerCase() < other.address.toLowerCase()\n }\n\n public get wrapped(): Token {\n return this\n }\n}\n","import DEFAULT_TOKEN_LIST from '@uniswap/default-token-list'\nimport { TokenList } from '@uniswap/token-lists'\nimport { IS_ON_APP_URL } from 'constants/misc'\nimport { useMemo } from 'react'\nimport { useAppSelector } from 'state/hooks'\nimport sortByListPriority from 'utils/listSort'\nimport UNSUPPORTED_TOKEN_LIST from '../../constants/tokenLists/unsupported.tokenlist.json'\nimport BROKEN_LIST from '../../constants/tokenLists/broken.tokenlist.json'\nimport { AppState } from '../index'\nimport { UNSUPPORTED_LIST_URLS } from './../../constants/lists'\nimport { WrappedTokenInfo } from './wrappedTokenInfo'\n\nexport type TokenAddressMap = Readonly<{\n [chainId: number]: Readonly<{ [tokenAddress: string]: { token: WrappedTokenInfo; list: TokenList } }>\n}>\n\ntype Mutable = {\n -readonly [P in keyof T]: Mutable\n}\n\nconst listCache: WeakMap | null =\n typeof WeakMap !== 'undefined' ? new WeakMap() : null\n\nfunction listToTokenMap(list: TokenList): TokenAddressMap {\n const result = listCache?.get(list)\n if (result) return result\n\n const map = list.tokens.reduce>((tokenMap, tokenInfo) => {\n const token = new WrappedTokenInfo(tokenInfo, list)\n if (tokenMap[token.chainId]?.[token.address] !== undefined) {\n console.error(`Duplicate token! ${token.address}`)\n return tokenMap\n }\n if (!tokenMap[token.chainId]) tokenMap[token.chainId] = {}\n tokenMap[token.chainId][token.address] = {\n token,\n list,\n }\n return tokenMap\n }, {}) as TokenAddressMap\n listCache?.set(list, map)\n return map\n}\n\nconst TRANSFORMED_DEFAULT_TOKEN_LIST = listToTokenMap(DEFAULT_TOKEN_LIST)\n\nexport function useAllLists(): AppState['lists']['byUrl'] {\n return useAppSelector((state) => state.lists.byUrl)\n}\n\n/**\n * Combine the tokens in map2 with the tokens on map1, where tokens on map1 take precedence\n * @param map1 the base token map\n * @param map2 the map of additioanl tokens to add to the base map\n */\nexport function combineMaps(map1: TokenAddressMap, map2: TokenAddressMap): TokenAddressMap {\n const chainIds = Object.keys(\n Object.keys(map1)\n .concat(Object.keys(map2))\n .reduce<{ [chainId: string]: true }>((memo, value) => {\n memo[value] = true\n return memo\n }, {})\n ).map((id) => parseInt(id))\n\n return chainIds.reduce>((memo, chainId) => {\n memo[chainId] = {\n ...map2[chainId],\n // map1 takes precedence\n ...map1[chainId],\n }\n return memo\n }, {}) as TokenAddressMap\n}\n\n// merge tokens contained within lists from urls\nfunction useCombinedTokenMapFromUrls(urls: string[] | undefined): TokenAddressMap {\n const lists = useAllLists()\n return useMemo(() => {\n if (!urls) return {}\n return (\n urls\n .slice()\n // sort by priority so top priority goes last\n .sort(sortByListPriority)\n .reduce((allTokens, currentUrl) => {\n const current = lists[currentUrl]?.current\n if (!current) return allTokens\n try {\n return combineMaps(allTokens, listToTokenMap(current))\n } catch (error) {\n console.error('Could not show token list due to error', error)\n return allTokens\n }\n }, {})\n )\n }, [lists, urls])\n}\n\n// filter out unsupported lists\nexport function useActiveListUrls(): string[] | undefined {\n return useAppSelector((state) => state.lists.activeListUrls)?.filter((url) => !UNSUPPORTED_LIST_URLS.includes(url))\n}\n\nexport function useInactiveListUrls(): string[] {\n const lists = useAllLists()\n const allActiveListUrls = useActiveListUrls()\n return Object.keys(lists).filter((url) => !allActiveListUrls?.includes(url) && !UNSUPPORTED_LIST_URLS.includes(url))\n}\n\n// get all the tokens from active lists, combine with local default tokens\nexport function useCombinedActiveList(): TokenAddressMap {\n const activeListUrls = useActiveListUrls()\n const activeTokens = useCombinedTokenMapFromUrls(activeListUrls)\n return combineMaps(activeTokens, TRANSFORMED_DEFAULT_TOKEN_LIST)\n}\n\n// list of tokens not supported on interface, used to show warnings and prevent swaps and adds\nexport function useUnsupportedTokenList(): TokenAddressMap {\n // get hard coded unsupported tokens, only block on app url\n const localUnsupportedListMap = useMemo(() => (IS_ON_APP_URL ? listToTokenMap(UNSUPPORTED_TOKEN_LIST) : {}), [])\n\n // broken tokens, blocked on all URLS\n const brokenListMap = useMemo(() => listToTokenMap(BROKEN_LIST), [])\n\n // get any loaded unsupported tokens, this will be empty if not on app URL\n const loadedUnsupportedListMap = useCombinedTokenMapFromUrls(UNSUPPORTED_LIST_URLS)\n\n // format into one token address map\n return useMemo(\n () => combineMaps(brokenListMap, combineMaps(localUnsupportedListMap, loadedUnsupportedListMap)),\n [localUnsupportedListMap, loadedUnsupportedListMap, brokenListMap]\n )\n}\n\nexport function useIsListActive(url: string): boolean {\n const activeListUrls = useActiveListUrls()\n return Boolean(activeListUrls?.includes(url))\n}\n","import { createAction } from '@reduxjs/toolkit'\n\nexport type PopupContent = {\n txn: {\n hash: string\n success: boolean\n summary?: string\n }\n}\n\nexport enum ApplicationModal {\n WALLET,\n SETTINGS,\n SELF_CLAIM,\n ADDRESS_CLAIM,\n CLAIM_POPUP,\n MENU,\n DELEGATE,\n VOTE,\n POOL_OVERVIEW_OPTIONS,\n ARBITRUM_OPTIONS,\n}\n\nexport const updateChainId = createAction<{ chainId: number | null }>('application/updateChainId')\nexport const updateBlockNumber = createAction<{ chainId: number; blockNumber: number }>('application/updateBlockNumber')\nexport const setOpenModal = createAction('application/setOpenModal')\nexport const addPopup =\n createAction<{ key?: string; removeAfterMs?: number | null; content: PopupContent }>('application/addPopup')\nexport const removePopup = createAction<{ key: string }>('application/removePopup')\n","import { useCallback, useMemo } from 'react'\nimport { useAppDispatch, useAppSelector } from 'state/hooks'\nimport { useActiveWeb3React } from '../../hooks/web3'\nimport { AppState } from '../index'\nimport { addPopup, ApplicationModal, PopupContent, removePopup, setOpenModal } from './actions'\n\nexport function useBlockNumber(): number | undefined {\n const { chainId } = useActiveWeb3React()\n\n return useAppSelector((state: AppState) => state.application.blockNumber[chainId ?? -1])\n}\n\nexport function useModalOpen(modal: ApplicationModal): boolean {\n const openModal = useAppSelector((state: AppState) => state.application.openModal)\n return openModal === modal\n}\n\nexport function useToggleModal(modal: ApplicationModal): () => void {\n const open = useModalOpen(modal)\n const dispatch = useAppDispatch()\n return useCallback(() => dispatch(setOpenModal(open ? null : modal)), [dispatch, modal, open])\n}\n\nexport function useWalletModalToggle(): () => void {\n return useToggleModal(ApplicationModal.WALLET)\n}\n\nexport function useToggleSettingsMenu(): () => void {\n return useToggleModal(ApplicationModal.SETTINGS)\n}\n\nexport function useShowClaimPopup(): boolean {\n return useModalOpen(ApplicationModal.CLAIM_POPUP)\n}\n\nexport function useToggleShowClaimPopup(): () => void {\n return useToggleModal(ApplicationModal.CLAIM_POPUP)\n}\n\nexport function useToggleSelfClaimModal(): () => void {\n return useToggleModal(ApplicationModal.SELF_CLAIM)\n}\n\nexport function useToggleDelegateModal(): () => void {\n return useToggleModal(ApplicationModal.DELEGATE)\n}\n\nexport function useToggleVoteModal(): () => void {\n return useToggleModal(ApplicationModal.VOTE)\n}\n\n// returns a function that allows adding a popup\nexport function useAddPopup(): (content: PopupContent, key?: string) => void {\n const dispatch = useAppDispatch()\n\n return useCallback(\n (content: PopupContent, key?: string) => {\n dispatch(addPopup({ content, key }))\n },\n [dispatch]\n )\n}\n\n// returns a function that allows removing a popup via its key\nexport function useRemovePopup(): (key: string) => void {\n const dispatch = useAppDispatch()\n return useCallback(\n (key: string) => {\n dispatch(removePopup({ key }))\n },\n [dispatch]\n )\n}\n\n// get the list of active popups\nexport function useActivePopups(): AppState['application']['popupList'] {\n const list = useAppSelector((state: AppState) => state.application.popupList)\n return useMemo(() => list.filter((item) => item.show), [list])\n}\n","import { createAction } from '@reduxjs/toolkit'\nimport { Call } from './utils'\n\nexport interface ListenerOptions {\n // how often this data should be fetched, by default 1\n readonly blocksPerFetch: number\n}\n\nexport const addMulticallListeners = createAction<{ chainId: number; calls: Call[]; options: ListenerOptions }>(\n 'multicall/addMulticallListeners'\n)\nexport const removeMulticallListeners = createAction<{ chainId: number; calls: Call[]; options: ListenerOptions }>(\n 'multicall/removeMulticallListeners'\n)\nexport const fetchingMulticallResults = createAction<{ chainId: number; calls: Call[]; fetchingBlockNumber: number }>(\n 'multicall/fetchingMulticallResults'\n)\nexport const errorFetchingMulticallResults = createAction<{\n chainId: number\n calls: Call[]\n fetchingBlockNumber: number\n}>('multicall/errorFetchingMulticallResults')\nexport const updateMulticallResults = createAction<{\n chainId: number\n blockNumber: number\n results: {\n [callKey: string]: string | null\n }\n}>('multicall/updateMulticallResults')\n","export interface Call {\n address: string\n callData: string\n gasRequired?: number\n}\n\nexport function toCallKey(call: Call): string {\n let key = `${call.address}-${call.callData}`\n if (call.gasRequired) {\n if (!Number.isSafeInteger(call.gasRequired)) {\n throw new Error(`Invalid number: ${call.gasRequired}`)\n }\n key += `-${call.gasRequired}`\n }\n return key\n}\n\nexport function parseCallKey(callKey: string): Call {\n const pcs = callKey.split('-')\n if (![2, 3].includes(pcs.length)) {\n throw new Error(`Invalid call key: ${callKey}`)\n }\n return {\n address: pcs[0],\n callData: pcs[1],\n ...(pcs[2] ? { gasRequired: Number.parseInt(pcs[2]) } : {}),\n }\n}\n","import { FunctionFragment, Interface } from '@ethersproject/abi'\nimport { BigNumber } from '@ethersproject/bignumber'\nimport { Contract } from '@ethersproject/contracts'\nimport { useEffect, useMemo } from 'react'\nimport { useAppDispatch, useAppSelector } from 'state/hooks'\nimport { useActiveWeb3React } from '../../hooks/web3'\nimport { useBlockNumber } from '../application/hooks'\nimport { addMulticallListeners, ListenerOptions, removeMulticallListeners } from './actions'\nimport { Call, parseCallKey, toCallKey } from './utils'\n\nexport interface Result extends ReadonlyArray {\n readonly [key: string]: any\n}\n\ntype MethodArg = string | number | BigNumber\ntype MethodArgs = Array\n\ntype OptionalMethodInputs = Array | undefined\n\nfunction isMethodArg(x: unknown): x is MethodArg {\n return BigNumber.isBigNumber(x) || ['string', 'number'].indexOf(typeof x) !== -1\n}\n\nfunction isValidMethodArgs(x: unknown): x is MethodArgs | undefined {\n return (\n x === undefined ||\n (Array.isArray(x) && x.every((xi) => isMethodArg(xi) || (Array.isArray(xi) && xi.every(isMethodArg))))\n )\n}\n\ninterface CallResult {\n readonly valid: boolean\n readonly data: string | undefined\n readonly blockNumber: number | undefined\n}\n\nconst INVALID_RESULT: CallResult = { valid: false, blockNumber: undefined, data: undefined }\n\n// use this options object\nexport const NEVER_RELOAD: ListenerOptions = {\n blocksPerFetch: Infinity,\n}\n\n// the lowest level call for subscribing to contract data\nfunction useCallsData(\n calls: (Call | undefined)[],\n { blocksPerFetch }: ListenerOptions = { blocksPerFetch: 1 }\n): CallResult[] {\n const { chainId } = useActiveWeb3React()\n const callResults = useAppSelector((state) => state.multicall.callResults)\n const dispatch = useAppDispatch()\n\n const serializedCallKeys: string = useMemo(\n () =>\n JSON.stringify(\n calls\n ?.filter((c): c is Call => Boolean(c))\n ?.map(toCallKey)\n ?.sort() ?? []\n ),\n [calls]\n )\n\n // update listeners when there is an actual change that persists for at least 100ms\n useEffect(() => {\n const callKeys: string[] = JSON.parse(serializedCallKeys)\n if (!chainId || callKeys.length === 0) return undefined\n const calls = callKeys.map((key) => parseCallKey(key))\n dispatch(\n addMulticallListeners({\n chainId,\n calls,\n options: { blocksPerFetch },\n })\n )\n\n return () => {\n dispatch(\n removeMulticallListeners({\n chainId,\n calls,\n options: { blocksPerFetch },\n })\n )\n }\n }, [chainId, dispatch, blocksPerFetch, serializedCallKeys])\n\n return useMemo(\n () =>\n calls.map((call) => {\n if (!chainId || !call) return INVALID_RESULT\n\n const result = callResults[chainId]?.[toCallKey(call)]\n let data\n if (result?.data && result?.data !== '0x') {\n data = result.data\n }\n\n return { valid: true, data, blockNumber: result?.blockNumber }\n }),\n [callResults, calls, chainId]\n )\n}\n\ninterface CallState {\n readonly valid: boolean\n // the result, or undefined if loading or errored/no data\n readonly result: Result | undefined\n // true if the result has never been fetched\n readonly loading: boolean\n // true if the result is not for the latest block\n readonly syncing: boolean\n // true if the call was made and is synced, but the return data is invalid\n readonly error: boolean\n}\n\nconst INVALID_CALL_STATE: CallState = { valid: false, result: undefined, loading: false, syncing: false, error: false }\nconst LOADING_CALL_STATE: CallState = { valid: true, result: undefined, loading: true, syncing: true, error: false }\n\nfunction toCallState(\n callResult: CallResult | undefined,\n contractInterface: Interface | undefined,\n fragment: FunctionFragment | undefined,\n latestBlockNumber: number | undefined\n): CallState {\n if (!callResult) return INVALID_CALL_STATE\n const { valid, data, blockNumber } = callResult\n if (!valid) return INVALID_CALL_STATE\n if (valid && !blockNumber) return LOADING_CALL_STATE\n if (!contractInterface || !fragment || !latestBlockNumber) return LOADING_CALL_STATE\n const success = data && data.length > 2\n const syncing = (blockNumber ?? 0) < latestBlockNumber\n let result: Result | undefined = undefined\n if (success && data) {\n try {\n result = contractInterface.decodeFunctionResult(fragment, data)\n } catch (error) {\n console.debug('Result data parsing failed', fragment, data)\n return {\n valid: true,\n loading: false,\n error: true,\n syncing,\n result,\n }\n }\n }\n return {\n valid: true,\n loading: false,\n syncing,\n result: result,\n error: !success,\n }\n}\n\nexport function useSingleContractMultipleData(\n contract: Contract | null | undefined,\n methodName: string,\n callInputs: OptionalMethodInputs[],\n options: Partial & { gasRequired?: number } = {}\n): CallState[] {\n const fragment = useMemo(() => contract?.interface?.getFunction(methodName), [contract, methodName])\n\n const blocksPerFetch = options?.blocksPerFetch\n const gasRequired = options?.gasRequired\n\n const calls = useMemo(\n () =>\n contract && fragment && callInputs?.length > 0 && callInputs.every((inputs) => isValidMethodArgs(inputs))\n ? callInputs.map((inputs) => {\n return {\n address: contract.address,\n callData: contract.interface.encodeFunctionData(fragment, inputs),\n ...(gasRequired ? { gasRequired } : {}),\n }\n })\n : [],\n [contract, fragment, callInputs, gasRequired]\n )\n\n const results = useCallsData(calls, blocksPerFetch ? { blocksPerFetch } : undefined)\n\n const latestBlockNumber = useBlockNumber()\n\n return useMemo(() => {\n return results.map((result) => toCallState(result, contract?.interface, fragment, latestBlockNumber))\n }, [fragment, contract, results, latestBlockNumber])\n}\n\nexport function useMultipleContractSingleData(\n addresses: (string | undefined)[],\n contractInterface: Interface,\n methodName: string,\n callInputs?: OptionalMethodInputs,\n options?: Partial & { gasRequired?: number }\n): CallState[] {\n const fragment = useMemo(() => contractInterface.getFunction(methodName), [contractInterface, methodName])\n\n const blocksPerFetch = options?.blocksPerFetch\n const gasRequired = options?.gasRequired\n\n const callData: string | undefined = useMemo(\n () =>\n fragment && isValidMethodArgs(callInputs)\n ? contractInterface.encodeFunctionData(fragment, callInputs)\n : undefined,\n [callInputs, contractInterface, fragment]\n )\n\n const calls = useMemo(\n () =>\n fragment && addresses && addresses.length > 0 && callData\n ? addresses.map((address) => {\n return address && callData\n ? {\n address,\n callData,\n ...(gasRequired ? { gasRequired } : {}),\n }\n : undefined\n })\n : [],\n [addresses, callData, fragment, gasRequired]\n )\n\n const results = useCallsData(calls, blocksPerFetch ? { blocksPerFetch } : undefined)\n\n const latestBlockNumber = useBlockNumber()\n\n return useMemo(() => {\n return results.map((result) => toCallState(result, contractInterface, fragment, latestBlockNumber))\n }, [fragment, results, contractInterface, latestBlockNumber])\n}\n\nexport function useSingleCallResult(\n contract: Contract | null | undefined,\n methodName: string,\n inputs?: OptionalMethodInputs,\n options?: Partial & { gasRequired?: number }\n): CallState {\n const fragment = useMemo(() => contract?.interface?.getFunction(methodName), [contract, methodName])\n\n const blocksPerFetch = options?.blocksPerFetch\n const gasRequired = options?.gasRequired\n\n const calls = useMemo(() => {\n return contract && fragment && isValidMethodArgs(inputs)\n ? [\n {\n address: contract.address,\n callData: contract.interface.encodeFunctionData(fragment, inputs),\n ...(gasRequired ? { gasRequired } : {}),\n },\n ]\n : []\n }, [contract, fragment, inputs, gasRequired])\n\n const result = useCallsData(calls, blocksPerFetch ? { blocksPerFetch } : undefined)[0]\n const latestBlockNumber = useBlockNumber()\n\n return useMemo(() => {\n return toCallState(result, contract?.interface, fragment, latestBlockNumber)\n }, [result, contract, fragment, latestBlockNumber])\n}\n","import { Contract } from '@ethersproject/contracts'\nimport { abi as GOVERNANCE_ABI } from '@uniswap/governance/build/GovernorAlpha.json'\nimport { abi as UNI_ABI } from '@uniswap/governance/build/Uni.json'\nimport { abi as STAKING_REWARDS_ABI } from '@uniswap/liquidity-staker/build/StakingRewards.json'\nimport { abi as MERKLE_DISTRIBUTOR_ABI } from '@uniswap/merkle-distributor/build/MerkleDistributor.json'\nimport { abi as IUniswapV2PairABI } from '@uniswap/v2-core/build/IUniswapV2Pair.json'\nimport { abi as QuoterABI } from '@uniswap/v3-periphery/artifacts/contracts/lens/Quoter.sol/Quoter.json'\nimport { abi as V2MigratorABI } from '@uniswap/v3-periphery/artifacts/contracts/V3Migrator.sol/V3Migrator.json'\nimport { abi as IUniswapV2Router02ABI } from '@uniswap/v2-periphery/build/IUniswapV2Router02.json'\nimport { abi as MulticallABI } from '@uniswap/v3-periphery/artifacts/contracts/lens/UniswapInterfaceMulticall.sol/UniswapInterfaceMulticall.json'\n\nimport ARGENT_WALLET_DETECTOR_ABI from 'abis/argent-wallet-detector.json'\nimport ENS_PUBLIC_RESOLVER_ABI from 'abis/ens-public-resolver.json'\nimport ENS_ABI from 'abis/ens-registrar.json'\nimport ERC20_ABI from 'abis/erc20.json'\nimport ERC20_BYTES32_ABI from 'abis/erc20_bytes32.json'\nimport WETH_ABI from 'abis/weth.json'\nimport EIP_2612 from 'abis/eip_2612.json'\n\nimport {\n NONFUNGIBLE_POSITION_MANAGER_ADDRESSES,\n QUOTER_ADDRESSES,\n V3_MIGRATOR_ADDRESSES,\n ARGENT_WALLET_DETECTOR_ADDRESS,\n MERKLE_DISTRIBUTOR_ADDRESS,\n MULTICALL_ADDRESS,\n V2_ROUTER_ADDRESS,\n ENS_REGISTRAR_ADDRESSES,\n GOVERNANCE_ALPHA_V0_ADDRESSES,\n GOVERNANCE_ALPHA_V1_ADDRESSES,\n} from 'constants/addresses'\nimport { abi as NFTPositionManagerABI } from '@uniswap/v3-periphery/artifacts/contracts/NonfungiblePositionManager.sol/NonfungiblePositionManager.json'\nimport { useMemo } from 'react'\nimport { Quoter, NonfungiblePositionManager, UniswapInterfaceMulticall } from 'types/v3'\nimport { V3Migrator } from 'types/v3/V3Migrator'\nimport { getContract } from 'utils'\nimport { Erc20, ArgentWalletDetector, EnsPublicResolver, EnsRegistrar, Weth } from '../abis/types'\nimport { UNI, WETH9_EXTENDED } from '../constants/tokens'\nimport { useActiveWeb3React } from './web3'\n\n// returns null on errors\nexport function useContract(\n addressOrAddressMap: string | { [chainId: number]: string } | undefined,\n ABI: any,\n withSignerIfPossible = true\n): T | null {\n const { library, account, chainId } = useActiveWeb3React()\n\n return useMemo(() => {\n if (!addressOrAddressMap || !ABI || !library || !chainId) return null\n let address: string | undefined\n if (typeof addressOrAddressMap === 'string') address = addressOrAddressMap\n else address = addressOrAddressMap[chainId]\n if (!address) return null\n try {\n return getContract(address, ABI, library, withSignerIfPossible && account ? account : undefined)\n } catch (error) {\n console.error('Failed to get contract', error)\n return null\n }\n }, [addressOrAddressMap, ABI, library, chainId, withSignerIfPossible, account]) as T\n}\n\nexport function useV2MigratorContract() {\n return useContract(V3_MIGRATOR_ADDRESSES, V2MigratorABI, true)\n}\n\nexport function useTokenContract(tokenAddress?: string, withSignerIfPossible?: boolean) {\n return useContract(tokenAddress, ERC20_ABI, withSignerIfPossible)\n}\n\nexport function useWETHContract(withSignerIfPossible?: boolean) {\n const { chainId } = useActiveWeb3React()\n return useContract(chainId ? WETH9_EXTENDED[chainId]?.address : undefined, WETH_ABI, withSignerIfPossible)\n}\n\nexport function useArgentWalletDetectorContract() {\n return useContract(ARGENT_WALLET_DETECTOR_ADDRESS, ARGENT_WALLET_DETECTOR_ABI, false)\n}\n\nexport function useENSRegistrarContract(withSignerIfPossible?: boolean) {\n return useContract(ENS_REGISTRAR_ADDRESSES, ENS_ABI, withSignerIfPossible)\n}\n\nexport function useENSResolverContract(address: string | undefined, withSignerIfPossible?: boolean) {\n return useContract(address, ENS_PUBLIC_RESOLVER_ABI, withSignerIfPossible)\n}\n\nexport function useBytes32TokenContract(tokenAddress?: string, withSignerIfPossible?: boolean): Contract | null {\n return useContract(tokenAddress, ERC20_BYTES32_ABI, withSignerIfPossible)\n}\n\nexport function useEIP2612Contract(tokenAddress?: string): Contract | null {\n return useContract(tokenAddress, EIP_2612, false)\n}\n\nexport function usePairContract(pairAddress?: string, withSignerIfPossible?: boolean): Contract | null {\n return useContract(pairAddress, IUniswapV2PairABI, withSignerIfPossible)\n}\n\nexport function useV2RouterContract(): Contract | null {\n return useContract(V2_ROUTER_ADDRESS, IUniswapV2Router02ABI, true)\n}\n\nexport function useMulticall2Contract() {\n return useContract(MULTICALL_ADDRESS, MulticallABI, false) as UniswapInterfaceMulticall\n}\n\nexport function useMerkleDistributorContract() {\n return useContract(MERKLE_DISTRIBUTOR_ADDRESS, MERKLE_DISTRIBUTOR_ABI, true)\n}\n\nexport function useGovernanceV0Contract(): Contract | null {\n return useContract(GOVERNANCE_ALPHA_V0_ADDRESSES, GOVERNANCE_ABI, true)\n}\n\nexport function useGovernanceV1Contract(): Contract | null {\n return useContract(GOVERNANCE_ALPHA_V1_ADDRESSES, GOVERNANCE_ABI, true)\n}\n\nexport const useLatestGovernanceContract = useGovernanceV1Contract\n\nexport function useUniContract() {\n const { chainId } = useActiveWeb3React()\n return useContract(chainId ? UNI[chainId]?.address : undefined, UNI_ABI, true)\n}\n\nexport function useStakingContract(stakingAddress?: string, withSignerIfPossible?: boolean) {\n return useContract(stakingAddress, STAKING_REWARDS_ABI, withSignerIfPossible)\n}\n\nexport function useV3NFTPositionManagerContract(withSignerIfPossible?: boolean): NonfungiblePositionManager | null {\n return useContract(\n NONFUNGIBLE_POSITION_MANAGER_ADDRESSES,\n NFTPositionManagerABI,\n withSignerIfPossible\n )\n}\n\nexport function useV3Quoter() {\n return useContract(QUOTER_ADDRESSES, QuoterABI)\n}\n","import { parseBytes32String } from '@ethersproject/strings'\nimport { Currency, Token } from '@uniswap/sdk-core'\nimport { arrayify } from 'ethers/lib/utils'\nimport { useMemo } from 'react'\nimport { createTokenFilterFunction } from '../components/SearchModal/filtering'\nimport { ExtendedEther, WETH9_EXTENDED } from '../constants/tokens'\nimport { useAllLists, useCombinedActiveList, useInactiveListUrls } from '../state/lists/hooks'\nimport { WrappedTokenInfo } from '../state/lists/wrappedTokenInfo'\nimport { NEVER_RELOAD, useSingleCallResult } from '../state/multicall/hooks'\nimport { useUserAddedTokens } from '../state/user/hooks'\nimport { isAddress } from '../utils'\nimport { TokenAddressMap, useUnsupportedTokenList } from './../state/lists/hooks'\n\nimport { useActiveWeb3React } from './web3'\nimport { useBytes32TokenContract, useTokenContract } from './useContract'\n\n// reduce token map into standard address <-> Token mapping, optionally include user added tokens\nfunction useTokensFromMap(tokenMap: TokenAddressMap, includeUserAdded: boolean): { [address: string]: Token } {\n const { chainId } = useActiveWeb3React()\n const userAddedTokens = useUserAddedTokens()\n\n return useMemo(() => {\n if (!chainId) return {}\n\n // reduce to just tokens\n const mapWithoutUrls = Object.keys(tokenMap[chainId] ?? {}).reduce<{ [address: string]: Token }>(\n (newMap, address) => {\n newMap[address] = tokenMap[chainId][address].token\n return newMap\n },\n {}\n )\n\n if (includeUserAdded) {\n return (\n userAddedTokens\n // reduce into all ALL_TOKENS filtered by the current chain\n .reduce<{ [address: string]: Token }>(\n (tokenMap, token) => {\n tokenMap[token.address] = token\n return tokenMap\n },\n // must make a copy because reduce modifies the map, and we do not\n // want to make a copy in every iteration\n { ...mapWithoutUrls }\n )\n )\n }\n\n return mapWithoutUrls\n }, [chainId, userAddedTokens, tokenMap, includeUserAdded])\n}\n\nexport function useAllTokens(): { [address: string]: Token } {\n const allTokens = useCombinedActiveList()\n return useTokensFromMap(allTokens, true)\n}\n\nexport function useUnsupportedTokens(): { [address: string]: Token } {\n const unsupportedTokensMap = useUnsupportedTokenList()\n return useTokensFromMap(unsupportedTokensMap, false)\n}\n\nexport function useSearchInactiveTokenLists(search: string | undefined, minResults = 10): WrappedTokenInfo[] {\n const lists = useAllLists()\n const inactiveUrls = useInactiveListUrls()\n const { chainId } = useActiveWeb3React()\n const activeTokens = useAllTokens()\n return useMemo(() => {\n if (!search || search.trim().length === 0) return []\n const tokenFilter = createTokenFilterFunction(search)\n const result: WrappedTokenInfo[] = []\n const addressSet: { [address: string]: true } = {}\n for (const url of inactiveUrls) {\n const list = lists[url].current\n if (!list) continue\n for (const tokenInfo of list.tokens) {\n if (tokenInfo.chainId === chainId && tokenFilter(tokenInfo)) {\n const wrapped = new WrappedTokenInfo(tokenInfo, list)\n if (!(wrapped.address in activeTokens) && !addressSet[wrapped.address]) {\n addressSet[wrapped.address] = true\n result.push(wrapped)\n if (result.length >= minResults) return result\n }\n }\n }\n }\n return result\n }, [activeTokens, chainId, inactiveUrls, lists, minResults, search])\n}\n\nexport function useIsTokenActive(token: Token | undefined | null): boolean {\n const activeTokens = useAllTokens()\n\n if (!activeTokens || !token) {\n return false\n }\n\n return !!activeTokens[token.address]\n}\n\n// Check if currency is included in custom list from user storage\nexport function useIsUserAddedToken(currency: Currency | undefined | null): boolean {\n const userAddedTokens = useUserAddedTokens()\n\n if (!currency) {\n return false\n }\n\n return !!userAddedTokens.find((token) => currency.equals(token))\n}\n\n// parse a name or symbol from a token response\nconst BYTES32_REGEX = /^0x[a-fA-F0-9]{64}$/\n\nfunction parseStringOrBytes32(str: string | undefined, bytes32: string | undefined, defaultValue: string): string {\n return str && str.length > 0\n ? str\n : // need to check for proper bytes string and valid terminator\n bytes32 && BYTES32_REGEX.test(bytes32) && arrayify(bytes32)[31] === 0\n ? parseBytes32String(bytes32)\n : defaultValue\n}\n\n// undefined if invalid or does not exist\n// null if loading\n// otherwise returns the token\nexport function useToken(tokenAddress?: string): Token | undefined | null {\n const { chainId } = useActiveWeb3React()\n const tokens = useAllTokens()\n\n const address = isAddress(tokenAddress)\n\n const tokenContract = useTokenContract(address ? address : undefined, false)\n const tokenContractBytes32 = useBytes32TokenContract(address ? address : undefined, false)\n const token: Token | undefined = address ? tokens[address] : undefined\n\n const tokenName = useSingleCallResult(token ? undefined : tokenContract, 'name', undefined, NEVER_RELOAD)\n const tokenNameBytes32 = useSingleCallResult(\n token ? undefined : tokenContractBytes32,\n 'name',\n undefined,\n NEVER_RELOAD\n )\n const symbol = useSingleCallResult(token ? undefined : tokenContract, 'symbol', undefined, NEVER_RELOAD)\n const symbolBytes32 = useSingleCallResult(token ? undefined : tokenContractBytes32, 'symbol', undefined, NEVER_RELOAD)\n const decimals = useSingleCallResult(token ? undefined : tokenContract, 'decimals', undefined, NEVER_RELOAD)\n\n return useMemo(() => {\n if (token) return token\n if (!chainId || !address) return undefined\n if (decimals.loading || symbol.loading || tokenName.loading) return null\n if (decimals.result) {\n return new Token(\n chainId,\n address,\n decimals.result[0],\n parseStringOrBytes32(symbol.result?.[0], symbolBytes32.result?.[0], 'UNKNOWN'),\n parseStringOrBytes32(tokenName.result?.[0], tokenNameBytes32.result?.[0], 'Unknown Token')\n )\n }\n return undefined\n }, [\n address,\n chainId,\n decimals.loading,\n decimals.result,\n symbol.loading,\n symbol.result,\n symbolBytes32.result,\n token,\n tokenName.loading,\n tokenName.result,\n tokenNameBytes32.result,\n ])\n}\n\nexport function useCurrency(currencyId: string | undefined): Currency | null | undefined {\n const { chainId } = useActiveWeb3React()\n const isETH = currencyId?.toUpperCase() === 'ETH'\n const token = useToken(isETH ? undefined : currencyId)\n const extendedEther = useMemo(() => (chainId ? ExtendedEther.onChain(chainId) : undefined), [chainId])\n const weth = chainId ? WETH9_EXTENDED[chainId] : undefined\n if (weth?.address?.toLowerCase() === currencyId?.toLowerCase()) return weth\n return isETH ? extendedEther : token\n}\n","import { createAction } from '@reduxjs/toolkit'\nimport { SupportedLocale } from 'constants/locales'\n\nexport interface SerializedToken {\n chainId: number\n address: string\n decimals: number\n symbol?: string\n name?: string\n}\n\nexport interface SerializedPair {\n token0: SerializedToken\n token1: SerializedToken\n}\n\nexport const updateMatchesDarkMode = createAction<{ matchesDarkMode: boolean }>('user/updateMatchesDarkMode')\nexport const updateArbitrumAlphaAcknowledged = createAction<{ arbitrumAlphaAcknowledged: boolean }>(\n 'user/updateArbitrumAlphaAcknowledged'\n)\nexport const updateUserDarkMode = createAction<{ userDarkMode: boolean }>('user/updateUserDarkMode')\nexport const updateUserExpertMode = createAction<{ userExpertMode: boolean }>('user/updateUserExpertMode')\nexport const updateUserLocale = createAction<{ userLocale: SupportedLocale }>('user/updateUserLocale')\nexport const updateUserSingleHopOnly = createAction<{ userSingleHopOnly: boolean }>('user/updateUserSingleHopOnly')\nexport const updateHideClosedPositions = createAction<{ userHideClosedPositions: boolean }>('user/hideClosedPositions')\nexport const updateUserSlippageTolerance = createAction<{ userSlippageTolerance: number | 'auto' }>(\n 'user/updateUserSlippageTolerance'\n)\nexport const updateUserDeadline = createAction<{ userDeadline: number }>('user/updateUserDeadline')\nexport const addSerializedToken = createAction<{ serializedToken: SerializedToken }>('user/addSerializedToken')\nexport const removeSerializedToken = createAction<{ chainId: number; address: string }>('user/removeSerializedToken')\nexport const addSerializedPair = createAction<{ serializedPair: SerializedPair }>('user/addSerializedPair')\nexport const removeSerializedPair =\n createAction<{ chainId: number; tokenAAddress: string; tokenBAddress: string }>('user/removeSerializedPair')\n","import { Percent, Token } from '@uniswap/sdk-core'\nimport { computePairAddress, Pair } from '@uniswap/v2-sdk'\nimport { L2_CHAIN_IDS } from 'constants/chains'\nimport { SupportedLocale } from 'constants/locales'\nimport { L2_DEADLINE_FROM_NOW } from 'constants/misc'\nimport JSBI from 'jsbi'\nimport flatMap from 'lodash.flatmap'\nimport { useCallback, useMemo } from 'react'\nimport { shallowEqual } from 'react-redux'\nimport { useAppDispatch, useAppSelector } from 'state/hooks'\nimport { V2_FACTORY_ADDRESSES } from '../../constants/addresses'\nimport { BASES_TO_TRACK_LIQUIDITY_FOR, PINNED_PAIRS } from '../../constants/routing'\nimport { useAllTokens } from '../../hooks/Tokens'\nimport { useActiveWeb3React } from '../../hooks/web3'\nimport { AppState } from '../index'\nimport {\n addSerializedPair,\n addSerializedToken,\n removeSerializedToken,\n SerializedPair,\n SerializedToken,\n updateArbitrumAlphaAcknowledged,\n updateHideClosedPositions,\n updateUserDarkMode,\n updateUserDeadline,\n updateUserExpertMode,\n updateUserLocale,\n updateUserSingleHopOnly,\n updateUserSlippageTolerance,\n} from './actions'\n\nfunction serializeToken(token: Token): SerializedToken {\n return {\n chainId: token.chainId,\n address: token.address,\n decimals: token.decimals,\n symbol: token.symbol,\n name: token.name,\n }\n}\n\nfunction deserializeToken(serializedToken: SerializedToken): Token {\n return new Token(\n serializedToken.chainId,\n serializedToken.address,\n serializedToken.decimals,\n serializedToken.symbol,\n serializedToken.name\n )\n}\n\nexport function useIsDarkMode(): boolean {\n const { userDarkMode, matchesDarkMode } = useAppSelector(\n ({ user: { matchesDarkMode, userDarkMode } }) => ({\n userDarkMode,\n matchesDarkMode,\n }),\n shallowEqual\n )\n\n return userDarkMode === null ? matchesDarkMode : userDarkMode\n}\n\nexport function useDarkModeManager(): [boolean, () => void] {\n const dispatch = useAppDispatch()\n const darkMode = useIsDarkMode()\n\n const toggleSetDarkMode = useCallback(() => {\n dispatch(updateUserDarkMode({ userDarkMode: !darkMode }))\n }, [darkMode, dispatch])\n\n return [darkMode, toggleSetDarkMode]\n}\n\nexport function useUserLocale(): SupportedLocale | null {\n return useAppSelector((state) => state.user.userLocale)\n}\n\nexport function useUserLocaleManager(): [SupportedLocale | null, (newLocale: SupportedLocale) => void] {\n const dispatch = useAppDispatch()\n const locale = useUserLocale()\n\n const setLocale = useCallback(\n (newLocale: SupportedLocale) => {\n dispatch(updateUserLocale({ userLocale: newLocale }))\n },\n [dispatch]\n )\n\n return [locale, setLocale]\n}\n\nexport function useIsExpertMode(): boolean {\n return useAppSelector((state) => state.user.userExpertMode)\n}\n\nexport function useExpertModeManager(): [boolean, () => void] {\n const dispatch = useAppDispatch()\n const expertMode = useIsExpertMode()\n\n const toggleSetExpertMode = useCallback(() => {\n dispatch(updateUserExpertMode({ userExpertMode: !expertMode }))\n }, [expertMode, dispatch])\n\n return [expertMode, toggleSetExpertMode]\n}\n\nexport function useUserSingleHopOnly(): [boolean, (newSingleHopOnly: boolean) => void] {\n const dispatch = useAppDispatch()\n\n const singleHopOnly = useAppSelector((state) => state.user.userSingleHopOnly)\n\n const setSingleHopOnly = useCallback(\n (newSingleHopOnly: boolean) => {\n dispatch(updateUserSingleHopOnly({ userSingleHopOnly: newSingleHopOnly }))\n },\n [dispatch]\n )\n\n return [singleHopOnly, setSingleHopOnly]\n}\n\nexport function useSetUserSlippageTolerance(): (slippageTolerance: Percent | 'auto') => void {\n const dispatch = useAppDispatch()\n\n return useCallback(\n (userSlippageTolerance: Percent | 'auto') => {\n let value: 'auto' | number\n try {\n value =\n userSlippageTolerance === 'auto' ? 'auto' : JSBI.toNumber(userSlippageTolerance.multiply(10_000).quotient)\n } catch (error) {\n value = 'auto'\n }\n dispatch(\n updateUserSlippageTolerance({\n userSlippageTolerance: value,\n })\n )\n },\n [dispatch]\n )\n}\n\n/**\n * Return the user's slippage tolerance, from the redux store, and a function to update the slippage tolerance\n */\nexport function useUserSlippageTolerance(): Percent | 'auto' {\n const userSlippageTolerance = useAppSelector((state) => {\n return state.user.userSlippageTolerance\n })\n\n return useMemo(\n () => (userSlippageTolerance === 'auto' ? 'auto' : new Percent(userSlippageTolerance, 10_000)),\n [userSlippageTolerance]\n )\n}\n\nexport function useUserHideClosedPositions(): [boolean, (newHideClosedPositions: boolean) => void] {\n const dispatch = useAppDispatch()\n\n const hideClosedPositions = useAppSelector((state) => state.user.userHideClosedPositions)\n\n const setHideClosedPositions = useCallback(\n (newHideClosedPositions: boolean) => {\n dispatch(updateHideClosedPositions({ userHideClosedPositions: newHideClosedPositions }))\n },\n [dispatch]\n )\n\n return [hideClosedPositions, setHideClosedPositions]\n}\n\n/**\n * Same as above but replaces the auto with a default value\n * @param defaultSlippageTolerance the default value to replace auto with\n */\nexport function useUserSlippageToleranceWithDefault(defaultSlippageTolerance: Percent): Percent {\n const allowedSlippage = useUserSlippageTolerance()\n return useMemo(\n () => (allowedSlippage === 'auto' ? defaultSlippageTolerance : allowedSlippage),\n [allowedSlippage, defaultSlippageTolerance]\n )\n}\n\nexport function useUserTransactionTTL(): [number, (slippage: number) => void] {\n const { chainId } = useActiveWeb3React()\n const dispatch = useAppDispatch()\n const userDeadline = useAppSelector((state) => state.user.userDeadline)\n const onL2 = Boolean(chainId && L2_CHAIN_IDS.includes(chainId))\n const deadline = onL2 ? L2_DEADLINE_FROM_NOW : userDeadline\n\n const setUserDeadline = useCallback(\n (userDeadline: number) => {\n dispatch(updateUserDeadline({ userDeadline }))\n },\n [dispatch]\n )\n\n return [deadline, setUserDeadline]\n}\n\nexport function useAddUserToken(): (token: Token) => void {\n const dispatch = useAppDispatch()\n return useCallback(\n (token: Token) => {\n dispatch(addSerializedToken({ serializedToken: serializeToken(token) }))\n },\n [dispatch]\n )\n}\n\nexport function useRemoveUserAddedToken(): (chainId: number, address: string) => void {\n const dispatch = useAppDispatch()\n return useCallback(\n (chainId: number, address: string) => {\n dispatch(removeSerializedToken({ chainId, address }))\n },\n [dispatch]\n )\n}\n\nexport function useUserAddedTokens(): Token[] {\n const { chainId } = useActiveWeb3React()\n const serializedTokensMap = useAppSelector(({ user: { tokens } }) => tokens)\n\n return useMemo(() => {\n if (!chainId) return []\n return Object.values(serializedTokensMap?.[chainId] ?? {}).map(deserializeToken)\n }, [serializedTokensMap, chainId])\n}\n\nfunction serializePair(pair: Pair): SerializedPair {\n return {\n token0: serializeToken(pair.token0),\n token1: serializeToken(pair.token1),\n }\n}\n\nexport function usePairAdder(): (pair: Pair) => void {\n const dispatch = useAppDispatch()\n\n return useCallback(\n (pair: Pair) => {\n dispatch(addSerializedPair({ serializedPair: serializePair(pair) }))\n },\n [dispatch]\n )\n}\n\nexport function useURLWarningVisible(): boolean {\n return useAppSelector((state: AppState) => state.user.URLWarningVisible)\n}\n\n/**\n * Given two tokens return the liquidity token that represents its liquidity shares\n * @param tokenA one of the two tokens\n * @param tokenB the other token\n */\nexport function toV2LiquidityToken([tokenA, tokenB]: [Token, Token]): Token {\n if (tokenA.chainId !== tokenB.chainId) throw new Error('Not matching chain IDs')\n if (tokenA.equals(tokenB)) throw new Error('Tokens cannot be equal')\n if (!V2_FACTORY_ADDRESSES[tokenA.chainId]) throw new Error('No V2 factory address on this chain')\n\n return new Token(\n tokenA.chainId,\n computePairAddress({ factoryAddress: V2_FACTORY_ADDRESSES[tokenA.chainId], tokenA, tokenB }),\n 18,\n 'UNI-V2',\n 'Uniswap V2'\n )\n}\n\n/**\n * Returns all the pairs of tokens that are tracked by the user for the current chain ID.\n */\nexport function useTrackedTokenPairs(): [Token, Token][] {\n const { chainId } = useActiveWeb3React()\n const tokens = useAllTokens()\n\n // pinned pairs\n const pinnedPairs = useMemo(() => (chainId ? PINNED_PAIRS[chainId] ?? [] : []), [chainId])\n\n // pairs for every token against every base\n const generatedPairs: [Token, Token][] = useMemo(\n () =>\n chainId\n ? flatMap(Object.keys(tokens), (tokenAddress) => {\n const token = tokens[tokenAddress]\n // for each token on the current chain,\n return (\n // loop though all bases on the current chain\n (BASES_TO_TRACK_LIQUIDITY_FOR[chainId] ?? [])\n // to construct pairs of the given token with each base\n .map((base) => {\n if (base.address === token.address) {\n return null\n } else {\n return [base, token]\n }\n })\n .filter((p): p is [Token, Token] => p !== null)\n )\n })\n : [],\n [tokens, chainId]\n )\n\n // pairs saved by users\n const savedSerializedPairs = useAppSelector(({ user: { pairs } }) => pairs)\n\n const userPairs: [Token, Token][] = useMemo(() => {\n if (!chainId || !savedSerializedPairs) return []\n const forChain = savedSerializedPairs[chainId]\n if (!forChain) return []\n\n return Object.keys(forChain).map((pairId) => {\n return [deserializeToken(forChain[pairId].token0), deserializeToken(forChain[pairId].token1)]\n })\n }, [savedSerializedPairs, chainId])\n\n const combinedList = useMemo(\n () => userPairs.concat(generatedPairs).concat(pinnedPairs),\n [generatedPairs, pinnedPairs, userPairs]\n )\n\n return useMemo(() => {\n // dedupes pairs of tokens in the combined list\n const keyed = combinedList.reduce<{ [key: string]: [Token, Token] }>((memo, [tokenA, tokenB]) => {\n const sorted = tokenA.sortsBefore(tokenB)\n const key = sorted ? `${tokenA.address}:${tokenB.address}` : `${tokenB.address}:${tokenA.address}`\n if (memo[key]) return memo\n memo[key] = sorted ? [tokenA, tokenB] : [tokenB, tokenA]\n return memo\n }, {})\n\n return Object.keys(keyed).map((key) => keyed[key])\n }, [combinedList])\n}\n\nexport function useArbitrumAlphaAlert(): [boolean, (arbitrumAlphaAcknowledged: boolean) => void] {\n const dispatch = useAppDispatch()\n const arbitrumAlphaAcknowledged = useAppSelector(({ user }) => user.arbitrumAlphaAcknowledged)\n const setArbitrumAlphaAcknowledged = (arbitrumAlphaAcknowledged: boolean) => {\n dispatch(updateArbitrumAlphaAcknowledged({ arbitrumAlphaAcknowledged }))\n }\n\n return [arbitrumAlphaAcknowledged, setArbitrumAlphaAcknowledged]\n}\n","import { parse, ParsedQs } from 'qs'\nimport { useMemo } from 'react'\nimport { useLocation } from 'react-router-dom'\n\nexport default function useParsedQueryString(): ParsedQs {\n const { search } = useLocation()\n return useMemo(\n () => (search && search.length > 1 ? parse(search, { parseArrays: false, ignoreQueryPrefix: true }) : {}),\n [search]\n )\n}\n","import { DEFAULT_LOCALE, SupportedLocale, SUPPORTED_LOCALES } from 'constants/locales'\nimport { useEffect, useMemo } from 'react'\nimport { useUserLocale, useUserLocaleManager } from 'state/user/hooks'\nimport useParsedQueryString from './useParsedQueryString'\n\n/**\n * Given a locale string (e.g. from user agent), return the best match for corresponding SupportedLocale\n * @param maybeSupportedLocale the fuzzy locale identifier\n */\nfunction parseLocale(maybeSupportedLocale: string): SupportedLocale | undefined {\n const lowerMaybeSupportedLocale = maybeSupportedLocale.toLowerCase()\n return SUPPORTED_LOCALES.find(\n (locale) => locale.toLowerCase() === lowerMaybeSupportedLocale || locale.split('-')[0] === lowerMaybeSupportedLocale\n )\n}\n\n/**\n * Returns the supported locale read from the user agent (navigator)\n */\nexport function navigatorLocale(): SupportedLocale | undefined {\n if (!navigator.language) return undefined\n\n const [language, region] = navigator.language.split('-')\n\n if (region) {\n return parseLocale(`${language}-${region.toUpperCase()}`) ?? parseLocale(language)\n }\n\n return parseLocale(language)\n}\n\nexport function useSetLocaleFromUrl() {\n const parsed = useParsedQueryString()\n const [userLocale, setUserLocale] = useUserLocaleManager()\n\n useEffect(() => {\n const urlLocale = typeof parsed.lng === 'string' ? parseLocale(parsed.lng) : undefined\n if (urlLocale && urlLocale !== userLocale) {\n setUserLocale(urlLocale)\n }\n }, [parsed.lng, setUserLocale, userLocale])\n}\n\n/**\n * Returns the currently active locale, from a combination of user agent, query string, and user settings stored in redux\n */\nexport function useActiveLocale(): SupportedLocale {\n const userLocale = useUserLocale()\n\n return useMemo(() => {\n return userLocale ?? navigatorLocale() ?? DEFAULT_LOCALE\n }, [userLocale])\n}\n","import { useEffect, useState } from 'react'\nimport { i18n } from '@lingui/core'\nimport { I18nProvider } from '@lingui/react'\nimport { ReactNode } from 'react'\nimport { useActiveLocale, useSetLocaleFromUrl } from 'hooks/useActiveLocale'\nimport { SupportedLocale } from 'constants/locales'\nimport {\n af,\n ar,\n ca,\n cs,\n da,\n de,\n el,\n en,\n es,\n fi,\n fr,\n he,\n hu,\n id,\n it,\n ja,\n ko,\n nl,\n no,\n pl,\n pt,\n ro,\n ru,\n sr,\n sv,\n tr,\n uk,\n vi,\n zh,\n PluralCategory,\n} from 'make-plural/plurals'\n\ntype LocalePlural = {\n [key in SupportedLocale]: (n: number | string, ord?: boolean) => PluralCategory\n}\n\nconst plurals: LocalePlural = {\n 'af-ZA': af,\n 'ar-SA': ar,\n 'ca-ES': ca,\n 'cs-CZ': cs,\n 'da-DK': da,\n 'de-DE': de,\n 'el-GR': el,\n 'en-US': en,\n 'es-ES': es,\n 'fi-FI': fi,\n 'fr-FR': fr,\n 'he-IL': he,\n 'hu-HU': hu,\n 'id-ID': id,\n 'it-IT': it,\n 'ja-JP': ja,\n 'ko-KR': ko,\n 'nl-NL': nl,\n 'no-NO': no,\n 'pl-PL': pl,\n 'pt-BR': pt,\n 'pt-PT': pt,\n 'ro-RO': ro,\n 'ru-RU': ru,\n 'sr-SP': sr,\n 'sv-SE': sv,\n 'tr-TR': tr,\n 'uk-UA': uk,\n 'vi-VN': vi,\n 'zh-CN': zh,\n 'zh-TW': zh,\n}\n\nasync function dynamicActivate(locale: SupportedLocale) {\n const { messages } = await import(`@lingui/loader!./locales/${locale}.po`)\n i18n.loadLocaleData(locale, { plurals: () => plurals[locale] })\n i18n.load(locale, messages)\n i18n.activate(locale)\n}\n\nexport function LanguageProvider({ children }: { children: ReactNode }) {\n useSetLocaleFromUrl()\n const locale = useActiveLocale()\n const [loaded, setLoaded] = useState(false)\n\n useEffect(() => {\n dynamicActivate(locale)\n .then(() => {\n setLoaded(true)\n })\n .catch((error) => {\n console.error('Failed to activate locale', locale, error)\n })\n }, [locale])\n\n // prevent the app from rendering with placeholder text before the locale is loaded\n if (!loaded) return null\n\n return (\n \n {children}\n \n )\n}\n","import { useEffect } from 'react'\n\nimport { useAppDispatch } from 'state/hooks'\nimport { updateUserExpertMode } from '../state/user/actions'\nimport useParsedQueryString from './useParsedQueryString'\n\nexport default function ApeModeQueryParamReader(): null {\n useApeModeQueryParamReader()\n return null\n}\n\nfunction useApeModeQueryParamReader() {\n const dispatch = useAppDispatch()\n const { ape } = useParsedQueryString()\n\n useEffect(() => {\n if (typeof ape !== 'string') return\n if (ape === '' || ape.toLowerCase() === 'true') {\n dispatch(updateUserExpertMode({ userExpertMode: true }))\n }\n })\n}\n","import { useEffect } from 'react'\nimport ReactGA from 'react-ga'\nimport { RouteComponentProps } from 'react-router-dom'\n\n// fires a GA pageview every time the route changes\nexport default function GoogleAnalyticsReporter({ location: { pathname, search } }: RouteComponentProps): null {\n useEffect(() => {\n ReactGA.pageview(`${pathname}${search}`)\n }, [pathname, search])\n return null\n}\n","import { SupportedChainId } from '../constants/chains'\n\nconst ETHERSCAN_PREFIXES: { [chainId: number]: string } = {\n [SupportedChainId.MAINNET]: '',\n [SupportedChainId.ROPSTEN]: 'ropsten.',\n [SupportedChainId.RINKEBY]: 'rinkeby.',\n [SupportedChainId.GOERLI]: 'goerli.',\n [SupportedChainId.KOVAN]: 'kovan.',\n [SupportedChainId.OPTIMISM]: 'optimistic.',\n [SupportedChainId.OPTIMISTIC_KOVAN]: 'kovan-optimistic.',\n}\n\nexport enum ExplorerDataType {\n TRANSACTION = 'transaction',\n TOKEN = 'token',\n ADDRESS = 'address',\n BLOCK = 'block',\n}\n\n/**\n * Return the explorer link for the given data and data type\n * @param chainId the ID of the chain for which to return the data\n * @param data the data to return a link for\n * @param type the type of the data\n */\nexport function getExplorerLink(chainId: number, data: string, type: ExplorerDataType): string {\n if (chainId === SupportedChainId.ARBITRUM_ONE) {\n switch (type) {\n case ExplorerDataType.TRANSACTION:\n return `https://explorer.arbitrum.io/tx/${data}`\n case ExplorerDataType.ADDRESS:\n case ExplorerDataType.TOKEN:\n return `https://explorer.arbitrum.io/address/${data}`\n case ExplorerDataType.BLOCK:\n return `https://explorer.arbitrum.io/block/${data}`\n default:\n return `https://explorer.arbitrum.io/`\n }\n }\n\n if (chainId === SupportedChainId.ARBITRUM_RINKEBY) {\n switch (type) {\n case ExplorerDataType.TRANSACTION:\n return `https://rinkeby-explorer.arbitrum.io/tx/${data}`\n case ExplorerDataType.ADDRESS:\n case ExplorerDataType.TOKEN:\n return `https://rinkeby-explorer.arbitrum.io/address/${data}`\n case ExplorerDataType.BLOCK:\n return `https://rinkeby-explorer.arbitrum.io/block/${data}`\n default:\n return `https://rinkeby-explorer.arbitrum.io/`\n }\n }\n\n const prefix = `https://${ETHERSCAN_PREFIXES[chainId] ?? ''}etherscan.io`\n\n switch (type) {\n case ExplorerDataType.TRANSACTION:\n return `${prefix}/tx/${data}`\n\n case ExplorerDataType.TOKEN:\n return `${prefix}/token/${data}`\n\n case ExplorerDataType.BLOCK:\n if (chainId === SupportedChainId.OPTIMISM || chainId === SupportedChainId.OPTIMISTIC_KOVAN) {\n return `${prefix}/tx/${data}`\n }\n return `${prefix}/block/${data}`\n\n case ExplorerDataType.ADDRESS:\n return `${prefix}/address/${data}`\n default:\n return `${prefix}`\n }\n}\n","import React from 'react'\nimport styled, { css } from 'styled-components/macro'\nimport { animated, useTransition, useSpring } from 'react-spring'\nimport { DialogOverlay, DialogContent } from '@reach/dialog'\nimport { isMobile } from 'react-device-detect'\nimport { transparentize } from 'polished'\nimport { useGesture } from 'react-use-gesture'\n\nconst AnimatedDialogOverlay = animated(DialogOverlay)\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst StyledDialogOverlay = styled(AnimatedDialogOverlay)`\n &[data-reach-dialog-overlay] {\n z-index: 2;\n background-color: transparent;\n overflow: hidden;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n background-color: ${({ theme }) => theme.modalBG};\n }\n`\n\nconst AnimatedDialogContent = animated(DialogContent)\n// destructure to not pass custom props to Dialog DOM element\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst StyledDialogContent = styled(({ minHeight, maxHeight, mobile, isOpen, ...rest }) => (\n \n)).attrs({\n 'aria-label': 'dialog',\n})`\n overflow-y: auto;\n\n &[data-reach-dialog-content] {\n margin: 0 0 2rem 0;\n background-color: ${({ theme }) => theme.bg0};\n border: 1px solid ${({ theme }) => theme.bg1};\n box-shadow: 0 4px 8px 0 ${({ theme }) => transparentize(0.95, theme.shadow1)};\n padding: 0px;\n width: 50vw;\n overflow-y: auto;\n overflow-x: hidden;\n\n align-self: ${({ mobile }) => (mobile ? 'flex-end' : 'center')};\n\n max-width: 420px;\n ${({ maxHeight }) =>\n maxHeight &&\n css`\n max-height: ${maxHeight}vh;\n `}\n ${({ minHeight }) =>\n minHeight &&\n css`\n min-height: ${minHeight}vh;\n `}\n display: flex;\n border-radius: 20px;\n ${({ theme }) => theme.mediaWidth.upToMedium`\n width: 65vw;\n margin: 0;\n `}\n ${({ theme, mobile }) => theme.mediaWidth.upToSmall`\n width: 85vw;\n ${\n mobile &&\n css`\n width: 100vw;\n border-radius: 20px;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n `\n }\n `}\n }\n`\n\ninterface ModalProps {\n isOpen: boolean\n onDismiss: () => void\n minHeight?: number | false\n maxHeight?: number\n initialFocusRef?: React.RefObject\n children?: React.ReactNode\n}\n\nexport default function Modal({\n isOpen,\n onDismiss,\n minHeight = false,\n maxHeight = 90,\n initialFocusRef,\n children,\n}: ModalProps) {\n const fadeTransition = useTransition(isOpen, null, {\n config: { duration: 200 },\n from: { opacity: 0 },\n enter: { opacity: 1 },\n leave: { opacity: 0 },\n })\n\n const [{ y }, set] = useSpring(() => ({ y: 0, config: { mass: 1, tension: 210, friction: 20 } }))\n const bind = useGesture({\n onDrag: (state) => {\n set({\n y: state.down ? state.movement[1] : 0,\n })\n if (state.movement[1] > 300 || (state.velocity > 3 && state.direction[1] > 0)) {\n onDismiss()\n }\n },\n })\n\n return (\n <>\n {fadeTransition.map(\n ({ item, key, props }) =>\n item && (\n \n `translateY(${(y as number) > 0 ? y : 0}px)`) },\n }\n : {})}\n aria-label=\"dialog content\"\n minHeight={minHeight}\n maxHeight={maxHeight}\n mobile={isMobile}\n >\n {/* prevents the automatic focusing of inputs on mobile by the reach dialog */}\n {!initialFocusRef && isMobile ?
: null}\n {children}\n \n \n )\n )}\n \n )\n}\n","import styled from 'styled-components/macro'\n\nconst Column = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n`\nexport const ColumnCenter = styled(Column)`\n width: 100%;\n align-items: center;\n`\n\nexport const AutoColumn = styled.div<{\n gap?: 'sm' | 'md' | 'lg' | string\n justify?: 'stretch' | 'center' | 'start' | 'end' | 'flex-start' | 'flex-end' | 'space-between'\n}>`\n display: grid;\n grid-auto-rows: auto;\n grid-row-gap: ${({ gap }) => (gap === 'sm' && '8px') || (gap === 'md' && '12px') || (gap === 'lg' && '24px') || gap};\n justify-items: ${({ justify }) => justify && justify};\n`\n\nexport default Column\n","export default __webpack_public_path__ + \"static/media/big_unicorn.595c4996.png\";","export default __webpack_public_path__ + \"static/media/xl_uni.9c9e061b.png\";","export default __webpack_public_path__ + \"static/media/noise.3c7efafc.png\";","import styled from 'styled-components/macro'\nimport { AutoColumn } from '../Column'\n\nimport uImage from '../../assets/images/big_unicorn.png'\nimport xlUnicorn from '../../assets/images/xl_uni.png'\nimport noise from '../../assets/images/noise.png'\n\nexport const DataCard = styled(AutoColumn)<{ disabled?: boolean }>`\n background: radial-gradient(76.02% 75.41% at 1.84% 0%, #ff007a 0%, #2172e5 100%);\n border-radius: 12px;\n width: 100%;\n position: relative;\n overflow: hidden;\n`\n\nexport const CardBGImage = styled.span<{ desaturate?: boolean }>`\n background: url(${uImage});\n width: 1000px;\n height: 600px;\n position: absolute;\n border-radius: 12px;\n opacity: 0.4;\n top: -100px;\n left: -100px;\n transform: rotate(-15deg);\n user-select: none;\n ${({ desaturate }) => desaturate && `filter: saturate(0)`}\n`\n\nexport const CardBGImageSmaller = styled.span<{ desaturate?: boolean }>`\n background: url(${xlUnicorn});\n width: 1200px;\n height: 1200px;\n position: absolute;\n border-radius: 12px;\n top: -300px;\n left: -300px;\n opacity: 0.4;\n user-select: none;\n\n ${({ desaturate }) => desaturate && `filter: saturate(0)`}\n`\n\nexport const CardNoise = styled.span`\n background: url(${noise});\n background-size: cover;\n mix-blend-mode: overlay;\n border-radius: 12px;\n width: 100%;\n height: 100%;\n opacity: 0.15;\n position: absolute;\n top: 0;\n left: 0;\n user-select: none;\n`\n\nexport const CardSection = styled(AutoColumn)<{ disabled?: boolean }>`\n padding: 1rem;\n z-index: 1;\n opacity: ${({ disabled }) => disabled && '0.4'};\n`\n\nexport const Break = styled.div`\n width: 100%;\n background-color: rgba(255, 255, 255, 0.2);\n height: 1px;\n`\n","import styled from 'styled-components/macro'\nimport { Box } from 'rebass/styled-components'\n\nconst Row = styled(Box)<{\n width?: string\n align?: string\n justify?: string\n padding?: string\n border?: string\n borderRadius?: string\n}>`\n width: ${({ width }) => width ?? '100%'};\n display: flex;\n padding: 0;\n align-items: ${({ align }) => align ?? 'center'};\n justify-content: ${({ justify }) => justify ?? 'flex-start'};\n padding: ${({ padding }) => padding};\n border: ${({ border }) => border};\n border-radius: ${({ borderRadius }) => borderRadius};\n`\n\nexport const RowBetween = styled(Row)`\n justify-content: space-between;\n`\n\nexport const RowFlat = styled.div`\n display: flex;\n align-items: flex-end;\n`\n\nexport const AutoRow = styled(Row)<{ gap?: string; justify?: string }>`\n flex-wrap: wrap;\n margin: ${({ gap }) => gap && `-${gap}`};\n justify-content: ${({ justify }) => justify && justify};\n\n & > * {\n margin: ${({ gap }) => gap} !important;\n }\n`\n\nexport const RowFixed = styled(Row)<{ gap?: string; justify?: string }>`\n width: fit-content;\n margin: ${({ gap }) => gap && `-${gap}`};\n`\n\nexport default Row\n","const EXPLORER_HOSTNAMES: { [hostname: string]: true } = {\n 'etherscan.io': true,\n 'ropsten.etherscan.io': true,\n 'rinkeby.etherscan.io': true,\n 'kovan.etherscan.io': true,\n 'goerli.etherscan.io': true,\n 'optimistic.etherscan.io': true,\n 'kovan-optimistic.etherscan.io': true,\n 'rinkeby-explorer.arbitrum.io': true,\n 'explorer.arbitrum.io': true,\n}\n\n/**\n * Returns the anonymized version of the given href, i.e. one that does not leak user information\n * @param href the link to anonymize, i.e. remove any personal data from\n * @return string anonymized version of the given href\n */\nexport function anonymizeLink(href: string): string {\n try {\n const url = new URL(href)\n if (EXPLORER_HOSTNAMES[url.hostname]) {\n const pathPieces = url.pathname.split('/')\n\n const anonymizedPath = pathPieces.map((pc) => (/0x[a-fA-F0-9]+/.test(pc) ? '***' : pc)).join('/')\n\n return `${url.protocol}//${url.hostname}${anonymizedPath}`\n }\n return href\n } catch (error) {\n return href\n }\n}\n","import React, { HTMLProps } from 'react'\nimport { ArrowLeft, ExternalLink as LinkIconFeather, Trash, X } from 'react-feather'\nimport ReactGA from 'react-ga'\nimport { Link } from 'react-router-dom'\nimport styled, { keyframes } from 'styled-components/macro'\nimport { anonymizeLink } from '../utils/anonymizeLink'\n\nexport const ButtonText = styled.button`\n outline: none;\n border: none;\n font-size: inherit;\n padding: 0;\n margin: 0;\n background: none;\n cursor: pointer;\n\n :hover {\n opacity: 0.7;\n }\n\n :focus {\n text-decoration: underline;\n }\n`\n\nexport const CloseIcon = styled(X)<{ onClick: () => void }>`\n cursor: pointer;\n`\n\n// for wrapper react feather icons\nexport const IconWrapper = styled.div<{ stroke?: string; size?: string; marginRight?: string; marginLeft?: string }>`\n display: flex;\n align-items: center;\n justify-content: center;\n width: ${({ size }) => size ?? '20px'};\n height: ${({ size }) => size ?? '20px'};\n margin-right: ${({ marginRight }) => marginRight ?? 0};\n margin-left: ${({ marginLeft }) => marginLeft ?? 0};\n & > * {\n stroke: ${({ theme, stroke }) => stroke ?? theme.blue1};\n }\n`\n\n// A button that triggers some onClick result, but looks like a link.\nexport const LinkStyledButton = styled.button<{ disabled?: boolean }>`\n border: none;\n text-decoration: none;\n background: none;\n\n cursor: ${({ disabled }) => (disabled ? 'default' : 'pointer')};\n color: ${({ theme, disabled }) => (disabled ? theme.text2 : theme.primary1)};\n font-weight: 500;\n\n :hover {\n text-decoration: ${({ disabled }) => (disabled ? null : 'underline')};\n }\n\n :focus {\n outline: none;\n text-decoration: ${({ disabled }) => (disabled ? null : 'underline')};\n }\n\n :active {\n text-decoration: none;\n }\n`\n\n// An internal link from the react-router-dom library that is correctly styled\nexport const StyledInternalLink = styled(Link)`\n text-decoration: none;\n cursor: pointer;\n color: ${({ theme }) => theme.primary1};\n font-weight: 500;\n\n :hover {\n text-decoration: underline;\n }\n\n :focus {\n outline: none;\n text-decoration: underline;\n }\n\n :active {\n text-decoration: none;\n }\n`\n\nconst StyledLink = styled.a`\n text-decoration: none;\n cursor: pointer;\n color: ${({ theme }) => theme.primary1};\n font-weight: 500;\n\n :hover {\n text-decoration: underline;\n }\n\n :focus {\n outline: none;\n text-decoration: underline;\n }\n\n :active {\n text-decoration: none;\n }\n`\n\nconst LinkIconWrapper = styled.a`\n text-decoration: none;\n cursor: pointer;\n align-items: center;\n justify-content: center;\n display: flex;\n\n :hover {\n text-decoration: none;\n opacity: 0.7;\n }\n\n :focus {\n outline: none;\n text-decoration: none;\n }\n\n :active {\n text-decoration: none;\n }\n`\n\nconst LinkIcon = styled(LinkIconFeather)`\n height: 16px;\n width: 18px;\n margin-left: 10px;\n stroke: ${({ theme }) => theme.blue1};\n`\n\nexport const TrashIcon = styled(Trash)`\n height: 16px;\n width: 18px;\n margin-left: 10px;\n stroke: ${({ theme }) => theme.text3};\n\n cursor: pointer;\n align-items: center;\n justify-content: center;\n display: flex;\n\n :hover {\n opacity: 0.7;\n }\n`\n\nconst rotateImg = keyframes`\n 0% {\n transform: perspective(1000px) rotateY(0deg);\n }\n\n 100% {\n transform: perspective(1000px) rotateY(360deg);\n }\n`\n\nexport const UniTokenAnimated = styled.img`\n animation: ${rotateImg} 5s cubic-bezier(0.83, 0, 0.17, 1) infinite;\n padding: 2rem 0 0 0;\n filter: drop-shadow(0px 2px 4px rgba(0, 0, 0, 0.15));\n`\n\nfunction handleClickExternalLink(event: React.MouseEvent) {\n const { target, href } = event.currentTarget\n\n const anonymizedHref = anonymizeLink(href)\n\n // don't prevent default, don't redirect if it's a new tab\n if (target === '_blank' || event.ctrlKey || event.metaKey) {\n ReactGA.outboundLink({ label: anonymizedHref }, () => {\n console.debug('Fired outbound link event', anonymizedHref)\n })\n } else {\n event.preventDefault()\n // send a ReactGA event and then trigger a location change\n ReactGA.outboundLink({ label: anonymizedHref }, () => {\n window.location.href = anonymizedHref\n })\n }\n}\n\n/**\n * Outbound link that handles firing google analytics events\n */\nexport function ExternalLink({\n target = '_blank',\n href,\n rel = 'noopener noreferrer',\n ...rest\n}: Omit, 'as' | 'ref' | 'onClick'> & { href: string }) {\n return \n}\n\nexport function ExternalLinkIcon({\n target = '_blank',\n href,\n rel = 'noopener noreferrer',\n ...rest\n}: Omit, 'as' | 'ref' | 'onClick'> & { href: string }) {\n return (\n \n \n \n )\n}\n\nconst rotate = keyframes`\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n`\n\nconst Spinner = styled.img`\n animation: 2s ${rotate} linear infinite;\n width: 16px;\n height: 16px;\n`\n\nconst BackArrowLink = styled(StyledInternalLink)`\n color: ${({ theme }) => theme.text1};\n`\nexport function BackArrow({ to }: { to: string }) {\n return (\n \n \n \n )\n}\n\nexport const CustomLightSpinner = styled(Spinner)<{ size: string }>`\n height: ${({ size }) => size};\n width: ${({ size }) => size};\n`\n\nexport const HideSmall = styled.span`\n ${({ theme }) => theme.mediaWidth.upToSmall`\n display: none;\n `};\n`\n\nexport const HideExtraSmall = styled.span`\n ${({ theme }) => theme.mediaWidth.upToExtraSmall`\n display: none;\n `};\n`\n\nexport const SmallOnly = styled.span`\n display: none;\n ${({ theme }) => theme.mediaWidth.upToSmall`\n display: block;\n `};\n`\n","import React, { useMemo } from 'react'\nimport { Text, TextProps as TextPropsOriginal } from 'rebass'\nimport styled, {\n createGlobalStyle,\n css,\n DefaultTheme,\n ThemeProvider as StyledComponentsThemeProvider,\n} from 'styled-components/macro'\nimport { useIsDarkMode } from '../state/user/hooks'\nimport { Colors } from './styled'\n\nexport * from './components'\n\ntype TextProps = Omit\n\nexport const MEDIA_WIDTHS = {\n upToExtraSmall: 500,\n upToSmall: 720,\n upToMedium: 960,\n upToLarge: 1280,\n}\n\nconst mediaWidthTemplates: { [width in keyof typeof MEDIA_WIDTHS]: typeof css } = Object.keys(MEDIA_WIDTHS).reduce(\n (accumulator, size) => {\n ;(accumulator as any)[size] = (a: any, b: any, c: any) => css`\n @media (max-width: ${(MEDIA_WIDTHS as any)[size]}px) {\n ${css(a, b, c)}\n }\n `\n return accumulator\n },\n {}\n) as any\n\nconst white = '#FFFFFF'\nconst black = '#000000'\n\nfunction colors(darkMode: boolean): Colors {\n return {\n // base\n white,\n black,\n\n // text\n text1: darkMode ? '#FFFFFF' : '#000000',\n text2: darkMode ? '#C3C5CB' : '#565A69',\n text3: darkMode ? '#8F96AC' : '#6E727D',\n text4: darkMode ? '#B2B9D2' : '#C3C5CB',\n text5: darkMode ? '#2C2F36' : '#EDEEF2',\n\n // backgrounds / greys\n bg0: darkMode ? '#191B1F' : '#FFF',\n bg1: darkMode ? '#212429' : '#F7F8FA',\n bg2: darkMode ? '#2C2F36' : '#EDEEF2',\n bg3: darkMode ? '#40444F' : '#CED0D9',\n bg4: darkMode ? '#565A69' : '#888D9B',\n bg5: darkMode ? '#6C7284' : '#888D9B',\n bg6: darkMode ? '#1A2028' : '#6C7284',\n\n //specialty colors\n modalBG: darkMode ? 'rgba(0,0,0,.425)' : 'rgba(0,0,0,0.3)',\n advancedBG: darkMode ? 'rgba(0,0,0,0.1)' : 'rgba(255,255,255,0.6)',\n\n //primary colors\n primary1: darkMode ? '#2172E5' : '#E8006F',\n primary2: darkMode ? '#3680E7' : '#FF8CC3',\n primary3: darkMode ? '#4D8FEA' : '#FF99C9',\n primary4: darkMode ? '#376bad70' : '#F6DDE8',\n primary5: darkMode ? '#153d6f70' : '#FDEAF1',\n\n // color text\n primaryText1: darkMode ? '#438BF0' : '#D50066',\n\n // secondary colors\n secondary1: darkMode ? '#2172E5' : '#E8006F',\n secondary2: darkMode ? '#17000b26' : '#F6DDE8',\n secondary3: darkMode ? '#17000b26' : '#FDEAF1',\n\n // other\n red1: darkMode ? '#FF4343' : '#DA2D2B',\n red2: darkMode ? '#F82D3A' : '#DF1F38',\n red3: '#D60000',\n green1: darkMode ? '#27AE60' : '#007D35',\n yellow1: '#E3A507',\n yellow2: '#FF8F00',\n yellow3: '#F3B71E',\n blue1: darkMode ? '#2172E5' : '#0068FC',\n blue2: darkMode ? '#5199FF' : '#0068FC',\n error: darkMode ? '#FD4040' : '#DF1F38',\n success: darkMode ? '#27AE60' : '#007D35',\n warning: '#FF8F00',\n\n // dont wanna forget these blue yet\n blue4: darkMode ? '#153d6f70' : '#C4D9F8',\n // blue5: darkMode ? '#153d6f70' : '#EBF4FF',\n }\n}\n\nfunction theme(darkMode: boolean): DefaultTheme {\n return {\n ...colors(darkMode),\n\n grids: {\n sm: 8,\n md: 12,\n lg: 24,\n },\n\n //shadows\n shadow1: darkMode ? '#000' : '#2F80ED',\n\n // media queries\n mediaWidth: mediaWidthTemplates,\n\n // css snippets\n flexColumnNoWrap: css`\n display: flex;\n flex-flow: column nowrap;\n `,\n flexRowNoWrap: css`\n display: flex;\n flex-flow: row nowrap;\n `,\n }\n}\n\nexport default function ThemeProvider({ children }: { children: React.ReactNode }) {\n const darkMode = useIsDarkMode()\n\n const themeObject = useMemo(() => theme(darkMode), [darkMode])\n\n return {children}\n}\n\nconst TextWrapper = styled(Text)<{ color: keyof Colors }>`\n color: ${({ color, theme }) => (theme as any)[color]};\n`\n\nexport const TYPE = {\n main(props: TextProps) {\n return \n },\n link(props: TextProps) {\n return \n },\n label(props: TextProps) {\n return \n },\n black(props: TextProps) {\n return \n },\n white(props: TextProps) {\n return \n },\n body(props: TextProps) {\n return \n },\n largeHeader(props: TextProps) {\n return \n },\n mediumHeader(props: TextProps) {\n return \n },\n subHeader(props: TextProps) {\n return \n },\n small(props: TextProps) {\n return \n },\n blue(props: TextProps) {\n return \n },\n yellow(props: TextProps) {\n return \n },\n darkGray(props: TextProps) {\n return \n },\n gray(props: TextProps) {\n return \n },\n italic(props: TextProps) {\n return \n },\n error({ error, ...props }: { error: boolean } & TextProps) {\n return \n },\n}\n\nexport const ThemedGlobalStyle = createGlobalStyle`\nhtml {\n color: ${({ theme }) => theme.text1};\n background-color: ${({ theme }) => theme.bg1} !important;\n}\n\na {\n color: ${({ theme }) => theme.blue1}; \n}\n`\n","import { ThemeContext } from 'styled-components/macro'\nimport { useContext } from 'react'\n\nexport default function useTheme() {\n return useContext(ThemeContext)\n}\n","import styled from 'styled-components/macro'\nimport { darken } from 'polished'\n\nimport { RowBetween } from '../Row'\nimport { ChevronDown, Check } from 'react-feather'\nimport { Button as RebassButton, ButtonProps as ButtonPropsOriginal } from 'rebass/styled-components'\nimport useTheme from 'hooks/useTheme'\n\ntype ButtonProps = Omit\n\nconst Base = styled(RebassButton)<\n {\n padding?: string\n width?: string\n $borderRadius?: string\n altDisabledStyle?: boolean\n } & ButtonProps\n>`\n padding: ${({ padding }) => padding ?? '16px'};\n width: ${({ width }) => width ?? '100%'};\n font-weight: 500;\n text-align: center;\n border-radius: ${({ $borderRadius }) => $borderRadius ?? '20px'};\n outline: none;\n border: 1px solid transparent;\n color: white;\n text-decoration: none;\n display: flex;\n justify-content: center;\n flex-wrap: nowrap;\n align-items: center;\n cursor: pointer;\n position: relative;\n z-index: 1;\n &:disabled {\n cursor: auto;\n pointer-events: none;\n }\n\n will-change: transform;\n transition: transform 450ms ease;\n transform: perspective(1px) translateZ(0);\n\n > * {\n user-select: none;\n }\n\n > a {\n text-decoration: none;\n }\n`\n\nexport const ButtonPrimary = styled(Base)`\n background-color: ${({ theme }) => theme.primary1};\n color: white;\n &:focus {\n box-shadow: 0 0 0 1pt ${({ theme }) => darken(0.05, theme.primary1)};\n background-color: ${({ theme }) => darken(0.05, theme.primary1)};\n }\n &:hover {\n background-color: ${({ theme }) => darken(0.05, theme.primary1)};\n }\n &:active {\n box-shadow: 0 0 0 1pt ${({ theme }) => darken(0.1, theme.primary1)};\n background-color: ${({ theme }) => darken(0.1, theme.primary1)};\n }\n &:disabled {\n background-color: ${({ theme, altDisabledStyle, disabled }) =>\n altDisabledStyle ? (disabled ? theme.primary1 : theme.bg2) : theme.bg2};\n color: ${({ theme }) => theme.text2};\n cursor: auto;\n box-shadow: none;\n border: 1px solid transparent;\n outline: none;\n }\n`\n\nexport const ButtonLight = styled(Base)`\n background-color: ${({ theme }) => theme.primary5};\n color: ${({ theme }) => theme.primaryText1};\n font-size: 16px;\n font-weight: 500;\n &:focus {\n box-shadow: 0 0 0 1pt ${({ theme, disabled }) => !disabled && darken(0.03, theme.primary5)};\n background-color: ${({ theme, disabled }) => !disabled && darken(0.03, theme.primary5)};\n }\n &:hover {\n background-color: ${({ theme, disabled }) => !disabled && darken(0.03, theme.primary5)};\n }\n &:active {\n box-shadow: 0 0 0 1pt ${({ theme, disabled }) => !disabled && darken(0.05, theme.primary5)};\n background-color: ${({ theme, disabled }) => !disabled && darken(0.05, theme.primary5)};\n }\n :disabled {\n opacity: 0.4;\n :hover {\n cursor: auto;\n background-color: ${({ theme }) => theme.primary5};\n box-shadow: none;\n border: 1px solid transparent;\n outline: none;\n }\n }\n`\n\nexport const ButtonGray = styled(Base)`\n background-color: ${({ theme }) => theme.bg1};\n color: ${({ theme }) => theme.text2};\n font-size: 16px;\n font-weight: 500;\n\n &:hover {\n background-color: ${({ theme, disabled }) => !disabled && darken(0.05, theme.bg2)};\n }\n &:active {\n background-color: ${({ theme, disabled }) => !disabled && darken(0.1, theme.bg2)};\n }\n`\n\nexport const ButtonSecondary = styled(Base)`\n border: 1px solid ${({ theme }) => theme.primary4};\n color: ${({ theme }) => theme.primary1};\n background-color: transparent;\n font-size: 16px;\n border-radius: 12px;\n padding: ${({ padding }) => (padding ? padding : '10px')};\n\n &:focus {\n box-shadow: 0 0 0 1pt ${({ theme }) => theme.primary4};\n border: 1px solid ${({ theme }) => theme.primary3};\n }\n &:hover {\n border: 1px solid ${({ theme }) => theme.primary3};\n }\n &:active {\n box-shadow: 0 0 0 1pt ${({ theme }) => theme.primary4};\n border: 1px solid ${({ theme }) => theme.primary3};\n }\n &:disabled {\n opacity: 50%;\n cursor: auto;\n }\n a:hover {\n text-decoration: none;\n }\n`\n\nexport const ButtonOutlined = styled(Base)`\n border: 1px solid ${({ theme }) => theme.bg2};\n background-color: transparent;\n color: ${({ theme }) => theme.text1};\n &:focus {\n box-shadow: 0 0 0 1px ${({ theme }) => theme.bg4};\n }\n &:hover {\n box-shadow: 0 0 0 1px ${({ theme }) => theme.bg4};\n }\n &:active {\n box-shadow: 0 0 0 1px ${({ theme }) => theme.bg4};\n }\n &:disabled {\n opacity: 50%;\n cursor: auto;\n }\n`\n\nexport const ButtonYellow = styled(Base)`\n background-color: ${({ theme }) => theme.yellow3};\n color: white;\n &:focus {\n box-shadow: 0 0 0 1pt ${({ theme }) => darken(0.05, theme.yellow3)};\n background-color: ${({ theme }) => darken(0.05, theme.yellow3)};\n }\n &:hover {\n background-color: ${({ theme }) => darken(0.05, theme.yellow3)};\n }\n &:active {\n box-shadow: 0 0 0 1pt ${({ theme }) => darken(0.1, theme.yellow3)};\n background-color: ${({ theme }) => darken(0.1, theme.yellow3)};\n }\n &:disabled {\n background-color: ${({ theme }) => theme.yellow3};\n opacity: 50%;\n cursor: auto;\n }\n`\n\nexport const ButtonEmpty = styled(Base)`\n background-color: transparent;\n color: ${({ theme }) => theme.primary1};\n display: flex;\n justify-content: center;\n align-items: center;\n\n &:focus {\n text-decoration: underline;\n }\n &:hover {\n text-decoration: none;\n }\n &:active {\n text-decoration: none;\n }\n &:disabled {\n opacity: 50%;\n cursor: auto;\n }\n`\n\nexport const ButtonText = styled(Base)`\n padding: 0;\n width: fit-content;\n background: none;\n text-decoration: none;\n &:focus {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n text-decoration: underline;\n }\n &:hover {\n // text-decoration: underline;\n opacity: 0.9;\n }\n &:active {\n text-decoration: underline;\n }\n &:disabled {\n opacity: 50%;\n cursor: auto;\n }\n`\n\nconst ButtonConfirmedStyle = styled(Base)`\n background-color: ${({ theme }) => theme.bg3};\n color: ${({ theme }) => theme.text1};\n /* border: 1px solid ${({ theme }) => theme.green1}; */\n\n &:disabled {\n /* opacity: 50%; */\n background-color: ${({ theme }) => theme.bg2};\n color: ${({ theme }) => theme.text2};\n cursor: auto;\n }\n`\n\nconst ButtonErrorStyle = styled(Base)`\n background-color: ${({ theme }) => theme.red1};\n border: 1px solid ${({ theme }) => theme.red1};\n\n &:focus {\n box-shadow: 0 0 0 1pt ${({ theme }) => darken(0.05, theme.red1)};\n background-color: ${({ theme }) => darken(0.05, theme.red1)};\n }\n &:hover {\n background-color: ${({ theme }) => darken(0.05, theme.red1)};\n }\n &:active {\n box-shadow: 0 0 0 1pt ${({ theme }) => darken(0.1, theme.red1)};\n background-color: ${({ theme }) => darken(0.1, theme.red1)};\n }\n &:disabled {\n opacity: 50%;\n cursor: auto;\n box-shadow: none;\n background-color: ${({ theme }) => theme.red1};\n border: 1px solid ${({ theme }) => theme.red1};\n }\n`\n\nexport function ButtonConfirmed({\n confirmed,\n altDisabledStyle,\n ...rest\n}: { confirmed?: boolean; altDisabledStyle?: boolean } & ButtonProps) {\n if (confirmed) {\n return \n } else {\n return \n }\n}\n\nexport function ButtonError({ error, ...rest }: { error?: boolean } & ButtonProps) {\n if (error) {\n return \n } else {\n return \n }\n}\n\nexport function ButtonDropdown({ disabled = false, children, ...rest }: { disabled?: boolean } & ButtonProps) {\n return (\n \n \n
{children}
\n \n
\n
\n )\n}\n\nexport function ButtonDropdownLight({ disabled = false, children, ...rest }: { disabled?: boolean } & ButtonProps) {\n return (\n \n \n
{children}
\n \n
\n
\n )\n}\n\nconst ActiveOutlined = styled(ButtonOutlined)`\n border: 1px solid;\n border-color: ${({ theme }) => theme.primary1};\n`\n\nconst Circle = styled.div`\n height: 20px;\n width: 20px;\n border-radius: 50%;\n background-color: ${({ theme }) => theme.primary1};\n display: flex;\n align-items: center;\n justify-content: center;\n`\n\nconst CheckboxWrapper = styled.div`\n width: 30px;\n padding: 0 10px;\n position: absolute;\n top: 10px;\n right: 10px;\n`\n\nconst ResponsiveCheck = styled(Check)`\n size: 13px;\n`\n\nexport function ButtonRadioChecked({ active = false, children, ...rest }: { active?: boolean } & ButtonProps) {\n const theme = useTheme()\n\n if (!active) {\n return (\n \n {{children}}\n \n )\n } else {\n return (\n \n {\n \n {children}\n \n \n \n \n \n \n }\n \n )\n }\n}\n","import { BigNumber } from '@ethersproject/bignumber'\nimport { SupportedChainId } from 'constants/chains'\n\n// add 20% (except on optimism)\nexport function calculateGasMargin(chainId: number, value: BigNumber): BigNumber {\n return chainId === SupportedChainId.OPTIMISM || chainId === SupportedChainId.OPTIMISTIC_KOVAN\n ? value\n : value.mul(BigNumber.from(10000 + 2000)).div(BigNumber.from(10000))\n}\n","import { createAction } from '@reduxjs/toolkit'\n\nexport interface SerializableTransactionReceipt {\n to: string\n from: string\n contractAddress: string\n transactionIndex: number\n blockHash: string\n transactionHash: string\n blockNumber: number\n status?: number\n}\n\nexport const addTransaction =\n createAction<{\n chainId: number\n hash: string\n from: string\n approval?: { tokenAddress: string; spender: string }\n claim?: { recipient: string }\n summary?: string\n }>('transactions/addTransaction')\nexport const clearAllTransactions = createAction<{ chainId: number }>('transactions/clearAllTransactions')\nexport const finalizeTransaction = createAction<{\n chainId: number\n hash: string\n receipt: SerializableTransactionReceipt\n}>('transactions/finalizeTransaction')\nexport const checkedTransaction = createAction<{\n chainId: number\n hash: string\n blockNumber: number\n}>('transactions/checkedTransaction')\n","import { TransactionResponse } from '@ethersproject/providers'\nimport { useCallback, useMemo } from 'react'\nimport { useAppDispatch, useAppSelector } from 'state/hooks'\n\nimport { useActiveWeb3React } from '../../hooks/web3'\nimport { addTransaction } from './actions'\nimport { TransactionDetails } from './reducer'\n\n// helper that can take a ethers library transaction response and add it to the list of transactions\nexport function useTransactionAdder(): (\n response: TransactionResponse,\n customData?: { summary?: string; approval?: { tokenAddress: string; spender: string }; claim?: { recipient: string } }\n) => void {\n const { chainId, account } = useActiveWeb3React()\n const dispatch = useAppDispatch()\n\n return useCallback(\n (\n response: TransactionResponse,\n {\n summary,\n approval,\n claim,\n }: { summary?: string; claim?: { recipient: string }; approval?: { tokenAddress: string; spender: string } } = {}\n ) => {\n if (!account) return\n if (!chainId) return\n\n const { hash } = response\n if (!hash) {\n throw Error('No transaction hash found.')\n }\n dispatch(addTransaction({ hash, from: account, chainId, approval, summary, claim }))\n },\n [dispatch, chainId, account]\n )\n}\n\n// returns all the transactions for the current chain\nexport function useAllTransactions(): { [txHash: string]: TransactionDetails } {\n const { chainId } = useActiveWeb3React()\n\n const state = useAppSelector((state) => state.transactions)\n\n return chainId ? state[chainId] ?? {} : {}\n}\n\nexport function useIsTransactionPending(transactionHash?: string): boolean {\n const transactions = useAllTransactions()\n\n if (!transactionHash || !transactions[transactionHash]) return false\n\n return !transactions[transactionHash].receipt\n}\n\n/**\n * Returns whether a transaction happened in the last day (86400 seconds * 1000 milliseconds / second)\n * @param tx to check for recency\n */\nexport function isTransactionRecent(tx: TransactionDetails): boolean {\n return new Date().getTime() - tx.addedTime < 86_400_000\n}\n\n// returns whether a token has a pending approval transaction\nexport function useHasPendingApproval(tokenAddress: string | undefined, spender: string | undefined): boolean {\n const allTransactions = useAllTransactions()\n return useMemo(\n () =>\n typeof tokenAddress === 'string' &&\n typeof spender === 'string' &&\n Object.keys(allTransactions).some((hash) => {\n const tx = allTransactions[hash]\n if (!tx) return false\n if (tx.receipt) {\n return false\n } else {\n const approval = tx.approval\n if (!approval) return false\n return approval.spender === spender && approval.tokenAddress === tokenAddress && isTransactionRecent(tx)\n }\n }),\n [allTransactions, spender, tokenAddress]\n )\n}\n\n// watch for submissions to claim\n// return null if not done loading, return undefined if not found\nexport function useUserHasSubmittedClaim(account?: string): {\n claimSubmitted: boolean\n claimTxn: TransactionDetails | undefined\n} {\n const allTransactions = useAllTransactions()\n\n // get the txn if it has been submitted\n const claimTxn = useMemo(() => {\n const txnIndex = Object.keys(allTransactions).find((hash) => {\n const tx = allTransactions[hash]\n return tx.claim && tx.claim.recipient === account\n })\n return txnIndex && allTransactions[txnIndex] ? allTransactions[txnIndex] : undefined\n }, [account, allTransactions])\n\n return { claimSubmitted: Boolean(claimTxn), claimTxn }\n}\n","import JSBI from 'jsbi'\nimport { CurrencyAmount, Token } from '@uniswap/sdk-core'\nimport { TransactionResponse } from '@ethersproject/providers'\nimport { useEffect, useState } from 'react'\nimport { UNI } from '../../constants/tokens'\nimport { useActiveWeb3React } from '../../hooks/web3'\nimport { useMerkleDistributorContract } from '../../hooks/useContract'\nimport { calculateGasMargin } from '../../utils/calculateGasMargin'\nimport { useSingleCallResult } from '../multicall/hooks'\nimport { isAddress } from '../../utils'\nimport { useTransactionAdder } from '../transactions/hooks'\n\ninterface UserClaimData {\n index: number\n amount: string\n proof: string[]\n flags?: {\n isSOCKS: boolean\n isLP: boolean\n isUser: boolean\n }\n}\n\ntype LastAddress = string\ntype ClaimAddressMapping = { [firstAddress: string]: LastAddress }\nlet FETCH_CLAIM_MAPPING_PROMISE: Promise | null = null\nfunction fetchClaimMapping(): Promise {\n return (\n FETCH_CLAIM_MAPPING_PROMISE ??\n (FETCH_CLAIM_MAPPING_PROMISE = fetch(\n `https://raw.githubusercontent.com/Uniswap/mrkl-drop-data-chunks/final/chunks/mapping.json`\n )\n .then((res) => res.json())\n .catch((error) => {\n console.error('Failed to get claims mapping', error)\n FETCH_CLAIM_MAPPING_PROMISE = null\n }))\n )\n}\n\nconst FETCH_CLAIM_FILE_PROMISES: { [startingAddress: string]: Promise<{ [address: string]: UserClaimData }> } = {}\nfunction fetchClaimFile(key: string): Promise<{ [address: string]: UserClaimData }> {\n return (\n FETCH_CLAIM_FILE_PROMISES[key] ??\n (FETCH_CLAIM_FILE_PROMISES[key] = fetch(\n `https://raw.githubusercontent.com/Uniswap/mrkl-drop-data-chunks/final/chunks/${key}.json`\n )\n .then((res) => res.json())\n .catch((error) => {\n console.error(`Failed to get claim file mapping for starting address ${key}`, error)\n delete FETCH_CLAIM_FILE_PROMISES[key]\n }))\n )\n}\n\nconst FETCH_CLAIM_PROMISES: { [key: string]: Promise } = {}\n// returns the claim for the given address, or null if not valid\nfunction fetchClaim(account: string): Promise {\n const formatted = isAddress(account)\n if (!formatted) return Promise.reject(new Error('Invalid address'))\n\n return (\n FETCH_CLAIM_PROMISES[account] ??\n (FETCH_CLAIM_PROMISES[account] = fetchClaimMapping()\n .then((mapping) => {\n const sorted = Object.keys(mapping).sort((a, b) => (a.toLowerCase() < b.toLowerCase() ? -1 : 1))\n\n for (const startingAddress of sorted) {\n const lastAddress = mapping[startingAddress]\n if (startingAddress.toLowerCase() <= formatted.toLowerCase()) {\n if (formatted.toLowerCase() <= lastAddress.toLowerCase()) {\n return startingAddress\n }\n } else {\n throw new Error(`Claim for ${formatted} was not found in partial search`)\n }\n }\n throw new Error(`Claim for ${formatted} was not found after searching all mappings`)\n })\n .then(fetchClaimFile)\n .then((result) => {\n if (result[formatted]) return result[formatted]\n throw new Error(`Claim for ${formatted} was not found in claim file!`)\n })\n .catch((error) => {\n console.debug('Claim fetch failed', error)\n throw error\n }))\n )\n}\n\n// parse distributorContract blob and detect if user has claim data\n// null means we know it does not\nexport function useUserClaimData(account: string | null | undefined): UserClaimData | null {\n const { chainId } = useActiveWeb3React()\n\n const [claimInfo, setClaimInfo] = useState<{ [account: string]: UserClaimData | null }>({})\n\n useEffect(() => {\n if (!account || chainId !== 1) return\n\n fetchClaim(account)\n .then((accountClaimInfo) =>\n setClaimInfo((claimInfo) => {\n return {\n ...claimInfo,\n [account]: accountClaimInfo,\n }\n })\n )\n .catch(() => {\n setClaimInfo((claimInfo) => {\n return {\n ...claimInfo,\n [account]: null,\n }\n })\n })\n }, [account, chainId])\n\n return account && chainId === 1 ? claimInfo[account] : null\n}\n\n// check if user is in blob and has not yet claimed UNI\nexport function useUserHasAvailableClaim(account: string | null | undefined): boolean {\n const userClaimData = useUserClaimData(account)\n const distributorContract = useMerkleDistributorContract()\n const isClaimedResult = useSingleCallResult(distributorContract, 'isClaimed', [userClaimData?.index])\n // user is in blob and contract marks as unclaimed\n return Boolean(userClaimData && !isClaimedResult.loading && isClaimedResult.result?.[0] === false)\n}\n\nexport function useUserUnclaimedAmount(account: string | null | undefined): CurrencyAmount | undefined {\n const { chainId } = useActiveWeb3React()\n const userClaimData = useUserClaimData(account)\n const canClaim = useUserHasAvailableClaim(account)\n\n const uni = chainId ? UNI[chainId] : undefined\n if (!uni) return undefined\n if (!canClaim || !userClaimData) {\n return CurrencyAmount.fromRawAmount(uni, JSBI.BigInt(0))\n }\n return CurrencyAmount.fromRawAmount(uni, JSBI.BigInt(userClaimData.amount))\n}\n\nexport function useClaimCallback(account: string | null | undefined): {\n claimCallback: () => Promise\n} {\n // get claim data for this account\n const { library, chainId } = useActiveWeb3React()\n const claimData = useUserClaimData(account)\n\n // used for popup summary\n const unclaimedAmount: CurrencyAmount | undefined = useUserUnclaimedAmount(account)\n const addTransaction = useTransactionAdder()\n const distributorContract = useMerkleDistributorContract()\n\n const claimCallback = async function () {\n if (!claimData || !account || !library || !chainId || !distributorContract) return\n\n const args = [claimData.index, account, claimData.amount, claimData.proof]\n\n return distributorContract.estimateGas['claim'](...args, {}).then((estimatedGasLimit) => {\n return distributorContract\n .claim(...args, { value: null, gasLimit: calculateGasMargin(chainId, estimatedGasLimit) })\n .then((response: TransactionResponse) => {\n addTransaction(response, {\n summary: `Claimed ${unclaimedAmount?.toSignificant(4)} UNI`,\n claim: { recipient: account },\n })\n return response.hash\n })\n })\n }\n\n return { claimCallback }\n}\n","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/blue-loader.249140da.svg\";","/**\n * Returns true if the string value is zero in hex\n * @param hexNumberString\n */\nexport default function isZero(hexNumberString: string) {\n return /^0x0*$/.test(hexNumberString)\n}\n","import { useEffect, useState } from 'react'\n\n// modified from https://usehooks.com/useDebounce/\nexport default function useDebounce(value: T, delay: number): T {\n const [debouncedValue, setDebouncedValue] = useState(value)\n\n useEffect(() => {\n // Update debounced value after delay\n const handler = setTimeout(() => {\n setDebouncedValue(value)\n }, delay)\n\n // Cancel the timeout if value changes (also on delay change or unmount)\n // This is how we prevent debounced value from updating if value is changed ...\n // .. within the delay period. Timeout gets cleared and restarted.\n return () => {\n clearTimeout(handler)\n }\n }, [value, delay])\n\n return debouncedValue\n}\n","import { namehash } from 'ethers/lib/utils'\nimport { useMemo } from 'react'\nimport { useSingleCallResult } from '../state/multicall/hooks'\nimport isZero from '../utils/isZero'\nimport { useENSRegistrarContract, useENSResolverContract } from './useContract'\nimport useDebounce from './useDebounce'\n\n/**\n * Does a lookup for an ENS name to find its address.\n */\nexport default function useENSAddress(ensName?: string | null): { loading: boolean; address: string | null } {\n const debouncedName = useDebounce(ensName, 200)\n const ensNodeArgument = useMemo(() => {\n if (!debouncedName) return [undefined]\n try {\n return debouncedName ? [namehash(debouncedName)] : [undefined]\n } catch (error) {\n return [undefined]\n }\n }, [debouncedName])\n const registrarContract = useENSRegistrarContract(false)\n const resolverAddress = useSingleCallResult(registrarContract, 'resolver', ensNodeArgument)\n const resolverAddressResult = resolverAddress.result?.[0]\n const resolverContract = useENSResolverContract(\n resolverAddressResult && !isZero(resolverAddressResult) ? resolverAddressResult : undefined,\n false\n )\n const addr = useSingleCallResult(resolverContract, 'addr', ensNodeArgument)\n\n const changed = debouncedName !== ensName\n return {\n address: changed ? null : addr.result?.[0] ?? null,\n loading: changed || resolverAddress.loading || addr.loading,\n }\n}\n","import { namehash } from 'ethers/lib/utils'\nimport { useMemo } from 'react'\nimport { useSingleCallResult } from '../state/multicall/hooks'\nimport { isAddress } from '../utils'\nimport isZero from '../utils/isZero'\nimport { useENSRegistrarContract, useENSResolverContract } from './useContract'\nimport useDebounce from './useDebounce'\n\n/**\n * Does a reverse lookup for an address to find its ENS name.\n * Note this is not the same as looking up an ENS name to find an address.\n */\nexport default function useENSName(address?: string): { ENSName: string | null; loading: boolean } {\n const debouncedAddress = useDebounce(address, 200)\n const ensNodeArgument = useMemo(() => {\n if (!debouncedAddress || !isAddress(debouncedAddress)) return [undefined]\n try {\n return debouncedAddress ? [namehash(`${debouncedAddress.toLowerCase().substr(2)}.addr.reverse`)] : [undefined]\n } catch (error) {\n return [undefined]\n }\n }, [debouncedAddress])\n const registrarContract = useENSRegistrarContract(false)\n const resolverAddress = useSingleCallResult(registrarContract, 'resolver', ensNodeArgument)\n const resolverAddressResult = resolverAddress.result?.[0]\n const resolverContract = useENSResolverContract(\n resolverAddressResult && !isZero(resolverAddressResult) ? resolverAddressResult : undefined,\n false\n )\n const name = useSingleCallResult(resolverContract, 'name', ensNodeArgument)\n\n const changed = debouncedAddress !== address\n return {\n ENSName: changed ? null : name.result?.[0] ?? null,\n loading: changed || resolverAddress.loading || name.loading,\n }\n}\n","import { isAddress } from '../utils'\nimport useENSAddress from './useENSAddress'\nimport useENSName from './useENSName'\n\n/**\n * Given a name or address, does a lookup to resolve to an address and name\n * @param nameOrAddress ENS name or address\n */\nexport default function useENS(nameOrAddress?: string | null): {\n loading: boolean\n address: string | null\n name: string | null\n} {\n const validated = isAddress(nameOrAddress)\n const reverseLookup = useENSName(validated ? validated : undefined)\n const lookup = useENSAddress(nameOrAddress)\n\n return {\n loading: reverseLookup.loading || lookup.loading,\n address: validated ? validated : lookup.address,\n name: reverseLookup.ENSName ? reverseLookup.ENSName : !validated && lookup.address ? nameOrAddress || null : null,\n }\n}\n","import { t, Trans } from '@lingui/macro'\nimport { useContext, useCallback, ReactNode } from 'react'\nimport styled, { ThemeContext } from 'styled-components/macro'\nimport useENS from '../../hooks/useENS'\nimport { useActiveWeb3React } from '../../hooks/web3'\nimport { ExternalLink, TYPE } from '../../theme'\nimport { ExplorerDataType, getExplorerLink } from '../../utils/getExplorerLink'\nimport { AutoColumn } from '../Column'\nimport { RowBetween } from '../Row'\n\nconst InputPanel = styled.div`\n ${({ theme }) => theme.flexColumnNoWrap}\n position: relative;\n border-radius: 1.25rem;\n background-color: ${({ theme }) => theme.bg1};\n z-index: 1;\n width: 100%;\n`\n\nconst ContainerRow = styled.div<{ error: boolean }>`\n display: flex;\n justify-content: center;\n align-items: center;\n border-radius: 1.25rem;\n border: 1px solid ${({ error, theme }) => (error ? theme.red1 : theme.bg2)};\n transition: border-color 300ms ${({ error }) => (error ? 'step-end' : 'step-start')},\n color 500ms ${({ error }) => (error ? 'step-end' : 'step-start')};\n background-color: ${({ theme }) => theme.bg1};\n`\n\nconst InputContainer = styled.div`\n flex: 1;\n padding: 1rem;\n`\n\nconst Input = styled.input<{ error?: boolean }>`\n font-size: 1.25rem;\n outline: none;\n border: none;\n flex: 1 1 auto;\n width: 0;\n background-color: ${({ theme }) => theme.bg1};\n transition: color 300ms ${({ error }) => (error ? 'step-end' : 'step-start')};\n color: ${({ error, theme }) => (error ? theme.red1 : theme.text1)};\n overflow: hidden;\n text-overflow: ellipsis;\n font-weight: 500;\n width: 100%;\n ::placeholder {\n color: ${({ theme }) => theme.text4};\n }\n padding: 0px;\n -webkit-appearance: textfield;\n\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n\n ::-webkit-outer-spin-button,\n ::-webkit-inner-spin-button {\n -webkit-appearance: none;\n }\n\n ::placeholder {\n color: ${({ theme }) => theme.text4};\n }\n`\n\nexport default function AddressInputPanel({\n id,\n className = 'recipient-address-input',\n label,\n placeholder,\n value,\n onChange,\n}: {\n id?: string\n className?: string\n label?: ReactNode\n placeholder?: string\n // the typed string value\n value: string\n // triggers whenever the typed value changes\n onChange: (value: string) => void\n}) {\n const { chainId } = useActiveWeb3React()\n const theme = useContext(ThemeContext)\n\n const { address, loading, name } = useENS(value)\n\n const handleInput = useCallback(\n (event) => {\n const input = event.target.value\n const withoutSpaces = input.replace(/\\s+/g, '')\n onChange(withoutSpaces)\n },\n [onChange]\n )\n\n const error = Boolean(value.length > 0 && !loading && !address)\n\n return (\n \n \n \n \n \n \n {label ?? Recipient}\n \n {address && chainId && (\n \n (View on Explorer)\n \n )}\n \n \n \n \n \n \n )\n}\n","import { useEffect, useState } from 'react'\n\nconst isClient = typeof window === 'object'\n\nfunction getSize() {\n return {\n width: isClient ? window.innerWidth : undefined,\n height: isClient ? window.innerHeight : undefined,\n }\n}\n\n// https://usehooks.com/useWindowSize/\nexport function useWindowSize() {\n const [windowSize, setWindowSize] = useState(getSize)\n\n useEffect(() => {\n function handleResize() {\n setWindowSize(getSize())\n }\n\n if (isClient) {\n window.addEventListener('resize', handleResize)\n return () => {\n window.removeEventListener('resize', handleResize)\n }\n }\n return undefined\n }, [])\n\n return windowSize\n}\n","import ReactConfetti from 'react-confetti'\nimport { useWindowSize } from '../../hooks/useWindowSize'\n\n// eslint-disable-next-line react/prop-types\nexport default function Confetti({ start, variant }: { start: boolean; variant?: string }) {\n const { width, height } = useWindowSize()\n\n const _variant = variant ? variant : height && width && height > 1.5 * width ? 'bottom' : variant\n\n return start && width && height ? (\n \n ) : null\n}\n","import { useState } from 'react'\nimport { ExplorerDataType, getExplorerLink } from '../../utils/getExplorerLink'\nimport Modal from '../Modal'\nimport { AutoColumn, ColumnCenter } from '../Column'\nimport styled from 'styled-components/macro'\nimport { DataCard, CardSection, Break } from '../earn/styled'\nimport { RowBetween } from '../Row'\nimport { TYPE, ExternalLink, CloseIcon, CustomLightSpinner, UniTokenAnimated } from '../../theme'\nimport { ButtonPrimary } from '../Button'\nimport { useClaimCallback, useUserUnclaimedAmount, useUserHasAvailableClaim } from '../../state/claim/hooks'\nimport tokenLogo from '../../assets/images/token-logo.png'\nimport Circle from '../../assets/images/blue-loader.svg'\nimport { Text } from 'rebass'\nimport AddressInputPanel from '../AddressInputPanel'\nimport useENS from '../../hooks/useENS'\nimport { useActiveWeb3React } from '../../hooks/web3'\nimport { isAddress } from 'ethers/lib/utils'\nimport Confetti from '../Confetti'\nimport { CardNoise, CardBGImage, CardBGImageSmaller } from '../earn/styled'\nimport { useIsTransactionPending } from '../../state/transactions/hooks'\nimport { CurrencyAmount, Token } from '@uniswap/sdk-core'\nimport { shortenAddress } from '../../utils'\nimport { Trans } from '@lingui/macro'\n\nconst ContentWrapper = styled(AutoColumn)`\n width: 100%;\n`\n\nconst ModalUpper = styled(DataCard)`\n box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.1);\n background: radial-gradient(76.02% 75.41% at 1.84% 0%, #ff007a 0%, #021d43 100%);\n`\n\nconst ConfirmOrLoadingWrapper = styled.div<{ activeBG: boolean }>`\n width: 100%;\n padding: 24px;\n position: relative;\n background: ${({ activeBG }) =>\n activeBG &&\n 'radial-gradient(76.02% 75.41% at 1.84% 0%, rgba(255, 0, 122, 0.2) 0%, rgba(33, 114, 229, 0.2) 100%), #FFFFFF;'};\n`\n\nconst ConfirmedIcon = styled(ColumnCenter)`\n padding: 60px 0;\n`\n\nexport default function AddressClaimModal({ isOpen, onDismiss }: { isOpen: boolean; onDismiss: () => void }) {\n const { chainId } = useActiveWeb3React()\n\n // state for smart contract input\n const [typed, setTyped] = useState('')\n function handleRecipientType(val: string) {\n setTyped(val)\n }\n\n // monitor for third party recipient of claim\n const { address: parsedAddress } = useENS(typed)\n\n // used for UI loading states\n const [attempting, setAttempting] = useState(false)\n\n // monitor the status of the claim from contracts and txns\n const { claimCallback } = useClaimCallback(parsedAddress)\n const unclaimedAmount: CurrencyAmount | undefined = useUserUnclaimedAmount(parsedAddress)\n\n // check if the user has something available\n const hasAvailableClaim = useUserHasAvailableClaim(parsedAddress)\n\n const [hash, setHash] = useState()\n\n // monitor the status of the claim from contracts and txns\n const claimPending = useIsTransactionPending(hash ?? '')\n const claimConfirmed = hash && !claimPending\n\n // use the hash to monitor this txn\n\n function onClaim() {\n setAttempting(true)\n claimCallback()\n .then((hash) => {\n setHash(hash)\n })\n // reset modal and log error\n .catch((error) => {\n setAttempting(false)\n console.log(error)\n })\n }\n\n function wrappedOnDismiss() {\n setAttempting(false)\n setHash(undefined)\n setTyped('')\n onDismiss()\n }\n\n return (\n \n \n {!attempting && (\n \n \n \n \n \n \n \n Claim UNI Token\n \n \n \n \n {unclaimedAmount?.toFixed(0, { groupSeparator: ',' } ?? '-')} UNI\n \n \n \n \n \n \n \n Enter an address to trigger a UNI claim. If the address has any claimable UNI it will be sent to them on\n submission.\n \n \n \n {parsedAddress && !hasAvailableClaim && (\n \n Address has no available claim\n \n )}\n \n Claim UNI\n
\n \n \n )}\n {(attempting || claimConfirmed) && (\n \n \n \n \n
\n \n \n \n {!claimConfirmed ? (\n \n ) : (\n \n )}\n \n \n \n \n {claimConfirmed ? Claimed : Claiming}\n \n {!claimConfirmed && (\n \n {unclaimedAmount?.toFixed(0, { groupSeparator: ',' } ?? '-')} UNI\n \n )}\n {parsedAddress && (\n \n for {shortenAddress(parsedAddress)}\n \n )}\n \n {claimConfirmed && (\n <>\n \n \n 🎉{' '}\n \n Welcome to team Unicorn :) \n \n 🎉\n \n \n \n )}\n {attempting && !hash && (\n \n Confirm this transaction in your wallet\n \n )}\n {attempting && hash && !claimConfirmed && chainId && hash && (\n \n View transaction on Explorer\n \n )}\n \n \n )}\n \n )\n}\n","import { createReducer, nanoid } from '@reduxjs/toolkit'\nimport {\n addPopup,\n PopupContent,\n removePopup,\n updateBlockNumber,\n ApplicationModal,\n setOpenModal,\n updateChainId,\n} from './actions'\n\ntype PopupList = Array<{ key: string; show: boolean; content: PopupContent; removeAfterMs: number | null }>\n\nexport interface ApplicationState {\n // used by RTK-Query to build dynamic subgraph urls\n readonly chainId: number | null\n readonly blockNumber: { readonly [chainId: number]: number }\n readonly popupList: PopupList\n readonly openModal: ApplicationModal | null\n}\n\nconst initialState: ApplicationState = {\n chainId: null,\n blockNumber: {},\n popupList: [],\n openModal: null,\n}\n\nexport default createReducer(initialState, (builder) =>\n builder\n .addCase(updateChainId, (state, action) => {\n const { chainId } = action.payload\n state.chainId = chainId\n })\n .addCase(updateBlockNumber, (state, action) => {\n const { chainId, blockNumber } = action.payload\n if (typeof state.blockNumber[chainId] !== 'number') {\n state.blockNumber[chainId] = blockNumber\n } else {\n state.blockNumber[chainId] = Math.max(blockNumber, state.blockNumber[chainId])\n }\n })\n .addCase(setOpenModal, (state, action) => {\n state.openModal = action.payload\n })\n .addCase(addPopup, (state, { payload: { content, key, removeAfterMs = 25000 } }) => {\n state.popupList = (key ? state.popupList.filter((popup) => popup.key !== key) : state.popupList).concat([\n {\n key: key || nanoid(),\n show: true,\n content,\n removeAfterMs,\n },\n ])\n })\n .addCase(removePopup, (state, { payload: { key } }) => {\n state.popupList.forEach((p) => {\n if (p.key === key) {\n p.show = false\n }\n })\n })\n)\n","import { createAction } from '@reduxjs/toolkit'\n\n// fired once when the app reloads but before the app renders\n// allows any updates to be applied to store data loaded from localStorage\nexport const updateVersion = createAction('global/updateVersion')\n","import { DEFAULT_DEADLINE_FROM_NOW } from '../../constants/misc'\nimport { createReducer } from '@reduxjs/toolkit'\nimport { updateVersion } from '../global/actions'\nimport {\n addSerializedPair,\n addSerializedToken,\n removeSerializedPair,\n removeSerializedToken,\n SerializedPair,\n SerializedToken,\n updateMatchesDarkMode,\n updateUserDarkMode,\n updateUserExpertMode,\n updateUserSlippageTolerance,\n updateUserDeadline,\n updateUserSingleHopOnly,\n updateHideClosedPositions,\n updateUserLocale,\n updateArbitrumAlphaAcknowledged,\n} from './actions'\nimport { SupportedLocale } from 'constants/locales'\n\nconst currentTimestamp = () => new Date().getTime()\n\nexport interface UserState {\n arbitrumAlphaAcknowledged: boolean\n\n // the timestamp of the last updateVersion action\n lastUpdateVersionTimestamp?: number\n\n userDarkMode: boolean | null // the user's choice for dark mode or light mode\n matchesDarkMode: boolean // whether the dark mode media query matches\n\n userLocale: SupportedLocale | null\n\n userExpertMode: boolean\n\n userSingleHopOnly: boolean // only allow swaps on direct pairs\n\n // hides closed (inactive) positions across the app\n userHideClosedPositions: boolean\n\n // user defined slippage tolerance in bips, used in all txns\n userSlippageTolerance: number | 'auto'\n userSlippageToleranceHasBeenMigratedToAuto: boolean // temporary flag for migration status\n\n // deadline set by user in minutes, used in all txns\n userDeadline: number\n\n tokens: {\n [chainId: number]: {\n [address: string]: SerializedToken\n }\n }\n\n pairs: {\n [chainId: number]: {\n // keyed by token0Address:token1Address\n [key: string]: SerializedPair\n }\n }\n\n timestamp: number\n URLWarningVisible: boolean\n}\n\nfunction pairKey(token0Address: string, token1Address: string) {\n return `${token0Address};${token1Address}`\n}\n\nexport const initialState: UserState = {\n arbitrumAlphaAcknowledged: false,\n userDarkMode: null,\n matchesDarkMode: false,\n userExpertMode: false,\n userLocale: null,\n userSingleHopOnly: false,\n userHideClosedPositions: false,\n userSlippageTolerance: 'auto',\n userSlippageToleranceHasBeenMigratedToAuto: true,\n userDeadline: DEFAULT_DEADLINE_FROM_NOW,\n tokens: {},\n pairs: {},\n timestamp: currentTimestamp(),\n URLWarningVisible: true,\n}\n\nexport default createReducer(initialState, (builder) =>\n builder\n .addCase(updateVersion, (state) => {\n // slippage isnt being tracked in local storage, reset to default\n // noinspection SuspiciousTypeOfGuard\n if (\n typeof state.userSlippageTolerance !== 'number' ||\n !Number.isInteger(state.userSlippageTolerance) ||\n state.userSlippageTolerance < 0 ||\n state.userSlippageTolerance > 5000\n ) {\n state.userSlippageTolerance = 'auto'\n } else {\n if (\n !state.userSlippageToleranceHasBeenMigratedToAuto &&\n [10, 50, 100].indexOf(state.userSlippageTolerance) !== -1\n ) {\n state.userSlippageTolerance = 'auto'\n state.userSlippageToleranceHasBeenMigratedToAuto = true\n }\n }\n\n // deadline isnt being tracked in local storage, reset to default\n // noinspection SuspiciousTypeOfGuard\n if (\n typeof state.userDeadline !== 'number' ||\n !Number.isInteger(state.userDeadline) ||\n state.userDeadline < 60 ||\n state.userDeadline > 180 * 60\n ) {\n state.userDeadline = DEFAULT_DEADLINE_FROM_NOW\n }\n\n state.lastUpdateVersionTimestamp = currentTimestamp()\n })\n .addCase(updateUserDarkMode, (state, action) => {\n state.userDarkMode = action.payload.userDarkMode\n state.timestamp = currentTimestamp()\n })\n .addCase(updateMatchesDarkMode, (state, action) => {\n state.matchesDarkMode = action.payload.matchesDarkMode\n state.timestamp = currentTimestamp()\n })\n .addCase(updateArbitrumAlphaAcknowledged, (state, action) => {\n state.arbitrumAlphaAcknowledged = action.payload.arbitrumAlphaAcknowledged\n })\n .addCase(updateUserExpertMode, (state, action) => {\n state.userExpertMode = action.payload.userExpertMode\n state.timestamp = currentTimestamp()\n })\n .addCase(updateUserLocale, (state, action) => {\n state.userLocale = action.payload.userLocale\n state.timestamp = currentTimestamp()\n })\n .addCase(updateUserSlippageTolerance, (state, action) => {\n state.userSlippageTolerance = action.payload.userSlippageTolerance\n state.timestamp = currentTimestamp()\n })\n .addCase(updateUserDeadline, (state, action) => {\n state.userDeadline = action.payload.userDeadline\n state.timestamp = currentTimestamp()\n })\n .addCase(updateUserSingleHopOnly, (state, action) => {\n state.userSingleHopOnly = action.payload.userSingleHopOnly\n })\n .addCase(updateHideClosedPositions, (state, action) => {\n state.userHideClosedPositions = action.payload.userHideClosedPositions\n })\n .addCase(addSerializedToken, (state, { payload: { serializedToken } }) => {\n if (!state.tokens) {\n state.tokens = {}\n }\n state.tokens[serializedToken.chainId] = state.tokens[serializedToken.chainId] || {}\n state.tokens[serializedToken.chainId][serializedToken.address] = serializedToken\n state.timestamp = currentTimestamp()\n })\n .addCase(removeSerializedToken, (state, { payload: { address, chainId } }) => {\n if (!state.tokens) {\n state.tokens = {}\n }\n state.tokens[chainId] = state.tokens[chainId] || {}\n delete state.tokens[chainId][address]\n state.timestamp = currentTimestamp()\n })\n .addCase(addSerializedPair, (state, { payload: { serializedPair } }) => {\n if (\n serializedPair.token0.chainId === serializedPair.token1.chainId &&\n serializedPair.token0.address !== serializedPair.token1.address\n ) {\n const chainId = serializedPair.token0.chainId\n state.pairs[chainId] = state.pairs[chainId] || {}\n state.pairs[chainId][pairKey(serializedPair.token0.address, serializedPair.token1.address)] = serializedPair\n }\n state.timestamp = currentTimestamp()\n })\n .addCase(removeSerializedPair, (state, { payload: { chainId, tokenAAddress, tokenBAddress } }) => {\n if (state.pairs[chainId]) {\n // just delete both keys if either exists\n delete state.pairs[chainId][pairKey(tokenAAddress, tokenBAddress)]\n delete state.pairs[chainId][pairKey(tokenBAddress, tokenAAddress)]\n }\n state.timestamp = currentTimestamp()\n })\n)\n","import { createAction } from '@reduxjs/toolkit'\n\nexport enum Field {\n INPUT = 'INPUT',\n OUTPUT = 'OUTPUT',\n}\n\nexport const selectCurrency = createAction<{ field: Field; currencyId: string }>('swap/selectCurrency')\nexport const switchCurrencies = createAction('swap/switchCurrencies')\nexport const typeInput = createAction<{ field: Field; typedValue: string }>('swap/typeInput')\nexport const replaceSwapState =\n createAction<{\n field: Field\n typedValue: string\n inputCurrencyId?: string\n outputCurrencyId?: string\n recipient: string | null\n }>('swap/replaceSwapState')\nexport const setRecipient = createAction<{ recipient: string | null }>('swap/setRecipient')\n","import { createReducer } from '@reduxjs/toolkit'\nimport {\n addTransaction,\n checkedTransaction,\n clearAllTransactions,\n finalizeTransaction,\n SerializableTransactionReceipt,\n} from './actions'\n\nconst now = () => new Date().getTime()\n\nexport interface TransactionDetails {\n hash: string\n approval?: { tokenAddress: string; spender: string }\n summary?: string\n claim?: { recipient: string }\n receipt?: SerializableTransactionReceipt\n lastCheckedBlockNumber?: number\n addedTime: number\n confirmedTime?: number\n from: string\n}\n\nexport interface TransactionState {\n [chainId: number]: {\n [txHash: string]: TransactionDetails\n }\n}\n\nexport const initialState: TransactionState = {}\n\nexport default createReducer(initialState, (builder) =>\n builder\n .addCase(addTransaction, (transactions, { payload: { chainId, from, hash, approval, summary, claim } }) => {\n if (transactions[chainId]?.[hash]) {\n throw Error('Attempted to add existing transaction.')\n }\n const txs = transactions[chainId] ?? {}\n txs[hash] = { hash, approval, summary, claim, from, addedTime: now() }\n transactions[chainId] = txs\n })\n .addCase(clearAllTransactions, (transactions, { payload: { chainId } }) => {\n if (!transactions[chainId]) return\n transactions[chainId] = {}\n })\n .addCase(checkedTransaction, (transactions, { payload: { chainId, hash, blockNumber } }) => {\n const tx = transactions[chainId]?.[hash]\n if (!tx) {\n return\n }\n if (!tx.lastCheckedBlockNumber) {\n tx.lastCheckedBlockNumber = blockNumber\n } else {\n tx.lastCheckedBlockNumber = Math.max(blockNumber, tx.lastCheckedBlockNumber)\n }\n })\n .addCase(finalizeTransaction, (transactions, { payload: { hash, chainId, receipt } }) => {\n const tx = transactions[chainId]?.[hash]\n if (!tx) {\n return\n }\n tx.receipt = receipt\n tx.confirmedTime = now()\n })\n)\n","import { createAction } from '@reduxjs/toolkit'\n\nexport enum Field {\n CURRENCY_A = 'CURRENCY_A',\n CURRENCY_B = 'CURRENCY_B',\n}\n\nexport const typeInput = createAction<{ field: Field; typedValue: string; noLiquidity: boolean }>('mint/typeInputMint')\nexport const resetMintState = createAction('mint/resetMintState')\n","import { createReducer } from '@reduxjs/toolkit'\nimport { Field, replaceSwapState, selectCurrency, setRecipient, switchCurrencies, typeInput } from './actions'\n\nexport interface SwapState {\n readonly independentField: Field\n readonly typedValue: string\n readonly [Field.INPUT]: {\n readonly currencyId: string | undefined\n }\n readonly [Field.OUTPUT]: {\n readonly currencyId: string | undefined\n }\n // the typed recipient address or ENS name, or null if swap should go to sender\n readonly recipient: string | null\n}\n\nconst initialState: SwapState = {\n independentField: Field.INPUT,\n typedValue: '',\n [Field.INPUT]: {\n currencyId: '',\n },\n [Field.OUTPUT]: {\n currencyId: '',\n },\n recipient: null,\n}\n\nexport default createReducer(initialState, (builder) =>\n builder\n .addCase(\n replaceSwapState,\n (state, { payload: { typedValue, recipient, field, inputCurrencyId, outputCurrencyId } }) => {\n return {\n [Field.INPUT]: {\n currencyId: inputCurrencyId,\n },\n [Field.OUTPUT]: {\n currencyId: outputCurrencyId,\n },\n independentField: field,\n typedValue: typedValue,\n recipient,\n }\n }\n )\n .addCase(selectCurrency, (state, { payload: { currencyId, field } }) => {\n const otherField = field === Field.INPUT ? Field.OUTPUT : Field.INPUT\n if (currencyId === state[otherField].currencyId) {\n // the case where we have to swap the order\n return {\n ...state,\n independentField: state.independentField === Field.INPUT ? Field.OUTPUT : Field.INPUT,\n [field]: { currencyId: currencyId },\n [otherField]: { currencyId: state[field].currencyId },\n }\n } else {\n // the normal case\n return {\n ...state,\n [field]: { currencyId: currencyId },\n }\n }\n })\n .addCase(switchCurrencies, (state) => {\n return {\n ...state,\n independentField: state.independentField === Field.INPUT ? Field.OUTPUT : Field.INPUT,\n [Field.INPUT]: { currencyId: state[Field.OUTPUT].currencyId },\n [Field.OUTPUT]: { currencyId: state[Field.INPUT].currencyId },\n }\n })\n .addCase(typeInput, (state, { payload: { field, typedValue } }) => {\n return {\n ...state,\n independentField: field,\n typedValue,\n }\n })\n .addCase(setRecipient, (state, { payload: { recipient } }) => {\n state.recipient = recipient\n })\n)\n","import { createAction } from '@reduxjs/toolkit'\n\nexport enum Field {\n CURRENCY_A = 'CURRENCY_A',\n CURRENCY_B = 'CURRENCY_B',\n}\n\nexport enum Bound {\n LOWER = 'LOWER',\n UPPER = 'UPPER',\n}\n\nexport const typeInput =\n createAction<{ field: Field; typedValue: string; noLiquidity: boolean }>('mintV3/typeInputMint')\nexport const typeStartPriceInput = createAction<{ typedValue: string }>('mintV3/typeStartPriceInput')\nexport const typeLeftRangeInput = createAction<{ typedValue: string }>('mintV3/typeLeftRangeInput')\nexport const typeRightRangeInput = createAction<{ typedValue: string }>('mintV3/typeRightRangeInput')\nexport const resetMintState = createAction('mintV3/resetMintState')\nexport const setFullRange = createAction('mintV3/setFullRange')\n","import { createReducer } from '@reduxjs/toolkit'\nimport { Field, resetMintState, typeInput } from './actions'\n\nexport interface MintState {\n readonly independentField: Field\n readonly typedValue: string\n readonly otherTypedValue: string // for the case when there's no liquidity\n readonly startPriceTypedValue: string // for the case when there's no liquidity\n readonly leftRangeTypedValue: string\n readonly rightRangeTypedValue: string\n}\n\nexport const initialState: MintState = {\n independentField: Field.CURRENCY_A,\n typedValue: '',\n otherTypedValue: '',\n startPriceTypedValue: '',\n leftRangeTypedValue: '',\n rightRangeTypedValue: '',\n}\n\nexport default createReducer(initialState, (builder) =>\n builder\n .addCase(resetMintState, () => initialState)\n .addCase(typeInput, (state, { payload: { field, typedValue, noLiquidity } }) => {\n if (noLiquidity) {\n // they're typing into the field they've last typed in\n if (field === state.independentField) {\n return {\n ...state,\n independentField: field,\n typedValue,\n }\n }\n // they're typing into a new field, store the other value\n else {\n return {\n ...state,\n independentField: field,\n typedValue,\n otherTypedValue: state.typedValue,\n }\n }\n } else {\n return {\n ...state,\n independentField: field,\n typedValue,\n otherTypedValue: '',\n }\n }\n })\n)\n","import { createAction } from '@reduxjs/toolkit'\n\nexport enum Field {\n LIQUIDITY_PERCENT = 'LIQUIDITY_PERCENT',\n LIQUIDITY = 'LIQUIDITY',\n CURRENCY_A = 'CURRENCY_A',\n CURRENCY_B = 'CURRENCY_B',\n}\n\nexport const typeInput = createAction<{ field: Field; typedValue: string }>('burn/typeInputBurn')\n","import { createReducer } from '@reduxjs/toolkit'\nimport {\n Field,\n resetMintState,\n setFullRange,\n typeInput,\n typeStartPriceInput,\n typeLeftRangeInput,\n typeRightRangeInput,\n} from './actions'\n\nexport type FullRange = true\n\ninterface MintState {\n readonly independentField: Field\n readonly typedValue: string\n readonly startPriceTypedValue: string // for the case when there's no liquidity\n readonly leftRangeTypedValue: string | FullRange\n readonly rightRangeTypedValue: string | FullRange\n}\n\nconst initialState: MintState = {\n independentField: Field.CURRENCY_A,\n typedValue: '',\n startPriceTypedValue: '',\n leftRangeTypedValue: '',\n rightRangeTypedValue: '',\n}\n\nexport default createReducer(initialState, (builder) =>\n builder\n .addCase(resetMintState, () => initialState)\n .addCase(setFullRange, (state) => {\n return {\n ...state,\n leftRangeTypedValue: true,\n rightRangeTypedValue: true,\n }\n })\n .addCase(typeStartPriceInput, (state, { payload: { typedValue } }) => {\n return {\n ...state,\n startPriceTypedValue: typedValue,\n }\n })\n .addCase(typeLeftRangeInput, (state, { payload: { typedValue } }) => {\n return {\n ...state,\n leftRangeTypedValue: typedValue,\n }\n })\n .addCase(typeRightRangeInput, (state, { payload: { typedValue } }) => {\n return {\n ...state,\n rightRangeTypedValue: typedValue,\n }\n })\n .addCase(typeInput, (state, { payload: { field, typedValue, noLiquidity } }) => {\n if (noLiquidity) {\n // they're typing into the field they've last typed in\n if (field === state.independentField) {\n return {\n ...state,\n independentField: field,\n typedValue,\n }\n }\n // they're typing into a new field, store the other value\n else {\n return {\n ...state,\n independentField: field,\n typedValue,\n }\n }\n } else {\n return {\n ...state,\n independentField: field,\n typedValue,\n }\n }\n })\n)\n","import { ActionCreatorWithPayload, createAction } from '@reduxjs/toolkit'\nimport { TokenList } from '@uniswap/token-lists'\n\nexport const fetchTokenList: Readonly<{\n pending: ActionCreatorWithPayload<{ url: string; requestId: string }>\n fulfilled: ActionCreatorWithPayload<{ url: string; tokenList: TokenList; requestId: string }>\n rejected: ActionCreatorWithPayload<{ url: string; errorMessage: string; requestId: string }>\n}> = {\n pending: createAction('lists/fetchTokenList/pending'),\n fulfilled: createAction('lists/fetchTokenList/fulfilled'),\n rejected: createAction('lists/fetchTokenList/rejected'),\n}\n// add and remove from list options\nexport const addList = createAction('lists/addList')\nexport const removeList = createAction('lists/removeList')\n\n// select which lists to search across from loaded lists\nexport const enableList = createAction('lists/enableList')\nexport const disableList = createAction('lists/disableList')\n\n// versioning\nexport const acceptListUpdate = createAction('lists/acceptListUpdate')\n","import { DEFAULT_ACTIVE_LIST_URLS, UNSUPPORTED_LIST_URLS } from './../../constants/lists'\nimport { createReducer } from '@reduxjs/toolkit'\nimport { getVersionUpgrade, VersionUpgrade } from '@uniswap/token-lists'\nimport { TokenList } from '@uniswap/token-lists/dist/types'\nimport { DEFAULT_LIST_OF_LISTS } from '../../constants/lists'\nimport { updateVersion } from '../global/actions'\nimport { acceptListUpdate, addList, fetchTokenList, removeList, enableList, disableList } from './actions'\n\nexport interface ListsState {\n readonly byUrl: {\n readonly [url: string]: {\n readonly current: TokenList | null\n readonly pendingUpdate: TokenList | null\n readonly loadingRequestId: string | null\n readonly error: string | null\n }\n }\n // this contains the default list of lists from the last time the updateVersion was called, i.e. the app was reloaded\n readonly lastInitializedDefaultListOfLists?: string[]\n\n // currently active lists\n readonly activeListUrls: string[] | undefined\n}\n\ntype ListState = ListsState['byUrl'][string]\n\nconst NEW_LIST_STATE: ListState = {\n error: null,\n current: null,\n loadingRequestId: null,\n pendingUpdate: null,\n}\n\ntype Mutable = { -readonly [P in keyof T]: T[P] extends ReadonlyArray ? U[] : T[P] }\n\nconst initialState: ListsState = {\n lastInitializedDefaultListOfLists: DEFAULT_LIST_OF_LISTS,\n byUrl: {\n ...DEFAULT_LIST_OF_LISTS.concat(UNSUPPORTED_LIST_URLS).reduce>((memo, listUrl) => {\n memo[listUrl] = NEW_LIST_STATE\n return memo\n }, {}),\n },\n activeListUrls: DEFAULT_ACTIVE_LIST_URLS,\n}\n\nexport default createReducer(initialState, (builder) =>\n builder\n .addCase(fetchTokenList.pending, (state, { payload: { requestId, url } }) => {\n state.byUrl[url] = {\n current: null,\n pendingUpdate: null,\n ...state.byUrl[url],\n loadingRequestId: requestId,\n error: null,\n }\n })\n .addCase(fetchTokenList.fulfilled, (state, { payload: { requestId, tokenList, url } }) => {\n const current = state.byUrl[url]?.current\n const loadingRequestId = state.byUrl[url]?.loadingRequestId\n\n // no-op if update does nothing\n if (current) {\n const upgradeType = getVersionUpgrade(current.version, tokenList.version)\n\n if (upgradeType === VersionUpgrade.NONE) return\n if (loadingRequestId === null || loadingRequestId === requestId) {\n state.byUrl[url] = {\n ...state.byUrl[url],\n loadingRequestId: null,\n error: null,\n current: current,\n pendingUpdate: tokenList,\n }\n }\n } else {\n // activate if on default active\n if (DEFAULT_ACTIVE_LIST_URLS.includes(url)) {\n state.activeListUrls?.push(url)\n }\n\n state.byUrl[url] = {\n ...state.byUrl[url],\n loadingRequestId: null,\n error: null,\n current: tokenList,\n pendingUpdate: null,\n }\n }\n })\n .addCase(fetchTokenList.rejected, (state, { payload: { url, requestId, errorMessage } }) => {\n if (state.byUrl[url]?.loadingRequestId !== requestId) {\n // no-op since it's not the latest request\n return\n }\n\n state.byUrl[url] = {\n ...state.byUrl[url],\n loadingRequestId: null,\n error: errorMessage,\n current: null,\n pendingUpdate: null,\n }\n })\n .addCase(addList, (state, { payload: url }) => {\n if (!state.byUrl[url]) {\n state.byUrl[url] = NEW_LIST_STATE\n }\n })\n .addCase(removeList, (state, { payload: url }) => {\n if (state.byUrl[url]) {\n delete state.byUrl[url]\n }\n // remove list from active urls if needed\n if (state.activeListUrls && state.activeListUrls.includes(url)) {\n state.activeListUrls = state.activeListUrls.filter((u) => u !== url)\n }\n })\n .addCase(enableList, (state, { payload: url }) => {\n if (!state.byUrl[url]) {\n state.byUrl[url] = NEW_LIST_STATE\n }\n\n if (state.activeListUrls && !state.activeListUrls.includes(url)) {\n state.activeListUrls.push(url)\n }\n\n if (!state.activeListUrls) {\n state.activeListUrls = [url]\n }\n })\n .addCase(disableList, (state, { payload: url }) => {\n if (state.activeListUrls && state.activeListUrls.includes(url)) {\n state.activeListUrls = state.activeListUrls.filter((u) => u !== url)\n }\n })\n .addCase(acceptListUpdate, (state, { payload: url }) => {\n if (!state.byUrl[url]?.pendingUpdate) {\n throw new Error('accept list update called without pending update')\n }\n state.byUrl[url] = {\n ...state.byUrl[url],\n pendingUpdate: null,\n current: state.byUrl[url].pendingUpdate,\n }\n })\n .addCase(updateVersion, (state) => {\n // state loaded from localStorage, but new lists have never been initialized\n if (!state.lastInitializedDefaultListOfLists) {\n state.byUrl = initialState.byUrl\n state.activeListUrls = initialState.activeListUrls\n } else if (state.lastInitializedDefaultListOfLists) {\n const lastInitializedSet = state.lastInitializedDefaultListOfLists.reduce>(\n (s, l) => s.add(l),\n new Set()\n )\n const newListOfListsSet = DEFAULT_LIST_OF_LISTS.reduce>((s, l) => s.add(l), new Set())\n\n DEFAULT_LIST_OF_LISTS.forEach((listUrl) => {\n if (!lastInitializedSet.has(listUrl)) {\n state.byUrl[listUrl] = NEW_LIST_STATE\n }\n })\n\n state.lastInitializedDefaultListOfLists.forEach((listUrl) => {\n if (!newListOfListsSet.has(listUrl)) {\n delete state.byUrl[listUrl]\n }\n })\n }\n\n state.lastInitializedDefaultListOfLists = DEFAULT_LIST_OF_LISTS\n\n // if no active lists, activate defaults\n if (!state.activeListUrls) {\n state.activeListUrls = DEFAULT_ACTIVE_LIST_URLS\n\n // for each list on default list, initialize if needed\n DEFAULT_ACTIVE_LIST_URLS.map((listUrl: string) => {\n if (!state.byUrl[listUrl]) {\n state.byUrl[listUrl] = NEW_LIST_STATE\n }\n return true\n })\n }\n })\n)\n","import { createReducer } from '@reduxjs/toolkit'\nimport { Field, typeInput } from './actions'\n\ninterface BurnState {\n readonly independentField: Field\n readonly typedValue: string\n}\n\nconst initialState: BurnState = {\n independentField: Field.LIQUIDITY_PERCENT,\n typedValue: '0',\n}\n\nexport default createReducer(initialState, (builder) =>\n builder.addCase(typeInput, (state, { payload: { field, typedValue } }) => {\n return {\n ...state,\n independentField: field,\n typedValue,\n }\n })\n)\n","import { createAction } from '@reduxjs/toolkit'\n\nexport const selectPercent = createAction<{ percent: number }>('burnV3/selectBurnPercent')\n","import { createReducer } from '@reduxjs/toolkit'\nimport { selectPercent } from './actions'\n\ninterface BurnV3State {\n readonly percent: number\n}\n\nconst initialState: BurnV3State = {\n percent: 0,\n}\n\nexport default createReducer(initialState, (builder) =>\n builder.addCase(selectPercent, (state, { payload: { percent } }) => {\n return {\n ...state,\n percent,\n }\n })\n)\n","export interface EventFilter {\n address?: string\n topics?: Array | null>\n}\n\nexport interface Log {\n topics: Array\n data: string\n}\n\n/**\n * Converts a filter to the corresponding string key\n * @param filter the filter to convert\n */\nexport function filterToKey(filter: EventFilter): string {\n return `${filter.address ?? ''}:${\n filter.topics?.map((topic) => (topic ? (Array.isArray(topic) ? topic.join(';') : topic) : '\\0'))?.join('-') ?? ''\n }`\n}\n\n/**\n * Convert a filter key to the corresponding filter\n * @param key key to convert\n */\nexport function keyToFilter(key: string): EventFilter {\n const pcs = key.split(':')\n const address = pcs[0]\n const topics = pcs[1].split('-').map((topic) => {\n const parts = topic.split(';')\n if (parts.length === 1) return parts[0]\n return parts\n })\n\n return {\n address: address.length === 0 ? undefined : address,\n topics,\n }\n}\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit'\nimport { EventFilter, filterToKey, Log } from './utils'\n\nexport interface LogsState {\n [chainId: number]: {\n [filterKey: string]: {\n listeners: number\n fetchingBlockNumber?: number\n results?:\n | {\n blockNumber: number\n logs: Log[]\n error?: undefined\n }\n | {\n blockNumber: number\n logs?: undefined\n error: true\n }\n }\n }\n}\n\nconst slice = createSlice({\n name: 'logs',\n initialState: {} as LogsState,\n reducers: {\n addListener(state, { payload: { chainId, filter } }: PayloadAction<{ chainId: number; filter: EventFilter }>) {\n if (!state[chainId]) state[chainId] = {}\n const key = filterToKey(filter)\n if (!state[chainId][key])\n state[chainId][key] = {\n listeners: 1,\n }\n else state[chainId][key].listeners++\n },\n fetchingLogs(\n state,\n {\n payload: { chainId, filters, blockNumber },\n }: PayloadAction<{ chainId: number; filters: EventFilter[]; blockNumber: number }>\n ) {\n if (!state[chainId]) return\n for (const filter of filters) {\n const key = filterToKey(filter)\n if (!state[chainId][key]) continue\n state[chainId][key].fetchingBlockNumber = blockNumber\n }\n },\n fetchedLogs(\n state,\n {\n payload: { chainId, filter, results },\n }: PayloadAction<{ chainId: number; filter: EventFilter; results: { blockNumber: number; logs: Log[] } }>\n ) {\n if (!state[chainId]) return\n const key = filterToKey(filter)\n const fetchState = state[chainId][key]\n if (!fetchState || (fetchState.results && fetchState.results.blockNumber > results.blockNumber)) return\n fetchState.results = results\n },\n fetchedLogsError(\n state,\n {\n payload: { chainId, filter, blockNumber },\n }: PayloadAction<{ chainId: number; blockNumber: number; filter: EventFilter }>\n ) {\n if (!state[chainId]) return\n const key = filterToKey(filter)\n const fetchState = state[chainId][key]\n if (!fetchState || (fetchState.results && fetchState.results.blockNumber > blockNumber)) return\n fetchState.results = {\n blockNumber,\n error: true,\n }\n },\n removeListener(state, { payload: { chainId, filter } }: PayloadAction<{ chainId: number; filter: EventFilter }>) {\n if (!state[chainId]) return\n const key = filterToKey(filter)\n if (!state[chainId][key]) return\n state[chainId][key].listeners--\n },\n },\n})\n\nexport default slice.reducer\nexport const { addListener, removeListener, fetchedLogs, fetchedLogsError, fetchingLogs } = slice.actions\n","import { createReducer } from '@reduxjs/toolkit'\nimport {\n addMulticallListeners,\n errorFetchingMulticallResults,\n fetchingMulticallResults,\n removeMulticallListeners,\n updateMulticallResults,\n} from './actions'\nimport { toCallKey } from './utils'\n\nexport interface MulticallState {\n callListeners?: {\n // on a per-chain basis\n [chainId: number]: {\n // stores for each call key the listeners' preferences\n [callKey: string]: {\n // stores how many listeners there are per each blocks per fetch preference\n [blocksPerFetch: number]: number\n }\n }\n }\n\n callResults: {\n [chainId: number]: {\n [callKey: string]: {\n data?: string | null\n blockNumber?: number\n fetchingBlockNumber?: number\n }\n }\n }\n}\n\nconst initialState: MulticallState = {\n callResults: {},\n}\n\nexport default createReducer(initialState, (builder) =>\n builder\n .addCase(\n addMulticallListeners,\n (\n state,\n {\n payload: {\n calls,\n chainId,\n options: { blocksPerFetch },\n },\n }\n ) => {\n const listeners: MulticallState['callListeners'] = state.callListeners\n ? state.callListeners\n : (state.callListeners = {})\n listeners[chainId] = listeners[chainId] ?? {}\n calls.forEach((call) => {\n const callKey = toCallKey(call)\n listeners[chainId][callKey] = listeners[chainId][callKey] ?? {}\n listeners[chainId][callKey][blocksPerFetch] = (listeners[chainId][callKey][blocksPerFetch] ?? 0) + 1\n })\n }\n )\n .addCase(\n removeMulticallListeners,\n (\n state,\n {\n payload: {\n chainId,\n calls,\n options: { blocksPerFetch },\n },\n }\n ) => {\n const listeners: MulticallState['callListeners'] = state.callListeners\n ? state.callListeners\n : (state.callListeners = {})\n\n if (!listeners[chainId]) return\n calls.forEach((call) => {\n const callKey = toCallKey(call)\n if (!listeners[chainId][callKey]) return\n if (!listeners[chainId][callKey][blocksPerFetch]) return\n\n if (listeners[chainId][callKey][blocksPerFetch] === 1) {\n delete listeners[chainId][callKey][blocksPerFetch]\n } else {\n listeners[chainId][callKey][blocksPerFetch]--\n }\n })\n }\n )\n .addCase(fetchingMulticallResults, (state, { payload: { chainId, fetchingBlockNumber, calls } }) => {\n state.callResults[chainId] = state.callResults[chainId] ?? {}\n calls.forEach((call) => {\n const callKey = toCallKey(call)\n const current = state.callResults[chainId][callKey]\n if (!current) {\n state.callResults[chainId][callKey] = {\n fetchingBlockNumber,\n }\n } else {\n if ((current.fetchingBlockNumber ?? 0) >= fetchingBlockNumber) return\n state.callResults[chainId][callKey].fetchingBlockNumber = fetchingBlockNumber\n }\n })\n })\n .addCase(errorFetchingMulticallResults, (state, { payload: { fetchingBlockNumber, chainId, calls } }) => {\n state.callResults[chainId] = state.callResults[chainId] ?? {}\n calls.forEach((call) => {\n const callKey = toCallKey(call)\n const current = state.callResults[chainId][callKey]\n if (!current || typeof current.fetchingBlockNumber !== 'number') return // only should be dispatched if we are already fetching\n if (current.fetchingBlockNumber <= fetchingBlockNumber) {\n delete current.fetchingBlockNumber\n current.data = null\n current.blockNumber = fetchingBlockNumber\n }\n })\n })\n .addCase(updateMulticallResults, (state, { payload: { chainId, results, blockNumber } }) => {\n state.callResults[chainId] = state.callResults[chainId] ?? {}\n Object.keys(results).forEach((callKey) => {\n const current = state.callResults[chainId][callKey]\n if ((current?.blockNumber ?? 0) > blockNumber) return\n state.callResults[chainId][callKey] = {\n data: results[callKey],\n blockNumber,\n }\n })\n })\n)\n","import { BaseQueryApi, BaseQueryFn } from '@reduxjs/toolkit/dist/query/baseQueryTypes'\nimport { createApi } from '@reduxjs/toolkit/query/react'\nimport { SupportedChainId } from 'constants/chains'\nimport { DocumentNode } from 'graphql'\nimport { ClientError, gql, GraphQLClient } from 'graphql-request'\nimport { AppState } from 'state'\n\n// List of supported subgraphs. Note that the app currently only support one active subgraph at a time\nconst CHAIN_SUBGRAPH_URL: Record = {\n [SupportedChainId.MAINNET]: 'https://api.thegraph.com/subgraphs/name/uniswap/uniswap-v3',\n [SupportedChainId.RINKEBY]: 'https://api.thegraph.com/subgraphs/name/uniswap/uniswap-v3',\n\n [SupportedChainId.ARBITRUM_ONE]: 'https://api.thegraph.com/subgraphs/name/ianlapham/uniswap-arbitrum-one',\n\n [SupportedChainId.OPTIMISM]: 'https://api.thegraph.com/subgraphs/name/ianlapham/uniswap-optimism',\n}\n\nexport const api = createApi({\n reducerPath: 'dataApi',\n baseQuery: graphqlRequestBaseQuery(),\n endpoints: (builder) => ({\n allV3Ticks: builder.query({\n query: ({ poolAddress, skip = 0 }) => ({\n document: gql`\n query allV3Ticks($poolAddress: String!, $skip: Int!) {\n ticks(first: 1000, skip: $skip, where: { poolAddress: $poolAddress }, orderBy: tickIdx) {\n tickIdx\n liquidityNet\n price0\n price1\n }\n }\n `,\n variables: {\n poolAddress,\n skip,\n },\n }),\n }),\n feeTierDistribution: builder.query({\n query: ({ token0, token1 }) => ({\n document: gql`\n query feeTierDistribution($token0: String!, $token1: String!) {\n _meta {\n block {\n number\n }\n }\n asToken0: pools(\n orderBy: totalValueLockedToken0\n orderDirection: desc\n where: { token0: $token0, token1: $token1 }\n ) {\n feeTier\n totalValueLockedToken0\n totalValueLockedToken1\n }\n asToken1: pools(\n orderBy: totalValueLockedToken0\n orderDirection: desc\n where: { token0: $token1, token1: $token0 }\n ) {\n feeTier\n totalValueLockedToken0\n totalValueLockedToken1\n }\n }\n `,\n variables: {\n token0,\n token1,\n },\n }),\n }),\n }),\n})\n\n// Graphql query client wrapper that builds a dynamic url based on chain id\nfunction graphqlRequestBaseQuery(): BaseQueryFn<\n { document: string | DocumentNode; variables?: any },\n unknown,\n Pick,\n Partial>\n> {\n return async ({ document, variables }, { getState }: BaseQueryApi) => {\n try {\n const chainId = (getState() as AppState).application.chainId\n\n const subgraphUrl = chainId ? CHAIN_SUBGRAPH_URL[chainId] : undefined\n\n if (!subgraphUrl) {\n return {\n error: {\n name: 'UnsupportedChainId',\n message: `Subgraph queries against ChainId ${chainId} are not supported.`,\n stack: '',\n },\n }\n }\n\n return { data: await new GraphQLClient(subgraphUrl).request(document, variables), meta: {} }\n } catch (error) {\n if (error instanceof ClientError) {\n const { name, message, stack, request, response } = error\n return { error: { name, message, stack }, meta: { request, response } }\n }\n throw error\n }\n }\n}\n","import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'\nimport { SupportedChainId } from 'constants/chains'\nimport qs from 'qs'\n\nexport interface GetQuoteResult {\n blockNumber: string\n gasPriceWei: string\n gasUseEstimate: string\n gasUseEstimateQuote: string\n gasUseEstimateQuoteDecimals: string\n gasUseEstimateUSD: string\n methodParameters: { calldata: string; value: string }\n quote: string\n quoteDecimals: string\n quoteGasAdjusted: string\n quoteGasAdjustedDecimals: string\n quoteId: string\n routeEdges: {\n fee: string\n id: string\n inId: string\n outId: string\n percent: number\n type: string\n }[]\n routeNodes: { chainId: number; id: string; symbol: string; type: string }[]\n routeString: string\n}\n\nexport const routingApi = createApi({\n baseQuery: fetchBaseQuery({\n baseUrl: 'https://api.uniswap.org/v1/',\n }),\n endpoints: (build) => ({\n getQuote: build.query<\n GetQuoteResult,\n {\n tokenInAddress: string\n tokenInChainId: SupportedChainId\n tokenOutAddress: string\n tokenOutChainId: SupportedChainId\n amount: string\n type: 'exactIn' | 'exactOut'\n recipient?: string\n slippageTolerance?: string\n deadline?: string\n }\n >({\n query: (args) => `quote?${qs.stringify(args)}`,\n }),\n }),\n})\n\nexport const { useGetQuoteQuery } = routingApi\n","import { configureStore } from '@reduxjs/toolkit'\nimport { save, load } from 'redux-localstorage-simple'\n\nimport application from './application/reducer'\nimport { updateVersion } from './global/actions'\nimport user from './user/reducer'\nimport transactions from './transactions/reducer'\nimport swap from './swap/reducer'\nimport mint from './mint/reducer'\nimport mintV3 from './mint/v3/reducer'\nimport lists from './lists/reducer'\nimport burn from './burn/reducer'\nimport burnV3 from './burn/v3/reducer'\nimport logs from './logs/slice'\nimport multicall from './multicall/reducer'\nimport { api as dataApi } from './data/slice'\nimport { routingApi } from './routing/slice'\n\nconst PERSISTED_KEYS: string[] = ['user', 'transactions', 'lists']\n\nconst store = configureStore({\n reducer: {\n application,\n user,\n transactions,\n swap,\n mint,\n mintV3,\n burn,\n burnV3,\n multicall,\n lists,\n logs,\n [dataApi.reducerPath]: dataApi.reducer,\n [routingApi.reducerPath]: routingApi.reducer,\n },\n middleware: (getDefaultMiddleware) =>\n getDefaultMiddleware({ thunk: true })\n .concat(dataApi.middleware)\n .concat(routingApi.middleware)\n .concat(save({ states: PERSISTED_KEYS, debounce: 1000 })),\n preloadedState: load({ states: PERSISTED_KEYS }),\n})\n\nstore.dispatch(updateVersion())\n\nexport default store\n\nexport type AppState = ReturnType\nexport type AppDispatch = typeof store.dispatch\n","import { Trans } from '@lingui/macro'\nimport React, { ErrorInfo } from 'react'\nimport store, { AppState } from '../../state'\nimport { ExternalLink, TYPE } from '../../theme'\nimport { AutoColumn } from '../Column'\nimport styled from 'styled-components/macro'\nimport ReactGA from 'react-ga'\nimport { getUserAgent } from '../../utils/getUserAgent'\nimport { AutoRow } from '../Row'\n\nconst FallbackWrapper = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n align-items: center;\n z-index: 1;\n`\n\nconst BodyWrapper = styled.div<{ margin?: string }>`\n padding: 1rem;\n width: 100%;\n white-space: ;\n`\n\nconst CodeBlockWrapper = styled.div`\n background: ${({ theme }) => theme.bg0};\n overflow: auto;\n white-space: pre;\n box-shadow: 0px 0px 1px rgba(0, 0, 0, 0.01), 0px 4px 8px rgba(0, 0, 0, 0.04), 0px 16px 24px rgba(0, 0, 0, 0.04),\n 0px 24px 32px rgba(0, 0, 0, 0.01);\n border-radius: 24px;\n padding: 18px 24px;\n color: ${({ theme }) => theme.text1};\n`\n\nconst LinkWrapper = styled.div`\n color: ${({ theme }) => theme.blue1};\n padding: 6px 24px;\n`\n\nconst SomethingWentWrongWrapper = styled.div`\n padding: 6px 24px;\n`\n\ntype ErrorBoundaryState = {\n error: Error | null\n}\n\nexport default class ErrorBoundary extends React.Component {\n constructor(props: unknown) {\n super(props)\n this.state = { error: null }\n }\n\n static getDerivedStateFromError(error: Error): ErrorBoundaryState {\n return { error }\n }\n\n componentDidCatch(error: Error, errorInfo: ErrorInfo) {\n ReactGA.exception({\n ...error,\n ...errorInfo,\n fatal: true,\n })\n }\n\n render() {\n const { error } = this.state\n if (error !== null) {\n const encodedBody = encodeURIComponent(issueBody(error))\n return (\n \n \n \n \n \n Something went wrong\n \n \n \n \n {error.stack}\n \n \n \n \n \n \n Create an issue on GitHub\n \n \n \n \n \n \n \n Get support on Discord\n \n \n \n \n \n \n \n \n )\n }\n return this.props.children\n }\n}\n\nfunction getRelevantState(): null | keyof AppState {\n const path = window.location.hash\n if (!path.startsWith('#/')) {\n return null\n }\n const pieces = path.substring(2).split(/[\\/\\\\?]/)\n switch (pieces[0]) {\n case 'swap':\n return 'swap'\n case 'add':\n if (pieces[1] === 'v2') return 'mint'\n else return 'mintV3'\n case 'remove':\n if (pieces[1] === 'v2') return 'burn'\n else return 'burnV3'\n }\n return null\n}\n\nfunction issueBody(error: Error): string {\n const relevantState = getRelevantState()\n const deviceData = getUserAgent()\n return `## URL\n \n${window.location.href}\n\n${\n relevantState\n ? `## \\`${relevantState}\\` state\n \n\\`\\`\\`json\n${JSON.stringify(store.getState()[relevantState], null, 2)}\n\\`\\`\\`\n`\n : ''\n}\n${\n error.name &&\n `## Error\n\n\\`\\`\\`\n${error.name}${error.message && `: ${error.message}`}\n\\`\\`\\`\n`\n}\n${\n error.stack &&\n `## Stacktrace\n\n\\`\\`\\`\n${error.stack}\n\\`\\`\\`\n`\n}\n${\n deviceData &&\n `## Device data\n\n\\`\\`\\`json\n${JSON.stringify(deviceData, null, 2)}\n\\`\\`\\`\n`\n}\n`\n}\n","import { UAParser } from 'ua-parser-js'\n\nexport function getUserAgent(): UAParser.IResult {\n const parser = new UAParser(window.navigator.userAgent)\n return parser.getResult()\n}\n","import { Currency, Token } from '@uniswap/sdk-core'\nimport flatMap from 'lodash.flatmap'\nimport { useMemo } from 'react'\nimport { ADDITIONAL_BASES, BASES_TO_CHECK_TRADES_AGAINST, CUSTOM_BASES } from '../constants/routing'\nimport { useActiveWeb3React } from './web3'\n\nexport function useAllCurrencyCombinations(currencyA?: Currency, currencyB?: Currency): [Token, Token][] {\n const { chainId } = useActiveWeb3React()\n\n const [tokenA, tokenB] = chainId ? [currencyA?.wrapped, currencyB?.wrapped] : [undefined, undefined]\n\n const bases: Token[] = useMemo(() => {\n if (!chainId) return []\n\n const common = BASES_TO_CHECK_TRADES_AGAINST[chainId] ?? []\n const additionalA = tokenA ? ADDITIONAL_BASES[chainId]?.[tokenA.address] ?? [] : []\n const additionalB = tokenB ? ADDITIONAL_BASES[chainId]?.[tokenB.address] ?? [] : []\n\n return [...common, ...additionalA, ...additionalB]\n }, [chainId, tokenA, tokenB])\n\n const basePairs: [Token, Token][] = useMemo(\n () => flatMap(bases, (base): [Token, Token][] => bases.map((otherBase) => [base, otherBase])),\n [bases]\n )\n\n return useMemo(\n () =>\n tokenA && tokenB\n ? [\n // the direct pair\n [tokenA, tokenB],\n // token A against all bases\n ...bases.map((base): [Token, Token] => [tokenA, base]),\n // token B against all bases\n ...bases.map((base): [Token, Token] => [tokenB, base]),\n // each base against all bases\n ...basePairs,\n ]\n .filter((tokens): tokens is [Token, Token] => Boolean(tokens[0] && tokens[1]))\n .filter(([t0, t1]) => t0.address !== t1.address)\n .filter(([tokenA, tokenB]) => {\n if (!chainId) return true\n const customBases = CUSTOM_BASES[chainId]\n\n const customBasesA: Token[] | undefined = customBases?.[tokenA.address]\n const customBasesB: Token[] | undefined = customBases?.[tokenB.address]\n\n if (!customBasesA && !customBasesB) return true\n\n if (customBasesA && !customBasesA.find((base) => tokenB.equals(base))) return false\n if (customBasesB && !customBasesB.find((base) => tokenA.equals(base))) return false\n\n return true\n })\n : [],\n [tokenA, tokenB, bases, basePairs, chainId]\n )\n}\n","import { computePoolAddress } from '@uniswap/v3-sdk'\nimport { V3_CORE_FACTORY_ADDRESSES } from '../constants/addresses'\nimport { IUniswapV3PoolStateInterface } from '../types/v3/IUniswapV3PoolState'\nimport { Token, Currency } from '@uniswap/sdk-core'\nimport { useMemo } from 'react'\nimport { useActiveWeb3React } from './web3'\nimport { useMultipleContractSingleData } from '../state/multicall/hooks'\n\nimport { Pool, FeeAmount } from '@uniswap/v3-sdk'\nimport { abi as IUniswapV3PoolStateABI } from '@uniswap/v3-core/artifacts/contracts/interfaces/pool/IUniswapV3PoolState.sol/IUniswapV3PoolState.json'\nimport { Interface } from '@ethersproject/abi'\n\nconst POOL_STATE_INTERFACE = new Interface(IUniswapV3PoolStateABI) as IUniswapV3PoolStateInterface\n\nexport enum PoolState {\n LOADING,\n NOT_EXISTS,\n EXISTS,\n INVALID,\n}\n\nexport function usePools(\n poolKeys: [Currency | undefined, Currency | undefined, FeeAmount | undefined][]\n): [PoolState, Pool | null][] {\n const { chainId } = useActiveWeb3React()\n\n const transformed: ([Token, Token, FeeAmount] | null)[] = useMemo(() => {\n return poolKeys.map(([currencyA, currencyB, feeAmount]) => {\n if (!chainId || !currencyA || !currencyB || !feeAmount) return null\n\n const tokenA = currencyA?.wrapped\n const tokenB = currencyB?.wrapped\n if (!tokenA || !tokenB || tokenA.equals(tokenB)) return null\n const [token0, token1] = tokenA.sortsBefore(tokenB) ? [tokenA, tokenB] : [tokenB, tokenA]\n return [token0, token1, feeAmount]\n })\n }, [chainId, poolKeys])\n\n const poolAddresses: (string | undefined)[] = useMemo(() => {\n const v3CoreFactoryAddress = chainId && V3_CORE_FACTORY_ADDRESSES[chainId]\n\n return transformed.map((value) => {\n if (!v3CoreFactoryAddress || !value) return undefined\n return computePoolAddress({\n factoryAddress: v3CoreFactoryAddress,\n tokenA: value[0],\n tokenB: value[1],\n fee: value[2],\n })\n })\n }, [chainId, transformed])\n\n const slot0s = useMultipleContractSingleData(poolAddresses, POOL_STATE_INTERFACE, 'slot0')\n const liquidities = useMultipleContractSingleData(poolAddresses, POOL_STATE_INTERFACE, 'liquidity')\n\n return useMemo(() => {\n return poolKeys.map((_key, index) => {\n const [token0, token1, fee] = transformed[index] ?? []\n if (!token0 || !token1 || !fee) return [PoolState.INVALID, null]\n\n const { result: slot0, loading: slot0Loading, valid: slot0Valid } = slot0s[index]\n const { result: liquidity, loading: liquidityLoading, valid: liquidityValid } = liquidities[index]\n\n if (!slot0Valid || !liquidityValid) return [PoolState.INVALID, null]\n if (slot0Loading || liquidityLoading) return [PoolState.LOADING, null]\n\n if (!slot0 || !liquidity) return [PoolState.NOT_EXISTS, null]\n\n if (!slot0.sqrtPriceX96 || slot0.sqrtPriceX96.eq(0)) return [PoolState.NOT_EXISTS, null]\n\n try {\n return [PoolState.EXISTS, new Pool(token0, token1, fee, slot0.sqrtPriceX96, liquidity[0], slot0.tick)]\n } catch (error) {\n console.error('Error when constructing the pool', error)\n return [PoolState.NOT_EXISTS, null]\n }\n })\n }, [liquidities, poolKeys, slot0s, transformed])\n}\n\nexport function usePool(\n currencyA: Currency | undefined,\n currencyB: Currency | undefined,\n feeAmount: FeeAmount | undefined\n): [PoolState, Pool | null] {\n const poolKeys: [Currency | undefined, Currency | undefined, FeeAmount | undefined][] = useMemo(\n () => [[currencyA, currencyB, feeAmount]],\n [currencyA, currencyB, feeAmount]\n )\n\n return usePools(poolKeys)[0]\n}\n","import { Currency, CurrencyAmount, TradeType } from '@uniswap/sdk-core'\nimport { encodeRouteToPath, Route, Trade } from '@uniswap/v3-sdk'\nimport { SupportedChainId } from 'constants/chains'\nimport { BigNumber } from 'ethers'\nimport { useMemo } from 'react'\nimport { useSingleContractMultipleData } from '../state/multicall/hooks'\nimport { useAllV3Routes } from './useAllV3Routes'\nimport { useV3Quoter } from './useContract'\nimport { useActiveWeb3React } from './web3'\n\nexport enum V3TradeState {\n LOADING,\n INVALID,\n NO_ROUTE_FOUND,\n VALID,\n SYNCING,\n}\n\nconst QUOTE_GAS_OVERRIDES: { [chainId: number]: number } = {\n [SupportedChainId.OPTIMISM]: 6_000_000,\n [SupportedChainId.OPTIMISTIC_KOVAN]: 6_000_000,\n}\n\nconst DEFAULT_GAS_QUOTE = 2_000_000\n\n/**\n * Returns the best v3 trade for a desired exact input swap\n * @param amountIn the amount to swap in\n * @param currencyOut the desired output currency\n */\nexport function useBestV3TradeExactIn(\n amountIn?: CurrencyAmount,\n currencyOut?: Currency\n): { state: V3TradeState; trade: Trade | null } {\n const { chainId } = useActiveWeb3React()\n const quoter = useV3Quoter()\n const { routes, loading: routesLoading } = useAllV3Routes(amountIn?.currency, currencyOut)\n\n const quoteExactInInputs = useMemo(() => {\n return routes.map((route) => [\n encodeRouteToPath(route, false),\n amountIn ? `0x${amountIn.quotient.toString(16)}` : undefined,\n ])\n }, [amountIn, routes])\n\n const quotesResults = useSingleContractMultipleData(quoter, 'quoteExactInput', quoteExactInInputs, {\n gasRequired: chainId ? QUOTE_GAS_OVERRIDES[chainId] ?? DEFAULT_GAS_QUOTE : undefined,\n })\n\n return useMemo(() => {\n if (!amountIn || !currencyOut) {\n return {\n state: V3TradeState.INVALID,\n trade: null,\n }\n }\n\n if (routesLoading || quotesResults.some(({ loading }) => loading)) {\n return {\n state: V3TradeState.LOADING,\n trade: null,\n }\n }\n\n const { bestRoute, amountOut } = quotesResults.reduce(\n (currentBest: { bestRoute: Route | null; amountOut: BigNumber | null }, { result }, i) => {\n if (!result) return currentBest\n\n if (currentBest.amountOut === null) {\n return {\n bestRoute: routes[i],\n amountOut: result.amountOut,\n }\n } else if (currentBest.amountOut.lt(result.amountOut)) {\n return {\n bestRoute: routes[i],\n amountOut: result.amountOut,\n }\n }\n\n return currentBest\n },\n {\n bestRoute: null,\n amountOut: null,\n }\n )\n\n if (!bestRoute || !amountOut) {\n return {\n state: V3TradeState.NO_ROUTE_FOUND,\n trade: null,\n }\n }\n\n const isSyncing = quotesResults.some(({ syncing }) => syncing)\n\n return {\n state: isSyncing ? V3TradeState.SYNCING : V3TradeState.VALID,\n trade: Trade.createUncheckedTrade({\n route: bestRoute,\n tradeType: TradeType.EXACT_INPUT,\n inputAmount: amountIn,\n outputAmount: CurrencyAmount.fromRawAmount(currencyOut, amountOut.toString()),\n }),\n }\n }, [amountIn, currencyOut, quotesResults, routes, routesLoading])\n}\n\n/**\n * Returns the best v3 trade for a desired exact output swap\n * @param currencyIn the desired input currency\n * @param amountOut the amount to swap out\n */\nexport function useBestV3TradeExactOut(\n currencyIn?: Currency,\n amountOut?: CurrencyAmount\n): { state: V3TradeState; trade: Trade | null } {\n const { chainId } = useActiveWeb3React()\n const quoter = useV3Quoter()\n const { routes, loading: routesLoading } = useAllV3Routes(currencyIn, amountOut?.currency)\n\n const quoteExactOutInputs = useMemo(() => {\n return routes.map((route) => [\n encodeRouteToPath(route, true),\n amountOut ? `0x${amountOut.quotient.toString(16)}` : undefined,\n ])\n }, [amountOut, routes])\n\n const quotesResults = useSingleContractMultipleData(quoter, 'quoteExactOutput', quoteExactOutInputs, {\n gasRequired: chainId ? QUOTE_GAS_OVERRIDES[chainId] ?? DEFAULT_GAS_QUOTE : undefined,\n })\n\n return useMemo(() => {\n if (!amountOut || !currencyIn || quotesResults.some(({ valid }) => !valid)) {\n return {\n state: V3TradeState.INVALID,\n trade: null,\n }\n }\n\n if (routesLoading || quotesResults.some(({ loading }) => loading)) {\n return {\n state: V3TradeState.LOADING,\n trade: null,\n }\n }\n\n const { bestRoute, amountIn } = quotesResults.reduce(\n (currentBest: { bestRoute: Route | null; amountIn: BigNumber | null }, { result }, i) => {\n if (!result) return currentBest\n\n if (currentBest.amountIn === null) {\n return {\n bestRoute: routes[i],\n amountIn: result.amountIn,\n }\n } else if (currentBest.amountIn.gt(result.amountIn)) {\n return {\n bestRoute: routes[i],\n amountIn: result.amountIn,\n }\n }\n\n return currentBest\n },\n {\n bestRoute: null,\n amountIn: null,\n }\n )\n\n if (!bestRoute || !amountIn) {\n return {\n state: V3TradeState.NO_ROUTE_FOUND,\n trade: null,\n }\n }\n\n const isSyncing = quotesResults.some(({ syncing }) => syncing)\n\n return {\n state: isSyncing ? V3TradeState.SYNCING : V3TradeState.VALID,\n trade: Trade.createUncheckedTrade({\n route: bestRoute,\n tradeType: TradeType.EXACT_OUTPUT,\n inputAmount: CurrencyAmount.fromRawAmount(currencyIn, amountIn.toString()),\n outputAmount: amountOut,\n }),\n }\n }, [amountOut, currencyIn, quotesResults, routes, routesLoading])\n}\n","import { Currency } from '@uniswap/sdk-core'\nimport { Pool, Route } from '@uniswap/v3-sdk'\nimport { useMemo } from 'react'\nimport { useUserSingleHopOnly } from '../state/user/hooks'\nimport { useActiveWeb3React } from './web3'\nimport { useV3SwapPools } from './useV3SwapPools'\n\nfunction computeAllRoutes(\n currencyIn: Currency,\n currencyOut: Currency,\n pools: Pool[],\n chainId: number,\n currentPath: Pool[] = [],\n allPaths: Route[] = [],\n startCurrencyIn: Currency = currencyIn,\n maxHops = 2\n): Route[] {\n const tokenIn = currencyIn?.wrapped\n const tokenOut = currencyOut?.wrapped\n if (!tokenIn || !tokenOut) throw new Error('Missing tokenIn/tokenOut')\n\n for (const pool of pools) {\n if (currentPath.indexOf(pool) !== -1 || !pool.involvesToken(tokenIn)) continue\n\n const outputToken = pool.token0.equals(tokenIn) ? pool.token1 : pool.token0\n if (outputToken.equals(tokenOut)) {\n allPaths.push(new Route([...currentPath, pool], startCurrencyIn, currencyOut))\n } else if (maxHops > 1) {\n computeAllRoutes(\n outputToken,\n currencyOut,\n pools,\n chainId,\n [...currentPath, pool],\n allPaths,\n startCurrencyIn,\n maxHops - 1\n )\n }\n }\n\n return allPaths\n}\n\n/**\n * Returns all the routes from an input currency to an output currency\n * @param currencyIn the input currency\n * @param currencyOut the output currency\n */\nexport function useAllV3Routes(\n currencyIn?: Currency,\n currencyOut?: Currency\n): { loading: boolean; routes: Route[] } {\n const { chainId } = useActiveWeb3React()\n const { pools, loading: poolsLoading } = useV3SwapPools(currencyIn, currencyOut)\n\n const [singleHopOnly] = useUserSingleHopOnly()\n\n return useMemo(() => {\n if (poolsLoading || !chainId || !pools || !currencyIn || !currencyOut) return { loading: true, routes: [] }\n\n const routes = computeAllRoutes(currencyIn, currencyOut, pools, chainId, [], [], currencyIn, singleHopOnly ? 1 : 2)\n return { loading: false, routes }\n }, [chainId, currencyIn, currencyOut, pools, poolsLoading, singleHopOnly])\n}\n","import { Currency, Token } from '@uniswap/sdk-core'\nimport { FeeAmount, Pool } from '@uniswap/v3-sdk'\nimport { useMemo } from 'react'\nimport { useAllCurrencyCombinations } from './useAllCurrencyCombinations'\nimport { PoolState, usePools } from './usePools'\n\n/**\n * Returns all the existing pools that should be considered for swapping between an input currency and an output currency\n * @param currencyIn the input currency\n * @param currencyOut the output currency\n */\nexport function useV3SwapPools(\n currencyIn?: Currency,\n currencyOut?: Currency\n): {\n pools: Pool[]\n loading: boolean\n} {\n const allCurrencyCombinations = useAllCurrencyCombinations(currencyIn, currencyOut)\n\n const allCurrencyCombinationsWithAllFees: [Token, Token, FeeAmount][] = useMemo(\n () =>\n allCurrencyCombinations.reduce<[Token, Token, FeeAmount][]>((list, [tokenA, tokenB]) => {\n return list.concat([\n [tokenA, tokenB, FeeAmount.LOW],\n [tokenA, tokenB, FeeAmount.MEDIUM],\n [tokenA, tokenB, FeeAmount.HIGH],\n ])\n }, []),\n [allCurrencyCombinations]\n )\n\n const pools = usePools(allCurrencyCombinationsWithAllFees)\n\n return useMemo(() => {\n return {\n pools: pools\n .filter((tuple): tuple is [PoolState.EXISTS, Pool] => {\n return tuple[0] === PoolState.EXISTS && tuple[1] !== null\n })\n .map(([, pool]) => pool),\n loading: pools.some(([state]) => state === PoolState.LOADING),\n }\n }, [pools])\n}\n","import useParsedQueryString from './useParsedQueryString'\n\nexport enum Version {\n v2 = 'V2',\n v3 = 'V3',\n}\n\nexport const DEFAULT_VERSION: Version = Version.v3\n\nexport default function useToggledVersion(): Version {\n const { use } = useParsedQueryString()\n if (typeof use !== 'string') {\n return DEFAULT_VERSION\n }\n switch (use.toLowerCase()) {\n case 'v2':\n return Version.v2\n case 'v3':\n return Version.v3\n default:\n return Version.v3\n }\n}\n","import { Currency, Percent, TradeType } from '@uniswap/sdk-core'\nimport { Trade as V3Trade } from '@uniswap/v3-sdk'\nimport { Trade as V2Trade } from '@uniswap/v2-sdk'\nimport { useMemo } from 'react'\nimport { useUserSlippageToleranceWithDefault } from '../state/user/hooks'\nimport { useActiveWeb3React } from './web3'\nimport { L2_CHAIN_IDS } from 'constants/chains'\n\nconst V2_SWAP_DEFAULT_SLIPPAGE = new Percent(50, 10_000) // .50%\nconst V3_SWAP_DEFAULT_SLIPPAGE = new Percent(50, 10_000) // .50%\nconst ONE_TENTHS_PERCENT = new Percent(10, 10_000) // .10%\n\nexport default function useSwapSlippageTolerance(\n trade: V2Trade | V3Trade | undefined\n): Percent {\n const { chainId } = useActiveWeb3React()\n const onL2 = chainId && L2_CHAIN_IDS.includes(chainId)\n const defaultSlippageTolerance = useMemo(() => {\n if (!trade || onL2) return ONE_TENTHS_PERCENT\n if (trade instanceof V2Trade) return V2_SWAP_DEFAULT_SLIPPAGE\n return V3_SWAP_DEFAULT_SLIPPAGE\n }, [onL2, trade])\n return useUserSlippageToleranceWithDefault(defaultSlippageTolerance)\n}\n","import { ZERO_PERCENT, ONE_HUNDRED_PERCENT } from '../constants/misc'\nimport { Percent, Currency, TradeType } from '@uniswap/sdk-core'\nimport { Trade as V2Trade } from '@uniswap/v2-sdk'\nimport { Trade as V3Trade } from '@uniswap/v3-sdk'\n\n// returns whether tradeB is better than tradeA by at least a threshold percentage amount\nexport function isTradeBetter(\n tradeA: V2Trade | V3Trade | undefined | null,\n tradeB: V2Trade | V3Trade | undefined | null,\n minimumDelta: Percent = ZERO_PERCENT\n): boolean | undefined {\n if (tradeA && !tradeB) return false\n if (tradeB && !tradeA) return true\n if (!tradeA || !tradeB) return undefined\n\n if (\n tradeA.tradeType !== tradeB.tradeType ||\n !tradeA.inputAmount.currency.equals(tradeB.inputAmount.currency) ||\n !tradeB.outputAmount.currency.equals(tradeB.outputAmount.currency)\n ) {\n throw new Error('Comparing incomparable trades')\n }\n\n if (minimumDelta.equalTo(ZERO_PERCENT)) {\n return tradeA.executionPrice.lessThan(tradeB.executionPrice)\n } else {\n return tradeA.executionPrice.asFraction\n .multiply(minimumDelta.add(ONE_HUNDRED_PERCENT))\n .lessThan(tradeB.executionPrice)\n }\n}\n","import { computePairAddress, Pair } from '@uniswap/v2-sdk'\nimport { useMemo } from 'react'\nimport { abi as IUniswapV2PairABI } from '@uniswap/v2-core/build/IUniswapV2Pair.json'\nimport { Interface } from '@ethersproject/abi'\nimport { V2_FACTORY_ADDRESSES } from '../constants/addresses'\nimport { useMultipleContractSingleData } from '../state/multicall/hooks'\nimport { Currency, CurrencyAmount } from '@uniswap/sdk-core'\n\nconst PAIR_INTERFACE = new Interface(IUniswapV2PairABI)\n\nexport enum PairState {\n LOADING,\n NOT_EXISTS,\n EXISTS,\n INVALID,\n}\n\nexport function useV2Pairs(currencies: [Currency | undefined, Currency | undefined][]): [PairState, Pair | null][] {\n const tokens = useMemo(\n () => currencies.map(([currencyA, currencyB]) => [currencyA?.wrapped, currencyB?.wrapped]),\n [currencies]\n )\n\n const pairAddresses = useMemo(\n () =>\n tokens.map(([tokenA, tokenB]) => {\n return tokenA &&\n tokenB &&\n tokenA.chainId === tokenB.chainId &&\n !tokenA.equals(tokenB) &&\n V2_FACTORY_ADDRESSES[tokenA.chainId]\n ? computePairAddress({ factoryAddress: V2_FACTORY_ADDRESSES[tokenA.chainId], tokenA, tokenB })\n : undefined\n }),\n [tokens]\n )\n\n const results = useMultipleContractSingleData(pairAddresses, PAIR_INTERFACE, 'getReserves')\n\n return useMemo(() => {\n return results.map((result, i) => {\n const { result: reserves, loading } = result\n const tokenA = tokens[i][0]\n const tokenB = tokens[i][1]\n\n if (loading) return [PairState.LOADING, null]\n if (!tokenA || !tokenB || tokenA.equals(tokenB)) return [PairState.INVALID, null]\n if (!reserves) return [PairState.NOT_EXISTS, null]\n const { reserve0, reserve1 } = reserves\n const [token0, token1] = tokenA.sortsBefore(tokenB) ? [tokenA, tokenB] : [tokenB, tokenA]\n return [\n PairState.EXISTS,\n new Pair(\n CurrencyAmount.fromRawAmount(token0, reserve0.toString()),\n CurrencyAmount.fromRawAmount(token1, reserve1.toString())\n ),\n ]\n })\n }, [results, tokens])\n}\n\nexport function useV2Pair(tokenA?: Currency, tokenB?: Currency): [PairState, Pair | null] {\n const inputs: [[Currency | undefined, Currency | undefined]] = useMemo(() => [[tokenA, tokenB]], [tokenA, tokenB])\n return useV2Pairs(inputs)[0]\n}\n","import { Currency, CurrencyAmount, TradeType } from '@uniswap/sdk-core'\nimport { Pair, Trade } from '@uniswap/v2-sdk'\nimport { useMemo } from 'react'\nimport { isTradeBetter } from 'utils/isTradeBetter'\nimport { BETTER_TRADE_LESS_HOPS_THRESHOLD } from '../constants/misc'\nimport { useAllCurrencyCombinations } from './useAllCurrencyCombinations'\nimport { PairState, useV2Pairs } from './useV2Pairs'\n\nfunction useAllCommonPairs(currencyA?: Currency, currencyB?: Currency): Pair[] {\n const allCurrencyCombinations = useAllCurrencyCombinations(currencyA, currencyB)\n\n const allPairs = useV2Pairs(allCurrencyCombinations)\n\n // only pass along valid pairs, non-duplicated pairs\n return useMemo(\n () =>\n Object.values(\n allPairs\n // filter out invalid pairs\n .filter((result): result is [PairState.EXISTS, Pair] => Boolean(result[0] === PairState.EXISTS && result[1]))\n // filter out duplicated pairs\n .reduce<{ [pairAddress: string]: Pair }>((memo, [, curr]) => {\n memo[curr.liquidityToken.address] = memo[curr.liquidityToken.address] ?? curr\n return memo\n }, {})\n ),\n [allPairs]\n )\n}\n\nconst MAX_HOPS = 3\n\n/**\n * Returns the best trade for the exact amount of tokens in to the given token out\n */\nexport function useV2TradeExactIn(\n currencyAmountIn?: CurrencyAmount,\n currencyOut?: Currency,\n { maxHops = MAX_HOPS } = {}\n): Trade | null {\n const allowedPairs = useAllCommonPairs(currencyAmountIn?.currency, currencyOut)\n\n return useMemo(() => {\n if (currencyAmountIn && currencyOut && allowedPairs.length > 0) {\n if (maxHops === 1) {\n return (\n Trade.bestTradeExactIn(allowedPairs, currencyAmountIn, currencyOut, { maxHops: 1, maxNumResults: 1 })[0] ??\n null\n )\n }\n // search through trades with varying hops, find best trade out of them\n let bestTradeSoFar: Trade | null = null\n for (let i = 1; i <= maxHops; i++) {\n const currentTrade: Trade | null =\n Trade.bestTradeExactIn(allowedPairs, currencyAmountIn, currencyOut, { maxHops: i, maxNumResults: 1 })[0] ??\n null\n // if current trade is best yet, save it\n if (isTradeBetter(bestTradeSoFar, currentTrade, BETTER_TRADE_LESS_HOPS_THRESHOLD)) {\n bestTradeSoFar = currentTrade\n }\n }\n return bestTradeSoFar\n }\n\n return null\n }, [allowedPairs, currencyAmountIn, currencyOut, maxHops])\n}\n\n/**\n * Returns the best trade for the token in to the exact amount of token out\n */\nexport function useV2TradeExactOut(\n currencyIn?: Currency,\n currencyAmountOut?: CurrencyAmount,\n { maxHops = MAX_HOPS } = {}\n): Trade | null {\n const allowedPairs = useAllCommonPairs(currencyIn, currencyAmountOut?.currency)\n\n return useMemo(() => {\n if (currencyIn && currencyAmountOut && allowedPairs.length > 0) {\n if (maxHops === 1) {\n return (\n Trade.bestTradeExactOut(allowedPairs, currencyIn, currencyAmountOut, { maxHops: 1, maxNumResults: 1 })[0] ??\n null\n )\n }\n // search through trades with varying hops, find best trade out of them\n let bestTradeSoFar: Trade | null = null\n for (let i = 1; i <= maxHops; i++) {\n const currentTrade =\n Trade.bestTradeExactOut(allowedPairs, currencyIn, currencyAmountOut, { maxHops: i, maxNumResults: 1 })[0] ??\n null\n if (isTradeBetter(bestTradeSoFar, currentTrade, BETTER_TRADE_LESS_HOPS_THRESHOLD)) {\n bestTradeSoFar = currentTrade\n }\n }\n return bestTradeSoFar\n }\n return null\n }, [currencyIn, currencyAmountOut, allowedPairs, maxHops])\n}\n","import { t } from '@lingui/macro'\nimport JSBI from 'jsbi'\nimport { Trade as V3Trade } from '@uniswap/v3-sdk'\nimport { useBestV3TradeExactIn, useBestV3TradeExactOut, V3TradeState } from '../../hooks/useBestV3Trade'\nimport useENS from '../../hooks/useENS'\nimport { parseUnits } from '@ethersproject/units'\nimport { Currency, CurrencyAmount, Percent, TradeType } from '@uniswap/sdk-core'\nimport { Trade as V2Trade } from '@uniswap/v2-sdk'\nimport { ParsedQs } from 'qs'\nimport { useCallback, useEffect, useState } from 'react'\nimport { useActiveWeb3React } from '../../hooks/web3'\nimport { useCurrency } from '../../hooks/Tokens'\nimport useSwapSlippageTolerance from '../../hooks/useSwapSlippageTolerance'\nimport { Version } from '../../hooks/useToggledVersion'\nimport { useV2TradeExactIn, useV2TradeExactOut } from '../../hooks/useV2Trade'\nimport useParsedQueryString from '../../hooks/useParsedQueryString'\nimport { isAddress } from '../../utils'\nimport { AppState } from '../index'\nimport { useCurrencyBalances } from '../wallet/hooks'\nimport { Field, replaceSwapState, selectCurrency, setRecipient, switchCurrencies, typeInput } from './actions'\nimport { SwapState } from './reducer'\nimport { useUserSingleHopOnly } from 'state/user/hooks'\nimport { useAppDispatch, useAppSelector } from 'state/hooks'\n\nexport function useSwapState(): AppState['swap'] {\n return useAppSelector((state) => state.swap)\n}\n\nexport function useSwapActionHandlers(): {\n onCurrencySelection: (field: Field, currency: Currency) => void\n onSwitchTokens: () => void\n onUserInput: (field: Field, typedValue: string) => void\n onChangeRecipient: (recipient: string | null) => void\n} {\n const dispatch = useAppDispatch()\n const onCurrencySelection = useCallback(\n (field: Field, currency: Currency) => {\n dispatch(\n selectCurrency({\n field,\n currencyId: currency.isToken ? currency.address : currency.isNative ? 'ETH' : '',\n })\n )\n },\n [dispatch]\n )\n\n const onSwitchTokens = useCallback(() => {\n dispatch(switchCurrencies())\n }, [dispatch])\n\n const onUserInput = useCallback(\n (field: Field, typedValue: string) => {\n dispatch(typeInput({ field, typedValue }))\n },\n [dispatch]\n )\n\n const onChangeRecipient = useCallback(\n (recipient: string | null) => {\n dispatch(setRecipient({ recipient }))\n },\n [dispatch]\n )\n\n return {\n onSwitchTokens,\n onCurrencySelection,\n onUserInput,\n onChangeRecipient,\n }\n}\n\n// try to parse a user entered amount for a given token\nexport function tryParseAmount(value?: string, currency?: T): CurrencyAmount | undefined {\n if (!value || !currency) {\n return undefined\n }\n try {\n const typedValueParsed = parseUnits(value, currency.decimals).toString()\n if (typedValueParsed !== '0') {\n return CurrencyAmount.fromRawAmount(currency, JSBI.BigInt(typedValueParsed))\n }\n } catch (error) {\n // should fail if the user specifies too many decimal places of precision (or maybe exceed max uint?)\n console.debug(`Failed to parse input amount: \"${value}\"`, error)\n }\n // necessary for all paths to return a value\n return undefined\n}\n\nconst BAD_RECIPIENT_ADDRESSES: { [address: string]: true } = {\n '0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f': true, // v2 factory\n '0xf164fC0Ec4E93095b804a4795bBe1e041497b92a': true, // v2 router 01\n '0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D': true, // v2 router 02\n}\n\n/**\n * Returns true if any of the pairs or tokens in a trade have the given checksummed address\n * @param trade to check for the given address\n * @param checksummedAddress address to check in the pairs and tokens\n */\nfunction involvesAddress(\n trade: V2Trade | V3Trade,\n checksummedAddress: string\n): boolean {\n const path = trade instanceof V2Trade ? trade.route.path : trade.route.tokenPath\n return (\n path.some((token) => token.address === checksummedAddress) ||\n (trade instanceof V2Trade\n ? trade.route.pairs.some((pair) => pair.liquidityToken.address === checksummedAddress)\n : false)\n )\n}\n\n// from the current swap inputs, compute the best trade and return it.\nexport function useDerivedSwapInfo(toggledVersion: Version): {\n currencies: { [field in Field]?: Currency }\n currencyBalances: { [field in Field]?: CurrencyAmount }\n parsedAmount: CurrencyAmount | undefined\n inputError?: string\n v2Trade: V2Trade | undefined\n v3TradeState: { trade: V3Trade | null; state: V3TradeState }\n toggledTrade: V2Trade | V3Trade | undefined\n allowedSlippage: Percent\n} {\n const { account } = useActiveWeb3React()\n\n const [singleHopOnly] = useUserSingleHopOnly()\n\n const {\n independentField,\n typedValue,\n [Field.INPUT]: { currencyId: inputCurrencyId },\n [Field.OUTPUT]: { currencyId: outputCurrencyId },\n recipient,\n } = useSwapState()\n\n const inputCurrency = useCurrency(inputCurrencyId)\n const outputCurrency = useCurrency(outputCurrencyId)\n const recipientLookup = useENS(recipient ?? undefined)\n const to: string | null = (recipient === null ? account : recipientLookup.address) ?? null\n\n const relevantTokenBalances = useCurrencyBalances(account ?? undefined, [\n inputCurrency ?? undefined,\n outputCurrency ?? undefined,\n ])\n\n const isExactIn: boolean = independentField === Field.INPUT\n const parsedAmount = tryParseAmount(typedValue, (isExactIn ? inputCurrency : outputCurrency) ?? undefined)\n\n const bestV2TradeExactIn = useV2TradeExactIn(isExactIn ? parsedAmount : undefined, outputCurrency ?? undefined, {\n maxHops: singleHopOnly ? 1 : undefined,\n })\n const bestV2TradeExactOut = useV2TradeExactOut(inputCurrency ?? undefined, !isExactIn ? parsedAmount : undefined, {\n maxHops: singleHopOnly ? 1 : undefined,\n })\n\n const bestV3TradeExactIn = useBestV3TradeExactIn(isExactIn ? parsedAmount : undefined, outputCurrency ?? undefined)\n const bestV3TradeExactOut = useBestV3TradeExactOut(inputCurrency ?? undefined, !isExactIn ? parsedAmount : undefined)\n\n const v2Trade = isExactIn ? bestV2TradeExactIn : bestV2TradeExactOut\n const v3Trade = (isExactIn ? bestV3TradeExactIn : bestV3TradeExactOut) ?? undefined\n\n const currencyBalances = {\n [Field.INPUT]: relevantTokenBalances[0],\n [Field.OUTPUT]: relevantTokenBalances[1],\n }\n\n const currencies: { [field in Field]?: Currency } = {\n [Field.INPUT]: inputCurrency ?? undefined,\n [Field.OUTPUT]: outputCurrency ?? undefined,\n }\n\n let inputError: string | undefined\n if (!account) {\n inputError = t`Connect Wallet`\n }\n\n if (!parsedAmount) {\n inputError = inputError ?? t`Enter an amount`\n }\n\n if (!currencies[Field.INPUT] || !currencies[Field.OUTPUT]) {\n inputError = inputError ?? t`Select a token`\n }\n\n const formattedTo = isAddress(to)\n if (!to || !formattedTo) {\n inputError = inputError ?? t`Enter a recipient`\n } else {\n if (\n BAD_RECIPIENT_ADDRESSES[formattedTo] ||\n (bestV2TradeExactIn && involvesAddress(bestV2TradeExactIn, formattedTo)) ||\n (bestV2TradeExactOut && involvesAddress(bestV2TradeExactOut, formattedTo))\n ) {\n inputError = inputError ?? t`Invalid recipient`\n }\n }\n\n const toggledTrade = (toggledVersion === Version.v2 ? v2Trade : v3Trade.trade) ?? undefined\n const allowedSlippage = useSwapSlippageTolerance(toggledTrade)\n\n // compare input balance to max input based on version\n const [balanceIn, amountIn] = [currencyBalances[Field.INPUT], toggledTrade?.maximumAmountIn(allowedSlippage)]\n\n if (balanceIn && amountIn && balanceIn.lessThan(amountIn)) {\n inputError = t`Insufficient ${amountIn.currency.symbol} balance`\n }\n\n return {\n currencies,\n currencyBalances,\n parsedAmount,\n inputError,\n v2Trade: v2Trade ?? undefined,\n v3TradeState: v3Trade,\n toggledTrade,\n allowedSlippage,\n }\n}\n\nfunction parseCurrencyFromURLParameter(urlParam: any): string {\n if (typeof urlParam === 'string') {\n const valid = isAddress(urlParam)\n if (valid) return valid\n if (urlParam.toUpperCase() === 'ETH') return 'ETH'\n }\n return ''\n}\n\nfunction parseTokenAmountURLParameter(urlParam: any): string {\n return typeof urlParam === 'string' && !isNaN(parseFloat(urlParam)) ? urlParam : ''\n}\n\nfunction parseIndependentFieldURLParameter(urlParam: any): Field {\n return typeof urlParam === 'string' && urlParam.toLowerCase() === 'output' ? Field.OUTPUT : Field.INPUT\n}\n\nconst ENS_NAME_REGEX = /^[-a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_+.~#?&/=]*)?$/\nconst ADDRESS_REGEX = /^0x[a-fA-F0-9]{40}$/\nfunction validatedRecipient(recipient: any): string | null {\n if (typeof recipient !== 'string') return null\n const address = isAddress(recipient)\n if (address) return address\n if (ENS_NAME_REGEX.test(recipient)) return recipient\n if (ADDRESS_REGEX.test(recipient)) return recipient\n return null\n}\n\nexport function queryParametersToSwapState(parsedQs: ParsedQs): SwapState {\n let inputCurrency = parseCurrencyFromURLParameter(parsedQs.inputCurrency)\n let outputCurrency = parseCurrencyFromURLParameter(parsedQs.outputCurrency)\n if (inputCurrency === '' && outputCurrency === '') {\n // default to ETH input\n inputCurrency = 'ETH'\n } else if (inputCurrency === outputCurrency) {\n // clear output if identical\n outputCurrency = ''\n }\n\n const recipient = validatedRecipient(parsedQs.recipient)\n\n return {\n [Field.INPUT]: {\n currencyId: inputCurrency,\n },\n [Field.OUTPUT]: {\n currencyId: outputCurrency,\n },\n typedValue: parseTokenAmountURLParameter(parsedQs.exactAmount),\n independentField: parseIndependentFieldURLParameter(parsedQs.exactField),\n recipient,\n }\n}\n\n// updates the swap state to use the defaults for a given network\nexport function useDefaultsFromURLSearch():\n | { inputCurrencyId: string | undefined; outputCurrencyId: string | undefined }\n | undefined {\n const { chainId } = useActiveWeb3React()\n const dispatch = useAppDispatch()\n const parsedQs = useParsedQueryString()\n const [result, setResult] =\n useState<{ inputCurrencyId: string | undefined; outputCurrencyId: string | undefined } | undefined>()\n\n useEffect(() => {\n if (!chainId) return\n const parsed = queryParametersToSwapState(parsedQs)\n\n dispatch(\n replaceSwapState({\n typedValue: parsed.typedValue,\n field: parsed.independentField,\n inputCurrencyId: parsed[Field.INPUT].currencyId,\n outputCurrencyId: parsed[Field.OUTPUT].currencyId,\n recipient: parsed.recipient,\n })\n )\n\n setResult({ inputCurrencyId: parsed[Field.INPUT].currencyId, outputCurrencyId: parsed[Field.OUTPUT].currencyId })\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dispatch, chainId])\n\n return result\n}\n","import { BigNumber } from 'ethers'\nimport { useSingleCallResult } from '../state/multicall/hooks'\nimport { useMulticall2Contract } from './useContract'\n\n// gets the current timestamp from the blockchain\nexport default function useCurrentBlockTimestamp(): BigNumber | undefined {\n const multicall = useMulticall2Contract()\n return useSingleCallResult(multicall, 'getCurrentBlockTimestamp')?.result?.[0]\n}\n","import { t } from '@lingui/macro'\nimport { Token, CurrencyAmount } from '@uniswap/sdk-core'\nimport { Pair } from '@uniswap/v2-sdk'\nimport JSBI from 'jsbi'\nimport { useMemo } from 'react'\nimport { DAI, UNI, USDC, USDT, WBTC, WETH9_EXTENDED } from '../../constants/tokens'\nimport { useActiveWeb3React } from '../../hooks/web3'\nimport { NEVER_RELOAD, useMultipleContractSingleData } from '../multicall/hooks'\nimport { tryParseAmount } from '../swap/hooks'\nimport useCurrentBlockTimestamp from 'hooks/useCurrentBlockTimestamp'\nimport { Interface } from '@ethersproject/abi'\nimport { abi as STAKING_REWARDS_ABI } from '@uniswap/liquidity-staker/build/StakingRewards.json'\n\nconst STAKING_REWARDS_INTERFACE = new Interface(STAKING_REWARDS_ABI)\n\nexport const STAKING_GENESIS = 1600387200\n\nexport const REWARDS_DURATION_DAYS = 60\n\nexport const STAKING_REWARDS_INFO: {\n [chainId: number]: {\n tokens: [Token, Token]\n stakingRewardAddress: string\n }[]\n} = {\n [1]: [\n {\n tokens: [WETH9_EXTENDED[1], DAI],\n stakingRewardAddress: '0xa1484C3aa22a66C62b77E0AE78E15258bd0cB711',\n },\n {\n tokens: [WETH9_EXTENDED[1], USDC],\n stakingRewardAddress: '0x7FBa4B8Dc5E7616e59622806932DBea72537A56b',\n },\n {\n tokens: [WETH9_EXTENDED[1], USDT],\n stakingRewardAddress: '0x6C3e4cb2E96B01F4b866965A91ed4437839A121a',\n },\n {\n tokens: [WETH9_EXTENDED[1], WBTC],\n stakingRewardAddress: '0xCA35e32e7926b96A9988f61d510E038108d8068e',\n },\n ],\n}\n\nexport interface StakingInfo {\n // the address of the reward contract\n stakingRewardAddress: string\n // the tokens involved in this pair\n tokens: [Token, Token]\n // the amount of token currently staked, or undefined if no account\n stakedAmount: CurrencyAmount\n // the amount of reward token earned by the active account, or undefined if no account\n earnedAmount: CurrencyAmount\n // the total amount of token staked in the contract\n totalStakedAmount: CurrencyAmount\n // the amount of token distributed per second to all LPs, constant\n totalRewardRate: CurrencyAmount\n // the current amount of token distributed to the active account per second.\n // equivalent to percent of total supply * reward rate\n rewardRate: CurrencyAmount\n // when the period ends\n periodFinish: Date | undefined\n // if pool is active\n active: boolean\n // calculates a hypothetical amount of token distributed to the active account per second.\n getHypotheticalRewardRate: (\n stakedAmount: CurrencyAmount,\n totalStakedAmount: CurrencyAmount,\n totalRewardRate: CurrencyAmount\n ) => CurrencyAmount\n}\n\n// gets the staking info from the network for the active chain id\nexport function useStakingInfo(pairToFilterBy?: Pair | null): StakingInfo[] {\n const { chainId, account } = useActiveWeb3React()\n\n // detect if staking is ended\n const currentBlockTimestamp = useCurrentBlockTimestamp()\n\n const info = useMemo(\n () =>\n chainId\n ? STAKING_REWARDS_INFO[chainId]?.filter((stakingRewardInfo) =>\n pairToFilterBy === undefined\n ? true\n : pairToFilterBy === null\n ? false\n : pairToFilterBy.involvesToken(stakingRewardInfo.tokens[0]) &&\n pairToFilterBy.involvesToken(stakingRewardInfo.tokens[1])\n ) ?? []\n : [],\n [chainId, pairToFilterBy]\n )\n\n const uni = chainId ? UNI[chainId] : undefined\n\n const rewardsAddresses = useMemo(() => info.map(({ stakingRewardAddress }) => stakingRewardAddress), [info])\n\n const accountArg = useMemo(() => [account ?? undefined], [account])\n\n // get all the info from the staking rewards contracts\n const balances = useMultipleContractSingleData(rewardsAddresses, STAKING_REWARDS_INTERFACE, 'balanceOf', accountArg)\n const earnedAmounts = useMultipleContractSingleData(rewardsAddresses, STAKING_REWARDS_INTERFACE, 'earned', accountArg)\n const totalSupplies = useMultipleContractSingleData(rewardsAddresses, STAKING_REWARDS_INTERFACE, 'totalSupply')\n\n // tokens per second, constants\n const rewardRates = useMultipleContractSingleData(\n rewardsAddresses,\n STAKING_REWARDS_INTERFACE,\n 'rewardRate',\n undefined,\n NEVER_RELOAD\n )\n const periodFinishes = useMultipleContractSingleData(\n rewardsAddresses,\n STAKING_REWARDS_INTERFACE,\n 'periodFinish',\n undefined,\n NEVER_RELOAD\n )\n\n return useMemo(() => {\n if (!chainId || !uni) return []\n\n return rewardsAddresses.reduce((memo, rewardsAddress, index) => {\n // these two are dependent on account\n const balanceState = balances[index]\n const earnedAmountState = earnedAmounts[index]\n\n // these get fetched regardless of account\n const totalSupplyState = totalSupplies[index]\n const rewardRateState = rewardRates[index]\n const periodFinishState = periodFinishes[index]\n\n if (\n // these may be undefined if not logged in\n !balanceState?.loading &&\n !earnedAmountState?.loading &&\n // always need these\n totalSupplyState &&\n !totalSupplyState.loading &&\n rewardRateState &&\n !rewardRateState.loading &&\n periodFinishState &&\n !periodFinishState.loading\n ) {\n if (\n balanceState?.error ||\n earnedAmountState?.error ||\n totalSupplyState.error ||\n rewardRateState.error ||\n periodFinishState.error\n ) {\n console.error('Failed to load staking rewards info')\n return memo\n }\n\n // get the LP token\n const tokens = info[index].tokens\n const dummyPair = new Pair(\n CurrencyAmount.fromRawAmount(tokens[0], '0'),\n CurrencyAmount.fromRawAmount(tokens[1], '0')\n )\n\n // check for account, if no account set to 0\n\n const stakedAmount = CurrencyAmount.fromRawAmount(\n dummyPair.liquidityToken,\n JSBI.BigInt(balanceState?.result?.[0] ?? 0)\n )\n const totalStakedAmount = CurrencyAmount.fromRawAmount(\n dummyPair.liquidityToken,\n JSBI.BigInt(totalSupplyState.result?.[0])\n )\n const totalRewardRate = CurrencyAmount.fromRawAmount(uni, JSBI.BigInt(rewardRateState.result?.[0]))\n\n const getHypotheticalRewardRate = (\n stakedAmount: CurrencyAmount,\n totalStakedAmount: CurrencyAmount,\n totalRewardRate: CurrencyAmount\n ): CurrencyAmount => {\n return CurrencyAmount.fromRawAmount(\n uni,\n JSBI.greaterThan(totalStakedAmount.quotient, JSBI.BigInt(0))\n ? JSBI.divide(JSBI.multiply(totalRewardRate.quotient, stakedAmount.quotient), totalStakedAmount.quotient)\n : JSBI.BigInt(0)\n )\n }\n\n const individualRewardRate = getHypotheticalRewardRate(stakedAmount, totalStakedAmount, totalRewardRate)\n\n const periodFinishSeconds = periodFinishState.result?.[0]?.toNumber()\n const periodFinishMs = periodFinishSeconds * 1000\n\n // compare period end timestamp vs current block timestamp (in seconds)\n const active =\n periodFinishSeconds && currentBlockTimestamp ? periodFinishSeconds > currentBlockTimestamp.toNumber() : true\n\n memo.push({\n stakingRewardAddress: rewardsAddress,\n tokens: info[index].tokens,\n periodFinish: periodFinishMs > 0 ? new Date(periodFinishMs) : undefined,\n earnedAmount: CurrencyAmount.fromRawAmount(uni, JSBI.BigInt(earnedAmountState?.result?.[0] ?? 0)),\n rewardRate: individualRewardRate,\n totalRewardRate: totalRewardRate,\n stakedAmount: stakedAmount,\n totalStakedAmount: totalStakedAmount,\n getHypotheticalRewardRate,\n active,\n })\n }\n return memo\n }, [])\n }, [\n balances,\n chainId,\n currentBlockTimestamp,\n earnedAmounts,\n info,\n periodFinishes,\n rewardRates,\n rewardsAddresses,\n totalSupplies,\n uni,\n ])\n}\n\nexport function useTotalUniEarned(): CurrencyAmount | undefined {\n const { chainId } = useActiveWeb3React()\n const uni = chainId ? UNI[chainId] : undefined\n const stakingInfos = useStakingInfo()\n\n return useMemo(() => {\n if (!uni) return undefined\n return (\n stakingInfos?.reduce(\n (accumulator, stakingInfo) => accumulator.add(stakingInfo.earnedAmount),\n CurrencyAmount.fromRawAmount(uni, '0')\n ) ?? CurrencyAmount.fromRawAmount(uni, '0')\n )\n }, [stakingInfos, uni])\n}\n\n// based on typed value\nexport function useDerivedStakeInfo(\n typedValue: string,\n stakingToken: Token | undefined,\n userLiquidityUnstaked: CurrencyAmount | undefined\n): {\n parsedAmount?: CurrencyAmount\n error?: string\n} {\n const { account } = useActiveWeb3React()\n\n const parsedInput: CurrencyAmount | undefined = tryParseAmount(typedValue, stakingToken)\n\n const parsedAmount =\n parsedInput && userLiquidityUnstaked && JSBI.lessThanOrEqual(parsedInput.quotient, userLiquidityUnstaked.quotient)\n ? parsedInput\n : undefined\n\n let error: string | undefined\n if (!account) {\n error = t`Connect Wallet`\n }\n if (!parsedAmount) {\n error = error ?? t`Enter an amount`\n }\n\n return {\n parsedAmount,\n error,\n }\n}\n","import { Currency, Token, CurrencyAmount, Ether } from '@uniswap/sdk-core'\nimport JSBI from 'jsbi'\nimport { useMemo } from 'react'\nimport { UNI } from '../../constants/tokens'\nimport { useActiveWeb3React } from '../../hooks/web3'\nimport { useAllTokens } from '../../hooks/Tokens'\nimport { useMulticall2Contract } from '../../hooks/useContract'\nimport { isAddress } from '../../utils'\nimport { useUserUnclaimedAmount } from '../claim/hooks'\nimport { useMultipleContractSingleData, useSingleContractMultipleData } from '../multicall/hooks'\nimport { useTotalUniEarned } from '../stake/hooks'\nimport { Interface } from '@ethersproject/abi'\nimport ERC20ABI from 'abis/erc20.json'\nimport { Erc20Interface } from 'abis/types/Erc20'\nimport { SupportedChainId } from 'constants/chains'\n/**\n * Returns a map of the given addresses to their eventually consistent ETH balances.\n */\nexport function useETHBalances(uncheckedAddresses?: (string | undefined)[]): {\n [address: string]: CurrencyAmount | undefined\n} {\n const { chainId } = useActiveWeb3React()\n const multicallContract = useMulticall2Contract()\n\n const addresses: string[] = useMemo(\n () =>\n uncheckedAddresses\n ? uncheckedAddresses\n .map(isAddress)\n .filter((a): a is string => a !== false)\n .sort()\n : [],\n [uncheckedAddresses]\n )\n\n const results = useSingleContractMultipleData(\n multicallContract,\n 'getEthBalance',\n addresses.map((address) => [address])\n )\n\n return useMemo(\n () =>\n addresses.reduce<{ [address: string]: CurrencyAmount }>((memo, address, i) => {\n const value = results?.[i]?.result?.[0]\n if (value && chainId)\n memo[address] = CurrencyAmount.fromRawAmount(Ether.onChain(chainId), JSBI.BigInt(value.toString()))\n return memo\n }, {}),\n [addresses, chainId, results]\n )\n}\n\nconst TOKEN_BALANCE_GAS_OVERRIDE: { [chainId: number]: number } = {\n [SupportedChainId.OPTIMISM]: 250_000,\n [SupportedChainId.OPTIMISTIC_KOVAN]: 250_000,\n}\n\n/**\n * Returns a map of token addresses to their eventually consistent token balances for a single account.\n */\nexport function useTokenBalancesWithLoadingIndicator(\n address?: string,\n tokens?: (Token | undefined)[]\n): [{ [tokenAddress: string]: CurrencyAmount | undefined }, boolean] {\n const validatedTokens: Token[] = useMemo(\n () => tokens?.filter((t?: Token): t is Token => isAddress(t?.address) !== false) ?? [],\n [tokens]\n )\n\n const { chainId } = useActiveWeb3React()\n\n const validatedTokenAddresses = useMemo(() => validatedTokens.map((vt) => vt.address), [validatedTokens])\n const ERC20Interface = new Interface(ERC20ABI) as Erc20Interface\n const balances = useMultipleContractSingleData(validatedTokenAddresses, ERC20Interface, 'balanceOf', [address], {\n gasRequired: (chainId && TOKEN_BALANCE_GAS_OVERRIDE[chainId]) ?? 100_000,\n })\n\n const anyLoading: boolean = useMemo(() => balances.some((callState) => callState.loading), [balances])\n\n return [\n useMemo(\n () =>\n address && validatedTokens.length > 0\n ? validatedTokens.reduce<{ [tokenAddress: string]: CurrencyAmount | undefined }>((memo, token, i) => {\n const value = balances?.[i]?.result?.[0]\n const amount = value ? JSBI.BigInt(value.toString()) : undefined\n if (amount) {\n memo[token.address] = CurrencyAmount.fromRawAmount(token, amount)\n }\n return memo\n }, {})\n : {},\n [address, validatedTokens, balances]\n ),\n anyLoading,\n ]\n}\n\nexport function useTokenBalances(\n address?: string,\n tokens?: (Token | undefined)[]\n): { [tokenAddress: string]: CurrencyAmount | undefined } {\n return useTokenBalancesWithLoadingIndicator(address, tokens)[0]\n}\n\n// get the balance for a single token/account combo\nexport function useTokenBalance(account?: string, token?: Token): CurrencyAmount | undefined {\n const tokenBalances = useTokenBalances(account, [token])\n if (!token) return undefined\n return tokenBalances[token.address]\n}\n\nexport function useCurrencyBalances(\n account?: string,\n currencies?: (Currency | undefined)[]\n): (CurrencyAmount | undefined)[] {\n const tokens = useMemo(\n () => currencies?.filter((currency): currency is Token => currency?.isToken ?? false) ?? [],\n [currencies]\n )\n\n const tokenBalances = useTokenBalances(account, tokens)\n const containsETH: boolean = useMemo(() => currencies?.some((currency) => currency?.isNative) ?? false, [currencies])\n const ethBalance = useETHBalances(containsETH ? [account] : [])\n\n return useMemo(\n () =>\n currencies?.map((currency) => {\n if (!account || !currency) return undefined\n if (currency.isToken) return tokenBalances[currency.address]\n if (currency.isNative) return ethBalance[account]\n return undefined\n }) ?? [],\n [account, currencies, ethBalance, tokenBalances]\n )\n}\n\nexport function useCurrencyBalance(account?: string, currency?: Currency): CurrencyAmount | undefined {\n return useCurrencyBalances(account, [currency])[0]\n}\n\n// mimics useAllBalances\nexport function useAllTokenBalances(): { [tokenAddress: string]: CurrencyAmount | undefined } {\n const { account } = useActiveWeb3React()\n const allTokens = useAllTokens()\n const allTokensArray = useMemo(() => Object.values(allTokens ?? {}), [allTokens])\n const balances = useTokenBalances(account ?? undefined, allTokensArray)\n return balances ?? {}\n}\n\n// get the total owned, unclaimed, and unharvested UNI for account\nexport function useAggregateUniBalance(): CurrencyAmount | undefined {\n const { account, chainId } = useActiveWeb3React()\n\n const uni = chainId ? UNI[chainId] : undefined\n\n const uniBalance: CurrencyAmount | undefined = useTokenBalance(account ?? undefined, uni)\n const uniUnclaimed: CurrencyAmount | undefined = useUserUnclaimedAmount(account)\n const uniUnHarvested: CurrencyAmount | undefined = useTotalUniEarned()\n\n if (!uni) return undefined\n\n return CurrencyAmount.fromRawAmount(\n uni,\n JSBI.add(\n JSBI.add(uniBalance?.quotient ?? JSBI.BigInt(0), uniUnclaimed?.quotient ?? JSBI.BigInt(0)),\n uniUnHarvested?.quotient ?? JSBI.BigInt(0)\n )\n )\n}\n","export default __webpack_public_path__ + \"static/media/logo_white.811f9ef7.svg\";","import JSBI from 'jsbi'\nimport { CurrencyAmount, Token } from '@uniswap/sdk-core'\nimport { isAddress } from 'ethers/lib/utils'\nimport { useEffect, useState } from 'react'\nimport { Text } from 'rebass'\nimport styled from 'styled-components/macro'\nimport Circle from '../../assets/images/blue-loader.svg'\nimport tokenLogo from '../../assets/images/token-logo.png'\nimport { useActiveWeb3React } from '../../hooks/web3'\nimport { ApplicationModal } from '../../state/application/actions'\nimport { useModalOpen, useToggleSelfClaimModal } from '../../state/application/hooks'\nimport { useClaimCallback, useUserClaimData, useUserUnclaimedAmount } from '../../state/claim/hooks'\nimport { useUserHasSubmittedClaim } from '../../state/transactions/hooks'\nimport { CloseIcon, CustomLightSpinner, ExternalLink, TYPE, UniTokenAnimated } from '../../theme'\nimport { ExplorerDataType, getExplorerLink } from '../../utils/getExplorerLink'\nimport { ButtonPrimary } from '../Button'\nimport { AutoColumn, ColumnCenter } from '../Column'\nimport Confetti from '../Confetti'\nimport { Break, CardBGImage, CardBGImageSmaller, CardNoise, CardSection, DataCard } from '../earn/styled'\nimport { Trans } from '@lingui/macro'\n\nimport Modal from '../Modal'\nimport { RowBetween } from '../Row'\n\nconst ContentWrapper = styled(AutoColumn)`\n width: 100%;\n`\n\nconst ModalUpper = styled(DataCard)`\n box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.1);\n background: radial-gradient(76.02% 75.41% at 1.84% 0%, #ff007a 0%, #021d43 100%);\n`\n\nconst ConfirmOrLoadingWrapper = styled.div<{ activeBG: boolean }>`\n width: 100%;\n padding: 24px;\n position: relative;\n background: ${({ activeBG }) =>\n activeBG &&\n 'radial-gradient(76.02% 75.41% at 1.84% 0%, rgba(255, 0, 122, 0.2) 0%, rgba(33, 114, 229, 0.2) 100%), #FFFFFF;'};\n`\n\nconst ConfirmedIcon = styled(ColumnCenter)`\n padding: 60px 0;\n`\n\nconst SOCKS_AMOUNT = 1000\nconst USER_AMOUNT = 400\n\nexport default function ClaimModal() {\n const isOpen = useModalOpen(ApplicationModal.SELF_CLAIM)\n const toggleClaimModal = useToggleSelfClaimModal()\n\n const { account, chainId } = useActiveWeb3React()\n\n // used for UI loading states\n const [attempting, setAttempting] = useState(false)\n\n // get user claim data\n const userClaimData = useUserClaimData(account)\n\n // monitor the status of the claim from contracts and txns\n const { claimCallback } = useClaimCallback(account)\n const unclaimedAmount: CurrencyAmount | undefined = useUserUnclaimedAmount(account)\n const { claimSubmitted, claimTxn } = useUserHasSubmittedClaim(account ?? undefined)\n const claimConfirmed = Boolean(claimTxn?.receipt)\n\n function onClaim() {\n setAttempting(true)\n claimCallback()\n // reset modal and log error\n .catch((error) => {\n setAttempting(false)\n console.log(error)\n })\n }\n\n // once confirmed txn is found, if modal is closed open, mark as not attempting regradless\n useEffect(() => {\n if (claimConfirmed && claimSubmitted && attempting) {\n setAttempting(false)\n if (!isOpen) {\n toggleClaimModal()\n }\n }\n }, [attempting, claimConfirmed, claimSubmitted, isOpen, toggleClaimModal])\n\n const nonLPAmount = JSBI.multiply(\n JSBI.BigInt((userClaimData?.flags?.isSOCKS ? SOCKS_AMOUNT : 0) + (userClaimData?.flags?.isUser ? USER_AMOUNT : 0)),\n JSBI.exponentiate(JSBI.BigInt(10), JSBI.BigInt(18))\n )\n\n return (\n \n \n {!attempting && !claimConfirmed && (\n \n \n \n \n \n \n \n Claim UNI\n \n \n \n \n {unclaimedAmount?.toFixed(0, { groupSeparator: ',' } ?? '-')} UNI\n \n \n \n \n {userClaimData?.flags?.isSOCKS && (\n \n SOCKS\n \n {SOCKS_AMOUNT} UNI\n \n \n )}\n {userClaimData?.flags?.isLP &&\n unclaimedAmount &&\n JSBI.greaterThanOrEqual(unclaimedAmount.quotient, nonLPAmount) && (\n \n \n Liquidity\n \n \n \n {unclaimedAmount\n .subtract(CurrencyAmount.fromRawAmount(unclaimedAmount.currency, nonLPAmount))\n .toFixed(0, { groupSeparator: ',' })}{' '}\n UNI\n \n \n \n )}\n {userClaimData?.flags?.isUser && (\n \n \n User\n \n \n {USER_AMOUNT} UNI\n \n \n )}\n \n \n \n \n \n As a member of the Uniswap community you may claim UNI to be used for voting and governance.\n
\n
\n Read more about UNI\n
\n
\n \n Claim UNI\n \n
\n
\n )}\n {(attempting || claimConfirmed) && (\n \n \n \n \n
\n \n \n \n {!claimConfirmed ? (\n \n ) : (\n \n )}\n \n \n \n \n {claimConfirmed ? 'Claimed!' : 'Claiming'}\n \n {!claimConfirmed && (\n \n {unclaimedAmount?.toFixed(0, { groupSeparator: ',' } ?? '-')} UNI\n \n )}\n \n {claimConfirmed && (\n <>\n \n \n \n 🎉{' '}\n \n Welcome to team Unicorn :){' '}\n \n 🎉\n \n \n \n \n )}\n {attempting && !claimSubmitted && (\n \n Confirm this transaction in your wallet\n \n )}\n {attempting && claimSubmitted && !claimConfirmed && chainId && claimTxn?.hash && (\n \n View transaction on Explorer\n \n )}\n \n \n )}\n \n )\n}\n","var _path, _path2, _path3;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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\nfunction SvgMenu(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 13C12.5523 13 13 12.5523 13 12C13 11.4477 12.5523 11 12 11C11.4477 11 11 11.4477 11 12C11 12.5523 11.4477 13 12 13Z\",\n stroke: \"black\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19 13C19.5523 13 20 12.5523 20 12C20 11.4477 19.5523 11 19 11C18.4477 11 18 11.4477 18 12C18 12.5523 18.4477 13 19 13Z\",\n stroke: \"black\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5 13C5.55228 13 6 12.5523 6 12C6 11.4477 5.55228 11 5 11C4.44772 11 4 11.4477 4 12C4 12.5523 4.44772 13 5 13Z\",\n stroke: \"black\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgMenu);\nexport default __webpack_public_path__ + \"static/media/menu.79681e1f.svg\";\nexport { ForwardRef as ReactComponent };","import { RefObject, useEffect, useRef } from 'react'\n\nexport function useOnClickOutside(\n node: RefObject,\n handler: undefined | (() => void)\n) {\n const handlerRef = useRef void)>(handler)\n useEffect(() => {\n handlerRef.current = handler\n }, [handler])\n\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n if (node.current?.contains(e.target as Node) ?? false) {\n return\n }\n if (handlerRef.current) handlerRef.current()\n }\n\n document.addEventListener('mousedown', handleClickOutside)\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside)\n }\n }, [node])\n}\n","import ReactGA from 'react-ga'\nimport { stringify } from 'qs'\nimport useParsedQueryString from 'hooks/useParsedQueryString'\nimport { useLocation } from 'react-router-dom'\nimport { LocationDescriptor } from 'history'\nimport { SupportedLocale } from 'constants/locales'\nimport { useActiveLocale } from './useActiveLocale'\nimport { useMemo } from 'react'\n\nexport function useLocationLinkProps(locale: SupportedLocale | null): {\n to?: LocationDescriptor\n onClick?: () => void\n} {\n const location = useLocation()\n const qs = useParsedQueryString()\n const activeLocale = useActiveLocale()\n\n return useMemo(\n () =>\n !locale\n ? {}\n : {\n to: {\n ...location,\n search: stringify({ ...qs, lng: locale }),\n },\n onClick: () => {\n ReactGA.event({\n category: 'Localization',\n action: 'Switch Locale',\n label: `${activeLocale} -> ${locale}`,\n })\n },\n },\n [location, qs, activeLocale, locale]\n )\n}\n","import React, { useEffect, useRef, useState } from 'react'\nimport {\n BookOpen,\n Code,\n Info,\n MessageCircle,\n PieChart,\n Moon,\n Sun,\n ChevronRight,\n ChevronLeft,\n Check,\n} from 'react-feather'\nimport { Link } from 'react-router-dom'\nimport styled, { css } from 'styled-components/macro'\nimport { ReactComponent as MenuIcon } from '../../assets/images/menu.svg'\nimport { useActiveWeb3React } from '../../hooks/web3'\nimport { useOnClickOutside } from '../../hooks/useOnClickOutside'\nimport { ApplicationModal } from '../../state/application/actions'\nimport { useModalOpen, useToggleModal } from '../../state/application/hooks'\nimport { Trans } from '@lingui/macro'\nimport { ExternalLink } from '../../theme'\nimport { ButtonPrimary } from '../Button'\nimport { useDarkModeManager } from 'state/user/hooks'\n\nimport { L2_CHAIN_IDS, CHAIN_INFO, SupportedChainId } from 'constants/chains'\nimport { LOCALE_LABEL, SupportedLocale, SUPPORTED_LOCALES } from 'constants/locales'\nimport { useLocationLinkProps } from 'hooks/useLocationLinkProps'\nimport { useActiveLocale } from 'hooks/useActiveLocale'\n\nexport enum FlyoutAlignment {\n LEFT = 'LEFT',\n RIGHT = 'RIGHT',\n}\n\nconst StyledMenuIcon = styled(MenuIcon)`\n path {\n stroke: ${({ theme }) => theme.text1};\n }\n`\n\nconst StyledMenuButton = styled.button`\n width: 100%;\n height: 100%;\n border: none;\n background-color: transparent;\n margin: 0;\n padding: 0;\n height: 38px;\n background-color: ${({ theme }) => theme.bg0};\n border: 1px solid ${({ theme }) => theme.bg0};\n\n padding: 0.15rem 0.5rem;\n border-radius: 12px;\n\n :hover,\n :focus {\n cursor: pointer;\n outline: none;\n border: 1px solid ${({ theme }) => theme.bg3};\n }\n\n svg {\n margin-top: 2px;\n }\n`\n\nconst UNIbutton = styled(ButtonPrimary)`\n background-color: ${({ theme }) => theme.bg3};\n background: radial-gradient(174.47% 188.91% at 1.84% 0%, #ff007a 0%, #2172e5 100%), #edeef2;\n border: none;\n`\n\nconst StyledMenu = styled.div`\n margin-left: 0.5rem;\n display: flex;\n justify-content: center;\n align-items: center;\n position: relative;\n border: none;\n text-align: left;\n`\n\nconst MenuFlyout = styled.span<{ flyoutAlignment?: FlyoutAlignment }>`\n min-width: 196px;\n max-height: 350px;\n overflow: auto;\n background-color: ${({ theme }) => theme.bg1};\n box-shadow: 0px 0px 1px rgba(0, 0, 0, 0.01), 0px 4px 8px rgba(0, 0, 0, 0.04), 0px 16px 24px rgba(0, 0, 0, 0.04),\n 0px 24px 32px rgba(0, 0, 0, 0.01);\n border: 1px solid ${({ theme }) => theme.bg0};\n border-radius: 12px;\n padding: 0.5rem;\n display: flex;\n flex-direction: column;\n font-size: 16px;\n position: absolute;\n top: 3rem;\n z-index: 100;\n\n ${({ flyoutAlignment = FlyoutAlignment.RIGHT }) =>\n flyoutAlignment === FlyoutAlignment.RIGHT\n ? css`\n right: 0rem;\n `\n : css`\n left: 0rem;\n `};\n ${({ theme }) => theme.mediaWidth.upToMedium`\n bottom: unset;\n right: 0;\n left: unset;\n `};\n`\n\nconst MenuItem = styled(ExternalLink)`\n display: flex;\n flex: 1;\n flex-direction: row;\n align-items: center;\n padding: 0.5rem 0.5rem;\n justify-content: space-between;\n color: ${({ theme }) => theme.text2};\n :hover {\n color: ${({ theme }) => theme.text1};\n cursor: pointer;\n text-decoration: none;\n }\n`\n\nconst InternalMenuItem = styled(Link)`\n flex: 1;\n padding: 0.5rem 0.5rem;\n color: ${({ theme }) => theme.text2};\n :hover {\n color: ${({ theme }) => theme.text1};\n cursor: pointer;\n text-decoration: none;\n }\n > svg {\n margin-right: 8px;\n }\n`\n\nconst InternalLinkMenuItem = styled(InternalMenuItem)`\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: 0.5rem 0.5rem;\n justify-content: space-between;\n text-decoration: none;\n :hover {\n color: ${({ theme }) => theme.text1};\n cursor: pointer;\n text-decoration: none;\n }\n`\n\nconst ToggleMenuItem = styled.button`\n background-color: transparent;\n margin: 0;\n padding: 0;\n border: none;\n display: flex;\n flex: 1;\n flex-direction: row;\n align-items: center;\n padding: 0.5rem 0.5rem;\n justify-content: space-between;\n font-size: 1rem;\n font-weight: 500;\n color: ${({ theme }) => theme.text2};\n :hover {\n color: ${({ theme }) => theme.text1};\n cursor: pointer;\n text-decoration: none;\n }\n`\n\nconst CODE_LINK = 'https://github.com/Uniswap/uniswap-interface'\n\nfunction LanguageMenuItem({ locale, active, key }: { locale: SupportedLocale; active: boolean; key: string }) {\n const { to, onClick } = useLocationLinkProps(locale)\n\n if (!to) return null\n\n return (\n \n
{LOCALE_LABEL[locale]}
\n {active && }\n
\n )\n}\n\nfunction LanguageMenu({ close }: { close: () => void }) {\n const activeLocale = useActiveLocale()\n\n return (\n \n \n \n \n {SUPPORTED_LOCALES.map((locale) => (\n \n ))}\n \n )\n}\n\nexport default function Menu() {\n const { account, chainId } = useActiveWeb3React()\n\n const node = useRef()\n const open = useModalOpen(ApplicationModal.MENU)\n const toggle = useToggleModal(ApplicationModal.MENU)\n useOnClickOutside(node, open ? toggle : undefined)\n const openClaimModal = useToggleModal(ApplicationModal.ADDRESS_CLAIM)\n const showUNIClaimOption = Boolean(!!account && !!chainId && !L2_CHAIN_IDS.includes(chainId))\n const { infoLink } = CHAIN_INFO[chainId ? chainId : SupportedChainId.MAINNET]\n\n const [darkMode, toggleDarkMode] = useDarkModeManager()\n\n const [menu, setMenu] = useState<'main' | 'lang'>('main')\n\n useEffect(() => {\n setMenu('main')\n }, [open])\n\n return (\n // https://github.com/DefinitelyTyped/DefinitelyTyped/issues/30451\n \n \n \n \n\n {open &&\n (() => {\n switch (menu) {\n case 'lang':\n return setMenu('main')} />\n case 'main':\n default:\n return (\n \n \n
\n About\n
\n \n
\n \n
\n Docs\n
\n \n
\n \n
\n Code\n
\n \n
\n \n
\n Discord\n
\n \n
\n \n
\n Analytics\n
\n \n
\n setMenu('lang')}>\n
\n Language\n
\n \n
\n toggleDarkMode()}>\n
{darkMode ? Light Theme : Dark Theme}
\n {darkMode ? : }\n
\n {showUNIClaimOption && (\n \n Claim UNI\n \n )}\n
\n )\n }\n })()}\n
\n )\n}\n\ninterface NewMenuProps {\n flyoutAlignment?: FlyoutAlignment\n ToggleUI?: React.FunctionComponent\n menuItems: {\n content: any\n link: string\n external: boolean\n }[]\n}\n\nconst NewMenuFlyout = styled(MenuFlyout)`\n top: 3rem !important;\n`\nconst NewMenuItem = styled(InternalMenuItem)`\n width: max-content;\n text-decoration: none;\n`\n\nconst ExternalMenuItem = styled(MenuItem)`\n width: max-content;\n text-decoration: none;\n`\n\nexport const NewMenu = ({ flyoutAlignment = FlyoutAlignment.RIGHT, ToggleUI, menuItems, ...rest }: NewMenuProps) => {\n const node = useRef()\n const open = useModalOpen(ApplicationModal.POOL_OVERVIEW_OPTIONS)\n const toggle = useToggleModal(ApplicationModal.POOL_OVERVIEW_OPTIONS)\n useOnClickOutside(node, open ? toggle : undefined)\n const ToggleElement = ToggleUI || StyledMenuIcon\n return (\n \n \n {open && (\n \n {menuItems.map(({ content, link, external }, i) =>\n external ? (\n \n {content}\n \n ) : (\n \n {content}\n \n )\n )}\n \n )}\n \n )\n}\n","import { transparentize } from 'polished'\nimport { ReactNode } from 'react'\n\nimport { AlertTriangle } from 'react-feather'\nimport styled, { css } from 'styled-components/macro'\nimport { Text } from 'rebass'\nimport { AutoColumn } from '../Column'\n\nexport const Wrapper = styled.div`\n position: relative;\n padding: 8px;\n`\n\nexport const ArrowWrapper = styled.div<{ clickable: boolean }>`\n padding: 4px;\n border-radius: 12px;\n height: 32px;\n width: 32px;\n position: relative;\n margin-top: -14px;\n margin-bottom: -14px;\n left: calc(50% - 16px);\n /* transform: rotate(90deg); */\n background-color: ${({ theme }) => theme.bg1};\n border: 4px solid ${({ theme }) => theme.bg0};\n z-index: 2;\n ${({ clickable }) =>\n clickable\n ? css`\n :hover {\n cursor: pointer;\n opacity: 0.8;\n }\n `\n : null}\n`\n\nexport const SectionBreak = styled.div`\n height: 1px;\n width: 100%;\n background-color: ${({ theme }) => theme.bg3};\n`\n\nexport const ErrorText = styled(Text)<{ severity?: 0 | 1 | 2 | 3 | 4 }>`\n color: ${({ theme, severity }) =>\n severity === 3 || severity === 4\n ? theme.red1\n : severity === 2\n ? theme.yellow2\n : severity === 1\n ? theme.text1\n : theme.text2};\n`\n\nexport const TruncatedText = styled(Text)`\n text-overflow: ellipsis;\n max-width: 220px;\n overflow: hidden;\n text-align: right;\n`\n\n// styles\nexport const Dots = styled.span`\n &::after {\n display: inline-block;\n animation: ellipsis 1.25s infinite;\n content: '.';\n width: 1em;\n text-align: left;\n }\n @keyframes ellipsis {\n 0% {\n content: '.';\n }\n 33% {\n content: '..';\n }\n 66% {\n content: '...';\n }\n }\n`\n\nconst SwapCallbackErrorInner = styled.div`\n background-color: ${({ theme }) => transparentize(0.9, theme.red1)};\n border-radius: 1rem;\n display: flex;\n align-items: center;\n font-size: 0.825rem;\n width: 100%;\n padding: 3rem 1.25rem 1rem 1rem;\n margin-top: -2rem;\n color: ${({ theme }) => theme.red1};\n z-index: -1;\n p {\n padding: 0;\n margin: 0;\n font-weight: 500;\n }\n`\n\nconst SwapCallbackErrorInnerAlertTriangle = styled.div`\n background-color: ${({ theme }) => transparentize(0.9, theme.red1)};\n display: flex;\n align-items: center;\n justify-content: center;\n margin-right: 12px;\n border-radius: 12px;\n min-width: 48px;\n height: 48px;\n`\n\nexport function SwapCallbackError({ error }: { error: ReactNode }) {\n return (\n \n \n \n \n

{error}

\n
\n )\n}\n\nexport const SwapShowAcceptChanges = styled(AutoColumn)`\n background-color: ${({ theme }) => transparentize(0.95, theme.primary3)};\n color: ${({ theme }) => theme.primaryText1};\n padding: 0.5rem;\n border-radius: 12px;\n margin-top: 8px;\n`\n","export default __webpack_public_path__ + \"static/media/coinbaseWalletIcon.a3a7d7fd.svg\";","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/portisIcon.f44aba13.png\";","export default __webpack_public_path__ + \"static/media/walletConnectIcon.304e3277.svg\";","import { useMemo } from 'react'\nimport { useActiveWeb3React } from './web3'\nimport { useTokenBalance } from 'state/wallet/hooks'\nimport { SOCKS_CONTROLLER_ADDRESSES } from 'constants/addresses'\nimport { Token } from '@uniswap/sdk-core'\nimport { SupportedChainId } from 'constants/chains'\n\n// technically a 721, not an ERC20, but suffices for our purposes\nconst SOCKS = new Token(SupportedChainId.MAINNET, SOCKS_CONTROLLER_ADDRESSES[SupportedChainId.MAINNET], 0)\n\nexport function useHasSocks(): boolean | undefined {\n const { account, chainId } = useActiveWeb3React()\n\n const balance = useTokenBalance(account ?? undefined, chainId === SupportedChainId.MAINNET ? SOCKS : undefined)\n\n return useMemo(() => Boolean(balance?.greaterThan(0)), [balance])\n}\n","import { useEffect, useRef } from 'react'\n\nimport styled from 'styled-components/macro'\n\nimport { useActiveWeb3React } from '../../hooks/web3'\nimport Jazzicon from '@metamask/jazzicon'\n\nconst StyledIdenticonContainer = styled.div`\n height: 1rem;\n width: 1rem;\n border-radius: 1.125rem;\n background-color: ${({ theme }) => theme.bg4};\n`\n\nexport default function Identicon() {\n const ref = useRef()\n\n const { account } = useActiveWeb3React()\n\n useEffect(() => {\n if (account && ref.current) {\n ref.current.innerHTML = ''\n ref.current.appendChild(Jazzicon(16, parseInt(account.slice(2, 10), 16)))\n }\n }, [account])\n\n // https://github.com/DefinitelyTyped/DefinitelyTyped/issues/30451\n return \n}\n","import styled, { keyframes } from 'styled-components/macro'\n\nconst rotate = keyframes`\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n`\n\nconst StyledSVG = styled.svg<{ size: string; stroke?: string }>`\n animation: 2s ${rotate} linear infinite;\n height: ${({ size }) => size};\n width: ${({ size }) => size};\n path {\n stroke: ${({ stroke, theme }) => stroke ?? theme.primary1};\n }\n`\n\n/**\n * Takes in custom size and stroke for circle color, default to primary color as fill,\n * need ...rest for layered styles on top\n */\nexport default function Loader({\n size = '16px',\n stroke,\n ...rest\n}: {\n size?: string\n stroke?: string\n [k: string]: any\n}) {\n return (\n \n \n \n )\n}\n","export default __webpack_public_path__ + \"static/media/metamask.02e3ec27.png\";","var _line, _line2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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\nfunction SvgX(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n className: \"feather feather-x\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _line || (_line = /*#__PURE__*/React.createElement(\"line\", {\n x1: 18,\n y1: 6,\n x2: 6,\n y2: 18\n })), _line2 || (_line2 = /*#__PURE__*/React.createElement(\"line\", {\n x1: 6,\n y1: 6,\n x2: 18,\n y2: 18\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgX);\nexport default __webpack_public_path__ + \"static/media/x.33076876.svg\";\nexport { ForwardRef as ReactComponent };","export default __webpack_public_path__ + \"static/media/arrow-right.956d575c.svg\";","import { AbstractConnector } from '@web3-react/abstract-connector'\nimport INJECTED_ICON_URL from '../assets/images/arrow-right.svg'\nimport COINBASE_ICON_URL from '../assets/images/coinbaseWalletIcon.svg'\nimport FORTMATIC_ICON_URL from '../assets/images/fortmaticIcon.png'\nimport METAMASK_ICON_URL from '../assets/images/metamask.png'\nimport PORTIS_ICON_URL from '../assets/images/portisIcon.png'\nimport WALLETCONNECT_ICON_URL from '../assets/images/walletConnectIcon.svg'\nimport { fortmatic, injected, portis, walletconnect, walletlink } from '../connectors'\n\ninterface WalletInfo {\n connector?: AbstractConnector\n name: string\n iconURL: string\n description: string\n href: string | null\n color: string\n primary?: true\n mobile?: true\n mobileOnly?: true\n}\n\nexport const SUPPORTED_WALLETS: { [key: string]: WalletInfo } = {\n INJECTED: {\n connector: injected,\n name: 'Injected',\n iconURL: INJECTED_ICON_URL,\n description: 'Injected web3 provider.',\n href: null,\n color: '#010101',\n primary: true,\n },\n METAMASK: {\n connector: injected,\n name: 'MetaMask',\n iconURL: METAMASK_ICON_URL,\n description: 'Easy-to-use browser extension.',\n href: null,\n color: '#E8831D',\n },\n WALLET_CONNECT: {\n connector: walletconnect,\n name: 'WalletConnect',\n iconURL: WALLETCONNECT_ICON_URL,\n description: 'Connect to Trust Wallet, Rainbow Wallet and more...',\n href: null,\n color: '#4196FC',\n mobile: true,\n },\n WALLET_LINK: {\n connector: walletlink,\n name: 'Coinbase Wallet',\n iconURL: COINBASE_ICON_URL,\n description: 'Use Coinbase Wallet app on mobile device',\n href: null,\n color: '#315CF5',\n },\n COINBASE_LINK: {\n name: 'Open in Coinbase Wallet',\n iconURL: COINBASE_ICON_URL,\n description: 'Open in Coinbase Wallet app.',\n href: 'https://go.cb-w.com/mtUDhEZPy1',\n color: '#315CF5',\n mobile: true,\n mobileOnly: true,\n },\n FORTMATIC: {\n connector: fortmatic,\n name: 'Fortmatic',\n iconURL: FORTMATIC_ICON_URL,\n description: 'Login using Fortmatic hosted wallet',\n href: null,\n color: '#6748FF',\n mobile: true,\n },\n Portis: {\n connector: portis,\n name: 'Portis',\n iconURL: PORTIS_ICON_URL,\n description: 'Login using Portis hosted wallet',\n href: null,\n color: '#4A6C9B',\n mobile: true,\n },\n}\n","import { useEffect, useRef } from 'react'\n\n// modified from https://usehooks.com/usePrevious/\nexport default function usePrevious(value: T) {\n // The ref object is a generic container whose current property is mutable ...\n // ... and can hold any value, similar to an instance property on a class\n const ref = useRef()\n\n // Store current value in ref\n useEffect(() => {\n ref.current = value\n }, [value]) // Only re-run if value changes\n\n // Return previous value (happens before update in useEffect above)\n return ref.current\n}\n","import React from 'react'\nimport styled from 'styled-components/macro'\nimport useCopyClipboard from '../../hooks/useCopyClipboard'\n\nimport { LinkStyledButton } from '../../theme'\nimport { CheckCircle, Copy } from 'react-feather'\nimport { Trans } from '@lingui/macro'\n\nconst CopyIcon = styled(LinkStyledButton)`\n color: ${({ theme }) => theme.text3};\n flex-shrink: 0;\n display: flex;\n text-decoration: none;\n font-size: 0.825rem;\n :hover,\n :active,\n :focus {\n text-decoration: none;\n color: ${({ theme }) => theme.text2};\n }\n`\nconst TransactionStatusText = styled.span`\n margin-left: 0.25rem;\n font-size: 0.825rem;\n ${({ theme }) => theme.flexRowNoWrap};\n align-items: center;\n`\n\nexport default function CopyHelper(props: { toCopy: string; children?: React.ReactNode }) {\n const [isCopied, setCopied] = useCopyClipboard()\n\n return (\n setCopied(props.toCopy)}>\n {isCopied ? (\n \n \n \n Copied\n \n \n ) : (\n \n \n \n )}\n {isCopied ? '' : props.children}\n \n )\n}\n","import copy from 'copy-to-clipboard'\nimport { useCallback, useEffect, useState } from 'react'\n\nexport default function useCopyClipboard(timeout = 500): [boolean, (toCopy: string) => void] {\n const [isCopied, setIsCopied] = useState(false)\n\n const staticCopy = useCallback((text) => {\n const didCopy = copy(text)\n setIsCopied(didCopy)\n }, [])\n\n useEffect(() => {\n if (isCopied) {\n const hide = setTimeout(() => {\n setIsCopied(false)\n }, timeout)\n\n return () => {\n clearTimeout(hide)\n }\n }\n return undefined\n }, [isCopied, setIsCopied, timeout])\n\n return [isCopied, staticCopy]\n}\n","import styled from 'styled-components/macro'\nimport { CheckCircle, Triangle } from 'react-feather'\n\nimport { useActiveWeb3React } from '../../hooks/web3'\nimport { ExternalLink } from '../../theme'\nimport { useAllTransactions } from '../../state/transactions/hooks'\nimport { ExplorerDataType, getExplorerLink } from '../../utils/getExplorerLink'\nimport { RowFixed } from '../Row'\nimport Loader from '../Loader'\n\nconst TransactionWrapper = styled.div``\n\nconst TransactionStatusText = styled.div`\n margin-right: 0.5rem;\n display: flex;\n align-items: center;\n :hover {\n text-decoration: underline;\n }\n`\n\nconst TransactionState = styled(ExternalLink)<{ pending: boolean; success?: boolean }>`\n display: flex;\n justify-content: space-between;\n align-items: center;\n text-decoration: none !important;\n border-radius: 0.5rem;\n padding: 0.25rem 0rem;\n font-weight: 500;\n font-size: 0.825rem;\n color: ${({ theme }) => theme.primary1};\n`\n\nconst IconWrapper = styled.div<{ pending: boolean; success?: boolean }>`\n color: ${({ pending, success, theme }) => (pending ? theme.primary1 : success ? theme.green1 : theme.red1)};\n`\n\nexport default function Transaction({ hash }: { hash: string }) {\n const { chainId } = useActiveWeb3React()\n const allTransactions = useAllTransactions()\n\n const tx = allTransactions?.[hash]\n const summary = tx?.summary\n const pending = !tx?.receipt\n const success = !pending && tx && (tx.receipt?.status === 1 || typeof tx.receipt?.status === 'undefined')\n\n if (!chainId) return null\n\n return (\n \n \n \n {summary ?? hash} ↗\n \n \n {pending ? : success ? : }\n \n \n \n )\n}\n","import { useCallback, useContext } from 'react'\nimport styled, { ThemeContext } from 'styled-components/macro'\nimport { SUPPORTED_WALLETS } from '../../constants/wallet'\nimport { useActiveWeb3React } from '../../hooks/web3'\nimport { clearAllTransactions } from '../../state/transactions/actions'\nimport { shortenAddress } from '../../utils'\nimport { ExplorerDataType, getExplorerLink } from '../../utils/getExplorerLink'\nimport { AutoRow } from '../Row'\nimport Copy from './Copy'\nimport Transaction from './Transaction'\n\nimport { ReactComponent as Close } from '../../assets/images/x.svg'\nimport { injected, walletconnect, walletlink, fortmatic, portis } from '../../connectors'\nimport CoinbaseWalletIcon from '../../assets/images/coinbaseWalletIcon.svg'\nimport WalletConnectIcon from '../../assets/images/walletConnectIcon.svg'\nimport FortmaticIcon from '../../assets/images/fortmaticIcon.png'\nimport PortisIcon from '../../assets/images/portisIcon.png'\nimport Identicon from '../Identicon'\nimport { ButtonSecondary } from '../Button'\nimport { ExternalLink as LinkIcon } from 'react-feather'\nimport { ExternalLink, LinkStyledButton, TYPE } from '../../theme'\nimport { Trans } from '@lingui/macro'\nimport { useAppDispatch } from 'state/hooks'\n\nconst HeaderRow = styled.div`\n ${({ theme }) => theme.flexRowNoWrap};\n padding: 1rem 1rem;\n font-weight: 500;\n color: ${(props) => (props.color === 'blue' ? ({ theme }) => theme.primary1 : 'inherit')};\n ${({ theme }) => theme.mediaWidth.upToMedium`\n padding: 1rem;\n `};\n`\n\nconst UpperSection = styled.div`\n position: relative;\n\n h5 {\n margin: 0;\n margin-bottom: 0.5rem;\n font-size: 1rem;\n font-weight: 400;\n }\n\n h5:last-child {\n margin-bottom: 0px;\n }\n\n h4 {\n margin-top: 0;\n font-weight: 500;\n }\n`\n\nconst InfoCard = styled.div`\n padding: 1rem;\n border: 1px solid ${({ theme }) => theme.bg3};\n border-radius: 20px;\n position: relative;\n display: grid;\n grid-row-gap: 12px;\n margin-bottom: 20px;\n`\n\nconst AccountGroupingRow = styled.div`\n ${({ theme }) => theme.flexRowNoWrap};\n justify-content: space-between;\n align-items: center;\n font-weight: 400;\n color: ${({ theme }) => theme.text1};\n\n div {\n ${({ theme }) => theme.flexRowNoWrap}\n align-items: center;\n }\n`\n\nconst AccountSection = styled.div`\n padding: 0rem 1rem;\n ${({ theme }) => theme.mediaWidth.upToMedium`padding: 0rem 1rem 1.5rem 1rem;`};\n`\n\nconst YourAccount = styled.div`\n h5 {\n margin: 0 0 1rem 0;\n font-weight: 400;\n }\n\n h4 {\n margin: 0;\n font-weight: 500;\n }\n`\n\nconst LowerSection = styled.div`\n ${({ theme }) => theme.flexColumnNoWrap}\n padding: 1.5rem;\n flex-grow: 1;\n overflow: auto;\n background-color: ${({ theme }) => theme.bg2};\n border-bottom-left-radius: 20px;\n border-bottom-right-radius: 20px;\n\n h5 {\n margin: 0;\n font-weight: 400;\n color: ${({ theme }) => theme.text3};\n }\n`\n\nconst AccountControl = styled.div`\n display: flex;\n justify-content: space-between;\n min-width: 0;\n width: 100%;\n\n font-weight: 500;\n font-size: 1.25rem;\n\n a:hover {\n text-decoration: underline;\n }\n\n p {\n min-width: 0;\n margin: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n`\n\nconst AddressLink = styled(ExternalLink)<{ hasENS: boolean; isENS: boolean }>`\n font-size: 0.825rem;\n color: ${({ theme }) => theme.text3};\n margin-left: 1rem;\n font-size: 0.825rem;\n display: flex;\n :hover {\n color: ${({ theme }) => theme.text2};\n }\n`\n\nconst CloseIcon = styled.div`\n position: absolute;\n right: 1rem;\n top: 14px;\n &:hover {\n cursor: pointer;\n opacity: 0.6;\n }\n`\n\nconst CloseColor = styled(Close)`\n path {\n stroke: ${({ theme }) => theme.text4};\n }\n`\n\nconst WalletName = styled.div`\n width: initial;\n font-size: 0.825rem;\n font-weight: 500;\n color: ${({ theme }) => theme.text3};\n`\n\nconst IconWrapper = styled.div<{ size?: number }>`\n ${({ theme }) => theme.flexColumnNoWrap};\n align-items: center;\n justify-content: center;\n margin-right: 8px;\n & > img,\n span {\n height: ${({ size }) => (size ? size + 'px' : '32px')};\n width: ${({ size }) => (size ? size + 'px' : '32px')};\n }\n ${({ theme }) => theme.mediaWidth.upToMedium`\n align-items: flex-end;\n `};\n`\n\nconst TransactionListWrapper = styled.div`\n ${({ theme }) => theme.flexColumnNoWrap};\n`\n\nconst WalletAction = styled(ButtonSecondary)`\n width: fit-content;\n font-weight: 400;\n margin-left: 8px;\n font-size: 0.825rem;\n padding: 4px 6px;\n :hover {\n cursor: pointer;\n text-decoration: underline;\n }\n`\n\nconst MainWalletAction = styled(WalletAction)`\n color: ${({ theme }) => theme.primary1};\n`\n\nfunction renderTransactions(transactions: string[]) {\n return (\n \n {transactions.map((hash, i) => {\n return \n })}\n \n )\n}\n\ninterface AccountDetailsProps {\n toggleWalletModal: () => void\n pendingTransactions: string[]\n confirmedTransactions: string[]\n ENSName?: string\n openOptions: () => void\n}\n\nexport default function AccountDetails({\n toggleWalletModal,\n pendingTransactions,\n confirmedTransactions,\n ENSName,\n openOptions,\n}: AccountDetailsProps) {\n const { chainId, account, connector } = useActiveWeb3React()\n const theme = useContext(ThemeContext)\n const dispatch = useAppDispatch()\n\n function formatConnectorName() {\n const { ethereum } = window\n const isMetaMask = !!(ethereum && ethereum.isMetaMask)\n const name = Object.keys(SUPPORTED_WALLETS)\n .filter(\n (k) =>\n SUPPORTED_WALLETS[k].connector === connector && (connector !== injected || isMetaMask === (k === 'METAMASK'))\n )\n .map((k) => SUPPORTED_WALLETS[k].name)[0]\n return (\n \n Connected with {name}\n \n )\n }\n\n function getStatusIcon() {\n if (connector === injected) {\n return (\n \n \n \n )\n } else if (connector === walletconnect) {\n return (\n \n {'WalletConnect\n \n )\n } else if (connector === walletlink) {\n return (\n \n {'Coinbase\n \n )\n } else if (connector === fortmatic) {\n return (\n \n {'Fortmatic\n \n )\n } else if (connector === portis) {\n return (\n <>\n \n {'Portis\n {\n portis.portis.showPortis()\n }}\n >\n Show Portis\n \n \n \n )\n }\n return null\n }\n\n const clearAllTransactionsCallback = useCallback(() => {\n if (chainId) dispatch(clearAllTransactions({ chainId }))\n }, [dispatch, chainId])\n\n return (\n <>\n \n \n \n \n \n Account\n \n \n \n \n \n {formatConnectorName()}\n
\n {connector !== injected && connector !== walletlink && (\n {\n ;(connector as any).close()\n }}\n >\n Disconnect\n \n )}\n {\n openOptions()\n }}\n >\n Change\n \n
\n
\n \n \n {ENSName ? (\n <>\n
\n {getStatusIcon()}\n

{ENSName}

\n
\n \n ) : (\n <>\n
\n {getStatusIcon()}\n

{account && shortenAddress(account)}

\n
\n \n )}\n
\n
\n \n {ENSName ? (\n <>\n \n
\n {account && (\n \n \n Copy Address\n \n \n )}\n {chainId && account && (\n \n \n \n View on Explorer\n \n \n )}\n
\n
\n \n ) : (\n <>\n \n
\n {account && (\n \n \n Copy Address\n \n \n )}\n {chainId && account && (\n \n \n \n View on Explorer\n \n \n )}\n
\n
\n \n )}\n
\n
\n
\n
\n
\n {!!pendingTransactions.length || !!confirmedTransactions.length ? (\n \n \n \n Recent Transactions\n \n \n (clear all)\n \n \n {renderTransactions(pendingTransactions)}\n {renderTransactions(confirmedTransactions)}\n \n ) : (\n \n \n Your transactions will appear here...\n \n \n )}\n \n )\n}\n","import React from 'react'\nimport styled from 'styled-components/macro'\nimport { ExternalLink } from '../../theme'\n\nconst InfoCard = styled.button<{ active?: boolean }>`\n background-color: ${({ theme, active }) => (active ? theme.bg3 : theme.bg2)};\n padding: 1rem;\n outline: none;\n border: 1px solid;\n border-radius: 12px;\n width: 100% !important;\n &:focus {\n box-shadow: 0 0 0 1px ${({ theme }) => theme.primary1};\n }\n border-color: ${({ theme, active }) => (active ? 'transparent' : theme.bg3)};\n`\n\nconst OptionCard = styled(InfoCard as any)`\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n margin-top: 2rem;\n padding: 1rem;\n`\n\nconst OptionCardLeft = styled.div`\n ${({ theme }) => theme.flexColumnNoWrap};\n justify-content: center;\n height: 100%;\n`\n\nconst OptionCardClickable = styled(OptionCard as any)<{ clickable?: boolean }>`\n margin-top: 0;\n &:hover {\n cursor: ${({ clickable }) => (clickable ? 'pointer' : '')};\n border: ${({ clickable, theme }) => (clickable ? `1px solid ${theme.primary1}` : ``)};\n }\n opacity: ${({ disabled }) => (disabled ? '0.5' : '1')};\n`\n\nconst GreenCircle = styled.div`\n ${({ theme }) => theme.flexRowNoWrap}\n justify-content: center;\n align-items: center;\n\n &:first-child {\n height: 8px;\n width: 8px;\n margin-right: 8px;\n background-color: ${({ theme }) => theme.green1};\n border-radius: 50%;\n }\n`\n\nconst CircleWrapper = styled.div`\n color: ${({ theme }) => theme.green1};\n display: flex;\n justify-content: center;\n align-items: center;\n`\n\nconst HeaderText = styled.div`\n ${({ theme }) => theme.flexRowNoWrap};\n color: ${(props) => (props.color === 'blue' ? ({ theme }) => theme.primary1 : ({ theme }) => theme.text1)};\n font-size: 1rem;\n font-weight: 500;\n`\n\nconst SubHeader = styled.div`\n color: ${({ theme }) => theme.text1};\n margin-top: 10px;\n font-size: 12px;\n`\n\nconst IconWrapper = styled.div<{ size?: number | null }>`\n ${({ theme }) => theme.flexColumnNoWrap};\n align-items: center;\n justify-content: center;\n & > img,\n span {\n height: ${({ size }) => (size ? size + 'px' : '24px')};\n width: ${({ size }) => (size ? size + 'px' : '24px')};\n }\n ${({ theme }) => theme.mediaWidth.upToMedium`\n align-items: flex-end;\n `};\n`\n\nexport default function Option({\n link = null,\n clickable = true,\n size,\n onClick = null,\n color,\n header,\n subheader = null,\n icon,\n active = false,\n id,\n}: {\n link?: string | null\n clickable?: boolean\n size?: number | null\n onClick?: null | (() => void)\n color: string\n header: React.ReactNode\n subheader: React.ReactNode | null\n icon: string\n active?: boolean\n id: string\n}) {\n const content = (\n \n \n \n {active ? (\n \n \n
\n \n \n ) : (\n ''\n )}\n {header}\n \n {subheader && {subheader}}\n \n \n {'Icon'}\n \n \n )\n if (link) {\n return {content}\n }\n\n return content\n}\n","import { AbstractConnector } from '@web3-react/abstract-connector'\nimport styled from 'styled-components/macro'\nimport { SUPPORTED_WALLETS } from '../../constants/wallet'\nimport Option from './Option'\nimport { injected } from '../../connectors'\nimport { darken } from 'polished'\nimport Loader from '../Loader'\nimport { Trans } from '@lingui/macro'\n\nconst PendingSection = styled.div`\n ${({ theme }) => theme.flexColumnNoWrap};\n align-items: center;\n justify-content: center;\n width: 100%;\n & > * {\n width: 100%;\n }\n`\n\nconst StyledLoader = styled(Loader)`\n margin-right: 1rem;\n`\n\nconst LoadingMessage = styled.div<{ error?: boolean }>`\n ${({ theme }) => theme.flexRowNoWrap};\n align-items: center;\n justify-content: flex-start;\n border-radius: 12px;\n margin-bottom: 20px;\n color: ${({ theme, error }) => (error ? theme.red1 : 'inherit')};\n border: 1px solid ${({ theme, error }) => (error ? theme.red1 : theme.text4)};\n\n & > * {\n padding: 1rem;\n }\n`\n\nconst ErrorGroup = styled.div`\n ${({ theme }) => theme.flexRowNoWrap};\n align-items: center;\n justify-content: flex-start;\n`\n\nconst ErrorButton = styled.div`\n border-radius: 8px;\n font-size: 12px;\n color: ${({ theme }) => theme.text1};\n background-color: ${({ theme }) => theme.bg4};\n margin-left: 1rem;\n padding: 0.5rem;\n font-weight: 600;\n user-select: none;\n\n &:hover {\n cursor: pointer;\n background-color: ${({ theme }) => darken(0.1, theme.text4)};\n }\n`\n\nconst LoadingWrapper = styled.div`\n ${({ theme }) => theme.flexRowNoWrap};\n align-items: center;\n justify-content: center;\n`\n\nexport default function PendingView({\n connector,\n error = false,\n setPendingError,\n tryActivation,\n}: {\n connector?: AbstractConnector\n error?: boolean\n setPendingError: (error: boolean) => void\n tryActivation: (connector: AbstractConnector) => void\n}) {\n const isMetamask = window?.ethereum?.isMetaMask\n\n return (\n \n \n \n {error ? (\n \n
\n Error connecting\n
\n {\n setPendingError(false)\n connector && tryActivation(connector)\n }}\n >\n Try Again\n \n
\n ) : (\n <>\n \n Initializing...\n \n )}\n
\n
\n {Object.keys(SUPPORTED_WALLETS).map((key) => {\n const option = SUPPORTED_WALLETS[key]\n if (option.connector === connector) {\n if (option.connector === injected) {\n if (isMetamask && option.name !== 'MetaMask') {\n return null\n }\n if (!isMetamask && option.name === 'MetaMask') {\n return null\n }\n }\n return (\n \n )\n }\n return null\n })}\n
\n )\n}\n","import styled from 'styled-components/macro'\nimport { Box } from 'rebass/styled-components'\n\nconst Card = styled(Box)<{ width?: string; padding?: string; border?: string; $borderRadius?: string }>`\n width: ${({ width }) => width ?? '100%'};\n padding: ${({ padding }) => padding ?? '1rem'};\n border-radius: ${({ $borderRadius }) => $borderRadius ?? '16px'};\n border: ${({ border }) => border};\n`\nexport default Card\n\nexport const LightCard = styled(Card)`\n border: 1px solid ${({ theme }) => theme.bg2};\n background-color: ${({ theme }) => theme.bg1};\n`\n\nexport const LightGreyCard = styled(Card)`\n background-color: ${({ theme }) => theme.bg2};\n`\n\nexport const GreyCard = styled(Card)`\n background-color: ${({ theme }) => theme.bg3};\n`\n\nexport const DarkGreyCard = styled(Card)`\n background-color: ${({ theme }) => theme.bg2};\n`\n\nexport const DarkCard = styled(Card)`\n background-color: ${({ theme }) => theme.bg0};\n`\n\nexport const OutlineCard = styled(Card)`\n border: 1px solid ${({ theme }) => theme.bg3};\n`\n\nexport const YellowCard = styled(Card)`\n background-color: rgba(243, 132, 30, 0.05);\n color: ${({ theme }) => theme.yellow3};\n font-weight: 500;\n`\n\nexport const BlueCard = styled(Card)`\n background-color: ${({ theme }) => theme.primary5};\n color: ${({ theme }) => theme.blue2};\n border-radius: 12px;\n`\n","import { AbstractConnector } from '@web3-react/abstract-connector'\nimport { UnsupportedChainIdError, useWeb3React } from '@web3-react/core'\nimport { WalletConnectConnector } from '@web3-react/walletconnect-connector'\nimport { AutoRow } from 'components/Row'\nimport { useEffect, useState } from 'react'\nimport { isMobile } from 'react-device-detect'\nimport ReactGA from 'react-ga'\nimport styled from 'styled-components/macro'\nimport MetamaskIcon from '../../assets/images/metamask.png'\nimport { ReactComponent as Close } from '../../assets/images/x.svg'\nimport { fortmatic, injected, portis } from '../../connectors'\nimport { OVERLAY_READY } from '../../connectors/Fortmatic'\nimport { SUPPORTED_WALLETS } from '../../constants/wallet'\nimport usePrevious from '../../hooks/usePrevious'\nimport { ApplicationModal } from '../../state/application/actions'\nimport { useModalOpen, useWalletModalToggle } from '../../state/application/hooks'\nimport { ExternalLink, TYPE } from '../../theme'\nimport AccountDetails from '../AccountDetails'\nimport { Trans } from '@lingui/macro'\n\nimport Modal from '../Modal'\nimport Option from './Option'\nimport PendingView from './PendingView'\nimport { LightCard } from '../Card'\n\nconst CloseIcon = styled.div`\n position: absolute;\n right: 1rem;\n top: 14px;\n &:hover {\n cursor: pointer;\n opacity: 0.6;\n }\n`\n\nconst CloseColor = styled(Close)`\n path {\n stroke: ${({ theme }) => theme.text4};\n }\n`\n\nconst Wrapper = styled.div`\n ${({ theme }) => theme.flexColumnNoWrap}\n margin: 0;\n padding: 0;\n width: 100%;\n`\n\nconst HeaderRow = styled.div`\n ${({ theme }) => theme.flexRowNoWrap};\n padding: 1rem 1rem;\n font-weight: 500;\n color: ${(props) => (props.color === 'blue' ? ({ theme }) => theme.primary1 : 'inherit')};\n ${({ theme }) => theme.mediaWidth.upToMedium`\n padding: 1rem;\n `};\n`\n\nconst ContentWrapper = styled.div`\n background-color: ${({ theme }) => theme.bg0};\n padding: 0 1rem 1rem 1rem;\n border-bottom-left-radius: 20px;\n border-bottom-right-radius: 20px;\n\n ${({ theme }) => theme.mediaWidth.upToMedium`padding: 0 1rem 1rem 1rem`};\n`\n\nconst UpperSection = styled.div`\n position: relative;\n\n h5 {\n margin: 0;\n margin-bottom: 0.5rem;\n font-size: 1rem;\n font-weight: 400;\n }\n\n h5:last-child {\n margin-bottom: 0px;\n }\n\n h4 {\n margin-top: 0;\n font-weight: 500;\n }\n`\n\nconst OptionGrid = styled.div`\n display: grid;\n grid-gap: 10px;\n ${({ theme }) => theme.mediaWidth.upToMedium`\n grid-template-columns: 1fr;\n grid-gap: 10px;\n `};\n`\n\nconst HoverText = styled.div`\n text-decoration: none;\n color: ${({ theme }) => theme.text1};\n display: flex;\n align-items: center;\n\n :hover {\n cursor: pointer;\n }\n`\n\nconst WALLET_VIEWS = {\n OPTIONS: 'options',\n OPTIONS_SECONDARY: 'options_secondary',\n ACCOUNT: 'account',\n PENDING: 'pending',\n}\n\nexport default function WalletModal({\n pendingTransactions,\n confirmedTransactions,\n ENSName,\n}: {\n pendingTransactions: string[] // hashes of pending\n confirmedTransactions: string[] // hashes of confirmed\n ENSName?: string\n}) {\n // important that these are destructed from the account-specific web3-react context\n const { active, account, connector, activate, error } = useWeb3React()\n\n const [walletView, setWalletView] = useState(WALLET_VIEWS.ACCOUNT)\n\n const [pendingWallet, setPendingWallet] = useState()\n\n const [pendingError, setPendingError] = useState()\n\n const walletModalOpen = useModalOpen(ApplicationModal.WALLET)\n const toggleWalletModal = useWalletModalToggle()\n\n const previousAccount = usePrevious(account)\n\n // close on connection, when logged out before\n useEffect(() => {\n if (account && !previousAccount && walletModalOpen) {\n toggleWalletModal()\n }\n }, [account, previousAccount, toggleWalletModal, walletModalOpen])\n\n // always reset to account view\n useEffect(() => {\n if (walletModalOpen) {\n setPendingError(false)\n setWalletView(WALLET_VIEWS.ACCOUNT)\n }\n }, [walletModalOpen])\n\n // close modal when a connection is successful\n const activePrevious = usePrevious(active)\n const connectorPrevious = usePrevious(connector)\n useEffect(() => {\n if (walletModalOpen && ((active && !activePrevious) || (connector && connector !== connectorPrevious && !error))) {\n setWalletView(WALLET_VIEWS.ACCOUNT)\n }\n }, [setWalletView, active, error, connector, walletModalOpen, activePrevious, connectorPrevious])\n\n const tryActivation = async (connector: AbstractConnector | undefined) => {\n let name = ''\n Object.keys(SUPPORTED_WALLETS).map((key) => {\n if (connector === SUPPORTED_WALLETS[key].connector) {\n return (name = SUPPORTED_WALLETS[key].name)\n }\n return true\n })\n // log selected wallet\n ReactGA.event({\n category: 'Wallet',\n action: 'Change Wallet',\n label: name,\n })\n setPendingWallet(connector) // set wallet for pending view\n setWalletView(WALLET_VIEWS.PENDING)\n\n // if the connector is walletconnect and the user has already tried to connect, manually reset the connector\n if (connector instanceof WalletConnectConnector && connector.walletConnectProvider?.wc?.uri) {\n connector.walletConnectProvider = undefined\n }\n\n connector &&\n activate(connector, undefined, true).catch((error) => {\n if (error instanceof UnsupportedChainIdError) {\n activate(connector) // a little janky...can't use setError because the connector isn't set\n } else {\n setPendingError(true)\n }\n })\n }\n\n // close wallet modal if fortmatic modal is active\n useEffect(() => {\n fortmatic.on(OVERLAY_READY, () => {\n toggleWalletModal()\n })\n }, [toggleWalletModal])\n\n // get wallets user can switch too, depending on device/browser\n function getOptions() {\n const isMetamask = window.ethereum && window.ethereum.isMetaMask\n return Object.keys(SUPPORTED_WALLETS).map((key) => {\n const option = SUPPORTED_WALLETS[key]\n // check for mobile options\n if (isMobile) {\n //disable portis on mobile for now\n if (option.connector === portis) {\n return null\n }\n\n if (!window.web3 && !window.ethereum && option.mobile) {\n return (\n {\n option.connector !== connector && !option.href && tryActivation(option.connector)\n }}\n id={`connect-${key}`}\n key={key}\n active={option.connector && option.connector === connector}\n color={option.color}\n link={option.href}\n header={option.name}\n subheader={null}\n icon={option.iconURL}\n />\n )\n }\n return null\n }\n\n // overwrite injected when needed\n if (option.connector === injected) {\n // don't show injected if there's no injected provider\n if (!(window.web3 || window.ethereum)) {\n if (option.name === 'MetaMask') {\n return (\n Install Metamask}\n subheader={null}\n link={'https://metamask.io/'}\n icon={MetamaskIcon}\n />\n )\n } else {\n return null //dont want to return install twice\n }\n }\n // don't return metamask if injected provider isn't metamask\n else if (option.name === 'MetaMask' && !isMetamask) {\n return null\n }\n // likewise for generic\n else if (option.name === 'Injected' && isMetamask) {\n return null\n }\n }\n\n // return rest of options\n return (\n !isMobile &&\n !option.mobileOnly && (\n {\n option.connector === connector\n ? setWalletView(WALLET_VIEWS.ACCOUNT)\n : !option.href && tryActivation(option.connector)\n }}\n key={key}\n active={option.connector === connector}\n color={option.color}\n link={option.href}\n header={option.name}\n subheader={null} //use option.descriptio to bring back multi-line\n icon={option.iconURL}\n />\n )\n )\n })\n }\n\n function getModalContent() {\n if (error) {\n return (\n \n \n \n \n \n {error instanceof UnsupportedChainIdError ? Wrong Network : Error connecting}\n \n \n {error instanceof UnsupportedChainIdError ? (\n
\n Please connect to the appropriate Ethereum network.\n
\n ) : (\n Error connecting. Try refreshing the page.\n )}\n
\n
\n )\n }\n if (account && walletView === WALLET_VIEWS.ACCOUNT) {\n return (\n setWalletView(WALLET_VIEWS.OPTIONS)}\n />\n )\n }\n return (\n \n \n \n \n {walletView !== WALLET_VIEWS.ACCOUNT ? (\n \n {\n setPendingError(false)\n setWalletView(WALLET_VIEWS.ACCOUNT)\n }}\n >\n Back\n \n \n ) : (\n \n \n Connect to a wallet\n \n \n )}\n\n \n \n \n \n \n By connecting a wallet, you agree to Uniswap Labs’{' '}\n Terms of Service and\n acknowledge that you have read and understand the{' '}\n Uniswap protocol disclaimer.\n \n \n \n \n {walletView === WALLET_VIEWS.PENDING ? (\n \n ) : (\n {getOptions()}\n )}\n \n \n )\n }\n\n return (\n \n {getModalContent()}\n \n )\n}\n","import { AbstractConnector } from '@web3-react/abstract-connector'\nimport { UnsupportedChainIdError, useWeb3React } from '@web3-react/core'\nimport { darken } from 'polished'\nimport { useMemo } from 'react'\nimport { Activity } from 'react-feather'\nimport { t, Trans } from '@lingui/macro'\nimport styled, { css } from 'styled-components/macro'\nimport CoinbaseWalletIcon from '../../assets/images/coinbaseWalletIcon.svg'\nimport FortmaticIcon from '../../assets/images/fortmaticIcon.png'\nimport PortisIcon from '../../assets/images/portisIcon.png'\nimport WalletConnectIcon from '../../assets/images/walletConnectIcon.svg'\nimport { fortmatic, injected, portis, walletconnect, walletlink } from '../../connectors'\nimport { NetworkContextName } from '../../constants/misc'\nimport useENSName from '../../hooks/useENSName'\nimport { useHasSocks } from '../../hooks/useSocksBalance'\nimport { useWalletModalToggle } from '../../state/application/hooks'\nimport { isTransactionRecent, useAllTransactions } from '../../state/transactions/hooks'\nimport { TransactionDetails } from '../../state/transactions/reducer'\nimport { shortenAddress } from '../../utils'\nimport { ButtonSecondary } from '../Button'\n\nimport Identicon from '../Identicon'\nimport Loader from '../Loader'\n\nimport { RowBetween } from '../Row'\nimport WalletModal from '../WalletModal'\n\nconst IconWrapper = styled.div<{ size?: number }>`\n ${({ theme }) => theme.flexColumnNoWrap};\n align-items: center;\n justify-content: center;\n & > * {\n height: ${({ size }) => (size ? size + 'px' : '32px')};\n width: ${({ size }) => (size ? size + 'px' : '32px')};\n }\n`\n\nconst Web3StatusGeneric = styled(ButtonSecondary)`\n ${({ theme }) => theme.flexRowNoWrap}\n width: 100%;\n align-items: center;\n padding: 0.5rem;\n border-radius: 12px;\n cursor: pointer;\n user-select: none;\n :focus {\n outline: none;\n }\n`\nconst Web3StatusError = styled(Web3StatusGeneric)`\n background-color: ${({ theme }) => theme.red1};\n border: 1px solid ${({ theme }) => theme.red1};\n color: ${({ theme }) => theme.white};\n font-weight: 500;\n :hover,\n :focus {\n background-color: ${({ theme }) => darken(0.1, theme.red1)};\n }\n`\n\nconst Web3StatusConnect = styled(Web3StatusGeneric)<{ faded?: boolean }>`\n background-color: ${({ theme }) => theme.primary4};\n border: none;\n\n color: ${({ theme }) => theme.primaryText1};\n font-weight: 500;\n\n :hover,\n :focus {\n border: 1px solid ${({ theme }) => darken(0.05, theme.primary4)};\n color: ${({ theme }) => theme.primaryText1};\n }\n\n ${({ faded }) =>\n faded &&\n css`\n background-color: ${({ theme }) => theme.primary5};\n border: 1px solid ${({ theme }) => theme.primary5};\n color: ${({ theme }) => theme.primaryText1};\n\n :hover,\n :focus {\n border: 1px solid ${({ theme }) => darken(0.05, theme.primary4)};\n color: ${({ theme }) => darken(0.05, theme.primaryText1)};\n }\n `}\n`\n\nconst Web3StatusConnected = styled(Web3StatusGeneric)<{ pending?: boolean }>`\n background-color: ${({ pending, theme }) => (pending ? theme.primary1 : theme.bg0)};\n border: 1px solid ${({ pending, theme }) => (pending ? theme.primary1 : theme.bg1)};\n color: ${({ pending, theme }) => (pending ? theme.white : theme.text1)};\n font-weight: 500;\n :hover,\n :focus {\n border: 1px solid ${({ theme }) => darken(0.05, theme.bg3)};\n\n :focus {\n border: 1px solid ${({ pending, theme }) => (pending ? darken(0.1, theme.primary1) : darken(0.1, theme.bg2))};\n }\n }\n`\n\nconst Text = styled.p`\n flex: 1 1 auto;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n margin: 0 0.5rem 0 0.25rem;\n font-size: 1rem;\n width: fit-content;\n font-weight: 500;\n`\n\nconst NetworkIcon = styled(Activity)`\n margin-left: 0.25rem;\n margin-right: 0.5rem;\n width: 16px;\n height: 16px;\n`\n\n// we want the latest one to come first, so return negative if a is after b\nfunction newTransactionsFirst(a: TransactionDetails, b: TransactionDetails) {\n return b.addedTime - a.addedTime\n}\n\nfunction Sock() {\n return (\n \n 🧦\n \n )\n}\n\n// eslint-disable-next-line react/prop-types\nfunction StatusIcon({ connector }: { connector: AbstractConnector }) {\n if (connector === injected) {\n return \n } else if (connector === walletconnect) {\n return (\n \n {'WalletConnect'}\n \n )\n } else if (connector === walletlink) {\n return (\n \n {'CoinbaseWallet'}\n \n )\n } else if (connector === fortmatic) {\n return (\n \n {'Fortmatic'}\n \n )\n } else if (connector === portis) {\n return (\n \n {'Portis'}\n \n )\n }\n return null\n}\n\nfunction Web3StatusInner() {\n const { account, connector, error } = useWeb3React()\n\n const { ENSName } = useENSName(account ?? undefined)\n\n const allTransactions = useAllTransactions()\n\n const sortedRecentTransactions = useMemo(() => {\n const txs = Object.values(allTransactions)\n return txs.filter(isTransactionRecent).sort(newTransactionsFirst)\n }, [allTransactions])\n\n const pending = sortedRecentTransactions.filter((tx) => !tx.receipt).map((tx) => tx.hash)\n\n const hasPendingTransactions = !!pending.length\n const hasSocks = useHasSocks()\n const toggleWalletModal = useWalletModalToggle()\n\n if (account) {\n return (\n \n {hasPendingTransactions ? (\n \n \n {pending?.length} Pending\n {' '}\n \n \n ) : (\n <>\n {hasSocks ? : null}\n {ENSName || shortenAddress(account)}\n \n )}\n {!hasPendingTransactions && connector && }\n \n )\n } else if (error) {\n return (\n \n \n {error instanceof UnsupportedChainIdError ? Wrong Network : Error}\n \n )\n } else {\n return (\n \n \n Connect to a wallet\n \n \n )\n }\n}\n\nexport default function Web3Status() {\n const { active, account } = useWeb3React()\n const contextNetwork = useWeb3React(NetworkContextName)\n\n const { ENSName } = useENSName(account ?? undefined)\n\n const allTransactions = useAllTransactions()\n\n const sortedRecentTransactions = useMemo(() => {\n const txs = Object.values(allTransactions)\n return txs.filter(isTransactionRecent).sort(newTransactionsFirst)\n }, [allTransactions])\n\n const pending = sortedRecentTransactions.filter((tx) => !tx.receipt).map((tx) => tx.hash)\n const confirmed = sortedRecentTransactions.filter((tx) => tx.receipt).map((tx) => tx.hash)\n\n if (!contextNetwork.active && !active) {\n return null\n }\n\n return (\n <>\n \n \n \n )\n}\n","import { SupportedChainId } from 'constants/chains'\nimport { BigNumber, utils } from 'ethers'\nimport { Web3Provider } from '@ethersproject/providers'\n\ninterface SwitchNetworkArguments {\n library: Web3Provider\n chainId: SupportedChainId\n}\n\n// provider.request returns Promise, but wallet_switchEthereumChain must return null or throw\n// see https://github.com/rekmarks/EIPs/blob/3326-create/EIPS/eip-3326.md for more info on wallet_switchEthereumChain\nexport async function switchToNetwork({ library, chainId }: SwitchNetworkArguments): Promise {\n if (!library?.provider?.request) {\n return\n }\n const formattedChainId = utils.hexStripZeros(BigNumber.from(chainId).toHexString())\n return library?.provider.request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId: formattedChainId }],\n })\n}\n","import { Trans } from '@lingui/macro'\nimport { YellowCard } from 'components/Card'\nimport { useOnClickOutside } from 'hooks/useOnClickOutside'\nimport { useActiveWeb3React } from 'hooks/web3'\nimport { useEffect, useRef, useState } from 'react'\nimport { ArrowDownCircle, ChevronDown, ToggleLeft } from 'react-feather'\nimport { ApplicationModal } from 'state/application/actions'\nimport { useModalOpen, useToggleModal } from 'state/application/hooks'\nimport styled, { css } from 'styled-components/macro'\nimport { ExternalLink } from 'theme'\nimport { switchToNetwork } from 'utils/switchToNetwork'\nimport { CHAIN_INFO, L2_CHAIN_IDS, SupportedChainId, SupportedL2ChainId } from '../../constants/chains'\n\nconst BaseWrapper = css`\n position: relative;\n margin-right: 8px;\n ${({ theme }) => theme.mediaWidth.upToMedium`\n justify-self: end;\n `};\n\n ${({ theme }) => theme.mediaWidth.upToSmall`\n margin: 0 0.5rem 0 0;\n width: initial;\n text-overflow: ellipsis;\n flex-shrink: 1;\n `};\n`\nconst L2Wrapper = styled.div`\n ${BaseWrapper}\n`\nconst BaseMenuItem = css`\n align-items: center;\n background-color: transparent;\n border-radius: 12px;\n color: ${({ theme }) => theme.text2};\n cursor: pointer;\n display: flex;\n flex: 1;\n flex-direction: row;\n font-size: 16px;\n font-weight: 400;\n justify-content: space-between;\n :hover {\n color: ${({ theme }) => theme.text1};\n text-decoration: none;\n }\n`\nconst DisabledMenuItem = styled.div`\n ${BaseMenuItem}\n align-items: center;\n background-color: ${({ theme }) => theme.bg2};\n cursor: auto;\n display: flex;\n font-size: 10px;\n font-style: italic;\n justify-content: center;\n :hover,\n :active,\n :focus {\n color: ${({ theme }) => theme.text2};\n }\n`\nconst FallbackWrapper = styled(YellowCard)`\n ${BaseWrapper}\n width: auto;\n border-radius: 12px;\n padding: 8px 12px;\n width: 100%;\n`\nconst Icon = styled.img`\n width: 16px;\n margin-right: 2px;\n\n ${({ theme }) => theme.mediaWidth.upToSmall`\n margin-right: 4px;\n\n `};\n`\n\nconst MenuFlyout = styled.span`\n background-color: ${({ theme }) => theme.bg1};\n border: 1px solid ${({ theme }) => theme.bg0};\n\n box-shadow: 0px 0px 1px rgba(0, 0, 0, 0.01), 0px 4px 8px rgba(0, 0, 0, 0.04), 0px 16px 24px rgba(0, 0, 0, 0.04),\n 0px 24px 32px rgba(0, 0, 0, 0.01);\n border-radius: 12px;\n padding: 1rem;\n display: flex;\n flex-direction: column;\n font-size: 1rem;\n position: absolute;\n left: 0rem;\n top: 3rem;\n z-index: 100;\n width: 237px;\n ${({ theme }) => theme.mediaWidth.upToMedium`\n \n bottom: unset;\n top: 4.5em\n right: 0;\n\n `};\n > {\n padding: 12px;\n }\n > :not(:first-child) {\n margin-top: 8px;\n }\n > :not(:last-child) {\n margin-bottom: 8px;\n }\n`\nconst LinkOutCircle = styled(ArrowDownCircle)`\n transform: rotate(230deg);\n width: 16px;\n height: 16px;\n opacity: 0.6;\n`\nconst MenuItem = styled(ExternalLink)`\n ${BaseMenuItem}\n`\nconst ButtonMenuItem = styled.button`\n ${BaseMenuItem}\n border: none;\n box-shadow: none;\n color: ${({ theme }) => theme.text2};\n outline: none;\n padding: 0;\n`\nconst NetworkInfo = styled.button<{ chainId: SupportedChainId }>`\n align-items: center;\n background-color: ${({ theme }) => theme.bg0};\n border-radius: 12px;\n border: 1px solid ${({ theme }) => theme.bg0};\n color: ${({ theme }) => theme.text1};\n display: flex;\n flex-direction: row;\n font-weight: 500;\n font-size: 12px;\n height: 100%;\n margin: 0;\n height: 38px;\n padding: 0.7rem;\n\n :hover,\n :focus {\n cursor: pointer;\n outline: none;\n border: 1px solid ${({ theme }) => theme.bg3};\n }\n`\nconst NetworkName = styled.div<{ chainId: SupportedChainId }>`\n border-radius: 6px;\n font-size: 16px;\n font-weight: 500;\n padding: 0 2px 0.5px 4px;\n margin: 0 2px;\n white-space: pre;\n ${({ theme }) => theme.mediaWidth.upToSmall`\n display: none;\n `};\n`\n\nexport default function NetworkCard() {\n const { chainId, library } = useActiveWeb3React()\n const node = useRef(null)\n const open = useModalOpen(ApplicationModal.ARBITRUM_OPTIONS)\n const toggle = useToggleModal(ApplicationModal.ARBITRUM_OPTIONS)\n useOnClickOutside(node, open ? toggle : undefined)\n\n const [implements3085, setImplements3085] = useState(false)\n useEffect(() => {\n // metamask is currently the only known implementer of this EIP\n // here we proceed w/ a noop feature check to ensure the user's version of metamask supports network switching\n // if not, we hide the UI\n if (!library?.provider?.request || !chainId || !library?.provider?.isMetaMask) {\n return\n }\n switchToNetwork({ library, chainId })\n .then((x) => x ?? setImplements3085(true))\n .catch(() => setImplements3085(false))\n }, [library, chainId])\n\n const info = chainId ? CHAIN_INFO[chainId] : undefined\n if (!chainId || chainId === SupportedChainId.MAINNET || !info || !library) {\n return null\n }\n\n if (L2_CHAIN_IDS.includes(chainId)) {\n const info = CHAIN_INFO[chainId as SupportedL2ChainId]\n const isArbitrum = [SupportedChainId.ARBITRUM_ONE, SupportedChainId.ARBITRUM_RINKEBY].includes(chainId)\n return (\n \n \n \n {info.label}\n \n \n {open && (\n \n \n
{isArbitrum ? {info.label} Bridge : Optimistic L2 Gateway}
\n \n
\n \n {isArbitrum ? {info.label} Explorer : Optimistic Etherscan}\n \n \n \n
\n Learn more\n
\n \n
\n {implements3085 ? (\n switchToNetwork({ library, chainId: SupportedChainId.MAINNET })}>\n
\n Switch to L1 (Mainnet)\n
\n \n
\n ) : (\n \n Change your network to go back to L1\n \n )}\n
\n )}\n
\n )\n }\n\n return {info.label}\n}\n","import { BigNumber } from '@ethersproject/bignumber'\nimport { Token, CurrencyAmount, Currency } from '@uniswap/sdk-core'\nimport { useTokenContract } from './useContract'\nimport { useSingleCallResult } from '../state/multicall/hooks'\n\n// returns undefined if input token is undefined, or fails to get token contract,\n// or contract total supply cannot be fetched\nexport function useTotalSupply(token?: Currency): CurrencyAmount | undefined {\n const contract = useTokenContract(token?.isToken ? token.address : undefined, false)\n\n const totalSupply: BigNumber = useSingleCallResult(contract, 'totalSupply')?.result?.[0]\n\n return token?.isToken && totalSupply ? CurrencyAmount.fromRawAmount(token, totalSupply.toString()) : undefined\n}\n","import { Currency, CurrencyAmount, Price, Token } from '@uniswap/sdk-core'\nimport { useMemo } from 'react'\nimport { SupportedChainId } from '../constants/chains'\nimport { DAI_OPTIMISM, USDC, USDC_ARBITRUM } from '../constants/tokens'\nimport { useV2TradeExactOut } from './useV2Trade'\nimport { useBestV3TradeExactOut } from './useBestV3Trade'\nimport { useActiveWeb3React } from './web3'\n\n// Stablecoin amounts used when calculating spot price for a given currency.\n// The amount is large enough to filter low liquidity pairs.\nconst STABLECOIN_AMOUNT_OUT: { [chainId: number]: CurrencyAmount } = {\n [SupportedChainId.MAINNET]: CurrencyAmount.fromRawAmount(USDC, 100_000e6),\n [SupportedChainId.ARBITRUM_ONE]: CurrencyAmount.fromRawAmount(USDC_ARBITRUM, 10_000e6),\n [SupportedChainId.OPTIMISM]: CurrencyAmount.fromRawAmount(DAI_OPTIMISM, 10_000e18),\n}\n\n/**\n * Returns the price in USDC of the input currency\n * @param currency currency to compute the USDC price of\n */\nexport default function useUSDCPrice(currency?: Currency): Price | undefined {\n const { chainId } = useActiveWeb3React()\n\n const amountOut = chainId ? STABLECOIN_AMOUNT_OUT[chainId] : undefined\n const stablecoin = amountOut?.currency\n\n const v2USDCTrade = useV2TradeExactOut(currency, amountOut, {\n maxHops: 2,\n })\n const v3USDCTrade = useBestV3TradeExactOut(currency, amountOut)\n\n return useMemo(() => {\n if (!currency || !stablecoin) {\n return undefined\n }\n\n // handle usdc\n if (currency?.wrapped.equals(stablecoin)) {\n return new Price(stablecoin, stablecoin, '1', '1')\n }\n\n // use v2 price if available, v3 as fallback\n if (v2USDCTrade) {\n const { numerator, denominator } = v2USDCTrade.route.midPrice\n return new Price(currency, stablecoin, denominator, numerator)\n } else if (v3USDCTrade.trade) {\n const { numerator, denominator } = v3USDCTrade.trade.route.midPrice\n return new Price(currency, stablecoin, denominator, numerator)\n }\n\n return undefined\n }, [currency, stablecoin, v2USDCTrade, v3USDCTrade.trade])\n}\n\nexport function useUSDCValue(currencyAmount: CurrencyAmount | undefined | null) {\n const price = useUSDCPrice(currencyAmount?.currency)\n\n return useMemo(() => {\n if (!price || !currencyAmount) return null\n try {\n return price.quote(currencyAmount)\n } catch (error) {\n return null\n }\n }, [currencyAmount, price])\n}\n","import JSBI from 'jsbi'\nimport { Token, CurrencyAmount } from '@uniswap/sdk-core'\nimport { BigNumber } from 'ethers'\nimport { STAKING_GENESIS } from '../state/stake/hooks'\n\nconst STAKING_END = STAKING_GENESIS + 60 * 60 * 24 * 60\n\nconst TREASURY_VESTING_GENESIS = 1600387200\n\n// 30 days\nconst TREASURY_VESTING_CLIFF: number = 60 * 60 * 24 * 30\n\nconst ONE_YEAR: number = 60 * 60 * 24 * 365\nconst TREASURY_BEGIN_YEAR_1 = TREASURY_VESTING_GENESIS\nconst TREASURY_CLIFF_YEAR_1 = TREASURY_BEGIN_YEAR_1 + TREASURY_VESTING_CLIFF\nconst TREASURY_END_YEAR_1 = TREASURY_BEGIN_YEAR_1 + ONE_YEAR\n\nconst TREASURY_BEGIN_YEAR_2 = TREASURY_END_YEAR_1\nconst TREASURY_END_YEAR_2 = TREASURY_BEGIN_YEAR_2 + ONE_YEAR\n\nconst TREASURY_BEGIN_YEAR_3 = TREASURY_END_YEAR_2\nconst TREASURY_END_YEAR_3 = TREASURY_BEGIN_YEAR_3 + ONE_YEAR\n\nconst TREASURY_BEGIN_YEAR_4 = TREASURY_END_YEAR_3\nconst TREASURY_END_YEAR_4 = TREASURY_BEGIN_YEAR_4 + ONE_YEAR\n\nconst USERS_AMOUNT = 150_000_000\nconst STAKING_REWARDS_AMOUNT = 20_000_000\nconst TREASURY_YEAR_1_AMOUNT = 172_000_000\nconst TREASURY_YEAR_2_AMOUNT = 129_000_00\nconst TREASURY_YEAR_3_AMOUNT = 86_000_00\nconst TREASURY_YEAR_4_AMOUNT = 43_000_00\nconst TEAM_YEAR_1_AMOUNT = 160_000_000\nconst TEAM_YEAR_2_AMOUNT = 120_000_00\nconst TEAM_YEAR_3_AMOUNT = 80_000_00\nconst TEAM_YEAR_4_AMOUNT = 40_000_00\n\nfunction withVesting(before: JSBI, time: BigNumber, amount: number, start: number, end: number, cliff?: number) {\n if (time.gt(start)) {\n if (time.gte(end)) {\n return JSBI.add(before, JSBI.BigInt(amount))\n } else {\n if ((typeof cliff === 'number' && time.gte(cliff)) || typeof cliff === 'undefined') {\n return JSBI.add(\n before,\n JSBI.divide(\n JSBI.multiply(JSBI.BigInt(amount), JSBI.BigInt(time.sub(start).toString())),\n JSBI.subtract(JSBI.BigInt(end), JSBI.BigInt(start))\n )\n )\n }\n }\n }\n return before\n}\n\nexport function computeUniCirculation(\n uni: Token,\n blockTimestamp: BigNumber,\n unclaimedUni: CurrencyAmount | undefined\n): CurrencyAmount {\n let wholeAmount = JSBI.BigInt(USERS_AMOUNT)\n\n // staking rewards\n wholeAmount = withVesting(wholeAmount, blockTimestamp, STAKING_REWARDS_AMOUNT, STAKING_GENESIS, STAKING_END)\n\n // treasury vesting\n wholeAmount = withVesting(\n wholeAmount,\n blockTimestamp,\n TREASURY_YEAR_1_AMOUNT,\n TREASURY_BEGIN_YEAR_1,\n TREASURY_END_YEAR_1,\n TREASURY_CLIFF_YEAR_1\n )\n wholeAmount = withVesting(\n wholeAmount,\n blockTimestamp,\n TREASURY_YEAR_2_AMOUNT,\n TREASURY_BEGIN_YEAR_2,\n TREASURY_END_YEAR_2\n )\n wholeAmount = withVesting(\n wholeAmount,\n blockTimestamp,\n TREASURY_YEAR_3_AMOUNT,\n TREASURY_BEGIN_YEAR_3,\n TREASURY_END_YEAR_3\n )\n wholeAmount = withVesting(\n wholeAmount,\n blockTimestamp,\n TREASURY_YEAR_4_AMOUNT,\n TREASURY_BEGIN_YEAR_4,\n TREASURY_END_YEAR_4\n )\n\n // team\n wholeAmount = withVesting(\n wholeAmount,\n blockTimestamp,\n TEAM_YEAR_1_AMOUNT,\n TREASURY_BEGIN_YEAR_1,\n TREASURY_END_YEAR_1,\n TREASURY_CLIFF_YEAR_1\n )\n wholeAmount = withVesting(wholeAmount, blockTimestamp, TEAM_YEAR_2_AMOUNT, TREASURY_BEGIN_YEAR_2, TREASURY_END_YEAR_2)\n wholeAmount = withVesting(wholeAmount, blockTimestamp, TEAM_YEAR_3_AMOUNT, TREASURY_BEGIN_YEAR_3, TREASURY_END_YEAR_3)\n wholeAmount = withVesting(wholeAmount, blockTimestamp, TEAM_YEAR_4_AMOUNT, TREASURY_BEGIN_YEAR_4, TREASURY_END_YEAR_4)\n\n const total = CurrencyAmount.fromRawAmount(\n uni,\n JSBI.multiply(wholeAmount, JSBI.exponentiate(JSBI.BigInt(10), JSBI.BigInt(18)))\n )\n return unclaimedUni ? total.subtract(unclaimedUni) : total\n}\n","import { Trans } from '@lingui/macro'\nimport { CurrencyAmount, Token } from '@uniswap/sdk-core'\nimport { CHAIN_INFO, SupportedChainId } from 'constants/chains'\nimport { useMemo } from 'react'\nimport { X } from 'react-feather'\nimport styled from 'styled-components/macro'\nimport tokenLogo from '../../assets/images/token-logo.png'\nimport { UNI } from '../../constants/tokens'\nimport { useMerkleDistributorContract } from '../../hooks/useContract'\nimport useCurrentBlockTimestamp from '../../hooks/useCurrentBlockTimestamp'\nimport { useTotalSupply } from '../../hooks/useTotalSupply'\nimport useUSDCPrice from '../../hooks/useUSDCPrice'\nimport { useActiveWeb3React } from '../../hooks/web3'\nimport { useTotalUniEarned } from '../../state/stake/hooks'\nimport { useAggregateUniBalance, useTokenBalance } from '../../state/wallet/hooks'\nimport { ExternalLink, StyledInternalLink, TYPE, UniTokenAnimated } from '../../theme'\nimport { computeUniCirculation } from '../../utils/computeUniCirculation'\nimport { AutoColumn } from '../Column'\nimport { Break, CardBGImage, CardNoise, CardSection, DataCard } from '../earn/styled'\nimport { RowBetween } from '../Row'\n\nconst ContentWrapper = styled(AutoColumn)`\n width: 100%;\n`\n\nconst ModalUpper = styled(DataCard)`\n box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.1);\n background: radial-gradient(76.02% 75.41% at 1.84% 0%, #ff007a 0%, #021d43 100%);\n padding: 0.5rem;\n`\n\nconst StyledClose = styled(X)`\n position: absolute;\n right: 16px;\n top: 16px;\n\n :hover {\n cursor: pointer;\n }\n`\n\n/**\n * Content for balance stats modal\n */\nexport default function UniBalanceContent({ setShowUniBalanceModal }: { setShowUniBalanceModal: any }) {\n const { account, chainId } = useActiveWeb3React()\n const uni = chainId ? UNI[chainId] : undefined\n\n const total = useAggregateUniBalance()\n const uniBalance: CurrencyAmount | undefined = useTokenBalance(account ?? undefined, uni)\n const uniToClaim: CurrencyAmount | undefined = useTotalUniEarned()\n\n const totalSupply: CurrencyAmount | undefined = useTotalSupply(uni)\n const uniPrice = useUSDCPrice(uni)\n const blockTimestamp = useCurrentBlockTimestamp()\n const unclaimedUni = useTokenBalance(useMerkleDistributorContract()?.address, uni)\n const circulation: CurrencyAmount | undefined = useMemo(\n () =>\n blockTimestamp && uni && chainId === 1 ? computeUniCirculation(uni, blockTimestamp, unclaimedUni) : totalSupply,\n [blockTimestamp, chainId, totalSupply, unclaimedUni, uni]\n )\n\n const { infoLink } = CHAIN_INFO[chainId ? chainId : SupportedChainId.MAINNET]\n\n return (\n \n \n \n \n \n \n \n Your UNI Breakdown\n \n setShowUniBalanceModal(false)} />\n \n \n \n {account && (\n <>\n \n \n {' '}\n \n {total?.toFixed(2, { groupSeparator: ',' })}\n \n \n \n \n \n Balance:\n \n {uniBalance?.toFixed(2, { groupSeparator: ',' })}\n \n \n \n Unclaimed:\n \n \n {uniToClaim?.toFixed(4, { groupSeparator: ',' })}{' '}\n {uniToClaim && uniToClaim.greaterThan('0') && (\n setShowUniBalanceModal(false)} to=\"/uni\">\n (claim)\n \n )}\n \n \n \n \n \n \n )}\n \n \n \n \n UNI price:\n \n ${uniPrice?.toFixed(2) ?? '-'}\n \n \n \n UNI in circulation:\n \n {circulation?.toFixed(0, { groupSeparator: ',' })}\n \n \n \n Total Supply\n \n {totalSupply?.toFixed(0, { groupSeparator: ',' })}\n \n {uni && uni.chainId === 1 ? (\n \n View UNI Analytics\n \n ) : null}\n \n \n \n \n )\n}\n","import { Trans } from '@lingui/macro'\nimport useScrollPosition from '@react-hook/window-scroll'\nimport { CHAIN_INFO, SupportedChainId } from 'constants/chains'\nimport { darken } from 'polished'\nimport { useState } from 'react'\nimport { NavLink } from 'react-router-dom'\nimport { Text } from 'rebass'\nimport { useShowClaimPopup, useToggleSelfClaimModal } from 'state/application/hooks'\nimport { useUserHasAvailableClaim } from 'state/claim/hooks'\nimport { useUserHasSubmittedClaim } from 'state/transactions/hooks'\nimport { useDarkModeManager } from 'state/user/hooks'\nimport { useETHBalances } from 'state/wallet/hooks'\nimport styled from 'styled-components/macro'\nimport Logo from '../../assets/svg/logo.svg'\nimport LogoDark from '../../assets/svg/logo_white.svg'\nimport { useActiveWeb3React } from '../../hooks/web3'\nimport { ExternalLink, TYPE } from '../../theme'\nimport ClaimModal from '../claim/ClaimModal'\nimport { CardNoise } from '../earn/styled'\nimport Menu from '../Menu'\nimport Modal from '../Modal'\nimport Row from '../Row'\nimport { Dots } from '../swap/styleds'\nimport Web3Status from '../Web3Status'\nimport NetworkCard from './NetworkCard'\nimport UniBalanceContent from './UniBalanceContent'\n\nconst HeaderFrame = styled.div<{ showBackground: boolean }>`\n display: grid;\n grid-template-columns: 120px 1fr 120px;\n align-items: center;\n justify-content: space-between;\n align-items: center;\n flex-direction: row;\n width: 100%;\n top: 0;\n position: relative;\n padding: 1rem;\n z-index: 21;\n position: relative;\n /* Background slide effect on scroll. */\n background-image: ${({ theme }) => `linear-gradient(to bottom, transparent 50%, ${theme.bg0} 50% )}}`};\n background-position: ${({ showBackground }) => (showBackground ? '0 -100%' : '0 0')};\n background-size: 100% 200%;\n box-shadow: 0px 0px 0px 1px ${({ theme, showBackground }) => (showBackground ? theme.bg2 : 'transparent;')};\n transition: background-position 0.1s, box-shadow 0.1s;\n background-blend-mode: hard-light;\n\n ${({ theme }) => theme.mediaWidth.upToLarge`\n grid-template-columns: 48px 1fr 1fr;\n `};\n\n ${({ theme }) => theme.mediaWidth.upToMedium`\n padding: 1rem;\n grid-template-columns: 1fr 1fr;\n `};\n\n ${({ theme }) => theme.mediaWidth.upToSmall`\n padding: 1rem;\n grid-template-columns: 36px 1fr;\n `};\n`\n\nconst HeaderControls = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-self: flex-end;\n`\n\nconst HeaderElement = styled.div`\n display: flex;\n align-items: center;\n\n /* addresses safari's lack of support for \"gap\" */\n & > *:not(:first-child) {\n margin-left: 8px;\n }\n\n ${({ theme }) => theme.mediaWidth.upToMedium`\n align-items: center;\n `};\n`\n\nconst HeaderLinks = styled(Row)`\n justify-self: center;\n background-color: ${({ theme }) => theme.bg0};\n width: fit-content;\n padding: 4px;\n border-radius: 16px;\n display: grid;\n grid-auto-flow: column;\n grid-gap: 10px;\n overflow: auto;\n align-items: center;\n ${({ theme }) => theme.mediaWidth.upToLarge`\n justify-self: start; \n `};\n ${({ theme }) => theme.mediaWidth.upToMedium`\n justify-self: center;\n `};\n ${({ theme }) => theme.mediaWidth.upToMedium`\n flex-direction: row;\n justify-content: space-between;\n justify-self: center;\n z-index: 99;\n position: fixed;\n bottom: 0; right: 50%;\n transform: translate(50%,-50%);\n margin: 0 auto;\n background-color: ${({ theme }) => theme.bg0};\n border: 1px solid ${({ theme }) => theme.bg2};\n box-shadow: 0px 6px 10px rgb(0 0 0 / 2%);\n `};\n`\n\nconst AccountElement = styled.div<{ active: boolean }>`\n display: flex;\n flex-direction: row;\n align-items: center;\n background-color: ${({ theme, active }) => (!active ? theme.bg1 : theme.bg1)};\n border-radius: 12px;\n white-space: nowrap;\n width: 100%;\n cursor: pointer;\n\n :focus {\n border: 1px solid blue;\n }\n`\n\nconst UNIAmount = styled(AccountElement)`\n color: white;\n padding: 4px 8px;\n height: 36px;\n font-weight: 500;\n background-color: ${({ theme }) => theme.bg3};\n background: radial-gradient(174.47% 188.91% at 1.84% 0%, #ff007a 0%, #2172e5 100%), #edeef2;\n`\n\nconst UNIWrapper = styled.span`\n width: fit-content;\n position: relative;\n cursor: pointer;\n\n :hover {\n opacity: 0.8;\n }\n\n :active {\n opacity: 0.9;\n }\n`\n\nconst BalanceText = styled(Text)`\n ${({ theme }) => theme.mediaWidth.upToExtraSmall`\n display: none;\n `};\n`\n\nconst Title = styled.a`\n display: flex;\n align-items: center;\n pointer-events: auto;\n justify-self: flex-start;\n margin-right: 12px;\n ${({ theme }) => theme.mediaWidth.upToSmall`\n justify-self: center;\n `};\n :hover {\n cursor: pointer;\n }\n`\n\nconst UniIcon = styled.div`\n transition: transform 0.3s ease;\n :hover {\n transform: rotate(-5deg);\n }\n`\n\nconst activeClassName = 'ACTIVE'\n\nconst StyledNavLink = styled(NavLink).attrs({\n activeClassName,\n})`\n ${({ theme }) => theme.flexRowNoWrap}\n align-items: left;\n border-radius: 3rem;\n outline: none;\n cursor: pointer;\n text-decoration: none;\n color: ${({ theme }) => theme.text2};\n font-size: 1rem;\n width: fit-content;\n font-weight: 500;\n padding: 8px 12px;\n word-break: break-word;\n\n &.${activeClassName} {\n border-radius: 12px;\n font-weight: 600;\n color: ${({ theme }) => theme.text1};\n background-color: ${({ theme }) => theme.bg2};\n }\n\n :hover,\n :focus {\n color: ${({ theme }) => darken(0.1, theme.text1)};\n }\n`\n\nconst StyledExternalLink = styled(ExternalLink).attrs({\n activeClassName,\n})<{ isActive?: boolean }>`\n ${({ theme }) => theme.flexRowNoWrap}\n align-items: left;\n border-radius: 3rem;\n outline: none;\n cursor: pointer;\n text-decoration: none;\n color: ${({ theme }) => theme.text2};\n font-size: 1rem;\n width: fit-content;\n margin: 0 12px;\n font-weight: 500;\n\n &.${activeClassName} {\n border-radius: 12px;\n font-weight: 600;\n color: ${({ theme }) => theme.text1};\n }\n\n :hover,\n :focus {\n color: ${({ theme }) => darken(0.1, theme.text1)};\n text-decoration: none;\n }\n`\n\nexport default function Header() {\n const { account, chainId } = useActiveWeb3React()\n\n const userEthBalance = useETHBalances(account ? [account] : [])?.[account ?? '']\n const [darkMode] = useDarkModeManager()\n\n const toggleClaimModal = useToggleSelfClaimModal()\n\n const availableClaim: boolean = useUserHasAvailableClaim(account)\n\n const { claimTxn } = useUserHasSubmittedClaim(account ?? undefined)\n\n const [showUniBalanceModal, setShowUniBalanceModal] = useState(false)\n const showClaimPopup = useShowClaimPopup()\n\n const scrollY = useScrollPosition()\n\n const { infoLink } = CHAIN_INFO[chainId ? chainId : SupportedChainId.MAINNET]\n return (\n 45}>\n \n setShowUniBalanceModal(false)}>\n \n \n \n <UniIcon>\n <img width={'24px'} src={darkMode ? LogoDark : Logo} alt=\"logo\" />\n </UniIcon>\n \n \n \n Swap\n \n \n Boolean(match) ||\n pathname.startsWith('/add') ||\n pathname.startsWith('/remove') ||\n pathname.startsWith('/increase') ||\n pathname.startsWith('/find')\n }\n >\n Pool\n \n {chainId && chainId === SupportedChainId.MAINNET && (\n \n Vote\n \n )}\n \n Charts\n \n \n \n\n \n \n \n {availableClaim && !showClaimPopup && (\n \n \n \n {claimTxn && !claimTxn?.receipt ? (\n \n Claiming UNI\n \n ) : (\n Claim UNI\n )}\n \n \n \n \n )}\n \n {account && userEthBalance ? (\n \n {userEthBalance?.toSignificant(3)} ETH\n \n ) : null}\n \n \n \n \n \n \n )\n}\n","import { useEffect, useState } from 'react'\nimport styled, { keyframes } from 'styled-components/macro'\nimport { useActiveWeb3React } from '../../hooks/web3'\n\nimport { useBlockNumber } from '../../state/application/hooks'\nimport { ExternalLink, TYPE } from '../../theme'\nimport { ExplorerDataType, getExplorerLink } from '../../utils/getExplorerLink'\n\nconst StyledPolling = styled.div`\n position: fixed;\n display: flex;\n align-items: center;\n right: 0;\n bottom: 0;\n padding: 1rem;\n color: ${({ theme }) => theme.green1};\n\n ${({ theme }) => theme.mediaWidth.upToMedium`\n display: none;\n `}\n`\nconst StyledPollingNumber = styled(TYPE.small)<{ breathe: boolean; hovering: boolean }>`\n transition: opacity 0.25s ease;\n opacity: ${({ breathe, hovering }) => (hovering ? 0.7 : breathe ? 1 : 0.5)};\n :hover {\n opacity: 1;\n }\n`\nconst StyledPollingDot = styled.div`\n width: 8px;\n height: 8px;\n min-height: 8px;\n min-width: 8px;\n margin-left: 0.5rem;\n border-radius: 50%;\n position: relative;\n background-color: ${({ theme }) => theme.green1};\n`\n\nconst rotate360 = keyframes`\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n`\n\nconst Spinner = styled.div`\n animation: ${rotate360} 1s cubic-bezier(0.83, 0, 0.17, 1) infinite;\n transform: translateZ(0);\n\n border-top: 1px solid transparent;\n border-right: 1px solid transparent;\n border-bottom: 1px solid transparent;\n border-left: 2px solid ${({ theme }) => theme.green1};\n background: transparent;\n width: 14px;\n height: 14px;\n border-radius: 50%;\n position: relative;\n\n left: -3px;\n top: -3px;\n`\n\nexport default function Polling() {\n const { chainId } = useActiveWeb3React()\n\n const blockNumber = useBlockNumber()\n\n const [isMounting, setIsMounting] = useState(false)\n const [isHover, setIsHover] = useState(false)\n\n useEffect(\n () => {\n if (!blockNumber) {\n return\n }\n\n setIsMounting(true)\n const mountingTimer = setTimeout(() => setIsMounting(false), 1000)\n\n // this will clear Timeout when component unmount like in willComponentUnmount\n return () => {\n clearTimeout(mountingTimer)\n }\n },\n [blockNumber] //useEffect will run only one time\n //if you pass a value to array, like this [data] than clearTimeout will run every time this value changes (useEffect re-run)\n )\n\n return (\n \n setIsHover(true)} onMouseLeave={() => setIsHover(false)}>\n \n {blockNumber}\n \n {isMounting && }\n \n \n )\n}\n","import { useContext } from 'react'\nimport { AlertCircle, CheckCircle } from 'react-feather'\nimport styled, { ThemeContext } from 'styled-components/macro'\nimport { useActiveWeb3React } from '../../hooks/web3'\nimport { TYPE } from '../../theme'\nimport { ExternalLink } from '../../theme/components'\nimport { ExplorerDataType, getExplorerLink } from '../../utils/getExplorerLink'\nimport { AutoColumn } from '../Column'\nimport { AutoRow } from '../Row'\n\nconst RowNoFlex = styled(AutoRow)`\n flex-wrap: nowrap;\n`\n\nexport default function TransactionPopup({\n hash,\n success,\n summary,\n}: {\n hash: string\n success?: boolean\n summary?: string\n}) {\n const { chainId } = useActiveWeb3React()\n\n const theme = useContext(ThemeContext)\n\n return (\n \n
\n {success ? : }\n
\n \n {summary ?? 'Hash: ' + hash.slice(0, 8) + '...' + hash.slice(58, 65)}\n {chainId && (\n \n View on Explorer\n \n )}\n \n
\n )\n}\n","import { useCallback, useContext, useEffect } from 'react'\nimport { X } from 'react-feather'\nimport { useSpring } from 'react-spring/web'\nimport styled, { ThemeContext } from 'styled-components/macro'\nimport { animated } from 'react-spring'\nimport { PopupContent } from '../../state/application/actions'\nimport { useRemovePopup } from '../../state/application/hooks'\nimport TransactionPopup from './TransactionPopup'\n\nconst StyledClose = styled(X)`\n position: absolute;\n right: 10px;\n top: 10px;\n\n :hover {\n cursor: pointer;\n }\n`\nconst Popup = styled.div`\n display: inline-block;\n width: 100%;\n padding: 1em;\n background-color: ${({ theme }) => theme.bg0};\n position: relative;\n border-radius: 10px;\n padding: 20px;\n padding-right: 35px;\n overflow: hidden;\n\n ${({ theme }) => theme.mediaWidth.upToSmall`\n min-width: 290px;\n &:not(:last-of-type) {\n margin-right: 20px;\n }\n `}\n`\nconst Fader = styled.div`\n position: absolute;\n bottom: 0px;\n left: 0px;\n width: 100%;\n height: 2px;\n background-color: ${({ theme }) => theme.bg3};\n`\n\nconst AnimatedFader = animated(Fader)\n\nexport default function PopupItem({\n removeAfterMs,\n content,\n popKey,\n}: {\n removeAfterMs: number | null\n content: PopupContent\n popKey: string\n}) {\n const removePopup = useRemovePopup()\n const removeThisPopup = useCallback(() => removePopup(popKey), [popKey, removePopup])\n useEffect(() => {\n if (removeAfterMs === null) return undefined\n\n const timeout = setTimeout(() => {\n removeThisPopup()\n }, removeAfterMs)\n\n return () => {\n clearTimeout(timeout)\n }\n }, [removeAfterMs, removeThisPopup])\n\n const theme = useContext(ThemeContext)\n\n let popupContent\n if ('txn' in content) {\n const {\n txn: { hash, success, summary },\n } = content\n popupContent = \n }\n\n const faderStyle = useSpring({\n from: { width: '100%' },\n to: { width: '0%' },\n config: { duration: removeAfterMs ?? undefined },\n })\n\n return (\n \n \n {popupContent}\n {removeAfterMs !== null ? : null}\n \n )\n}\n","import { Trans } from '@lingui/macro'\nimport { CurrencyAmount, Token } from '@uniswap/sdk-core'\nimport { useCallback, useEffect } from 'react'\nimport ReactGA from 'react-ga'\nimport { Heart, X } from 'react-feather'\nimport styled, { keyframes } from 'styled-components/macro'\nimport tokenLogo from '../../assets/images/token-logo.png'\nimport { ButtonPrimary } from '../../components/Button'\nimport { useActiveWeb3React } from '../../hooks/web3'\nimport { ApplicationModal } from '../../state/application/actions'\nimport {\n useModalOpen,\n useShowClaimPopup,\n useToggleSelfClaimModal,\n useToggleShowClaimPopup,\n} from '../../state/application/hooks'\n\nimport { useUserHasAvailableClaim, useUserUnclaimedAmount } from '../../state/claim/hooks'\nimport { TYPE } from '../../theme'\nimport { AutoColumn } from '../Column'\nimport { CardBGImage, CardNoise } from '../earn/styled'\n\nconst StyledClaimPopup = styled(AutoColumn)`\n background: radial-gradient(76.02% 75.41% at 1.84% 0%, #ff007a 0%, #021d43 100%);\n border-radius: 20px;\n padding: 1.5rem;\n overflow: hidden;\n position: relative;\n max-width: 360px;\n box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.1);\n`\n\nconst StyledClose = styled(X)`\n position: absolute;\n right: 10px;\n top: 10px;\n\n :hover {\n cursor: pointer;\n }\n`\n\nconst rotate = keyframes`\n 0% {\n transform: perspective(1000px) rotateY(0deg);\n }\n\n 100% {\n transform: perspective(1000px) rotateY(360deg);\n }\n`\n\nconst UniToken = styled.img`\n animation: ${rotate} 5s cubic-bezier(0.83, 0, 0.17, 1) infinite;\n`\n\nexport default function ClaimPopup() {\n const { account } = useActiveWeb3React()\n\n // dont store these in persisted state yet\n const showClaimPopup: boolean = useShowClaimPopup()\n const toggleShowClaimPopup = useToggleShowClaimPopup()\n\n // toggle for showing this modal\n const showClaimModal = useModalOpen(ApplicationModal.SELF_CLAIM)\n const toggleSelfClaimModal = useToggleSelfClaimModal()\n const handleToggleSelfClaimModal = useCallback(() => {\n ReactGA.event({\n category: 'MerkleDrop',\n action: 'Toggle self claim modal',\n })\n toggleSelfClaimModal()\n }, [toggleSelfClaimModal])\n\n // const userHasAvailableclaim = useUserHasAvailableClaim()\n const userHasAvailableclaim: boolean = useUserHasAvailableClaim(account)\n const unclaimedAmount: CurrencyAmount | undefined = useUserUnclaimedAmount(account)\n\n // listen for available claim and show popup if needed\n useEffect(() => {\n if (userHasAvailableclaim) {\n ReactGA.event({\n category: 'MerkleDrop',\n action: 'Show claim popup',\n })\n toggleShowClaimPopup()\n }\n // the toggleShowClaimPopup function changes every time the popup changes, so this will cause an infinite loop.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [userHasAvailableclaim])\n\n return (\n <>\n {showClaimPopup && !showClaimModal && (\n \n \n \n \n \n {' '}\n \n {unclaimedAmount?.toFixed(0, { groupSeparator: ',' } ?? '-')} UNI\n \n \n \n 🎉\n {' '}\n UNI has arrived{' '}\n \n 🎉\n \n \n \n \n Thanks for being part of the Uniswap community \n \n \n \n \n \n Claim your UNI tokens\n \n \n \n )}\n \n )\n}\n","import styled from 'styled-components/macro'\nimport { useActivePopups } from '../../state/application/hooks'\nimport { AutoColumn } from '../Column'\nimport PopupItem from './PopupItem'\nimport ClaimPopup from './ClaimPopup'\nimport { useURLWarningVisible } from '../../state/user/hooks'\nimport { useActiveWeb3React } from 'hooks/web3'\nimport { SupportedChainId } from 'constants/chains'\nimport { MEDIA_WIDTHS } from 'theme'\n\nconst MobilePopupWrapper = styled.div<{ height: string | number }>`\n position: relative;\n max-width: 100%;\n height: ${({ height }) => height};\n margin: ${({ height }) => (height ? '0 auto;' : 0)};\n margin-bottom: ${({ height }) => (height ? '20px' : 0)}};\n\n display: none;\n ${({ theme }) => theme.mediaWidth.upToSmall`\n display: block;\n `};\n`\n\nconst MobilePopupInner = styled.div`\n height: 99%;\n overflow-x: auto;\n overflow-y: hidden;\n display: flex;\n flex-direction: row;\n -webkit-overflow-scrolling: touch;\n ::-webkit-scrollbar {\n display: none;\n }\n`\n\nconst StopOverflowQuery = `@media screen and (min-width: ${MEDIA_WIDTHS.upToMedium + 1}px) and (max-width: ${\n MEDIA_WIDTHS.upToMedium + 500\n}px)`\n\nconst FixedPopupColumn = styled(AutoColumn)<{ extraPadding: boolean; xlPadding: boolean }>`\n position: fixed;\n top: ${({ extraPadding }) => (extraPadding ? '64px' : '56px')};\n right: 1rem;\n max-width: 355px !important;\n width: 100%;\n z-index: 3;\n\n ${({ theme }) => theme.mediaWidth.upToSmall`\n display: none;\n `};\n\n ${StopOverflowQuery} {\n top: ${({ extraPadding, xlPadding }) => (xlPadding ? '64px' : extraPadding ? '64px' : '56px')};\n }\n`\n\nexport default function Popups() {\n // get all popups\n const activePopups = useActivePopups()\n\n const urlWarningActive = useURLWarningVisible()\n\n // need extra padding if network is not L1 Ethereum\n const { chainId } = useActiveWeb3React()\n const isNotOnMainnet = Boolean(chainId && chainId !== SupportedChainId.MAINNET)\n\n return (\n <>\n \n \n {activePopups.map((item) => (\n \n ))}\n \n 0 ? 'fit-content' : 0}>\n \n {activePopups // reverse so new items up front\n .slice(0)\n .reverse()\n .map((item) => (\n \n ))}\n \n \n \n )\n}\n","import { useState, useEffect } from 'react'\nimport { useWeb3React } from '@web3-react/core'\nimport styled from 'styled-components/macro'\nimport { Trans } from '@lingui/macro'\n\nimport { network } from '../../connectors'\nimport { useEagerConnect, useInactiveListener } from '../../hooks/web3'\nimport { NetworkContextName } from '../../constants/misc'\nimport Loader from '../Loader'\n\nconst MessageWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n height: 20rem;\n`\n\nconst Message = styled.h2`\n color: ${({ theme }) => theme.secondary1};\n`\n\nexport default function Web3ReactManager({ children }: { children: JSX.Element }) {\n const { active } = useWeb3React()\n const { active: networkActive, error: networkError, activate: activateNetwork } = useWeb3React(NetworkContextName)\n\n // try to eagerly connect to an injected provider, if it exists and has granted access already\n const triedEager = useEagerConnect()\n\n // after eagerly trying injected, if the network connect ever isn't active or in an error state, activate itd\n useEffect(() => {\n if (triedEager && !networkActive && !networkError && !active) {\n activateNetwork(network)\n }\n }, [triedEager, networkActive, networkError, activateNetwork, active])\n\n // when there's no account connected, react to logins (broadly speaking) on the injected provider, if it exists\n useInactiveListener(!triedEager)\n\n // handle delayed loader state\n const [showLoader, setShowLoader] = useState(false)\n useEffect(() => {\n const timeout = setTimeout(() => {\n setShowLoader(true)\n }, 600)\n\n return () => {\n clearTimeout(timeout)\n }\n }, [])\n\n // on page load, do nothing until we've tried to connect to the injected connector\n if (!triedEager) {\n return null\n }\n\n // if the account context isn't active, and there's an error on the network context, it's an irrecoverable error\n if (!active && networkError) {\n return (\n \n \n \n Oops! An unknown error occurred. Please refresh the page, or visit from another browser or device.\n \n \n \n )\n }\n\n // if neither context is active, spin\n if (!active && !networkActive) {\n return showLoader ? (\n \n \n \n ) : null\n }\n\n return children\n}\n","import { useEffect } from 'react'\n\nimport { RouteComponentProps } from 'react-router-dom'\nimport { parse } from 'qs'\nimport { useAppDispatch } from 'state/hooks'\nimport { updateUserDarkMode } from '../state/user/actions'\n\nexport default function DarkModeQueryParamReader({ location: { search } }: RouteComponentProps): null {\n const dispatch = useAppDispatch()\n\n useEffect(() => {\n if (!search) return\n if (search.length < 2) return\n\n const parsed = parse(search, {\n parseArrays: false,\n ignoreQueryPrefix: true,\n })\n\n const theme = parsed.theme\n\n if (typeof theme !== 'string') return\n\n if (theme.toLowerCase() === 'light') {\n dispatch(updateUserDarkMode({ userDarkMode: false }))\n } else if (theme.toLowerCase() === 'dark') {\n dispatch(updateUserDarkMode({ userDarkMode: true }))\n }\n }, [dispatch, search])\n\n return null\n}\n","import { useMemo } from 'react'\nimport { NEVER_RELOAD, useSingleCallResult } from '../state/multicall/hooks'\nimport { useActiveWeb3React } from './web3'\nimport { useArgentWalletDetectorContract } from './useContract'\n\nexport default function useIsArgentWallet(): boolean {\n const { account } = useActiveWeb3React()\n const argentWalletDetector = useArgentWalletDetectorContract()\n const inputs = useMemo(() => [account ?? undefined], [account])\n const call = useSingleCallResult(argentWalletDetector, 'isArgentWallet', inputs, NEVER_RELOAD)\n return call?.result?.[0] ?? false\n}\n","import { ArgentWalletContract } from '../abis/types'\nimport { useActiveWeb3React } from './web3'\nimport { useContract } from './useContract'\nimport useIsArgentWallet from './useIsArgentWallet'\nimport ArgentWalletContractABI from '../abis/argent-wallet-contract.json'\n\nexport function useArgentWalletContract(): ArgentWalletContract | null {\n const { account } = useActiveWeb3React()\n const isArgentWallet = useIsArgentWallet()\n return useContract(\n isArgentWallet ? account ?? undefined : undefined,\n ArgentWalletContractABI,\n true\n ) as ArgentWalletContract\n}\n","import CID from 'cids'\nimport { getCodec, rmPrefix } from 'multicodec'\nimport { decode, toB58String } from 'multihashes'\n\nexport function hexToUint8Array(hex: string): Uint8Array {\n hex = hex.startsWith('0x') ? hex.substr(2) : hex\n if (hex.length % 2 !== 0) throw new Error('hex must have length that is multiple of 2')\n const arr = new Uint8Array(hex.length / 2)\n for (let i = 0; i < arr.length; i++) {\n arr[i] = parseInt(hex.substr(i * 2, 2), 16)\n }\n return arr\n}\n\nconst UTF_8_DECODER = new TextDecoder('utf-8')\n\n/**\n * Returns the URI representation of the content hash for supported codecs\n * @param contenthash to decode\n */\nexport default function contenthashToUri(contenthash: string): string {\n const buff = hexToUint8Array(contenthash)\n const codec = getCodec(buff as Buffer) // the typing is wrong for @types/multicodec\n switch (codec) {\n case 'ipfs-ns': {\n const data = rmPrefix(buff as Buffer)\n const cid = new CID(data)\n return `ipfs://${toB58String(cid.multihash)}`\n }\n case 'ipns-ns': {\n const data = rmPrefix(buff as Buffer)\n const cid = new CID(data)\n const multihash = decode(cid.multihash)\n if (multihash.name === 'identity') {\n return `ipns://${UTF_8_DECODER.decode(multihash.digest).trim()}`\n } else {\n return `ipns://${toB58String(cid.multihash)}`\n }\n }\n default:\n throw new Error(`Unrecognized codec: ${codec}`)\n }\n}\n","const ENS_NAME_REGEX = /^(([a-zA-Z0-9]+(-[a-zA-Z0-9]+)*\\.)+)eth(\\/.*)?$/\n\nexport function parseENSAddress(ensAddress: string): { ensName: string; ensPath: string | undefined } | undefined {\n const match = ensAddress.match(ENS_NAME_REGEX)\n if (!match) return undefined\n return { ensName: `${match[1].toLowerCase()}eth`, ensPath: match[4] }\n}\n","/**\n * Given a URI that may be ipfs, ipns, http, or https protocol, return the fetch-able http(s) URLs for the same content\n * @param uri to convert to fetch-able http url\n */\nexport default function uriToHttp(uri: string): string[] {\n const protocol = uri.split(':')[0].toLowerCase()\n switch (protocol) {\n case 'https':\n return [uri]\n case 'http':\n return ['https' + uri.substr(4), uri]\n case 'ipfs':\n const hash = uri.match(/^ipfs:(\\/\\/)?(.*)$/i)?.[2]\n return [`https://cloudflare-ipfs.com/ipfs/${hash}/`, `https://ipfs.io/ipfs/${hash}/`]\n case 'ipns':\n const name = uri.match(/^ipns:(\\/\\/)?(.*)$/i)?.[2]\n return [`https://cloudflare-ipfs.com/ipns/${name}/`, `https://ipfs.io/ipns/${name}/`]\n default:\n return []\n }\n}\n","import { useMemo } from 'react'\nimport contenthashToUri from '../utils/contenthashToUri'\nimport { parseENSAddress } from '../utils/parseENSAddress'\nimport uriToHttp from '../utils/uriToHttp'\nimport useENSContentHash from './useENSContentHash'\n\nexport default function useHttpLocations(uri: string | undefined): string[] {\n const ens = useMemo(() => (uri ? parseENSAddress(uri) : undefined), [uri])\n const resolvedContentHash = useENSContentHash(ens?.ensName)\n return useMemo(() => {\n if (ens) {\n return resolvedContentHash.contenthash ? uriToHttp(contenthashToUri(resolvedContentHash.contenthash)) : []\n } else {\n return uri ? uriToHttp(uri) : []\n }\n }, [ens, resolvedContentHash.contenthash, uri])\n}\n","import { namehash } from 'ethers/lib/utils'\nimport { useMemo } from 'react'\nimport { useSingleCallResult } from '../state/multicall/hooks'\nimport isZero from '../utils/isZero'\nimport { useENSRegistrarContract, useENSResolverContract } from './useContract'\n\n/**\n * Does a lookup for an ENS name to find its contenthash.\n */\nexport default function useENSContentHash(ensName?: string | null): { loading: boolean; contenthash: string | null } {\n const ensNodeArgument = useMemo(() => {\n if (!ensName) return [undefined]\n try {\n return ensName ? [namehash(ensName)] : [undefined]\n } catch (error) {\n return [undefined]\n }\n }, [ensName])\n const registrarContract = useENSRegistrarContract(false)\n const resolverAddressResult = useSingleCallResult(registrarContract, 'resolver', ensNodeArgument)\n const resolverAddress = resolverAddressResult.result?.[0]\n const resolverContract = useENSResolverContract(\n resolverAddress && isZero(resolverAddress) ? undefined : resolverAddress,\n false\n )\n const contenthash = useSingleCallResult(resolverContract, 'contenthash', ensNodeArgument)\n\n return {\n contenthash: contenthash.result?.[0] ?? null,\n loading: resolverAddressResult.loading || contenthash.loading,\n }\n}\n","import { useState } from 'react'\nimport { Slash } from 'react-feather'\nimport { ImageProps } from 'rebass'\nimport useTheme from '../../hooks/useTheme'\n\nconst BAD_SRCS: { [tokenAddress: string]: true } = {}\n\ninterface LogoProps extends Pick {\n srcs: string[]\n}\n\n/**\n * Renders an image by sequentially trying a list of URIs, and then eventually a fallback triangle alert\n */\nexport default function Logo({ srcs, alt, style, ...rest }: LogoProps) {\n const [, refresh] = useState(0)\n\n const theme = useTheme()\n\n const src: string | undefined = srcs.find((src) => !BAD_SRCS[src])\n\n if (src) {\n return (\n {\n if (src) BAD_SRCS[src] = true\n refresh((i) => i + 1)\n }}\n />\n )\n }\n\n return \n}\n","import { Currency } from '@uniswap/sdk-core'\nimport React, { useMemo } from 'react'\nimport styled from 'styled-components/macro'\nimport EthereumLogo from '../../assets/images/ethereum-logo.png'\nimport useHttpLocations from '../../hooks/useHttpLocations'\nimport { WrappedTokenInfo } from '../../state/lists/wrappedTokenInfo'\nimport Logo from '../Logo'\n\nexport const getTokenLogoURL = (address: string) =>\n `https://raw.githubusercontent.com/uniswap/assets/master/blockchains/ethereum/assets/${address}/logo.png`\n\nconst StyledEthereumLogo = styled.img<{ size: string }>`\n width: ${({ size }) => size};\n height: ${({ size }) => size};\n box-shadow: 0px 6px 10px rgba(0, 0, 0, 0.075);\n border-radius: 24px;\n`\n\nconst StyledLogo = styled(Logo)<{ size: string }>`\n width: ${({ size }) => size};\n height: ${({ size }) => size};\n border-radius: ${({ size }) => size};\n box-shadow: 0px 6px 10px rgba(0, 0, 0, 0.075);\n background-color: ${({ theme }) => theme.white};\n`\n\nexport default function CurrencyLogo({\n currency,\n size = '24px',\n style,\n ...rest\n}: {\n currency?: Currency\n size?: string\n style?: React.CSSProperties\n}) {\n const uriLocations = useHttpLocations(currency instanceof WrappedTokenInfo ? currency.logoURI : undefined)\n\n const srcs: string[] = useMemo(() => {\n if (!currency || currency.isNative) return []\n\n if (currency.isToken) {\n const defaultUrls = currency.chainId === 1 ? [getTokenLogoURL(currency.address)] : []\n if (currency instanceof WrappedTokenInfo) {\n return [...uriLocations, ...defaultUrls]\n }\n return defaultUrls\n }\n return []\n }, [currency, uriLocations])\n\n if (currency?.isNative) {\n return \n }\n\n return \n}\n","export default \"data:image/png;base64,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\"","import { Currency } from '@uniswap/sdk-core'\nimport { ReactNode, useContext, useEffect } from 'react'\nimport styled, { ThemeContext } from 'styled-components/macro'\nimport { getExplorerLink, ExplorerDataType } from '../../utils/getExplorerLink'\nimport Modal from '../Modal'\nimport { ExternalLink } from '../../theme'\nimport { Text } from 'rebass'\nimport { CloseIcon, CustomLightSpinner } from '../../theme/components'\nimport { RowBetween, RowFixed } from '../Row'\nimport { AlertTriangle, ArrowUpCircle, CheckCircle } from 'react-feather'\nimport { ButtonPrimary, ButtonLight } from '../Button'\nimport { AutoColumn, ColumnCenter } from '../Column'\nimport Circle from '../../assets/images/blue-loader.svg'\nimport MetaMaskLogo from '../../assets/images/metamask.png'\nimport { useActiveWeb3React } from '../../hooks/web3'\nimport useAddTokenToMetamask from 'hooks/useAddTokenToMetamask'\nimport { Trans } from '@lingui/macro'\nimport { L2_CHAIN_IDS } from 'constants/chains'\n\nconst Wrapper = styled.div`\n width: 100%;\n padding: 1rem;\n`\nconst Section = styled(AutoColumn)<{ inline?: boolean }>`\n padding: ${({ inline }) => (inline ? '0' : '0')};\n`\n\nconst BottomSection = styled(Section)`\n border-bottom-left-radius: 20px;\n border-bottom-right-radius: 20px;\n`\n\nconst ConfirmedIcon = styled(ColumnCenter)<{ inline?: boolean }>`\n padding: ${({ inline }) => (inline ? '20px 0' : '60px 0;')};\n`\n\nconst StyledLogo = styled.img`\n height: 16px;\n width: 16px;\n margin-left: 6px;\n`\n\nfunction ConfirmationPendingContent({\n onDismiss,\n pendingText,\n inline,\n}: {\n onDismiss: () => void\n pendingText: ReactNode\n inline?: boolean // not in modal\n}) {\n return (\n \n \n {!inline && (\n \n
\n \n \n )}\n \n \n \n \n \n Waiting For Confirmation\n \n \n \n {pendingText}\n \n \n \n Confirm this transaction in your wallet\n \n \n \n \n )\n}\n\nfunction TransactionSubmittedContent({\n onDismiss,\n chainId,\n hash,\n currencyToAdd,\n inline,\n}: {\n onDismiss: () => void\n hash: string | undefined\n chainId: number\n currencyToAdd?: Currency | undefined\n inline?: boolean // not in modal\n}) {\n const theme = useContext(ThemeContext)\n\n const { library } = useActiveWeb3React()\n\n const { addToken, success } = useAddTokenToMetamask(currencyToAdd)\n\n return (\n \n
\n {!inline && (\n \n
\n \n \n )}\n \n \n \n \n \n Transaction Submitted\n \n {chainId && hash && (\n \n \n View on Explorer\n \n \n )}\n {currencyToAdd && library?.provider?.isMetaMask && (\n \n {!success ? (\n \n \n Add {currencyToAdd.symbol} to Metamask \n \n \n ) : (\n \n Added {currencyToAdd.symbol} \n \n \n )}\n \n )}\n \n \n {inline ? Return : Close}\n \n \n \n
\n
\n )\n}\n\nexport function ConfirmationModalContent({\n title,\n bottomContent,\n onDismiss,\n topContent,\n}: {\n title: ReactNode\n onDismiss: () => void\n topContent: () => ReactNode\n bottomContent?: () => ReactNode | undefined\n}) {\n return (\n \n
\n \n \n {title}\n \n \n \n {topContent()}\n
\n {bottomContent && {bottomContent()}}\n
\n )\n}\n\nexport function TransactionErrorContent({ message, onDismiss }: { message: ReactNode; onDismiss: () => void }) {\n const theme = useContext(ThemeContext)\n return (\n \n
\n \n \n Error\n \n \n \n \n \n \n {message}\n \n \n
\n \n \n Dismiss\n \n \n
\n )\n}\n\ninterface ConfirmationModalProps {\n isOpen: boolean\n onDismiss: () => void\n hash: string | undefined\n content: () => ReactNode\n attemptingTxn: boolean\n pendingText: ReactNode\n currencyToAdd?: Currency | undefined\n}\n\nexport default function TransactionConfirmationModal({\n isOpen,\n onDismiss,\n attemptingTxn,\n hash,\n pendingText,\n content,\n currencyToAdd,\n}: ConfirmationModalProps) {\n const { chainId } = useActiveWeb3React()\n\n // if on L2 and txn is submitted, close automatically (if open)\n useEffect(() => {\n if (isOpen && chainId && L2_CHAIN_IDS.includes(chainId) && hash) {\n onDismiss()\n }\n }, [chainId, hash, isOpen, onDismiss])\n\n if (!chainId) return null\n\n // confirmation screen\n // if on L2 and submitted dont render content, as should auto dismiss\n // need this to skip submitted view during state update ^^\n return (\n \n {L2_CHAIN_IDS.includes(chainId) && hash ? null : attemptingTxn ? (\n \n ) : hash ? (\n \n ) : (\n content()\n )}\n \n )\n}\n","import { getTokenLogoURL } from './../components/CurrencyLogo/index'\nimport { Currency, Token } from '@uniswap/sdk-core'\nimport { useCallback, useState } from 'react'\nimport { useActiveWeb3React } from 'hooks/web3'\n\nexport default function useAddTokenToMetamask(currencyToAdd: Currency | undefined): {\n addToken: () => void\n success: boolean | undefined\n} {\n const { library } = useActiveWeb3React()\n\n const token: Token | undefined = currencyToAdd?.wrapped\n\n const [success, setSuccess] = useState()\n\n const addToken = useCallback(() => {\n if (library && library.provider.isMetaMask && library.provider.request && token) {\n library.provider\n .request({\n method: 'wallet_watchAsset',\n params: {\n //@ts-ignore // need this for incorrect ethers provider type\n type: 'ERC20',\n options: {\n address: token.address,\n symbol: token.symbol,\n decimals: token.decimals,\n image: getTokenLogoURL(token.address),\n },\n },\n })\n .then((success) => {\n setSuccess(success)\n })\n .catch(() => setSuccess(false))\n } else {\n setSuccess(false)\n }\n }, [library, token])\n\n return { addToken, success }\n}\n","import { Currency } from '@uniswap/sdk-core'\n\nexport function currencyId(currency: Currency): string {\n if (currency.isNative) return 'ETH'\n if (currency.isToken) return currency.address\n throw new Error('invalid currency')\n}\n","import { useEffect, useRef } from 'react'\n\nexport default function useInterval(callback: () => void, delay: null | number, leading = true) {\n const savedCallback = useRef<() => void>()\n\n // Remember the latest callback.\n useEffect(() => {\n savedCallback.current = callback\n }, [callback])\n\n // Set up the interval.\n useEffect(() => {\n function tick() {\n const current = savedCallback.current\n current && current()\n }\n\n if (delay !== null) {\n if (leading) tick()\n const id = setInterval(tick, delay)\n return () => clearInterval(id)\n }\n return undefined\n }, [delay, leading])\n}\n","import { Placement } from '@popperjs/core'\nimport { transparentize } from 'polished'\nimport React, { useCallback, useState } from 'react'\nimport { usePopper } from 'react-popper'\nimport styled from 'styled-components/macro'\nimport useInterval from '../../hooks/useInterval'\nimport Portal from '@reach/portal'\n\nconst PopoverContainer = styled.div<{ show: boolean }>`\n z-index: 9999;\n visibility: ${(props) => (props.show ? 'visible' : 'hidden')};\n opacity: ${(props) => (props.show ? 1 : 0)};\n transition: visibility 150ms linear, opacity 150ms linear;\n background: ${({ theme }) => theme.bg2};\n border: 1px solid ${({ theme }) => theme.bg3};\n box-shadow: 0 4px 8px 0 ${({ theme }) => transparentize(0.9, theme.shadow1)};\n color: ${({ theme }) => theme.text2};\n border-radius: 8px;\n`\n\nconst ReferenceElement = styled.div`\n display: inline-block;\n`\n\nconst Arrow = styled.div`\n width: 8px;\n height: 8px;\n z-index: 9998;\n\n ::before {\n position: absolute;\n width: 8px;\n height: 8px;\n z-index: 9998;\n\n content: '';\n border: 1px solid ${({ theme }) => theme.bg3};\n transform: rotate(45deg);\n background: ${({ theme }) => theme.bg2};\n }\n\n &.arrow-top {\n bottom: -5px;\n ::before {\n border-top: none;\n border-left: none;\n }\n }\n\n &.arrow-bottom {\n top: -5px;\n ::before {\n border-bottom: none;\n border-right: none;\n }\n }\n\n &.arrow-left {\n right: -5px;\n\n ::before {\n border-bottom: none;\n border-left: none;\n }\n }\n\n &.arrow-right {\n left: -5px;\n ::before {\n border-right: none;\n border-top: none;\n }\n }\n`\n\nexport interface PopoverProps {\n content: React.ReactNode\n show: boolean\n children: React.ReactNode\n placement?: Placement\n}\n\nexport default function Popover({ content, show, children, placement = 'auto' }: PopoverProps) {\n const [referenceElement, setReferenceElement] = useState(null)\n const [popperElement, setPopperElement] = useState(null)\n const [arrowElement, setArrowElement] = useState(null)\n const { styles, update, attributes } = usePopper(referenceElement, popperElement, {\n placement,\n strategy: 'fixed',\n modifiers: [\n { name: 'offset', options: { offset: [8, 8] } },\n { name: 'arrow', options: { element: arrowElement } },\n ],\n })\n const updateCallback = useCallback(() => {\n update && update()\n }, [update])\n useInterval(updateCallback, show ? 100 : null)\n\n return (\n <>\n {children}\n \n \n {content}\n \n \n \n \n )\n}\n","import { ReactNode, useCallback, useState } from 'react'\nimport styled from 'styled-components/macro'\nimport Popover, { PopoverProps } from '../Popover'\n\nconst TooltipContainer = styled.div`\n width: 256px;\n padding: 0.6rem 1rem;\n font-weight: 400;\n word-break: break-word;\n`\n\ninterface TooltipProps extends Omit {\n text: ReactNode\n}\n\ninterface TooltipContentProps extends Omit {\n content: ReactNode\n}\n\nexport default function Tooltip({ text, ...rest }: TooltipProps) {\n return {text}} {...rest} />\n}\n\nfunction TooltipContent({ content, ...rest }: TooltipContentProps) {\n return {content}} {...rest} />\n}\n\nexport function MouseoverTooltip({ children, ...rest }: Omit) {\n const [show, setShow] = useState(false)\n const open = useCallback(() => setShow(true), [setShow])\n const close = useCallback(() => setShow(false), [setShow])\n return (\n \n
\n {children}\n
\n
\n )\n}\n\nexport function MouseoverTooltipContent({ content, children, ...rest }: Omit) {\n const [show, setShow] = useState(false)\n const open = useCallback(() => setShow(true), [setShow])\n const close = useCallback(() => setShow(false), [setShow])\n return (\n \n \n {children}\n
\n \n )\n}\n","import { ReactNode, useCallback, useState } from 'react'\nimport styled from 'styled-components/macro'\nimport Tooltip from '../Tooltip'\n\nconst QuestionWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0px;\n width: 18px;\n height: 18px;\n border: none;\n background: none;\n outline: none;\n cursor: default;\n border-radius: 36px;\n font-size: 12px;\n background-color: ${({ theme }) => theme.bg2};\n color: ${({ theme }) => theme.text2};\n\n :hover,\n :focus {\n opacity: 0.7;\n }\n`\n\nconst QuestionMark = styled.span`\n font-size: 14px;\n`\n\nexport default function QuestionHelper({ text }: { text: ReactNode; size?: number }) {\n const [show, setShow] = useState(false)\n\n const open = useCallback(() => setShow(true), [setShow])\n const close = useCallback(() => setShow(false), [setShow])\n\n return (\n \n \n \n ?\n \n \n \n )\n}\n","import { Trans } from '@lingui/macro'\nimport { Text } from 'rebass'\nimport { Currency } from '@uniswap/sdk-core'\nimport styled from 'styled-components/macro'\n\nimport { COMMON_BASES } from '../../constants/routing'\nimport { currencyId } from '../../utils/currencyId'\nimport { AutoColumn } from '../Column'\nimport QuestionHelper from '../QuestionHelper'\nimport { AutoRow } from '../Row'\nimport CurrencyLogo from '../CurrencyLogo'\n\nconst MobileWrapper = styled(AutoColumn)`\n ${({ theme }) => theme.mediaWidth.upToSmall`\n display: none;\n `};\n`\n\nconst BaseWrapper = styled.div<{ disable?: boolean }>`\n border: 1px solid ${({ theme, disable }) => (disable ? 'transparent' : theme.bg3)};\n border-radius: 10px;\n display: flex;\n padding: 6px;\n\n align-items: center;\n :hover {\n cursor: ${({ disable }) => !disable && 'pointer'};\n background-color: ${({ theme, disable }) => !disable && theme.bg2};\n }\n\n color: ${({ theme, disable }) => disable && theme.text3};\n background-color: ${({ theme, disable }) => disable && theme.bg3};\n filter: ${({ disable }) => disable && 'grayscale(1)'};\n`\n\nexport default function CommonBases({\n chainId,\n onSelect,\n selectedCurrency,\n}: {\n chainId?: number\n selectedCurrency?: Currency | null\n onSelect: (currency: Currency) => void\n}) {\n const bases = typeof chainId !== 'undefined' ? COMMON_BASES[chainId] ?? [] : []\n\n return bases.length > 0 ? (\n \n \n \n Common bases\n \n These tokens are commonly paired with other tokens.} />\n \n \n {bases.map((currency: Currency) => {\n const isSelected = selectedCurrency?.equals(currency)\n return (\n !isSelected && onSelect(currency)}\n disable={isSelected}\n key={currencyId(currency)}\n >\n \n \n {currency.symbol}\n \n \n )\n })}\n \n \n ) : null\n}\n","import styled from 'styled-components/macro'\nimport { AutoColumn } from '../Column'\nimport { RowBetween } from '../Row'\n\nexport const TextDot = styled.div`\n height: 3px;\n width: 3px;\n background-color: ${({ theme }) => theme.text2};\n border-radius: 50%;\n`\n\nexport const Checkbox = styled.input`\n border: 1px solid ${({ theme }) => theme.red3};\n height: 20px;\n margin: 0;\n`\n\nexport const PaddedColumn = styled(AutoColumn)`\n padding: 20px;\n`\n\nexport const MenuItem = styled(RowBetween)`\n padding: 4px 20px;\n height: 56px;\n display: grid;\n grid-template-columns: auto minmax(auto, 1fr) auto minmax(0, 72px);\n grid-gap: 16px;\n cursor: ${({ disabled }) => !disabled && 'pointer'};\n pointer-events: ${({ disabled }) => disabled && 'none'};\n :hover {\n background-color: ${({ theme, disabled }) => !disabled && theme.bg2};\n }\n opacity: ${({ disabled, selected }) => (disabled || selected ? 0.5 : 1)};\n`\n\nexport const SearchInput = styled.input`\n position: relative;\n display: flex;\n padding: 16px;\n align-items: center;\n width: 100%;\n white-space: nowrap;\n background: none;\n border: none;\n outline: none;\n border-radius: 20px;\n color: ${({ theme }) => theme.text1};\n border-style: solid;\n border: 1px solid ${({ theme }) => theme.bg3};\n -webkit-appearance: none;\n\n font-size: 18px;\n\n ::placeholder {\n color: ${({ theme }) => theme.text3};\n }\n transition: border 100ms;\n :focus {\n border: 1px solid ${({ theme }) => theme.primary1};\n outline: none;\n }\n`\nexport const Separator = styled.div`\n width: 100%;\n height: 1px;\n background-color: ${({ theme }) => theme.bg2};\n`\n\nexport const SeparatorDark = styled.div`\n width: 100%;\n height: 1px;\n background-color: ${({ theme }) => theme.bg3};\n`\n","import React from 'react'\nimport styled from 'styled-components/macro'\nimport useHttpLocations from '../../hooks/useHttpLocations'\n\nimport Logo from '../Logo'\n\nconst StyledListLogo = styled(Logo)<{ size: string }>`\n width: ${({ size }) => size};\n height: ${({ size }) => size};\n`\n\nexport default function ListLogo({\n logoURI,\n style,\n size = '24px',\n alt,\n}: {\n logoURI: string\n size?: string\n style?: React.CSSProperties\n alt?: string\n}) {\n const srcs: string[] = useHttpLocations(logoURI)\n\n return \n}\n","import { CSSProperties } from 'react'\nimport { Token } from '@uniswap/sdk-core'\nimport { AutoRow, RowFixed } from 'components/Row'\nimport { AutoColumn } from 'components/Column'\nimport CurrencyLogo from 'components/CurrencyLogo'\nimport { TYPE } from 'theme'\nimport ListLogo from 'components/ListLogo'\nimport useTheme from 'hooks/useTheme'\nimport { ButtonPrimary } from 'components/Button'\nimport styled from 'styled-components/macro'\nimport { useIsUserAddedToken, useIsTokenActive } from 'hooks/Tokens'\nimport { CheckCircle } from 'react-feather'\nimport { WrappedTokenInfo } from '../../state/lists/wrappedTokenInfo'\nimport { Trans } from '@lingui/macro'\n\nconst TokenSection = styled.div<{ dim?: boolean }>`\n padding: 4px 20px;\n height: 56px;\n display: grid;\n grid-template-columns: auto minmax(auto, 1fr) auto;\n grid-gap: 16px;\n align-items: center;\n\n opacity: ${({ dim }) => (dim ? '0.4' : '1')};\n`\n\nconst CheckIcon = styled(CheckCircle)`\n height: 16px;\n width: 16px;\n margin-right: 6px;\n stroke: ${({ theme }) => theme.green1};\n`\n\nconst NameOverflow = styled.div`\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 140px;\n font-size: 12px;\n`\n\nexport default function ImportRow({\n token,\n style,\n dim,\n showImportView,\n setImportToken,\n}: {\n token: Token\n style?: CSSProperties\n dim?: boolean\n showImportView: () => void\n setImportToken: (token: Token) => void\n}) {\n const theme = useTheme()\n\n // check if already active on list or local storage tokens\n const isAdded = useIsUserAddedToken(token)\n const isActive = useIsTokenActive(token)\n\n const list = token instanceof WrappedTokenInfo ? token.list : undefined\n\n return (\n \n \n \n \n {token.symbol}\n \n {token.name}\n \n \n {list && list.logoURI && (\n \n \n via {list.name} \n \n \n \n )}\n \n {!isActive && !isAdded ? (\n {\n setImportToken && setImportToken(token)\n showImportView()\n }}\n >\n Import\n \n ) : (\n \n \n \n Active\n \n \n )}\n \n )\n}\n","export default __webpack_public_path__ + \"static/media/tokenlist.831c6277.svg\";","import { Trans } from '@lingui/macro'\nimport { Currency, CurrencyAmount, Token } from '@uniswap/sdk-core'\nimport { CSSProperties, MutableRefObject, useCallback, useMemo } from 'react'\nimport { FixedSizeList } from 'react-window'\nimport { Text } from 'rebass'\nimport styled from 'styled-components/macro'\nimport { useActiveWeb3React } from '../../hooks/web3'\nimport { useCombinedActiveList } from '../../state/lists/hooks'\nimport { WrappedTokenInfo } from '../../state/lists/wrappedTokenInfo'\nimport { useCurrencyBalance } from '../../state/wallet/hooks'\nimport { TYPE } from '../../theme'\nimport { useIsUserAddedToken } from '../../hooks/Tokens'\nimport Column from '../Column'\nimport { RowFixed, RowBetween } from '../Row'\nimport CurrencyLogo from '../CurrencyLogo'\nimport { MouseoverTooltip } from '../Tooltip'\nimport { MenuItem } from './styleds'\nimport Loader from '../Loader'\nimport { isTokenOnList } from '../../utils'\nimport ImportRow from './ImportRow'\nimport { LightGreyCard } from 'components/Card'\nimport TokenListLogo from '../../assets/svg/tokenlist.svg'\nimport QuestionHelper from 'components/QuestionHelper'\nimport useTheme from 'hooks/useTheme'\n\nfunction currencyKey(currency: Currency): string {\n return currency.isToken ? currency.address : 'ETHER'\n}\n\nconst StyledBalanceText = styled(Text)`\n white-space: nowrap;\n overflow: hidden;\n max-width: 5rem;\n text-overflow: ellipsis;\n`\n\nconst Tag = styled.div`\n background-color: ${({ theme }) => theme.bg3};\n color: ${({ theme }) => theme.text2};\n font-size: 14px;\n border-radius: 4px;\n padding: 0.25rem 0.3rem 0.25rem 0.3rem;\n max-width: 6rem;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n justify-self: flex-end;\n margin-right: 4px;\n`\n\nconst FixedContentRow = styled.div`\n padding: 4px 20px;\n height: 56px;\n display: grid;\n grid-gap: 16px;\n align-items: center;\n`\n\nfunction Balance({ balance }: { balance: CurrencyAmount }) {\n return {balance.toSignificant(4)}\n}\n\nconst TagContainer = styled.div`\n display: flex;\n justify-content: flex-end;\n`\n\nconst TokenListLogoWrapper = styled.img`\n height: 20px;\n`\n\nfunction TokenTags({ currency }: { currency: Currency }) {\n if (!(currency instanceof WrappedTokenInfo)) {\n return \n }\n\n const tags = currency.tags\n if (!tags || tags.length === 0) return \n\n const tag = tags[0]\n\n return (\n \n \n {tag.name}\n \n {tags.length > 1 ? (\n `${name}: ${description}`)\n .join('; \\n')}\n >\n ...\n \n ) : null}\n \n )\n}\n\nfunction CurrencyRow({\n currency,\n onSelect,\n isSelected,\n otherSelected,\n style,\n showCurrencyAmount,\n}: {\n currency: Currency\n onSelect: () => void\n isSelected: boolean\n otherSelected: boolean\n style: CSSProperties\n showCurrencyAmount?: boolean\n}) {\n const { account } = useActiveWeb3React()\n const key = currencyKey(currency)\n const selectedTokenList = useCombinedActiveList()\n const isOnSelectedList = isTokenOnList(selectedTokenList, currency.isToken ? currency : undefined)\n const customAdded = useIsUserAddedToken(currency)\n const balance = useCurrencyBalance(account ?? undefined, currency)\n\n // only show add or remove buttons if not on selected list\n return (\n (isSelected ? null : onSelect())}\n disabled={isSelected}\n selected={otherSelected}\n >\n \n \n \n {currency.symbol}\n \n \n {!currency.isNative && !isOnSelectedList && customAdded ? (\n {currency.name} • Added by user\n ) : (\n currency.name\n )}\n \n \n \n {showCurrencyAmount && (\n \n {balance ? : account ? : null}\n \n )}\n \n )\n}\n\nconst BREAK_LINE = 'BREAK'\ntype BreakLine = typeof BREAK_LINE\nfunction isBreakLine(x: unknown): x is BreakLine {\n return x === BREAK_LINE\n}\n\nfunction BreakLineComponent({ style }: { style: CSSProperties }) {\n const theme = useTheme()\n return (\n \n \n \n \n \n \n Expanded results from inactive Token Lists\n \n \n \n Tokens from inactive lists. Import specific tokens below or click Manage to activate more lists.\n \n }\n />\n \n \n \n )\n}\n\nexport default function CurrencyList({\n height,\n currencies,\n otherListTokens,\n selectedCurrency,\n onCurrencySelect,\n otherCurrency,\n fixedListRef,\n showImportView,\n setImportToken,\n showCurrencyAmount,\n}: {\n height: number\n currencies: Currency[]\n otherListTokens?: WrappedTokenInfo[]\n selectedCurrency?: Currency | null\n onCurrencySelect: (currency: Currency) => void\n otherCurrency?: Currency | null\n fixedListRef?: MutableRefObject\n showImportView: () => void\n setImportToken: (token: Token) => void\n showCurrencyAmount?: boolean\n}) {\n const itemData: (Currency | BreakLine)[] = useMemo(() => {\n if (otherListTokens && otherListTokens?.length > 0) {\n return [...currencies, BREAK_LINE, ...otherListTokens]\n }\n return currencies\n }, [currencies, otherListTokens])\n\n const Row = useCallback(\n function TokenRow({ data, index, style }) {\n const row: Currency | BreakLine = data[index]\n\n if (isBreakLine(row)) {\n return \n }\n\n const currency = row\n\n const isSelected = Boolean(currency && selectedCurrency && selectedCurrency.equals(currency))\n const otherSelected = Boolean(currency && otherCurrency && otherCurrency.equals(currency))\n const handleSelect = () => currency && onCurrencySelect(currency)\n\n const token = currency?.wrapped\n\n const showImport = index > currencies.length\n\n if (showImport && token) {\n return (\n \n )\n } else if (currency) {\n return (\n \n )\n } else {\n return null\n }\n },\n [\n currencies.length,\n onCurrencySelect,\n otherCurrency,\n selectedCurrency,\n setImportToken,\n showImportView,\n showCurrencyAmount,\n ]\n )\n\n const itemKey = useCallback((index: number, data: typeof itemData) => {\n const currency = data[index]\n if (isBreakLine(currency)) return BREAK_LINE\n return currencyKey(currency)\n }, [])\n\n return (\n \n {Row}\n \n )\n}\n","import { Token, CurrencyAmount, Currency } from '@uniswap/sdk-core'\nimport { useMemo } from 'react'\nimport { useAllTokenBalances } from '../../state/wallet/hooks'\n\n// compare two token amounts with highest one coming first\nfunction balanceComparator(balanceA?: CurrencyAmount, balanceB?: CurrencyAmount) {\n if (balanceA && balanceB) {\n return balanceA.greaterThan(balanceB) ? -1 : balanceA.equalTo(balanceB) ? 0 : 1\n } else if (balanceA && balanceA.greaterThan('0')) {\n return -1\n } else if (balanceB && balanceB.greaterThan('0')) {\n return 1\n }\n return 0\n}\n\nfunction getTokenComparator(balances: {\n [tokenAddress: string]: CurrencyAmount | undefined\n}): (tokenA: Token, tokenB: Token) => number {\n return function sortTokens(tokenA: Token, tokenB: Token): number {\n // -1 = a is first\n // 1 = b is first\n\n // sort by balances\n const balanceA = balances[tokenA.address]\n const balanceB = balances[tokenB.address]\n\n const balanceComp = balanceComparator(balanceA, balanceB)\n if (balanceComp !== 0) return balanceComp\n\n if (tokenA.symbol && tokenB.symbol) {\n // sort by symbol\n return tokenA.symbol.toLowerCase() < tokenB.symbol.toLowerCase() ? -1 : 1\n } else {\n return tokenA.symbol ? -1 : tokenB.symbol ? -1 : 0\n }\n }\n}\n\nexport function useTokenComparator(inverted: boolean): (tokenA: Token, tokenB: Token) => number {\n const balances = useAllTokenBalances()\n const comparator = useMemo(() => getTokenComparator(balances ?? {}), [balances])\n return useMemo(() => {\n if (inverted) {\n return (tokenA: Token, tokenB: Token) => comparator(tokenA, tokenB) * -1\n } else {\n return comparator\n }\n }, [inverted, comparator])\n}\n","import { useCallback, useState } from 'react'\n\nexport default function useToggle(initialState = false): [boolean, () => void] {\n const [state, setState] = useState(initialState)\n const toggle = useCallback(() => setState((state) => !state), [])\n return [state, toggle]\n}\n","import { Currency, Token } from '@uniswap/sdk-core'\nimport { KeyboardEvent, RefObject, useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport ReactGA from 'react-ga'\nimport { t, Trans } from '@lingui/macro'\nimport { FixedSizeList } from 'react-window'\nimport { Text } from 'rebass'\nimport { ExtendedEther } from '../../constants/tokens'\nimport { useActiveWeb3React } from '../../hooks/web3'\nimport { useAllTokens, useToken, useIsUserAddedToken, useSearchInactiveTokenLists } from '../../hooks/Tokens'\nimport { CloseIcon, TYPE, ButtonText, IconWrapper } from '../../theme'\nimport { isAddress } from '../../utils'\nimport Column from '../Column'\nimport Row, { RowBetween, RowFixed } from '../Row'\nimport CommonBases from './CommonBases'\nimport CurrencyList from './CurrencyList'\nimport { filterTokens, useSortedTokensByQuery } from './filtering'\nimport { useTokenComparator } from './sorting'\nimport { PaddedColumn, SearchInput, Separator } from './styleds'\nimport AutoSizer from 'react-virtualized-auto-sizer'\nimport styled from 'styled-components/macro'\nimport useToggle from 'hooks/useToggle'\nimport { useOnClickOutside } from 'hooks/useOnClickOutside'\nimport useTheme from 'hooks/useTheme'\nimport ImportRow from './ImportRow'\nimport { Edit } from 'react-feather'\nimport useDebounce from 'hooks/useDebounce'\n\nconst ContentWrapper = styled(Column)`\n width: 100%;\n flex: 1 1;\n position: relative;\n`\n\nconst Footer = styled.div`\n width: 100%;\n border-radius: 20px;\n padding: 20px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n background-color: ${({ theme }) => theme.bg1};\n border-top: 1px solid ${({ theme }) => theme.bg2};\n`\n\ninterface CurrencySearchProps {\n isOpen: boolean\n onDismiss: () => void\n selectedCurrency?: Currency | null\n onCurrencySelect: (currency: Currency) => void\n otherSelectedCurrency?: Currency | null\n showCommonBases?: boolean\n showCurrencyAmount?: boolean\n disableNonToken?: boolean\n showManageView: () => void\n showImportView: () => void\n setImportToken: (token: Token) => void\n}\n\nexport function CurrencySearch({\n selectedCurrency,\n onCurrencySelect,\n otherSelectedCurrency,\n showCommonBases,\n showCurrencyAmount,\n disableNonToken,\n onDismiss,\n isOpen,\n showManageView,\n showImportView,\n setImportToken,\n}: CurrencySearchProps) {\n const { chainId } = useActiveWeb3React()\n const theme = useTheme()\n\n // refs for fixed size lists\n const fixedList = useRef()\n\n const [searchQuery, setSearchQuery] = useState('')\n const debouncedQuery = useDebounce(searchQuery, 200)\n\n const [invertSearchOrder] = useState(false)\n\n const allTokens = useAllTokens()\n\n // if they input an address, use it\n const isAddressSearch = isAddress(debouncedQuery)\n\n const searchToken = useToken(debouncedQuery)\n\n const searchTokenIsAdded = useIsUserAddedToken(searchToken)\n\n useEffect(() => {\n if (isAddressSearch) {\n ReactGA.event({\n category: 'Currency Select',\n action: 'Search by address',\n label: isAddressSearch,\n })\n }\n }, [isAddressSearch])\n\n const tokenComparator = useTokenComparator(invertSearchOrder)\n\n const filteredTokens: Token[] = useMemo(() => {\n return filterTokens(Object.values(allTokens), debouncedQuery)\n }, [allTokens, debouncedQuery])\n\n const sortedTokens: Token[] = useMemo(() => {\n return filteredTokens.sort(tokenComparator)\n }, [filteredTokens, tokenComparator])\n\n const filteredSortedTokens = useSortedTokensByQuery(sortedTokens, debouncedQuery)\n\n const ether = useMemo(() => chainId && ExtendedEther.onChain(chainId), [chainId])\n\n const filteredSortedTokensWithETH: Currency[] = useMemo(() => {\n const s = debouncedQuery.toLowerCase().trim()\n if (s === '' || s === 'e' || s === 'et' || s === 'eth') {\n return ether ? [ether, ...filteredSortedTokens] : filteredSortedTokens\n }\n return filteredSortedTokens\n }, [debouncedQuery, ether, filteredSortedTokens])\n\n const handleCurrencySelect = useCallback(\n (currency: Currency) => {\n onCurrencySelect(currency)\n onDismiss()\n },\n [onDismiss, onCurrencySelect]\n )\n\n // clear the input on open\n useEffect(() => {\n if (isOpen) setSearchQuery('')\n }, [isOpen])\n\n // manage focus on modal show\n const inputRef = useRef()\n const handleInput = useCallback((event) => {\n const input = event.target.value\n const checksummedInput = isAddress(input)\n setSearchQuery(checksummedInput || input)\n fixedList.current?.scrollTo(0)\n }, [])\n\n const handleEnter = useCallback(\n (e: KeyboardEvent) => {\n if (e.key === 'Enter') {\n const s = debouncedQuery.toLowerCase().trim()\n if (s === 'eth' && ether) {\n handleCurrencySelect(ether)\n } else if (filteredSortedTokensWithETH.length > 0) {\n if (\n filteredSortedTokensWithETH[0].symbol?.toLowerCase() === debouncedQuery.trim().toLowerCase() ||\n filteredSortedTokensWithETH.length === 1\n ) {\n handleCurrencySelect(filteredSortedTokensWithETH[0])\n }\n }\n }\n },\n [debouncedQuery, ether, filteredSortedTokensWithETH, handleCurrencySelect]\n )\n\n // menu ui\n const [open, toggle] = useToggle(false)\n const node = useRef()\n useOnClickOutside(node, open ? toggle : undefined)\n\n // if no results on main list, show option to expand into inactive\n const filteredInactiveTokens = useSearchInactiveTokenLists(\n filteredTokens.length === 0 || (debouncedQuery.length > 2 && !isAddressSearch) ? debouncedQuery : undefined\n )\n\n return (\n \n \n \n \n Select a token\n \n \n \n \n }\n onChange={handleInput}\n onKeyDown={handleEnter}\n />\n \n {showCommonBases && (\n \n )}\n \n \n {searchToken && !searchTokenIsAdded ? (\n \n \n \n ) : filteredSortedTokens?.length > 0 || filteredInactiveTokens?.length > 0 ? (\n
\n \n {({ height }) => (\n \n )}\n \n
\n ) : (\n \n \n No results found.\n \n \n )}\n
\n \n \n \n \n \n \n \n Manage Token Lists\n \n \n \n \n
\n
\n )\n}\n","import { TokenList } from '@uniswap/token-lists/dist/types'\nimport { Token, Currency } from '@uniswap/sdk-core'\nimport styled from 'styled-components/macro'\nimport { TYPE, CloseIcon } from 'theme'\nimport Card from 'components/Card'\nimport { AutoColumn } from 'components/Column'\nimport { RowBetween, RowFixed } from 'components/Row'\nimport CurrencyLogo from 'components/CurrencyLogo'\nimport { ArrowLeft, AlertCircle } from 'react-feather'\nimport { transparentize } from 'polished'\nimport useTheme from 'hooks/useTheme'\nimport { ButtonPrimary } from 'components/Button'\nimport { SectionBreak } from 'components/swap/styleds'\nimport { useAddUserToken } from 'state/user/hooks'\nimport { useActiveWeb3React } from 'hooks/web3'\nimport { ExternalLink } from '../../theme/components'\nimport ListLogo from 'components/ListLogo'\nimport { ExplorerDataType, getExplorerLink } from '../../utils/getExplorerLink'\nimport { PaddedColumn } from './styleds'\nimport { Plural, Trans } from '@lingui/macro'\n\nconst Wrapper = styled.div`\n position: relative;\n width: 100%;\n overflow: auto;\n`\n\nconst WarningWrapper = styled(Card)<{ highWarning: boolean }>`\n background-color: ${({ theme, highWarning }) =>\n highWarning ? transparentize(0.8, theme.red1) : transparentize(0.8, theme.yellow2)};\n width: fit-content;\n`\n\nconst AddressText = styled(TYPE.blue)`\n font-size: 12px;\n word-break: break-all;\n\n ${({ theme }) => theme.mediaWidth.upToSmall`\n font-size: 10px;\n `}\n`\n\ninterface ImportProps {\n tokens: Token[]\n list?: TokenList\n onBack?: () => void\n onDismiss?: () => void\n handleCurrencySelect?: (currency: Currency) => void\n}\n\nexport function ImportToken({ tokens, list, onBack, onDismiss, handleCurrencySelect }: ImportProps) {\n const theme = useTheme()\n\n const { chainId } = useActiveWeb3React()\n\n const addToken = useAddUserToken()\n\n return (\n \n \n \n {onBack ? :
}\n \n \n \n {onDismiss ? :
}\n \n \n \n \n \n \n \n \n This token doesn't appear on the active token list(s). Make sure this is the token that you want to\n trade.\n \n \n \n {tokens.map((token) => {\n return (\n \n \n \n\n \n \n {token.symbol}\n \n \n {token.name}\n \n \n {chainId && (\n \n {token.address}\n \n )}\n {list !== undefined ? (\n \n {list.logoURI && }\n \n via {list.name} token list\n \n \n ) : (\n \n \n \n \n Unknown Source\n \n \n \n )}\n \n \n )\n })}\n\n {\n tokens.map((token) => addToken(token))\n handleCurrencySelect && handleCurrencySelect(tokens[0])\n }}\n className=\".token-dismiss-button\"\n >\n Import\n \n \n \n )\n}\n","import { useState, useLayoutEffect } from 'react'\nimport { shade } from 'polished'\nimport Vibrant from 'node-vibrant'\nimport { hex } from 'wcag-contrast'\nimport { Token } from '@uniswap/sdk-core'\nimport uriToHttp from 'utils/uriToHttp'\n\nasync function getColorFromToken(token: Token): Promise {\n if (token.chainId !== 1) {\n return Promise.resolve('#FAAB14')\n }\n\n const path = `https://raw.githubusercontent.com/uniswap/assets/master/blockchains/ethereum/assets/${token.address}/logo.png`\n\n return Vibrant.from(path)\n .getPalette()\n .then((palette) => {\n if (palette?.Vibrant) {\n let detectedHex = palette.Vibrant.hex\n let AAscore = hex(detectedHex, '#FFF')\n while (AAscore < 3) {\n detectedHex = shade(0.005, detectedHex)\n AAscore = hex(detectedHex, '#FFF')\n }\n return detectedHex\n }\n return null\n })\n .catch(() => null)\n}\n\nasync function getColorFromUriPath(uri: string): Promise {\n const formattedPath = uriToHttp(uri)[0]\n\n return Vibrant.from(formattedPath)\n .getPalette()\n .then((palette) => {\n if (palette?.Vibrant) {\n return palette.Vibrant.hex\n }\n return null\n })\n .catch(() => null)\n}\n\nexport function useColor(token?: Token) {\n const [color, setColor] = useState('#2172E5')\n\n useLayoutEffect(() => {\n let stale = false\n\n if (token) {\n getColorFromToken(token).then((tokenColor) => {\n if (!stale && tokenColor !== null) {\n setColor(tokenColor)\n }\n })\n }\n\n return () => {\n stale = true\n setColor('#2172E5')\n }\n }, [token])\n\n return color\n}\n\nexport function useListColor(listImageUri?: string) {\n const [color, setColor] = useState('#2172E5')\n\n useLayoutEffect(() => {\n let stale = false\n\n if (listImageUri) {\n getColorFromUriPath(listImageUri).then((color) => {\n if (!stale && color !== null) {\n setColor(color)\n }\n })\n }\n\n return () => {\n stale = true\n setColor('#2172E5')\n }\n }, [listImageUri])\n\n return color\n}\n","import { TokenList } from '@uniswap/token-lists'\nimport schema from '@uniswap/token-lists/src/tokenlist.schema.json'\nimport Ajv from 'ajv'\nimport contenthashToUri from './contenthashToUri'\nimport { parseENSAddress } from './parseENSAddress'\nimport uriToHttp from './uriToHttp'\n\nconst tokenListValidator = new Ajv({ allErrors: true }).compile(schema)\n\n/**\n * Contains the logic for resolving a list URL to a validated token list\n * @param listUrl list url\n * @param resolveENSContentHash resolves an ens name to a contenthash\n */\nexport default async function getTokenList(\n listUrl: string,\n resolveENSContentHash: (ensName: string) => Promise\n): Promise {\n const parsedENS = parseENSAddress(listUrl)\n let urls: string[]\n if (parsedENS) {\n let contentHashUri\n try {\n contentHashUri = await resolveENSContentHash(parsedENS.ensName)\n } catch (error) {\n console.debug(`Failed to resolve ENS name: ${parsedENS.ensName}`, error)\n throw new Error(`Failed to resolve ENS name: ${parsedENS.ensName}`)\n }\n let translatedUri\n try {\n translatedUri = contenthashToUri(contentHashUri)\n } catch (error) {\n console.debug('Failed to translate contenthash to URI', contentHashUri)\n throw new Error(`Failed to translate contenthash to URI: ${contentHashUri}`)\n }\n urls = uriToHttp(`${translatedUri}${parsedENS.ensPath ?? ''}`)\n } else {\n urls = uriToHttp(listUrl)\n }\n for (let i = 0; i < urls.length; i++) {\n const url = urls[i]\n const isLast = i === urls.length - 1\n let response\n try {\n response = await fetch(url, { credentials: 'omit' })\n } catch (error) {\n console.debug('Failed to fetch list', listUrl, error)\n if (isLast) throw new Error(`Failed to download list ${listUrl}`)\n continue\n }\n\n if (!response.ok) {\n if (isLast) throw new Error(`Failed to download list ${listUrl}`)\n continue\n }\n\n const json = await response.json()\n if (!tokenListValidator(json)) {\n const validationErrors: string =\n tokenListValidator.errors?.reduce((memo, error) => {\n const add = `${error.dataPath} ${error.message ?? ''}`\n return memo.length > 0 ? `${memo}; ${add}` : `${add}`\n }, '') ?? 'unknown error'\n throw new Error(`Token list failed validation: ${validationErrors}`)\n }\n return json\n }\n throw new Error('Unrecognized list URL protocol.')\n}\n","import { Contract } from '@ethersproject/contracts'\nimport { Provider } from '@ethersproject/abstract-provider'\nimport { namehash } from 'ethers/lib/utils'\n\nconst REGISTRAR_ABI = [\n {\n constant: true,\n inputs: [\n {\n name: 'node',\n type: 'bytes32',\n },\n ],\n name: 'resolver',\n outputs: [\n {\n name: 'resolverAddress',\n type: 'address',\n },\n ],\n payable: false,\n stateMutability: 'view',\n type: 'function',\n },\n]\nconst REGISTRAR_ADDRESS = '0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e'\n\nconst RESOLVER_ABI = [\n {\n constant: true,\n inputs: [\n {\n internalType: 'bytes32',\n name: 'node',\n type: 'bytes32',\n },\n ],\n name: 'contenthash',\n outputs: [\n {\n internalType: 'bytes',\n name: '',\n type: 'bytes',\n },\n ],\n payable: false,\n stateMutability: 'view',\n type: 'function',\n },\n]\n\n// cache the resolver contracts since most of them are the public resolver\nfunction resolverContract(resolverAddress: string, provider: Provider): Contract {\n return new Contract(resolverAddress, RESOLVER_ABI, provider)\n}\n\n/**\n * Fetches and decodes the result of an ENS contenthash lookup on mainnet to a URI\n * @param ensName to resolve\n * @param provider provider to use to fetch the data\n */\nexport default async function resolveENSContentHash(ensName: string, provider: Provider): Promise {\n const ensRegistrarContract = new Contract(REGISTRAR_ADDRESS, REGISTRAR_ABI, provider)\n const hash = namehash(ensName)\n const resolverAddress = await ensRegistrarContract.resolver(hash)\n return resolverContract(resolverAddress, provider).contenthash(hash)\n}\n","import { nanoid } from '@reduxjs/toolkit'\nimport { TokenList } from '@uniswap/token-lists'\nimport { useCallback } from 'react'\n\nimport { getNetworkLibrary } from '../connectors'\nimport { useAppDispatch } from 'state/hooks'\nimport { fetchTokenList } from '../state/lists/actions'\nimport getTokenList from '../utils/getTokenList'\nimport resolveENSContentHash from '../utils/resolveENSContentHash'\nimport { useActiveWeb3React } from './web3'\n\nexport function useFetchListCallback(): (listUrl: string, sendDispatch?: boolean) => Promise {\n const { chainId, library } = useActiveWeb3React()\n const dispatch = useAppDispatch()\n\n const ensResolver = useCallback(\n async (ensName: string) => {\n if (!library || chainId !== 1) {\n const networkLibrary = getNetworkLibrary()\n const network = await networkLibrary.getNetwork()\n if (networkLibrary && network.chainId === 1) {\n return resolveENSContentHash(ensName, networkLibrary)\n }\n throw new Error('Could not construct mainnet ENS resolver')\n }\n return resolveENSContentHash(ensName, library)\n },\n [chainId, library]\n )\n\n // note: prevent dispatch if using for list search or unsupported list\n return useCallback(\n async (listUrl: string, sendDispatch = true) => {\n const requestId = nanoid()\n sendDispatch && dispatch(fetchTokenList.pending({ requestId, url: listUrl }))\n return getTokenList(listUrl, ensResolver)\n .then((tokenList) => {\n sendDispatch && dispatch(fetchTokenList.fulfilled({ url: listUrl, tokenList, requestId }))\n return tokenList\n })\n .catch((error) => {\n console.debug(`Failed to get list at url ${listUrl}`, error)\n sendDispatch && dispatch(fetchTokenList.rejected({ url: listUrl, requestId, errorMessage: error.message }))\n throw error\n })\n },\n [dispatch, ensResolver]\n )\n}\n","import { Trans } from '@lingui/macro'\nimport styled from 'styled-components/macro'\nimport { TYPE } from '../../theme'\n\nconst Wrapper = styled.button<{ isActive?: boolean; activeElement?: boolean }>`\n border-radius: 20px;\n border: none;\n background: ${({ theme }) => theme.bg1};\n display: flex;\n width: fit-content;\n cursor: pointer;\n outline: none;\n padding: 0.4rem 0.4rem;\n align-items: center;\n`\n\nconst ToggleElement = styled.span<{ isActive?: boolean; bgColor?: string }>`\n border-radius: 50%;\n height: 24px;\n width: 24px;\n background-color: ${({ isActive, bgColor, theme }) => (isActive ? bgColor : theme.bg4)};\n :hover {\n opacity: 0.8;\n }\n`\n\nconst StatusText = styled(TYPE.main)<{ isActive?: boolean }>`\n margin: 0 10px;\n width: 24px;\n color: ${({ theme, isActive }) => (isActive ? theme.text1 : theme.text3)};\n`\n\ninterface ToggleProps {\n id?: string\n isActive: boolean\n bgColor: string\n toggle: () => void\n}\n\nexport default function ListToggle({ id, isActive, bgColor, toggle }: ToggleProps) {\n return (\n \n {isActive && (\n \n ON\n \n )}\n \n {!isActive && (\n \n OFF\n \n )}\n \n )\n}\n","import { t, Trans } from '@lingui/macro'\nimport { TokenList } from '@uniswap/token-lists'\nimport Card from 'components/Card'\nimport { UNSUPPORTED_LIST_URLS } from 'constants/lists'\nimport { useListColor } from 'hooks/useColor'\nimport { useActiveWeb3React } from 'hooks/web3'\nimport { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { CheckCircle, Settings } from 'react-feather'\nimport ReactGA from 'react-ga'\nimport { usePopper } from 'react-popper'\nimport { useAppDispatch, useAppSelector } from 'state/hooks'\nimport styled from 'styled-components/macro'\nimport { useFetchListCallback } from '../../hooks/useFetchListCallback'\nimport { useOnClickOutside } from '../../hooks/useOnClickOutside'\nimport useTheme from '../../hooks/useTheme'\nimport useToggle from '../../hooks/useToggle'\nimport { acceptListUpdate, disableList, enableList, removeList } from '../../state/lists/actions'\nimport { useActiveListUrls, useAllLists, useIsListActive } from '../../state/lists/hooks'\nimport { ExternalLink, IconWrapper, LinkStyledButton, TYPE } from '../../theme'\nimport listVersionLabel from '../../utils/listVersionLabel'\nimport { parseENSAddress } from '../../utils/parseENSAddress'\nimport uriToHttp from '../../utils/uriToHttp'\nimport { ButtonEmpty, ButtonPrimary } from '../Button'\nimport Column, { AutoColumn } from '../Column'\nimport ListLogo from '../ListLogo'\nimport Row, { RowBetween, RowFixed } from '../Row'\nimport ListToggle from '../Toggle/ListToggle'\nimport { CurrencyModalView } from './CurrencySearchModal'\nimport { PaddedColumn, SearchInput, Separator, SeparatorDark } from './styleds'\n\nconst Wrapper = styled(Column)`\n height: 100%;\n`\n\nconst UnpaddedLinkStyledButton = styled(LinkStyledButton)`\n padding: 0;\n font-size: 1rem;\n opacity: ${({ disabled }) => (disabled ? '0.4' : '1')};\n`\n\nconst PopoverContainer = styled.div<{ show: boolean }>`\n z-index: 100;\n visibility: ${(props) => (props.show ? 'visible' : 'hidden')};\n opacity: ${(props) => (props.show ? 1 : 0)};\n transition: visibility 150ms linear, opacity 150ms linear;\n background: ${({ theme }) => theme.bg2};\n border: 1px solid ${({ theme }) => theme.bg3};\n box-shadow: 0px 0px 1px rgba(0, 0, 0, 0.01), 0px 4px 8px rgba(0, 0, 0, 0.04), 0px 16px 24px rgba(0, 0, 0, 0.04),\n 0px 24px 32px rgba(0, 0, 0, 0.01);\n color: ${({ theme }) => theme.text2};\n border-radius: 0.5rem;\n padding: 1rem;\n display: grid;\n grid-template-rows: 1fr;\n grid-gap: 8px;\n font-size: 1rem;\n text-align: left;\n`\n\nconst StyledMenu = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n position: relative;\n border: none;\n`\n\nconst StyledTitleText = styled.div<{ active: boolean }>`\n font-size: 16px;\n overflow: hidden;\n text-overflow: ellipsis;\n font-weight: 600;\n color: ${({ theme, active }) => (active ? theme.white : theme.text2)};\n`\n\nconst StyledListUrlText = styled(TYPE.main)<{ active: boolean }>`\n font-size: 12px;\n color: ${({ theme, active }) => (active ? theme.white : theme.text2)};\n`\n\nconst RowWrapper = styled(Row)<{ bgColor: string; active: boolean; hasActiveTokens: boolean }>`\n background-color: ${({ bgColor, active, theme }) => (active ? bgColor ?? 'transparent' : theme.bg2)};\n opacity: ${({ hasActiveTokens }) => (hasActiveTokens ? 1 : 0.4)};\n transition: 200ms;\n align-items: center;\n padding: 1rem;\n border-radius: 20px;\n`\n\nfunction listUrlRowHTMLId(listUrl: string) {\n return `list-row-${listUrl.replace(/\\./g, '-')}`\n}\n\nconst ListRow = memo(function ListRow({ listUrl }: { listUrl: string }) {\n const { chainId } = useActiveWeb3React()\n const listsByUrl = useAppSelector((state) => state.lists.byUrl)\n const dispatch = useAppDispatch()\n const { current: list, pendingUpdate: pending } = listsByUrl[listUrl]\n\n const activeTokensOnThisChain = useMemo(() => {\n if (!list || !chainId) {\n return 0\n }\n return list.tokens.reduce((acc, cur) => (cur.chainId === chainId ? acc + 1 : acc), 0)\n }, [chainId, list])\n\n const theme = useTheme()\n const listColor = useListColor(list?.logoURI)\n const isActive = useIsListActive(listUrl)\n\n const [open, toggle] = useToggle(false)\n const node = useRef()\n const [referenceElement, setReferenceElement] = useState()\n const [popperElement, setPopperElement] = useState()\n\n const { styles, attributes } = usePopper(referenceElement, popperElement, {\n placement: 'auto',\n strategy: 'fixed',\n modifiers: [{ name: 'offset', options: { offset: [8, 8] } }],\n })\n\n useOnClickOutside(node, open ? toggle : undefined)\n\n const handleAcceptListUpdate = useCallback(() => {\n if (!pending) return\n ReactGA.event({\n category: 'Lists',\n action: 'Update List from List Select',\n label: listUrl,\n })\n dispatch(acceptListUpdate(listUrl))\n }, [dispatch, listUrl, pending])\n\n const handleRemoveList = useCallback(() => {\n ReactGA.event({\n category: 'Lists',\n action: 'Start Remove List',\n label: listUrl,\n })\n if (window.prompt(t`Please confirm you would like to remove this list by typing REMOVE`) === `REMOVE`) {\n ReactGA.event({\n category: 'Lists',\n action: 'Confirm Remove List',\n label: listUrl,\n })\n dispatch(removeList(listUrl))\n }\n }, [dispatch, listUrl])\n\n const handleEnableList = useCallback(() => {\n ReactGA.event({\n category: 'Lists',\n action: 'Enable List',\n label: listUrl,\n })\n dispatch(enableList(listUrl))\n }, [dispatch, listUrl])\n\n const handleDisableList = useCallback(() => {\n ReactGA.event({\n category: 'Lists',\n action: 'Disable List',\n label: listUrl,\n })\n dispatch(disableList(listUrl))\n }, [dispatch, listUrl])\n\n if (!list) return null\n\n return (\n 0}\n bgColor={listColor}\n key={listUrl}\n id={listUrlRowHTMLId(listUrl)}\n >\n {list.logoURI ? (\n \n ) : (\n
\n )}\n \n \n {list.name}\n \n \n \n {activeTokensOnThisChain} tokens\n \n \n \n \n \n {open && (\n \n
{list && listVersionLabel(list.version)}
\n \n \n View list\n \n \n Remove list\n \n {pending && (\n \n Update list\n \n )}\n
\n )}\n
\n
\n
\n {\n isActive ? handleDisableList() : handleEnableList()\n }}\n />\n \n )\n})\n\nconst ListContainer = styled.div`\n padding: 1rem;\n height: 100%;\n overflow: auto;\n padding-bottom: 80px;\n`\n\nexport function ManageLists({\n setModalView,\n setImportList,\n setListUrl,\n}: {\n setModalView: (view: CurrencyModalView) => void\n setImportList: (list: TokenList) => void\n setListUrl: (url: string) => void\n}) {\n const { chainId } = useActiveWeb3React()\n const theme = useTheme()\n\n const [listUrlInput, setListUrlInput] = useState('')\n\n const lists = useAllLists()\n\n const tokenCountByListName = useMemo>(\n () =>\n Object.values(lists).reduce((acc, { current: list }) => {\n if (!list) {\n return acc\n }\n return {\n ...acc,\n [list.name]: list.tokens.reduce((count: number, token) => (token.chainId === chainId ? count + 1 : count), 0),\n }\n }, {}),\n [chainId, lists]\n )\n\n // sort by active but only if not visible\n const activeListUrls = useActiveListUrls()\n\n const handleInput = useCallback((e) => {\n setListUrlInput(e.target.value)\n }, [])\n\n const fetchList = useFetchListCallback()\n\n const validUrl: boolean = useMemo(() => {\n return uriToHttp(listUrlInput).length > 0 || Boolean(parseENSAddress(listUrlInput))\n }, [listUrlInput])\n\n const sortedLists = useMemo(() => {\n const listUrls = Object.keys(lists)\n return listUrls\n .filter((listUrl) => {\n // only show loaded lists, hide unsupported lists\n return Boolean(lists[listUrl].current) && !Boolean(UNSUPPORTED_LIST_URLS.includes(listUrl))\n })\n .sort((listUrlA, listUrlB) => {\n const { current: listA } = lists[listUrlA]\n const { current: listB } = lists[listUrlB]\n\n // first filter on active lists\n if (activeListUrls?.includes(listUrlA) && !activeListUrls?.includes(listUrlB)) {\n return -1\n }\n if (!activeListUrls?.includes(listUrlA) && activeListUrls?.includes(listUrlB)) {\n return 1\n }\n\n if (listA && listB) {\n if (tokenCountByListName[listA.name] > tokenCountByListName[listB.name]) {\n return -1\n }\n if (tokenCountByListName[listA.name] < tokenCountByListName[listB.name]) {\n return 1\n }\n return listA.name.toLowerCase() < listB.name.toLowerCase()\n ? -1\n : listA.name.toLowerCase() === listB.name.toLowerCase()\n ? 0\n : 1\n }\n if (listA) return -1\n if (listB) return 1\n return 0\n })\n }, [lists, activeListUrls, tokenCountByListName])\n\n // temporary fetched list for import flow\n const [tempList, setTempList] = useState()\n const [addError, setAddError] = useState()\n\n useEffect(() => {\n async function fetchTempList() {\n fetchList(listUrlInput, false)\n .then((list) => setTempList(list))\n .catch(() => setAddError(t`Error importing list`))\n }\n // if valid url, fetch details for card\n if (validUrl) {\n fetchTempList()\n } else {\n setTempList(undefined)\n listUrlInput !== '' && setAddError(t`Enter valid list location`)\n }\n\n // reset error\n if (listUrlInput === '') {\n setAddError(undefined)\n }\n }, [fetchList, listUrlInput, validUrl])\n\n // check if list is already imported\n const isImported = Object.keys(lists).includes(listUrlInput)\n\n // set list values and have parent modal switch to import list view\n const handleImport = useCallback(() => {\n if (!tempList) return\n setImportList(tempList)\n setModalView(CurrencyModalView.importList)\n setListUrl(listUrlInput)\n }, [listUrlInput, setImportList, setListUrl, setModalView, tempList])\n\n return (\n \n \n \n \n \n {addError ? (\n \n {addError}\n \n ) : null}\n \n {tempList && (\n \n \n \n \n {tempList.logoURI && }\n \n {tempList.name}\n \n {tempList.tokens.length} tokens\n \n \n \n {isImported ? (\n \n \n \n \n \n Loaded\n \n \n ) : (\n \n Import\n \n )}\n \n \n \n )}\n \n \n \n {sortedLists.map((listUrl) => (\n \n ))}\n \n \n \n )\n}\n","import { Version } from '@uniswap/token-lists'\n\nexport default function listVersionLabel(version: Version): string {\n return `v${version.major}.${version.minor}.${version.patch}`\n}\n","import { useRef, RefObject, useCallback, useState, useMemo } from 'react'\nimport Column from 'components/Column'\nimport { ExplorerDataType, getExplorerLink } from '../../utils/getExplorerLink'\nimport { PaddedColumn, Separator, SearchInput } from './styleds'\nimport Row, { RowBetween, RowFixed } from 'components/Row'\nimport { TYPE, ExternalLinkIcon, TrashIcon, ButtonText, ExternalLink } from 'theme'\nimport { useToken } from 'hooks/Tokens'\nimport styled from 'styled-components/macro'\nimport { useUserAddedTokens, useRemoveUserAddedToken } from 'state/user/hooks'\nimport { Token } from '@uniswap/sdk-core'\nimport CurrencyLogo from 'components/CurrencyLogo'\nimport { isAddress } from 'utils'\nimport { useActiveWeb3React } from 'hooks/web3'\nimport Card from 'components/Card'\nimport ImportRow from './ImportRow'\nimport useTheme from '../../hooks/useTheme'\nimport { Trans } from '@lingui/macro'\n\nimport { CurrencyModalView } from './CurrencySearchModal'\n\nconst Wrapper = styled.div`\n width: 100%;\n height: calc(100% - 60px);\n position: relative;\n padding-bottom: 80px;\n`\n\nconst Footer = styled.div`\n position: absolute;\n bottom: 0;\n width: 100%;\n border-radius: 20px;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n border-top: 1px solid ${({ theme }) => theme.bg3};\n padding: 20px;\n text-align: center;\n`\n\nexport default function ManageTokens({\n setModalView,\n setImportToken,\n}: {\n setModalView: (view: CurrencyModalView) => void\n setImportToken: (token: Token) => void\n}) {\n const { chainId } = useActiveWeb3React()\n\n const [searchQuery, setSearchQuery] = useState('')\n const theme = useTheme()\n\n // manage focus on modal show\n const inputRef = useRef()\n const handleInput = useCallback((event) => {\n const input = event.target.value\n const checksummedInput = isAddress(input)\n setSearchQuery(checksummedInput || input)\n }, [])\n\n // if they input an address, use it\n const isAddressSearch = isAddress(searchQuery)\n const searchToken = useToken(searchQuery)\n\n // all tokens for local lisr\n const userAddedTokens: Token[] = useUserAddedTokens()\n const removeToken = useRemoveUserAddedToken()\n\n const handleRemoveAll = useCallback(() => {\n if (chainId && userAddedTokens) {\n userAddedTokens.map((token) => {\n return removeToken(chainId, token.address)\n })\n }\n }, [removeToken, userAddedTokens, chainId])\n\n const tokenList = useMemo(() => {\n return (\n chainId &&\n userAddedTokens.map((token) => (\n \n \n \n \n \n {token.symbol}\n \n \n \n \n removeToken(chainId, token.address)} />\n \n \n \n ))\n )\n }, [userAddedTokens, chainId, removeToken])\n\n return (\n \n \n \n \n }\n onChange={handleInput}\n />\n \n {searchQuery !== '' && !isAddressSearch && (\n \n Enter valid token address\n \n )}\n {searchToken && (\n \n setModalView(CurrencyModalView.importToken)}\n setImportToken={setImportToken}\n style={{ height: 'fit-content' }}\n />\n \n )}\n \n \n \n \n \n {userAddedTokens?.length} Custom Tokens\n \n {userAddedTokens.length > 0 && (\n \n \n Clear all\n \n \n )}\n \n {tokenList}\n \n \n
\n \n Tip: Custom tokens are stored locally in your browser\n \n
\n
\n )\n}\n","import { Trans } from '@lingui/macro'\nimport { useState } from 'react'\nimport { PaddedColumn, Separator } from './styleds'\nimport { RowBetween } from 'components/Row'\nimport { ArrowLeft } from 'react-feather'\nimport { Text } from 'rebass'\nimport { CloseIcon } from 'theme'\nimport styled from 'styled-components/macro'\nimport { Token } from '@uniswap/sdk-core'\nimport { ManageLists } from './ManageLists'\nimport ManageTokens from './ManageTokens'\nimport { TokenList } from '@uniswap/token-lists'\nimport { CurrencyModalView } from './CurrencySearchModal'\n\nconst Wrapper = styled.div`\n width: 100%;\n position: relative;\n padding-bottom: 80px;\n`\n\nconst ToggleWrapper = styled(RowBetween)`\n background-color: ${({ theme }) => theme.bg3};\n border-radius: 12px;\n padding: 6px;\n`\n\nconst ToggleOption = styled.div<{ active?: boolean }>`\n width: 48%;\n padding: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 12px;\n font-weight: 600;\n background-color: ${({ theme, active }) => (active ? theme.bg1 : theme.bg3)};\n color: ${({ theme, active }) => (active ? theme.text1 : theme.text2)};\n user-select: none;\n\n :hover {\n cursor: pointer;\n opacity: 0.7;\n }\n`\n\nexport default function Manage({\n onDismiss,\n setModalView,\n setImportList,\n setImportToken,\n setListUrl,\n}: {\n onDismiss: () => void\n setModalView: (view: CurrencyModalView) => void\n setImportToken: (token: Token) => void\n setImportList: (list: TokenList) => void\n setListUrl: (url: string) => void\n}) {\n // toggle between tokens and lists\n const [showLists, setShowLists] = useState(true)\n\n return (\n \n \n \n setModalView(CurrencyModalView.search)} />\n \n Manage\n \n \n \n \n \n \n \n setShowLists(!showLists)} active={showLists}>\n Lists\n \n setShowLists(!showLists)} active={!showLists}>\n Tokens\n \n \n \n {showLists ? (\n \n ) : (\n \n )}\n \n )\n}\n","import { useState, useCallback } from 'react'\nimport styled from 'styled-components/macro'\nimport ReactGA from 'react-ga'\nimport { TYPE, CloseIcon } from 'theme'\nimport Card from 'components/Card'\nimport { AutoColumn } from 'components/Column'\nimport { RowBetween, RowFixed, AutoRow } from 'components/Row'\nimport { ArrowLeft, AlertTriangle } from 'react-feather'\nimport useTheme from 'hooks/useTheme'\nimport { transparentize } from 'polished'\nimport { ButtonPrimary } from 'components/Button'\nimport { SectionBreak } from 'components/swap/styleds'\nimport { ExternalLink } from '../../theme/components'\nimport ListLogo from 'components/ListLogo'\nimport { PaddedColumn, Checkbox, TextDot } from './styleds'\nimport { TokenList } from '@uniswap/token-lists'\n\nimport { useAppDispatch } from 'state/hooks'\nimport { useFetchListCallback } from 'hooks/useFetchListCallback'\nimport { removeList, enableList } from 'state/lists/actions'\nimport { CurrencyModalView } from './CurrencySearchModal'\nimport { useAllLists } from 'state/lists/hooks'\nimport { Trans } from '@lingui/macro'\n\nconst Wrapper = styled.div`\n position: relative;\n width: 100%;\n overflow: auto;\n`\n\ninterface ImportProps {\n listURL: string\n list: TokenList\n onDismiss: () => void\n setModalView: (view: CurrencyModalView) => void\n}\n\nexport function ImportList({ listURL, list, setModalView, onDismiss }: ImportProps) {\n const theme = useTheme()\n const dispatch = useAppDispatch()\n\n // user must accept\n const [confirmed, setConfirmed] = useState(false)\n\n const lists = useAllLists()\n const fetchList = useFetchListCallback()\n\n // monitor is list is loading\n const adding = Boolean(lists[listURL]?.loadingRequestId)\n const [addError, setAddError] = useState(null)\n\n const handleAddList = useCallback(() => {\n if (adding) return\n setAddError(null)\n fetchList(listURL)\n .then(() => {\n ReactGA.event({\n category: 'Lists',\n action: 'Add List',\n label: listURL,\n })\n\n // turn list on\n dispatch(enableList(listURL))\n // go back to lists\n setModalView(CurrencyModalView.manage)\n })\n .catch((error) => {\n ReactGA.event({\n category: 'Lists',\n action: 'Add List Failed',\n label: listURL,\n })\n setAddError(error.message)\n dispatch(removeList(listURL))\n })\n }, [adding, dispatch, fetchList, listURL, setModalView])\n\n return (\n \n \n \n setModalView(CurrencyModalView.manage)} />\n \n Import List\n \n \n \n \n \n \n \n \n \n \n {list.logoURI && }\n \n \n \n {list.name}\n \n \n \n {list.tokens.length} tokens\n \n \n \n \n {listURL}\n \n \n \n \n \n \n \n \n \n \n Import at your own risk\n \n \n\n \n \n \n By adding this list you are implicitly trusting that the data is correct. Anyone can create a list,\n including creating fake versions of existing lists and lists that claim to represent projects that do\n not have one.\n \n \n \n If you purchase a token from this list, you may not be able to sell it back.\n \n \n setConfirmed(!confirmed)}>\n setConfirmed(!confirmed)}\n />\n \n I understand\n \n \n \n\n \n Import\n \n {addError ? (\n \n {addError}\n \n ) : null}\n \n {/* */}\n \n \n )\n}\n","import { Currency, Token } from '@uniswap/sdk-core'\nimport { useCallback, useEffect, useState } from 'react'\nimport useLast from '../../hooks/useLast'\nimport { WrappedTokenInfo } from '../../state/lists/wrappedTokenInfo'\nimport Modal from '../Modal'\nimport { CurrencySearch } from './CurrencySearch'\nimport { ImportToken } from './ImportToken'\nimport usePrevious from 'hooks/usePrevious'\nimport Manage from './Manage'\nimport { TokenList } from '@uniswap/token-lists'\nimport { ImportList } from './ImportList'\n\ninterface CurrencySearchModalProps {\n isOpen: boolean\n onDismiss: () => void\n selectedCurrency?: Currency | null\n onCurrencySelect: (currency: Currency) => void\n otherSelectedCurrency?: Currency | null\n showCommonBases?: boolean\n showCurrencyAmount?: boolean\n disableNonToken?: boolean\n}\n\nexport enum CurrencyModalView {\n search,\n manage,\n importToken,\n importList,\n}\n\nexport default function CurrencySearchModal({\n isOpen,\n onDismiss,\n onCurrencySelect,\n selectedCurrency,\n otherSelectedCurrency,\n showCommonBases = false,\n showCurrencyAmount = true,\n disableNonToken = false,\n}: CurrencySearchModalProps) {\n const [modalView, setModalView] = useState(CurrencyModalView.manage)\n const lastOpen = useLast(isOpen)\n\n useEffect(() => {\n if (isOpen && !lastOpen) {\n setModalView(CurrencyModalView.search)\n }\n }, [isOpen, lastOpen])\n\n const handleCurrencySelect = useCallback(\n (currency: Currency) => {\n onCurrencySelect(currency)\n onDismiss()\n },\n [onDismiss, onCurrencySelect]\n )\n\n // for token import view\n const prevView = usePrevious(modalView)\n\n // used for import token flow\n const [importToken, setImportToken] = useState()\n\n // used for import list\n const [importList, setImportList] = useState()\n const [listURL, setListUrl] = useState()\n\n // change min height if not searching\n const minHeight = modalView === CurrencyModalView.importToken || modalView === CurrencyModalView.importList ? 40 : 80\n\n return (\n \n {modalView === CurrencyModalView.search ? (\n setModalView(CurrencyModalView.importToken)}\n setImportToken={setImportToken}\n showManageView={() => setModalView(CurrencyModalView.manage)}\n />\n ) : modalView === CurrencyModalView.importToken && importToken ? (\n \n setModalView(prevView && prevView !== CurrencyModalView.importToken ? prevView : CurrencyModalView.search)\n }\n handleCurrencySelect={handleCurrencySelect}\n />\n ) : modalView === CurrencyModalView.importList && importList && listURL ? (\n \n ) : modalView === CurrencyModalView.manage ? (\n \n ) : (\n ''\n )}\n \n )\n}\n","import { useEffect, useState } from 'react'\n\n/**\n * Returns the last value of type T that passes a filter function\n * @param value changing value\n * @param filterFn function that determines whether a given value should be considered for the last value\n */\nexport default function useLast(\n value: T | undefined | null,\n filterFn?: (value: T | null | undefined) => boolean\n): T | null | undefined {\n const [last, setLast] = useState(filterFn && filterFn(value) ? value : undefined)\n useEffect(() => {\n setLast((last) => {\n const shouldUse: boolean = filterFn ? filterFn(value) : true\n if (shouldUse) return value\n return last\n })\n }, [filterFn, value])\n return last\n}\n","import { Currency } from '@uniswap/sdk-core'\nimport styled from 'styled-components/macro'\nimport CurrencyLogo from '../CurrencyLogo'\n\nconst Wrapper = styled.div<{ margin: boolean; sizeraw: number }>`\n position: relative;\n display: flex;\n flex-direction: row;\n margin-left: ${({ sizeraw, margin }) => margin && (sizeraw / 3 + 8).toString() + 'px'};\n`\n\ninterface DoubleCurrencyLogoProps {\n margin?: boolean\n size?: number\n currency0?: Currency\n currency1?: Currency\n}\n\nconst HigherLogo = styled(CurrencyLogo)`\n z-index: 2;\n`\nconst CoveredLogo = styled(CurrencyLogo)<{ sizeraw: number }>`\n position: absolute;\n left: ${({ sizeraw }) => '-' + (sizeraw / 2).toString() + 'px'} !important;\n`\n\nexport default function DoubleCurrencyLogo({\n currency0,\n currency1,\n size = 16,\n margin = false,\n}: DoubleCurrencyLogoProps) {\n return (\n \n {currency0 && }\n {currency1 && }\n \n )\n}\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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\nfunction SvgDropdown(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 12,\n height: 7,\n viewBox: \"0 0 12 7\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.97168 1L6.20532 6L11.439 1\",\n stroke: \"#AEAEAE\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgDropdown);\nexport default __webpack_public_path__ + \"static/media/dropdown.fef18eeb.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react'\nimport styled from 'styled-components/macro'\nimport { escapeRegExp } from '../../utils'\n\nconst StyledInput = styled.input<{ error?: boolean; fontSize?: string; align?: string }>`\n color: ${({ error, theme }) => (error ? theme.red1 : theme.text1)};\n width: 0;\n position: relative;\n font-weight: 500;\n outline: none;\n border: none;\n flex: 1 1 auto;\n background-color: ${({ theme }) => theme.bg1};\n font-size: ${({ fontSize }) => fontSize ?? '24px'};\n text-align: ${({ align }) => align && align};\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n padding: 0px;\n -webkit-appearance: textfield;\n text-align: right;\n\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n\n [type='number'] {\n -moz-appearance: textfield;\n }\n\n ::-webkit-outer-spin-button,\n ::-webkit-inner-spin-button {\n -webkit-appearance: none;\n }\n\n ::placeholder {\n color: ${({ theme }) => theme.text4};\n }\n`\n\nconst inputRegex = RegExp(`^\\\\d*(?:\\\\\\\\[.])?\\\\d*$`) // match escaped \".\" characters via in a non-capturing group\n\nexport const Input = React.memo(function InnerInput({\n value,\n onUserInput,\n placeholder,\n prependSymbol,\n ...rest\n}: {\n value: string | number\n onUserInput: (input: string) => void\n error?: boolean\n fontSize?: string\n align?: 'right' | 'left'\n prependSymbol?: string | undefined\n} & Omit, 'ref' | 'onChange' | 'as'>) {\n const enforcer = (nextUserInput: string) => {\n if (nextUserInput === '' || inputRegex.test(escapeRegExp(nextUserInput))) {\n onUserInput(nextUserInput)\n }\n }\n\n return (\n {\n if (prependSymbol) {\n const value = event.target.value\n\n // cut off prepended symbol\n const formattedValue = value.toString().includes(prependSymbol)\n ? value.toString().slice(1, value.toString().length + 1)\n : value\n\n // replace commas with periods, because uniswap exclusively uses period as the decimal separator\n enforcer(formattedValue.replace(/,/g, '.'))\n } else {\n enforcer(event.target.value.replace(/,/g, '.'))\n }\n }}\n // universal input options\n inputMode=\"decimal\"\n autoComplete=\"off\"\n autoCorrect=\"off\"\n // text-specific options\n type=\"text\"\n pattern=\"^[0-9]*[.,]?[0-9]*$\"\n placeholder={placeholder || '0.0'}\n minLength={1}\n maxLength={79}\n spellCheck=\"false\"\n />\n )\n})\n\nexport default Input\n\n// const inputRegex = RegExp(`^\\\\d*(?:\\\\\\\\[.])?\\\\d*$`) // match escaped \".\" characters via in a non-capturing group\n","import JSBI from 'jsbi'\nimport { Currency, CurrencyAmount, Fraction, Percent, TradeType } from '@uniswap/sdk-core'\nimport { Trade as V2Trade } from '@uniswap/v2-sdk'\nimport { Trade as V3Trade } from '@uniswap/v3-sdk'\nimport {\n ALLOWED_PRICE_IMPACT_HIGH,\n ALLOWED_PRICE_IMPACT_LOW,\n ALLOWED_PRICE_IMPACT_MEDIUM,\n BLOCKED_PRICE_IMPACT_NON_EXPERT,\n} from '../constants/misc'\n\nconst THIRTY_BIPS_FEE = new Percent(JSBI.BigInt(30), JSBI.BigInt(10000))\nconst ONE_HUNDRED_PERCENT = new Percent(JSBI.BigInt(10000), JSBI.BigInt(10000))\nconst INPUT_FRACTION_AFTER_FEE = ONE_HUNDRED_PERCENT.subtract(THIRTY_BIPS_FEE)\n\n// computes realized lp fee as a percent\nexport function computeRealizedLPFeePercent(\n trade: V2Trade | V3Trade\n): Percent {\n let percent: Percent\n if (trade instanceof V2Trade) {\n // for each hop in our trade, take away the x*y=k price impact from 0.3% fees\n // e.g. for 3 tokens/2 hops: 1 - ((1 - .03) * (1-.03))\n percent = ONE_HUNDRED_PERCENT.subtract(\n trade.route.pairs.reduce(\n (currentFee: Percent): Percent => currentFee.multiply(INPUT_FRACTION_AFTER_FEE),\n ONE_HUNDRED_PERCENT\n )\n )\n } else {\n percent = ONE_HUNDRED_PERCENT.subtract(\n trade.route.pools.reduce(\n (currentFee: Percent, pool): Percent =>\n currentFee.multiply(ONE_HUNDRED_PERCENT.subtract(new Fraction(pool.fee, 1_000_000))),\n ONE_HUNDRED_PERCENT\n )\n )\n }\n\n return new Percent(percent.numerator, percent.denominator)\n}\n\n// computes price breakdown for the trade\nexport function computeRealizedLPFeeAmount(\n trade?: V2Trade | V3Trade | null\n): CurrencyAmount | undefined {\n if (trade) {\n const realizedLPFee = computeRealizedLPFeePercent(trade)\n\n // the amount of the input that accrues to LPs\n return CurrencyAmount.fromRawAmount(trade.inputAmount.currency, trade.inputAmount.multiply(realizedLPFee).quotient)\n }\n\n return undefined\n}\n\nconst IMPACT_TIERS = [\n BLOCKED_PRICE_IMPACT_NON_EXPERT,\n ALLOWED_PRICE_IMPACT_HIGH,\n ALLOWED_PRICE_IMPACT_MEDIUM,\n ALLOWED_PRICE_IMPACT_LOW,\n]\n\ntype WarningSeverity = 0 | 1 | 2 | 3 | 4\nexport function warningSeverity(priceImpact: Percent | undefined): WarningSeverity {\n if (!priceImpact) return 4\n let impact: WarningSeverity = IMPACT_TIERS.length as WarningSeverity\n for (const impactLevel of IMPACT_TIERS) {\n if (impactLevel.lessThan(priceImpact)) return impact\n impact--\n }\n return 0\n}\n","import Tooltip from 'components/Tooltip'\nimport { useState } from 'react'\nimport styled from 'styled-components/macro'\n\nconst TextWrapper = styled.span<{ margin: boolean; link?: boolean; fontSize?: string; adjustSize?: boolean }>`\n margin-left: ${({ margin }) => margin && '4px'};\n color: ${({ theme, link }) => (link ? theme.blue1 : theme.text1)};\n font-size: ${({ fontSize }) => fontSize ?? 'inherit'};\n\n @media screen and (max-width: 600px) {\n font-size: ${({ adjustSize }) => adjustSize && '12px'};\n }\n`\n\nconst HoverInlineText = ({\n text,\n maxCharacters = 20,\n margin = false,\n adjustSize = false,\n fontSize,\n link,\n ...rest\n}: {\n text?: string\n maxCharacters?: number\n margin?: boolean\n adjustSize?: boolean\n fontSize?: string\n link?: boolean\n}) => {\n const [showHover, setShowHover] = useState(false)\n\n if (!text) {\n return \n }\n\n if (text.length > maxCharacters) {\n return (\n \n setShowHover(true)}\n onMouseLeave={() => setShowHover(false)}\n margin={margin}\n adjustSize={adjustSize}\n link={link}\n fontSize={fontSize}\n {...rest}\n >\n {' ' + text.slice(0, maxCharacters - 1) + '...'}\n \n \n )\n }\n\n return (\n \n {text}\n \n )\n}\n\nexport default HoverInlineText\n","import { Currency, CurrencyAmount, Percent } from '@uniswap/sdk-core'\nimport { useMemo } from 'react'\nimport useTheme from '../../hooks/useTheme'\nimport { TYPE } from '../../theme'\nimport { warningSeverity } from '../../utils/prices'\nimport HoverInlineText from 'components/HoverInlineText'\nimport { Trans } from '@lingui/macro'\n\nexport function FiatValue({\n fiatValue,\n priceImpact,\n}: {\n fiatValue: CurrencyAmount | null | undefined\n priceImpact?: Percent\n}) {\n const theme = useTheme()\n const priceImpactColor = useMemo(() => {\n if (!priceImpact) return undefined\n if (priceImpact.lessThan('0')) return theme.green1\n const severity = warningSeverity(priceImpact)\n if (severity < 1) return theme.text3\n if (severity < 3) return theme.yellow1\n return theme.red1\n }, [priceImpact, theme.green1, theme.red1, theme.text3, theme.yellow1])\n\n return (\n \n {fiatValue ? (\n \n ~$ \n \n ) : (\n ''\n )}\n {priceImpact ? (\n \n {' '}\n ({priceImpact.multiply(-1).toSignificant(3)}%)\n \n ) : null}\n \n )\n}\n","import { Price, CurrencyAmount, Currency, Fraction } from '@uniswap/sdk-core'\nimport JSBI from 'jsbi'\n\nexport function formatCurrencyAmount(amount: CurrencyAmount | undefined, sigFigs: number) {\n if (!amount) {\n return '-'\n }\n\n if (JSBI.equal(amount.quotient, JSBI.BigInt(0))) {\n return '0'\n }\n\n if (amount.divide(amount.decimalScale).lessThan(new Fraction(1, 100000))) {\n return '<0.00001'\n }\n\n return amount.toSignificant(sigFigs)\n}\n\nexport function formatPrice(price: Price | undefined, sigFigs: number) {\n if (!price) {\n return '-'\n }\n\n if (parseFloat(price.toFixed(sigFigs)) < 0.0001) {\n return '<0.0001'\n }\n\n return price.toSignificant(sigFigs)\n}\n","import { Pair } from '@uniswap/v2-sdk'\nimport { Currency, CurrencyAmount, Percent, Token } from '@uniswap/sdk-core'\nimport { useState, useCallback, ReactNode } from 'react'\nimport styled from 'styled-components/macro'\nimport { darken } from 'polished'\nimport { useCurrencyBalance } from '../../state/wallet/hooks'\nimport CurrencySearchModal from '../SearchModal/CurrencySearchModal'\nimport CurrencyLogo from '../CurrencyLogo'\nimport DoubleCurrencyLogo from '../DoubleLogo'\nimport { ButtonGray } from '../Button'\nimport { RowBetween, RowFixed } from '../Row'\nimport { TYPE } from '../../theme'\nimport { Input as NumericalInput } from '../NumericalInput'\nimport { ReactComponent as DropDown } from '../../assets/images/dropdown.svg'\nimport { useActiveWeb3React } from '../../hooks/web3'\nimport { Trans } from '@lingui/macro'\nimport useTheme from '../../hooks/useTheme'\nimport { Lock } from 'react-feather'\nimport { AutoColumn } from 'components/Column'\nimport { FiatValue } from './FiatValue'\nimport { formatCurrencyAmount } from 'utils/formatCurrencyAmount'\n\nconst InputPanel = styled.div<{ hideInput?: boolean }>`\n ${({ theme }) => theme.flexColumnNoWrap}\n position: relative;\n border-radius: ${({ hideInput }) => (hideInput ? '16px' : '20px')};\n background-color: ${({ theme, hideInput }) => (hideInput ? 'transparent' : theme.bg2)};\n z-index: 1;\n width: ${({ hideInput }) => (hideInput ? '100%' : 'initial')};\n`\n\nconst FixedContainer = styled.div`\n width: 100%;\n height: 100%;\n position: absolute;\n border-radius: 20px;\n background-color: ${({ theme }) => theme.bg1};\n opacity: 0.95;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 2;\n`\n\nconst Container = styled.div<{ hideInput: boolean }>`\n border-radius: ${({ hideInput }) => (hideInput ? '16px' : '20px')};\n border: 1px solid ${({ theme, hideInput }) => (hideInput ? ' transparent' : theme.bg2)};\n background-color: ${({ theme }) => theme.bg1};\n width: ${({ hideInput }) => (hideInput ? '100%' : 'initial')};\n :focus,\n :hover {\n border: 1px solid ${({ theme, hideInput }) => (hideInput ? ' transparent' : theme.bg3)};\n }\n`\n\nconst CurrencySelect = styled(ButtonGray)<{ selected: boolean; hideInput?: boolean }>`\n align-items: center;\n font-size: 24px;\n font-weight: 500;\n background-color: ${({ selected, theme }) => (selected ? theme.bg0 : theme.primary1)};\n color: ${({ selected, theme }) => (selected ? theme.text1 : theme.white)};\n border-radius: 16px;\n box-shadow: ${({ selected }) => (selected ? 'none' : '0px 6px 10px rgba(0, 0, 0, 0.075)')};\n box-shadow: 0px 6px 10px rgba(0, 0, 0, 0.075);\n outline: none;\n cursor: pointer;\n user-select: none;\n border: none;\n height: ${({ hideInput }) => (hideInput ? '2.8rem' : '2.4rem')};\n width: ${({ hideInput }) => (hideInput ? '100%' : 'initial')};\n padding: 0 8px;\n justify-content: space-between;\n margin-right: ${({ hideInput }) => (hideInput ? '0' : '12px')};\n :focus,\n :hover {\n background-color: ${({ selected, theme }) => (selected ? theme.bg2 : darken(0.05, theme.primary1))};\n }\n`\n\nconst InputRow = styled.div<{ selected: boolean }>`\n ${({ theme }) => theme.flexRowNoWrap}\n align-items: center;\n padding: ${({ selected }) => (selected ? ' 1rem 1rem 0.75rem 1rem' : '1rem 1rem 0.75rem 1rem')};\n`\n\nconst LabelRow = styled.div`\n ${({ theme }) => theme.flexRowNoWrap}\n align-items: center;\n color: ${({ theme }) => theme.text1};\n font-size: 0.75rem;\n line-height: 1rem;\n padding: 0 1rem 1rem;\n span:hover {\n cursor: pointer;\n color: ${({ theme }) => darken(0.2, theme.text2)};\n }\n`\n\nconst FiatRow = styled(LabelRow)`\n justify-content: flex-end;\n`\n\nconst Aligner = styled.span`\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n`\n\nconst StyledDropDown = styled(DropDown)<{ selected: boolean }>`\n margin: 0 0.25rem 0 0.35rem;\n height: 35%;\n\n path {\n stroke: ${({ selected, theme }) => (selected ? theme.text1 : theme.white)};\n stroke-width: 1.5px;\n }\n`\n\nconst StyledTokenName = styled.span<{ active?: boolean }>`\n ${({ active }) => (active ? ' margin: 0 0.25rem 0 0.25rem;' : ' margin: 0 0.25rem 0 0.25rem;')}\n font-size: ${({ active }) => (active ? '18px' : '18px')};\n`\n\nconst StyledBalanceMax = styled.button<{ disabled?: boolean }>`\n background-color: transparent;\n border: none;\n border-radius: 12px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n padding: 0;\n color: ${({ theme }) => theme.primaryText1};\n opacity: ${({ disabled }) => (!disabled ? 1 : 0.4)};\n pointer-events: ${({ disabled }) => (!disabled ? 'initial' : 'none')};\n margin-left: 0.25rem;\n\n :focus {\n outline: none;\n }\n\n ${({ theme }) => theme.mediaWidth.upToExtraSmall`\n margin-right: 0.5rem;\n `};\n`\n\ninterface CurrencyInputPanelProps {\n value: string\n onUserInput: (value: string) => void\n onMax?: () => void\n showMaxButton: boolean\n label?: ReactNode\n onCurrencySelect?: (currency: Currency) => void\n currency?: Currency | null\n hideBalance?: boolean\n pair?: Pair | null\n hideInput?: boolean\n otherCurrency?: Currency | null\n fiatValue?: CurrencyAmount | null\n priceImpact?: Percent\n id: string\n showCommonBases?: boolean\n showCurrencyAmount?: boolean\n disableNonToken?: boolean\n renderBalance?: (amount: CurrencyAmount) => ReactNode\n locked?: boolean\n}\n\nexport default function CurrencyInputPanel({\n value,\n onUserInput,\n onMax,\n showMaxButton,\n onCurrencySelect,\n currency,\n otherCurrency,\n id,\n showCommonBases,\n showCurrencyAmount,\n disableNonToken,\n renderBalance,\n fiatValue,\n priceImpact,\n hideBalance = false,\n pair = null, // used for double token logo\n hideInput = false,\n locked = false,\n ...rest\n}: CurrencyInputPanelProps) {\n const [modalOpen, setModalOpen] = useState(false)\n const { account } = useActiveWeb3React()\n const selectedCurrencyBalance = useCurrencyBalance(account ?? undefined, currency ?? undefined)\n const theme = useTheme()\n\n const handleDismissSearch = useCallback(() => {\n setModalOpen(false)\n }, [setModalOpen])\n\n return (\n \n {locked && (\n \n \n \n \n The market price is outside your specified price range. Single-asset deposit only.\n \n \n \n )}\n \n \n {\n if (onCurrencySelect) {\n setModalOpen(true)\n }\n }}\n >\n \n \n {pair ? (\n \n \n \n ) : currency ? (\n \n ) : null}\n {pair ? (\n \n {pair?.token0.symbol}:{pair?.token1.symbol}\n \n ) : (\n \n {(currency && currency.symbol && currency.symbol.length > 20\n ? currency.symbol.slice(0, 4) +\n '...' +\n currency.symbol.slice(currency.symbol.length - 5, currency.symbol.length)\n : currency?.symbol) || Select a token}\n \n )}\n \n {onCurrencySelect && }\n \n \n {!hideInput && (\n <>\n {\n onUserInput(val)\n }}\n />\n \n )}\n \n {!hideInput && !hideBalance && (\n \n \n {account ? (\n \n \n {!hideBalance && currency && selectedCurrencyBalance ? (\n renderBalance ? (\n renderBalance(selectedCurrencyBalance)\n ) : (\n \n Balance: {formatCurrencyAmount(selectedCurrencyBalance, 4)} {currency.symbol}\n \n )\n ) : null}\n \n {showMaxButton && selectedCurrencyBalance ? (\n \n (Max)\n \n ) : null}\n \n ) : (\n \n )}\n \n \n \n )}\n \n {onCurrencySelect && (\n \n )}\n \n )\n}\n","import { Currency, Token } from '@uniswap/sdk-core'\nimport { useMemo } from 'react'\nimport { useUnsupportedTokens } from './Tokens'\n\n/**\n * Returns true if the input currency or output currency cannot be traded in the interface\n * @param currencyIn the input currency to check\n * @param currencyOut the output currency to check\n */\nexport function useIsSwapUnsupported(currencyIn?: Currency, currencyOut?: Currency): boolean {\n const unsupportedTokens: { [address: string]: Token } = useUnsupportedTokens()\n\n return useMemo(() => {\n // if unsupported list loaded & either token on list, mark as unsupported\n return Boolean(\n unsupportedTokens &&\n ((currencyIn?.isToken && unsupportedTokens[currencyIn.address]) ||\n (currencyOut?.isToken && unsupportedTokens[currencyOut.address]))\n )\n }, [currencyIn, currencyOut, unsupportedTokens])\n}\n","import { Interface } from '@ethersproject/abi'\nimport { Currency, CurrencyAmount } from '@uniswap/sdk-core'\nimport { toHex } from '@uniswap/v3-sdk'\nimport { Erc20Interface } from '../abis/types/Erc20'\n\nconst ERC20_INTERFACE = new Interface([\n {\n constant: false,\n inputs: [\n { name: '_spender', type: 'address' },\n { name: '_value', type: 'uint256' },\n ],\n name: 'approve',\n outputs: [{ name: '', type: 'bool' }],\n payable: false,\n stateMutability: 'nonpayable',\n type: 'function',\n },\n]) as Erc20Interface\n\nexport default function approveAmountCalldata(\n amount: CurrencyAmount,\n spender: string\n): { to: string; data: string; value: '0x0' } {\n if (!amount.currency.isToken) throw new Error('Must call with an amount of token')\n const approveData = ERC20_INTERFACE.encodeFunctionData('approve', [spender, toHex(amount.quotient)])\n return {\n to: amount.currency.address,\n data: approveData,\n value: '0x0',\n }\n}\n","import { SupportedChainId } from '../constants/chains'\n\n/**\n * Returns the input chain ID if chain is supported. If not, return undefined\n * @param chainId a chain ID, which will be returned if it is a supported chain ID\n */\nexport function supportedChainId(chainId: number): number | undefined {\n if (chainId in SupportedChainId) {\n return chainId\n }\n return undefined\n}\n","import { Currency } from '@uniswap/sdk-core'\nimport { ExtendedEther, WETH9_EXTENDED } from '../constants/tokens'\nimport { supportedChainId } from './supportedChainId'\n\nexport function unwrappedToken(currency: Currency): Currency {\n if (currency.isNative) return currency\n const formattedChainId = supportedChainId(currency.chainId)\n if (formattedChainId && currency.equals(WETH9_EXTENDED[formattedChainId]))\n return ExtendedEther.onChain(currency.chainId)\n return currency\n}\n","import styled from 'styled-components/macro'\n\nexport const ToggleWrapper = styled.button<{ width?: string }>`\n display: flex;\n align-items: center;\n width: ${({ width }) => width ?? '100%'};\n padding: 1px;\n background: ${({ theme }) => theme.bg1};\n border-radius: 8px;\n border: ${({ theme }) => '1px solid ' + theme.bg2};\n cursor: pointer;\n outline: none;\n`\n\nexport const ToggleElement = styled.span<{ isActive?: boolean; fontSize?: string }>`\n display: flex;\n align-items: center;\n width: 100%;\n padding: 4px 0.5rem;\n border-radius: 6px;\n justify-content: center;\n height: 100%;\n background: ${({ theme, isActive }) => (isActive ? theme.bg0 : 'none')};\n color: ${({ theme, isActive }) => (isActive ? theme.text1 : theme.text3)};\n font-size: ${({ fontSize }) => fontSize ?? '1rem'};\n font-weight: 500;\n white-space: nowrap;\n :hover {\n user-select: initial;\n color: ${({ theme, isActive }) => (isActive ? theme.text2 : theme.text3)};\n }\n`\n","import { readableColor } from 'polished'\nimport { PropsWithChildren } from 'react'\nimport styled, { DefaultTheme } from 'styled-components/macro'\nimport { Color } from 'theme/styled'\n\nexport enum BadgeVariant {\n DEFAULT = 'DEFAULT',\n NEGATIVE = 'NEGATIVE',\n POSITIVE = 'POSITIVE',\n PRIMARY = 'PRIMARY',\n WARNING = 'WARNING',\n\n WARNING_OUTLINE = 'WARNING_OUTLINE',\n}\n\ninterface BadgeProps {\n variant?: BadgeVariant\n}\n\nfunction pickBackgroundColor(variant: BadgeVariant | undefined, theme: DefaultTheme): Color {\n switch (variant) {\n case BadgeVariant.NEGATIVE:\n return theme.error\n case BadgeVariant.POSITIVE:\n return theme.success\n case BadgeVariant.PRIMARY:\n return theme.primary1\n case BadgeVariant.WARNING:\n return theme.warning\n case BadgeVariant.WARNING_OUTLINE:\n return 'transparent'\n default:\n return theme.bg2\n }\n}\n\nfunction pickBorder(variant: BadgeVariant | undefined, theme: DefaultTheme): string {\n switch (variant) {\n case BadgeVariant.WARNING_OUTLINE:\n return `1px solid ${theme.warning}`\n default:\n return 'unset'\n }\n}\n\nfunction pickFontColor(variant: BadgeVariant | undefined, theme: DefaultTheme): string {\n switch (variant) {\n case BadgeVariant.NEGATIVE:\n return readableColor(theme.error)\n case BadgeVariant.POSITIVE:\n return readableColor(theme.success)\n case BadgeVariant.WARNING:\n return readableColor(theme.warning)\n case BadgeVariant.WARNING_OUTLINE:\n return theme.warning\n default:\n return readableColor(theme.bg2)\n }\n}\n\nconst Badge = styled.div>`\n align-items: center;\n background-color: ${({ theme, variant }) => pickBackgroundColor(variant, theme)};\n border: ${({ theme, variant }) => pickBorder(variant, theme)};\n border-radius: 0.5rem;\n color: ${({ theme, variant }) => pickFontColor(variant, theme)};\n display: inline-flex;\n padding: 4px 6px;\n justify-content: center;\n font-weight: 500;\n`\n\nexport default Badge\n","import { Trans } from '@lingui/macro'\nimport { Currency } from '@uniswap/sdk-core'\nimport { ToggleElement, ToggleWrapper } from 'components/Toggle/MultiToggle'\n\n// the order of displayed base currencies from left to right is always in sort order\n// currencyA is treated as the preferred base currency\nexport default function RateToggle({\n currencyA,\n currencyB,\n handleRateToggle,\n}: {\n currencyA: Currency\n currencyB: Currency\n handleRateToggle: () => void\n}) {\n const tokenA = currencyA?.wrapped\n const tokenB = currencyB?.wrapped\n\n const isSorted = tokenA && tokenB && tokenA.sortsBefore(tokenB)\n\n return tokenA && tokenB ? (\n
\n \n \n {isSorted ? currencyA.symbol : currencyB.symbol}\n \n \n {isSorted ? currencyB.symbol : currencyA.symbol}\n \n \n
\n ) : null\n}\n","import Badge, { BadgeVariant } from 'components/Badge'\nimport styled from 'styled-components/macro'\n\nimport { MouseoverTooltip } from '../../components/Tooltip'\nimport { Trans } from '@lingui/macro'\nimport { AlertCircle } from 'react-feather'\n\nconst BadgeWrapper = styled.div`\n font-size: 14px;\n display: flex;\n justify-content: flex-end;\n`\n\nconst BadgeText = styled.div`\n font-weight: 500;\n font-size: 14px;\n`\n\nconst ActiveDot = styled.span`\n background-color: ${({ theme }) => theme.success};\n border-radius: 50%;\n height: 8px;\n width: 8px;\n margin-right: 4px;\n`\n\nexport default function RangeBadge({\n removed,\n inRange,\n}: {\n removed: boolean | undefined\n inRange: boolean | undefined\n}) {\n return (\n \n {removed ? (\n Your position has 0 liquidity, and is not earning fees.}>\n \n \n  \n \n Closed\n \n \n \n ) : inRange ? (\n \n The price of this pool is within your selected range. Your position is currently earning fees.\n \n }\n >\n \n  \n \n In range\n \n \n \n ) : (\n \n The price of this pool is outside of your selected range. Your position is not currently earning fees.\n \n }\n >\n \n \n  \n \n Out of range\n \n \n \n )}\n \n )\n}\n","import { Bound } from '../state/mint/v3/actions'\nimport { Price, Token } from '@uniswap/sdk-core'\nimport { formatPrice } from './formatCurrencyAmount'\n\nexport function formatTickPrice(\n price: Price | undefined,\n atLimit: { [bound in Bound]?: boolean | undefined },\n direction: Bound,\n placeholder?: string\n) {\n if (atLimit[direction]) {\n return direction === Bound.LOWER ? '0' : '∞'\n }\n\n if (!price && placeholder !== undefined) {\n return placeholder\n }\n\n return formatPrice(price, 5)\n}\n","import { useState, useCallback, useContext, ReactNode } from 'react'\nimport { Position } from '@uniswap/v3-sdk'\nimport { LightCard } from 'components/Card'\nimport { AutoColumn } from 'components/Column'\nimport { TYPE } from 'theme'\nimport { RowBetween, RowFixed } from 'components/Row'\nimport CurrencyLogo from 'components/CurrencyLogo'\nimport { unwrappedToken } from 'utils/unwrappedToken'\nimport { Break } from 'components/earn/styled'\nimport { Trans } from '@lingui/macro'\nimport { Currency } from '@uniswap/sdk-core'\nimport RateToggle from 'components/RateToggle'\nimport DoubleCurrencyLogo from 'components/DoubleLogo'\nimport RangeBadge from 'components/Badge/RangeBadge'\nimport { ThemeContext } from 'styled-components/macro'\nimport JSBI from 'jsbi'\nimport { Bound } from 'state/mint/v3/actions'\nimport { formatTickPrice } from 'utils/formatTickPrice'\n\nexport const PositionPreview = ({\n position,\n title,\n inRange,\n baseCurrencyDefault,\n ticksAtLimit,\n}: {\n position: Position\n title?: ReactNode\n inRange: boolean\n baseCurrencyDefault?: Currency | undefined\n ticksAtLimit: { [bound: string]: boolean | undefined }\n}) => {\n const theme = useContext(ThemeContext)\n\n const currency0 = unwrappedToken(position.pool.token0)\n const currency1 = unwrappedToken(position.pool.token1)\n\n // track which currency should be base\n const [baseCurrency, setBaseCurrency] = useState(\n baseCurrencyDefault\n ? baseCurrencyDefault === currency0\n ? currency0\n : baseCurrencyDefault === currency1\n ? currency1\n : currency0\n : currency0\n )\n\n const sorted = baseCurrency === currency0\n const quoteCurrency = sorted ? currency1 : currency0\n\n const price = sorted ? position.pool.priceOf(position.pool.token0) : position.pool.priceOf(position.pool.token1)\n\n const priceLower = sorted ? position.token0PriceLower : position.token0PriceUpper.invert()\n const priceUpper = sorted ? position.token0PriceUpper : position.token0PriceLower.invert()\n\n const handleRateChange = useCallback(() => {\n setBaseCurrency(quoteCurrency)\n }, [quoteCurrency])\n\n const removed = position?.liquidity && JSBI.equal(position?.liquidity, JSBI.BigInt(0))\n\n return (\n \n \n \n \n \n {currency0?.symbol} / {currency1?.symbol}\n \n \n \n \n\n \n \n \n \n \n {currency0?.symbol}\n \n \n {position.amount0.toSignificant(4)}\n \n \n \n \n \n {currency1?.symbol}\n \n \n {position.amount1.toSignificant(4)}\n \n \n \n \n \n Fee Tier\n \n \n {position?.pool?.fee / 10000}%\n \n \n \n \n\n \n \n {title ? {title} :
}\n \n \n\n \n \n \n \n Min Price\n \n {`${formatTickPrice(\n priceLower,\n ticksAtLimit,\n Bound.LOWER\n )}`}\n \n \n {quoteCurrency.symbol} per {baseCurrency.symbol}\n \n \n \n Your position will be 100% composed of {baseCurrency?.symbol} at this price\n \n \n \n\n \n \n \n Max Price\n \n {`${formatTickPrice(\n priceUpper,\n ticksAtLimit,\n Bound.UPPER\n )}`}\n \n \n {quoteCurrency.symbol} per {baseCurrency.symbol}\n \n \n \n Your position will be 100% composed of {quoteCurrency?.symbol} at this price\n \n \n \n \n \n \n \n Current price\n \n {`${price.toSignificant(5)} `}\n \n \n {quoteCurrency.symbol} per {baseCurrency.symbol}\n \n \n \n \n \n \n )\n}\n","import { Bound, Field } from '../../state/mint/v3/actions'\nimport { AutoColumn } from 'components/Column'\nimport styled from 'styled-components/macro'\nimport { Currency, CurrencyAmount, Price } from '@uniswap/sdk-core'\nimport { Position } from '@uniswap/v3-sdk'\nimport { PositionPreview } from 'components/PositionPreview'\n\nconst Wrapper = styled.div`\n padding-top: 12px;\n`\n\nexport function Review({\n position,\n outOfRange,\n ticksAtLimit,\n}: {\n position?: Position\n existingPosition?: Position\n parsedAmounts: { [field in Field]?: CurrencyAmount }\n priceLower?: Price\n priceUpper?: Price\n outOfRange: boolean\n ticksAtLimit: { [bound in Bound]?: boolean | undefined }\n}) {\n return (\n \n \n {position ? (\n \n ) : null}\n \n \n )\n}\n","import { MaxUint256 } from '@ethersproject/constants'\nimport { TransactionResponse } from '@ethersproject/providers'\nimport { CurrencyAmount, Percent, Currency, TradeType } from '@uniswap/sdk-core'\nimport { Trade as V2Trade } from '@uniswap/v2-sdk'\nimport { Trade as V3Trade } from '@uniswap/v3-sdk'\nimport { useCallback, useMemo } from 'react'\nimport { SWAP_ROUTER_ADDRESSES, V2_ROUTER_ADDRESS } from '../constants/addresses'\nimport { useTransactionAdder, useHasPendingApproval } from '../state/transactions/hooks'\nimport { calculateGasMargin } from '../utils/calculateGasMargin'\nimport { useTokenContract } from './useContract'\nimport { useActiveWeb3React } from './web3'\nimport { useTokenAllowance } from './useTokenAllowance'\n\nexport enum ApprovalState {\n UNKNOWN = 'UNKNOWN',\n NOT_APPROVED = 'NOT_APPROVED',\n PENDING = 'PENDING',\n APPROVED = 'APPROVED',\n}\n\n// returns a variable indicating the state of the approval and a function which approves if necessary or early returns\nexport function useApproveCallback(\n amountToApprove?: CurrencyAmount,\n spender?: string\n): [ApprovalState, () => Promise] {\n const { account, chainId } = useActiveWeb3React()\n const token = amountToApprove?.currency?.isToken ? amountToApprove.currency : undefined\n const currentAllowance = useTokenAllowance(token, account ?? undefined, spender)\n const pendingApproval = useHasPendingApproval(token?.address, spender)\n\n // check the current approval status\n const approvalState: ApprovalState = useMemo(() => {\n if (!amountToApprove || !spender) return ApprovalState.UNKNOWN\n if (amountToApprove.currency.isNative) return ApprovalState.APPROVED\n // we might not have enough data to know whether or not we need to approve\n if (!currentAllowance) return ApprovalState.UNKNOWN\n\n // amountToApprove will be defined if currentAllowance is\n return currentAllowance.lessThan(amountToApprove)\n ? pendingApproval\n ? ApprovalState.PENDING\n : ApprovalState.NOT_APPROVED\n : ApprovalState.APPROVED\n }, [amountToApprove, currentAllowance, pendingApproval, spender])\n\n const tokenContract = useTokenContract(token?.address)\n const addTransaction = useTransactionAdder()\n\n const approve = useCallback(async (): Promise => {\n if (approvalState !== ApprovalState.NOT_APPROVED) {\n console.error('approve was called unnecessarily')\n return\n }\n if (!chainId) {\n console.error('no chainId')\n return\n }\n\n if (!token) {\n console.error('no token')\n return\n }\n\n if (!tokenContract) {\n console.error('tokenContract is null')\n return\n }\n\n if (!amountToApprove) {\n console.error('missing amount to approve')\n return\n }\n\n if (!spender) {\n console.error('no spender')\n return\n }\n\n let useExact = false\n const estimatedGas = await tokenContract.estimateGas.approve(spender, MaxUint256).catch(() => {\n // general fallback for tokens who restrict approval amounts\n useExact = true\n return tokenContract.estimateGas.approve(spender, amountToApprove.quotient.toString())\n })\n\n return tokenContract\n .approve(spender, useExact ? amountToApprove.quotient.toString() : MaxUint256, {\n gasLimit: calculateGasMargin(chainId, estimatedGas),\n })\n .then((response: TransactionResponse) => {\n addTransaction(response, {\n summary: 'Approve ' + amountToApprove.currency.symbol,\n approval: { tokenAddress: token.address, spender: spender },\n })\n })\n .catch((error: Error) => {\n console.debug('Failed to approve token', error)\n throw error\n })\n }, [approvalState, token, tokenContract, amountToApprove, spender, addTransaction, chainId])\n\n return [approvalState, approve]\n}\n\n// wraps useApproveCallback in the context of a swap\nexport function useApproveCallbackFromTrade(\n trade: V2Trade | V3Trade | undefined,\n allowedSlippage: Percent\n) {\n const { chainId } = useActiveWeb3React()\n const v3SwapRouterAddress = chainId ? SWAP_ROUTER_ADDRESSES[chainId] : undefined\n const amountToApprove = useMemo(\n () => (trade && trade.inputAmount.currency.isToken ? trade.maximumAmountIn(allowedSlippage) : undefined),\n [trade, allowedSlippage]\n )\n return useApproveCallback(\n amountToApprove,\n chainId\n ? trade instanceof V2Trade\n ? V2_ROUTER_ADDRESS[chainId]\n : trade instanceof V3Trade\n ? v3SwapRouterAddress\n : undefined\n : undefined\n )\n}\n","import { Token, CurrencyAmount } from '@uniswap/sdk-core'\nimport { useMemo } from 'react'\nimport { useSingleCallResult } from '../state/multicall/hooks'\nimport { useTokenContract } from './useContract'\n\nexport function useTokenAllowance(token?: Token, owner?: string, spender?: string): CurrencyAmount | undefined {\n const contract = useTokenContract(token?.address, false)\n\n const inputs = useMemo(() => [owner, spender], [owner, spender])\n const allowance = useSingleCallResult(contract, 'allowance', inputs).result\n\n return useMemo(\n () => (token && allowance ? CurrencyAmount.fromRawAmount(token, allowance.toString()) : undefined),\n [token, allowance]\n )\n}\n","import { L2_CHAIN_IDS } from 'constants/chains'\nimport { L2_DEADLINE_FROM_NOW } from 'constants/misc'\nimport { BigNumber } from 'ethers'\nimport { useMemo } from 'react'\nimport { useAppSelector } from 'state/hooks'\nimport useCurrentBlockTimestamp from './useCurrentBlockTimestamp'\nimport { useActiveWeb3React } from './web3'\n\n// combines the block timestamp with the user setting to give the deadline that should be used for any submitted transaction\nexport default function useTransactionDeadline(): BigNumber | undefined {\n const { chainId } = useActiveWeb3React()\n const ttl = useAppSelector((state) => state.user.userDeadline)\n const blockTimestamp = useCurrentBlockTimestamp()\n return useMemo(() => {\n if (blockTimestamp && chainId && L2_CHAIN_IDS.includes(chainId)) return blockTimestamp.add(L2_DEADLINE_FROM_NOW)\n if (blockTimestamp && ttl) return blockTimestamp.add(ttl)\n return undefined\n }, [blockTimestamp, chainId, ttl])\n}\n","import { Trans } from '@lingui/macro'\nimport { L2_CHAIN_IDS, SupportedChainId, SupportedL2ChainId } from 'constants/chains'\nimport { useActiveWeb3React } from 'hooks/web3'\nimport { useCallback, useState } from 'react'\nimport { ArrowDownCircle, X } from 'react-feather'\nimport { useArbitrumAlphaAlert, useDarkModeManager } from 'state/user/hooks'\nimport { useETHBalances } from 'state/wallet/hooks'\nimport styled, { css } from 'styled-components/macro'\nimport { ExternalLink, MEDIA_WIDTHS } from 'theme'\nimport { CHAIN_INFO } from '../../constants/chains'\n\nconst L2Icon = styled.img`\n width: 40px;\n height: 40px;\n justify-self: center;\n`\nconst CloseIcon = styled(X)`\n cursor: pointer;\n position: absolute;\n top: 16px;\n right: 16px;\n`\nconst ContentWrapper = styled.div`\n align-items: center;\n display: grid;\n grid-gap: 4px;\n grid-template-columns: 40px 4fr;\n grid-template-rows: auto auto;\n margin: 20px 16px;\n @media screen and (min-width: ${MEDIA_WIDTHS.upToSmall}px) {\n grid-template-columns: 42px 4fr;\n grid-gap: 8px;\n }\n`\nexport const ArbitrumWrapperBackgroundDarkMode = css`\n background: radial-gradient(285% 8200% at 30% 50%, rgba(40, 160, 240, 0.1) 0%, rgba(219, 255, 0, 0) 100%),\n radial-gradient(75% 75% at 0% 0%, rgba(150, 190, 220, 0.3) 0%, rgba(33, 114, 229, 0.3) 100%), hsla(0, 0%, 100%, 0.1);\n`\nexport const ArbitrumWrapperBackgroundLightMode = css`\n background: radial-gradient(285% 8200% at 30% 50%, rgba(40, 160, 240, 0.1) 0%, rgba(219, 255, 0, 0) 100%),\n radial-gradient(circle at top left, hsla(206, 50%, 75%, 0.01), hsla(215, 79%, 51%, 0.12)), hsla(0, 0%, 100%, 0.1);\n`\nexport const OptimismWrapperBackgroundDarkMode = css`\n background: radial-gradient(948% 292% at 42% 0%, rgba(255, 58, 212, 0.2) 0%, rgba(255, 255, 255, 0.1) 100%),\n radial-gradient(98% 96% at 2% 0%, rgba(255, 39, 39, 0.5) 0%, rgba(235, 0, 255, 0.345) 96%);\n`\nexport const OptimismWrapperBackgroundLightMode = css`\n background: radial-gradient(92% 105% at 50% 7%, rgba(255, 58, 212, 0.04) 0%, rgba(255, 255, 255, 0.03) 100%),\n radial-gradient(100% 97% at 0% 12%, rgba(235, 0, 255, 0.1) 0%, rgba(243, 19, 19, 0.1) 100%), hsla(0, 0%, 100%, 0.5);\n`\nconst RootWrapper = styled.div<{ chainId: SupportedChainId; darkMode: boolean; logoUrl: string }>`\n ${({ chainId, darkMode }) =>\n [SupportedChainId.OPTIMISM, SupportedChainId.OPTIMISTIC_KOVAN].includes(chainId)\n ? darkMode\n ? OptimismWrapperBackgroundDarkMode\n : OptimismWrapperBackgroundLightMode\n : darkMode\n ? ArbitrumWrapperBackgroundDarkMode\n : ArbitrumWrapperBackgroundLightMode};\n border-radius: 20px;\n display: flex;\n flex-direction: column;\n max-width: 480px;\n min-height: 174px;\n overflow: hidden;\n position: relative;\n width: 100%;\n\n :before {\n background-image: url(${({ logoUrl }) => logoUrl});\n background-repeat: no-repeat;\n background-size: 300px;\n content: '';\n height: 300px;\n opacity: 0.1;\n position: absolute;\n transform: rotate(25deg) translate(-90px, -40px);\n width: 300px;\n z-index: -1;\n }\n`\nconst Header = styled.h2`\n font-weight: 600;\n font-size: 20px;\n margin: 0;\n padding-right: 30px;\n`\nconst Body = styled.p`\n font-size: 12px;\n grid-column: 1 / 3;\n line-height: 143%;\n margin: 0;\n @media screen and (min-width: ${MEDIA_WIDTHS.upToSmall}px) {\n grid-column: 2 / 3;\n }\n`\nconst LinkOutCircle = styled(ArrowDownCircle)`\n transform: rotate(230deg);\n width: 20px;\n height: 20px;\n`\nconst LinkOutToBridge = styled(ExternalLink)`\n align-items: center;\n background-color: black;\n border-radius: 16px;\n color: white;\n display: flex;\n font-size: 16px;\n height: 44px;\n justify-content: space-between;\n margin: 0 20px 20px 20px;\n padding: 12px 16px;\n text-decoration: none;\n width: auto;\n :hover,\n :focus,\n :active {\n background-color: black;\n }\n`\nexport function NetworkAlert() {\n const { account, chainId } = useActiveWeb3React()\n const [darkMode] = useDarkModeManager()\n const [arbitrumAlphaAcknowledged, setArbitrumAlphaAcknowledged] = useArbitrumAlphaAlert()\n const [locallyDismissed, setLocallyDimissed] = useState(false)\n const userEthBalance = useETHBalances(account ? [account] : [])?.[account ?? '']\n\n const dismiss = useCallback(() => {\n if (userEthBalance?.greaterThan(0)) {\n setArbitrumAlphaAcknowledged(true)\n } else {\n setLocallyDimissed(true)\n }\n }, [setArbitrumAlphaAcknowledged, userEthBalance])\n if (!chainId || !L2_CHAIN_IDS.includes(chainId) || arbitrumAlphaAcknowledged || locallyDismissed) {\n return null\n }\n const info = CHAIN_INFO[chainId as SupportedL2ChainId]\n const depositUrl = [SupportedChainId.OPTIMISM, SupportedChainId.OPTIMISTIC_KOVAN].includes(chainId)\n ? `${info.bridge}?chainId=1`\n : info.bridge\n\n return (\n \n \n \n \n
\n Uniswap on {info.label}\n
\n \n \n This is an alpha release of Uniswap on the {info.label} network. You must bridge L1 assets to the network to\n swap them.\n \n \n
\n \n Deposit to {info.label}\n \n \n
\n )\n}\n","import { Trans } from '@lingui/macro'\nimport {\n ArbitrumWrapperBackgroundDarkMode,\n ArbitrumWrapperBackgroundLightMode,\n OptimismWrapperBackgroundDarkMode,\n OptimismWrapperBackgroundLightMode,\n} from 'components/NetworkAlert/NetworkAlert'\nimport { CHAIN_INFO, L2_CHAIN_IDS, SupportedChainId, SupportedL2ChainId } from 'constants/chains'\nimport { useActiveWeb3React } from 'hooks/web3'\nimport { ArrowDownCircle } from 'react-feather'\nimport { useArbitrumAlphaAlert, useDarkModeManager } from 'state/user/hooks'\nimport styled from 'styled-components/macro'\nimport { ExternalLink, MEDIA_WIDTHS } from 'theme'\n\nconst L2Icon = styled.img`\n display: none;\n height: 40px;\n margin: auto 20px auto 4px;\n width: 40px;\n @media screen and (min-width: ${MEDIA_WIDTHS.upToMedium}px) {\n display: block;\n }\n`\nconst DesktopTextBreak = styled.div`\n display: none;\n @media screen and (min-width: ${MEDIA_WIDTHS.upToMedium}px) {\n display: block;\n }\n`\nconst Wrapper = styled.div<{ chainId: SupportedL2ChainId; darkMode: boolean; logoUrl: string }>`\n ${({ chainId, darkMode }) =>\n [SupportedChainId.OPTIMISM, SupportedChainId.OPTIMISTIC_KOVAN].includes(chainId)\n ? darkMode\n ? OptimismWrapperBackgroundDarkMode\n : OptimismWrapperBackgroundLightMode\n : darkMode\n ? ArbitrumWrapperBackgroundDarkMode\n : ArbitrumWrapperBackgroundLightMode};\n border-radius: 20px;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n padding: 12px;\n position: relative;\n width: 100%;\n\n :before {\n background-image: url(${({ logoUrl }) => logoUrl});\n background-repeat: no-repeat;\n background-size: 300px;\n content: '';\n height: 300px;\n opacity: 0.1;\n position: absolute;\n transform: rotate(25deg) translate(-90px, -40px);\n width: 300px;\n z-index: -1;\n }\n @media screen and (min-width: ${MEDIA_WIDTHS.upToMedium}px) {\n flex-direction: row;\n padding: 16px 20px;\n }\n`\nconst Body = styled.div`\n font-size: 12px;\n line-height: 143%;\n margin: 12px;\n @media screen and (min-width: ${MEDIA_WIDTHS.upToMedium}px) {\n flex: 1 1 auto;\n margin: auto 0;\n }\n`\nconst LinkOutCircle = styled(ArrowDownCircle)`\n transform: rotate(230deg);\n width: 20px;\n height: 20px;\n margin-left: 12px;\n`\nconst LinkOutToBridge = styled(ExternalLink)`\n align-items: center;\n background-color: black;\n border-radius: 16px;\n color: white;\n display: flex;\n font-size: 14px;\n justify-content: space-between;\n margin: 0;\n max-height: 47px;\n padding: 16px 12px;\n text-decoration: none;\n width: auto;\n :hover,\n :focus,\n :active {\n background-color: black;\n }\n @media screen and (min-width: ${MEDIA_WIDTHS.upToMedium}px) {\n margin: auto 0 auto auto;\n padding: 14px 16px;\n min-width: 226px;\n }\n`\nexport function AddLiquidityNetworkAlert() {\n const { chainId } = useActiveWeb3React()\n const [darkMode] = useDarkModeManager()\n const [arbitrumAlphaAcknowledged] = useArbitrumAlphaAlert()\n\n if (!chainId || !L2_CHAIN_IDS.includes(chainId) || arbitrumAlphaAcknowledged) {\n return null\n }\n const info = CHAIN_INFO[chainId as SupportedL2ChainId]\n const depositUrl = [SupportedChainId.OPTIMISM, SupportedChainId.OPTIMISTIC_KOVAN].includes(chainId)\n ? `${info.bridge}?chainId=1`\n : info.bridge\n return (\n \n \n \n This is an alpha release of Uniswap on the {info.label} network.\n You must bridge L1 assets to the network to use them.\n \n \n Deposit to {info.label}\n \n \n \n )\n}\n","import { Currency, CurrencyAmount } from '@uniswap/sdk-core'\nimport JSBI from 'jsbi'\n\nconst MIN_NATIVE_CURRENCY_FOR_GAS: JSBI = JSBI.exponentiate(JSBI.BigInt(10), JSBI.BigInt(16)) // .01 ETH\n/**\n * Given some token amount, return the max that can be spent of it\n * @param currencyAmount to return max of\n */\nexport function maxAmountSpend(currencyAmount?: CurrencyAmount): CurrencyAmount | undefined {\n if (!currencyAmount) return undefined\n if (currencyAmount.currency.isNative) {\n if (JSBI.greaterThan(currencyAmount.quotient, MIN_NATIVE_CURRENCY_FOR_GAS)) {\n return CurrencyAmount.fromRawAmount(\n currencyAmount.currency,\n JSBI.subtract(currencyAmount.quotient, MIN_NATIVE_CURRENCY_FOR_GAS)\n )\n } else {\n return CurrencyAmount.fromRawAmount(currencyAmount.currency, JSBI.BigInt(0))\n }\n }\n return currencyAmount\n}\n","import { Text } from 'rebass'\nimport styled, { keyframes } from 'styled-components/macro'\n\nexport const Wrapper = styled.div`\n position: relative;\n padding: 20px;\n`\n\nexport const ClickableText = styled(Text)`\n :hover {\n cursor: pointer;\n }\n color: ${({ theme }) => theme.primary1};\n`\nexport const MaxButton = styled.button<{ width: string }>`\n padding: 0.5rem 1rem;\n background-color: ${({ theme }) => theme.primary5};\n border: 1px solid ${({ theme }) => theme.primary5};\n border-radius: 0.5rem;\n font-size: 1rem;\n ${({ theme }) => theme.mediaWidth.upToSmall`\n padding: 0.25rem 0.5rem;\n `};\n font-weight: 500;\n cursor: pointer;\n margin: 0.25rem;\n overflow: hidden;\n color: ${({ theme }) => theme.primary1};\n :hover {\n border: 1px solid ${({ theme }) => theme.primary1};\n }\n :focus {\n border: 1px solid ${({ theme }) => theme.primary1};\n outline: none;\n }\n`\n\nexport const Dots = styled.span`\n &::after {\n display: inline-block;\n animation: ellipsis 1.25s infinite;\n content: '.';\n width: 1em;\n text-align: left;\n }\n @keyframes ellipsis {\n 0% {\n content: '.';\n }\n 33% {\n content: '..';\n }\n 66% {\n content: '...';\n }\n }\n`\n\nconst loadingAnimation = keyframes`\n 0% {\n background-position: 100% 50%;\n }\n 100% {\n background-position: 0% 50%;\n }\n`\n\nexport const LoadingRows = styled.div`\n display: grid;\n min-width: 75%;\n max-width: 960px;\n grid-column-gap: 0.5em;\n grid-row-gap: 0.8em;\n grid-template-columns: repeat(3, 1fr);\n & > div {\n animation: ${loadingAnimation} 1.5s infinite;\n animation-fill-mode: both;\n background: linear-gradient(\n to left,\n ${({ theme }) => theme.bg1} 25%,\n ${({ theme }) => theme.bg2} 50%,\n ${({ theme }) => theme.bg1} 75%\n );\n background-size: 400%;\n border-radius: 12px;\n height: 2.4em;\n will-change: background-position;\n }\n & > div:nth-child(4n + 1) {\n grid-column: 1 / 3;\n }\n & > div:nth-child(4n) {\n grid-column: 3 / 4;\n margin-bottom: 2em;\n }\n`\n","import { useState } from 'react'\nimport styled from 'styled-components/macro'\nimport { TYPE, CloseIcon, ExternalLink } from 'theme'\nimport { ButtonEmpty } from 'components/Button'\nimport Modal from 'components/Modal'\nimport Card, { OutlineCard } from 'components/Card'\nimport { RowBetween, AutoRow } from 'components/Row'\nimport { AutoColumn } from 'components/Column'\nimport CurrencyLogo from 'components/CurrencyLogo'\nimport { useActiveWeb3React } from 'hooks/web3'\nimport { Currency, Token } from '@uniswap/sdk-core'\nimport { useUnsupportedTokens } from '../../hooks/Tokens'\nimport { ExplorerDataType, getExplorerLink } from '../../utils/getExplorerLink'\nimport { Trans } from '@lingui/macro'\n\nconst DetailsFooter = styled.div<{ show: boolean }>`\n padding-top: calc(16px + 2rem);\n padding-bottom: 20px;\n margin-top: -2rem;\n width: 100%;\n max-width: 400px;\n border-bottom-left-radius: 20px;\n border-bottom-right-radius: 20px;\n color: ${({ theme }) => theme.text2};\n background-color: ${({ theme }) => theme.advancedBG};\n z-index: -1;\n\n transform: ${({ show }) => (show ? 'translateY(0%)' : 'translateY(-100%)')};\n transition: transform 300ms ease-in-out;\n text-align: center;\n`\n\nconst AddressText = styled(TYPE.blue)`\n font-size: 12px;\n\n ${({ theme }) => theme.mediaWidth.upToSmall`\n font-size: 10px;\n`}\n`\n\nexport default function UnsupportedCurrencyFooter({\n show,\n currencies,\n}: {\n show: boolean\n currencies: (Currency | undefined)[]\n}) {\n const { chainId } = useActiveWeb3React()\n const [showDetails, setShowDetails] = useState(false)\n\n const tokens =\n chainId && currencies\n ? currencies.map((currency) => {\n return currency?.wrapped\n })\n : []\n\n const unsupportedTokens: { [address: string]: Token } = useUnsupportedTokens()\n\n return (\n \n setShowDetails(false)}>\n \n \n \n \n Unsupported Assets\n \n setShowDetails(false)} />\n \n {tokens.map((token) => {\n return (\n token &&\n unsupportedTokens &&\n Object.keys(unsupportedTokens).includes(token.address) && (\n \n \n \n \n {token.symbol}\n \n {chainId && (\n \n {token.address}\n \n )}\n \n \n )\n )\n })}\n \n \n \n Some assets are not available through this interface because they may not work well with the smart\n contracts or we are unable to allow trading for legal reasons.\n \n \n \n \n \n \n setShowDetails(true)}>\n \n Read more about unsupported assets\n \n \n \n )\n}\n","import React from 'react'\nimport styled from 'styled-components/macro'\n\nexport const BodyWrapper = styled.div<{ margin?: string; maxWidth?: string }>`\n position: relative;\n margin-top: ${({ margin }) => margin ?? '0px'};\n max-width: ${({ maxWidth }) => maxWidth ?? '480px'};\n width: 100%;\n background: ${({ theme }) => theme.bg0};\n box-shadow: 0px 0px 1px rgba(0, 0, 0, 0.01), 0px 4px 8px rgba(0, 0, 0, 0.04), 0px 16px 24px rgba(0, 0, 0, 0.04),\n 0px 24px 32px rgba(0, 0, 0, 0.01);\n border-radius: 24px;\n margin-top: 1rem;\n`\n\n/**\n * The styled container element that wraps the content of most pages and the tabs.\n */\nexport default function AppBody({ children, ...rest }: { children: React.ReactNode }) {\n return {children}\n}\n","import styled from 'styled-components/macro'\nimport { AutoColumn } from 'components/Column'\nimport CurrencyInputPanel from 'components/CurrencyInputPanel'\nimport Input from 'components/NumericalInput'\nimport { BodyWrapper } from 'pages/AppBody'\n\nexport const PageWrapper = styled(BodyWrapper)<{ wide: boolean }>`\n max-width: ${({ wide }) => (wide ? '880px' : '480px')};\n width: 100%;\n\n padding: ${({ wide }) => (wide ? '10px' : '0')};\n\n ${({ theme }) => theme.mediaWidth.upToMedium`\n max-width: 480px;\n `};\n`\n\nexport const Wrapper = styled.div`\n position: relative;\n padding: 26px 16px;\n min-width: 480px;\n\n ${({ theme }) => theme.mediaWidth.upToMedium`\n min-width: 400px;\n `};\n\n ${({ theme }) => theme.mediaWidth.upToExtraSmall`\n min-width: 340px;\n`};\n`\n\nexport const ScrollablePage = styled.div`\n position: relative;\n display: flex;\n flex-direction: column;\n ${({ theme }) => theme.mediaWidth.upToMedium`\n max-width: 480px;\n margin: 0 auto;\n `};\n`\n\nexport const DynamicSection = styled(AutoColumn)<{ disabled?: boolean }>`\n opacity: ${({ disabled }) => (disabled ? '0.2' : '1')};\n pointer-events: ${({ disabled }) => (disabled ? 'none' : 'initial')};\n`\n\nexport const CurrencyDropdown = styled(CurrencyInputPanel)`\n width: 48.5%;\n`\n\nexport const StyledInput = styled(Input)`\n background-color: ${({ theme }) => theme.bg0};\n text-align: left;\n font-size: 18px;\n width: 100%;\n`\n\n/* two-column layout where DepositAmount is moved at the very end on mobile. */\nexport const ResponsiveTwoColumns = styled.div<{ wide: boolean }>`\n display: grid;\n grid-column-gap: 50px;\n grid-row-gap: 15px;\n grid-template-columns: ${({ wide }) => (wide ? '1fr 1fr' : '1fr')};\n grid-template-rows: max-content;\n grid-auto-flow: row;\n\n padding-top: 20px;\n\n border-top: 1px solid ${({ theme }) => theme.bg2};\n\n ${({ theme }) => theme.mediaWidth.upToMedium`\n grid-template-columns: 1fr;\n\n margin-top: 0;\n `};\n`\n\nexport const RightContainer = styled(AutoColumn)`\n grid-row: 1 / 3;\n grid-column: 2;\n height: fit-content;\n\n ${({ theme }) => theme.mediaWidth.upToMedium`\n grid-row: 2 / 3;\n grid-column: 1;\n `};\n`\n\nexport const StackedContainer = styled.div`\n display: grid;\n`\n\nexport const StackedItem = styled.div<{ zIndex?: number }>`\n grid-column: 1;\n grid-row: 1;\n height: 100%;\n z-index: ${({ zIndex }) => zIndex};\n`\n\nexport const MediumOnly = styled.div`\n ${({ theme }) => theme.mediaWidth.upToMedium`\n display: none;\n `};\n`\n\nexport const HideMedium = styled.div`\n display: none;\n\n ${({ theme }) => theme.mediaWidth.upToMedium`\n display: block;\n `};\n`\n","import { Token, Price } from '@uniswap/sdk-core'\nimport { tickToPrice } from '@uniswap/v3-sdk'\n\nexport function getTickToPrice(baseToken?: Token, quoteToken?: Token, tick?: number): Price | undefined {\n if (!baseToken || !quoteToken || typeof tick !== 'number') {\n return undefined\n }\n return tickToPrice(baseToken, quoteToken, tick)\n}\n","import { api } from './slice';\nexport type Maybe = T | null;\nexport type Exact = { [K in keyof T]: T[K] };\nexport type MakeOptional = Omit & { [SubKey in K]?: Maybe };\nexport type MakeMaybe = Omit & { [SubKey in K]: Maybe };\n/** All built-in and custom scalars, mapped to their actual values */\nexport type Scalars = {\n ID: string;\n String: string;\n Boolean: boolean;\n Int: number;\n Float: number;\n BigDecimal: any;\n BigInt: any;\n Bytes: any;\n};\n\n\n\n\n\n\nexport type Block_Height = {\n hash?: Maybe;\n number?: Maybe;\n};\n\nexport type Bundle = {\n __typename?: 'Bundle';\n id: Scalars['ID'];\n ethPriceUSD: Scalars['BigDecimal'];\n};\n\nexport type Bundle_Filter = {\n id?: Maybe;\n id_not?: Maybe;\n id_gt?: Maybe;\n id_lt?: Maybe;\n id_gte?: Maybe;\n id_lte?: Maybe;\n id_in?: Maybe>;\n id_not_in?: Maybe>;\n ethPriceUSD?: Maybe;\n ethPriceUSD_not?: Maybe;\n ethPriceUSD_gt?: Maybe;\n ethPriceUSD_lt?: Maybe;\n ethPriceUSD_gte?: Maybe;\n ethPriceUSD_lte?: Maybe;\n ethPriceUSD_in?: Maybe>;\n ethPriceUSD_not_in?: Maybe>;\n};\n\nexport enum Bundle_OrderBy {\n Id = 'id',\n EthPriceUsd = 'ethPriceUSD'\n}\n\nexport type Burn = {\n __typename?: 'Burn';\n id: Scalars['ID'];\n transaction: Transaction;\n pool: Pool;\n token0: Token;\n token1: Token;\n timestamp: Scalars['BigInt'];\n owner?: Maybe;\n origin: Scalars['Bytes'];\n amount: Scalars['BigInt'];\n amount0: Scalars['BigDecimal'];\n amount1: Scalars['BigDecimal'];\n amountUSD?: Maybe;\n tickLower: Scalars['BigInt'];\n tickUpper: Scalars['BigInt'];\n logIndex?: Maybe;\n};\n\nexport type Burn_Filter = {\n id?: Maybe;\n id_not?: Maybe;\n id_gt?: Maybe;\n id_lt?: Maybe;\n id_gte?: Maybe;\n id_lte?: Maybe;\n id_in?: Maybe>;\n id_not_in?: Maybe>;\n transaction?: Maybe;\n transaction_not?: Maybe;\n transaction_gt?: Maybe;\n transaction_lt?: Maybe;\n transaction_gte?: Maybe;\n transaction_lte?: Maybe;\n transaction_in?: Maybe>;\n transaction_not_in?: Maybe>;\n transaction_contains?: Maybe;\n transaction_not_contains?: Maybe;\n transaction_starts_with?: Maybe;\n transaction_not_starts_with?: Maybe;\n transaction_ends_with?: Maybe;\n transaction_not_ends_with?: Maybe;\n pool?: Maybe;\n pool_not?: Maybe;\n pool_gt?: Maybe;\n pool_lt?: Maybe;\n pool_gte?: Maybe;\n pool_lte?: Maybe;\n pool_in?: Maybe>;\n pool_not_in?: Maybe>;\n pool_contains?: Maybe;\n pool_not_contains?: Maybe;\n pool_starts_with?: Maybe;\n pool_not_starts_with?: Maybe;\n pool_ends_with?: Maybe;\n pool_not_ends_with?: Maybe;\n token0?: Maybe;\n token0_not?: Maybe;\n token0_gt?: Maybe;\n token0_lt?: Maybe;\n token0_gte?: Maybe;\n token0_lte?: Maybe;\n token0_in?: Maybe>;\n token0_not_in?: Maybe>;\n token0_contains?: Maybe;\n token0_not_contains?: Maybe;\n token0_starts_with?: Maybe;\n token0_not_starts_with?: Maybe;\n token0_ends_with?: Maybe;\n token0_not_ends_with?: Maybe;\n token1?: Maybe;\n token1_not?: Maybe;\n token1_gt?: Maybe;\n token1_lt?: Maybe;\n token1_gte?: Maybe;\n token1_lte?: Maybe;\n token1_in?: Maybe>;\n token1_not_in?: Maybe>;\n token1_contains?: Maybe;\n token1_not_contains?: Maybe;\n token1_starts_with?: Maybe;\n token1_not_starts_with?: Maybe;\n token1_ends_with?: Maybe;\n token1_not_ends_with?: Maybe;\n timestamp?: Maybe;\n timestamp_not?: Maybe;\n timestamp_gt?: Maybe;\n timestamp_lt?: Maybe;\n timestamp_gte?: Maybe;\n timestamp_lte?: Maybe;\n timestamp_in?: Maybe>;\n timestamp_not_in?: Maybe>;\n owner?: Maybe;\n owner_not?: Maybe;\n owner_in?: Maybe>;\n owner_not_in?: Maybe>;\n owner_contains?: Maybe;\n owner_not_contains?: Maybe;\n origin?: Maybe;\n origin_not?: Maybe;\n origin_in?: Maybe>;\n origin_not_in?: Maybe>;\n origin_contains?: Maybe;\n origin_not_contains?: Maybe;\n amount?: Maybe;\n amount_not?: Maybe;\n amount_gt?: Maybe;\n amount_lt?: Maybe;\n amount_gte?: Maybe;\n amount_lte?: Maybe;\n amount_in?: Maybe>;\n amount_not_in?: Maybe>;\n amount0?: Maybe;\n amount0_not?: Maybe;\n amount0_gt?: Maybe;\n amount0_lt?: Maybe;\n amount0_gte?: Maybe;\n amount0_lte?: Maybe;\n amount0_in?: Maybe>;\n amount0_not_in?: Maybe>;\n amount1?: Maybe;\n amount1_not?: Maybe;\n amount1_gt?: Maybe;\n amount1_lt?: Maybe;\n amount1_gte?: Maybe;\n amount1_lte?: Maybe;\n amount1_in?: Maybe>;\n amount1_not_in?: Maybe>;\n amountUSD?: Maybe;\n amountUSD_not?: Maybe;\n amountUSD_gt?: Maybe;\n amountUSD_lt?: Maybe;\n amountUSD_gte?: Maybe;\n amountUSD_lte?: Maybe;\n amountUSD_in?: Maybe>;\n amountUSD_not_in?: Maybe>;\n tickLower?: Maybe;\n tickLower_not?: Maybe;\n tickLower_gt?: Maybe;\n tickLower_lt?: Maybe;\n tickLower_gte?: Maybe;\n tickLower_lte?: Maybe;\n tickLower_in?: Maybe>;\n tickLower_not_in?: Maybe>;\n tickUpper?: Maybe;\n tickUpper_not?: Maybe;\n tickUpper_gt?: Maybe;\n tickUpper_lt?: Maybe;\n tickUpper_gte?: Maybe;\n tickUpper_lte?: Maybe;\n tickUpper_in?: Maybe>;\n tickUpper_not_in?: Maybe>;\n logIndex?: Maybe;\n logIndex_not?: Maybe;\n logIndex_gt?: Maybe;\n logIndex_lt?: Maybe;\n logIndex_gte?: Maybe;\n logIndex_lte?: Maybe;\n logIndex_in?: Maybe>;\n logIndex_not_in?: Maybe>;\n};\n\nexport enum Burn_OrderBy {\n Id = 'id',\n Transaction = 'transaction',\n Pool = 'pool',\n Token0 = 'token0',\n Token1 = 'token1',\n Timestamp = 'timestamp',\n Owner = 'owner',\n Origin = 'origin',\n Amount = 'amount',\n Amount0 = 'amount0',\n Amount1 = 'amount1',\n AmountUsd = 'amountUSD',\n TickLower = 'tickLower',\n TickUpper = 'tickUpper',\n LogIndex = 'logIndex'\n}\n\n\nexport type Collect = {\n __typename?: 'Collect';\n id: Scalars['ID'];\n transaction: Transaction;\n timestamp: Scalars['BigInt'];\n pool: Pool;\n owner?: Maybe;\n amount0: Scalars['BigDecimal'];\n amount1: Scalars['BigDecimal'];\n amountUSD?: Maybe;\n tickLower: Scalars['BigInt'];\n tickUpper: Scalars['BigInt'];\n logIndex?: Maybe;\n};\n\nexport type Collect_Filter = {\n id?: Maybe;\n id_not?: Maybe;\n id_gt?: Maybe;\n id_lt?: Maybe;\n id_gte?: Maybe;\n id_lte?: Maybe;\n id_in?: Maybe>;\n id_not_in?: Maybe>;\n transaction?: Maybe;\n transaction_not?: Maybe;\n transaction_gt?: Maybe;\n transaction_lt?: Maybe;\n transaction_gte?: Maybe;\n transaction_lte?: Maybe;\n transaction_in?: Maybe>;\n transaction_not_in?: Maybe>;\n transaction_contains?: Maybe;\n transaction_not_contains?: Maybe;\n transaction_starts_with?: Maybe;\n transaction_not_starts_with?: Maybe;\n transaction_ends_with?: Maybe;\n transaction_not_ends_with?: Maybe;\n timestamp?: Maybe;\n timestamp_not?: Maybe;\n timestamp_gt?: Maybe;\n timestamp_lt?: Maybe;\n timestamp_gte?: Maybe;\n timestamp_lte?: Maybe;\n timestamp_in?: Maybe>;\n timestamp_not_in?: Maybe>;\n pool?: Maybe;\n pool_not?: Maybe;\n pool_gt?: Maybe;\n pool_lt?: Maybe;\n pool_gte?: Maybe;\n pool_lte?: Maybe;\n pool_in?: Maybe>;\n pool_not_in?: Maybe>;\n pool_contains?: Maybe;\n pool_not_contains?: Maybe;\n pool_starts_with?: Maybe;\n pool_not_starts_with?: Maybe;\n pool_ends_with?: Maybe;\n pool_not_ends_with?: Maybe;\n owner?: Maybe;\n owner_not?: Maybe;\n owner_in?: Maybe>;\n owner_not_in?: Maybe>;\n owner_contains?: Maybe;\n owner_not_contains?: Maybe;\n amount0?: Maybe;\n amount0_not?: Maybe;\n amount0_gt?: Maybe;\n amount0_lt?: Maybe;\n amount0_gte?: Maybe;\n amount0_lte?: Maybe;\n amount0_in?: Maybe>;\n amount0_not_in?: Maybe>;\n amount1?: Maybe;\n amount1_not?: Maybe;\n amount1_gt?: Maybe;\n amount1_lt?: Maybe;\n amount1_gte?: Maybe;\n amount1_lte?: Maybe;\n amount1_in?: Maybe>;\n amount1_not_in?: Maybe>;\n amountUSD?: Maybe;\n amountUSD_not?: Maybe;\n amountUSD_gt?: Maybe;\n amountUSD_lt?: Maybe;\n amountUSD_gte?: Maybe;\n amountUSD_lte?: Maybe;\n amountUSD_in?: Maybe>;\n amountUSD_not_in?: Maybe>;\n tickLower?: Maybe;\n tickLower_not?: Maybe;\n tickLower_gt?: Maybe;\n tickLower_lt?: Maybe;\n tickLower_gte?: Maybe;\n tickLower_lte?: Maybe;\n tickLower_in?: Maybe>;\n tickLower_not_in?: Maybe>;\n tickUpper?: Maybe;\n tickUpper_not?: Maybe;\n tickUpper_gt?: Maybe;\n tickUpper_lt?: Maybe;\n tickUpper_gte?: Maybe;\n tickUpper_lte?: Maybe;\n tickUpper_in?: Maybe>;\n tickUpper_not_in?: Maybe>;\n logIndex?: Maybe;\n logIndex_not?: Maybe;\n logIndex_gt?: Maybe;\n logIndex_lt?: Maybe;\n logIndex_gte?: Maybe;\n logIndex_lte?: Maybe;\n logIndex_in?: Maybe>;\n logIndex_not_in?: Maybe>;\n};\n\nexport enum Collect_OrderBy {\n Id = 'id',\n Transaction = 'transaction',\n Timestamp = 'timestamp',\n Pool = 'pool',\n Owner = 'owner',\n Amount0 = 'amount0',\n Amount1 = 'amount1',\n AmountUsd = 'amountUSD',\n TickLower = 'tickLower',\n TickUpper = 'tickUpper',\n LogIndex = 'logIndex'\n}\n\nexport type Factory = {\n __typename?: 'Factory';\n id: Scalars['ID'];\n poolCount: Scalars['BigInt'];\n txCount: Scalars['BigInt'];\n totalVolumeUSD: Scalars['BigDecimal'];\n totalVolumeETH: Scalars['BigDecimal'];\n totalFeesUSD: Scalars['BigDecimal'];\n totalFeesETH: Scalars['BigDecimal'];\n untrackedVolumeUSD: Scalars['BigDecimal'];\n totalValueLockedUSD: Scalars['BigDecimal'];\n totalValueLockedETH: Scalars['BigDecimal'];\n totalValueLockedUSDUntracked: Scalars['BigDecimal'];\n totalValueLockedETHUntracked: Scalars['BigDecimal'];\n owner: Scalars['ID'];\n};\n\nexport type Factory_Filter = {\n id?: Maybe;\n id_not?: Maybe;\n id_gt?: Maybe;\n id_lt?: Maybe;\n id_gte?: Maybe;\n id_lte?: Maybe;\n id_in?: Maybe>;\n id_not_in?: Maybe>;\n poolCount?: Maybe;\n poolCount_not?: Maybe;\n poolCount_gt?: Maybe;\n poolCount_lt?: Maybe;\n poolCount_gte?: Maybe;\n poolCount_lte?: Maybe;\n poolCount_in?: Maybe>;\n poolCount_not_in?: Maybe>;\n txCount?: Maybe;\n txCount_not?: Maybe;\n txCount_gt?: Maybe;\n txCount_lt?: Maybe;\n txCount_gte?: Maybe;\n txCount_lte?: Maybe;\n txCount_in?: Maybe>;\n txCount_not_in?: Maybe>;\n totalVolumeUSD?: Maybe;\n totalVolumeUSD_not?: Maybe;\n totalVolumeUSD_gt?: Maybe;\n totalVolumeUSD_lt?: Maybe;\n totalVolumeUSD_gte?: Maybe;\n totalVolumeUSD_lte?: Maybe;\n totalVolumeUSD_in?: Maybe>;\n totalVolumeUSD_not_in?: Maybe>;\n totalVolumeETH?: Maybe;\n totalVolumeETH_not?: Maybe;\n totalVolumeETH_gt?: Maybe;\n totalVolumeETH_lt?: Maybe;\n totalVolumeETH_gte?: Maybe;\n totalVolumeETH_lte?: Maybe;\n totalVolumeETH_in?: Maybe>;\n totalVolumeETH_not_in?: Maybe>;\n totalFeesUSD?: Maybe;\n totalFeesUSD_not?: Maybe;\n totalFeesUSD_gt?: Maybe;\n totalFeesUSD_lt?: Maybe;\n totalFeesUSD_gte?: Maybe;\n totalFeesUSD_lte?: Maybe;\n totalFeesUSD_in?: Maybe>;\n totalFeesUSD_not_in?: Maybe>;\n totalFeesETH?: Maybe;\n totalFeesETH_not?: Maybe;\n totalFeesETH_gt?: Maybe;\n totalFeesETH_lt?: Maybe;\n totalFeesETH_gte?: Maybe;\n totalFeesETH_lte?: Maybe;\n totalFeesETH_in?: Maybe>;\n totalFeesETH_not_in?: Maybe>;\n untrackedVolumeUSD?: Maybe;\n untrackedVolumeUSD_not?: Maybe;\n untrackedVolumeUSD_gt?: Maybe;\n untrackedVolumeUSD_lt?: Maybe;\n untrackedVolumeUSD_gte?: Maybe;\n untrackedVolumeUSD_lte?: Maybe;\n untrackedVolumeUSD_in?: Maybe>;\n untrackedVolumeUSD_not_in?: Maybe>;\n totalValueLockedUSD?: Maybe;\n totalValueLockedUSD_not?: Maybe;\n totalValueLockedUSD_gt?: Maybe;\n totalValueLockedUSD_lt?: Maybe;\n totalValueLockedUSD_gte?: Maybe;\n totalValueLockedUSD_lte?: Maybe;\n totalValueLockedUSD_in?: Maybe>;\n totalValueLockedUSD_not_in?: Maybe>;\n totalValueLockedETH?: Maybe;\n totalValueLockedETH_not?: Maybe;\n totalValueLockedETH_gt?: Maybe;\n totalValueLockedETH_lt?: Maybe;\n totalValueLockedETH_gte?: Maybe;\n totalValueLockedETH_lte?: Maybe;\n totalValueLockedETH_in?: Maybe>;\n totalValueLockedETH_not_in?: Maybe>;\n totalValueLockedUSDUntracked?: Maybe;\n totalValueLockedUSDUntracked_not?: Maybe;\n totalValueLockedUSDUntracked_gt?: Maybe;\n totalValueLockedUSDUntracked_lt?: Maybe;\n totalValueLockedUSDUntracked_gte?: Maybe;\n totalValueLockedUSDUntracked_lte?: Maybe;\n totalValueLockedUSDUntracked_in?: Maybe>;\n totalValueLockedUSDUntracked_not_in?: Maybe>;\n totalValueLockedETHUntracked?: Maybe;\n totalValueLockedETHUntracked_not?: Maybe;\n totalValueLockedETHUntracked_gt?: Maybe;\n totalValueLockedETHUntracked_lt?: Maybe;\n totalValueLockedETHUntracked_gte?: Maybe;\n totalValueLockedETHUntracked_lte?: Maybe;\n totalValueLockedETHUntracked_in?: Maybe>;\n totalValueLockedETHUntracked_not_in?: Maybe>;\n owner?: Maybe;\n owner_not?: Maybe;\n owner_gt?: Maybe;\n owner_lt?: Maybe;\n owner_gte?: Maybe;\n owner_lte?: Maybe;\n owner_in?: Maybe>;\n owner_not_in?: Maybe>;\n};\n\nexport enum Factory_OrderBy {\n Id = 'id',\n PoolCount = 'poolCount',\n TxCount = 'txCount',\n TotalVolumeUsd = 'totalVolumeUSD',\n TotalVolumeEth = 'totalVolumeETH',\n TotalFeesUsd = 'totalFeesUSD',\n TotalFeesEth = 'totalFeesETH',\n UntrackedVolumeUsd = 'untrackedVolumeUSD',\n TotalValueLockedUsd = 'totalValueLockedUSD',\n TotalValueLockedEth = 'totalValueLockedETH',\n TotalValueLockedUsdUntracked = 'totalValueLockedUSDUntracked',\n TotalValueLockedEthUntracked = 'totalValueLockedETHUntracked',\n Owner = 'owner'\n}\n\nexport type Flash = {\n __typename?: 'Flash';\n id: Scalars['ID'];\n transaction: Transaction;\n timestamp: Scalars['BigInt'];\n pool: Pool;\n sender: Scalars['Bytes'];\n recipient: Scalars['Bytes'];\n amount0: Scalars['BigDecimal'];\n amount1: Scalars['BigDecimal'];\n amountUSD: Scalars['BigDecimal'];\n amount0Paid: Scalars['BigDecimal'];\n amount1Paid: Scalars['BigDecimal'];\n logIndex?: Maybe;\n};\n\nexport type Flash_Filter = {\n id?: Maybe;\n id_not?: Maybe;\n id_gt?: Maybe;\n id_lt?: Maybe;\n id_gte?: Maybe;\n id_lte?: Maybe;\n id_in?: Maybe>;\n id_not_in?: Maybe>;\n transaction?: Maybe;\n transaction_not?: Maybe;\n transaction_gt?: Maybe;\n transaction_lt?: Maybe;\n transaction_gte?: Maybe;\n transaction_lte?: Maybe;\n transaction_in?: Maybe>;\n transaction_not_in?: Maybe>;\n transaction_contains?: Maybe;\n transaction_not_contains?: Maybe;\n transaction_starts_with?: Maybe;\n transaction_not_starts_with?: Maybe;\n transaction_ends_with?: Maybe;\n transaction_not_ends_with?: Maybe;\n timestamp?: Maybe;\n timestamp_not?: Maybe;\n timestamp_gt?: Maybe;\n timestamp_lt?: Maybe;\n timestamp_gte?: Maybe;\n timestamp_lte?: Maybe;\n timestamp_in?: Maybe>;\n timestamp_not_in?: Maybe>;\n pool?: Maybe;\n pool_not?: Maybe;\n pool_gt?: Maybe;\n pool_lt?: Maybe;\n pool_gte?: Maybe;\n pool_lte?: Maybe;\n pool_in?: Maybe>;\n pool_not_in?: Maybe>;\n pool_contains?: Maybe;\n pool_not_contains?: Maybe;\n pool_starts_with?: Maybe;\n pool_not_starts_with?: Maybe;\n pool_ends_with?: Maybe;\n pool_not_ends_with?: Maybe;\n sender?: Maybe;\n sender_not?: Maybe;\n sender_in?: Maybe>;\n sender_not_in?: Maybe>;\n sender_contains?: Maybe;\n sender_not_contains?: Maybe;\n recipient?: Maybe;\n recipient_not?: Maybe;\n recipient_in?: Maybe>;\n recipient_not_in?: Maybe>;\n recipient_contains?: Maybe;\n recipient_not_contains?: Maybe;\n amount0?: Maybe;\n amount0_not?: Maybe;\n amount0_gt?: Maybe;\n amount0_lt?: Maybe;\n amount0_gte?: Maybe;\n amount0_lte?: Maybe;\n amount0_in?: Maybe>;\n amount0_not_in?: Maybe>;\n amount1?: Maybe;\n amount1_not?: Maybe;\n amount1_gt?: Maybe;\n amount1_lt?: Maybe;\n amount1_gte?: Maybe;\n amount1_lte?: Maybe;\n amount1_in?: Maybe>;\n amount1_not_in?: Maybe>;\n amountUSD?: Maybe;\n amountUSD_not?: Maybe;\n amountUSD_gt?: Maybe;\n amountUSD_lt?: Maybe;\n amountUSD_gte?: Maybe;\n amountUSD_lte?: Maybe;\n amountUSD_in?: Maybe>;\n amountUSD_not_in?: Maybe>;\n amount0Paid?: Maybe;\n amount0Paid_not?: Maybe;\n amount0Paid_gt?: Maybe;\n amount0Paid_lt?: Maybe;\n amount0Paid_gte?: Maybe;\n amount0Paid_lte?: Maybe;\n amount0Paid_in?: Maybe>;\n amount0Paid_not_in?: Maybe>;\n amount1Paid?: Maybe;\n amount1Paid_not?: Maybe;\n amount1Paid_gt?: Maybe;\n amount1Paid_lt?: Maybe;\n amount1Paid_gte?: Maybe;\n amount1Paid_lte?: Maybe;\n amount1Paid_in?: Maybe>;\n amount1Paid_not_in?: Maybe>;\n logIndex?: Maybe;\n logIndex_not?: Maybe;\n logIndex_gt?: Maybe;\n logIndex_lt?: Maybe;\n logIndex_gte?: Maybe;\n logIndex_lte?: Maybe;\n logIndex_in?: Maybe>;\n logIndex_not_in?: Maybe>;\n};\n\nexport enum Flash_OrderBy {\n Id = 'id',\n Transaction = 'transaction',\n Timestamp = 'timestamp',\n Pool = 'pool',\n Sender = 'sender',\n Recipient = 'recipient',\n Amount0 = 'amount0',\n Amount1 = 'amount1',\n AmountUsd = 'amountUSD',\n Amount0Paid = 'amount0Paid',\n Amount1Paid = 'amount1Paid',\n LogIndex = 'logIndex'\n}\n\nexport type Mint = {\n __typename?: 'Mint';\n id: Scalars['ID'];\n transaction: Transaction;\n timestamp: Scalars['BigInt'];\n pool: Pool;\n token0: Token;\n token1: Token;\n owner: Scalars['Bytes'];\n sender?: Maybe;\n origin: Scalars['Bytes'];\n amount: Scalars['BigInt'];\n amount0: Scalars['BigDecimal'];\n amount1: Scalars['BigDecimal'];\n amountUSD?: Maybe;\n tickLower: Scalars['BigInt'];\n tickUpper: Scalars['BigInt'];\n logIndex?: Maybe;\n};\n\nexport type Mint_Filter = {\n id?: Maybe;\n id_not?: Maybe;\n id_gt?: Maybe;\n id_lt?: Maybe;\n id_gte?: Maybe;\n id_lte?: Maybe;\n id_in?: Maybe>;\n id_not_in?: Maybe>;\n transaction?: Maybe;\n transaction_not?: Maybe;\n transaction_gt?: Maybe;\n transaction_lt?: Maybe;\n transaction_gte?: Maybe;\n transaction_lte?: Maybe;\n transaction_in?: Maybe>;\n transaction_not_in?: Maybe>;\n transaction_contains?: Maybe;\n transaction_not_contains?: Maybe;\n transaction_starts_with?: Maybe;\n transaction_not_starts_with?: Maybe;\n transaction_ends_with?: Maybe;\n transaction_not_ends_with?: Maybe;\n timestamp?: Maybe;\n timestamp_not?: Maybe;\n timestamp_gt?: Maybe;\n timestamp_lt?: Maybe;\n timestamp_gte?: Maybe;\n timestamp_lte?: Maybe;\n timestamp_in?: Maybe>;\n timestamp_not_in?: Maybe>;\n pool?: Maybe;\n pool_not?: Maybe;\n pool_gt?: Maybe;\n pool_lt?: Maybe;\n pool_gte?: Maybe;\n pool_lte?: Maybe;\n pool_in?: Maybe>;\n pool_not_in?: Maybe>;\n pool_contains?: Maybe;\n pool_not_contains?: Maybe;\n pool_starts_with?: Maybe;\n pool_not_starts_with?: Maybe;\n pool_ends_with?: Maybe;\n pool_not_ends_with?: Maybe;\n token0?: Maybe;\n token0_not?: Maybe;\n token0_gt?: Maybe;\n token0_lt?: Maybe;\n token0_gte?: Maybe;\n token0_lte?: Maybe;\n token0_in?: Maybe>;\n token0_not_in?: Maybe>;\n token0_contains?: Maybe;\n token0_not_contains?: Maybe;\n token0_starts_with?: Maybe;\n token0_not_starts_with?: Maybe;\n token0_ends_with?: Maybe;\n token0_not_ends_with?: Maybe;\n token1?: Maybe;\n token1_not?: Maybe;\n token1_gt?: Maybe;\n token1_lt?: Maybe;\n token1_gte?: Maybe;\n token1_lte?: Maybe;\n token1_in?: Maybe>;\n token1_not_in?: Maybe>;\n token1_contains?: Maybe;\n token1_not_contains?: Maybe;\n token1_starts_with?: Maybe;\n token1_not_starts_with?: Maybe;\n token1_ends_with?: Maybe;\n token1_not_ends_with?: Maybe;\n owner?: Maybe;\n owner_not?: Maybe;\n owner_in?: Maybe>;\n owner_not_in?: Maybe>;\n owner_contains?: Maybe;\n owner_not_contains?: Maybe;\n sender?: Maybe;\n sender_not?: Maybe;\n sender_in?: Maybe>;\n sender_not_in?: Maybe>;\n sender_contains?: Maybe;\n sender_not_contains?: Maybe;\n origin?: Maybe;\n origin_not?: Maybe;\n origin_in?: Maybe>;\n origin_not_in?: Maybe>;\n origin_contains?: Maybe;\n origin_not_contains?: Maybe;\n amount?: Maybe;\n amount_not?: Maybe;\n amount_gt?: Maybe;\n amount_lt?: Maybe;\n amount_gte?: Maybe;\n amount_lte?: Maybe;\n amount_in?: Maybe>;\n amount_not_in?: Maybe>;\n amount0?: Maybe;\n amount0_not?: Maybe;\n amount0_gt?: Maybe;\n amount0_lt?: Maybe;\n amount0_gte?: Maybe;\n amount0_lte?: Maybe;\n amount0_in?: Maybe>;\n amount0_not_in?: Maybe>;\n amount1?: Maybe;\n amount1_not?: Maybe;\n amount1_gt?: Maybe;\n amount1_lt?: Maybe;\n amount1_gte?: Maybe;\n amount1_lte?: Maybe;\n amount1_in?: Maybe>;\n amount1_not_in?: Maybe>;\n amountUSD?: Maybe;\n amountUSD_not?: Maybe;\n amountUSD_gt?: Maybe;\n amountUSD_lt?: Maybe;\n amountUSD_gte?: Maybe;\n amountUSD_lte?: Maybe;\n amountUSD_in?: Maybe>;\n amountUSD_not_in?: Maybe>;\n tickLower?: Maybe;\n tickLower_not?: Maybe;\n tickLower_gt?: Maybe;\n tickLower_lt?: Maybe;\n tickLower_gte?: Maybe;\n tickLower_lte?: Maybe;\n tickLower_in?: Maybe>;\n tickLower_not_in?: Maybe>;\n tickUpper?: Maybe;\n tickUpper_not?: Maybe;\n tickUpper_gt?: Maybe;\n tickUpper_lt?: Maybe;\n tickUpper_gte?: Maybe;\n tickUpper_lte?: Maybe;\n tickUpper_in?: Maybe>;\n tickUpper_not_in?: Maybe>;\n logIndex?: Maybe;\n logIndex_not?: Maybe;\n logIndex_gt?: Maybe;\n logIndex_lt?: Maybe;\n logIndex_gte?: Maybe;\n logIndex_lte?: Maybe;\n logIndex_in?: Maybe>;\n logIndex_not_in?: Maybe>;\n};\n\nexport enum Mint_OrderBy {\n Id = 'id',\n Transaction = 'transaction',\n Timestamp = 'timestamp',\n Pool = 'pool',\n Token0 = 'token0',\n Token1 = 'token1',\n Owner = 'owner',\n Sender = 'sender',\n Origin = 'origin',\n Amount = 'amount',\n Amount0 = 'amount0',\n Amount1 = 'amount1',\n AmountUsd = 'amountUSD',\n TickLower = 'tickLower',\n TickUpper = 'tickUpper',\n LogIndex = 'logIndex'\n}\n\nexport enum OrderDirection {\n Asc = 'asc',\n Desc = 'desc'\n}\n\nexport type Pool = {\n __typename?: 'Pool';\n id: Scalars['ID'];\n createdAtTimestamp: Scalars['BigInt'];\n createdAtBlockNumber: Scalars['BigInt'];\n token0: Token;\n token1: Token;\n feeTier: Scalars['BigInt'];\n liquidity: Scalars['BigInt'];\n sqrtPrice: Scalars['BigInt'];\n feeGrowthGlobal0X128: Scalars['BigInt'];\n feeGrowthGlobal1X128: Scalars['BigInt'];\n token0Price: Scalars['BigDecimal'];\n token1Price: Scalars['BigDecimal'];\n tick?: Maybe;\n observationIndex: Scalars['BigInt'];\n volumeToken0: Scalars['BigDecimal'];\n volumeToken1: Scalars['BigDecimal'];\n volumeUSD: Scalars['BigDecimal'];\n untrackedVolumeUSD: Scalars['BigDecimal'];\n feesUSD: Scalars['BigDecimal'];\n txCount: Scalars['BigInt'];\n collectedFeesToken0: Scalars['BigDecimal'];\n collectedFeesToken1: Scalars['BigDecimal'];\n collectedFeesUSD: Scalars['BigDecimal'];\n totalValueLockedToken0: Scalars['BigDecimal'];\n totalValueLockedToken1: Scalars['BigDecimal'];\n totalValueLockedETH: Scalars['BigDecimal'];\n totalValueLockedUSD: Scalars['BigDecimal'];\n totalValueLockedUSDUntracked: Scalars['BigDecimal'];\n liquidityProviderCount: Scalars['BigInt'];\n poolHourData: Array;\n poolDayData: Array;\n mints: Array;\n burns: Array;\n swaps: Array;\n collects: Array;\n ticks: Array;\n};\n\n\nexport type PoolPoolHourDataArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n};\n\n\nexport type PoolPoolDayDataArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n};\n\n\nexport type PoolMintsArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n};\n\n\nexport type PoolBurnsArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n};\n\n\nexport type PoolSwapsArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n};\n\n\nexport type PoolCollectsArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n};\n\n\nexport type PoolTicksArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n};\n\nexport type PoolDayData = {\n __typename?: 'PoolDayData';\n id: Scalars['ID'];\n date: Scalars['Int'];\n pool: Pool;\n liquidity: Scalars['BigInt'];\n sqrtPrice: Scalars['BigInt'];\n token0Price: Scalars['BigDecimal'];\n token1Price: Scalars['BigDecimal'];\n tick?: Maybe;\n feeGrowthGlobal0X128: Scalars['BigInt'];\n feeGrowthGlobal1X128: Scalars['BigInt'];\n tvlUSD: Scalars['BigDecimal'];\n volumeToken0: Scalars['BigDecimal'];\n volumeToken1: Scalars['BigDecimal'];\n volumeUSD: Scalars['BigDecimal'];\n feesUSD: Scalars['BigDecimal'];\n txCount: Scalars['BigInt'];\n open: Scalars['BigDecimal'];\n high: Scalars['BigDecimal'];\n low: Scalars['BigDecimal'];\n close: Scalars['BigDecimal'];\n};\n\nexport type PoolDayData_Filter = {\n id?: Maybe;\n id_not?: Maybe;\n id_gt?: Maybe;\n id_lt?: Maybe;\n id_gte?: Maybe;\n id_lte?: Maybe;\n id_in?: Maybe>;\n id_not_in?: Maybe>;\n date?: Maybe;\n date_not?: Maybe;\n date_gt?: Maybe;\n date_lt?: Maybe;\n date_gte?: Maybe;\n date_lte?: Maybe;\n date_in?: Maybe>;\n date_not_in?: Maybe>;\n pool?: Maybe;\n pool_not?: Maybe;\n pool_gt?: Maybe;\n pool_lt?: Maybe;\n pool_gte?: Maybe;\n pool_lte?: Maybe;\n pool_in?: Maybe>;\n pool_not_in?: Maybe>;\n pool_contains?: Maybe;\n pool_not_contains?: Maybe;\n pool_starts_with?: Maybe;\n pool_not_starts_with?: Maybe;\n pool_ends_with?: Maybe;\n pool_not_ends_with?: Maybe;\n liquidity?: Maybe;\n liquidity_not?: Maybe;\n liquidity_gt?: Maybe;\n liquidity_lt?: Maybe;\n liquidity_gte?: Maybe;\n liquidity_lte?: Maybe;\n liquidity_in?: Maybe>;\n liquidity_not_in?: Maybe>;\n sqrtPrice?: Maybe;\n sqrtPrice_not?: Maybe;\n sqrtPrice_gt?: Maybe;\n sqrtPrice_lt?: Maybe;\n sqrtPrice_gte?: Maybe;\n sqrtPrice_lte?: Maybe;\n sqrtPrice_in?: Maybe>;\n sqrtPrice_not_in?: Maybe>;\n token0Price?: Maybe;\n token0Price_not?: Maybe;\n token0Price_gt?: Maybe;\n token0Price_lt?: Maybe;\n token0Price_gte?: Maybe;\n token0Price_lte?: Maybe;\n token0Price_in?: Maybe>;\n token0Price_not_in?: Maybe>;\n token1Price?: Maybe;\n token1Price_not?: Maybe;\n token1Price_gt?: Maybe;\n token1Price_lt?: Maybe;\n token1Price_gte?: Maybe;\n token1Price_lte?: Maybe;\n token1Price_in?: Maybe>;\n token1Price_not_in?: Maybe>;\n tick?: Maybe;\n tick_not?: Maybe;\n tick_gt?: Maybe;\n tick_lt?: Maybe;\n tick_gte?: Maybe;\n tick_lte?: Maybe;\n tick_in?: Maybe>;\n tick_not_in?: Maybe>;\n feeGrowthGlobal0X128?: Maybe;\n feeGrowthGlobal0X128_not?: Maybe;\n feeGrowthGlobal0X128_gt?: Maybe;\n feeGrowthGlobal0X128_lt?: Maybe;\n feeGrowthGlobal0X128_gte?: Maybe;\n feeGrowthGlobal0X128_lte?: Maybe;\n feeGrowthGlobal0X128_in?: Maybe>;\n feeGrowthGlobal0X128_not_in?: Maybe>;\n feeGrowthGlobal1X128?: Maybe;\n feeGrowthGlobal1X128_not?: Maybe;\n feeGrowthGlobal1X128_gt?: Maybe;\n feeGrowthGlobal1X128_lt?: Maybe;\n feeGrowthGlobal1X128_gte?: Maybe;\n feeGrowthGlobal1X128_lte?: Maybe;\n feeGrowthGlobal1X128_in?: Maybe>;\n feeGrowthGlobal1X128_not_in?: Maybe>;\n tvlUSD?: Maybe;\n tvlUSD_not?: Maybe;\n tvlUSD_gt?: Maybe;\n tvlUSD_lt?: Maybe;\n tvlUSD_gte?: Maybe;\n tvlUSD_lte?: Maybe;\n tvlUSD_in?: Maybe>;\n tvlUSD_not_in?: Maybe>;\n volumeToken0?: Maybe;\n volumeToken0_not?: Maybe;\n volumeToken0_gt?: Maybe;\n volumeToken0_lt?: Maybe;\n volumeToken0_gte?: Maybe;\n volumeToken0_lte?: Maybe;\n volumeToken0_in?: Maybe>;\n volumeToken0_not_in?: Maybe>;\n volumeToken1?: Maybe;\n volumeToken1_not?: Maybe;\n volumeToken1_gt?: Maybe;\n volumeToken1_lt?: Maybe;\n volumeToken1_gte?: Maybe;\n volumeToken1_lte?: Maybe;\n volumeToken1_in?: Maybe>;\n volumeToken1_not_in?: Maybe>;\n volumeUSD?: Maybe;\n volumeUSD_not?: Maybe;\n volumeUSD_gt?: Maybe;\n volumeUSD_lt?: Maybe;\n volumeUSD_gte?: Maybe;\n volumeUSD_lte?: Maybe;\n volumeUSD_in?: Maybe>;\n volumeUSD_not_in?: Maybe>;\n feesUSD?: Maybe;\n feesUSD_not?: Maybe;\n feesUSD_gt?: Maybe;\n feesUSD_lt?: Maybe;\n feesUSD_gte?: Maybe;\n feesUSD_lte?: Maybe;\n feesUSD_in?: Maybe>;\n feesUSD_not_in?: Maybe>;\n txCount?: Maybe;\n txCount_not?: Maybe;\n txCount_gt?: Maybe;\n txCount_lt?: Maybe;\n txCount_gte?: Maybe;\n txCount_lte?: Maybe;\n txCount_in?: Maybe>;\n txCount_not_in?: Maybe>;\n open?: Maybe;\n open_not?: Maybe;\n open_gt?: Maybe;\n open_lt?: Maybe;\n open_gte?: Maybe;\n open_lte?: Maybe;\n open_in?: Maybe>;\n open_not_in?: Maybe>;\n high?: Maybe;\n high_not?: Maybe;\n high_gt?: Maybe;\n high_lt?: Maybe;\n high_gte?: Maybe;\n high_lte?: Maybe;\n high_in?: Maybe>;\n high_not_in?: Maybe>;\n low?: Maybe;\n low_not?: Maybe;\n low_gt?: Maybe;\n low_lt?: Maybe;\n low_gte?: Maybe;\n low_lte?: Maybe;\n low_in?: Maybe>;\n low_not_in?: Maybe>;\n close?: Maybe;\n close_not?: Maybe;\n close_gt?: Maybe;\n close_lt?: Maybe;\n close_gte?: Maybe;\n close_lte?: Maybe;\n close_in?: Maybe>;\n close_not_in?: Maybe>;\n};\n\nexport enum PoolDayData_OrderBy {\n Id = 'id',\n Date = 'date',\n Pool = 'pool',\n Liquidity = 'liquidity',\n SqrtPrice = 'sqrtPrice',\n Token0Price = 'token0Price',\n Token1Price = 'token1Price',\n Tick = 'tick',\n FeeGrowthGlobal0X128 = 'feeGrowthGlobal0X128',\n FeeGrowthGlobal1X128 = 'feeGrowthGlobal1X128',\n TvlUsd = 'tvlUSD',\n VolumeToken0 = 'volumeToken0',\n VolumeToken1 = 'volumeToken1',\n VolumeUsd = 'volumeUSD',\n FeesUsd = 'feesUSD',\n TxCount = 'txCount',\n Open = 'open',\n High = 'high',\n Low = 'low',\n Close = 'close'\n}\n\nexport type PoolHourData = {\n __typename?: 'PoolHourData';\n id: Scalars['ID'];\n periodStartUnix: Scalars['Int'];\n pool: Pool;\n liquidity: Scalars['BigInt'];\n sqrtPrice: Scalars['BigInt'];\n token0Price: Scalars['BigDecimal'];\n token1Price: Scalars['BigDecimal'];\n tick?: Maybe;\n feeGrowthGlobal0X128: Scalars['BigInt'];\n feeGrowthGlobal1X128: Scalars['BigInt'];\n tvlUSD: Scalars['BigDecimal'];\n volumeToken0: Scalars['BigDecimal'];\n volumeToken1: Scalars['BigDecimal'];\n volumeUSD: Scalars['BigDecimal'];\n feesUSD: Scalars['BigDecimal'];\n txCount: Scalars['BigInt'];\n open: Scalars['BigDecimal'];\n high: Scalars['BigDecimal'];\n low: Scalars['BigDecimal'];\n close: Scalars['BigDecimal'];\n};\n\nexport type PoolHourData_Filter = {\n id?: Maybe;\n id_not?: Maybe;\n id_gt?: Maybe;\n id_lt?: Maybe;\n id_gte?: Maybe;\n id_lte?: Maybe;\n id_in?: Maybe>;\n id_not_in?: Maybe>;\n periodStartUnix?: Maybe;\n periodStartUnix_not?: Maybe;\n periodStartUnix_gt?: Maybe;\n periodStartUnix_lt?: Maybe;\n periodStartUnix_gte?: Maybe;\n periodStartUnix_lte?: Maybe;\n periodStartUnix_in?: Maybe>;\n periodStartUnix_not_in?: Maybe>;\n pool?: Maybe;\n pool_not?: Maybe;\n pool_gt?: Maybe;\n pool_lt?: Maybe;\n pool_gte?: Maybe;\n pool_lte?: Maybe;\n pool_in?: Maybe>;\n pool_not_in?: Maybe>;\n pool_contains?: Maybe;\n pool_not_contains?: Maybe;\n pool_starts_with?: Maybe;\n pool_not_starts_with?: Maybe;\n pool_ends_with?: Maybe;\n pool_not_ends_with?: Maybe;\n liquidity?: Maybe;\n liquidity_not?: Maybe;\n liquidity_gt?: Maybe;\n liquidity_lt?: Maybe;\n liquidity_gte?: Maybe;\n liquidity_lte?: Maybe;\n liquidity_in?: Maybe>;\n liquidity_not_in?: Maybe>;\n sqrtPrice?: Maybe;\n sqrtPrice_not?: Maybe;\n sqrtPrice_gt?: Maybe;\n sqrtPrice_lt?: Maybe;\n sqrtPrice_gte?: Maybe;\n sqrtPrice_lte?: Maybe;\n sqrtPrice_in?: Maybe>;\n sqrtPrice_not_in?: Maybe>;\n token0Price?: Maybe;\n token0Price_not?: Maybe;\n token0Price_gt?: Maybe;\n token0Price_lt?: Maybe;\n token0Price_gte?: Maybe;\n token0Price_lte?: Maybe;\n token0Price_in?: Maybe>;\n token0Price_not_in?: Maybe>;\n token1Price?: Maybe;\n token1Price_not?: Maybe;\n token1Price_gt?: Maybe;\n token1Price_lt?: Maybe;\n token1Price_gte?: Maybe;\n token1Price_lte?: Maybe;\n token1Price_in?: Maybe>;\n token1Price_not_in?: Maybe>;\n tick?: Maybe;\n tick_not?: Maybe;\n tick_gt?: Maybe;\n tick_lt?: Maybe;\n tick_gte?: Maybe;\n tick_lte?: Maybe;\n tick_in?: Maybe>;\n tick_not_in?: Maybe>;\n feeGrowthGlobal0X128?: Maybe;\n feeGrowthGlobal0X128_not?: Maybe;\n feeGrowthGlobal0X128_gt?: Maybe;\n feeGrowthGlobal0X128_lt?: Maybe;\n feeGrowthGlobal0X128_gte?: Maybe;\n feeGrowthGlobal0X128_lte?: Maybe;\n feeGrowthGlobal0X128_in?: Maybe>;\n feeGrowthGlobal0X128_not_in?: Maybe>;\n feeGrowthGlobal1X128?: Maybe;\n feeGrowthGlobal1X128_not?: Maybe;\n feeGrowthGlobal1X128_gt?: Maybe;\n feeGrowthGlobal1X128_lt?: Maybe;\n feeGrowthGlobal1X128_gte?: Maybe;\n feeGrowthGlobal1X128_lte?: Maybe;\n feeGrowthGlobal1X128_in?: Maybe>;\n feeGrowthGlobal1X128_not_in?: Maybe>;\n tvlUSD?: Maybe;\n tvlUSD_not?: Maybe;\n tvlUSD_gt?: Maybe;\n tvlUSD_lt?: Maybe;\n tvlUSD_gte?: Maybe;\n tvlUSD_lte?: Maybe;\n tvlUSD_in?: Maybe>;\n tvlUSD_not_in?: Maybe>;\n volumeToken0?: Maybe;\n volumeToken0_not?: Maybe;\n volumeToken0_gt?: Maybe;\n volumeToken0_lt?: Maybe;\n volumeToken0_gte?: Maybe;\n volumeToken0_lte?: Maybe;\n volumeToken0_in?: Maybe>;\n volumeToken0_not_in?: Maybe>;\n volumeToken1?: Maybe;\n volumeToken1_not?: Maybe;\n volumeToken1_gt?: Maybe;\n volumeToken1_lt?: Maybe;\n volumeToken1_gte?: Maybe;\n volumeToken1_lte?: Maybe;\n volumeToken1_in?: Maybe>;\n volumeToken1_not_in?: Maybe>;\n volumeUSD?: Maybe;\n volumeUSD_not?: Maybe;\n volumeUSD_gt?: Maybe;\n volumeUSD_lt?: Maybe;\n volumeUSD_gte?: Maybe;\n volumeUSD_lte?: Maybe;\n volumeUSD_in?: Maybe>;\n volumeUSD_not_in?: Maybe>;\n feesUSD?: Maybe;\n feesUSD_not?: Maybe;\n feesUSD_gt?: Maybe;\n feesUSD_lt?: Maybe;\n feesUSD_gte?: Maybe;\n feesUSD_lte?: Maybe;\n feesUSD_in?: Maybe>;\n feesUSD_not_in?: Maybe>;\n txCount?: Maybe;\n txCount_not?: Maybe;\n txCount_gt?: Maybe;\n txCount_lt?: Maybe;\n txCount_gte?: Maybe;\n txCount_lte?: Maybe;\n txCount_in?: Maybe>;\n txCount_not_in?: Maybe>;\n open?: Maybe;\n open_not?: Maybe;\n open_gt?: Maybe;\n open_lt?: Maybe;\n open_gte?: Maybe;\n open_lte?: Maybe;\n open_in?: Maybe>;\n open_not_in?: Maybe>;\n high?: Maybe;\n high_not?: Maybe;\n high_gt?: Maybe;\n high_lt?: Maybe;\n high_gte?: Maybe;\n high_lte?: Maybe;\n high_in?: Maybe>;\n high_not_in?: Maybe>;\n low?: Maybe;\n low_not?: Maybe;\n low_gt?: Maybe;\n low_lt?: Maybe;\n low_gte?: Maybe;\n low_lte?: Maybe;\n low_in?: Maybe>;\n low_not_in?: Maybe>;\n close?: Maybe;\n close_not?: Maybe;\n close_gt?: Maybe;\n close_lt?: Maybe;\n close_gte?: Maybe;\n close_lte?: Maybe;\n close_in?: Maybe>;\n close_not_in?: Maybe>;\n};\n\nexport enum PoolHourData_OrderBy {\n Id = 'id',\n PeriodStartUnix = 'periodStartUnix',\n Pool = 'pool',\n Liquidity = 'liquidity',\n SqrtPrice = 'sqrtPrice',\n Token0Price = 'token0Price',\n Token1Price = 'token1Price',\n Tick = 'tick',\n FeeGrowthGlobal0X128 = 'feeGrowthGlobal0X128',\n FeeGrowthGlobal1X128 = 'feeGrowthGlobal1X128',\n TvlUsd = 'tvlUSD',\n VolumeToken0 = 'volumeToken0',\n VolumeToken1 = 'volumeToken1',\n VolumeUsd = 'volumeUSD',\n FeesUsd = 'feesUSD',\n TxCount = 'txCount',\n Open = 'open',\n High = 'high',\n Low = 'low',\n Close = 'close'\n}\n\nexport type Pool_Filter = {\n id?: Maybe;\n id_not?: Maybe;\n id_gt?: Maybe;\n id_lt?: Maybe;\n id_gte?: Maybe;\n id_lte?: Maybe;\n id_in?: Maybe>;\n id_not_in?: Maybe>;\n createdAtTimestamp?: Maybe;\n createdAtTimestamp_not?: Maybe;\n createdAtTimestamp_gt?: Maybe;\n createdAtTimestamp_lt?: Maybe;\n createdAtTimestamp_gte?: Maybe;\n createdAtTimestamp_lte?: Maybe;\n createdAtTimestamp_in?: Maybe>;\n createdAtTimestamp_not_in?: Maybe>;\n createdAtBlockNumber?: Maybe;\n createdAtBlockNumber_not?: Maybe;\n createdAtBlockNumber_gt?: Maybe;\n createdAtBlockNumber_lt?: Maybe;\n createdAtBlockNumber_gte?: Maybe;\n createdAtBlockNumber_lte?: Maybe;\n createdAtBlockNumber_in?: Maybe>;\n createdAtBlockNumber_not_in?: Maybe>;\n token0?: Maybe;\n token0_not?: Maybe;\n token0_gt?: Maybe;\n token0_lt?: Maybe;\n token0_gte?: Maybe;\n token0_lte?: Maybe;\n token0_in?: Maybe>;\n token0_not_in?: Maybe>;\n token0_contains?: Maybe;\n token0_not_contains?: Maybe;\n token0_starts_with?: Maybe;\n token0_not_starts_with?: Maybe;\n token0_ends_with?: Maybe;\n token0_not_ends_with?: Maybe;\n token1?: Maybe;\n token1_not?: Maybe;\n token1_gt?: Maybe;\n token1_lt?: Maybe;\n token1_gte?: Maybe;\n token1_lte?: Maybe;\n token1_in?: Maybe>;\n token1_not_in?: Maybe>;\n token1_contains?: Maybe;\n token1_not_contains?: Maybe;\n token1_starts_with?: Maybe;\n token1_not_starts_with?: Maybe;\n token1_ends_with?: Maybe;\n token1_not_ends_with?: Maybe;\n feeTier?: Maybe;\n feeTier_not?: Maybe;\n feeTier_gt?: Maybe;\n feeTier_lt?: Maybe;\n feeTier_gte?: Maybe;\n feeTier_lte?: Maybe;\n feeTier_in?: Maybe>;\n feeTier_not_in?: Maybe>;\n liquidity?: Maybe;\n liquidity_not?: Maybe;\n liquidity_gt?: Maybe;\n liquidity_lt?: Maybe;\n liquidity_gte?: Maybe;\n liquidity_lte?: Maybe;\n liquidity_in?: Maybe>;\n liquidity_not_in?: Maybe>;\n sqrtPrice?: Maybe;\n sqrtPrice_not?: Maybe;\n sqrtPrice_gt?: Maybe;\n sqrtPrice_lt?: Maybe;\n sqrtPrice_gte?: Maybe;\n sqrtPrice_lte?: Maybe;\n sqrtPrice_in?: Maybe>;\n sqrtPrice_not_in?: Maybe>;\n feeGrowthGlobal0X128?: Maybe;\n feeGrowthGlobal0X128_not?: Maybe;\n feeGrowthGlobal0X128_gt?: Maybe;\n feeGrowthGlobal0X128_lt?: Maybe;\n feeGrowthGlobal0X128_gte?: Maybe;\n feeGrowthGlobal0X128_lte?: Maybe;\n feeGrowthGlobal0X128_in?: Maybe>;\n feeGrowthGlobal0X128_not_in?: Maybe>;\n feeGrowthGlobal1X128?: Maybe;\n feeGrowthGlobal1X128_not?: Maybe;\n feeGrowthGlobal1X128_gt?: Maybe;\n feeGrowthGlobal1X128_lt?: Maybe;\n feeGrowthGlobal1X128_gte?: Maybe;\n feeGrowthGlobal1X128_lte?: Maybe;\n feeGrowthGlobal1X128_in?: Maybe>;\n feeGrowthGlobal1X128_not_in?: Maybe>;\n token0Price?: Maybe;\n token0Price_not?: Maybe;\n token0Price_gt?: Maybe;\n token0Price_lt?: Maybe;\n token0Price_gte?: Maybe;\n token0Price_lte?: Maybe;\n token0Price_in?: Maybe>;\n token0Price_not_in?: Maybe>;\n token1Price?: Maybe;\n token1Price_not?: Maybe;\n token1Price_gt?: Maybe;\n token1Price_lt?: Maybe;\n token1Price_gte?: Maybe;\n token1Price_lte?: Maybe;\n token1Price_in?: Maybe>;\n token1Price_not_in?: Maybe>;\n tick?: Maybe;\n tick_not?: Maybe;\n tick_gt?: Maybe;\n tick_lt?: Maybe;\n tick_gte?: Maybe;\n tick_lte?: Maybe;\n tick_in?: Maybe>;\n tick_not_in?: Maybe>;\n observationIndex?: Maybe;\n observationIndex_not?: Maybe;\n observationIndex_gt?: Maybe;\n observationIndex_lt?: Maybe;\n observationIndex_gte?: Maybe;\n observationIndex_lte?: Maybe;\n observationIndex_in?: Maybe>;\n observationIndex_not_in?: Maybe>;\n volumeToken0?: Maybe;\n volumeToken0_not?: Maybe;\n volumeToken0_gt?: Maybe;\n volumeToken0_lt?: Maybe;\n volumeToken0_gte?: Maybe;\n volumeToken0_lte?: Maybe;\n volumeToken0_in?: Maybe>;\n volumeToken0_not_in?: Maybe>;\n volumeToken1?: Maybe;\n volumeToken1_not?: Maybe;\n volumeToken1_gt?: Maybe;\n volumeToken1_lt?: Maybe;\n volumeToken1_gte?: Maybe;\n volumeToken1_lte?: Maybe;\n volumeToken1_in?: Maybe>;\n volumeToken1_not_in?: Maybe>;\n volumeUSD?: Maybe;\n volumeUSD_not?: Maybe;\n volumeUSD_gt?: Maybe;\n volumeUSD_lt?: Maybe;\n volumeUSD_gte?: Maybe;\n volumeUSD_lte?: Maybe;\n volumeUSD_in?: Maybe>;\n volumeUSD_not_in?: Maybe>;\n untrackedVolumeUSD?: Maybe;\n untrackedVolumeUSD_not?: Maybe;\n untrackedVolumeUSD_gt?: Maybe;\n untrackedVolumeUSD_lt?: Maybe;\n untrackedVolumeUSD_gte?: Maybe;\n untrackedVolumeUSD_lte?: Maybe;\n untrackedVolumeUSD_in?: Maybe>;\n untrackedVolumeUSD_not_in?: Maybe>;\n feesUSD?: Maybe;\n feesUSD_not?: Maybe;\n feesUSD_gt?: Maybe;\n feesUSD_lt?: Maybe;\n feesUSD_gte?: Maybe;\n feesUSD_lte?: Maybe;\n feesUSD_in?: Maybe>;\n feesUSD_not_in?: Maybe>;\n txCount?: Maybe;\n txCount_not?: Maybe;\n txCount_gt?: Maybe;\n txCount_lt?: Maybe;\n txCount_gte?: Maybe;\n txCount_lte?: Maybe;\n txCount_in?: Maybe>;\n txCount_not_in?: Maybe>;\n collectedFeesToken0?: Maybe;\n collectedFeesToken0_not?: Maybe;\n collectedFeesToken0_gt?: Maybe;\n collectedFeesToken0_lt?: Maybe;\n collectedFeesToken0_gte?: Maybe;\n collectedFeesToken0_lte?: Maybe;\n collectedFeesToken0_in?: Maybe>;\n collectedFeesToken0_not_in?: Maybe>;\n collectedFeesToken1?: Maybe;\n collectedFeesToken1_not?: Maybe;\n collectedFeesToken1_gt?: Maybe;\n collectedFeesToken1_lt?: Maybe;\n collectedFeesToken1_gte?: Maybe;\n collectedFeesToken1_lte?: Maybe;\n collectedFeesToken1_in?: Maybe>;\n collectedFeesToken1_not_in?: Maybe>;\n collectedFeesUSD?: Maybe;\n collectedFeesUSD_not?: Maybe;\n collectedFeesUSD_gt?: Maybe;\n collectedFeesUSD_lt?: Maybe;\n collectedFeesUSD_gte?: Maybe;\n collectedFeesUSD_lte?: Maybe;\n collectedFeesUSD_in?: Maybe>;\n collectedFeesUSD_not_in?: Maybe>;\n totalValueLockedToken0?: Maybe;\n totalValueLockedToken0_not?: Maybe;\n totalValueLockedToken0_gt?: Maybe;\n totalValueLockedToken0_lt?: Maybe;\n totalValueLockedToken0_gte?: Maybe;\n totalValueLockedToken0_lte?: Maybe;\n totalValueLockedToken0_in?: Maybe>;\n totalValueLockedToken0_not_in?: Maybe>;\n totalValueLockedToken1?: Maybe;\n totalValueLockedToken1_not?: Maybe;\n totalValueLockedToken1_gt?: Maybe;\n totalValueLockedToken1_lt?: Maybe;\n totalValueLockedToken1_gte?: Maybe;\n totalValueLockedToken1_lte?: Maybe;\n totalValueLockedToken1_in?: Maybe>;\n totalValueLockedToken1_not_in?: Maybe>;\n totalValueLockedETH?: Maybe;\n totalValueLockedETH_not?: Maybe;\n totalValueLockedETH_gt?: Maybe;\n totalValueLockedETH_lt?: Maybe;\n totalValueLockedETH_gte?: Maybe;\n totalValueLockedETH_lte?: Maybe;\n totalValueLockedETH_in?: Maybe>;\n totalValueLockedETH_not_in?: Maybe>;\n totalValueLockedUSD?: Maybe;\n totalValueLockedUSD_not?: Maybe;\n totalValueLockedUSD_gt?: Maybe;\n totalValueLockedUSD_lt?: Maybe;\n totalValueLockedUSD_gte?: Maybe;\n totalValueLockedUSD_lte?: Maybe;\n totalValueLockedUSD_in?: Maybe>;\n totalValueLockedUSD_not_in?: Maybe>;\n totalValueLockedUSDUntracked?: Maybe;\n totalValueLockedUSDUntracked_not?: Maybe;\n totalValueLockedUSDUntracked_gt?: Maybe;\n totalValueLockedUSDUntracked_lt?: Maybe;\n totalValueLockedUSDUntracked_gte?: Maybe;\n totalValueLockedUSDUntracked_lte?: Maybe;\n totalValueLockedUSDUntracked_in?: Maybe>;\n totalValueLockedUSDUntracked_not_in?: Maybe>;\n liquidityProviderCount?: Maybe;\n liquidityProviderCount_not?: Maybe;\n liquidityProviderCount_gt?: Maybe;\n liquidityProviderCount_lt?: Maybe;\n liquidityProviderCount_gte?: Maybe;\n liquidityProviderCount_lte?: Maybe;\n liquidityProviderCount_in?: Maybe>;\n liquidityProviderCount_not_in?: Maybe>;\n};\n\nexport enum Pool_OrderBy {\n Id = 'id',\n CreatedAtTimestamp = 'createdAtTimestamp',\n CreatedAtBlockNumber = 'createdAtBlockNumber',\n Token0 = 'token0',\n Token1 = 'token1',\n FeeTier = 'feeTier',\n Liquidity = 'liquidity',\n SqrtPrice = 'sqrtPrice',\n FeeGrowthGlobal0X128 = 'feeGrowthGlobal0X128',\n FeeGrowthGlobal1X128 = 'feeGrowthGlobal1X128',\n Token0Price = 'token0Price',\n Token1Price = 'token1Price',\n Tick = 'tick',\n ObservationIndex = 'observationIndex',\n VolumeToken0 = 'volumeToken0',\n VolumeToken1 = 'volumeToken1',\n VolumeUsd = 'volumeUSD',\n UntrackedVolumeUsd = 'untrackedVolumeUSD',\n FeesUsd = 'feesUSD',\n TxCount = 'txCount',\n CollectedFeesToken0 = 'collectedFeesToken0',\n CollectedFeesToken1 = 'collectedFeesToken1',\n CollectedFeesUsd = 'collectedFeesUSD',\n TotalValueLockedToken0 = 'totalValueLockedToken0',\n TotalValueLockedToken1 = 'totalValueLockedToken1',\n TotalValueLockedEth = 'totalValueLockedETH',\n TotalValueLockedUsd = 'totalValueLockedUSD',\n TotalValueLockedUsdUntracked = 'totalValueLockedUSDUntracked',\n LiquidityProviderCount = 'liquidityProviderCount',\n PoolHourData = 'poolHourData',\n PoolDayData = 'poolDayData',\n Mints = 'mints',\n Burns = 'burns',\n Swaps = 'swaps',\n Collects = 'collects',\n Ticks = 'ticks'\n}\n\nexport type Position = {\n __typename?: 'Position';\n id: Scalars['ID'];\n owner: Scalars['Bytes'];\n pool: Pool;\n token0: Token;\n token1: Token;\n tickLower: Tick;\n tickUpper: Tick;\n liquidity: Scalars['BigInt'];\n depositedToken0: Scalars['BigDecimal'];\n depositedToken1: Scalars['BigDecimal'];\n withdrawnToken0: Scalars['BigDecimal'];\n withdrawnToken1: Scalars['BigDecimal'];\n collectedFeesToken0: Scalars['BigDecimal'];\n collectedFeesToken1: Scalars['BigDecimal'];\n transaction: Transaction;\n feeGrowthInside0LastX128: Scalars['BigInt'];\n feeGrowthInside1LastX128: Scalars['BigInt'];\n};\n\nexport type PositionSnapshot = {\n __typename?: 'PositionSnapshot';\n id: Scalars['ID'];\n owner: Scalars['Bytes'];\n pool: Pool;\n position: Position;\n blockNumber: Scalars['BigInt'];\n timestamp: Scalars['BigInt'];\n liquidity: Scalars['BigInt'];\n depositedToken0: Scalars['BigDecimal'];\n depositedToken1: Scalars['BigDecimal'];\n withdrawnToken0: Scalars['BigDecimal'];\n withdrawnToken1: Scalars['BigDecimal'];\n collectedFeesToken0: Scalars['BigDecimal'];\n collectedFeesToken1: Scalars['BigDecimal'];\n transaction: Transaction;\n feeGrowthInside0LastX128: Scalars['BigInt'];\n feeGrowthInside1LastX128: Scalars['BigInt'];\n};\n\nexport type PositionSnapshot_Filter = {\n id?: Maybe;\n id_not?: Maybe;\n id_gt?: Maybe;\n id_lt?: Maybe;\n id_gte?: Maybe;\n id_lte?: Maybe;\n id_in?: Maybe>;\n id_not_in?: Maybe>;\n owner?: Maybe;\n owner_not?: Maybe;\n owner_in?: Maybe>;\n owner_not_in?: Maybe>;\n owner_contains?: Maybe;\n owner_not_contains?: Maybe;\n pool?: Maybe;\n pool_not?: Maybe;\n pool_gt?: Maybe;\n pool_lt?: Maybe;\n pool_gte?: Maybe;\n pool_lte?: Maybe;\n pool_in?: Maybe>;\n pool_not_in?: Maybe>;\n pool_contains?: Maybe;\n pool_not_contains?: Maybe;\n pool_starts_with?: Maybe;\n pool_not_starts_with?: Maybe;\n pool_ends_with?: Maybe;\n pool_not_ends_with?: Maybe;\n position?: Maybe;\n position_not?: Maybe;\n position_gt?: Maybe;\n position_lt?: Maybe;\n position_gte?: Maybe;\n position_lte?: Maybe;\n position_in?: Maybe>;\n position_not_in?: Maybe>;\n position_contains?: Maybe;\n position_not_contains?: Maybe;\n position_starts_with?: Maybe;\n position_not_starts_with?: Maybe;\n position_ends_with?: Maybe;\n position_not_ends_with?: Maybe;\n blockNumber?: Maybe;\n blockNumber_not?: Maybe;\n blockNumber_gt?: Maybe;\n blockNumber_lt?: Maybe;\n blockNumber_gte?: Maybe;\n blockNumber_lte?: Maybe;\n blockNumber_in?: Maybe>;\n blockNumber_not_in?: Maybe>;\n timestamp?: Maybe;\n timestamp_not?: Maybe;\n timestamp_gt?: Maybe;\n timestamp_lt?: Maybe;\n timestamp_gte?: Maybe;\n timestamp_lte?: Maybe;\n timestamp_in?: Maybe>;\n timestamp_not_in?: Maybe>;\n liquidity?: Maybe;\n liquidity_not?: Maybe;\n liquidity_gt?: Maybe;\n liquidity_lt?: Maybe;\n liquidity_gte?: Maybe;\n liquidity_lte?: Maybe;\n liquidity_in?: Maybe>;\n liquidity_not_in?: Maybe>;\n depositedToken0?: Maybe;\n depositedToken0_not?: Maybe;\n depositedToken0_gt?: Maybe;\n depositedToken0_lt?: Maybe;\n depositedToken0_gte?: Maybe;\n depositedToken0_lte?: Maybe;\n depositedToken0_in?: Maybe>;\n depositedToken0_not_in?: Maybe>;\n depositedToken1?: Maybe;\n depositedToken1_not?: Maybe;\n depositedToken1_gt?: Maybe;\n depositedToken1_lt?: Maybe;\n depositedToken1_gte?: Maybe;\n depositedToken1_lte?: Maybe;\n depositedToken1_in?: Maybe>;\n depositedToken1_not_in?: Maybe>;\n withdrawnToken0?: Maybe;\n withdrawnToken0_not?: Maybe;\n withdrawnToken0_gt?: Maybe;\n withdrawnToken0_lt?: Maybe;\n withdrawnToken0_gte?: Maybe;\n withdrawnToken0_lte?: Maybe;\n withdrawnToken0_in?: Maybe>;\n withdrawnToken0_not_in?: Maybe>;\n withdrawnToken1?: Maybe;\n withdrawnToken1_not?: Maybe;\n withdrawnToken1_gt?: Maybe;\n withdrawnToken1_lt?: Maybe;\n withdrawnToken1_gte?: Maybe;\n withdrawnToken1_lte?: Maybe;\n withdrawnToken1_in?: Maybe>;\n withdrawnToken1_not_in?: Maybe>;\n collectedFeesToken0?: Maybe;\n collectedFeesToken0_not?: Maybe;\n collectedFeesToken0_gt?: Maybe;\n collectedFeesToken0_lt?: Maybe;\n collectedFeesToken0_gte?: Maybe;\n collectedFeesToken0_lte?: Maybe;\n collectedFeesToken0_in?: Maybe>;\n collectedFeesToken0_not_in?: Maybe>;\n collectedFeesToken1?: Maybe;\n collectedFeesToken1_not?: Maybe;\n collectedFeesToken1_gt?: Maybe;\n collectedFeesToken1_lt?: Maybe;\n collectedFeesToken1_gte?: Maybe;\n collectedFeesToken1_lte?: Maybe;\n collectedFeesToken1_in?: Maybe>;\n collectedFeesToken1_not_in?: Maybe>;\n transaction?: Maybe;\n transaction_not?: Maybe;\n transaction_gt?: Maybe;\n transaction_lt?: Maybe;\n transaction_gte?: Maybe;\n transaction_lte?: Maybe;\n transaction_in?: Maybe>;\n transaction_not_in?: Maybe>;\n transaction_contains?: Maybe;\n transaction_not_contains?: Maybe;\n transaction_starts_with?: Maybe;\n transaction_not_starts_with?: Maybe;\n transaction_ends_with?: Maybe;\n transaction_not_ends_with?: Maybe;\n feeGrowthInside0LastX128?: Maybe;\n feeGrowthInside0LastX128_not?: Maybe;\n feeGrowthInside0LastX128_gt?: Maybe;\n feeGrowthInside0LastX128_lt?: Maybe;\n feeGrowthInside0LastX128_gte?: Maybe;\n feeGrowthInside0LastX128_lte?: Maybe;\n feeGrowthInside0LastX128_in?: Maybe>;\n feeGrowthInside0LastX128_not_in?: Maybe>;\n feeGrowthInside1LastX128?: Maybe;\n feeGrowthInside1LastX128_not?: Maybe;\n feeGrowthInside1LastX128_gt?: Maybe;\n feeGrowthInside1LastX128_lt?: Maybe;\n feeGrowthInside1LastX128_gte?: Maybe;\n feeGrowthInside1LastX128_lte?: Maybe;\n feeGrowthInside1LastX128_in?: Maybe>;\n feeGrowthInside1LastX128_not_in?: Maybe>;\n};\n\nexport enum PositionSnapshot_OrderBy {\n Id = 'id',\n Owner = 'owner',\n Pool = 'pool',\n Position = 'position',\n BlockNumber = 'blockNumber',\n Timestamp = 'timestamp',\n Liquidity = 'liquidity',\n DepositedToken0 = 'depositedToken0',\n DepositedToken1 = 'depositedToken1',\n WithdrawnToken0 = 'withdrawnToken0',\n WithdrawnToken1 = 'withdrawnToken1',\n CollectedFeesToken0 = 'collectedFeesToken0',\n CollectedFeesToken1 = 'collectedFeesToken1',\n Transaction = 'transaction',\n FeeGrowthInside0LastX128 = 'feeGrowthInside0LastX128',\n FeeGrowthInside1LastX128 = 'feeGrowthInside1LastX128'\n}\n\nexport type Position_Filter = {\n id?: Maybe;\n id_not?: Maybe;\n id_gt?: Maybe;\n id_lt?: Maybe;\n id_gte?: Maybe;\n id_lte?: Maybe;\n id_in?: Maybe>;\n id_not_in?: Maybe>;\n owner?: Maybe;\n owner_not?: Maybe;\n owner_in?: Maybe>;\n owner_not_in?: Maybe>;\n owner_contains?: Maybe;\n owner_not_contains?: Maybe;\n pool?: Maybe;\n pool_not?: Maybe;\n pool_gt?: Maybe;\n pool_lt?: Maybe;\n pool_gte?: Maybe;\n pool_lte?: Maybe;\n pool_in?: Maybe>;\n pool_not_in?: Maybe>;\n pool_contains?: Maybe;\n pool_not_contains?: Maybe;\n pool_starts_with?: Maybe;\n pool_not_starts_with?: Maybe;\n pool_ends_with?: Maybe;\n pool_not_ends_with?: Maybe;\n token0?: Maybe;\n token0_not?: Maybe;\n token0_gt?: Maybe;\n token0_lt?: Maybe;\n token0_gte?: Maybe;\n token0_lte?: Maybe;\n token0_in?: Maybe>;\n token0_not_in?: Maybe>;\n token0_contains?: Maybe;\n token0_not_contains?: Maybe;\n token0_starts_with?: Maybe;\n token0_not_starts_with?: Maybe;\n token0_ends_with?: Maybe;\n token0_not_ends_with?: Maybe;\n token1?: Maybe;\n token1_not?: Maybe;\n token1_gt?: Maybe;\n token1_lt?: Maybe;\n token1_gte?: Maybe;\n token1_lte?: Maybe;\n token1_in?: Maybe>;\n token1_not_in?: Maybe>;\n token1_contains?: Maybe;\n token1_not_contains?: Maybe;\n token1_starts_with?: Maybe;\n token1_not_starts_with?: Maybe;\n token1_ends_with?: Maybe;\n token1_not_ends_with?: Maybe;\n tickLower?: Maybe;\n tickLower_not?: Maybe;\n tickLower_gt?: Maybe;\n tickLower_lt?: Maybe;\n tickLower_gte?: Maybe;\n tickLower_lte?: Maybe;\n tickLower_in?: Maybe>;\n tickLower_not_in?: Maybe>;\n tickLower_contains?: Maybe;\n tickLower_not_contains?: Maybe;\n tickLower_starts_with?: Maybe;\n tickLower_not_starts_with?: Maybe;\n tickLower_ends_with?: Maybe;\n tickLower_not_ends_with?: Maybe;\n tickUpper?: Maybe;\n tickUpper_not?: Maybe;\n tickUpper_gt?: Maybe;\n tickUpper_lt?: Maybe;\n tickUpper_gte?: Maybe;\n tickUpper_lte?: Maybe;\n tickUpper_in?: Maybe>;\n tickUpper_not_in?: Maybe>;\n tickUpper_contains?: Maybe;\n tickUpper_not_contains?: Maybe;\n tickUpper_starts_with?: Maybe;\n tickUpper_not_starts_with?: Maybe;\n tickUpper_ends_with?: Maybe;\n tickUpper_not_ends_with?: Maybe;\n liquidity?: Maybe;\n liquidity_not?: Maybe;\n liquidity_gt?: Maybe;\n liquidity_lt?: Maybe;\n liquidity_gte?: Maybe;\n liquidity_lte?: Maybe;\n liquidity_in?: Maybe>;\n liquidity_not_in?: Maybe>;\n depositedToken0?: Maybe;\n depositedToken0_not?: Maybe;\n depositedToken0_gt?: Maybe;\n depositedToken0_lt?: Maybe;\n depositedToken0_gte?: Maybe;\n depositedToken0_lte?: Maybe;\n depositedToken0_in?: Maybe>;\n depositedToken0_not_in?: Maybe>;\n depositedToken1?: Maybe;\n depositedToken1_not?: Maybe;\n depositedToken1_gt?: Maybe;\n depositedToken1_lt?: Maybe;\n depositedToken1_gte?: Maybe;\n depositedToken1_lte?: Maybe;\n depositedToken1_in?: Maybe>;\n depositedToken1_not_in?: Maybe>;\n withdrawnToken0?: Maybe;\n withdrawnToken0_not?: Maybe;\n withdrawnToken0_gt?: Maybe;\n withdrawnToken0_lt?: Maybe;\n withdrawnToken0_gte?: Maybe;\n withdrawnToken0_lte?: Maybe;\n withdrawnToken0_in?: Maybe>;\n withdrawnToken0_not_in?: Maybe>;\n withdrawnToken1?: Maybe;\n withdrawnToken1_not?: Maybe;\n withdrawnToken1_gt?: Maybe;\n withdrawnToken1_lt?: Maybe;\n withdrawnToken1_gte?: Maybe;\n withdrawnToken1_lte?: Maybe;\n withdrawnToken1_in?: Maybe>;\n withdrawnToken1_not_in?: Maybe>;\n collectedFeesToken0?: Maybe;\n collectedFeesToken0_not?: Maybe;\n collectedFeesToken0_gt?: Maybe;\n collectedFeesToken0_lt?: Maybe;\n collectedFeesToken0_gte?: Maybe;\n collectedFeesToken0_lte?: Maybe;\n collectedFeesToken0_in?: Maybe>;\n collectedFeesToken0_not_in?: Maybe>;\n collectedFeesToken1?: Maybe;\n collectedFeesToken1_not?: Maybe;\n collectedFeesToken1_gt?: Maybe;\n collectedFeesToken1_lt?: Maybe;\n collectedFeesToken1_gte?: Maybe;\n collectedFeesToken1_lte?: Maybe;\n collectedFeesToken1_in?: Maybe>;\n collectedFeesToken1_not_in?: Maybe>;\n transaction?: Maybe;\n transaction_not?: Maybe;\n transaction_gt?: Maybe;\n transaction_lt?: Maybe;\n transaction_gte?: Maybe;\n transaction_lte?: Maybe;\n transaction_in?: Maybe>;\n transaction_not_in?: Maybe>;\n transaction_contains?: Maybe;\n transaction_not_contains?: Maybe;\n transaction_starts_with?: Maybe;\n transaction_not_starts_with?: Maybe;\n transaction_ends_with?: Maybe;\n transaction_not_ends_with?: Maybe;\n feeGrowthInside0LastX128?: Maybe;\n feeGrowthInside0LastX128_not?: Maybe;\n feeGrowthInside0LastX128_gt?: Maybe;\n feeGrowthInside0LastX128_lt?: Maybe;\n feeGrowthInside0LastX128_gte?: Maybe;\n feeGrowthInside0LastX128_lte?: Maybe;\n feeGrowthInside0LastX128_in?: Maybe>;\n feeGrowthInside0LastX128_not_in?: Maybe>;\n feeGrowthInside1LastX128?: Maybe;\n feeGrowthInside1LastX128_not?: Maybe;\n feeGrowthInside1LastX128_gt?: Maybe;\n feeGrowthInside1LastX128_lt?: Maybe;\n feeGrowthInside1LastX128_gte?: Maybe;\n feeGrowthInside1LastX128_lte?: Maybe;\n feeGrowthInside1LastX128_in?: Maybe>;\n feeGrowthInside1LastX128_not_in?: Maybe>;\n};\n\nexport enum Position_OrderBy {\n Id = 'id',\n Owner = 'owner',\n Pool = 'pool',\n Token0 = 'token0',\n Token1 = 'token1',\n TickLower = 'tickLower',\n TickUpper = 'tickUpper',\n Liquidity = 'liquidity',\n DepositedToken0 = 'depositedToken0',\n DepositedToken1 = 'depositedToken1',\n WithdrawnToken0 = 'withdrawnToken0',\n WithdrawnToken1 = 'withdrawnToken1',\n CollectedFeesToken0 = 'collectedFeesToken0',\n CollectedFeesToken1 = 'collectedFeesToken1',\n Transaction = 'transaction',\n FeeGrowthInside0LastX128 = 'feeGrowthInside0LastX128',\n FeeGrowthInside1LastX128 = 'feeGrowthInside1LastX128'\n}\n\nexport type Query = {\n __typename?: 'Query';\n factory?: Maybe;\n factories: Array;\n bundle?: Maybe;\n bundles: Array;\n token?: Maybe;\n tokens: Array;\n pool?: Maybe;\n pools: Array;\n tick?: Maybe;\n ticks: Array;\n position?: Maybe;\n positions: Array;\n positionSnapshot?: Maybe;\n positionSnapshots: Array;\n transaction?: Maybe;\n transactions: Array;\n mint?: Maybe;\n mints: Array;\n burn?: Maybe;\n burns: Array;\n swap?: Maybe;\n swaps: Array;\n collect?: Maybe;\n collects: Array;\n flash?: Maybe;\n flashes: Array;\n uniswapDayData?: Maybe;\n uniswapDayDatas: Array;\n poolDayData?: Maybe;\n poolDayDatas: Array;\n poolHourData?: Maybe;\n poolHourDatas: Array;\n tickHourData?: Maybe;\n tickHourDatas: Array;\n tickDayData?: Maybe;\n tickDayDatas: Array;\n tokenDayData?: Maybe;\n tokenDayDatas: Array;\n tokenHourData?: Maybe;\n tokenHourDatas: Array;\n /** Access to subgraph metadata */\n _meta?: Maybe<_Meta_>;\n};\n\n\nexport type QueryFactoryArgs = {\n id: Scalars['ID'];\n block?: Maybe;\n};\n\n\nexport type QueryFactoriesArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n block?: Maybe;\n};\n\n\nexport type QueryBundleArgs = {\n id: Scalars['ID'];\n block?: Maybe;\n};\n\n\nexport type QueryBundlesArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n block?: Maybe;\n};\n\n\nexport type QueryTokenArgs = {\n id: Scalars['ID'];\n block?: Maybe;\n};\n\n\nexport type QueryTokensArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n block?: Maybe;\n};\n\n\nexport type QueryPoolArgs = {\n id: Scalars['ID'];\n block?: Maybe;\n};\n\n\nexport type QueryPoolsArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n block?: Maybe;\n};\n\n\nexport type QueryTickArgs = {\n id: Scalars['ID'];\n block?: Maybe;\n};\n\n\nexport type QueryTicksArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n block?: Maybe;\n};\n\n\nexport type QueryPositionArgs = {\n id: Scalars['ID'];\n block?: Maybe;\n};\n\n\nexport type QueryPositionsArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n block?: Maybe;\n};\n\n\nexport type QueryPositionSnapshotArgs = {\n id: Scalars['ID'];\n block?: Maybe;\n};\n\n\nexport type QueryPositionSnapshotsArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n block?: Maybe;\n};\n\n\nexport type QueryTransactionArgs = {\n id: Scalars['ID'];\n block?: Maybe;\n};\n\n\nexport type QueryTransactionsArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n block?: Maybe;\n};\n\n\nexport type QueryMintArgs = {\n id: Scalars['ID'];\n block?: Maybe;\n};\n\n\nexport type QueryMintsArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n block?: Maybe;\n};\n\n\nexport type QueryBurnArgs = {\n id: Scalars['ID'];\n block?: Maybe;\n};\n\n\nexport type QueryBurnsArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n block?: Maybe;\n};\n\n\nexport type QuerySwapArgs = {\n id: Scalars['ID'];\n block?: Maybe;\n};\n\n\nexport type QuerySwapsArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n block?: Maybe;\n};\n\n\nexport type QueryCollectArgs = {\n id: Scalars['ID'];\n block?: Maybe;\n};\n\n\nexport type QueryCollectsArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n block?: Maybe;\n};\n\n\nexport type QueryFlashArgs = {\n id: Scalars['ID'];\n block?: Maybe;\n};\n\n\nexport type QueryFlashesArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n block?: Maybe;\n};\n\n\nexport type QueryUniswapDayDataArgs = {\n id: Scalars['ID'];\n block?: Maybe;\n};\n\n\nexport type QueryUniswapDayDatasArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n block?: Maybe;\n};\n\n\nexport type QueryPoolDayDataArgs = {\n id: Scalars['ID'];\n block?: Maybe;\n};\n\n\nexport type QueryPoolDayDatasArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n block?: Maybe;\n};\n\n\nexport type QueryPoolHourDataArgs = {\n id: Scalars['ID'];\n block?: Maybe;\n};\n\n\nexport type QueryPoolHourDatasArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n block?: Maybe;\n};\n\n\nexport type QueryTickHourDataArgs = {\n id: Scalars['ID'];\n block?: Maybe;\n};\n\n\nexport type QueryTickHourDatasArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n block?: Maybe;\n};\n\n\nexport type QueryTickDayDataArgs = {\n id: Scalars['ID'];\n block?: Maybe;\n};\n\n\nexport type QueryTickDayDatasArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n block?: Maybe;\n};\n\n\nexport type QueryTokenDayDataArgs = {\n id: Scalars['ID'];\n block?: Maybe;\n};\n\n\nexport type QueryTokenDayDatasArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n block?: Maybe;\n};\n\n\nexport type QueryTokenHourDataArgs = {\n id: Scalars['ID'];\n block?: Maybe;\n};\n\n\nexport type QueryTokenHourDatasArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n block?: Maybe;\n};\n\n\nexport type Query_MetaArgs = {\n block?: Maybe;\n};\n\nexport type Subscription = {\n __typename?: 'Subscription';\n factory?: Maybe;\n factories: Array;\n bundle?: Maybe;\n bundles: Array;\n token?: Maybe;\n tokens: Array;\n pool?: Maybe;\n pools: Array;\n tick?: Maybe;\n ticks: Array;\n position?: Maybe;\n positions: Array;\n positionSnapshot?: Maybe;\n positionSnapshots: Array;\n transaction?: Maybe;\n transactions: Array;\n mint?: Maybe;\n mints: Array;\n burn?: Maybe;\n burns: Array;\n swap?: Maybe;\n swaps: Array;\n collect?: Maybe;\n collects: Array;\n flash?: Maybe;\n flashes: Array;\n uniswapDayData?: Maybe;\n uniswapDayDatas: Array;\n poolDayData?: Maybe;\n poolDayDatas: Array;\n poolHourData?: Maybe;\n poolHourDatas: Array;\n tickHourData?: Maybe;\n tickHourDatas: Array;\n tickDayData?: Maybe;\n tickDayDatas: Array;\n tokenDayData?: Maybe;\n tokenDayDatas: Array;\n tokenHourData?: Maybe;\n tokenHourDatas: Array;\n /** Access to subgraph metadata */\n _meta?: Maybe<_Meta_>;\n};\n\n\nexport type SubscriptionFactoryArgs = {\n id: Scalars['ID'];\n block?: Maybe;\n};\n\n\nexport type SubscriptionFactoriesArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n block?: Maybe;\n};\n\n\nexport type SubscriptionBundleArgs = {\n id: Scalars['ID'];\n block?: Maybe;\n};\n\n\nexport type SubscriptionBundlesArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n block?: Maybe;\n};\n\n\nexport type SubscriptionTokenArgs = {\n id: Scalars['ID'];\n block?: Maybe;\n};\n\n\nexport type SubscriptionTokensArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n block?: Maybe;\n};\n\n\nexport type SubscriptionPoolArgs = {\n id: Scalars['ID'];\n block?: Maybe;\n};\n\n\nexport type SubscriptionPoolsArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n block?: Maybe;\n};\n\n\nexport type SubscriptionTickArgs = {\n id: Scalars['ID'];\n block?: Maybe;\n};\n\n\nexport type SubscriptionTicksArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n block?: Maybe;\n};\n\n\nexport type SubscriptionPositionArgs = {\n id: Scalars['ID'];\n block?: Maybe;\n};\n\n\nexport type SubscriptionPositionsArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n block?: Maybe;\n};\n\n\nexport type SubscriptionPositionSnapshotArgs = {\n id: Scalars['ID'];\n block?: Maybe;\n};\n\n\nexport type SubscriptionPositionSnapshotsArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n block?: Maybe;\n};\n\n\nexport type SubscriptionTransactionArgs = {\n id: Scalars['ID'];\n block?: Maybe;\n};\n\n\nexport type SubscriptionTransactionsArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n block?: Maybe;\n};\n\n\nexport type SubscriptionMintArgs = {\n id: Scalars['ID'];\n block?: Maybe;\n};\n\n\nexport type SubscriptionMintsArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n block?: Maybe;\n};\n\n\nexport type SubscriptionBurnArgs = {\n id: Scalars['ID'];\n block?: Maybe;\n};\n\n\nexport type SubscriptionBurnsArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n block?: Maybe;\n};\n\n\nexport type SubscriptionSwapArgs = {\n id: Scalars['ID'];\n block?: Maybe;\n};\n\n\nexport type SubscriptionSwapsArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n block?: Maybe;\n};\n\n\nexport type SubscriptionCollectArgs = {\n id: Scalars['ID'];\n block?: Maybe;\n};\n\n\nexport type SubscriptionCollectsArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n block?: Maybe;\n};\n\n\nexport type SubscriptionFlashArgs = {\n id: Scalars['ID'];\n block?: Maybe;\n};\n\n\nexport type SubscriptionFlashesArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n block?: Maybe;\n};\n\n\nexport type SubscriptionUniswapDayDataArgs = {\n id: Scalars['ID'];\n block?: Maybe;\n};\n\n\nexport type SubscriptionUniswapDayDatasArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n block?: Maybe;\n};\n\n\nexport type SubscriptionPoolDayDataArgs = {\n id: Scalars['ID'];\n block?: Maybe;\n};\n\n\nexport type SubscriptionPoolDayDatasArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n block?: Maybe;\n};\n\n\nexport type SubscriptionPoolHourDataArgs = {\n id: Scalars['ID'];\n block?: Maybe;\n};\n\n\nexport type SubscriptionPoolHourDatasArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n block?: Maybe;\n};\n\n\nexport type SubscriptionTickHourDataArgs = {\n id: Scalars['ID'];\n block?: Maybe;\n};\n\n\nexport type SubscriptionTickHourDatasArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n block?: Maybe;\n};\n\n\nexport type SubscriptionTickDayDataArgs = {\n id: Scalars['ID'];\n block?: Maybe;\n};\n\n\nexport type SubscriptionTickDayDatasArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n block?: Maybe;\n};\n\n\nexport type SubscriptionTokenDayDataArgs = {\n id: Scalars['ID'];\n block?: Maybe;\n};\n\n\nexport type SubscriptionTokenDayDatasArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n block?: Maybe;\n};\n\n\nexport type SubscriptionTokenHourDataArgs = {\n id: Scalars['ID'];\n block?: Maybe;\n};\n\n\nexport type SubscriptionTokenHourDatasArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n block?: Maybe;\n};\n\n\nexport type Subscription_MetaArgs = {\n block?: Maybe;\n};\n\nexport type Swap = {\n __typename?: 'Swap';\n id: Scalars['ID'];\n transaction: Transaction;\n timestamp: Scalars['BigInt'];\n pool: Pool;\n token0: Token;\n token1: Token;\n sender: Scalars['Bytes'];\n recipient: Scalars['Bytes'];\n origin: Scalars['Bytes'];\n amount0: Scalars['BigDecimal'];\n amount1: Scalars['BigDecimal'];\n amountUSD: Scalars['BigDecimal'];\n sqrtPriceX96: Scalars['BigInt'];\n tick: Scalars['BigInt'];\n logIndex?: Maybe;\n};\n\nexport type Swap_Filter = {\n id?: Maybe;\n id_not?: Maybe;\n id_gt?: Maybe;\n id_lt?: Maybe;\n id_gte?: Maybe;\n id_lte?: Maybe;\n id_in?: Maybe>;\n id_not_in?: Maybe>;\n transaction?: Maybe;\n transaction_not?: Maybe;\n transaction_gt?: Maybe;\n transaction_lt?: Maybe;\n transaction_gte?: Maybe;\n transaction_lte?: Maybe;\n transaction_in?: Maybe>;\n transaction_not_in?: Maybe>;\n transaction_contains?: Maybe;\n transaction_not_contains?: Maybe;\n transaction_starts_with?: Maybe;\n transaction_not_starts_with?: Maybe;\n transaction_ends_with?: Maybe;\n transaction_not_ends_with?: Maybe;\n timestamp?: Maybe;\n timestamp_not?: Maybe;\n timestamp_gt?: Maybe;\n timestamp_lt?: Maybe;\n timestamp_gte?: Maybe;\n timestamp_lte?: Maybe;\n timestamp_in?: Maybe>;\n timestamp_not_in?: Maybe>;\n pool?: Maybe;\n pool_not?: Maybe;\n pool_gt?: Maybe;\n pool_lt?: Maybe;\n pool_gte?: Maybe;\n pool_lte?: Maybe;\n pool_in?: Maybe>;\n pool_not_in?: Maybe>;\n pool_contains?: Maybe;\n pool_not_contains?: Maybe;\n pool_starts_with?: Maybe;\n pool_not_starts_with?: Maybe;\n pool_ends_with?: Maybe;\n pool_not_ends_with?: Maybe;\n token0?: Maybe;\n token0_not?: Maybe;\n token0_gt?: Maybe;\n token0_lt?: Maybe;\n token0_gte?: Maybe;\n token0_lte?: Maybe;\n token0_in?: Maybe>;\n token0_not_in?: Maybe>;\n token0_contains?: Maybe;\n token0_not_contains?: Maybe;\n token0_starts_with?: Maybe;\n token0_not_starts_with?: Maybe;\n token0_ends_with?: Maybe;\n token0_not_ends_with?: Maybe;\n token1?: Maybe;\n token1_not?: Maybe;\n token1_gt?: Maybe;\n token1_lt?: Maybe;\n token1_gte?: Maybe;\n token1_lte?: Maybe;\n token1_in?: Maybe>;\n token1_not_in?: Maybe>;\n token1_contains?: Maybe;\n token1_not_contains?: Maybe;\n token1_starts_with?: Maybe;\n token1_not_starts_with?: Maybe;\n token1_ends_with?: Maybe;\n token1_not_ends_with?: Maybe;\n sender?: Maybe;\n sender_not?: Maybe;\n sender_in?: Maybe>;\n sender_not_in?: Maybe>;\n sender_contains?: Maybe;\n sender_not_contains?: Maybe;\n recipient?: Maybe;\n recipient_not?: Maybe;\n recipient_in?: Maybe>;\n recipient_not_in?: Maybe>;\n recipient_contains?: Maybe;\n recipient_not_contains?: Maybe;\n origin?: Maybe;\n origin_not?: Maybe;\n origin_in?: Maybe>;\n origin_not_in?: Maybe>;\n origin_contains?: Maybe;\n origin_not_contains?: Maybe;\n amount0?: Maybe;\n amount0_not?: Maybe;\n amount0_gt?: Maybe;\n amount0_lt?: Maybe;\n amount0_gte?: Maybe;\n amount0_lte?: Maybe;\n amount0_in?: Maybe>;\n amount0_not_in?: Maybe>;\n amount1?: Maybe;\n amount1_not?: Maybe;\n amount1_gt?: Maybe;\n amount1_lt?: Maybe;\n amount1_gte?: Maybe;\n amount1_lte?: Maybe;\n amount1_in?: Maybe>;\n amount1_not_in?: Maybe>;\n amountUSD?: Maybe;\n amountUSD_not?: Maybe;\n amountUSD_gt?: Maybe;\n amountUSD_lt?: Maybe;\n amountUSD_gte?: Maybe;\n amountUSD_lte?: Maybe;\n amountUSD_in?: Maybe>;\n amountUSD_not_in?: Maybe>;\n sqrtPriceX96?: Maybe;\n sqrtPriceX96_not?: Maybe;\n sqrtPriceX96_gt?: Maybe;\n sqrtPriceX96_lt?: Maybe;\n sqrtPriceX96_gte?: Maybe;\n sqrtPriceX96_lte?: Maybe;\n sqrtPriceX96_in?: Maybe>;\n sqrtPriceX96_not_in?: Maybe>;\n tick?: Maybe;\n tick_not?: Maybe;\n tick_gt?: Maybe;\n tick_lt?: Maybe;\n tick_gte?: Maybe;\n tick_lte?: Maybe;\n tick_in?: Maybe>;\n tick_not_in?: Maybe>;\n logIndex?: Maybe;\n logIndex_not?: Maybe;\n logIndex_gt?: Maybe;\n logIndex_lt?: Maybe;\n logIndex_gte?: Maybe;\n logIndex_lte?: Maybe;\n logIndex_in?: Maybe>;\n logIndex_not_in?: Maybe>;\n};\n\nexport enum Swap_OrderBy {\n Id = 'id',\n Transaction = 'transaction',\n Timestamp = 'timestamp',\n Pool = 'pool',\n Token0 = 'token0',\n Token1 = 'token1',\n Sender = 'sender',\n Recipient = 'recipient',\n Origin = 'origin',\n Amount0 = 'amount0',\n Amount1 = 'amount1',\n AmountUsd = 'amountUSD',\n SqrtPriceX96 = 'sqrtPriceX96',\n Tick = 'tick',\n LogIndex = 'logIndex'\n}\n\nexport type Tick = {\n __typename?: 'Tick';\n id: Scalars['ID'];\n poolAddress?: Maybe;\n tickIdx: Scalars['BigInt'];\n pool: Pool;\n liquidityGross: Scalars['BigInt'];\n liquidityNet: Scalars['BigInt'];\n price0: Scalars['BigDecimal'];\n price1: Scalars['BigDecimal'];\n volumeToken0: Scalars['BigDecimal'];\n volumeToken1: Scalars['BigDecimal'];\n volumeUSD: Scalars['BigDecimal'];\n untrackedVolumeUSD: Scalars['BigDecimal'];\n feesUSD: Scalars['BigDecimal'];\n collectedFeesToken0: Scalars['BigDecimal'];\n collectedFeesToken1: Scalars['BigDecimal'];\n collectedFeesUSD: Scalars['BigDecimal'];\n createdAtTimestamp: Scalars['BigInt'];\n createdAtBlockNumber: Scalars['BigInt'];\n liquidityProviderCount: Scalars['BigInt'];\n feeGrowthOutside0X128: Scalars['BigInt'];\n feeGrowthOutside1X128: Scalars['BigInt'];\n};\n\nexport type TickDayData = {\n __typename?: 'TickDayData';\n id: Scalars['ID'];\n date: Scalars['Int'];\n pool: Pool;\n tick: Tick;\n liquidityGross: Scalars['BigInt'];\n liquidityNet: Scalars['BigInt'];\n volumeToken0: Scalars['BigDecimal'];\n volumeToken1: Scalars['BigDecimal'];\n volumeUSD: Scalars['BigDecimal'];\n feesUSD: Scalars['BigDecimal'];\n feeGrowthOutside0X128: Scalars['BigInt'];\n feeGrowthOutside1X128: Scalars['BigInt'];\n};\n\nexport type TickDayData_Filter = {\n id?: Maybe;\n id_not?: Maybe;\n id_gt?: Maybe;\n id_lt?: Maybe;\n id_gte?: Maybe;\n id_lte?: Maybe;\n id_in?: Maybe>;\n id_not_in?: Maybe>;\n date?: Maybe;\n date_not?: Maybe;\n date_gt?: Maybe;\n date_lt?: Maybe;\n date_gte?: Maybe;\n date_lte?: Maybe;\n date_in?: Maybe>;\n date_not_in?: Maybe>;\n pool?: Maybe;\n pool_not?: Maybe;\n pool_gt?: Maybe;\n pool_lt?: Maybe;\n pool_gte?: Maybe;\n pool_lte?: Maybe;\n pool_in?: Maybe>;\n pool_not_in?: Maybe>;\n pool_contains?: Maybe;\n pool_not_contains?: Maybe;\n pool_starts_with?: Maybe;\n pool_not_starts_with?: Maybe;\n pool_ends_with?: Maybe;\n pool_not_ends_with?: Maybe;\n tick?: Maybe;\n tick_not?: Maybe;\n tick_gt?: Maybe;\n tick_lt?: Maybe;\n tick_gte?: Maybe;\n tick_lte?: Maybe;\n tick_in?: Maybe>;\n tick_not_in?: Maybe>;\n tick_contains?: Maybe;\n tick_not_contains?: Maybe;\n tick_starts_with?: Maybe;\n tick_not_starts_with?: Maybe;\n tick_ends_with?: Maybe;\n tick_not_ends_with?: Maybe;\n liquidityGross?: Maybe;\n liquidityGross_not?: Maybe;\n liquidityGross_gt?: Maybe;\n liquidityGross_lt?: Maybe;\n liquidityGross_gte?: Maybe;\n liquidityGross_lte?: Maybe;\n liquidityGross_in?: Maybe>;\n liquidityGross_not_in?: Maybe>;\n liquidityNet?: Maybe;\n liquidityNet_not?: Maybe;\n liquidityNet_gt?: Maybe;\n liquidityNet_lt?: Maybe;\n liquidityNet_gte?: Maybe;\n liquidityNet_lte?: Maybe;\n liquidityNet_in?: Maybe>;\n liquidityNet_not_in?: Maybe>;\n volumeToken0?: Maybe;\n volumeToken0_not?: Maybe;\n volumeToken0_gt?: Maybe;\n volumeToken0_lt?: Maybe;\n volumeToken0_gte?: Maybe;\n volumeToken0_lte?: Maybe;\n volumeToken0_in?: Maybe>;\n volumeToken0_not_in?: Maybe>;\n volumeToken1?: Maybe;\n volumeToken1_not?: Maybe;\n volumeToken1_gt?: Maybe;\n volumeToken1_lt?: Maybe;\n volumeToken1_gte?: Maybe;\n volumeToken1_lte?: Maybe;\n volumeToken1_in?: Maybe>;\n volumeToken1_not_in?: Maybe>;\n volumeUSD?: Maybe;\n volumeUSD_not?: Maybe;\n volumeUSD_gt?: Maybe;\n volumeUSD_lt?: Maybe;\n volumeUSD_gte?: Maybe;\n volumeUSD_lte?: Maybe;\n volumeUSD_in?: Maybe>;\n volumeUSD_not_in?: Maybe>;\n feesUSD?: Maybe;\n feesUSD_not?: Maybe;\n feesUSD_gt?: Maybe;\n feesUSD_lt?: Maybe;\n feesUSD_gte?: Maybe;\n feesUSD_lte?: Maybe;\n feesUSD_in?: Maybe>;\n feesUSD_not_in?: Maybe>;\n feeGrowthOutside0X128?: Maybe;\n feeGrowthOutside0X128_not?: Maybe;\n feeGrowthOutside0X128_gt?: Maybe;\n feeGrowthOutside0X128_lt?: Maybe;\n feeGrowthOutside0X128_gte?: Maybe;\n feeGrowthOutside0X128_lte?: Maybe;\n feeGrowthOutside0X128_in?: Maybe>;\n feeGrowthOutside0X128_not_in?: Maybe>;\n feeGrowthOutside1X128?: Maybe;\n feeGrowthOutside1X128_not?: Maybe;\n feeGrowthOutside1X128_gt?: Maybe;\n feeGrowthOutside1X128_lt?: Maybe;\n feeGrowthOutside1X128_gte?: Maybe;\n feeGrowthOutside1X128_lte?: Maybe;\n feeGrowthOutside1X128_in?: Maybe>;\n feeGrowthOutside1X128_not_in?: Maybe>;\n};\n\nexport enum TickDayData_OrderBy {\n Id = 'id',\n Date = 'date',\n Pool = 'pool',\n Tick = 'tick',\n LiquidityGross = 'liquidityGross',\n LiquidityNet = 'liquidityNet',\n VolumeToken0 = 'volumeToken0',\n VolumeToken1 = 'volumeToken1',\n VolumeUsd = 'volumeUSD',\n FeesUsd = 'feesUSD',\n FeeGrowthOutside0X128 = 'feeGrowthOutside0X128',\n FeeGrowthOutside1X128 = 'feeGrowthOutside1X128'\n}\n\nexport type TickHourData = {\n __typename?: 'TickHourData';\n id: Scalars['ID'];\n periodStartUnix: Scalars['Int'];\n pool: Pool;\n tick: Tick;\n liquidityGross: Scalars['BigInt'];\n liquidityNet: Scalars['BigInt'];\n volumeToken0: Scalars['BigDecimal'];\n volumeToken1: Scalars['BigDecimal'];\n volumeUSD: Scalars['BigDecimal'];\n feesUSD: Scalars['BigDecimal'];\n};\n\nexport type TickHourData_Filter = {\n id?: Maybe;\n id_not?: Maybe;\n id_gt?: Maybe;\n id_lt?: Maybe;\n id_gte?: Maybe;\n id_lte?: Maybe;\n id_in?: Maybe>;\n id_not_in?: Maybe>;\n periodStartUnix?: Maybe;\n periodStartUnix_not?: Maybe;\n periodStartUnix_gt?: Maybe;\n periodStartUnix_lt?: Maybe;\n periodStartUnix_gte?: Maybe;\n periodStartUnix_lte?: Maybe;\n periodStartUnix_in?: Maybe>;\n periodStartUnix_not_in?: Maybe>;\n pool?: Maybe;\n pool_not?: Maybe;\n pool_gt?: Maybe;\n pool_lt?: Maybe;\n pool_gte?: Maybe;\n pool_lte?: Maybe;\n pool_in?: Maybe>;\n pool_not_in?: Maybe>;\n pool_contains?: Maybe;\n pool_not_contains?: Maybe;\n pool_starts_with?: Maybe;\n pool_not_starts_with?: Maybe;\n pool_ends_with?: Maybe;\n pool_not_ends_with?: Maybe;\n tick?: Maybe;\n tick_not?: Maybe;\n tick_gt?: Maybe;\n tick_lt?: Maybe;\n tick_gte?: Maybe;\n tick_lte?: Maybe;\n tick_in?: Maybe>;\n tick_not_in?: Maybe>;\n tick_contains?: Maybe;\n tick_not_contains?: Maybe;\n tick_starts_with?: Maybe;\n tick_not_starts_with?: Maybe;\n tick_ends_with?: Maybe;\n tick_not_ends_with?: Maybe;\n liquidityGross?: Maybe;\n liquidityGross_not?: Maybe;\n liquidityGross_gt?: Maybe;\n liquidityGross_lt?: Maybe;\n liquidityGross_gte?: Maybe;\n liquidityGross_lte?: Maybe;\n liquidityGross_in?: Maybe>;\n liquidityGross_not_in?: Maybe>;\n liquidityNet?: Maybe;\n liquidityNet_not?: Maybe;\n liquidityNet_gt?: Maybe;\n liquidityNet_lt?: Maybe;\n liquidityNet_gte?: Maybe;\n liquidityNet_lte?: Maybe;\n liquidityNet_in?: Maybe>;\n liquidityNet_not_in?: Maybe>;\n volumeToken0?: Maybe;\n volumeToken0_not?: Maybe;\n volumeToken0_gt?: Maybe;\n volumeToken0_lt?: Maybe;\n volumeToken0_gte?: Maybe;\n volumeToken0_lte?: Maybe;\n volumeToken0_in?: Maybe>;\n volumeToken0_not_in?: Maybe>;\n volumeToken1?: Maybe;\n volumeToken1_not?: Maybe;\n volumeToken1_gt?: Maybe;\n volumeToken1_lt?: Maybe;\n volumeToken1_gte?: Maybe;\n volumeToken1_lte?: Maybe;\n volumeToken1_in?: Maybe>;\n volumeToken1_not_in?: Maybe>;\n volumeUSD?: Maybe;\n volumeUSD_not?: Maybe;\n volumeUSD_gt?: Maybe;\n volumeUSD_lt?: Maybe;\n volumeUSD_gte?: Maybe;\n volumeUSD_lte?: Maybe;\n volumeUSD_in?: Maybe>;\n volumeUSD_not_in?: Maybe>;\n feesUSD?: Maybe;\n feesUSD_not?: Maybe;\n feesUSD_gt?: Maybe;\n feesUSD_lt?: Maybe;\n feesUSD_gte?: Maybe;\n feesUSD_lte?: Maybe;\n feesUSD_in?: Maybe>;\n feesUSD_not_in?: Maybe>;\n};\n\nexport enum TickHourData_OrderBy {\n Id = 'id',\n PeriodStartUnix = 'periodStartUnix',\n Pool = 'pool',\n Tick = 'tick',\n LiquidityGross = 'liquidityGross',\n LiquidityNet = 'liquidityNet',\n VolumeToken0 = 'volumeToken0',\n VolumeToken1 = 'volumeToken1',\n VolumeUsd = 'volumeUSD',\n FeesUsd = 'feesUSD'\n}\n\nexport type Tick_Filter = {\n id?: Maybe;\n id_not?: Maybe;\n id_gt?: Maybe;\n id_lt?: Maybe;\n id_gte?: Maybe;\n id_lte?: Maybe;\n id_in?: Maybe>;\n id_not_in?: Maybe>;\n poolAddress?: Maybe;\n poolAddress_not?: Maybe;\n poolAddress_gt?: Maybe;\n poolAddress_lt?: Maybe;\n poolAddress_gte?: Maybe;\n poolAddress_lte?: Maybe;\n poolAddress_in?: Maybe>;\n poolAddress_not_in?: Maybe>;\n poolAddress_contains?: Maybe;\n poolAddress_not_contains?: Maybe;\n poolAddress_starts_with?: Maybe;\n poolAddress_not_starts_with?: Maybe;\n poolAddress_ends_with?: Maybe;\n poolAddress_not_ends_with?: Maybe;\n tickIdx?: Maybe;\n tickIdx_not?: Maybe;\n tickIdx_gt?: Maybe;\n tickIdx_lt?: Maybe;\n tickIdx_gte?: Maybe;\n tickIdx_lte?: Maybe;\n tickIdx_in?: Maybe>;\n tickIdx_not_in?: Maybe>;\n pool?: Maybe;\n pool_not?: Maybe;\n pool_gt?: Maybe;\n pool_lt?: Maybe;\n pool_gte?: Maybe;\n pool_lte?: Maybe;\n pool_in?: Maybe>;\n pool_not_in?: Maybe>;\n pool_contains?: Maybe;\n pool_not_contains?: Maybe;\n pool_starts_with?: Maybe;\n pool_not_starts_with?: Maybe;\n pool_ends_with?: Maybe;\n pool_not_ends_with?: Maybe;\n liquidityGross?: Maybe;\n liquidityGross_not?: Maybe;\n liquidityGross_gt?: Maybe;\n liquidityGross_lt?: Maybe;\n liquidityGross_gte?: Maybe;\n liquidityGross_lte?: Maybe;\n liquidityGross_in?: Maybe>;\n liquidityGross_not_in?: Maybe>;\n liquidityNet?: Maybe;\n liquidityNet_not?: Maybe;\n liquidityNet_gt?: Maybe;\n liquidityNet_lt?: Maybe;\n liquidityNet_gte?: Maybe;\n liquidityNet_lte?: Maybe;\n liquidityNet_in?: Maybe>;\n liquidityNet_not_in?: Maybe>;\n price0?: Maybe;\n price0_not?: Maybe;\n price0_gt?: Maybe;\n price0_lt?: Maybe;\n price0_gte?: Maybe;\n price0_lte?: Maybe;\n price0_in?: Maybe>;\n price0_not_in?: Maybe>;\n price1?: Maybe;\n price1_not?: Maybe;\n price1_gt?: Maybe;\n price1_lt?: Maybe;\n price1_gte?: Maybe;\n price1_lte?: Maybe;\n price1_in?: Maybe>;\n price1_not_in?: Maybe>;\n volumeToken0?: Maybe;\n volumeToken0_not?: Maybe;\n volumeToken0_gt?: Maybe;\n volumeToken0_lt?: Maybe;\n volumeToken0_gte?: Maybe;\n volumeToken0_lte?: Maybe;\n volumeToken0_in?: Maybe>;\n volumeToken0_not_in?: Maybe>;\n volumeToken1?: Maybe;\n volumeToken1_not?: Maybe;\n volumeToken1_gt?: Maybe;\n volumeToken1_lt?: Maybe;\n volumeToken1_gte?: Maybe;\n volumeToken1_lte?: Maybe;\n volumeToken1_in?: Maybe>;\n volumeToken1_not_in?: Maybe>;\n volumeUSD?: Maybe;\n volumeUSD_not?: Maybe;\n volumeUSD_gt?: Maybe;\n volumeUSD_lt?: Maybe;\n volumeUSD_gte?: Maybe;\n volumeUSD_lte?: Maybe;\n volumeUSD_in?: Maybe>;\n volumeUSD_not_in?: Maybe>;\n untrackedVolumeUSD?: Maybe;\n untrackedVolumeUSD_not?: Maybe;\n untrackedVolumeUSD_gt?: Maybe;\n untrackedVolumeUSD_lt?: Maybe;\n untrackedVolumeUSD_gte?: Maybe;\n untrackedVolumeUSD_lte?: Maybe;\n untrackedVolumeUSD_in?: Maybe>;\n untrackedVolumeUSD_not_in?: Maybe>;\n feesUSD?: Maybe;\n feesUSD_not?: Maybe;\n feesUSD_gt?: Maybe;\n feesUSD_lt?: Maybe;\n feesUSD_gte?: Maybe;\n feesUSD_lte?: Maybe;\n feesUSD_in?: Maybe>;\n feesUSD_not_in?: Maybe>;\n collectedFeesToken0?: Maybe;\n collectedFeesToken0_not?: Maybe;\n collectedFeesToken0_gt?: Maybe;\n collectedFeesToken0_lt?: Maybe;\n collectedFeesToken0_gte?: Maybe;\n collectedFeesToken0_lte?: Maybe;\n collectedFeesToken0_in?: Maybe>;\n collectedFeesToken0_not_in?: Maybe>;\n collectedFeesToken1?: Maybe;\n collectedFeesToken1_not?: Maybe;\n collectedFeesToken1_gt?: Maybe;\n collectedFeesToken1_lt?: Maybe;\n collectedFeesToken1_gte?: Maybe;\n collectedFeesToken1_lte?: Maybe;\n collectedFeesToken1_in?: Maybe>;\n collectedFeesToken1_not_in?: Maybe>;\n collectedFeesUSD?: Maybe;\n collectedFeesUSD_not?: Maybe;\n collectedFeesUSD_gt?: Maybe;\n collectedFeesUSD_lt?: Maybe;\n collectedFeesUSD_gte?: Maybe;\n collectedFeesUSD_lte?: Maybe;\n collectedFeesUSD_in?: Maybe>;\n collectedFeesUSD_not_in?: Maybe>;\n createdAtTimestamp?: Maybe;\n createdAtTimestamp_not?: Maybe;\n createdAtTimestamp_gt?: Maybe;\n createdAtTimestamp_lt?: Maybe;\n createdAtTimestamp_gte?: Maybe;\n createdAtTimestamp_lte?: Maybe;\n createdAtTimestamp_in?: Maybe>;\n createdAtTimestamp_not_in?: Maybe>;\n createdAtBlockNumber?: Maybe;\n createdAtBlockNumber_not?: Maybe;\n createdAtBlockNumber_gt?: Maybe;\n createdAtBlockNumber_lt?: Maybe;\n createdAtBlockNumber_gte?: Maybe;\n createdAtBlockNumber_lte?: Maybe;\n createdAtBlockNumber_in?: Maybe>;\n createdAtBlockNumber_not_in?: Maybe>;\n liquidityProviderCount?: Maybe;\n liquidityProviderCount_not?: Maybe;\n liquidityProviderCount_gt?: Maybe;\n liquidityProviderCount_lt?: Maybe;\n liquidityProviderCount_gte?: Maybe;\n liquidityProviderCount_lte?: Maybe;\n liquidityProviderCount_in?: Maybe>;\n liquidityProviderCount_not_in?: Maybe>;\n feeGrowthOutside0X128?: Maybe;\n feeGrowthOutside0X128_not?: Maybe;\n feeGrowthOutside0X128_gt?: Maybe;\n feeGrowthOutside0X128_lt?: Maybe;\n feeGrowthOutside0X128_gte?: Maybe;\n feeGrowthOutside0X128_lte?: Maybe;\n feeGrowthOutside0X128_in?: Maybe>;\n feeGrowthOutside0X128_not_in?: Maybe>;\n feeGrowthOutside1X128?: Maybe;\n feeGrowthOutside1X128_not?: Maybe;\n feeGrowthOutside1X128_gt?: Maybe;\n feeGrowthOutside1X128_lt?: Maybe;\n feeGrowthOutside1X128_gte?: Maybe;\n feeGrowthOutside1X128_lte?: Maybe;\n feeGrowthOutside1X128_in?: Maybe>;\n feeGrowthOutside1X128_not_in?: Maybe>;\n};\n\nexport enum Tick_OrderBy {\n Id = 'id',\n PoolAddress = 'poolAddress',\n TickIdx = 'tickIdx',\n Pool = 'pool',\n LiquidityGross = 'liquidityGross',\n LiquidityNet = 'liquidityNet',\n Price0 = 'price0',\n Price1 = 'price1',\n VolumeToken0 = 'volumeToken0',\n VolumeToken1 = 'volumeToken1',\n VolumeUsd = 'volumeUSD',\n UntrackedVolumeUsd = 'untrackedVolumeUSD',\n FeesUsd = 'feesUSD',\n CollectedFeesToken0 = 'collectedFeesToken0',\n CollectedFeesToken1 = 'collectedFeesToken1',\n CollectedFeesUsd = 'collectedFeesUSD',\n CreatedAtTimestamp = 'createdAtTimestamp',\n CreatedAtBlockNumber = 'createdAtBlockNumber',\n LiquidityProviderCount = 'liquidityProviderCount',\n FeeGrowthOutside0X128 = 'feeGrowthOutside0X128',\n FeeGrowthOutside1X128 = 'feeGrowthOutside1X128'\n}\n\nexport type Token = {\n __typename?: 'Token';\n id: Scalars['ID'];\n symbol: Scalars['String'];\n name: Scalars['String'];\n decimals: Scalars['BigInt'];\n totalSupply: Scalars['BigInt'];\n volume: Scalars['BigDecimal'];\n volumeUSD: Scalars['BigDecimal'];\n untrackedVolumeUSD: Scalars['BigDecimal'];\n feesUSD: Scalars['BigDecimal'];\n txCount: Scalars['BigInt'];\n poolCount: Scalars['BigInt'];\n totalValueLocked: Scalars['BigDecimal'];\n totalValueLockedUSD: Scalars['BigDecimal'];\n totalValueLockedUSDUntracked: Scalars['BigDecimal'];\n derivedETH: Scalars['BigDecimal'];\n whitelistPools: Array;\n tokenDayData: Array;\n};\n\n\nexport type TokenWhitelistPoolsArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n};\n\n\nexport type TokenTokenDayDataArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n};\n\nexport type TokenDayData = {\n __typename?: 'TokenDayData';\n id: Scalars['ID'];\n date: Scalars['Int'];\n token: Token;\n volume: Scalars['BigDecimal'];\n volumeUSD: Scalars['BigDecimal'];\n untrackedVolumeUSD: Scalars['BigDecimal'];\n totalValueLocked: Scalars['BigDecimal'];\n totalValueLockedUSD: Scalars['BigDecimal'];\n priceUSD: Scalars['BigDecimal'];\n feesUSD: Scalars['BigDecimal'];\n open: Scalars['BigDecimal'];\n high: Scalars['BigDecimal'];\n low: Scalars['BigDecimal'];\n close: Scalars['BigDecimal'];\n};\n\nexport type TokenDayData_Filter = {\n id?: Maybe;\n id_not?: Maybe;\n id_gt?: Maybe;\n id_lt?: Maybe;\n id_gte?: Maybe;\n id_lte?: Maybe;\n id_in?: Maybe>;\n id_not_in?: Maybe>;\n date?: Maybe;\n date_not?: Maybe;\n date_gt?: Maybe;\n date_lt?: Maybe;\n date_gte?: Maybe;\n date_lte?: Maybe;\n date_in?: Maybe>;\n date_not_in?: Maybe>;\n token?: Maybe;\n token_not?: Maybe;\n token_gt?: Maybe;\n token_lt?: Maybe;\n token_gte?: Maybe;\n token_lte?: Maybe;\n token_in?: Maybe>;\n token_not_in?: Maybe>;\n token_contains?: Maybe;\n token_not_contains?: Maybe;\n token_starts_with?: Maybe;\n token_not_starts_with?: Maybe;\n token_ends_with?: Maybe;\n token_not_ends_with?: Maybe;\n volume?: Maybe;\n volume_not?: Maybe;\n volume_gt?: Maybe;\n volume_lt?: Maybe;\n volume_gte?: Maybe;\n volume_lte?: Maybe;\n volume_in?: Maybe>;\n volume_not_in?: Maybe>;\n volumeUSD?: Maybe;\n volumeUSD_not?: Maybe;\n volumeUSD_gt?: Maybe;\n volumeUSD_lt?: Maybe;\n volumeUSD_gte?: Maybe;\n volumeUSD_lte?: Maybe;\n volumeUSD_in?: Maybe>;\n volumeUSD_not_in?: Maybe>;\n untrackedVolumeUSD?: Maybe;\n untrackedVolumeUSD_not?: Maybe;\n untrackedVolumeUSD_gt?: Maybe;\n untrackedVolumeUSD_lt?: Maybe;\n untrackedVolumeUSD_gte?: Maybe;\n untrackedVolumeUSD_lte?: Maybe;\n untrackedVolumeUSD_in?: Maybe>;\n untrackedVolumeUSD_not_in?: Maybe>;\n totalValueLocked?: Maybe;\n totalValueLocked_not?: Maybe;\n totalValueLocked_gt?: Maybe;\n totalValueLocked_lt?: Maybe;\n totalValueLocked_gte?: Maybe;\n totalValueLocked_lte?: Maybe;\n totalValueLocked_in?: Maybe>;\n totalValueLocked_not_in?: Maybe>;\n totalValueLockedUSD?: Maybe;\n totalValueLockedUSD_not?: Maybe;\n totalValueLockedUSD_gt?: Maybe;\n totalValueLockedUSD_lt?: Maybe;\n totalValueLockedUSD_gte?: Maybe;\n totalValueLockedUSD_lte?: Maybe;\n totalValueLockedUSD_in?: Maybe>;\n totalValueLockedUSD_not_in?: Maybe>;\n priceUSD?: Maybe;\n priceUSD_not?: Maybe;\n priceUSD_gt?: Maybe;\n priceUSD_lt?: Maybe;\n priceUSD_gte?: Maybe;\n priceUSD_lte?: Maybe;\n priceUSD_in?: Maybe>;\n priceUSD_not_in?: Maybe>;\n feesUSD?: Maybe;\n feesUSD_not?: Maybe;\n feesUSD_gt?: Maybe;\n feesUSD_lt?: Maybe;\n feesUSD_gte?: Maybe;\n feesUSD_lte?: Maybe;\n feesUSD_in?: Maybe>;\n feesUSD_not_in?: Maybe>;\n open?: Maybe;\n open_not?: Maybe;\n open_gt?: Maybe;\n open_lt?: Maybe;\n open_gte?: Maybe;\n open_lte?: Maybe;\n open_in?: Maybe>;\n open_not_in?: Maybe>;\n high?: Maybe;\n high_not?: Maybe;\n high_gt?: Maybe;\n high_lt?: Maybe;\n high_gte?: Maybe;\n high_lte?: Maybe;\n high_in?: Maybe>;\n high_not_in?: Maybe>;\n low?: Maybe;\n low_not?: Maybe;\n low_gt?: Maybe;\n low_lt?: Maybe;\n low_gte?: Maybe;\n low_lte?: Maybe;\n low_in?: Maybe>;\n low_not_in?: Maybe>;\n close?: Maybe;\n close_not?: Maybe;\n close_gt?: Maybe;\n close_lt?: Maybe;\n close_gte?: Maybe;\n close_lte?: Maybe;\n close_in?: Maybe>;\n close_not_in?: Maybe>;\n};\n\nexport enum TokenDayData_OrderBy {\n Id = 'id',\n Date = 'date',\n Token = 'token',\n Volume = 'volume',\n VolumeUsd = 'volumeUSD',\n UntrackedVolumeUsd = 'untrackedVolumeUSD',\n TotalValueLocked = 'totalValueLocked',\n TotalValueLockedUsd = 'totalValueLockedUSD',\n PriceUsd = 'priceUSD',\n FeesUsd = 'feesUSD',\n Open = 'open',\n High = 'high',\n Low = 'low',\n Close = 'close'\n}\n\nexport type TokenHourData = {\n __typename?: 'TokenHourData';\n id: Scalars['ID'];\n periodStartUnix: Scalars['Int'];\n token: Token;\n volume: Scalars['BigDecimal'];\n volumeUSD: Scalars['BigDecimal'];\n untrackedVolumeUSD: Scalars['BigDecimal'];\n totalValueLocked: Scalars['BigDecimal'];\n totalValueLockedUSD: Scalars['BigDecimal'];\n priceUSD: Scalars['BigDecimal'];\n feesUSD: Scalars['BigDecimal'];\n open: Scalars['BigDecimal'];\n high: Scalars['BigDecimal'];\n low: Scalars['BigDecimal'];\n close: Scalars['BigDecimal'];\n};\n\nexport type TokenHourData_Filter = {\n id?: Maybe;\n id_not?: Maybe;\n id_gt?: Maybe;\n id_lt?: Maybe;\n id_gte?: Maybe;\n id_lte?: Maybe;\n id_in?: Maybe>;\n id_not_in?: Maybe>;\n periodStartUnix?: Maybe;\n periodStartUnix_not?: Maybe;\n periodStartUnix_gt?: Maybe;\n periodStartUnix_lt?: Maybe;\n periodStartUnix_gte?: Maybe;\n periodStartUnix_lte?: Maybe;\n periodStartUnix_in?: Maybe>;\n periodStartUnix_not_in?: Maybe>;\n token?: Maybe;\n token_not?: Maybe;\n token_gt?: Maybe;\n token_lt?: Maybe;\n token_gte?: Maybe;\n token_lte?: Maybe;\n token_in?: Maybe>;\n token_not_in?: Maybe>;\n token_contains?: Maybe;\n token_not_contains?: Maybe;\n token_starts_with?: Maybe;\n token_not_starts_with?: Maybe;\n token_ends_with?: Maybe;\n token_not_ends_with?: Maybe;\n volume?: Maybe;\n volume_not?: Maybe;\n volume_gt?: Maybe;\n volume_lt?: Maybe;\n volume_gte?: Maybe;\n volume_lte?: Maybe;\n volume_in?: Maybe>;\n volume_not_in?: Maybe>;\n volumeUSD?: Maybe;\n volumeUSD_not?: Maybe;\n volumeUSD_gt?: Maybe;\n volumeUSD_lt?: Maybe;\n volumeUSD_gte?: Maybe;\n volumeUSD_lte?: Maybe;\n volumeUSD_in?: Maybe>;\n volumeUSD_not_in?: Maybe>;\n untrackedVolumeUSD?: Maybe;\n untrackedVolumeUSD_not?: Maybe;\n untrackedVolumeUSD_gt?: Maybe;\n untrackedVolumeUSD_lt?: Maybe;\n untrackedVolumeUSD_gte?: Maybe;\n untrackedVolumeUSD_lte?: Maybe;\n untrackedVolumeUSD_in?: Maybe>;\n untrackedVolumeUSD_not_in?: Maybe>;\n totalValueLocked?: Maybe;\n totalValueLocked_not?: Maybe;\n totalValueLocked_gt?: Maybe;\n totalValueLocked_lt?: Maybe;\n totalValueLocked_gte?: Maybe;\n totalValueLocked_lte?: Maybe;\n totalValueLocked_in?: Maybe>;\n totalValueLocked_not_in?: Maybe>;\n totalValueLockedUSD?: Maybe;\n totalValueLockedUSD_not?: Maybe;\n totalValueLockedUSD_gt?: Maybe;\n totalValueLockedUSD_lt?: Maybe;\n totalValueLockedUSD_gte?: Maybe;\n totalValueLockedUSD_lte?: Maybe;\n totalValueLockedUSD_in?: Maybe>;\n totalValueLockedUSD_not_in?: Maybe>;\n priceUSD?: Maybe;\n priceUSD_not?: Maybe;\n priceUSD_gt?: Maybe;\n priceUSD_lt?: Maybe;\n priceUSD_gte?: Maybe;\n priceUSD_lte?: Maybe;\n priceUSD_in?: Maybe>;\n priceUSD_not_in?: Maybe>;\n feesUSD?: Maybe;\n feesUSD_not?: Maybe;\n feesUSD_gt?: Maybe;\n feesUSD_lt?: Maybe;\n feesUSD_gte?: Maybe;\n feesUSD_lte?: Maybe;\n feesUSD_in?: Maybe>;\n feesUSD_not_in?: Maybe>;\n open?: Maybe;\n open_not?: Maybe;\n open_gt?: Maybe;\n open_lt?: Maybe;\n open_gte?: Maybe;\n open_lte?: Maybe;\n open_in?: Maybe>;\n open_not_in?: Maybe>;\n high?: Maybe;\n high_not?: Maybe;\n high_gt?: Maybe;\n high_lt?: Maybe;\n high_gte?: Maybe;\n high_lte?: Maybe;\n high_in?: Maybe>;\n high_not_in?: Maybe>;\n low?: Maybe;\n low_not?: Maybe;\n low_gt?: Maybe;\n low_lt?: Maybe;\n low_gte?: Maybe;\n low_lte?: Maybe;\n low_in?: Maybe>;\n low_not_in?: Maybe>;\n close?: Maybe;\n close_not?: Maybe;\n close_gt?: Maybe;\n close_lt?: Maybe;\n close_gte?: Maybe;\n close_lte?: Maybe;\n close_in?: Maybe>;\n close_not_in?: Maybe>;\n};\n\nexport enum TokenHourData_OrderBy {\n Id = 'id',\n PeriodStartUnix = 'periodStartUnix',\n Token = 'token',\n Volume = 'volume',\n VolumeUsd = 'volumeUSD',\n UntrackedVolumeUsd = 'untrackedVolumeUSD',\n TotalValueLocked = 'totalValueLocked',\n TotalValueLockedUsd = 'totalValueLockedUSD',\n PriceUsd = 'priceUSD',\n FeesUsd = 'feesUSD',\n Open = 'open',\n High = 'high',\n Low = 'low',\n Close = 'close'\n}\n\nexport type Token_Filter = {\n id?: Maybe;\n id_not?: Maybe;\n id_gt?: Maybe;\n id_lt?: Maybe;\n id_gte?: Maybe;\n id_lte?: Maybe;\n id_in?: Maybe>;\n id_not_in?: Maybe>;\n symbol?: Maybe;\n symbol_not?: Maybe;\n symbol_gt?: Maybe;\n symbol_lt?: Maybe;\n symbol_gte?: Maybe;\n symbol_lte?: Maybe;\n symbol_in?: Maybe>;\n symbol_not_in?: Maybe>;\n symbol_contains?: Maybe;\n symbol_not_contains?: Maybe;\n symbol_starts_with?: Maybe;\n symbol_not_starts_with?: Maybe;\n symbol_ends_with?: Maybe;\n symbol_not_ends_with?: Maybe;\n name?: Maybe;\n name_not?: Maybe;\n name_gt?: Maybe;\n name_lt?: Maybe;\n name_gte?: Maybe;\n name_lte?: Maybe;\n name_in?: Maybe>;\n name_not_in?: Maybe>;\n name_contains?: Maybe;\n name_not_contains?: Maybe;\n name_starts_with?: Maybe;\n name_not_starts_with?: Maybe;\n name_ends_with?: Maybe;\n name_not_ends_with?: Maybe;\n decimals?: Maybe;\n decimals_not?: Maybe;\n decimals_gt?: Maybe;\n decimals_lt?: Maybe;\n decimals_gte?: Maybe;\n decimals_lte?: Maybe;\n decimals_in?: Maybe>;\n decimals_not_in?: Maybe>;\n totalSupply?: Maybe;\n totalSupply_not?: Maybe;\n totalSupply_gt?: Maybe;\n totalSupply_lt?: Maybe;\n totalSupply_gte?: Maybe;\n totalSupply_lte?: Maybe;\n totalSupply_in?: Maybe>;\n totalSupply_not_in?: Maybe>;\n volume?: Maybe;\n volume_not?: Maybe;\n volume_gt?: Maybe;\n volume_lt?: Maybe;\n volume_gte?: Maybe;\n volume_lte?: Maybe;\n volume_in?: Maybe>;\n volume_not_in?: Maybe>;\n volumeUSD?: Maybe;\n volumeUSD_not?: Maybe;\n volumeUSD_gt?: Maybe;\n volumeUSD_lt?: Maybe;\n volumeUSD_gte?: Maybe;\n volumeUSD_lte?: Maybe;\n volumeUSD_in?: Maybe>;\n volumeUSD_not_in?: Maybe>;\n untrackedVolumeUSD?: Maybe;\n untrackedVolumeUSD_not?: Maybe;\n untrackedVolumeUSD_gt?: Maybe;\n untrackedVolumeUSD_lt?: Maybe;\n untrackedVolumeUSD_gte?: Maybe;\n untrackedVolumeUSD_lte?: Maybe;\n untrackedVolumeUSD_in?: Maybe>;\n untrackedVolumeUSD_not_in?: Maybe>;\n feesUSD?: Maybe;\n feesUSD_not?: Maybe;\n feesUSD_gt?: Maybe;\n feesUSD_lt?: Maybe;\n feesUSD_gte?: Maybe;\n feesUSD_lte?: Maybe;\n feesUSD_in?: Maybe>;\n feesUSD_not_in?: Maybe>;\n txCount?: Maybe;\n txCount_not?: Maybe;\n txCount_gt?: Maybe;\n txCount_lt?: Maybe;\n txCount_gte?: Maybe;\n txCount_lte?: Maybe;\n txCount_in?: Maybe>;\n txCount_not_in?: Maybe>;\n poolCount?: Maybe;\n poolCount_not?: Maybe;\n poolCount_gt?: Maybe;\n poolCount_lt?: Maybe;\n poolCount_gte?: Maybe;\n poolCount_lte?: Maybe;\n poolCount_in?: Maybe>;\n poolCount_not_in?: Maybe>;\n totalValueLocked?: Maybe;\n totalValueLocked_not?: Maybe;\n totalValueLocked_gt?: Maybe;\n totalValueLocked_lt?: Maybe;\n totalValueLocked_gte?: Maybe;\n totalValueLocked_lte?: Maybe;\n totalValueLocked_in?: Maybe>;\n totalValueLocked_not_in?: Maybe>;\n totalValueLockedUSD?: Maybe;\n totalValueLockedUSD_not?: Maybe;\n totalValueLockedUSD_gt?: Maybe;\n totalValueLockedUSD_lt?: Maybe;\n totalValueLockedUSD_gte?: Maybe;\n totalValueLockedUSD_lte?: Maybe;\n totalValueLockedUSD_in?: Maybe>;\n totalValueLockedUSD_not_in?: Maybe>;\n totalValueLockedUSDUntracked?: Maybe;\n totalValueLockedUSDUntracked_not?: Maybe;\n totalValueLockedUSDUntracked_gt?: Maybe;\n totalValueLockedUSDUntracked_lt?: Maybe;\n totalValueLockedUSDUntracked_gte?: Maybe;\n totalValueLockedUSDUntracked_lte?: Maybe;\n totalValueLockedUSDUntracked_in?: Maybe>;\n totalValueLockedUSDUntracked_not_in?: Maybe>;\n derivedETH?: Maybe;\n derivedETH_not?: Maybe;\n derivedETH_gt?: Maybe;\n derivedETH_lt?: Maybe;\n derivedETH_gte?: Maybe;\n derivedETH_lte?: Maybe;\n derivedETH_in?: Maybe>;\n derivedETH_not_in?: Maybe>;\n whitelistPools?: Maybe>;\n whitelistPools_not?: Maybe>;\n whitelistPools_contains?: Maybe>;\n whitelistPools_not_contains?: Maybe>;\n};\n\nexport enum Token_OrderBy {\n Id = 'id',\n Symbol = 'symbol',\n Name = 'name',\n Decimals = 'decimals',\n TotalSupply = 'totalSupply',\n Volume = 'volume',\n VolumeUsd = 'volumeUSD',\n UntrackedVolumeUsd = 'untrackedVolumeUSD',\n FeesUsd = 'feesUSD',\n TxCount = 'txCount',\n PoolCount = 'poolCount',\n TotalValueLocked = 'totalValueLocked',\n TotalValueLockedUsd = 'totalValueLockedUSD',\n TotalValueLockedUsdUntracked = 'totalValueLockedUSDUntracked',\n DerivedEth = 'derivedETH',\n WhitelistPools = 'whitelistPools',\n TokenDayData = 'tokenDayData'\n}\n\nexport type Transaction = {\n __typename?: 'Transaction';\n id: Scalars['ID'];\n blockNumber: Scalars['BigInt'];\n timestamp: Scalars['BigInt'];\n gasUsed: Scalars['BigInt'];\n gasPrice: Scalars['BigInt'];\n mints: Array>;\n burns: Array>;\n swaps: Array>;\n flashed: Array>;\n collects: Array>;\n};\n\n\nexport type TransactionMintsArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n};\n\n\nexport type TransactionBurnsArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n};\n\n\nexport type TransactionSwapsArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n};\n\n\nexport type TransactionFlashedArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n};\n\n\nexport type TransactionCollectsArgs = {\n skip?: Maybe;\n first?: Maybe;\n orderBy?: Maybe;\n orderDirection?: Maybe;\n where?: Maybe;\n};\n\nexport type Transaction_Filter = {\n id?: Maybe;\n id_not?: Maybe;\n id_gt?: Maybe;\n id_lt?: Maybe;\n id_gte?: Maybe;\n id_lte?: Maybe;\n id_in?: Maybe>;\n id_not_in?: Maybe>;\n blockNumber?: Maybe;\n blockNumber_not?: Maybe;\n blockNumber_gt?: Maybe;\n blockNumber_lt?: Maybe;\n blockNumber_gte?: Maybe;\n blockNumber_lte?: Maybe;\n blockNumber_in?: Maybe>;\n blockNumber_not_in?: Maybe>;\n timestamp?: Maybe;\n timestamp_not?: Maybe;\n timestamp_gt?: Maybe;\n timestamp_lt?: Maybe;\n timestamp_gte?: Maybe;\n timestamp_lte?: Maybe;\n timestamp_in?: Maybe>;\n timestamp_not_in?: Maybe>;\n gasUsed?: Maybe;\n gasUsed_not?: Maybe;\n gasUsed_gt?: Maybe;\n gasUsed_lt?: Maybe;\n gasUsed_gte?: Maybe;\n gasUsed_lte?: Maybe;\n gasUsed_in?: Maybe>;\n gasUsed_not_in?: Maybe>;\n gasPrice?: Maybe;\n gasPrice_not?: Maybe;\n gasPrice_gt?: Maybe;\n gasPrice_lt?: Maybe;\n gasPrice_gte?: Maybe;\n gasPrice_lte?: Maybe;\n gasPrice_in?: Maybe>;\n gasPrice_not_in?: Maybe>;\n};\n\nexport enum Transaction_OrderBy {\n Id = 'id',\n BlockNumber = 'blockNumber',\n Timestamp = 'timestamp',\n GasUsed = 'gasUsed',\n GasPrice = 'gasPrice',\n Mints = 'mints',\n Burns = 'burns',\n Swaps = 'swaps',\n Flashed = 'flashed',\n Collects = 'collects'\n}\n\nexport type UniswapDayData = {\n __typename?: 'UniswapDayData';\n id: Scalars['ID'];\n date: Scalars['Int'];\n volumeETH: Scalars['BigDecimal'];\n volumeUSD: Scalars['BigDecimal'];\n volumeUSDUntracked: Scalars['BigDecimal'];\n feesUSD: Scalars['BigDecimal'];\n txCount: Scalars['BigInt'];\n tvlUSD: Scalars['BigDecimal'];\n};\n\nexport type UniswapDayData_Filter = {\n id?: Maybe;\n id_not?: Maybe;\n id_gt?: Maybe;\n id_lt?: Maybe;\n id_gte?: Maybe;\n id_lte?: Maybe;\n id_in?: Maybe>;\n id_not_in?: Maybe>;\n date?: Maybe;\n date_not?: Maybe;\n date_gt?: Maybe;\n date_lt?: Maybe;\n date_gte?: Maybe;\n date_lte?: Maybe;\n date_in?: Maybe>;\n date_not_in?: Maybe>;\n volumeETH?: Maybe;\n volumeETH_not?: Maybe;\n volumeETH_gt?: Maybe;\n volumeETH_lt?: Maybe;\n volumeETH_gte?: Maybe;\n volumeETH_lte?: Maybe;\n volumeETH_in?: Maybe>;\n volumeETH_not_in?: Maybe>;\n volumeUSD?: Maybe;\n volumeUSD_not?: Maybe;\n volumeUSD_gt?: Maybe;\n volumeUSD_lt?: Maybe;\n volumeUSD_gte?: Maybe;\n volumeUSD_lte?: Maybe;\n volumeUSD_in?: Maybe>;\n volumeUSD_not_in?: Maybe>;\n volumeUSDUntracked?: Maybe;\n volumeUSDUntracked_not?: Maybe;\n volumeUSDUntracked_gt?: Maybe;\n volumeUSDUntracked_lt?: Maybe;\n volumeUSDUntracked_gte?: Maybe;\n volumeUSDUntracked_lte?: Maybe;\n volumeUSDUntracked_in?: Maybe>;\n volumeUSDUntracked_not_in?: Maybe>;\n feesUSD?: Maybe;\n feesUSD_not?: Maybe;\n feesUSD_gt?: Maybe;\n feesUSD_lt?: Maybe;\n feesUSD_gte?: Maybe;\n feesUSD_lte?: Maybe;\n feesUSD_in?: Maybe>;\n feesUSD_not_in?: Maybe>;\n txCount?: Maybe;\n txCount_not?: Maybe;\n txCount_gt?: Maybe;\n txCount_lt?: Maybe;\n txCount_gte?: Maybe;\n txCount_lte?: Maybe;\n txCount_in?: Maybe>;\n txCount_not_in?: Maybe>;\n tvlUSD?: Maybe;\n tvlUSD_not?: Maybe;\n tvlUSD_gt?: Maybe;\n tvlUSD_lt?: Maybe;\n tvlUSD_gte?: Maybe;\n tvlUSD_lte?: Maybe;\n tvlUSD_in?: Maybe>;\n tvlUSD_not_in?: Maybe>;\n};\n\nexport enum UniswapDayData_OrderBy {\n Id = 'id',\n Date = 'date',\n VolumeEth = 'volumeETH',\n VolumeUsd = 'volumeUSD',\n VolumeUsdUntracked = 'volumeUSDUntracked',\n FeesUsd = 'feesUSD',\n TxCount = 'txCount',\n TvlUsd = 'tvlUSD'\n}\n\nexport type _Block_ = {\n __typename?: '_Block_';\n /** The hash of the block */\n hash?: Maybe;\n /** The block number */\n number: Scalars['Int'];\n};\n\n/** The type for the top-level _meta field */\nexport type _Meta_ = {\n __typename?: '_Meta_';\n /**\n * Information about a specific subgraph block. The hash of the block\n * will be null if the _meta field has a block constraint that asks for\n * a block number. It will be filled if the _meta field has no block constraint\n * and therefore asks for the latest block\n */\n block: _Block_;\n /** The deployment ID */\n deployment: Scalars['String'];\n /** If `true`, the subgraph encountered indexing errors at some past block */\n hasIndexingErrors: Scalars['Boolean'];\n};\n\nexport enum _SubgraphErrorPolicy_ {\n /** Data will be returned even if the subgraph has indexing errors */\n Allow = 'allow',\n /** If the subgraph has indexing errors, data will be omitted. The default. */\n Deny = 'deny'\n}\n\nexport type AllV3TicksQueryVariables = Exact<{\n poolAddress: Scalars['String'];\n skip: Scalars['Int'];\n}>;\n\n\nexport type AllV3TicksQuery = (\n { __typename?: 'Query' }\n & { ticks: Array<(\n { __typename?: 'Tick' }\n & Pick\n )> }\n);\n\nexport type FeeTierDistributionQueryVariables = Exact<{\n token0: Scalars['String'];\n token1: Scalars['String'];\n}>;\n\n\nexport type FeeTierDistributionQuery = (\n { __typename?: 'Query' }\n & { _meta?: Maybe<(\n { __typename?: '_Meta_' }\n & { block: (\n { __typename?: '_Block_' }\n & Pick<_Block_, 'number'>\n ) }\n )>, asToken0: Array<(\n { __typename?: 'Pool' }\n & Pick\n )>, asToken1: Array<(\n { __typename?: 'Pool' }\n & Pick\n )> }\n);\n\n\nexport const AllV3TicksDocument = `\n query allV3Ticks($poolAddress: String!, $skip: Int!) {\n ticks(\n first: 1000\n skip: $skip\n where: {poolAddress: $poolAddress}\n orderBy: tickIdx\n ) {\n tickIdx\n liquidityNet\n price0\n price1\n }\n}\n `;\nexport const FeeTierDistributionDocument = `\n query feeTierDistribution($token0: String!, $token1: String!) {\n _meta {\n block {\n number\n }\n }\n asToken0: pools(\n orderBy: totalValueLockedToken0\n orderDirection: desc\n where: {token0: $token0, token1: $token1}\n ) {\n feeTier\n totalValueLockedToken0\n totalValueLockedToken1\n }\n asToken1: pools(\n orderBy: totalValueLockedToken0\n orderDirection: desc\n where: {token0: $token1, token1: $token0}\n ) {\n feeTier\n totalValueLockedToken0\n totalValueLockedToken1\n }\n}\n `;\n\nconst injectedRtkApi = api.injectEndpoints({\n endpoints: (build) => ({\n allV3Ticks: build.query({\n query: (variables) => ({ document: AllV3TicksDocument, variables })\n }),\n feeTierDistribution: build.query({\n query: (variables) => ({ document: FeeTierDistributionDocument, variables })\n }),\n }),\n});\n\nexport { injectedRtkApi as api };\nexport const { useAllV3TicksQuery, useLazyAllV3TicksQuery, useFeeTierDistributionQuery, useLazyFeeTierDistributionQuery } = injectedRtkApi;\n\n","import {\n priceToClosestTick,\n nearestUsableTick,\n FeeAmount,\n TICK_SPACINGS,\n encodeSqrtRatioX96,\n TickMath,\n} from '@uniswap/v3-sdk/dist/'\nimport { Price, Token } from '@uniswap/sdk-core'\nimport JSBI from 'jsbi'\n\nexport function tryParsePrice(baseToken?: Token, quoteToken?: Token, value?: string) {\n if (!baseToken || !quoteToken || !value) {\n return undefined\n }\n\n if (!value.match(/^\\d*\\.?\\d+$/)) {\n return undefined\n }\n\n const [whole, fraction] = value.split('.')\n\n const decimals = fraction?.length ?? 0\n const withoutDecimals = JSBI.BigInt((whole ?? '') + (fraction ?? ''))\n\n return new Price(\n baseToken,\n quoteToken,\n JSBI.multiply(JSBI.BigInt(10 ** decimals), JSBI.BigInt(10 ** baseToken.decimals)),\n JSBI.multiply(withoutDecimals, JSBI.BigInt(10 ** quoteToken.decimals))\n )\n}\n\nexport function tryParseTick(\n baseToken?: Token,\n quoteToken?: Token,\n feeAmount?: FeeAmount,\n value?: string\n): number | undefined {\n if (!baseToken || !quoteToken || !feeAmount || !value) {\n return undefined\n }\n\n const price = tryParsePrice(baseToken, quoteToken, value)\n\n if (!price) {\n return undefined\n }\n\n let tick: number\n\n // check price is within min/max bounds, if outside return min/max\n const sqrtRatioX96 = encodeSqrtRatioX96(price.numerator, price.denominator)\n\n if (JSBI.greaterThanOrEqual(sqrtRatioX96, TickMath.MAX_SQRT_RATIO)) {\n tick = TickMath.MAX_TICK\n } else if (JSBI.lessThanOrEqual(sqrtRatioX96, TickMath.MIN_SQRT_RATIO)) {\n tick = TickMath.MIN_TICK\n } else {\n // this function is agnostic to the base, will always return the correct tick\n tick = priceToClosestTick(price)\n }\n\n return nearestUsableTick(tick, TICK_SPACINGS[feeAmount])\n}\n","import { t } from '@lingui/macro'\nimport { BIG_INT_ZERO } from '../../../constants/misc'\nimport { getTickToPrice } from 'utils/getTickToPrice'\nimport JSBI from 'jsbi'\nimport { PoolState } from '../../../hooks/usePools'\nimport {\n Pool,\n FeeAmount,\n Position,\n priceToClosestTick,\n TickMath,\n tickToPrice,\n TICK_SPACINGS,\n encodeSqrtRatioX96,\n nearestUsableTick,\n} from '@uniswap/v3-sdk/dist/'\nimport { Currency, Token, CurrencyAmount, Price, Rounding } from '@uniswap/sdk-core'\nimport { useCallback, useMemo } from 'react'\nimport { useActiveWeb3React } from '../../../hooks/web3'\nimport { AppState } from '../../index'\nimport { tryParseAmount } from '../../swap/hooks'\nimport { useCurrencyBalances } from '../../wallet/hooks'\nimport {\n Field,\n Bound,\n typeInput,\n typeStartPriceInput,\n typeLeftRangeInput,\n typeRightRangeInput,\n setFullRange,\n} from './actions'\nimport { tryParseTick } from './utils'\nimport { usePool } from 'hooks/usePools'\nimport { useAppDispatch, useAppSelector } from 'state/hooks'\n\nexport function useV3MintState(): AppState['mintV3'] {\n return useAppSelector((state) => state.mintV3)\n}\n\nexport function useV3MintActionHandlers(noLiquidity: boolean | undefined): {\n onFieldAInput: (typedValue: string) => void\n onFieldBInput: (typedValue: string) => void\n onLeftRangeInput: (typedValue: string) => void\n onRightRangeInput: (typedValue: string) => void\n onStartPriceInput: (typedValue: string) => void\n} {\n const dispatch = useAppDispatch()\n\n const onFieldAInput = useCallback(\n (typedValue: string) => {\n dispatch(typeInput({ field: Field.CURRENCY_A, typedValue, noLiquidity: noLiquidity === true }))\n },\n [dispatch, noLiquidity]\n )\n\n const onFieldBInput = useCallback(\n (typedValue: string) => {\n dispatch(typeInput({ field: Field.CURRENCY_B, typedValue, noLiquidity: noLiquidity === true }))\n },\n [dispatch, noLiquidity]\n )\n\n const onLeftRangeInput = useCallback(\n (typedValue: string) => {\n dispatch(typeLeftRangeInput({ typedValue }))\n },\n [dispatch]\n )\n\n const onRightRangeInput = useCallback(\n (typedValue: string) => {\n dispatch(typeRightRangeInput({ typedValue }))\n },\n [dispatch]\n )\n\n const onStartPriceInput = useCallback(\n (typedValue: string) => {\n dispatch(typeStartPriceInput({ typedValue }))\n },\n [dispatch]\n )\n\n return {\n onFieldAInput,\n onFieldBInput,\n onLeftRangeInput,\n onRightRangeInput,\n onStartPriceInput,\n }\n}\n\nexport function useV3DerivedMintInfo(\n currencyA?: Currency,\n currencyB?: Currency,\n feeAmount?: FeeAmount,\n baseCurrency?: Currency,\n // override for existing position\n existingPosition?: Position\n): {\n pool?: Pool | null\n poolState: PoolState\n ticks: { [bound in Bound]?: number | undefined }\n price?: Price\n pricesAtTicks: {\n [bound in Bound]?: Price | undefined\n }\n currencies: { [field in Field]?: Currency }\n currencyBalances: { [field in Field]?: CurrencyAmount }\n dependentField: Field\n parsedAmounts: { [field in Field]?: CurrencyAmount }\n position: Position | undefined\n noLiquidity?: boolean\n errorMessage?: string\n invalidPool: boolean\n outOfRange: boolean\n invalidRange: boolean\n depositADisabled: boolean\n depositBDisabled: boolean\n invertPrice: boolean\n ticksAtLimit: { [bound in Bound]?: boolean | undefined }\n} {\n const { account } = useActiveWeb3React()\n\n const { independentField, typedValue, leftRangeTypedValue, rightRangeTypedValue, startPriceTypedValue } =\n useV3MintState()\n\n const dependentField = independentField === Field.CURRENCY_A ? Field.CURRENCY_B : Field.CURRENCY_A\n\n // currencies\n const currencies: { [field in Field]?: Currency } = useMemo(\n () => ({\n [Field.CURRENCY_A]: currencyA,\n [Field.CURRENCY_B]: currencyB,\n }),\n [currencyA, currencyB]\n )\n\n // formatted with tokens\n const [tokenA, tokenB, baseToken] = useMemo(\n () => [currencyA?.wrapped, currencyB?.wrapped, baseCurrency?.wrapped],\n [currencyA, currencyB, baseCurrency]\n )\n\n const [token0, token1] = useMemo(\n () =>\n tokenA && tokenB ? (tokenA.sortsBefore(tokenB) ? [tokenA, tokenB] : [tokenB, tokenA]) : [undefined, undefined],\n [tokenA, tokenB]\n )\n\n // balances\n const balances = useCurrencyBalances(account ?? undefined, [\n currencies[Field.CURRENCY_A],\n currencies[Field.CURRENCY_B],\n ])\n const currencyBalances: { [field in Field]?: CurrencyAmount } = {\n [Field.CURRENCY_A]: balances[0],\n [Field.CURRENCY_B]: balances[1],\n }\n\n // pool\n const [poolState, pool] = usePool(currencies[Field.CURRENCY_A], currencies[Field.CURRENCY_B], feeAmount)\n const noLiquidity = poolState === PoolState.NOT_EXISTS\n\n // note to parse inputs in reverse\n const invertPrice = Boolean(baseToken && token0 && !baseToken.equals(token0))\n\n // always returns the price with 0 as base token\n const price: Price | undefined = useMemo(() => {\n // if no liquidity use typed value\n if (noLiquidity) {\n const parsedQuoteAmount = tryParseAmount(startPriceTypedValue, invertPrice ? token0 : token1)\n if (parsedQuoteAmount && token0 && token1) {\n const baseAmount = tryParseAmount('1', invertPrice ? token1 : token0)\n const price =\n baseAmount && parsedQuoteAmount\n ? new Price(\n baseAmount.currency,\n parsedQuoteAmount.currency,\n baseAmount.quotient,\n parsedQuoteAmount.quotient\n )\n : undefined\n return (invertPrice ? price?.invert() : price) ?? undefined\n }\n return undefined\n } else {\n // get the amount of quote currency\n return pool && token0 ? pool.priceOf(token0) : undefined\n }\n }, [noLiquidity, startPriceTypedValue, invertPrice, token1, token0, pool])\n\n // check for invalid price input (converts to invalid ratio)\n const invalidPrice = useMemo(() => {\n const sqrtRatioX96 = price ? encodeSqrtRatioX96(price.numerator, price.denominator) : undefined\n const invalid =\n price &&\n sqrtRatioX96 &&\n !(\n JSBI.greaterThanOrEqual(sqrtRatioX96, TickMath.MIN_SQRT_RATIO) &&\n JSBI.lessThan(sqrtRatioX96, TickMath.MAX_SQRT_RATIO)\n )\n return invalid\n }, [price])\n\n // used for ratio calculation when pool not initialized\n const mockPool = useMemo(() => {\n if (tokenA && tokenB && feeAmount && price && !invalidPrice) {\n const currentTick = priceToClosestTick(price)\n const currentSqrt = TickMath.getSqrtRatioAtTick(currentTick)\n return new Pool(tokenA, tokenB, feeAmount, currentSqrt, JSBI.BigInt(0), currentTick, [])\n } else {\n return undefined\n }\n }, [feeAmount, invalidPrice, price, tokenA, tokenB])\n\n // if pool exists use it, if not use the mock pool\n const poolForPosition: Pool | undefined = pool ?? mockPool\n\n // lower and upper limits in the tick space for `feeAmount`\n const tickSpaceLimits: {\n [bound in Bound]: number | undefined\n } = useMemo(\n () => ({\n [Bound.LOWER]: feeAmount ? nearestUsableTick(TickMath.MIN_TICK, TICK_SPACINGS[feeAmount]) : undefined,\n [Bound.UPPER]: feeAmount ? nearestUsableTick(TickMath.MAX_TICK, TICK_SPACINGS[feeAmount]) : undefined,\n }),\n [feeAmount]\n )\n\n // parse typed range values and determine closest ticks\n // lower should always be a smaller tick\n const ticks: {\n [key: string]: number | undefined\n } = useMemo(() => {\n return {\n [Bound.LOWER]:\n typeof existingPosition?.tickLower === 'number'\n ? existingPosition.tickLower\n : (invertPrice && typeof rightRangeTypedValue === 'boolean') ||\n (!invertPrice && typeof leftRangeTypedValue === 'boolean')\n ? tickSpaceLimits[Bound.LOWER]\n : invertPrice\n ? tryParseTick(token1, token0, feeAmount, rightRangeTypedValue.toString())\n : tryParseTick(token0, token1, feeAmount, leftRangeTypedValue.toString()),\n [Bound.UPPER]:\n typeof existingPosition?.tickUpper === 'number'\n ? existingPosition.tickUpper\n : (!invertPrice && typeof rightRangeTypedValue === 'boolean') ||\n (invertPrice && typeof leftRangeTypedValue === 'boolean')\n ? tickSpaceLimits[Bound.UPPER]\n : invertPrice\n ? tryParseTick(token1, token0, feeAmount, leftRangeTypedValue.toString())\n : tryParseTick(token0, token1, feeAmount, rightRangeTypedValue.toString()),\n }\n }, [\n existingPosition,\n feeAmount,\n invertPrice,\n leftRangeTypedValue,\n rightRangeTypedValue,\n token0,\n token1,\n tickSpaceLimits,\n ])\n\n const { [Bound.LOWER]: tickLower, [Bound.UPPER]: tickUpper } = ticks || {}\n\n // specifies whether the lower and upper ticks is at the exteme bounds\n const ticksAtLimit = useMemo(\n () => ({\n [Bound.LOWER]: feeAmount && tickLower === tickSpaceLimits.LOWER,\n [Bound.UPPER]: feeAmount && tickUpper === tickSpaceLimits.UPPER,\n }),\n [tickSpaceLimits, tickLower, tickUpper, feeAmount]\n )\n\n // mark invalid range\n const invalidRange = Boolean(typeof tickLower === 'number' && typeof tickUpper === 'number' && tickLower >= tickUpper)\n\n // always returns the price with 0 as base token\n const pricesAtTicks = useMemo(() => {\n return {\n [Bound.LOWER]: getTickToPrice(token0, token1, ticks[Bound.LOWER]),\n [Bound.UPPER]: getTickToPrice(token0, token1, ticks[Bound.UPPER]),\n }\n }, [token0, token1, ticks])\n const { [Bound.LOWER]: lowerPrice, [Bound.UPPER]: upperPrice } = pricesAtTicks\n\n // liquidity range warning\n const outOfRange = Boolean(\n !invalidRange && price && lowerPrice && upperPrice && (price.lessThan(lowerPrice) || price.greaterThan(upperPrice))\n )\n\n // amounts\n const independentAmount: CurrencyAmount | undefined = tryParseAmount(\n typedValue,\n currencies[independentField]\n )\n\n const dependentAmount: CurrencyAmount | undefined = useMemo(() => {\n // we wrap the currencies just to get the price in terms of the other token\n const wrappedIndependentAmount = independentAmount?.wrapped\n const dependentCurrency = dependentField === Field.CURRENCY_B ? currencyB : currencyA\n if (\n independentAmount &&\n wrappedIndependentAmount &&\n typeof tickLower === 'number' &&\n typeof tickUpper === 'number' &&\n poolForPosition\n ) {\n // if price is out of range or invalid range - return 0 (single deposit will be independent)\n if (outOfRange || invalidRange) {\n return undefined\n }\n\n const position: Position | undefined = wrappedIndependentAmount.currency.equals(poolForPosition.token0)\n ? Position.fromAmount0({\n pool: poolForPosition,\n tickLower,\n tickUpper,\n amount0: independentAmount.quotient,\n useFullPrecision: true, // we want full precision for the theoretical position\n })\n : Position.fromAmount1({\n pool: poolForPosition,\n tickLower,\n tickUpper,\n amount1: independentAmount.quotient,\n })\n\n const dependentTokenAmount = wrappedIndependentAmount.currency.equals(poolForPosition.token0)\n ? position.amount1\n : position.amount0\n return dependentCurrency && CurrencyAmount.fromRawAmount(dependentCurrency, dependentTokenAmount.quotient)\n }\n\n return undefined\n }, [\n independentAmount,\n outOfRange,\n dependentField,\n currencyB,\n currencyA,\n tickLower,\n tickUpper,\n poolForPosition,\n invalidRange,\n ])\n\n const parsedAmounts: { [field in Field]: CurrencyAmount | undefined } = useMemo(() => {\n return {\n [Field.CURRENCY_A]: independentField === Field.CURRENCY_A ? independentAmount : dependentAmount,\n [Field.CURRENCY_B]: independentField === Field.CURRENCY_A ? dependentAmount : independentAmount,\n }\n }, [dependentAmount, independentAmount, independentField])\n\n // single deposit only if price is out of range\n const deposit0Disabled = Boolean(\n typeof tickUpper === 'number' && poolForPosition && poolForPosition.tickCurrent >= tickUpper\n )\n const deposit1Disabled = Boolean(\n typeof tickLower === 'number' && poolForPosition && poolForPosition.tickCurrent <= tickLower\n )\n\n // sorted for token order\n const depositADisabled =\n invalidRange ||\n Boolean(\n (deposit0Disabled && poolForPosition && tokenA && poolForPosition.token0.equals(tokenA)) ||\n (deposit1Disabled && poolForPosition && tokenA && poolForPosition.token1.equals(tokenA))\n )\n const depositBDisabled =\n invalidRange ||\n Boolean(\n (deposit0Disabled && poolForPosition && tokenB && poolForPosition.token0.equals(tokenB)) ||\n (deposit1Disabled && poolForPosition && tokenB && poolForPosition.token1.equals(tokenB))\n )\n\n // create position entity based on users selection\n const position: Position | undefined = useMemo(() => {\n if (\n !poolForPosition ||\n !tokenA ||\n !tokenB ||\n typeof tickLower !== 'number' ||\n typeof tickUpper !== 'number' ||\n invalidRange\n ) {\n return undefined\n }\n\n // mark as 0 if disabled because out of range\n const amount0 = !deposit0Disabled\n ? parsedAmounts?.[tokenA.equals(poolForPosition.token0) ? Field.CURRENCY_A : Field.CURRENCY_B]?.quotient\n : BIG_INT_ZERO\n const amount1 = !deposit1Disabled\n ? parsedAmounts?.[tokenA.equals(poolForPosition.token0) ? Field.CURRENCY_B : Field.CURRENCY_A]?.quotient\n : BIG_INT_ZERO\n\n if (amount0 !== undefined && amount1 !== undefined) {\n return Position.fromAmounts({\n pool: poolForPosition,\n tickLower,\n tickUpper,\n amount0,\n amount1,\n useFullPrecision: true, // we want full precision for the theoretical position\n })\n } else {\n return undefined\n }\n }, [\n parsedAmounts,\n poolForPosition,\n tokenA,\n tokenB,\n deposit0Disabled,\n deposit1Disabled,\n invalidRange,\n tickLower,\n tickUpper,\n ])\n\n let errorMessage: string | undefined\n if (!account) {\n errorMessage = t`Connect Wallet`\n }\n\n if (poolState === PoolState.INVALID) {\n errorMessage = errorMessage ?? t`Invalid pair`\n }\n\n if (invalidPrice) {\n errorMessage = errorMessage ?? t`Invalid price input`\n }\n\n if (\n (!parsedAmounts[Field.CURRENCY_A] && !depositADisabled) ||\n (!parsedAmounts[Field.CURRENCY_B] && !depositBDisabled)\n ) {\n errorMessage = errorMessage ?? t`Enter an amount`\n }\n\n const { [Field.CURRENCY_A]: currencyAAmount, [Field.CURRENCY_B]: currencyBAmount } = parsedAmounts\n\n if (currencyAAmount && currencyBalances?.[Field.CURRENCY_A]?.lessThan(currencyAAmount)) {\n errorMessage = t`Insufficient ${currencies[Field.CURRENCY_A]?.symbol} balance`\n }\n\n if (currencyBAmount && currencyBalances?.[Field.CURRENCY_B]?.lessThan(currencyBAmount)) {\n errorMessage = t`Insufficient ${currencies[Field.CURRENCY_B]?.symbol} balance`\n }\n\n const invalidPool = poolState === PoolState.INVALID\n\n return {\n dependentField,\n currencies,\n pool,\n poolState,\n currencyBalances,\n parsedAmounts,\n ticks,\n price,\n pricesAtTicks,\n position,\n noLiquidity,\n errorMessage,\n invalidPool,\n invalidRange,\n outOfRange,\n depositADisabled,\n depositBDisabled,\n invertPrice,\n ticksAtLimit,\n }\n}\n\nexport function useRangeHopCallbacks(\n baseCurrency: Currency | undefined,\n quoteCurrency: Currency | undefined,\n feeAmount: FeeAmount | undefined,\n tickLower: number | undefined,\n tickUpper: number | undefined,\n pool?: Pool | undefined | null\n) {\n const dispatch = useAppDispatch()\n\n const baseToken = useMemo(() => baseCurrency?.wrapped, [baseCurrency])\n const quoteToken = useMemo(() => quoteCurrency?.wrapped, [quoteCurrency])\n\n const getDecrementLower = useCallback(() => {\n if (baseToken && quoteToken && typeof tickLower === 'number' && feeAmount) {\n const newPrice = tickToPrice(baseToken, quoteToken, tickLower - TICK_SPACINGS[feeAmount])\n return newPrice.toSignificant(5, undefined, Rounding.ROUND_UP)\n }\n // use pool current tick as starting tick if we have pool but no tick input\n if (!(typeof tickLower === 'number') && baseToken && quoteToken && feeAmount && pool) {\n const newPrice = tickToPrice(baseToken, quoteToken, pool.tickCurrent - TICK_SPACINGS[feeAmount])\n return newPrice.toSignificant(5, undefined, Rounding.ROUND_UP)\n }\n return ''\n }, [baseToken, quoteToken, tickLower, feeAmount, pool])\n\n const getIncrementLower = useCallback(() => {\n if (baseToken && quoteToken && typeof tickLower === 'number' && feeAmount) {\n const newPrice = tickToPrice(baseToken, quoteToken, tickLower + TICK_SPACINGS[feeAmount])\n return newPrice.toSignificant(5, undefined, Rounding.ROUND_UP)\n }\n // use pool current tick as starting tick if we have pool but no tick input\n if (!(typeof tickLower === 'number') && baseToken && quoteToken && feeAmount && pool) {\n const newPrice = tickToPrice(baseToken, quoteToken, pool.tickCurrent + TICK_SPACINGS[feeAmount])\n return newPrice.toSignificant(5, undefined, Rounding.ROUND_UP)\n }\n return ''\n }, [baseToken, quoteToken, tickLower, feeAmount, pool])\n\n const getDecrementUpper = useCallback(() => {\n if (baseToken && quoteToken && typeof tickUpper === 'number' && feeAmount) {\n const newPrice = tickToPrice(baseToken, quoteToken, tickUpper - TICK_SPACINGS[feeAmount])\n return newPrice.toSignificant(5, undefined, Rounding.ROUND_UP)\n }\n // use pool current tick as starting tick if we have pool but no tick input\n if (!(typeof tickUpper === 'number') && baseToken && quoteToken && feeAmount && pool) {\n const newPrice = tickToPrice(baseToken, quoteToken, pool.tickCurrent - TICK_SPACINGS[feeAmount])\n return newPrice.toSignificant(5, undefined, Rounding.ROUND_UP)\n }\n return ''\n }, [baseToken, quoteToken, tickUpper, feeAmount, pool])\n\n const getIncrementUpper = useCallback(() => {\n if (baseToken && quoteToken && typeof tickUpper === 'number' && feeAmount) {\n const newPrice = tickToPrice(baseToken, quoteToken, tickUpper + TICK_SPACINGS[feeAmount])\n return newPrice.toSignificant(5, undefined, Rounding.ROUND_UP)\n }\n // use pool current tick as starting tick if we have pool but no tick input\n if (!(typeof tickUpper === 'number') && baseToken && quoteToken && feeAmount && pool) {\n const newPrice = tickToPrice(baseToken, quoteToken, pool.tickCurrent + TICK_SPACINGS[feeAmount])\n return newPrice.toSignificant(5, undefined, Rounding.ROUND_UP)\n }\n return ''\n }, [baseToken, quoteToken, tickUpper, feeAmount, pool])\n\n const getSetRange = useCallback(\n (numTicks: number) => {\n if (baseToken && quoteToken && feeAmount && pool) {\n // calculate range around current price given `numTicks`\n const newPriceLower = tickToPrice(\n baseToken,\n quoteToken,\n Math.max(TickMath.MIN_TICK, pool.tickCurrent - numTicks)\n )\n const newPriceUpper = tickToPrice(\n baseToken,\n quoteToken,\n Math.min(TickMath.MAX_TICK, pool.tickCurrent + numTicks)\n )\n\n return [\n newPriceLower.toSignificant(5, undefined, Rounding.ROUND_UP),\n newPriceUpper.toSignificant(5, undefined, Rounding.ROUND_UP),\n ]\n }\n return ['', '']\n },\n [baseToken, quoteToken, feeAmount, pool]\n )\n\n const getSetFullRange = useCallback(() => {\n dispatch(setFullRange())\n }, [dispatch])\n\n return { getDecrementLower, getIncrementLower, getDecrementUpper, getIncrementUpper, getSetRange, getSetFullRange }\n}\n","import { useSingleCallResult, useSingleContractMultipleData, Result } from 'state/multicall/hooks'\nimport { useMemo } from 'react'\nimport { PositionDetails } from 'types/position'\nimport { useV3NFTPositionManagerContract } from './useContract'\nimport { BigNumber } from '@ethersproject/bignumber'\n\ninterface UseV3PositionsResults {\n loading: boolean\n positions: PositionDetails[] | undefined\n}\n\nfunction useV3PositionsFromTokenIds(tokenIds: BigNumber[] | undefined): UseV3PositionsResults {\n const positionManager = useV3NFTPositionManagerContract()\n const inputs = useMemo(() => (tokenIds ? tokenIds.map((tokenId) => [BigNumber.from(tokenId)]) : []), [tokenIds])\n const results = useSingleContractMultipleData(positionManager, 'positions', inputs)\n\n const loading = useMemo(() => results.some(({ loading }) => loading), [results])\n const error = useMemo(() => results.some(({ error }) => error), [results])\n\n const positions = useMemo(() => {\n if (!loading && !error && tokenIds) {\n return results.map((call, i) => {\n const tokenId = tokenIds[i]\n const result = call.result as Result\n return {\n tokenId,\n fee: result.fee,\n feeGrowthInside0LastX128: result.feeGrowthInside0LastX128,\n feeGrowthInside1LastX128: result.feeGrowthInside1LastX128,\n liquidity: result.liquidity,\n nonce: result.nonce,\n operator: result.operator,\n tickLower: result.tickLower,\n tickUpper: result.tickUpper,\n token0: result.token0,\n token1: result.token1,\n tokensOwed0: result.tokensOwed0,\n tokensOwed1: result.tokensOwed1,\n }\n })\n }\n return undefined\n }, [loading, error, results, tokenIds])\n\n return {\n loading,\n positions: positions?.map((position, i) => ({ ...position, tokenId: inputs[i][0] })),\n }\n}\n\ninterface UseV3PositionResults {\n loading: boolean\n position: PositionDetails | undefined\n}\n\nexport function useV3PositionFromTokenId(tokenId: BigNumber | undefined): UseV3PositionResults {\n const position = useV3PositionsFromTokenIds(tokenId ? [tokenId] : undefined)\n return {\n loading: position.loading,\n position: position.positions?.[0],\n }\n}\n\nexport function useV3Positions(account: string | null | undefined): UseV3PositionsResults {\n const positionManager = useV3NFTPositionManagerContract()\n\n const { loading: balanceLoading, result: balanceResult } = useSingleCallResult(positionManager, 'balanceOf', [\n account ?? undefined,\n ])\n\n // we don't expect any account balance to ever exceed the bounds of max safe int\n const accountBalance: number | undefined = balanceResult?.[0]?.toNumber()\n\n const tokenIdsArgs = useMemo(() => {\n if (accountBalance && account) {\n const tokenRequests = []\n for (let i = 0; i < accountBalance; i++) {\n tokenRequests.push([account, i])\n }\n return tokenRequests\n }\n return []\n }, [account, accountBalance])\n\n const tokenIdResults = useSingleContractMultipleData(positionManager, 'tokenOfOwnerByIndex', tokenIdsArgs)\n const someTokenIdsLoading = useMemo(() => tokenIdResults.some(({ loading }) => loading), [tokenIdResults])\n\n const tokenIds = useMemo(() => {\n if (account) {\n return tokenIdResults\n .map(({ result }) => result)\n .filter((result): result is Result => !!result)\n .map((result) => BigNumber.from(result[0]))\n }\n return []\n }, [account, tokenIdResults])\n\n const { positions, loading: positionsLoading } = useV3PositionsFromTokenIds(tokenIds)\n\n return {\n loading: someTokenIdsLoading || balanceLoading || positionsLoading,\n positions,\n }\n}\n","import { api as generatedApi } from './generated'\n\n// tag that should be applied to queries that need to be invalidated when the chain changes\nexport const CHAIN_TAG = 'Chain'\n\n// enhanced api to provide/invalidate tags\nexport const api = generatedApi.enhanceEndpoints({\n addTagTypes: [CHAIN_TAG],\n endpoints: {\n allV3Ticks: {\n providesTags: [CHAIN_TAG],\n },\n feeTierDistribution: {\n providesTags: [CHAIN_TAG],\n },\n },\n})\n\nexport const { useAllV3TicksQuery, useFeeTierDistributionQuery } = api\n","import { FeeAmount } from '@uniswap/v3-sdk'\nimport { Token, Currency } from '@uniswap/sdk-core'\nimport { useFeeTierDistributionQuery } from 'state/data/enhanced'\nimport { skipToken } from '@reduxjs/toolkit/query/react'\nimport { reduce } from 'lodash'\nimport { useBlockNumber } from 'state/application/hooks'\nimport ReactGA from 'react-ga'\nimport { useMemo } from 'react'\nimport { FeeTierDistributionQuery } from 'state/data/generated'\nimport ms from 'ms.macro'\nimport { PoolState, usePool } from './usePools'\n\n// maximum number of blocks past which we consider the data stale\nconst MAX_DATA_BLOCK_AGE = 10\n\ninterface FeeTierDistribution {\n isLoading: boolean\n isError: boolean\n largestUsageFeeTier?: FeeAmount | undefined\n\n // distributions as percentages of overall liquidity\n distributions?: {\n [FeeAmount.LOW]: number | undefined\n [FeeAmount.MEDIUM]: number | undefined\n [FeeAmount.HIGH]: number | undefined\n }\n}\n\nexport function useFeeTierDistribution(\n currencyA: Currency | undefined,\n currencyB: Currency | undefined\n): FeeTierDistribution {\n const { isFetching, isLoading, isUninitialized, isError, distributions } = usePoolTVL(\n currencyA?.wrapped,\n currencyB?.wrapped\n )\n\n // fetch all pool states to determine pool state\n const [poolStateLow] = usePool(currencyA, currencyB, FeeAmount.LOW)\n const [poolStateMedium] = usePool(currencyA, currencyB, FeeAmount.MEDIUM)\n const [poolStateHigh] = usePool(currencyA, currencyB, FeeAmount.HIGH)\n\n return useMemo(() => {\n if (isLoading || isFetching || isUninitialized || isError || !distributions) {\n return {\n isLoading: isLoading || isFetching || !isUninitialized,\n isError,\n distributions,\n }\n }\n\n const largestUsageFeeTier = Object.keys(distributions)\n .map((d) => Number(d))\n .filter((d: FeeAmount) => distributions[d] !== 0 && distributions[d] !== undefined)\n .reduce((a: FeeAmount, b: FeeAmount) => ((distributions[a] ?? 0) > (distributions[b] ?? 0) ? a : b), -1)\n\n const percentages =\n !isLoading &&\n !isError &&\n distributions &&\n poolStateLow !== PoolState.LOADING &&\n poolStateMedium !== PoolState.LOADING &&\n poolStateHigh !== PoolState.LOADING\n ? {\n [FeeAmount.LOW]: poolStateLow === PoolState.EXISTS ? (distributions[FeeAmount.LOW] ?? 0) * 100 : undefined,\n [FeeAmount.MEDIUM]:\n poolStateMedium === PoolState.EXISTS ? (distributions[FeeAmount.MEDIUM] ?? 0) * 100 : undefined,\n [FeeAmount.HIGH]:\n poolStateHigh === PoolState.EXISTS ? (distributions[FeeAmount.HIGH] ?? 0) * 100 : undefined,\n }\n : undefined\n\n return {\n isLoading,\n isError,\n distributions: percentages,\n largestUsageFeeTier: largestUsageFeeTier === -1 ? undefined : largestUsageFeeTier,\n }\n }, [isLoading, isFetching, isUninitialized, isError, distributions, poolStateLow, poolStateMedium, poolStateHigh])\n}\n\nfunction usePoolTVL(token0: Token | undefined, token1: Token | undefined) {\n const latestBlock = useBlockNumber()\n\n const { isLoading, isFetching, isUninitialized, isError, data } = useFeeTierDistributionQuery(\n token0 && token1 ? { token0: token0.address.toLowerCase(), token1: token1.address.toLowerCase() } : skipToken,\n {\n pollingInterval: ms`2m`,\n }\n )\n\n const { asToken0, asToken1, _meta } = (data as FeeTierDistributionQuery) ?? {}\n\n return useMemo(() => {\n if (!latestBlock || !_meta || !asToken0 || !asToken1) {\n return {\n isLoading,\n isFetching,\n isUninitialized,\n isError,\n }\n }\n\n if (latestBlock - (_meta?.block?.number ?? 0) > MAX_DATA_BLOCK_AGE) {\n ReactGA.exception({\n description: `Graph stale (latest block: ${latestBlock})`,\n })\n\n return {\n isLoading,\n isFetching,\n isUninitialized,\n isError,\n }\n }\n\n const all = asToken0.concat(asToken1)\n\n // sum tvl for token0 and token1 by fee tier\n const tvlByFeeTer = all.reduce<{ [feeAmount: number]: [number | undefined, number | undefined] }>(\n (acc, value) => {\n acc[value.feeTier][0] = (acc[value.feeTier][0] ?? 0) + Number(value.totalValueLockedToken0)\n acc[value.feeTier][1] = (acc[value.feeTier][1] ?? 0) + Number(value.totalValueLockedToken1)\n return acc\n },\n {\n [FeeAmount.LOW]: [undefined, undefined],\n [FeeAmount.MEDIUM]: [undefined, undefined],\n [FeeAmount.HIGH]: [undefined, undefined],\n }\n )\n\n // sum total tvl for token0 and token1\n const [sumToken0Tvl, sumToken1Tvl] = reduce(\n tvlByFeeTer,\n (acc: [number, number], value) => {\n acc[0] += value[0] ?? 0\n acc[1] += value[1] ?? 0\n return acc\n },\n [0, 0]\n )\n\n // returns undefined if both tvl0 and tvl1 are undefined (pool not created)\n const mean = (tvl0: number | undefined, sumTvl0: number, tvl1: number | undefined, sumTvl1: number) =>\n tvl0 === undefined && tvl1 === undefined ? undefined : ((tvl0 ?? 0) + (tvl1 ?? 0)) / (sumTvl0 + sumTvl1) || 0\n\n return {\n isLoading,\n isFetching,\n isUninitialized,\n isError,\n distributions: {\n [FeeAmount.LOW]: mean(tvlByFeeTer[FeeAmount.LOW][0], sumToken0Tvl, tvlByFeeTer[FeeAmount.LOW][1], sumToken1Tvl),\n [FeeAmount.MEDIUM]: mean(\n tvlByFeeTer[FeeAmount.MEDIUM][0],\n sumToken0Tvl,\n tvlByFeeTer[FeeAmount.MEDIUM][1],\n sumToken1Tvl\n ),\n [FeeAmount.HIGH]: mean(\n tvlByFeeTer[FeeAmount.HIGH][0],\n sumToken0Tvl,\n tvlByFeeTer[FeeAmount.HIGH][1],\n sumToken1Tvl\n ),\n },\n }\n }, [_meta, asToken0, asToken1, isLoading, isError, isFetching, isUninitialized, latestBlock])\n}\n","import React, { useCallback, useEffect, useRef, useState } from 'react'\nimport { FeeAmount } from '@uniswap/v3-sdk'\nimport { Currency } from '@uniswap/sdk-core'\nimport { Trans } from '@lingui/macro'\nimport { AutoColumn } from 'components/Column'\nimport { DynamicSection } from 'pages/AddLiquidity/styled'\nimport { TYPE } from 'theme'\nimport { RowBetween } from 'components/Row'\nimport { ButtonGray, ButtonRadioChecked } from 'components/Button'\nimport styled, { keyframes } from 'styled-components/macro'\nimport Badge from 'components/Badge'\nimport Card from 'components/Card'\nimport usePrevious from 'hooks/usePrevious'\nimport { useFeeTierDistribution } from 'hooks/useFeeTierDistribution'\nimport ReactGA from 'react-ga'\nimport { Box } from 'rebass'\n\nconst pulse = (color: string) => keyframes`\n 0% {\n box-shadow: 0 0 0 0 ${color};\n }\n\n 70% {\n box-shadow: 0 0 0 2px ${color};\n }\n\n 100% {\n box-shadow: 0 0 0 0 ${color};\n }\n`\n\nconst ResponsiveText = styled(TYPE.label)`\n line-height: 16px;\n\n ${({ theme }) => theme.mediaWidth.upToSmall`\n font-size: 12px;\n line-height: 12px;\n `};\n`\n\nconst FocusedOutlineCard = styled(Card)<{ pulsing: boolean }>`\n border: 1px solid ${({ theme }) => theme.bg2};\n animation: ${({ pulsing, theme }) => pulsing && pulse(theme.primary1)} 0.6s linear;\n`\n\nconst FeeAmountLabel = {\n [FeeAmount.LOW]: {\n label: '0.05',\n description: Best for stable pairs.,\n },\n [FeeAmount.MEDIUM]: {\n label: '0.3',\n description: Best for most pairs.,\n },\n [FeeAmount.HIGH]: {\n label: '1',\n description: Best for exotic pairs.,\n },\n}\n\nconst FeeTierPercentageBadge = ({ percentage }: { percentage: number | undefined }) => {\n return (\n \n \n {percentage !== undefined ? {percentage?.toFixed(0)}% select : Not created}\n \n \n )\n}\n\nexport default function FeeSelector({\n disabled = false,\n feeAmount,\n handleFeePoolSelect,\n currencyA,\n currencyB,\n}: {\n disabled?: boolean\n feeAmount?: FeeAmount\n handleFeePoolSelect: (feeAmount: FeeAmount) => void\n currencyA?: Currency | undefined\n currencyB?: Currency | undefined\n}) {\n const { isLoading, isError, largestUsageFeeTier, distributions } = useFeeTierDistribution(currencyA, currencyB)\n\n const [showOptions, setShowOptions] = useState(false)\n const [pulsing, setPulsing] = useState(false)\n\n const previousFeeAmount = usePrevious(feeAmount)\n\n const recommended = useRef(false)\n\n const handleFeePoolSelectWithEvent = useCallback(\n (fee) => {\n ReactGA.event({\n category: 'FeePoolSelect',\n action: 'Manual',\n })\n handleFeePoolSelect(fee)\n },\n [handleFeePoolSelect]\n )\n\n useEffect(() => {\n if (feeAmount || isLoading || isError) {\n return\n }\n\n if (!largestUsageFeeTier) {\n // cannot recommend, open options\n setShowOptions(true)\n } else {\n setShowOptions(false)\n\n recommended.current = true\n ReactGA.event({\n category: 'FeePoolSelect',\n action: ' Recommended',\n })\n\n handleFeePoolSelect(largestUsageFeeTier)\n }\n }, [feeAmount, isLoading, isError, largestUsageFeeTier, handleFeePoolSelect])\n\n useEffect(() => {\n setShowOptions(isError)\n }, [isError])\n\n useEffect(() => {\n if (feeAmount && previousFeeAmount !== feeAmount) {\n setPulsing(true)\n }\n }, [previousFeeAmount, feeAmount])\n\n return (\n \n \n setPulsing(false)}>\n \n \n {!feeAmount ? (\n <>\n \n Fee tier\n \n \n The % you will earn in fees.\n \n \n ) : (\n <>\n \n {FeeAmountLabel[feeAmount].label}% fee tier\n \n \n {distributions && feeAmount && }\n \n \n )}\n \n\n setShowOptions(!showOptions)} width=\"auto\" padding=\"4px\" $borderRadius=\"6px\">\n {showOptions ? Hide : Edit}\n \n \n \n\n {showOptions && (\n \n handleFeePoolSelectWithEvent(FeeAmount.LOW)}\n >\n \n \n \n 0.05% fee\n \n \n Best for stable pairs.\n \n \n\n {distributions && }\n \n \n handleFeePoolSelectWithEvent(FeeAmount.MEDIUM)}\n >\n \n \n \n 0.3% fee\n \n \n Best for most pairs.\n \n \n\n {distributions && }\n \n \n handleFeePoolSelectWithEvent(FeeAmount.HIGH)}\n >\n \n \n \n 1% fee\n \n \n Best for exotic pairs.\n \n \n\n {distributions && }\n \n \n \n )}\n \n \n )\n}\n","import { useState, useCallback, useEffect, ReactNode } from 'react'\nimport { OutlineCard } from 'components/Card'\nimport { Input as NumericalInput } from '../NumericalInput'\nimport styled, { keyframes } from 'styled-components/macro'\nimport { TYPE } from 'theme'\nimport { AutoColumn } from 'components/Column'\nimport { ButtonGray } from 'components/Button'\nimport { FeeAmount } from '@uniswap/v3-sdk'\nimport { Trans } from '@lingui/macro'\nimport { Plus, Minus } from 'react-feather'\n\nconst pulse = (color: string) => keyframes`\n 0% {\n box-shadow: 0 0 0 0 ${color};\n }\n\n 70% {\n box-shadow: 0 0 0 2px ${color};\n }\n\n 100% {\n box-shadow: 0 0 0 0 ${color};\n }\n`\n\nconst InputRow = styled.div`\n display: grid;\n\n grid-template-columns: 30px 1fr 30px;\n`\n\nconst SmallButton = styled(ButtonGray)`\n border-radius: 8px;\n padding: 4px;\n`\n\nconst FocusedOutlineCard = styled(OutlineCard)<{ active?: boolean; pulsing?: boolean }>`\n border-color: ${({ active, theme }) => active && theme.blue1};\n padding: 12px;\n animation: ${({ pulsing, theme }) => pulsing && pulse(theme.blue1)} 0.8s linear;\n`\n\nconst StyledInput = styled(NumericalInput)<{ usePercent?: boolean }>`\n background-color: transparent;\n text-align: center;\n width: 100%;\n font-weight: 500;\n padding: 0 10px;\n\n ${({ theme }) => theme.mediaWidth.upToSmall`\n font-size: 16px;\n `};\n\n ${({ theme }) => theme.mediaWidth.upToExtraSmall`\n font-size: 12px;\n `};\n`\n\nconst InputTitle = styled(TYPE.small)`\n color: ${({ theme }) => theme.text2};\n font-size: 12px;\n font-weight: 500;\n`\n\nconst ButtonLabel = styled(TYPE.white)<{ disabled: boolean }>`\n color: ${({ theme, disabled }) => (disabled ? theme.text2 : theme.text1)} !important;\n`\n\ninterface StepCounterProps {\n value: string\n onUserInput: (value: string) => void\n decrement: () => string\n increment: () => string\n decrementDisabled?: boolean\n incrementDisabled?: boolean\n feeAmount?: FeeAmount\n label?: string\n width?: string\n locked?: boolean // disable input\n title: ReactNode\n tokenA: string | undefined\n tokenB: string | undefined\n}\n\nconst StepCounter = ({\n value,\n decrement,\n increment,\n decrementDisabled = false,\n incrementDisabled = false,\n width,\n locked,\n onUserInput,\n title,\n tokenA,\n tokenB,\n}: StepCounterProps) => {\n // for focus state, styled components doesnt let you select input parent container\n const [active, setActive] = useState(false)\n\n // let user type value and only update parent value on blur\n const [localValue, setLocalValue] = useState('')\n const [useLocalValue, setUseLocalValue] = useState(false)\n\n // animation if parent value updates local value\n const [pulsing, setPulsing] = useState(false)\n\n const handleOnFocus = () => {\n setUseLocalValue(true)\n setActive(true)\n }\n\n const handleOnBlur = useCallback(() => {\n setUseLocalValue(false)\n setActive(false)\n onUserInput(localValue) // trigger update on parent value\n }, [localValue, onUserInput])\n\n // for button clicks\n const handleDecrement = useCallback(() => {\n setUseLocalValue(false)\n onUserInput(decrement())\n }, [decrement, onUserInput])\n\n const handleIncrement = useCallback(() => {\n setUseLocalValue(false)\n onUserInput(increment())\n }, [increment, onUserInput])\n\n useEffect(() => {\n if (localValue !== value && !useLocalValue) {\n setTimeout(() => {\n setLocalValue(value) // reset local value to match parent\n setPulsing(true) // trigger animation\n setTimeout(function () {\n setPulsing(false)\n }, 1800)\n }, 0)\n }\n }, [localValue, useLocalValue, value])\n\n return (\n \n \n \n {title}\n \n\n \n {!locked && (\n \n \n \n \n \n )}\n\n {\n setLocalValue(val)\n }}\n />\n\n {!locked && (\n \n \n \n \n \n )}\n \n\n \n \n {tokenB} per {tokenA}\n \n \n \n \n )\n}\n\nexport default StepCounter\n","import { Trans } from '@lingui/macro'\nimport { Currency, Price, Token } from '@uniswap/sdk-core'\nimport StepCounter from 'components/InputStepCounter/InputStepCounter'\nimport { RowBetween } from 'components/Row'\nimport { AutoColumn } from 'components/Column'\nimport { Bound } from 'state/mint/v3/actions'\n\n// currencyA is the base token\nexport default function RangeSelector({\n priceLower,\n priceUpper,\n onLeftRangeInput,\n onRightRangeInput,\n getDecrementLower,\n getIncrementLower,\n getDecrementUpper,\n getIncrementUpper,\n currencyA,\n currencyB,\n feeAmount,\n ticksAtLimit,\n}: {\n priceLower?: Price\n priceUpper?: Price\n getDecrementLower: () => string\n getIncrementLower: () => string\n getDecrementUpper: () => string\n getIncrementUpper: () => string\n onLeftRangeInput: (typedValue: string) => void\n onRightRangeInput: (typedValue: string) => void\n currencyA?: Currency | null\n currencyB?: Currency | null\n feeAmount?: number\n ticksAtLimit: { [bound in Bound]?: boolean | undefined }\n}) {\n const tokenA = (currencyA ?? undefined)?.wrapped\n const tokenB = (currencyB ?? undefined)?.wrapped\n const isSorted = tokenA && tokenB && tokenA.sortsBefore(tokenB)\n\n const leftPrice = isSorted ? priceLower : priceUpper?.invert()\n const rightPrice = isSorted ? priceUpper : priceLower?.invert()\n\n return (\n \n \n Min Price}\n tokenA={currencyA?.symbol}\n tokenB={currencyB?.symbol}\n />\n Max Price}\n />\n \n \n )\n}\n","import { Trans } from '@lingui/macro'\nimport { darken } from 'polished'\nimport { ReactNode } from 'react'\nimport styled from 'styled-components/macro'\n\nconst ToggleElement = styled.span<{ isActive?: boolean; isOnSwitch?: boolean }>`\n padding: 0.25rem 0.6rem;\n border-radius: 9px;\n background: ${({ theme, isActive, isOnSwitch }) => (isActive ? (isOnSwitch ? theme.primary1 : theme.bg4) : 'none')};\n color: ${({ theme, isActive }) => (isActive ? theme.white : theme.text2)};\n font-size: 14px;\n font-weight: ${({ isOnSwitch }) => (isOnSwitch ? '500' : '400')};\n :hover {\n user-select: ${({ isOnSwitch }) => (isOnSwitch ? 'none' : 'initial')};\n background: ${({ theme, isActive, isOnSwitch }) =>\n isActive ? (isOnSwitch ? darken(0.05, theme.primary1) : darken(0.05, theme.bg4)) : 'none'};\n color: ${({ theme, isActive, isOnSwitch }) => (isActive ? (isOnSwitch ? theme.white : theme.white) : theme.text3)};\n }\n`\n\nconst StyledToggle = styled.button<{ isActive?: boolean; activeElement?: boolean }>`\n border-radius: 12px;\n border: none;\n background: ${({ theme }) => theme.bg0};\n display: flex;\n width: fit-content;\n cursor: pointer;\n outline: none;\n padding: 2px;\n`\n\ninterface ToggleProps {\n id?: string\n isActive: boolean\n toggle: () => void\n checked?: ReactNode\n unchecked?: ReactNode\n}\n\nexport default function Toggle({\n id,\n isActive,\n toggle,\n checked = On,\n unchecked = Off,\n}: ToggleProps) {\n return (\n \n \n {checked}\n \n \n {unchecked}\n \n \n )\n}\n","import { t, Trans } from '@lingui/macro'\nimport { useState, useContext } from 'react'\nimport { Percent } from '@uniswap/sdk-core'\nimport styled, { ThemeContext } from 'styled-components/macro'\n\nimport QuestionHelper from '../QuestionHelper'\nimport { TYPE } from '../../theme'\nimport { AutoColumn } from '../Column'\nimport { RowBetween, RowFixed } from '../Row'\nimport { DEFAULT_DEADLINE_FROM_NOW } from 'constants/misc'\nimport { darken } from 'polished'\nimport { useSetUserSlippageTolerance, useUserSlippageTolerance, useUserTransactionTTL } from 'state/user/hooks'\nimport { L2_CHAIN_IDS } from 'constants/chains'\nimport { useActiveWeb3React } from 'hooks/web3'\n\nenum SlippageError {\n InvalidInput = 'InvalidInput',\n}\n\nenum DeadlineError {\n InvalidInput = 'InvalidInput',\n}\n\nconst FancyButton = styled.button`\n color: ${({ theme }) => theme.text1};\n align-items: center;\n height: 2rem;\n border-radius: 36px;\n font-size: 1rem;\n width: auto;\n min-width: 3.5rem;\n border: 1px solid ${({ theme }) => theme.bg3};\n outline: none;\n background: ${({ theme }) => theme.bg1};\n :hover {\n border: 1px solid ${({ theme }) => theme.bg4};\n }\n :focus {\n border: 1px solid ${({ theme }) => theme.primary1};\n }\n`\n\nconst Option = styled(FancyButton)<{ active: boolean }>`\n margin-right: 8px;\n :hover {\n cursor: pointer;\n }\n background-color: ${({ active, theme }) => active && theme.primary1};\n color: ${({ active, theme }) => (active ? theme.white : theme.text1)};\n`\n\nconst Input = styled.input`\n background: ${({ theme }) => theme.bg1};\n font-size: 16px;\n width: auto;\n outline: none;\n &::-webkit-outer-spin-button,\n &::-webkit-inner-spin-button {\n -webkit-appearance: none;\n }\n color: ${({ theme, color }) => (color === 'red' ? theme.red1 : theme.text1)};\n text-align: right;\n`\n\nconst OptionCustom = styled(FancyButton)<{ active?: boolean; warning?: boolean }>`\n height: 2rem;\n position: relative;\n padding: 0 0.75rem;\n flex: 1;\n border: ${({ theme, active, warning }) =>\n active ? `1px solid ${warning ? theme.red1 : theme.primary1}` : warning && `1px solid ${theme.red1}`};\n :hover {\n border: ${({ theme, active, warning }) =>\n active && `1px solid ${warning ? darken(0.1, theme.red1) : darken(0.1, theme.primary1)}`};\n }\n\n input {\n width: 100%;\n height: 100%;\n border: 0px;\n border-radius: 2rem;\n }\n`\n\nconst SlippageEmojiContainer = styled.span`\n color: #f3841e;\n ${({ theme }) => theme.mediaWidth.upToSmall`\n display: none; \n `}\n`\n\ninterface TransactionSettingsProps {\n placeholderSlippage: Percent // varies according to the context in which the settings dialog is placed\n}\n\nexport default function TransactionSettings({ placeholderSlippage }: TransactionSettingsProps) {\n const { chainId } = useActiveWeb3React()\n const theme = useContext(ThemeContext)\n\n const userSlippageTolerance = useUserSlippageTolerance()\n const setUserSlippageTolerance = useSetUserSlippageTolerance()\n\n const [deadline, setDeadline] = useUserTransactionTTL()\n\n const [slippageInput, setSlippageInput] = useState('')\n const [slippageError, setSlippageError] = useState(false)\n\n const [deadlineInput, setDeadlineInput] = useState('')\n const [deadlineError, setDeadlineError] = useState(false)\n\n function parseSlippageInput(value: string) {\n // populate what the user typed and clear the error\n setSlippageInput(value)\n setSlippageError(false)\n\n if (value.length === 0) {\n setUserSlippageTolerance('auto')\n } else {\n const parsed = Math.floor(Number.parseFloat(value) * 100)\n\n if (!Number.isInteger(parsed) || parsed < 0 || parsed > 5000) {\n setUserSlippageTolerance('auto')\n if (value !== '.') {\n setSlippageError(SlippageError.InvalidInput)\n }\n } else {\n setUserSlippageTolerance(new Percent(parsed, 10_000))\n }\n }\n }\n\n const tooLow = userSlippageTolerance !== 'auto' && userSlippageTolerance.lessThan(new Percent(5, 10_000))\n const tooHigh = userSlippageTolerance !== 'auto' && userSlippageTolerance.greaterThan(new Percent(1, 100))\n\n function parseCustomDeadline(value: string) {\n // populate what the user typed and clear the error\n setDeadlineInput(value)\n setDeadlineError(false)\n\n if (value.length === 0) {\n setDeadline(DEFAULT_DEADLINE_FROM_NOW)\n } else {\n try {\n const parsed: number = Math.floor(Number.parseFloat(value) * 60)\n if (!Number.isInteger(parsed) || parsed < 60 || parsed > 180 * 60) {\n setDeadlineError(DeadlineError.InvalidInput)\n } else {\n setDeadline(parsed)\n }\n } catch (error) {\n console.error(error)\n setDeadlineError(DeadlineError.InvalidInput)\n }\n }\n }\n\n const showCustomDeadlineRow = Boolean(chainId && !L2_CHAIN_IDS.includes(chainId))\n\n return (\n \n \n \n \n Slippage tolerance\n \n Your transaction will revert if the price changes unfavorably by more than this percentage.\n }\n />\n \n \n {\n parseSlippageInput('')\n }}\n active={userSlippageTolerance === 'auto'}\n >\n Auto\n \n \n \n {tooLow || tooHigh ? (\n \n \n ⚠️\n \n \n ) : null}\n 0\n ? slippageInput\n : userSlippageTolerance === 'auto'\n ? ''\n : userSlippageTolerance.toFixed(2)\n }\n onChange={(e) => parseSlippageInput(e.target.value)}\n onBlur={() => {\n setSlippageInput('')\n setSlippageError(false)\n }}\n color={slippageError ? 'red' : ''}\n />\n %\n \n \n \n {slippageError || tooLow || tooHigh ? (\n \n {slippageError ? (\n Enter a valid slippage percentage\n ) : tooLow ? (\n Your transaction may fail\n ) : (\n Your transaction may be frontrun\n )}\n \n ) : null}\n \n\n {showCustomDeadlineRow && (\n \n \n \n Transaction deadline\n \n \n \n \n \n 0\n ? deadlineInput\n : deadline === DEFAULT_DEADLINE_FROM_NOW\n ? ''\n : (deadline / 60).toString()\n }\n onChange={(e) => parseCustomDeadline(e.target.value)}\n onBlur={() => {\n setDeadlineInput('')\n setDeadlineError(false)\n }}\n color={deadlineError ? 'red' : ''}\n />\n \n \n minutes\n \n \n \n )}\n \n )\n}\n","import { t, Trans } from '@lingui/macro'\nimport { useContext, useRef, useState } from 'react'\nimport { Settings, X } from 'react-feather'\nimport ReactGA from 'react-ga'\nimport { Text } from 'rebass'\nimport styled, { ThemeContext } from 'styled-components/macro'\nimport { useOnClickOutside } from '../../hooks/useOnClickOutside'\nimport { ApplicationModal } from '../../state/application/actions'\nimport { useModalOpen, useToggleSettingsMenu } from '../../state/application/hooks'\nimport { useExpertModeManager, useUserSingleHopOnly } from '../../state/user/hooks'\nimport { TYPE } from '../../theme'\nimport { ButtonError } from '../Button'\nimport { AutoColumn } from '../Column'\nimport Modal from '../Modal'\nimport QuestionHelper from '../QuestionHelper'\nimport { RowBetween, RowFixed } from '../Row'\nimport Toggle from '../Toggle'\nimport TransactionSettings from '../TransactionSettings'\nimport { Percent } from '@uniswap/sdk-core'\n\nconst StyledMenuIcon = styled(Settings)`\n height: 20px;\n width: 20px;\n\n > * {\n stroke: ${({ theme }) => theme.text2};\n }\n\n :hover {\n opacity: 0.7;\n }\n`\n\nconst StyledCloseIcon = styled(X)`\n height: 20px;\n width: 20px;\n :hover {\n cursor: pointer;\n }\n\n > * {\n stroke: ${({ theme }) => theme.text1};\n }\n`\n\nconst StyledMenuButton = styled.button`\n position: relative;\n width: 100%;\n height: 100%;\n border: none;\n background-color: transparent;\n margin: 0;\n padding: 0;\n border-radius: 0.5rem;\n height: 20px;\n\n :hover,\n :focus {\n cursor: pointer;\n outline: none;\n }\n`\nconst EmojiWrapper = styled.div`\n position: absolute;\n bottom: -6px;\n right: 0px;\n font-size: 14px;\n`\n\nconst StyledMenu = styled.div`\n margin-left: 0.5rem;\n display: flex;\n justify-content: center;\n align-items: center;\n position: relative;\n border: none;\n text-align: left;\n`\n\nconst MenuFlyout = styled.span`\n min-width: 20.125rem;\n background-color: ${({ theme }) => theme.bg2};\n border: 1px solid ${({ theme }) => theme.bg3};\n box-shadow: 0px 0px 1px rgba(0, 0, 0, 0.01), 0px 4px 8px rgba(0, 0, 0, 0.04), 0px 16px 24px rgba(0, 0, 0, 0.04),\n 0px 24px 32px rgba(0, 0, 0, 0.01);\n border-radius: 12px;\n display: flex;\n flex-direction: column;\n font-size: 1rem;\n position: absolute;\n top: 2rem;\n right: 0rem;\n z-index: 100;\n\n ${({ theme }) => theme.mediaWidth.upToMedium`\n min-width: 18.125rem;\n `};\n\n user-select: none;\n`\n\nconst Break = styled.div`\n width: 100%;\n height: 1px;\n background-color: ${({ theme }) => theme.bg3};\n`\n\nconst ModalContentWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 2rem 0;\n background-color: ${({ theme }) => theme.bg2};\n border-radius: 20px;\n`\n\nexport default function SettingsTab({ placeholderSlippage }: { placeholderSlippage: Percent }) {\n const node = useRef()\n const open = useModalOpen(ApplicationModal.SETTINGS)\n const toggle = useToggleSettingsMenu()\n\n const theme = useContext(ThemeContext)\n\n const [expertMode, toggleExpertMode] = useExpertModeManager()\n\n const [singleHopOnly, setSingleHopOnly] = useUserSingleHopOnly()\n\n // show confirmation view before turning on\n const [showConfirmation, setShowConfirmation] = useState(false)\n\n useOnClickOutside(node, open ? toggle : undefined)\n\n return (\n // https://github.com/DefinitelyTyped/DefinitelyTyped/issues/30451\n \n setShowConfirmation(false)} maxHeight={100}>\n \n \n \n
\n \n Are you sure?\n \n setShowConfirmation(false)} />\n \n \n \n \n \n Expert mode turns off the confirm transaction prompt and allows high slippage trades that often result\n in bad rates and lost funds.\n \n \n \n ONLY USE THIS MODE IF YOU KNOW WHAT YOU ARE DOING.\n \n {\n const confirmWord = t`confirm`\n if (window.prompt(t`Please type the word \"${confirmWord}\" to enable expert mode.`) === confirmWord) {\n toggleExpertMode()\n setShowConfirmation(false)\n }\n }}\n >\n \n Turn On Expert Mode\n \n \n \n \n \n \n \n \n {expertMode ? (\n \n \n 🧙\n \n \n ) : null}\n \n {open && (\n \n \n \n Transaction Settings\n \n \n \n Interface Settings\n \n \n \n \n Toggle Expert Mode\n \n Allow high price impact trades and skip the confirm screen. Use at your own risk.\n }\n />\n \n {\n toggleExpertMode()\n setShowConfirmation(false)\n }\n : () => {\n toggle()\n setShowConfirmation(true)\n }\n }\n />\n \n \n \n \n Disable Multihops\n \n Restricts swaps to direct pairs only.} />\n \n {\n ReactGA.event({\n category: 'Routing',\n action: singleHopOnly ? 'disable single hop' : 'enable single hop',\n })\n setSingleHopOnly(!singleHopOnly)\n }}\n />\n \n \n \n )}\n \n )\n}\n","import styled from 'styled-components/macro'\nimport { darken } from 'polished'\nimport { Trans } from '@lingui/macro'\nimport { NavLink, Link as HistoryLink, useLocation } from 'react-router-dom'\nimport { Percent } from '@uniswap/sdk-core'\n\nimport { ArrowLeft } from 'react-feather'\nimport Row, { RowBetween } from '../Row'\nimport SettingsTab from '../Settings'\n\nimport { useAppDispatch } from 'state/hooks'\nimport { resetMintState } from 'state/mint/actions'\nimport { resetMintState as resetMintV3State } from 'state/mint/v3/actions'\nimport { TYPE } from 'theme'\nimport useTheme from 'hooks/useTheme'\nimport { ReactNode } from 'react'\nimport { Box } from 'rebass'\n\nconst Tabs = styled.div`\n ${({ theme }) => theme.flexRowNoWrap}\n align-items: center;\n border-radius: 3rem;\n justify-content: space-evenly;\n`\n\nconst activeClassName = 'ACTIVE'\n\nconst StyledNavLink = styled(NavLink).attrs({\n activeClassName,\n})`\n ${({ theme }) => theme.flexRowNoWrap}\n align-items: center;\n justify-content: center;\n height: 3rem;\n border-radius: 3rem;\n outline: none;\n cursor: pointer;\n text-decoration: none;\n color: ${({ theme }) => theme.text3};\n font-size: 20px;\n\n &.${activeClassName} {\n border-radius: 12px;\n font-weight: 500;\n color: ${({ theme }) => theme.text1};\n }\n\n :hover,\n :focus {\n color: ${({ theme }) => darken(0.1, theme.text1)};\n }\n`\n\nconst StyledHistoryLink = styled(HistoryLink)<{ flex: string | undefined }>`\n flex: ${({ flex }) => flex ?? 'none'};\n\n ${({ theme }) => theme.mediaWidth.upToMedium`\n flex: none;\n margin-right: 10px;\n `};\n`\n\nconst ActiveText = styled.div`\n font-weight: 500;\n font-size: 20px;\n`\n\nconst StyledArrowLeft = styled(ArrowLeft)`\n color: ${({ theme }) => theme.text1};\n`\n\nexport function SwapPoolTabs({ active }: { active: 'swap' | 'pool' }) {\n return (\n \n active === 'swap'}>\n Swap\n \n active === 'pool'}>\n Pool\n \n \n )\n}\n\nexport function FindPoolTabs({ origin }: { origin: string }) {\n return (\n \n \n \n \n \n \n Import V2 Pool\n \n \n \n )\n}\n\nexport function AddRemoveTabs({\n adding,\n creating,\n defaultSlippage,\n positionID,\n children,\n}: {\n adding: boolean\n creating: boolean\n defaultSlippage: Percent\n positionID?: string | undefined\n showBackLink?: boolean\n children?: ReactNode | undefined\n}) {\n const theme = useTheme()\n // reset states on back\n const dispatch = useAppDispatch()\n const location = useLocation()\n\n // detect if back should redirect to v3 or v2 pool page\n const poolLink = location.pathname.includes('add/v2')\n ? '/pool/v2'\n : '/pool' + (!!positionID ? `/${positionID.toString()}` : '')\n\n return (\n \n \n {\n if (adding) {\n // not 100% sure both of these are needed\n dispatch(resetMintState())\n dispatch(resetMintV3State())\n }\n }}\n flex={children ? '1' : undefined}\n >\n \n \n \n {creating ? (\n Create a pair\n ) : adding ? (\n Add Liquidity\n ) : (\n Remove Liquidity\n )}\n \n {children}\n \n \n \n )\n}\n\nexport function CreateProposalTabs() {\n return (\n \n \n \n \n \n Create Proposal\n \n \n )\n}\n","import { Trans } from '@lingui/macro'\nimport { useMemo } from 'react'\nimport styled from 'styled-components/macro'\nimport { DEFAULT_LOCALE, LOCALE_LABEL, SupportedLocale } from '../../constants/locales'\nimport { navigatorLocale, useActiveLocale } from '../../hooks/useActiveLocale'\nimport { StyledInternalLink, TYPE } from '../../theme'\nimport { useLocationLinkProps } from 'hooks/useLocationLinkProps'\n\nconst Container = styled(TYPE.small)`\n opacity: 0.6;\n :hover {\n opacity: 1;\n }\n margin-top: 1rem !important;\n`\n\nconst useTargetLocale = (activeLocale: SupportedLocale) => {\n const browserLocale = useMemo(() => navigatorLocale(), [])\n\n if (browserLocale && (browserLocale !== DEFAULT_LOCALE || activeLocale !== DEFAULT_LOCALE)) {\n if (activeLocale === browserLocale) {\n return DEFAULT_LOCALE\n } else {\n return browserLocale\n }\n }\n return null\n}\n\nexport function SwitchLocaleLink() {\n const activeLocale = useActiveLocale()\n const targetLocale = useTargetLocale(activeLocale)\n\n const { to, onClick } = useLocationLinkProps(targetLocale)\n\n if (!targetLocale || !to) return null\n\n return (\n \n \n Uniswap available in:{' '}\n \n {LOCALE_LABEL[targetLocale]}\n \n \n \n )\n}\n","import React, { useMemo } from 'react'\nimport { area, curveStepAfter, ScaleLinear } from 'd3'\nimport styled from 'styled-components/macro'\nimport { ChartEntry } from './types'\nimport inRange from 'lodash/inRange'\n\nconst Path = styled.path<{ fill: string | undefined }>`\n opacity: 0.5;\n stroke: ${({ fill, theme }) => fill ?? theme.blue2};\n fill: ${({ fill, theme }) => fill ?? theme.blue2};\n`\n\nexport const Area = ({\n series,\n xScale,\n yScale,\n xValue,\n yValue,\n fill,\n}: {\n series: ChartEntry[]\n xScale: ScaleLinear\n yScale: ScaleLinear\n xValue: (d: ChartEntry) => number\n yValue: (d: ChartEntry) => number\n fill?: string | undefined\n}) =>\n useMemo(\n () => (\n xScale(xValue(d as ChartEntry)))\n .y1((d: unknown) => yScale(yValue(d as ChartEntry)))\n .y0(yScale(0))(\n series.filter((d) => inRange(xScale(xValue(d)), 0, innerWidth)) as Iterable<[number, number]>\n ) ?? undefined\n }\n />\n ),\n [fill, series, xScale, xValue, yScale, yValue]\n )\n","import React, { useMemo } from 'react'\nimport { Axis as d3Axis, axisBottom, NumberValue, ScaleLinear, select } from 'd3'\nimport styled from 'styled-components/macro'\n\nconst StyledGroup = styled.g`\n line {\n display: none;\n }\n\n text {\n color: ${({ theme }) => theme.text2};\n transform: translateY(5px);\n }\n`\n\nconst Axis = ({ axisGenerator }: { axisGenerator: d3Axis }) => {\n const axisRef = (axis: SVGGElement) => {\n axis &&\n select(axis)\n .call(axisGenerator)\n .call((g) => g.select('.domain').remove())\n }\n\n return \n}\n\nexport const AxisBottom = ({\n xScale,\n innerHeight,\n offset = 0,\n}: {\n xScale: ScaleLinear\n innerHeight: number\n offset?: number\n}) =>\n useMemo(\n () => (\n \n \n \n ),\n [innerHeight, offset, xScale]\n )\n","/*\n * Generates an SVG path for the east brush handle.\n * Apply `scale(-1, 1)` to generate west brush handle.\n *\n * |```````\\\n * | | | |\n * |______/\n * |\n * |\n * |\n * |\n * |\n *\n * https://medium.com/@dennismphil/one-side-rounded-rectangle-using-svg-fb31cf318d90\n */\nexport const brushHandlePath = (height: number) =>\n [\n // handle\n `M 0 0`, // move to origin\n `v ${height}`, // vertical line\n 'm 1 0', // move 1px to the right\n `V 0`, // second vertical line\n `M 0 1`, // move to origin\n\n // head\n 'h 12', // horizontal line\n 'q 2 0, 2 2', // rounded corner\n 'v 22', // vertical line\n 'q 0 2 -2 2', // rounded corner\n 'h -12', // horizontal line\n `z`, // close path\n ].join(' ')\n\nexport const brushHandleAccentPath = () =>\n [\n 'm 5 7', // move to first accent\n 'v 14', // vertical line\n 'M 0 0', // move to origin\n 'm 9 7', // move to second accent\n 'v 14', // vertical line\n 'z',\n ].join(' ')\n\nexport const OffScreenHandle = ({\n color,\n size = 10,\n margin = 10,\n}: {\n color: string\n size?: number\n margin?: number\n}) => (\n \n)\n","import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { BrushBehavior, brushX, D3BrushEvent, ScaleLinear, select } from 'd3'\nimport styled from 'styled-components/macro'\nimport { brushHandleAccentPath, brushHandlePath, OffScreenHandle } from 'components/LiquidityChartRangeInput/svg'\nimport usePrevious from 'hooks/usePrevious'\n\nconst Handle = styled.path<{ color: string }>`\n cursor: ew-resize;\n pointer-events: none;\n\n stroke-width: 3;\n stroke: ${({ color }) => color};\n fill: ${({ color }) => color};\n`\n\nconst HandleAccent = styled.path`\n cursor: ew-resize;\n pointer-events: none;\n\n stroke-width: 1.5;\n stroke: ${({ theme }) => theme.white};\n opacity: 0.6;\n`\n\nconst LabelGroup = styled.g<{ visible: boolean }>`\n opacity: ${({ visible }) => (visible ? '1' : '0')};\n transition: opacity 300ms;\n`\n\nconst TooltipBackground = styled.rect`\n fill: ${({ theme }) => theme.bg2};\n`\n\nconst Tooltip = styled.text`\n text-anchor: middle;\n font-size: 13px;\n fill: ${({ theme }) => theme.text1};\n`\n\n// flips the handles draggers when close to the container edges\nconst FLIP_HANDLE_THRESHOLD_PX = 20\n\n// margin to prevent tick snapping from putting the brush off screen\nconst BRUSH_EXTENT_MARGIN_PX = 2\n\nconst compare = (a1: [number, number], a2: [number, number]): boolean => a1[0] !== a2[0] || a1[1] !== a2[1]\n\nexport const Brush = ({\n id,\n xScale,\n interactive,\n brushLabelValue,\n brushExtent,\n setBrushExtent,\n innerWidth,\n innerHeight,\n westHandleColor,\n eastHandleColor,\n}: {\n id: string\n xScale: ScaleLinear\n interactive: boolean\n brushLabelValue: (d: 'w' | 'e', x: number) => string\n brushExtent: [number, number]\n setBrushExtent: (extent: [number, number]) => void\n innerWidth: number\n innerHeight: number\n westHandleColor: string\n eastHandleColor: string\n}) => {\n const brushRef = useRef(null)\n const brushBehavior = useRef | null>(null)\n\n // only used to drag the handles on brush for performance\n const [localBrushExtent, setLocalBrushExtent] = useState<[number, number] | null>(brushExtent)\n const [showLabels, setShowLabels] = useState(false)\n const [hovering, setHovering] = useState(false)\n\n const previousBrushExtent = usePrevious(brushExtent)\n\n const brushed = useCallback(\n ({ type, selection }: D3BrushEvent) => {\n if (!selection) {\n setLocalBrushExtent(null)\n return\n }\n\n const scaled = (selection as [number, number]).map(xScale.invert) as [number, number]\n\n // avoid infinite render loop by checking for change\n if (type === 'end' && compare(brushExtent, scaled)) {\n setBrushExtent(scaled)\n }\n\n setLocalBrushExtent(scaled)\n },\n [xScale, brushExtent, setBrushExtent]\n )\n\n // keep local and external brush extent in sync\n // i.e. snap to ticks on bruhs end\n useEffect(() => {\n setLocalBrushExtent(brushExtent)\n }, [brushExtent])\n\n // initialize the brush\n useEffect(() => {\n if (!brushRef.current) return\n\n brushBehavior.current = brushX()\n .extent([\n [Math.max(0 + BRUSH_EXTENT_MARGIN_PX, xScale(0)), 0],\n [innerWidth - BRUSH_EXTENT_MARGIN_PX, innerHeight],\n ])\n .handleSize(30)\n .filter(() => interactive)\n .on('brush end', brushed)\n\n brushBehavior.current(select(brushRef.current))\n\n if (previousBrushExtent && compare(brushExtent, previousBrushExtent)) {\n select(brushRef.current)\n .transition()\n .call(brushBehavior.current.move as any, brushExtent.map(xScale))\n }\n\n // brush linear gradient\n select(brushRef.current)\n .selectAll('.selection')\n .attr('stroke', 'none')\n .attr('fill-opacity', '0.1')\n .attr('fill', `url(#${id}-gradient-selection)`)\n }, [brushExtent, brushed, id, innerHeight, innerWidth, interactive, previousBrushExtent, xScale])\n\n // respond to xScale changes only\n useEffect(() => {\n if (!brushRef.current || !brushBehavior.current) return\n\n brushBehavior.current.move(select(brushRef.current) as any, brushExtent.map(xScale) as any)\n }, [brushExtent, xScale])\n\n // show labels when local brush changes\n useEffect(() => {\n setShowLabels(true)\n const timeout = setTimeout(() => setShowLabels(false), 1500)\n return () => clearTimeout(timeout)\n }, [localBrushExtent])\n\n // variables to help render the SVGs\n const flipWestHandle = localBrushExtent && xScale(localBrushExtent[0]) > FLIP_HANDLE_THRESHOLD_PX\n const flipEastHandle = localBrushExtent && xScale(localBrushExtent[1]) > innerWidth - FLIP_HANDLE_THRESHOLD_PX\n\n const showWestArrow = localBrushExtent && (xScale(localBrushExtent[0]) < 0 || xScale(localBrushExtent[1]) < 0)\n const showEastArrow =\n localBrushExtent && (xScale(localBrushExtent[0]) > innerWidth || xScale(localBrushExtent[1]) > innerWidth)\n\n const westHandleInView =\n localBrushExtent && xScale(localBrushExtent[0]) >= 0 && xScale(localBrushExtent[0]) <= innerWidth\n const eastHandleInView =\n localBrushExtent && xScale(localBrushExtent[1]) >= 0 && xScale(localBrushExtent[1]) <= innerWidth\n\n return useMemo(\n () => (\n <>\n \n \n \n \n \n\n {/* clips at exactly the svg area */}\n \n \n \n \n\n {/* will host the d3 brush */}\n setHovering(true)}\n onMouseLeave={() => setHovering(false)}\n />\n\n {/* custom brush handles */}\n {localBrushExtent && (\n <>\n {/* west handle */}\n {westHandleInView ? (\n \n \n \n \n \n\n \n \n \n {brushLabelValue('w', localBrushExtent[0])}\n \n \n \n ) : null}\n\n {/* east handle */}\n {eastHandleInView ? (\n \n \n \n \n \n\n \n \n \n {brushLabelValue('e', localBrushExtent[1])}\n \n \n \n ) : null}\n\n {showWestArrow && }\n\n {showEastArrow && (\n \n \n \n )}\n \n )}\n \n ),\n [\n brushLabelValue,\n eastHandleColor,\n eastHandleInView,\n flipEastHandle,\n flipWestHandle,\n hovering,\n id,\n innerHeight,\n innerWidth,\n localBrushExtent,\n showEastArrow,\n showLabels,\n showWestArrow,\n westHandleColor,\n westHandleInView,\n xScale,\n ]\n )\n}\n","import React, { useMemo } from 'react'\nimport { ScaleLinear } from 'd3'\nimport styled from 'styled-components/macro'\n\nconst StyledLine = styled.line`\n opacity: 0.5;\n stroke-width: 2;\n stroke: ${({ theme }) => theme.text1};\n fill: none;\n`\n\nexport const Line = ({\n value,\n xScale,\n innerHeight,\n}: {\n value: number\n xScale: ScaleLinear\n innerHeight: number\n}) =>\n useMemo(\n () => ,\n [value, xScale, innerHeight]\n )\n","import React, { useEffect, useMemo, useRef } from 'react'\nimport { ButtonGray } from 'components/Button'\nimport styled from 'styled-components/macro'\nimport { ScaleLinear, select, ZoomBehavior, zoom, ZoomTransform } from 'd3'\nimport { RefreshCcw, ZoomIn, ZoomOut } from 'react-feather'\nimport { ZoomLevels } from './types'\n\nconst Wrapper = styled.div<{ count: number }>`\n display: grid;\n grid-template-columns: repeat(${({ count }) => count.toString()}, 1fr);\n grid-gap: 6px;\n\n position: absolute;\n top: -75px;\n right: 0;\n`\n\nconst Button = styled(ButtonGray)`\n &:hover {\n background-color: ${({ theme }) => theme.bg2};\n color: ${({ theme }) => theme.text1};\n }\n\n width: 32px;\n height: 32px;\n padding: 4px;\n`\n\nexport const ZoomOverlay = styled.rect`\n fill: transparent;\n cursor: grab;\n\n &:active {\n cursor: grabbing;\n }\n`\n\nexport default function Zoom({\n svg,\n xScale,\n setZoom,\n width,\n height,\n showClear,\n zoomLevels,\n}: {\n svg: SVGElement | null\n xScale: ScaleLinear\n setZoom: (transform: ZoomTransform) => void\n width: number\n height: number\n showClear: boolean\n zoomLevels: ZoomLevels\n}) {\n const zoomBehavior = useRef>()\n\n const [zoomIn, zoomOut, reset, initial] = useMemo(\n () => [\n () =>\n svg &&\n zoomBehavior.current &&\n select(svg as Element)\n .transition()\n .call(zoomBehavior.current.scaleBy, 2),\n () =>\n svg &&\n zoomBehavior.current &&\n select(svg as Element)\n .transition()\n .call(zoomBehavior.current.scaleBy, 0.5),\n () =>\n svg &&\n zoomBehavior.current &&\n select(svg as Element)\n .transition()\n .call(zoomBehavior.current.scaleTo, 1),\n () =>\n svg &&\n zoomBehavior.current &&\n select(svg as Element)\n .transition()\n .call(zoomBehavior.current.scaleTo, 0.5),\n ],\n [svg, zoomBehavior]\n )\n\n useEffect(() => {\n if (!svg) return\n\n zoomBehavior.current = zoom()\n .scaleExtent([zoomLevels.min, zoomLevels.max])\n .extent([\n [0, 0],\n [width, height],\n ])\n .on('zoom', ({ transform }: { transform: ZoomTransform }) => setZoom(transform))\n\n select(svg as Element).call(zoomBehavior.current)\n }, [height, width, setZoom, svg, xScale, zoomBehavior, zoomLevels, zoomLevels.max, zoomLevels.min])\n\n useEffect(() => {\n // reset zoom to initial on zoomLevel change\n initial()\n }, [initial, zoomLevels])\n\n return (\n \n {showClear && (\n \n )}\n \n \n \n )\n}\n","import { max, scaleLinear, ZoomTransform } from 'd3'\nimport { useEffect, useMemo, useRef, useState } from 'react'\nimport { Area } from './Area'\nimport { AxisBottom } from './AxisBottom'\nimport { Brush } from './Brush'\nimport { Line } from './Line'\nimport { ChartEntry, LiquidityChartRangeInputProps } from './types'\nimport Zoom, { ZoomOverlay } from './Zoom'\n\nexport const xAccessor = (d: ChartEntry) => d.price0\nexport const yAccessor = (d: ChartEntry) => d.activeLiquidity\n\nexport function Chart({\n id = 'liquidityChartRangeInput',\n data: { series, current },\n styles,\n dimensions: { width, height },\n margins,\n interactive = true,\n brushDomain,\n brushLabels,\n onBrushDomainChange,\n zoomLevels,\n}: LiquidityChartRangeInputProps) {\n const zoomRef = useRef(null)\n\n const [zoom, setZoom] = useState(null)\n\n const [innerHeight, innerWidth] = useMemo(\n () => [height - margins.top - margins.bottom, width - margins.left - margins.right],\n [width, height, margins]\n )\n\n const { xScale, yScale } = useMemo(() => {\n const scales = {\n xScale: scaleLinear()\n .domain([current * zoomLevels.initialMin, current * zoomLevels.initialMax] as number[])\n .range([0, innerWidth]),\n yScale: scaleLinear()\n .domain([0, max(series, yAccessor)] as number[])\n .range([innerHeight, 0]),\n }\n\n if (zoom) {\n const newXscale = zoom.rescaleX(scales.xScale)\n scales.xScale.domain(newXscale.domain())\n }\n\n return scales\n }, [current, zoomLevels.initialMin, zoomLevels.initialMax, innerWidth, series, innerHeight, zoom])\n\n useEffect(() => {\n // reset zoom as necessary\n setZoom(null)\n }, [zoomLevels])\n\n useEffect(() => {\n if (!brushDomain) {\n onBrushDomainChange(xScale.domain() as [number, number])\n }\n }, [brushDomain, onBrushDomainChange, xScale])\n\n return (\n <>\n \n \n \n \n \n \n\n {brushDomain && (\n // mask to highlight selected area\n \n \n \n )}\n \n\n \n \n \n\n {brushDomain && (\n // duplicate area chart with mask for selected area\n \n \n \n )}\n\n \n\n \n \n\n \n\n \n \n \n \n )\n}\n","import { Token } from '@uniswap/sdk-core'\nimport { tickToPrice } from '@uniswap/v3-sdk'\nimport { TickProcessed } from 'hooks/usePoolTickData'\nimport JSBI from 'jsbi'\nimport { AllV3TicksQuery } from 'state/data/generated'\n\nconst PRICE_FIXED_DIGITS = 8\n\n// Computes the numSurroundingTicks above or below the active tick.\nexport default function computeSurroundingTicks(\n token0: Token,\n token1: Token,\n activeTickProcessed: TickProcessed,\n sortedTickData: AllV3TicksQuery['ticks'],\n pivot: number,\n ascending: boolean\n): TickProcessed[] {\n let previousTickProcessed: TickProcessed = {\n ...activeTickProcessed,\n }\n // Iterate outwards (either up or down depending on direction) from the active tick,\n // building active liquidity for every tick.\n let processedTicks: TickProcessed[] = []\n for (let i = pivot + (ascending ? 1 : -1); ascending ? i < sortedTickData.length : i >= 0; ascending ? i++ : i--) {\n const tickIdx = Number(sortedTickData[i].tickIdx)\n const currentTickProcessed: TickProcessed = {\n liquidityActive: previousTickProcessed.liquidityActive,\n tickIdx,\n liquidityNet: JSBI.BigInt(sortedTickData[i].liquidityNet),\n price0: tickToPrice(token0, token1, tickIdx).toFixed(PRICE_FIXED_DIGITS),\n }\n\n // Update the active liquidity.\n // If we are iterating ascending and we found an initialized tick we immediately apply\n // it to the current processed tick we are building.\n // If we are iterating descending, we don't want to apply the net liquidity until the following tick.\n if (ascending) {\n currentTickProcessed.liquidityActive = JSBI.add(\n previousTickProcessed.liquidityActive,\n JSBI.BigInt(sortedTickData[i].liquidityNet)\n )\n } else if (!ascending && JSBI.notEqual(previousTickProcessed.liquidityNet, JSBI.BigInt(0))) {\n // We are iterating descending, so look at the previous tick and apply any net liquidity.\n currentTickProcessed.liquidityActive = JSBI.subtract(\n previousTickProcessed.liquidityActive,\n previousTickProcessed.liquidityNet\n )\n }\n\n processedTicks.push(currentTickProcessed)\n previousTickProcessed = currentTickProcessed\n }\n\n if (!ascending) {\n processedTicks = processedTicks.reverse()\n }\n\n return processedTicks\n}\n","import { Currency } from '@uniswap/sdk-core'\nimport { FeeAmount, Pool, tickToPrice, TICK_SPACINGS } from '@uniswap/v3-sdk'\nimport JSBI from 'jsbi'\nimport { PoolState, usePool } from './usePools'\nimport { useMemo } from 'react'\nimport computeSurroundingTicks from 'utils/computeSurroundingTicks'\nimport { useAllV3TicksQuery } from 'state/data/enhanced'\nimport { skipToken } from '@reduxjs/toolkit/query/react'\nimport ms from 'ms.macro'\nimport { AllV3TicksQuery } from 'state/data/generated'\n\nconst PRICE_FIXED_DIGITS = 8\n\n// Tick with fields parsed to JSBIs, and active liquidity computed.\nexport interface TickProcessed {\n tickIdx: number\n liquidityActive: JSBI\n liquidityNet: JSBI\n price0: string\n}\n\nconst getActiveTick = (tickCurrent: number | undefined, feeAmount: FeeAmount | undefined) =>\n tickCurrent && feeAmount ? Math.floor(tickCurrent / TICK_SPACINGS[feeAmount]) * TICK_SPACINGS[feeAmount] : undefined\n\n// Fetches all ticks for a given pool\nexport function useAllV3Ticks(\n currencyA: Currency | undefined,\n currencyB: Currency | undefined,\n feeAmount: FeeAmount | undefined\n) {\n const poolAddress =\n currencyA && currencyB && feeAmount ? Pool.getAddress(currencyA?.wrapped, currencyB?.wrapped, feeAmount) : undefined\n\n //TODO(judo): determine if pagination is necessary for this query\n const { isLoading, isError, error, isUninitialized, data } = useAllV3TicksQuery(\n poolAddress ? { poolAddress: poolAddress?.toLowerCase(), skip: 0 } : skipToken,\n {\n pollingInterval: ms`2m`,\n }\n )\n\n return {\n isLoading,\n isUninitialized,\n isError,\n error,\n ticks: data?.ticks as AllV3TicksQuery['ticks'],\n }\n}\n\nexport function usePoolActiveLiquidity(\n currencyA: Currency | undefined,\n currencyB: Currency | undefined,\n feeAmount: FeeAmount | undefined\n): {\n isLoading: boolean\n isUninitialized: boolean\n isError: boolean\n error: any\n activeTick: number | undefined\n data: TickProcessed[] | undefined\n} {\n const pool = usePool(currencyA, currencyB, feeAmount)\n\n // Find nearest valid tick for pool in case tick is not initialized.\n const activeTick = useMemo(() => getActiveTick(pool[1]?.tickCurrent, feeAmount), [pool, feeAmount])\n\n const { isLoading, isUninitialized, isError, error, ticks } = useAllV3Ticks(currencyA, currencyB, feeAmount)\n\n return useMemo(() => {\n if (\n !currencyA ||\n !currencyB ||\n activeTick === undefined ||\n pool[0] !== PoolState.EXISTS ||\n !ticks ||\n ticks.length === 0 ||\n isLoading ||\n isUninitialized\n ) {\n return {\n isLoading: isLoading || pool[0] === PoolState.LOADING,\n isUninitialized,\n isError,\n error,\n activeTick,\n data: undefined,\n }\n }\n\n const token0 = currencyA?.wrapped\n const token1 = currencyB?.wrapped\n\n // find where the active tick would be to partition the array\n // if the active tick is initialized, the pivot will be an element\n // if not, take the previous tick as pivot\n const pivot = ticks.findIndex(({ tickIdx }) => tickIdx > activeTick) - 1\n\n if (pivot < 0) {\n // consider setting a local error\n console.error('TickData pivot not found')\n return {\n isLoading,\n isUninitialized,\n isError,\n error,\n activeTick,\n data: undefined,\n }\n }\n\n const activeTickProcessed: TickProcessed = {\n liquidityActive: JSBI.BigInt(pool[1]?.liquidity ?? 0),\n tickIdx: activeTick,\n liquidityNet:\n Number(ticks[pivot].tickIdx) === activeTick ? JSBI.BigInt(ticks[pivot].liquidityNet) : JSBI.BigInt(0),\n price0: tickToPrice(token0, token1, activeTick).toFixed(PRICE_FIXED_DIGITS),\n }\n\n const subsequentTicks = computeSurroundingTicks(token0, token1, activeTickProcessed, ticks, pivot, true)\n\n const previousTicks = computeSurroundingTicks(token0, token1, activeTickProcessed, ticks, pivot, false)\n\n const ticksProcessed = previousTicks.concat(activeTickProcessed).concat(subsequentTicks)\n\n return {\n isLoading,\n isUninitialized,\n isError: isError,\n error,\n activeTick,\n data: ticksProcessed,\n }\n }, [currencyA, currencyB, activeTick, pool, ticks, isLoading, isUninitialized, isError, error])\n}\n","import React, { ReactNode, useCallback, useMemo } from 'react'\nimport { Trans } from '@lingui/macro'\nimport { Currency, Price, Token } from '@uniswap/sdk-core'\nimport { AutoColumn, ColumnCenter } from 'components/Column'\nimport Loader from 'components/Loader'\nimport { useColor } from 'hooks/useColor'\nimport useTheme from 'hooks/useTheme'\nimport { saturate } from 'polished'\nimport { BarChart2, Inbox, CloudOff } from 'react-feather'\nimport { batch } from 'react-redux'\nimport styled from 'styled-components/macro'\nimport { TYPE } from '../../theme'\nimport { Chart } from './Chart'\nimport { useDensityChartData } from './hooks'\nimport { format } from 'd3'\nimport { Bound } from 'state/mint/v3/actions'\nimport { FeeAmount } from '@uniswap/v3-sdk'\nimport ReactGA from 'react-ga'\nimport { ZoomLevels } from './types'\n\nconst ZOOM_LEVELS: Record = {\n [FeeAmount.LOW]: {\n initialMin: 0.999,\n initialMax: 1.001,\n min: 0.00001,\n max: 1.5,\n },\n [FeeAmount.MEDIUM]: {\n initialMin: 0.5,\n initialMax: 2,\n min: 0.00001,\n max: 20,\n },\n [FeeAmount.HIGH]: {\n initialMin: 0.5,\n initialMax: 2,\n min: 0.00001,\n max: 20,\n },\n}\n\nconst ChartWrapper = styled.div`\n position: relative;\n\n justify-content: center;\n align-content: center;\n`\n\nfunction InfoBox({ message, icon }: { message?: ReactNode; icon: ReactNode }) {\n return (\n \n {icon}\n {message && (\n \n {message}\n \n )}\n \n )\n}\n\nexport default function LiquidityChartRangeInput({\n currencyA,\n currencyB,\n feeAmount,\n ticksAtLimit,\n price,\n priceLower,\n priceUpper,\n onLeftRangeInput,\n onRightRangeInput,\n interactive,\n}: {\n currencyA: Currency | undefined\n currencyB: Currency | undefined\n feeAmount?: FeeAmount\n ticksAtLimit: { [bound in Bound]?: boolean | undefined }\n price: number | undefined\n priceLower?: Price\n priceUpper?: Price\n onLeftRangeInput: (typedValue: string) => void\n onRightRangeInput: (typedValue: string) => void\n interactive: boolean\n}) {\n const theme = useTheme()\n\n const tokenAColor = useColor(currencyA?.wrapped)\n const tokenBColor = useColor(currencyB?.wrapped)\n\n const { isLoading, isUninitialized, isError, error, formattedData } = useDensityChartData({\n currencyA,\n currencyB,\n feeAmount,\n })\n\n const onBrushDomainChangeEnded = useCallback(\n (domain) => {\n let leftRangeValue = Number(domain[0])\n const rightRangeValue = Number(domain[1])\n\n if (leftRangeValue <= 0) {\n leftRangeValue = 1 / 10 ** 6\n }\n\n batch(() => {\n // simulate user input for auto-formatting and other validations\n leftRangeValue > 0 && onLeftRangeInput(leftRangeValue.toFixed(6))\n rightRangeValue > 0 && onRightRangeInput(rightRangeValue.toFixed(6))\n })\n },\n [onLeftRangeInput, onRightRangeInput]\n )\n\n interactive = interactive && Boolean(formattedData?.length)\n\n const brushDomain: [number, number] | undefined = useMemo(() => {\n const isSorted = currencyA && currencyB && currencyA?.wrapped.sortsBefore(currencyB?.wrapped)\n\n const leftPrice = isSorted ? priceLower : priceUpper?.invert()\n const rightPrice = isSorted ? priceUpper : priceLower?.invert()\n\n return leftPrice && rightPrice\n ? [parseFloat(leftPrice?.toSignificant(5)), parseFloat(rightPrice?.toSignificant(5))]\n : undefined\n }, [currencyA, currencyB, priceLower, priceUpper])\n\n const brushLabelValue = useCallback(\n (d: 'w' | 'e', x: number) => {\n if (!price) return ''\n\n if (d === 'w' && ticksAtLimit[Bound.LOWER]) return '0'\n if (d === 'e' && ticksAtLimit[Bound.UPPER]) return '∞'\n\n //const percent = (((x < price ? -1 : 1) * (Math.max(x, price) - Math.min(x, price))) / Math.min(x, price)) * 100\n\n const percent = (x < price ? -1 : 1) * ((Math.max(x, price) - Math.min(x, price)) / price) * 100\n\n return price ? `${format(Math.abs(percent) > 1 ? '.2~s' : '.2~f')(percent)}%` : ''\n },\n [price, ticksAtLimit]\n )\n\n if (isError) {\n ReactGA.exception({\n ...error,\n category: 'Liquidity',\n fatal: false,\n })\n }\n\n return (\n \n {isUninitialized ? (\n Your position will appear here.}\n icon={}\n />\n ) : isLoading ? (\n } />\n ) : isError ? (\n Liquidity data not available.}\n icon={}\n />\n ) : !formattedData || formattedData === [] || !price ? (\n There is no liquidity data.}\n icon={}\n />\n ) : (\n \n \n \n )}\n \n )\n}\n","import { useCallback, useMemo } from 'react'\nimport { Currency } from '@uniswap/sdk-core'\nimport { FeeAmount } from '@uniswap/v3-sdk'\nimport { usePoolActiveLiquidity } from 'hooks/usePoolTickData'\nimport { ChartEntry } from './types'\nimport JSBI from 'jsbi'\n\nexport interface TickProcessed {\n liquidityActive: JSBI\n price0: string\n}\n\nexport function useDensityChartData({\n currencyA,\n currencyB,\n feeAmount,\n}: {\n currencyA: Currency | undefined\n currencyB: Currency | undefined\n feeAmount: FeeAmount | undefined\n}) {\n const { isLoading, isUninitialized, isError, error, data } = usePoolActiveLiquidity(currencyA, currencyB, feeAmount)\n\n const formatData = useCallback(() => {\n if (!data?.length) {\n return undefined\n }\n\n const newData: ChartEntry[] = []\n\n for (let i = 0; i < data.length; i++) {\n const t: TickProcessed = data[i]\n\n const chartEntry = {\n activeLiquidity: parseFloat(t.liquidityActive.toString()),\n price0: parseFloat(t.price0),\n }\n\n if (chartEntry.activeLiquidity > 0) {\n newData.push(chartEntry)\n }\n }\n\n return newData\n }, [data])\n\n return useMemo(() => {\n return {\n isLoading,\n isUninitialized,\n isError,\n error,\n formattedData: !isLoading && !isUninitialized ? formatData() : undefined,\n }\n }, [isLoading, isUninitialized, isError, error, formatData])\n}\n","import { Trans } from '@lingui/macro'\nimport { SupportedChainId } from 'constants/chains'\nimport { useActiveWeb3React } from 'hooks/web3'\nimport { AlertOctagon } from 'react-feather'\nimport styled from 'styled-components/macro'\n\nconst Root = styled.div`\n background-color: ${({ theme }) => theme.yellow3};\n border-radius: 18px;\n color: black;\n margin-top: 16px;\n padding: 16px;\n width: 100%;\n`\nconst WarningIcon = styled(AlertOctagon)`\n margin: 0 8px 0 0;\n`\nconst TitleRow = styled.div`\n align-items: center;\n display: flex;\n flex-direction: row;\n justify-content: flex-start;\n margin: 0;\n font-size: 20px;\n font-weight: 600;\n line-height: 25px;\n`\nconst Body = styled.div`\n font-size: 12px;\n line-height: 15px;\n margin: 8px 0 0 0;\n`\nconst LinkOutToNotion = styled.a`\n color: black;\n`\n\nexport default function OptimismDowntimeWarning() {\n const { chainId } = useActiveWeb3React()\n if (!chainId || ![SupportedChainId.OPTIMISM, SupportedChainId.OPTIMISTIC_KOVAN].includes(chainId)) {\n return null\n }\n\n return (\n \n \n \n {'Optimism'} Scheduled Downtimes\n \n \n \n {'Optimism'} expects some scheduled downtime in the near future. \n \n Read more.\n \n \n \n \n )\n}\n","import { useCallback, useContext, useEffect, useMemo, useState } from 'react'\nimport { TransactionResponse } from '@ethersproject/providers'\nimport { Currency, CurrencyAmount, Percent } from '@uniswap/sdk-core'\nimport { AlertTriangle } from 'react-feather'\nimport ReactGA from 'react-ga'\nimport { ZERO_PERCENT } from '../../constants/misc'\nimport { NONFUNGIBLE_POSITION_MANAGER_ADDRESSES } from '../../constants/addresses'\nimport { WETH9_EXTENDED } from '../../constants/tokens'\nimport { useArgentWalletContract } from '../../hooks/useArgentWalletContract'\nimport { useV3NFTPositionManagerContract } from '../../hooks/useContract'\nimport { RouteComponentProps } from 'react-router-dom'\nimport { Text } from 'rebass'\nimport { ThemeContext } from 'styled-components/macro'\nimport { ButtonError, ButtonLight, ButtonPrimary, ButtonText, ButtonYellow } from '../../components/Button'\nimport { YellowCard, OutlineCard, BlueCard } from '../../components/Card'\nimport { AutoColumn } from '../../components/Column'\nimport TransactionConfirmationModal, { ConfirmationModalContent } from '../../components/TransactionConfirmationModal'\nimport CurrencyInputPanel from '../../components/CurrencyInputPanel'\nimport Row, { RowBetween, RowFixed, AutoRow } from '../../components/Row'\nimport { useIsSwapUnsupported } from '../../hooks/useIsSwapUnsupported'\nimport { useUSDCValue } from '../../hooks/useUSDCPrice'\nimport approveAmountCalldata from '../../utils/approveAmountCalldata'\nimport { calculateGasMargin } from '../../utils/calculateGasMargin'\nimport { Review } from './Review'\nimport { useActiveWeb3React } from '../../hooks/web3'\nimport { useCurrency } from '../../hooks/Tokens'\nimport { ApprovalState, useApproveCallback } from '../../hooks/useApproveCallback'\nimport useTransactionDeadline from '../../hooks/useTransactionDeadline'\nimport { useWalletModalToggle } from '../../state/application/hooks'\nimport { Field, Bound } from '../../state/mint/v3/actions'\nimport { AddLiquidityNetworkAlert } from 'components/NetworkAlert/AddLiquidityNetworkAlert'\nimport { useTransactionAdder } from '../../state/transactions/hooks'\nimport { useIsExpertMode, useUserSlippageToleranceWithDefault } from '../../state/user/hooks'\nimport { TYPE, ExternalLink } from '../../theme'\nimport { maxAmountSpend } from '../../utils/maxAmountSpend'\nimport { Dots } from '../Pool/styleds'\nimport { currencyId } from '../../utils/currencyId'\nimport UnsupportedCurrencyFooter from 'components/swap/UnsupportedCurrencyFooter'\nimport {\n DynamicSection,\n CurrencyDropdown,\n StyledInput,\n Wrapper,\n ScrollablePage,\n ResponsiveTwoColumns,\n PageWrapper,\n StackedContainer,\n StackedItem,\n RightContainer,\n MediumOnly,\n HideMedium,\n} from './styled'\nimport { Trans, t } from '@lingui/macro'\nimport {\n useV3MintState,\n useV3MintActionHandlers,\n useRangeHopCallbacks,\n useV3DerivedMintInfo,\n} from 'state/mint/v3/hooks'\nimport { FeeAmount, NonfungiblePositionManager } from '@uniswap/v3-sdk'\nimport { useV3PositionFromTokenId } from 'hooks/useV3Positions'\nimport { useDerivedPositionInfo } from 'hooks/useDerivedPositionInfo'\nimport { PositionPreview } from 'components/PositionPreview'\nimport FeeSelector from 'components/FeeSelector'\nimport RangeSelector from 'components/RangeSelector'\nimport RateToggle from 'components/RateToggle'\nimport { BigNumber } from '@ethersproject/bignumber'\nimport { AddRemoveTabs } from 'components/NavigationTabs'\nimport HoverInlineText from 'components/HoverInlineText'\nimport { SwitchLocaleLink } from 'components/SwitchLocaleLink'\nimport LiquidityChartRangeInput from 'components/LiquidityChartRangeInput'\nimport { SupportedChainId } from 'constants/chains'\nimport OptimismDowntimeWarning from 'components/OptimismDowntimeWarning'\nimport { CHAIN_INFO } from '../../constants/chains'\n\nconst DEFAULT_ADD_IN_RANGE_SLIPPAGE_TOLERANCE = new Percent(50, 10_000)\n\nexport default function AddLiquidity({\n match: {\n params: { currencyIdA, currencyIdB, feeAmount: feeAmountFromUrl, tokenId },\n },\n history,\n}: RouteComponentProps<{ currencyIdA?: string; currencyIdB?: string; feeAmount?: string; tokenId?: string }>) {\n const { account, chainId, library } = useActiveWeb3React()\n const theme = useContext(ThemeContext)\n const toggleWalletModal = useWalletModalToggle() // toggle wallet when disconnected\n const expertMode = useIsExpertMode()\n const addTransaction = useTransactionAdder()\n const positionManager = useV3NFTPositionManagerContract()\n\n // check for existing position if tokenId in url\n const { position: existingPositionDetails, loading: positionLoading } = useV3PositionFromTokenId(\n tokenId ? BigNumber.from(tokenId) : undefined\n )\n const hasExistingPosition = !!existingPositionDetails && !positionLoading\n const { position: existingPosition } = useDerivedPositionInfo(existingPositionDetails)\n\n // fee selection from url\n const feeAmount: FeeAmount | undefined =\n feeAmountFromUrl && Object.values(FeeAmount).includes(parseFloat(feeAmountFromUrl))\n ? parseFloat(feeAmountFromUrl)\n : undefined\n\n const currencyA = useCurrency(currencyIdA)\n const currencyB = useCurrency(currencyIdB)\n\n // keep track for UI display purposes of user selected base currency\n const baseCurrency = currencyA\n const quoteCurrency = useMemo(\n () =>\n currencyA && currencyB && baseCurrency ? (baseCurrency.equals(currencyA) ? currencyB : currencyA) : undefined,\n [currencyA, currencyB, baseCurrency]\n )\n\n // mint state\n const { independentField, typedValue, startPriceTypedValue } = useV3MintState()\n\n const {\n pool,\n ticks,\n dependentField,\n price,\n pricesAtTicks,\n parsedAmounts,\n currencyBalances,\n position,\n noLiquidity,\n currencies,\n errorMessage,\n invalidPool,\n invalidRange,\n outOfRange,\n depositADisabled,\n depositBDisabled,\n invertPrice,\n ticksAtLimit,\n } = useV3DerivedMintInfo(\n currencyA ?? undefined,\n currencyB ?? undefined,\n feeAmount,\n baseCurrency ?? undefined,\n existingPosition\n )\n\n const { onFieldAInput, onFieldBInput, onLeftRangeInput, onRightRangeInput, onStartPriceInput } =\n useV3MintActionHandlers(noLiquidity)\n\n const isValid = !errorMessage && !invalidRange\n\n // modal and loading\n const [showConfirm, setShowConfirm] = useState(false)\n const [attemptingTxn, setAttemptingTxn] = useState(false) // clicked confirm\n\n // capital efficiency warning\n const [showCapitalEfficiencyWarning, setShowCapitalEfficiencyWarning] = useState(false)\n\n useEffect(() => setShowCapitalEfficiencyWarning(false), [currencyA, currencyB, feeAmount])\n\n // txn values\n const deadline = useTransactionDeadline() // custom from users settings\n\n const [txHash, setTxHash] = useState('')\n\n // get formatted amounts\n const formattedAmounts = {\n [independentField]: typedValue,\n [dependentField]: parsedAmounts[dependentField]?.toSignificant(6) ?? '',\n }\n\n const usdcValues = {\n [Field.CURRENCY_A]: useUSDCValue(parsedAmounts[Field.CURRENCY_A]),\n [Field.CURRENCY_B]: useUSDCValue(parsedAmounts[Field.CURRENCY_B]),\n }\n\n // get the max amounts user can add\n const maxAmounts: { [field in Field]?: CurrencyAmount } = [Field.CURRENCY_A, Field.CURRENCY_B].reduce(\n (accumulator, field) => {\n return {\n ...accumulator,\n [field]: maxAmountSpend(currencyBalances[field]),\n }\n },\n {}\n )\n\n const atMaxAmounts: { [field in Field]?: CurrencyAmount } = [Field.CURRENCY_A, Field.CURRENCY_B].reduce(\n (accumulator, field) => {\n return {\n ...accumulator,\n [field]: maxAmounts[field]?.equalTo(parsedAmounts[field] ?? '0'),\n }\n },\n {}\n )\n\n const argentWalletContract = useArgentWalletContract()\n\n // check whether the user has approved the router on the tokens\n const [approvalA, approveACallback] = useApproveCallback(\n argentWalletContract ? undefined : parsedAmounts[Field.CURRENCY_A],\n chainId ? NONFUNGIBLE_POSITION_MANAGER_ADDRESSES[chainId] : undefined\n )\n const [approvalB, approveBCallback] = useApproveCallback(\n argentWalletContract ? undefined : parsedAmounts[Field.CURRENCY_B],\n chainId ? NONFUNGIBLE_POSITION_MANAGER_ADDRESSES[chainId] : undefined\n )\n\n const allowedSlippage = useUserSlippageToleranceWithDefault(\n outOfRange ? ZERO_PERCENT : DEFAULT_ADD_IN_RANGE_SLIPPAGE_TOLERANCE\n )\n\n // only called on optimism, atm\n async function onCreate() {\n if (!chainId || !library) return\n\n if (!positionManager || !currencyA || !currencyB) {\n return\n }\n\n if (position && account && deadline) {\n const { calldata, value } = NonfungiblePositionManager.createCallParameters(position.pool)\n\n const txn: { to: string; data: string; value: string } = {\n to: NONFUNGIBLE_POSITION_MANAGER_ADDRESSES[chainId],\n data: calldata,\n value,\n }\n\n setAttemptingTxn(true)\n\n library\n .getSigner()\n .estimateGas(txn)\n .then((estimate) => {\n const newTxn = {\n ...txn,\n gasLimit: calculateGasMargin(chainId, estimate),\n }\n return library\n .getSigner()\n .sendTransaction(newTxn)\n .then((response: TransactionResponse) => {\n setAttemptingTxn(false)\n addTransaction(response, {\n summary: t`Create ${currencyA?.symbol}/${currencyB?.symbol} V3 pool`,\n })\n // dont set txn hash as we dont want submitted txn screen for create\n ReactGA.event({\n category: 'Liquidity',\n action: 'Create',\n label: [currencies[Field.CURRENCY_A]?.symbol, currencies[Field.CURRENCY_B]?.symbol].join('/'),\n })\n })\n })\n .catch((error) => {\n console.error('Failed to send transaction', error)\n setAttemptingTxn(false)\n // we only care if the error is something _other_ than the user rejected the tx\n if (error?.code !== 4001) {\n console.error(error)\n }\n })\n } else {\n return\n }\n }\n\n async function onAdd() {\n if (!chainId || !library || !account) return\n\n if (!positionManager || !currencyA || !currencyB) {\n return\n }\n\n if (position && account && deadline) {\n const useNative = currencyA.isNative ? currencyA : currencyB.isNative ? currencyB : undefined\n const { calldata, value } =\n hasExistingPosition && tokenId\n ? NonfungiblePositionManager.addCallParameters(position, {\n tokenId,\n slippageTolerance: allowedSlippage,\n deadline: deadline.toString(),\n useNative,\n })\n : NonfungiblePositionManager.addCallParameters(position, {\n slippageTolerance: allowedSlippage,\n recipient: account,\n deadline: deadline.toString(),\n useNative,\n createPool: noLiquidity,\n })\n\n let txn: { to: string; data: string; value: string } = {\n to: NONFUNGIBLE_POSITION_MANAGER_ADDRESSES[chainId],\n data: calldata,\n value,\n }\n\n if (argentWalletContract) {\n const amountA = parsedAmounts[Field.CURRENCY_A]\n const amountB = parsedAmounts[Field.CURRENCY_B]\n const batch = [\n ...(amountA && amountA.currency.isToken\n ? [approveAmountCalldata(amountA, NONFUNGIBLE_POSITION_MANAGER_ADDRESSES[chainId])]\n : []),\n ...(amountB && amountB.currency.isToken\n ? [approveAmountCalldata(amountB, NONFUNGIBLE_POSITION_MANAGER_ADDRESSES[chainId])]\n : []),\n {\n to: txn.to,\n data: txn.data,\n value: txn.value,\n },\n ]\n const data = argentWalletContract.interface.encodeFunctionData('wc_multiCall', [batch])\n txn = {\n to: argentWalletContract.address,\n data,\n value: '0x0',\n }\n }\n\n setAttemptingTxn(true)\n\n library\n .getSigner()\n .estimateGas(txn)\n .then((estimate) => {\n const newTxn = {\n ...txn,\n gasLimit: calculateGasMargin(chainId, estimate),\n }\n\n return library\n .getSigner()\n .sendTransaction(newTxn)\n .then((response: TransactionResponse) => {\n setAttemptingTxn(false)\n addTransaction(response, {\n summary: noLiquidity\n ? t`Create pool and add ${currencyA?.symbol}/${currencyB?.symbol} V3 liquidity`\n : t`Add ${currencyA?.symbol}/${currencyB?.symbol} V3 liquidity`,\n })\n setTxHash(response.hash)\n ReactGA.event({\n category: 'Liquidity',\n action: 'Add',\n label: [currencies[Field.CURRENCY_A]?.symbol, currencies[Field.CURRENCY_B]?.symbol].join('/'),\n })\n })\n })\n .catch((error) => {\n console.error('Failed to send transaction', error)\n setAttemptingTxn(false)\n // we only care if the error is something _other_ than the user rejected the tx\n if (error?.code !== 4001) {\n console.error(error)\n }\n })\n } else {\n return\n }\n }\n\n const handleCurrencySelect = useCallback(\n (currencyNew: Currency, currencyIdOther?: string): (string | undefined)[] => {\n const currencyIdNew = currencyId(currencyNew)\n\n if (currencyIdNew === currencyIdOther) {\n // not ideal, but for now clobber the other if the currency ids are equal\n return [currencyIdNew, undefined]\n } else {\n // prevent weth + eth\n const isETHOrWETHNew =\n currencyIdNew === 'ETH' || (chainId !== undefined && currencyIdNew === WETH9_EXTENDED[chainId]?.address)\n const isETHOrWETHOther =\n currencyIdOther !== undefined &&\n (currencyIdOther === 'ETH' || (chainId !== undefined && currencyIdOther === WETH9_EXTENDED[chainId]?.address))\n\n if (isETHOrWETHNew && isETHOrWETHOther) {\n return [currencyIdNew, undefined]\n } else {\n return [currencyIdNew, currencyIdOther]\n }\n }\n },\n [chainId]\n )\n\n const handleCurrencyASelect = useCallback(\n (currencyANew: Currency) => {\n const [idA, idB] = handleCurrencySelect(currencyANew, currencyIdB)\n if (idB === undefined) {\n history.push(`/add/${idA}`)\n } else {\n history.push(`/add/${idA}/${idB}`)\n }\n },\n [handleCurrencySelect, currencyIdB, history]\n )\n\n const handleCurrencyBSelect = useCallback(\n (currencyBNew: Currency) => {\n const [idB, idA] = handleCurrencySelect(currencyBNew, currencyIdA)\n if (idA === undefined) {\n history.push(`/add/${idB}`)\n } else {\n history.push(`/add/${idA}/${idB}`)\n }\n },\n [handleCurrencySelect, currencyIdA, history]\n )\n\n const handleFeePoolSelect = useCallback(\n (newFeeAmount: FeeAmount) => {\n onLeftRangeInput('')\n onRightRangeInput('')\n history.push(`/add/${currencyIdA}/${currencyIdB}/${newFeeAmount}`)\n },\n [currencyIdA, currencyIdB, history, onLeftRangeInput, onRightRangeInput]\n )\n\n // flag for whether pool creation must be a separate tx\n const mustCreateSeparately =\n noLiquidity && (chainId === SupportedChainId.OPTIMISM || chainId === SupportedChainId.OPTIMISTIC_KOVAN)\n\n const handleDismissConfirmation = useCallback(() => {\n setShowConfirm(false)\n // if there was a tx hash, we want to clear the input\n if (txHash) {\n onFieldAInput('')\n // dont jump to pool page if creating\n if (!mustCreateSeparately) {\n history.push('/pool')\n }\n }\n setTxHash('')\n }, [history, mustCreateSeparately, onFieldAInput, txHash])\n\n const addIsUnsupported = useIsSwapUnsupported(currencies?.CURRENCY_A, currencies?.CURRENCY_B)\n\n const clearAll = useCallback(() => {\n onFieldAInput('')\n onFieldBInput('')\n onLeftRangeInput('')\n onRightRangeInput('')\n history.push(`/add`)\n }, [history, onFieldAInput, onFieldBInput, onLeftRangeInput, onRightRangeInput])\n\n // get value and prices at ticks\n const { [Bound.LOWER]: tickLower, [Bound.UPPER]: tickUpper } = ticks\n const { [Bound.LOWER]: priceLower, [Bound.UPPER]: priceUpper } = pricesAtTicks\n\n const { getDecrementLower, getIncrementLower, getDecrementUpper, getIncrementUpper, getSetFullRange } =\n useRangeHopCallbacks(baseCurrency ?? undefined, quoteCurrency ?? undefined, feeAmount, tickLower, tickUpper, pool)\n\n // we need an existence check on parsed amounts for single-asset deposits\n const showApprovalA =\n !argentWalletContract && approvalA !== ApprovalState.APPROVED && !!parsedAmounts[Field.CURRENCY_A]\n const showApprovalB =\n !argentWalletContract && approvalB !== ApprovalState.APPROVED && !!parsedAmounts[Field.CURRENCY_B]\n\n const pendingText = mustCreateSeparately\n ? `Creating ${currencies[Field.CURRENCY_A]?.symbol}/${currencies[Field.CURRENCY_B]?.symbol} ${\n feeAmount ? feeAmount / 10000 : ''\n }% Pool`\n : `Supplying ${!depositADisabled ? parsedAmounts[Field.CURRENCY_A]?.toSignificant(6) : ''} ${\n !depositADisabled ? currencies[Field.CURRENCY_A]?.symbol : ''\n } ${!outOfRange ? 'and' : ''} ${!depositBDisabled ? parsedAmounts[Field.CURRENCY_B]?.toSignificant(6) : ''} ${\n !depositBDisabled ? currencies[Field.CURRENCY_B]?.symbol : ''\n }`\n\n const Buttons = () =>\n addIsUnsupported ? (\n \n \n Unsupported Asset\n \n \n ) : !account ? (\n \n Connect wallet\n \n ) : (\n \n {(approvalA === ApprovalState.NOT_APPROVED ||\n approvalA === ApprovalState.PENDING ||\n approvalB === ApprovalState.NOT_APPROVED ||\n approvalB === ApprovalState.PENDING) &&\n isValid && (\n \n {showApprovalA && (\n \n {approvalA === ApprovalState.PENDING ? (\n \n Approving {currencies[Field.CURRENCY_A]?.symbol}\n \n ) : (\n Approve {currencies[Field.CURRENCY_A]?.symbol}\n )}\n \n )}\n {showApprovalB && (\n \n {approvalB === ApprovalState.PENDING ? (\n \n Approving {currencies[Field.CURRENCY_B]?.symbol}\n \n ) : (\n Approve {currencies[Field.CURRENCY_B]?.symbol}\n )}\n \n )}\n \n )}\n {mustCreateSeparately && (\n \n {attemptingTxn ? (\n \n Confirm Create\n \n ) : (\n {errorMessage ? errorMessage : Create}\n )}\n \n )}\n {\n expertMode ? onAdd() : setShowConfirm(true)\n }}\n disabled={\n mustCreateSeparately ||\n !isValid ||\n (!argentWalletContract && approvalA !== ApprovalState.APPROVED && !depositADisabled) ||\n (!argentWalletContract && approvalB !== ApprovalState.APPROVED && !depositBDisabled)\n }\n error={!isValid && !!parsedAmounts[Field.CURRENCY_A] && !!parsedAmounts[Field.CURRENCY_B]}\n >\n \n {mustCreateSeparately ? Add : errorMessage ? errorMessage : Preview}\n \n \n \n )\n\n return (\n <>\n \n \n \n (\n (\n \n )}\n bottomContent={() => (\n \n \n Add\n \n \n )}\n />\n )}\n pendingText={pendingText}\n />\n \n \n {!hasExistingPosition && (\n \n \n \n \n Clear All\n \n \n \n {baseCurrency && quoteCurrency ? (\n {\n onLeftRangeInput((invertPrice ? priceLower : priceUpper?.invert())?.toSignificant(6) ?? '')\n onRightRangeInput((invertPrice ? priceUpper : priceLower?.invert())?.toSignificant(6) ?? '')\n history.push(\n `/add/${currencyIdB as string}/${currencyIdA as string}${feeAmount ? '/' + feeAmount : ''}`\n )\n }}\n />\n ) : null}\n \n )}\n \n \n \n \n {!hasExistingPosition && (\n <>\n \n \n \n Select Pair\n \n \n \n {\n onFieldAInput(maxAmounts[Field.CURRENCY_A]?.toExact() ?? '')\n }}\n onCurrencySelect={handleCurrencyASelect}\n showMaxButton={!atMaxAmounts[Field.CURRENCY_A]}\n currency={currencies[Field.CURRENCY_A]}\n id=\"add-liquidity-input-tokena\"\n showCommonBases\n />\n
\n\n {\n onFieldBInput(maxAmounts[Field.CURRENCY_B]?.toExact() ?? '')\n }}\n showMaxButton={!atMaxAmounts[Field.CURRENCY_B]}\n currency={currencies[Field.CURRENCY_B]}\n id=\"add-liquidity-input-tokenb\"\n showCommonBases\n />\n \n\n \n {' '}\n \n )}\n {hasExistingPosition && existingPosition && (\n Selected Range}\n inRange={!outOfRange}\n ticksAtLimit={ticksAtLimit}\n />\n )}\n \n
\n \n \n \n {hasExistingPosition ? Add more liquidity : Deposit Amounts}\n \n\n {\n onFieldAInput(maxAmounts[Field.CURRENCY_A]?.toExact() ?? '')\n }}\n showMaxButton={!atMaxAmounts[Field.CURRENCY_A]}\n currency={currencies[Field.CURRENCY_A]}\n id=\"add-liquidity-input-tokena\"\n fiatValue={usdcValues[Field.CURRENCY_A]}\n showCommonBases\n locked={depositADisabled}\n />\n\n {\n onFieldBInput(maxAmounts[Field.CURRENCY_B]?.toExact() ?? '')\n }}\n showMaxButton={!atMaxAmounts[Field.CURRENCY_B]}\n fiatValue={usdcValues[Field.CURRENCY_B]}\n currency={currencies[Field.CURRENCY_B]}\n id=\"add-liquidity-input-tokenb\"\n showCommonBases\n locked={depositBDisabled}\n />\n \n \n
\n\n {!hasExistingPosition ? (\n <>\n \n \n \n \n \n {!noLiquidity ? (\n <>\n \n \n Set Price Range\n \n \n\n {price && baseCurrency && quoteCurrency && !noLiquidity && (\n \n \n \n Current Price:\n \n \n \n \n \n {quoteCurrency?.symbol} per {baseCurrency.symbol}\n \n \n \n )}\n\n \n \n ) : (\n \n \n \n Set Starting Price\n \n \n {noLiquidity && (\n \n \n {mustCreateSeparately ? (\n \n {`This pool must be initialized on ${\n chainId && CHAIN_INFO ? CHAIN_INFO[chainId].label : ''\n } before you can add liquidity. To initialize, select a starting price for the pool. Then, enter your liquidity price range and deposit amount.`}\n \n ) : (\n \n This pool must be initialized before you can add liquidity. To initialize, select a\n starting price for the pool. Then, enter your liquidity price range and deposit\n amount. Gas fees will be higher than usual due to the initialization transaction.\n \n )}\n \n \n )}\n \n \n \n \n \n Current {baseCurrency?.symbol} Price:\n \n \n {price ? (\n \n \n {' '}\n {quoteCurrency?.symbol}\n \n \n ) : (\n '-'\n )}\n \n \n \n )}\n \n\n \n \n \n \n {noLiquidity && (\n \n \n Set Price Range\n \n \n )}\n \n \n \n\n {showCapitalEfficiencyWarning && (\n \n \n \n \n \n \n Efficiency Comparison\n \n \n \n \n \n Full range positions may earn less fees than concentrated positions. Learn more{' '}\n \n here\n \n .\n \n \n \n \n {\n setShowCapitalEfficiencyWarning(false)\n getSetFullRange()\n }}\n >\n \n I Understand\n \n \n \n \n \n \n )}\n \n\n {outOfRange ? (\n \n \n \n \n \n Your position will not earn fees or be used in trades until the market price moves into\n your range.\n \n \n \n \n ) : null}\n\n {invalidRange ? (\n \n \n \n \n Invalid range selected. The min price must be lower than the max price.\n \n \n \n ) : null}\n \n\n \n \n \n \n \n ) : (\n \n )}\n \n \n \n {addIsUnsupported && (\n \n )}\n \n \n \n )\n}\n","import { Pool, Position } from '@uniswap/v3-sdk'\nimport { usePool } from 'hooks/usePools'\nimport { PositionDetails } from 'types/position'\nimport { useCurrency } from './Tokens'\n\nexport function useDerivedPositionInfo(positionDetails: PositionDetails | undefined): {\n position: Position | undefined\n pool: Pool | undefined\n} {\n const currency0 = useCurrency(positionDetails?.token0)\n const currency1 = useCurrency(positionDetails?.token1)\n\n // construct pool data\n const [, pool] = usePool(currency0 ?? undefined, currency1 ?? undefined, positionDetails?.fee)\n\n let position = undefined\n if (pool && positionDetails) {\n position = new Position({\n pool,\n liquidity: positionDetails.liquidity.toString(),\n tickLower: positionDetails.tickLower,\n tickUpper: positionDetails.tickUpper,\n })\n }\n\n return {\n position,\n pool: pool ?? undefined,\n }\n}\n","import { useActiveWeb3React } from 'hooks/web3'\nimport { Redirect, RouteComponentProps } from 'react-router-dom'\nimport { WETH9_EXTENDED } from '../../constants/tokens'\nimport AddLiquidity from './index'\n\nexport function RedirectDuplicateTokenIds(\n props: RouteComponentProps<{ currencyIdA: string; currencyIdB: string; feeAmount?: string }>\n) {\n const {\n match: {\n params: { currencyIdA, currencyIdB },\n },\n } = props\n\n const { chainId } = useActiveWeb3React()\n\n // prevent weth + eth\n const isETHOrWETHA =\n currencyIdA === 'ETH' || (chainId !== undefined && currencyIdA === WETH9_EXTENDED[chainId]?.address)\n const isETHOrWETHB =\n currencyIdB === 'ETH' || (chainId !== undefined && currencyIdB === WETH9_EXTENDED[chainId]?.address)\n\n if (\n currencyIdA &&\n currencyIdB &&\n (currencyIdA.toLowerCase() === currencyIdB.toLowerCase() || (isETHOrWETHA && isETHOrWETHB))\n ) {\n return \n }\n return \n}\n","import JSBI from 'jsbi'\nimport { Percent, CurrencyAmount, Token } from '@uniswap/sdk-core'\nimport { Pair } from '@uniswap/v2-sdk'\nimport { useState } from 'react'\nimport { ChevronDown, ChevronUp } from 'react-feather'\nimport { Link } from 'react-router-dom'\nimport { Text } from 'rebass'\nimport styled from 'styled-components/macro'\nimport { useTotalSupply } from '../../hooks/useTotalSupply'\nimport { Trans } from '@lingui/macro'\n\nimport { useActiveWeb3React } from '../../hooks/web3'\nimport { useTokenBalance } from '../../state/wallet/hooks'\nimport { ExternalLink, TYPE } from '../../theme'\nimport { currencyId } from '../../utils/currencyId'\nimport { unwrappedToken } from '../../utils/unwrappedToken'\nimport { ButtonPrimary, ButtonSecondary, ButtonEmpty } from '../Button'\nimport { transparentize } from 'polished'\nimport { CardNoise } from '../earn/styled'\n\nimport { useColor } from '../../hooks/useColor'\n\nimport { GreyCard, LightCard } from '../Card'\nimport { AutoColumn } from '../Column'\nimport CurrencyLogo from '../CurrencyLogo'\nimport DoubleCurrencyLogo from '../DoubleLogo'\nimport { RowBetween, RowFixed, AutoRow } from '../Row'\nimport { Dots } from '../swap/styleds'\nimport { BIG_INT_ZERO } from '../../constants/misc'\n\nexport const FixedHeightRow = styled(RowBetween)`\n height: 24px;\n`\n\nconst StyledPositionCard = styled(LightCard)<{ bgColor: any }>`\n border: none;\n background: ${({ theme, bgColor }) =>\n `radial-gradient(91.85% 100% at 1.84% 0%, ${transparentize(0.8, bgColor)} 0%, ${theme.bg3} 100%) `};\n position: relative;\n overflow: hidden;\n`\n\ninterface PositionCardProps {\n pair: Pair\n showUnwrapped?: boolean\n border?: string\n stakedBalance?: CurrencyAmount // optional balance to indicate that liquidity is deposited in mining pool\n}\n\nexport function MinimalPositionCard({ pair, showUnwrapped = false, border }: PositionCardProps) {\n const { account } = useActiveWeb3React()\n\n const currency0 = showUnwrapped ? pair.token0 : unwrappedToken(pair.token0)\n const currency1 = showUnwrapped ? pair.token1 : unwrappedToken(pair.token1)\n\n const [showMore, setShowMore] = useState(false)\n\n const userPoolBalance = useTokenBalance(account ?? undefined, pair.liquidityToken)\n const totalPoolTokens = useTotalSupply(pair.liquidityToken)\n\n const poolTokenPercentage =\n !!userPoolBalance &&\n !!totalPoolTokens &&\n JSBI.greaterThanOrEqual(totalPoolTokens.quotient, userPoolBalance.quotient)\n ? new Percent(userPoolBalance.quotient, totalPoolTokens.quotient)\n : undefined\n\n const [token0Deposited, token1Deposited] =\n !!pair &&\n !!totalPoolTokens &&\n !!userPoolBalance &&\n // this condition is a short-circuit in the case where useTokenBalance updates sooner than useTotalSupply\n JSBI.greaterThanOrEqual(totalPoolTokens.quotient, userPoolBalance.quotient)\n ? [\n pair.getLiquidityValue(pair.token0, totalPoolTokens, userPoolBalance, false),\n pair.getLiquidityValue(pair.token1, totalPoolTokens, userPoolBalance, false),\n ]\n : [undefined, undefined]\n\n return (\n <>\n {userPoolBalance && JSBI.greaterThan(userPoolBalance.quotient, JSBI.BigInt(0)) ? (\n \n \n \n \n \n Your position\n \n \n \n setShowMore(!showMore)}>\n \n \n \n {currency0.symbol}/{currency1.symbol}\n \n \n \n \n {userPoolBalance ? userPoolBalance.toSignificant(4) : '-'}\n \n \n \n \n \n \n Your pool share:\n \n \n {poolTokenPercentage ? poolTokenPercentage.toFixed(6) + '%' : '-'}\n \n \n \n \n {currency0.symbol}:\n \n {token0Deposited ? (\n \n \n {token0Deposited?.toSignificant(6)}\n \n \n ) : (\n '-'\n )}\n \n \n \n {currency1.symbol}:\n \n {token1Deposited ? (\n \n \n {token1Deposited?.toSignificant(6)}\n \n \n ) : (\n '-'\n )}\n \n \n \n \n ) : (\n \n \n \n ⭐️\n {' '}\n \n By adding liquidity you'll earn 0.3% of all trades on this pair proportional to your share of the\n pool. Fees are added to the pool, accrue in real time and can be claimed by withdrawing your liquidity.\n {' '}\n \n \n )}\n \n )\n}\n\nexport default function FullPositionCard({ pair, border, stakedBalance }: PositionCardProps) {\n const { account } = useActiveWeb3React()\n\n const currency0 = unwrappedToken(pair.token0)\n const currency1 = unwrappedToken(pair.token1)\n\n const [showMore, setShowMore] = useState(false)\n\n const userDefaultPoolBalance = useTokenBalance(account ?? undefined, pair.liquidityToken)\n const totalPoolTokens = useTotalSupply(pair.liquidityToken)\n\n // if staked balance balance provided, add to standard liquidity amount\n const userPoolBalance = stakedBalance ? userDefaultPoolBalance?.add(stakedBalance) : userDefaultPoolBalance\n\n const poolTokenPercentage =\n !!userPoolBalance &&\n !!totalPoolTokens &&\n JSBI.greaterThanOrEqual(totalPoolTokens.quotient, userPoolBalance.quotient)\n ? new Percent(userPoolBalance.quotient, totalPoolTokens.quotient)\n : undefined\n\n const [token0Deposited, token1Deposited] =\n !!pair &&\n !!totalPoolTokens &&\n !!userPoolBalance &&\n // this condition is a short-circuit in the case where useTokenBalance updates sooner than useTotalSupply\n JSBI.greaterThanOrEqual(totalPoolTokens.quotient, userPoolBalance.quotient)\n ? [\n pair.getLiquidityValue(pair.token0, totalPoolTokens, userPoolBalance, false),\n pair.getLiquidityValue(pair.token1, totalPoolTokens, userPoolBalance, false),\n ]\n : [undefined, undefined]\n\n const backgroundColor = useColor(pair?.token0)\n\n return (\n \n \n \n \n \n \n \n {!currency0 || !currency1 ? (\n \n Loading\n \n ) : (\n `${currency0.symbol}/${currency1.symbol}`\n )}\n \n \n \n setShowMore(!showMore)}>\n {showMore ? (\n <>\n Manage\n \n \n ) : (\n <>\n Manage\n \n \n )}\n \n \n \n\n {showMore && (\n \n \n \n Your total pool tokens:\n \n \n {userPoolBalance ? userPoolBalance.toSignificant(4) : '-'}\n \n \n {stakedBalance && (\n \n \n Pool tokens in rewards pool:\n \n \n {stakedBalance.toSignificant(4)}\n \n \n )}\n \n \n \n Pooled {currency0.symbol}:\n \n \n {token0Deposited ? (\n \n \n {token0Deposited?.toSignificant(6)}\n \n \n \n ) : (\n '-'\n )}\n \n\n \n \n \n Pooled {currency1.symbol}:\n \n \n {token1Deposited ? (\n \n \n {token1Deposited?.toSignificant(6)}\n \n \n \n ) : (\n '-'\n )}\n \n\n \n \n Your pool share:\n \n \n {poolTokenPercentage ? (\n \n {poolTokenPercentage.toFixed(2) === '0.00' ? '<0.01' : poolTokenPercentage.toFixed(2)} %\n \n ) : (\n '-'\n )}\n \n \n\n \n \n \n View accrued fees and analytics\n \n \n \n {userDefaultPoolBalance && JSBI.greaterThan(userDefaultPoolBalance.quotient, BIG_INT_ZERO) && (\n \n \n Migrate\n \n \n Add\n \n \n Remove\n \n \n )}\n {stakedBalance && JSBI.greaterThan(stakedBalance.quotient, BIG_INT_ZERO) && (\n \n Manage Liquidity in Rewards Pool\n \n )}\n \n )}\n \n \n )\n}\n","import { t } from '@lingui/macro'\nimport { useCallback, useMemo } from 'react'\nimport { AppState } from '../index'\nimport { Field, typeInput } from './actions'\nimport { Pair } from '@uniswap/v2-sdk'\nimport { Currency, Token, Percent, Price, CurrencyAmount } from '@uniswap/sdk-core'\nimport JSBI from 'jsbi'\nimport { PairState, useV2Pair } from '../../hooks/useV2Pairs'\nimport { useTotalSupply } from '../../hooks/useTotalSupply'\n\nimport { useActiveWeb3React } from '../../hooks/web3'\nimport { tryParseAmount } from '../swap/hooks'\nimport { useCurrencyBalances } from '../wallet/hooks'\nimport { useAppDispatch, useAppSelector } from 'state/hooks'\n\nconst ZERO = JSBI.BigInt(0)\n\nexport function useMintState(): AppState['mint'] {\n return useAppSelector((state) => state.mint)\n}\n\nexport function useMintActionHandlers(noLiquidity: boolean | undefined): {\n onFieldAInput: (typedValue: string) => void\n onFieldBInput: (typedValue: string) => void\n} {\n const dispatch = useAppDispatch()\n\n const onFieldAInput = useCallback(\n (typedValue: string) => {\n dispatch(typeInput({ field: Field.CURRENCY_A, typedValue, noLiquidity: noLiquidity === true }))\n },\n [dispatch, noLiquidity]\n )\n\n const onFieldBInput = useCallback(\n (typedValue: string) => {\n dispatch(typeInput({ field: Field.CURRENCY_B, typedValue, noLiquidity: noLiquidity === true }))\n },\n [dispatch, noLiquidity]\n )\n\n return {\n onFieldAInput,\n onFieldBInput,\n }\n}\n\nexport function useDerivedMintInfo(\n currencyA: Currency | undefined,\n currencyB: Currency | undefined\n): {\n dependentField: Field\n currencies: { [field in Field]?: Currency }\n pair?: Pair | null\n pairState: PairState\n currencyBalances: { [field in Field]?: CurrencyAmount }\n parsedAmounts: { [field in Field]?: CurrencyAmount }\n price?: Price\n noLiquidity?: boolean\n liquidityMinted?: CurrencyAmount\n poolTokenPercentage?: Percent\n error?: string\n} {\n const { account } = useActiveWeb3React()\n\n const { independentField, typedValue, otherTypedValue } = useMintState()\n\n const dependentField = independentField === Field.CURRENCY_A ? Field.CURRENCY_B : Field.CURRENCY_A\n\n // tokens\n const currencies: { [field in Field]?: Currency } = useMemo(\n () => ({\n [Field.CURRENCY_A]: currencyA ?? undefined,\n [Field.CURRENCY_B]: currencyB ?? undefined,\n }),\n [currencyA, currencyB]\n )\n\n // pair\n const [pairState, pair] = useV2Pair(currencies[Field.CURRENCY_A], currencies[Field.CURRENCY_B])\n const totalSupply = useTotalSupply(pair?.liquidityToken)\n\n const noLiquidity: boolean =\n pairState === PairState.NOT_EXISTS ||\n Boolean(totalSupply && JSBI.equal(totalSupply.quotient, ZERO)) ||\n Boolean(\n pairState === PairState.EXISTS &&\n pair &&\n JSBI.equal(pair.reserve0.quotient, ZERO) &&\n JSBI.equal(pair.reserve1.quotient, ZERO)\n )\n\n // balances\n const balances = useCurrencyBalances(account ?? undefined, [\n currencies[Field.CURRENCY_A],\n currencies[Field.CURRENCY_B],\n ])\n const currencyBalances: { [field in Field]?: CurrencyAmount } = {\n [Field.CURRENCY_A]: balances[0],\n [Field.CURRENCY_B]: balances[1],\n }\n\n // amounts\n const independentAmount: CurrencyAmount | undefined = tryParseAmount(\n typedValue,\n currencies[independentField]\n )\n const dependentAmount: CurrencyAmount | undefined = useMemo(() => {\n if (noLiquidity) {\n if (otherTypedValue && currencies[dependentField]) {\n return tryParseAmount(otherTypedValue, currencies[dependentField])\n }\n return undefined\n } else if (independentAmount) {\n // we wrap the currencies just to get the price in terms of the other token\n const wrappedIndependentAmount = independentAmount?.wrapped\n const [tokenA, tokenB] = [currencyA?.wrapped, currencyB?.wrapped]\n if (tokenA && tokenB && wrappedIndependentAmount && pair) {\n const dependentCurrency = dependentField === Field.CURRENCY_B ? currencyB : currencyA\n const dependentTokenAmount =\n dependentField === Field.CURRENCY_B\n ? pair.priceOf(tokenA).quote(wrappedIndependentAmount)\n : pair.priceOf(tokenB).quote(wrappedIndependentAmount)\n return dependentCurrency?.isNative\n ? CurrencyAmount.fromRawAmount(dependentCurrency, dependentTokenAmount.quotient)\n : dependentTokenAmount\n }\n return undefined\n } else {\n return undefined\n }\n }, [noLiquidity, otherTypedValue, currencies, dependentField, independentAmount, currencyA, currencyB, pair])\n\n const parsedAmounts: { [field in Field]: CurrencyAmount | undefined } = useMemo(() => {\n return {\n [Field.CURRENCY_A]: independentField === Field.CURRENCY_A ? independentAmount : dependentAmount,\n [Field.CURRENCY_B]: independentField === Field.CURRENCY_A ? dependentAmount : independentAmount,\n }\n }, [dependentAmount, independentAmount, independentField])\n\n const price = useMemo(() => {\n if (noLiquidity) {\n const { [Field.CURRENCY_A]: currencyAAmount, [Field.CURRENCY_B]: currencyBAmount } = parsedAmounts\n if (currencyAAmount?.greaterThan(0) && currencyBAmount?.greaterThan(0)) {\n const value = currencyBAmount.divide(currencyAAmount)\n return new Price(currencyAAmount.currency, currencyBAmount.currency, value.denominator, value.numerator)\n }\n return undefined\n } else {\n const wrappedCurrencyA = currencyA?.wrapped\n return pair && wrappedCurrencyA ? pair.priceOf(wrappedCurrencyA) : undefined\n }\n }, [currencyA, noLiquidity, pair, parsedAmounts])\n\n // liquidity minted\n const liquidityMinted = useMemo(() => {\n const { [Field.CURRENCY_A]: currencyAAmount, [Field.CURRENCY_B]: currencyBAmount } = parsedAmounts\n const [tokenAmountA, tokenAmountB] = [currencyAAmount?.wrapped, currencyBAmount?.wrapped]\n if (pair && totalSupply && tokenAmountA && tokenAmountB) {\n try {\n return pair.getLiquidityMinted(totalSupply, tokenAmountA, tokenAmountB)\n } catch (error) {\n console.error(error)\n return undefined\n }\n } else {\n return undefined\n }\n }, [parsedAmounts, pair, totalSupply])\n\n const poolTokenPercentage = useMemo(() => {\n if (liquidityMinted && totalSupply) {\n return new Percent(liquidityMinted.quotient, totalSupply.add(liquidityMinted).quotient)\n } else {\n return undefined\n }\n }, [liquidityMinted, totalSupply])\n\n let error: string | undefined\n if (!account) {\n error = t`Connect Wallet`\n }\n\n if (pairState === PairState.INVALID) {\n error = error ?? t`Invalid pair`\n }\n\n if (!parsedAmounts[Field.CURRENCY_A] || !parsedAmounts[Field.CURRENCY_B]) {\n error = error ?? t`Enter an amount`\n }\n\n const { [Field.CURRENCY_A]: currencyAAmount, [Field.CURRENCY_B]: currencyBAmount } = parsedAmounts\n\n if (currencyAAmount && currencyBalances?.[Field.CURRENCY_A]?.lessThan(currencyAAmount)) {\n error = t`Insufficient ${currencies[Field.CURRENCY_A]?.symbol} balance`\n }\n\n if (currencyBAmount && currencyBalances?.[Field.CURRENCY_B]?.lessThan(currencyBAmount)) {\n error = t`Insufficient ${currencies[Field.CURRENCY_B]?.symbol} balance`\n }\n\n return {\n dependentField,\n currencies,\n pair,\n pairState,\n currencyBalances,\n parsedAmounts,\n price,\n noLiquidity,\n liquidityMinted,\n poolTokenPercentage,\n error,\n }\n}\n","import { Currency, CurrencyAmount, Fraction, Percent } from '@uniswap/sdk-core'\nimport JSBI from 'jsbi'\n\nconst ONE = new Fraction(1, 1)\n\nexport function calculateSlippageAmount(value: CurrencyAmount, slippage: Percent): [JSBI, JSBI] {\n if (slippage.lessThan(0) || slippage.greaterThan(ONE)) throw new Error('Unexpected slippage')\n return [value.multiply(ONE.subtract(slippage)).quotient, value.multiply(ONE.add(slippage)).quotient]\n}\n","import { Currency, CurrencyAmount, Fraction, Percent } from '@uniswap/sdk-core'\nimport { Text } from 'rebass'\nimport { ButtonPrimary } from '../../components/Button'\nimport { RowBetween, RowFixed } from '../../components/Row'\nimport CurrencyLogo from '../../components/CurrencyLogo'\nimport { Field } from '../../state/mint/actions'\nimport { TYPE } from '../../theme'\nimport { Trans } from '@lingui/macro'\n\nexport function ConfirmAddModalBottom({\n noLiquidity,\n price,\n currencies,\n parsedAmounts,\n poolTokenPercentage,\n onAdd,\n}: {\n noLiquidity?: boolean\n price?: Fraction\n currencies: { [field in Field]?: Currency }\n parsedAmounts: { [field in Field]?: CurrencyAmount }\n poolTokenPercentage?: Percent\n onAdd: () => void\n}) {\n return (\n <>\n \n \n {currencies[Field.CURRENCY_A]?.symbol} Deposited\n \n \n \n {parsedAmounts[Field.CURRENCY_A]?.toSignificant(6)}\n \n \n \n \n {currencies[Field.CURRENCY_B]?.symbol} Deposited\n \n \n \n {parsedAmounts[Field.CURRENCY_B]?.toSignificant(6)}\n \n \n \n \n Rates\n \n \n {`1 ${currencies[Field.CURRENCY_A]?.symbol} = ${price?.toSignificant(4)} ${\n currencies[Field.CURRENCY_B]?.symbol\n }`}\n \n \n \n \n {`1 ${currencies[Field.CURRENCY_B]?.symbol} = ${price?.invert().toSignificant(4)} ${\n currencies[Field.CURRENCY_A]?.symbol\n }`}\n \n \n \n \n Share of Pool:\n \n \n {noLiquidity ? '100' : poolTokenPercentage?.toSignificant(4)}%\n \n \n \n \n {noLiquidity ? Create Pool & Supply : Confirm Supply}\n \n \n \n )\n}\n","import { Currency, Percent, Price } from '@uniswap/sdk-core'\nimport { useContext } from 'react'\nimport { Text } from 'rebass'\nimport { ThemeContext } from 'styled-components/macro'\nimport { AutoColumn } from '../../components/Column'\nimport { AutoRow } from '../../components/Row'\nimport { ONE_BIPS } from '../../constants/misc'\nimport { Field } from '../../state/mint/actions'\nimport { TYPE } from '../../theme'\nimport { Trans } from '@lingui/macro'\n\nexport function PoolPriceBar({\n currencies,\n noLiquidity,\n poolTokenPercentage,\n price,\n}: {\n currencies: { [field in Field]?: Currency }\n noLiquidity?: boolean\n poolTokenPercentage?: Percent\n price?: Price\n}) {\n const theme = useContext(ThemeContext)\n return (\n \n \n \n {price?.toSignificant(6) ?? '-'}\n \n \n {currencies[Field.CURRENCY_B]?.symbol} per {currencies[Field.CURRENCY_A]?.symbol}\n \n \n \n \n {price?.invert()?.toSignificant(6) ?? '-'}\n \n \n {currencies[Field.CURRENCY_A]?.symbol} per {currencies[Field.CURRENCY_B]?.symbol}\n \n \n \n \n \n {noLiquidity && price\n ? '100'\n : (poolTokenPercentage?.lessThan(ONE_BIPS) ? '<0.01' : poolTokenPercentage?.toFixed(2)) ?? '0'}\n %\n \n \n Share of Pool\n \n \n \n \n )\n}\n","import { BigNumber } from '@ethersproject/bignumber'\nimport { TransactionResponse } from '@ethersproject/providers'\nimport { Currency, CurrencyAmount, Percent } from '@uniswap/sdk-core'\nimport { useCallback, useContext, useState } from 'react'\nimport { Plus } from 'react-feather'\nimport ReactGA from 'react-ga'\nimport { RouteComponentProps } from 'react-router-dom'\nimport { Text } from 'rebass'\nimport { ThemeContext } from 'styled-components/macro'\nimport { ButtonError, ButtonLight, ButtonPrimary } from '../../components/Button'\nimport { BlueCard, LightCard } from '../../components/Card'\nimport { AutoColumn, ColumnCenter } from '../../components/Column'\nimport TransactionConfirmationModal, { ConfirmationModalContent } from '../../components/TransactionConfirmationModal'\nimport CurrencyInputPanel from '../../components/CurrencyInputPanel'\nimport DoubleCurrencyLogo from '../../components/DoubleLogo'\nimport { AddRemoveTabs } from '../../components/NavigationTabs'\nimport { MinimalPositionCard } from '../../components/PositionCard'\nimport Row, { RowBetween, RowFlat } from '../../components/Row'\n\nimport { ZERO_PERCENT } from '../../constants/misc'\nimport { WETH9_EXTENDED } from '../../constants/tokens'\nimport { useV2RouterContract } from '../../hooks/useContract'\nimport { PairState } from '../../hooks/useV2Pairs'\nimport { useActiveWeb3React } from '../../hooks/web3'\nimport { useCurrency } from '../../hooks/Tokens'\nimport { ApprovalState, useApproveCallback } from '../../hooks/useApproveCallback'\nimport { useIsSwapUnsupported } from '../../hooks/useIsSwapUnsupported'\nimport useTransactionDeadline from '../../hooks/useTransactionDeadline'\nimport { useWalletModalToggle } from '../../state/application/hooks'\nimport { Field } from '../../state/mint/actions'\nimport { useDerivedMintInfo, useMintActionHandlers, useMintState } from '../../state/mint/hooks'\n\nimport { useTransactionAdder } from '../../state/transactions/hooks'\nimport { useIsExpertMode, useUserSlippageToleranceWithDefault } from '../../state/user/hooks'\nimport { TYPE } from '../../theme'\nimport { calculateGasMargin } from '../../utils/calculateGasMargin'\nimport { calculateSlippageAmount } from '../../utils/calculateSlippageAmount'\nimport { maxAmountSpend } from '../../utils/maxAmountSpend'\nimport AppBody from '../AppBody'\nimport { Dots, Wrapper } from '../Pool/styleds'\nimport { ConfirmAddModalBottom } from './ConfirmAddModalBottom'\nimport { currencyId } from '../../utils/currencyId'\nimport { PoolPriceBar } from './PoolPriceBar'\nimport UnsupportedCurrencyFooter from 'components/swap/UnsupportedCurrencyFooter'\nimport { SwitchLocaleLink } from 'components/SwitchLocaleLink'\nimport { t, Trans } from '@lingui/macro'\n\nconst DEFAULT_ADD_V2_SLIPPAGE_TOLERANCE = new Percent(50, 10_000)\n\nexport default function AddLiquidity({\n match: {\n params: { currencyIdA, currencyIdB },\n },\n history,\n}: RouteComponentProps<{ currencyIdA?: string; currencyIdB?: string }>) {\n const { account, chainId, library } = useActiveWeb3React()\n const theme = useContext(ThemeContext)\n\n const currencyA = useCurrency(currencyIdA)\n const currencyB = useCurrency(currencyIdB)\n\n const oneCurrencyIsWETH = Boolean(\n chainId &&\n ((currencyA && currencyA.equals(WETH9_EXTENDED[chainId])) ||\n (currencyB && currencyB.equals(WETH9_EXTENDED[chainId])))\n )\n\n const toggleWalletModal = useWalletModalToggle() // toggle wallet when disconnected\n\n const expertMode = useIsExpertMode()\n\n // mint state\n const { independentField, typedValue, otherTypedValue } = useMintState()\n const {\n dependentField,\n currencies,\n pair,\n pairState,\n currencyBalances,\n parsedAmounts,\n price,\n noLiquidity,\n liquidityMinted,\n poolTokenPercentage,\n error,\n } = useDerivedMintInfo(currencyA ?? undefined, currencyB ?? undefined)\n\n const { onFieldAInput, onFieldBInput } = useMintActionHandlers(noLiquidity)\n\n const isValid = !error\n\n // modal and loading\n const [showConfirm, setShowConfirm] = useState(false)\n const [attemptingTxn, setAttemptingTxn] = useState(false) // clicked confirm\n\n // txn values\n const deadline = useTransactionDeadline() // custom from users settings\n const allowedSlippage = useUserSlippageToleranceWithDefault(DEFAULT_ADD_V2_SLIPPAGE_TOLERANCE) // custom from users\n const [txHash, setTxHash] = useState('')\n\n // get formatted amounts\n const formattedAmounts = {\n [independentField]: typedValue,\n [dependentField]: noLiquidity ? otherTypedValue : parsedAmounts[dependentField]?.toSignificant(6) ?? '',\n }\n\n // get the max amounts user can add\n const maxAmounts: { [field in Field]?: CurrencyAmount } = [Field.CURRENCY_A, Field.CURRENCY_B].reduce(\n (accumulator, field) => {\n return {\n ...accumulator,\n [field]: maxAmountSpend(currencyBalances[field]),\n }\n },\n {}\n )\n\n const atMaxAmounts: { [field in Field]?: CurrencyAmount } = [Field.CURRENCY_A, Field.CURRENCY_B].reduce(\n (accumulator, field) => {\n return {\n ...accumulator,\n [field]: maxAmounts[field]?.equalTo(parsedAmounts[field] ?? '0'),\n }\n },\n {}\n )\n\n const router = useV2RouterContract()\n\n // check whether the user has approved the router on the tokens\n const [approvalA, approveACallback] = useApproveCallback(parsedAmounts[Field.CURRENCY_A], router?.address)\n const [approvalB, approveBCallback] = useApproveCallback(parsedAmounts[Field.CURRENCY_B], router?.address)\n\n const addTransaction = useTransactionAdder()\n\n async function onAdd() {\n if (!chainId || !library || !account || !router) return\n\n const { [Field.CURRENCY_A]: parsedAmountA, [Field.CURRENCY_B]: parsedAmountB } = parsedAmounts\n if (!parsedAmountA || !parsedAmountB || !currencyA || !currencyB || !deadline) {\n return\n }\n\n const amountsMin = {\n [Field.CURRENCY_A]: calculateSlippageAmount(parsedAmountA, noLiquidity ? ZERO_PERCENT : allowedSlippage)[0],\n [Field.CURRENCY_B]: calculateSlippageAmount(parsedAmountB, noLiquidity ? ZERO_PERCENT : allowedSlippage)[0],\n }\n\n let estimate,\n method: (...args: any) => Promise,\n args: Array,\n value: BigNumber | null\n if (currencyA.isNative || currencyB.isNative) {\n const tokenBIsETH = currencyB.isNative\n estimate = router.estimateGas.addLiquidityETH\n method = router.addLiquidityETH\n args = [\n (tokenBIsETH ? currencyA : currencyB)?.wrapped?.address ?? '', // token\n (tokenBIsETH ? parsedAmountA : parsedAmountB).quotient.toString(), // token desired\n amountsMin[tokenBIsETH ? Field.CURRENCY_A : Field.CURRENCY_B].toString(), // token min\n amountsMin[tokenBIsETH ? Field.CURRENCY_B : Field.CURRENCY_A].toString(), // eth min\n account,\n deadline.toHexString(),\n ]\n value = BigNumber.from((tokenBIsETH ? parsedAmountB : parsedAmountA).quotient.toString())\n } else {\n estimate = router.estimateGas.addLiquidity\n method = router.addLiquidity\n args = [\n currencyA?.wrapped?.address ?? '',\n currencyB?.wrapped?.address ?? '',\n parsedAmountA.quotient.toString(),\n parsedAmountB.quotient.toString(),\n amountsMin[Field.CURRENCY_A].toString(),\n amountsMin[Field.CURRENCY_B].toString(),\n account,\n deadline.toHexString(),\n ]\n value = null\n }\n\n setAttemptingTxn(true)\n await estimate(...args, value ? { value } : {})\n .then((estimatedGasLimit) =>\n method(...args, {\n ...(value ? { value } : {}),\n gasLimit: calculateGasMargin(chainId, estimatedGasLimit),\n }).then((response) => {\n setAttemptingTxn(false)\n\n addTransaction(response, {\n summary: t`Add ${parsedAmounts[Field.CURRENCY_A]?.toSignificant(3)} ${\n currencies[Field.CURRENCY_A]?.symbol\n } and ${parsedAmounts[Field.CURRENCY_B]?.toSignificant(3)} ${currencies[Field.CURRENCY_B]?.symbol}`,\n })\n\n setTxHash(response.hash)\n\n ReactGA.event({\n category: 'Liquidity',\n action: 'Add',\n label: [currencies[Field.CURRENCY_A]?.symbol, currencies[Field.CURRENCY_B]?.symbol].join('/'),\n })\n })\n )\n .catch((error) => {\n setAttemptingTxn(false)\n // we only care if the error is something _other_ than the user rejected the tx\n if (error?.code !== 4001) {\n console.error(error)\n }\n })\n }\n\n const modalHeader = () => {\n return noLiquidity ? (\n \n \n \n \n {currencies[Field.CURRENCY_A]?.symbol + '/' + currencies[Field.CURRENCY_B]?.symbol}\n \n \n \n \n \n ) : (\n \n \n \n {liquidityMinted?.toSignificant(6)}\n \n \n \n \n \n {currencies[Field.CURRENCY_A]?.symbol + '/' + currencies[Field.CURRENCY_B]?.symbol + ' Pool Tokens'}\n \n \n \n \n Output is estimated. If the price changes by more than {allowedSlippage.toSignificant(4)}% your transaction\n will revert.\n \n \n \n )\n }\n\n const modalBottom = () => {\n return (\n \n )\n }\n\n const pendingText = t`Supplying ${parsedAmounts[Field.CURRENCY_A]?.toSignificant(6)} ${\n currencies[Field.CURRENCY_A]?.symbol\n } and ${parsedAmounts[Field.CURRENCY_B]?.toSignificant(6)} ${currencies[Field.CURRENCY_B]?.symbol}`\n\n const handleCurrencyASelect = useCallback(\n (currencyA: Currency) => {\n const newCurrencyIdA = currencyId(currencyA)\n if (newCurrencyIdA === currencyIdB) {\n history.push(`/add/v2/${currencyIdB}/${currencyIdA}`)\n } else {\n history.push(`/add/v2/${newCurrencyIdA}/${currencyIdB}`)\n }\n },\n [currencyIdB, history, currencyIdA]\n )\n const handleCurrencyBSelect = useCallback(\n (currencyB: Currency) => {\n const newCurrencyIdB = currencyId(currencyB)\n if (currencyIdA === newCurrencyIdB) {\n if (currencyIdB) {\n history.push(`/add/v2/${currencyIdB}/${newCurrencyIdB}`)\n } else {\n history.push(`/add/v2/${newCurrencyIdB}`)\n }\n } else {\n history.push(`/add/v2/${currencyIdA ? currencyIdA : 'ETH'}/${newCurrencyIdB}`)\n }\n },\n [currencyIdA, history, currencyIdB]\n )\n\n const handleDismissConfirmation = useCallback(() => {\n setShowConfirm(false)\n // if there was a tx hash, we want to clear the input\n if (txHash) {\n onFieldAInput('')\n }\n setTxHash('')\n }, [onFieldAInput, txHash])\n\n const isCreate = history.location.pathname.includes('/create')\n\n const addIsUnsupported = useIsSwapUnsupported(currencies?.CURRENCY_A, currencies?.CURRENCY_B)\n\n return (\n <>\n \n \n \n (\n You are creating a pool : You will receive}\n onDismiss={handleDismissConfirmation}\n topContent={modalHeader}\n bottomContent={modalBottom}\n />\n )}\n pendingText={pendingText}\n currencyToAdd={pair?.liquidityToken}\n />\n \n {noLiquidity ||\n (isCreate ? (\n \n \n \n \n You are the first liquidity provider.\n \n \n The ratio of tokens you add will set the price of this pool.\n \n \n Once you are happy with the rate click supply to review.\n \n \n \n \n ) : (\n \n \n \n \n \n \n Tip:\n {' '}\n When you add liquidity, you will receive pool tokens representing your position. These tokens\n automatically earn fees proportional to your share of the pool, and can be redeemed at any\n time.\n \n \n \n \n \n ))}\n {\n onFieldAInput(maxAmounts[Field.CURRENCY_A]?.toExact() ?? '')\n }}\n onCurrencySelect={handleCurrencyASelect}\n showMaxButton={!atMaxAmounts[Field.CURRENCY_A]}\n currency={currencies[Field.CURRENCY_A]}\n id=\"add-liquidity-input-tokena\"\n showCommonBases\n />\n \n \n \n {\n onFieldBInput(maxAmounts[Field.CURRENCY_B]?.toExact() ?? '')\n }}\n showMaxButton={!atMaxAmounts[Field.CURRENCY_B]}\n currency={currencies[Field.CURRENCY_B]}\n id=\"add-liquidity-input-tokenb\"\n showCommonBases\n />\n {currencies[Field.CURRENCY_A] && currencies[Field.CURRENCY_B] && pairState !== PairState.INVALID && (\n <>\n \n \n \n {noLiquidity ? (\n Initial prices and pool share\n ) : (\n Prices and pool share\n )}\n \n {' '}\n \n \n \n \n \n )}\n\n {addIsUnsupported ? (\n \n \n Unsupported Asset\n \n \n ) : !account ? (\n \n Connect Wallet\n \n ) : (\n \n {(approvalA === ApprovalState.NOT_APPROVED ||\n approvalA === ApprovalState.PENDING ||\n approvalB === ApprovalState.NOT_APPROVED ||\n approvalB === ApprovalState.PENDING) &&\n isValid && (\n \n {approvalA !== ApprovalState.APPROVED && (\n \n {approvalA === ApprovalState.PENDING ? (\n \n Approving {currencies[Field.CURRENCY_A]?.symbol}\n \n ) : (\n Approve {currencies[Field.CURRENCY_A]?.symbol}\n )}\n \n )}\n {approvalB !== ApprovalState.APPROVED && (\n \n {approvalB === ApprovalState.PENDING ? (\n \n Approving {currencies[Field.CURRENCY_B]?.symbol}\n \n ) : (\n Approve {currencies[Field.CURRENCY_B]?.symbol}\n )}\n \n )}\n \n )}\n {\n expertMode ? onAdd() : setShowConfirm(true)\n }}\n disabled={!isValid || approvalA !== ApprovalState.APPROVED || approvalB !== ApprovalState.APPROVED}\n error={!isValid && !!parsedAmounts[Field.CURRENCY_A] && !!parsedAmounts[Field.CURRENCY_B]}\n >\n \n {error ?? Supply}\n \n \n \n )}\n \n \n \n \n\n {!addIsUnsupported ? (\n pair && !noLiquidity && pairState !== PairState.INVALID ? (\n \n \n \n ) : null\n ) : (\n \n )}\n \n )\n}\n","import React, { useCallback } from 'react'\nimport styled from 'styled-components/macro'\nimport { Text } from 'rebass'\nimport { CloseIcon } from 'theme'\nimport { Trans } from '@lingui/macro'\nimport Column from 'components/Column'\nimport Modal from 'components/Modal'\nimport { RowBetween } from 'components/Row'\nimport { MenuItem, PaddedColumn, Separator } from 'components/SearchModal/styleds'\nimport { ButtonDropdown } from 'components/Button'\n\nexport enum ProposalAction {\n TRANSFER_TOKEN = 'Transfer Token',\n APPROVE_TOKEN = 'Approve Token',\n}\n\ninterface ProposalActionSelectorModalProps {\n isOpen: boolean\n onDismiss: () => void\n onProposalActionSelect: (proposalAction: ProposalAction) => void\n}\n\nconst ContentWrapper = styled(Column)`\n width: 100%;\n flex: 1 1;\n position: relative;\n`\nconst ActionSelectorHeader = styled.div`\n font-size: 14px;\n font-weight: 500;\n color: ${({ theme }) => theme.text2};\n`\n\nconst ActionDropdown = styled(ButtonDropdown)`\n padding: 0px;\n background-color: transparent;\n color: ${({ theme }) => theme.text1};\n font-size: 1.25rem;\n\n :hover,\n :active,\n :focus {\n outline: 0px;\n box-shadow: none;\n background-color: transparent;\n }\n`\n\nconst ProposalActionSelectorFlex = styled.div`\n margin-top: 10px;\n display: flex;\n flex-flow: column nowrap;\n border-radius: 20px;\n border: 1px solid ${({ theme }) => theme.bg2};\n background-color: ${({ theme }) => theme.bg1};\n`\n\nconst ProposalActionSelectorContainer = styled.div`\n flex: 1;\n padding: 1rem;\n display: grid;\n grid-auto-rows: auto;\n grid-row-gap: 10px;\n`\n\nexport const ProposalActionSelector = ({\n className,\n onClick,\n proposalAction,\n}: {\n className?: string\n onClick: () => void\n proposalAction: ProposalAction\n}) => {\n return (\n \n \n \n Proposed Action\n \n {proposalAction}\n \n \n )\n}\n\nexport function ProposalActionSelectorModal({\n isOpen,\n onDismiss,\n onProposalActionSelect,\n}: ProposalActionSelectorModalProps) {\n const handleProposalActionSelect = useCallback(\n (proposalAction: ProposalAction) => {\n onProposalActionSelect(proposalAction)\n onDismiss()\n },\n [onDismiss, onProposalActionSelect]\n )\n\n return (\n \n \n \n \n \n Select an action\n \n \n \n \n \n handleProposalActionSelect(ProposalAction.TRANSFER_TOKEN)}>\n \n \n Transfer Token\n \n \n \n handleProposalActionSelect(ProposalAction.APPROVE_TOKEN)}>\n \n \n Approve Token\n \n \n \n \n \n )\n}\n","import { Redirect, RouteComponentProps } from 'react-router-dom'\nimport AddLiquidityV2 from './index'\n\nexport function RedirectDuplicateTokenIdsV2(props: RouteComponentProps<{ currencyIdA: string; currencyIdB: string }>) {\n const {\n match: {\n params: { currencyIdA, currencyIdB },\n },\n } = props\n\n if (currencyIdA && currencyIdB && currencyIdA.toLowerCase() === currencyIdB.toLowerCase()) {\n return \n }\n\n return \n}\n","import React, { memo, useCallback, useRef } from 'react'\nimport styled from 'styled-components/macro'\n\nconst Input = styled.input<{ error?: boolean; fontSize?: string }>`\n font-size: ${({ fontSize }) => fontSize || '1.25rem'};\n outline: none;\n border: none;\n flex: 1 1 auto;\n width: 0;\n background-color: ${({ theme }) => theme.bg1};\n transition: color 300ms ${({ error }) => (error ? 'step-end' : 'step-start')};\n color: ${({ error, theme }) => (error ? theme.red1 : theme.text1)};\n overflow: hidden;\n text-overflow: ellipsis;\n font-weight: 500;\n width: 100%;\n padding: 0px;\n -webkit-appearance: textfield;\n\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n\n ::-webkit-outer-spin-button,\n ::-webkit-inner-spin-button {\n -webkit-appearance: none;\n }\n\n ::placeholder {\n color: ${({ theme }) => theme.text4};\n }\n`\n\nconst TextAreaInput = styled.textarea<{ error?: boolean; fontSize?: string }>`\n font-size: ${({ fontSize }) => fontSize || '1.25rem'};\n outline: none;\n border: none;\n flex: 1 1 auto;\n width: 0;\n resize: none;\n background-color: ${({ theme }) => theme.bg1};\n transition: color 300ms ${({ error }) => (error ? 'step-end' : 'step-start')};\n color: ${({ error, theme }) => (error ? theme.red1 : theme.text1)};\n overflow: hidden;\n text-overflow: ellipsis;\n font-weight: 500;\n width: 100%;\n line-height: 1.2;\n padding: 0px;\n -webkit-appearance: textfield;\n\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n\n ::-webkit-outer-spin-button,\n ::-webkit-inner-spin-button {\n -webkit-appearance: none;\n }\n\n ::placeholder {\n color: ${({ theme }) => theme.text4};\n }\n`\n\nexport const TextInput = ({\n className,\n value,\n onUserInput,\n placeholder,\n fontSize,\n}: {\n className?: string\n value: string\n onUserInput: (value: string) => void\n placeholder: string\n fontSize: string\n}) => {\n const handleInput = useCallback(\n (event) => {\n onUserInput(event.target.value)\n },\n [onUserInput]\n )\n\n return (\n
\n \n
\n )\n}\n\nexport const ResizingTextArea = memo(\n ({\n className,\n value,\n onUserInput,\n placeholder,\n fontSize,\n }: {\n className?: string\n value: string\n onUserInput: (value: string) => void\n placeholder: string\n fontSize: string\n }) => {\n const inputRef = useRef(document.createElement('textarea'))\n\n const handleInput = useCallback(\n (event) => {\n inputRef.current.style.height = 'auto'\n inputRef.current.style.height = inputRef.current.scrollHeight + 'px'\n onUserInput(event.target.value)\n },\n [onUserInput]\n )\n\n return (\n \n )\n }\n)\n\nResizingTextArea.displayName = 'ResizingTextArea'\n","import React, { memo } from 'react'\nimport styled from 'styled-components/macro'\nimport { Text } from 'rebass'\nimport { ResizingTextArea, TextInput } from 'components/TextInput'\nimport { t, Trans } from '@lingui/macro'\n\nconst ProposalEditorHeader = styled(Text)`\n font-size: 14px;\n font-weight: 500;\n color: ${({ theme }) => theme.text2};\n`\n\nconst ProposalTitle = memo(styled(TextInput)`\n margin-top: 10.5px;\n margin-bottom: 7.5px;\n`)\n\nconst ProposalEditorContainer = styled.div`\n margin-top: 10px;\n padding: 0.75rem 1rem 0.75rem 1rem;\n border-radius: 20px;\n border: 1px solid ${({ theme }) => theme.bg2};\n background-color: ${({ theme }) => theme.bg1};\n`\n\nexport const ProposalEditor = ({\n className,\n title,\n body,\n onTitleInput,\n onBodyInput,\n}: {\n className?: string\n title: string\n body: string\n onTitleInput: (title: string) => void\n onBodyInput: (body: string) => void\n}) => {\n const bodyPlaceholder = `## Summary\n\nInsert your summary here\n\n## Methodology\n \nInsert your methodology here\n\n## Conclusion\n \nInsert your conclusion here\n \n `\n\n return (\n \n \n Proposal\n \n \n
\n \n
\n )\n}\n","import React from 'react'\nimport AddressInputPanel from 'components/AddressInputPanel'\nimport CurrencyInputPanel from 'components/CurrencyInputPanel'\nimport styled from 'styled-components/macro'\nimport { ProposalAction } from './ProposalActionSelector'\nimport { Currency } from '@uniswap/sdk-core'\nimport { Trans } from '@lingui/macro'\n\nenum ProposalActionDetailField {\n ADDRESS,\n CURRENCY,\n}\n\nconst ProposalActionDetailContainer = styled.div`\n margin-top: 10px;\n display: grid;\n grid-template-columns: repeat(1, 1fr);\n grid-gap: 10px;\n`\n\nexport const ProposalActionDetail = ({\n className,\n proposalAction,\n currency,\n amount,\n toAddress,\n onCurrencySelect,\n onAmountInput,\n onToAddressInput,\n}: {\n className?: string\n proposalAction: ProposalAction\n currency: Currency | undefined\n amount: string\n toAddress: string\n onCurrencySelect: (currency: Currency) => void\n onAmountInput: (amount: string) => void\n onToAddressInput: (address: string) => void\n}) => {\n const proposalActionsData = {\n [ProposalAction.TRANSFER_TOKEN]: [\n {\n type: ProposalActionDetailField.ADDRESS,\n label: To,\n },\n {\n type: ProposalActionDetailField.CURRENCY,\n },\n ],\n [ProposalAction.APPROVE_TOKEN]: [\n {\n type: ProposalActionDetailField.ADDRESS,\n label: To,\n },\n {\n type: ProposalActionDetailField.CURRENCY,\n },\n ],\n }\n\n return (\n \n {proposalActionsData[proposalAction].map((field, i) =>\n field.type === ProposalActionDetailField.ADDRESS ? (\n \n ) : field.type === ProposalActionDetailField.CURRENCY ? (\n onAmountInput(amount)}\n onCurrencySelect={(currency: Currency) => onCurrencySelect(currency)}\n showMaxButton={false}\n showCommonBases={false}\n showCurrencyAmount={false}\n disableNonToken={true}\n hideBalance={true}\n id=\"currency-input\"\n />\n ) : null\n )}\n \n )\n}\n","import { useContext } from 'react'\nimport { useActiveWeb3React } from '../../hooks/web3'\nimport { ExplorerDataType, getExplorerLink } from '../../utils/getExplorerLink'\n\nimport { AutoColumn, ColumnCenter } from '../Column'\nimport styled, { ThemeContext } from 'styled-components/macro'\nimport { RowBetween } from '../Row'\nimport { TYPE, CloseIcon, CustomLightSpinner } from '../../theme'\nimport { ArrowUpCircle } from 'react-feather'\nimport { Trans } from '@lingui/macro'\n\nimport Circle from '../../assets/images/blue-loader.svg'\nimport { ExternalLink } from '../../theme/components'\n\nconst ConfirmOrLoadingWrapper = styled.div`\n width: 100%;\n padding: 24px;\n`\n\nconst ConfirmedIcon = styled(ColumnCenter)`\n padding: 60px 0;\n`\n\nexport function LoadingView({ children, onDismiss }: { children: any; onDismiss: () => void }) {\n return (\n \n \n
\n \n \n \n \n \n \n {children}\n \n Confirm this transaction in your wallet\n \n \n \n )\n}\n\nexport function SubmittedView({\n children,\n onDismiss,\n hash,\n}: {\n children: any\n onDismiss: () => void\n hash: string | undefined\n}) {\n const theme = useContext(ThemeContext)\n const { chainId } = useActiveWeb3React()\n\n return (\n \n \n
\n \n \n \n \n \n \n {children}\n {chainId && hash && (\n \n \n View transaction on Explorer\n \n \n )}\n \n \n )\n}\n","import React, { useContext } from 'react'\nimport { ThemeContext } from 'styled-components/macro'\nimport { Text } from 'rebass'\nimport { ExternalLink, TYPE } from 'theme'\nimport { ButtonPrimary } from 'components/Button'\nimport { AutoColumn } from 'components/Column'\nimport Modal from 'components/Modal'\nimport { LoadingView, SubmittedView } from 'components/ModalViews'\nimport { ExplorerDataType, getExplorerLink } from 'utils/getExplorerLink'\nimport { Link } from 'react-router-dom'\nimport { Trans } from '@lingui/macro'\n\nexport const ProposalSubmissionModal = ({\n isOpen,\n hash,\n onDismiss,\n}: {\n isOpen: boolean\n hash: string | undefined\n onDismiss: () => void\n}) => {\n const theme = useContext(ThemeContext)\n\n return (\n \n {!hash ? (\n \n \n \n Submitting Proposal\n \n \n \n ) : (\n \n \n \n Proposal Submitted\n \n {hash && (\n \n \n View on Etherscan\n \n \n )}\n \n \n Return\n \n \n \n \n )}\n \n )\n}\n","import { useBlockNumber } from '../application/hooks'\nimport { useEffect, useMemo } from 'react'\nimport { useActiveWeb3React } from '../../hooks/web3'\nimport { useAppDispatch, useAppSelector } from '../hooks'\nimport { addListener, removeListener } from './slice'\nimport { EventFilter, filterToKey, Log } from './utils'\n\nenum LogsState {\n // The filter is invalid\n INVALID,\n // The logs are being loaded\n LOADING,\n // Logs are from a previous block number\n SYNCING,\n // Tried to fetch logs but received an error\n ERROR,\n // Logs have been fetched as of the latest block number\n SYNCED,\n}\n\nexport interface UseLogsResult {\n logs: Log[] | undefined\n state: LogsState\n}\n\n/**\n * Returns the logs for the given filter as of the latest block, re-fetching from the library every block.\n * @param filter The logs filter, without `blockHash`, `fromBlock` or `toBlock` defined.\n */\nexport function useLogs(filter: EventFilter | undefined): UseLogsResult {\n const { chainId } = useActiveWeb3React()\n const blockNumber = useBlockNumber()\n\n const logs = useAppSelector((state) => state.logs)\n const dispatch = useAppDispatch()\n\n useEffect(() => {\n if (!filter || !chainId) return\n\n dispatch(addListener({ chainId, filter }))\n return () => {\n dispatch(removeListener({ chainId, filter }))\n }\n }, [chainId, dispatch, filter])\n\n const filterKey = useMemo(() => (filter ? filterToKey(filter) : undefined), [filter])\n\n return useMemo(() => {\n if (!chainId || !filterKey || !blockNumber)\n return {\n logs: undefined,\n state: LogsState.INVALID,\n }\n\n const state = logs[chainId]?.[filterKey]\n const result = state?.results\n if (!result) {\n return {\n state: LogsState.LOADING,\n logs: undefined,\n }\n }\n\n if (result.error) {\n return {\n state: LogsState.ERROR,\n logs: undefined,\n }\n }\n\n return {\n state: result.blockNumber >= blockNumber ? LogsState.SYNCED : LogsState.SYNCING,\n logs: result.logs,\n }\n }, [blockNumber, chainId, filterKey, logs])\n}\n","import { TransactionResponse } from '@ethersproject/providers'\nimport { t } from '@lingui/macro'\nimport { abi as GOV_ABI } from '@uniswap/governance/build/GovernorAlpha.json'\nimport { CurrencyAmount, Token } from '@uniswap/sdk-core'\nimport { UNISWAP_GRANTS_PROPOSAL_DESCRIPTION } from 'constants/proposals/uniswap_grants_proposal_description'\nimport { Contract } from 'ethers'\nimport { defaultAbiCoder, formatUnits, Interface, isAddress } from 'ethers/lib/utils'\nimport {\n useGovernanceV0Contract,\n useGovernanceV1Contract,\n useLatestGovernanceContract,\n useUniContract,\n} from 'hooks/useContract'\nimport { useActiveWeb3React } from 'hooks/web3'\nimport { useCallback, useMemo } from 'react'\nimport { calculateGasMargin } from 'utils/calculateGasMargin'\nimport { SupportedChainId } from '../../constants/chains'\nimport { UNISWAP_GRANTS_START_BLOCK } from '../../constants/proposals'\nimport { UNI } from '../../constants/tokens'\nimport { useLogs } from '../logs/hooks'\nimport { useSingleCallResult, useSingleContractMultipleData } from '../multicall/hooks'\nimport { useTransactionAdder } from '../transactions/hooks'\n\ninterface ProposalDetail {\n target: string\n functionSig: string\n callData: string\n}\n\nexport interface ProposalData {\n id: string\n title: string\n description: string\n proposer: string\n status: ProposalState\n forCount: number\n againstCount: number\n startBlock: number\n endBlock: number\n details: ProposalDetail[]\n governorIndex: number // index in the governance address array for which this proposal pertains\n}\n\nexport interface CreateProposalData {\n targets: string[]\n values: string[]\n signatures: string[]\n calldatas: string[]\n description: string\n}\n\nexport enum ProposalState {\n UNDETERMINED = -1,\n PENDING,\n ACTIVE,\n CANCELED,\n DEFEATED,\n SUCCEEDED,\n QUEUED,\n EXPIRED,\n EXECUTED,\n}\n\nconst GovernanceInterface = new Interface(GOV_ABI)\n\n// get count of all proposals made in the latest governor contract\nfunction useProposalCount(contract: Contract | null): number | undefined {\n const { result } = useSingleCallResult(contract, 'proposalCount')\n\n return result?.[0]?.toNumber()\n}\n\ninterface FormattedProposalLog {\n description: string\n details: { target: string; functionSig: string; callData: string }[]\n}\n/**\n * Need proposal events to get description data emitted from\n * new proposal event.\n */\nfunction useFormattedProposalCreatedLogs(contract: Contract | null): FormattedProposalLog[] | undefined {\n // create filters for ProposalCreated events\n const filter = useMemo(() => contract?.filters?.ProposalCreated(), [contract])\n\n const useLogsResult = useLogs(filter)\n\n return useMemo(() => {\n return useLogsResult?.logs?.map((log) => {\n const parsed = GovernanceInterface.parseLog(log).args\n return {\n description: parsed.description,\n details: parsed.targets.map((target: string, i: number) => {\n const signature = parsed.signatures[i]\n const [name, types] = signature.substr(0, signature.length - 1).split('(')\n const calldata = parsed.calldatas[i]\n const decoded = defaultAbiCoder.decode(types.split(','), calldata)\n return {\n target,\n functionSig: name,\n callData: decoded.join(', '),\n }\n }),\n }\n })\n }, [useLogsResult])\n}\n\nconst V0_PROPOSAL_IDS = [[1], [2], [3], [4]]\n\nfunction countToIndices(count: number | undefined) {\n return typeof count === 'number' ? new Array(count).fill(0).map((_, i) => [i + 1]) : []\n}\n\n// get data for all past and active proposals\nexport function useAllProposalData(): { data: ProposalData[]; loading: boolean } {\n const { chainId } = useActiveWeb3React()\n const gov0 = useGovernanceV0Contract()\n const gov1 = useGovernanceV1Contract()\n\n const proposalCount0 = useProposalCount(gov0)\n const proposalCount1 = useProposalCount(gov1)\n\n const gov0ProposalIndexes = useMemo(() => {\n return chainId === SupportedChainId.MAINNET ? V0_PROPOSAL_IDS : countToIndices(proposalCount0)\n }, [chainId, proposalCount0])\n const gov1ProposalIndexes = useMemo(() => {\n return countToIndices(proposalCount1)\n }, [proposalCount1])\n\n const proposalsV0 = useSingleContractMultipleData(gov0, 'proposals', gov0ProposalIndexes)\n const proposalsV1 = useSingleContractMultipleData(gov1, 'proposals', gov1ProposalIndexes)\n\n // get all proposal states\n const proposalStatesV0 = useSingleContractMultipleData(gov0, 'state', gov0ProposalIndexes)\n const proposalStatesV1 = useSingleContractMultipleData(gov1, 'state', gov1ProposalIndexes)\n\n // get metadata from past events\n const formattedLogsV0 = useFormattedProposalCreatedLogs(gov0)\n const formattedLogsV1 = useFormattedProposalCreatedLogs(gov1)\n\n // early return until events are fetched\n return useMemo(() => {\n const proposalsCallData = proposalsV0.concat(proposalsV1)\n const proposalStatesCallData = proposalStatesV0.concat(proposalStatesV1)\n const formattedLogs = (formattedLogsV0 ?? []).concat(formattedLogsV1 ?? [])\n\n if (\n proposalsCallData.some((p) => p.loading) ||\n proposalStatesCallData.some((p) => p.loading) ||\n (gov0 && !formattedLogsV0) ||\n (gov1 && !formattedLogsV1)\n ) {\n return { data: [], loading: true }\n }\n\n return {\n data: proposalsCallData.map((proposal, i) => {\n let description = formattedLogs[i]?.description\n const startBlock = parseInt(proposal?.result?.startBlock?.toString())\n if (startBlock === UNISWAP_GRANTS_START_BLOCK) {\n description = UNISWAP_GRANTS_PROPOSAL_DESCRIPTION\n }\n return {\n id: proposal?.result?.id.toString(),\n title: description?.split(/# |\\n/g)[1] ?? t`Untitled`,\n description: description ?? t`No description.`,\n proposer: proposal?.result?.proposer,\n status: proposalStatesCallData[i]?.result?.[0] ?? ProposalState.UNDETERMINED,\n forCount: parseFloat(formatUnits(proposal?.result?.forVotes?.toString() ?? 0, 18)),\n againstCount: parseFloat(formatUnits(proposal?.result?.againstVotes?.toString() ?? 0, 18)),\n startBlock,\n endBlock: parseInt(proposal?.result?.endBlock?.toString()),\n details: formattedLogs[i]?.details,\n governorIndex: i >= gov0ProposalIndexes.length ? 1 : 0,\n }\n }),\n loading: false,\n }\n }, [\n formattedLogsV0,\n formattedLogsV1,\n gov0,\n gov0ProposalIndexes.length,\n gov1,\n proposalStatesV0,\n proposalStatesV1,\n proposalsV0,\n proposalsV1,\n ])\n}\n\nexport function useProposalData(governorIndex: number, id: string): ProposalData | undefined {\n const { data } = useAllProposalData()\n return data.filter((p) => p.governorIndex === governorIndex)?.find((p) => p.id === id)\n}\n\n// get the users delegatee if it exists\nexport function useUserDelegatee(): string {\n const { account } = useActiveWeb3React()\n const uniContract = useUniContract()\n const { result } = useSingleCallResult(uniContract, 'delegates', [account ?? undefined])\n return result?.[0] ?? undefined\n}\n\n// gets the users current votes\nexport function useUserVotes(): { loading: boolean; votes: CurrencyAmount | undefined } {\n const { account, chainId } = useActiveWeb3React()\n const uniContract = useUniContract()\n\n // check for available votes\n const { result, loading } = useSingleCallResult(uniContract, 'getCurrentVotes', [account ?? undefined])\n return useMemo(() => {\n const uni = chainId ? UNI[chainId] : undefined\n return { loading, votes: uni && result ? CurrencyAmount.fromRawAmount(uni, result?.[0]) : undefined }\n }, [chainId, loading, result])\n}\n\n// fetch available votes as of block (usually proposal start block)\nexport function useUserVotesAsOfBlock(block: number | undefined): CurrencyAmount | undefined {\n const { account, chainId } = useActiveWeb3React()\n const uniContract = useUniContract()\n\n // check for available votes\n const uni = chainId ? UNI[chainId] : undefined\n const votes = useSingleCallResult(uniContract, 'getPriorVotes', [account ?? undefined, block ?? undefined])\n ?.result?.[0]\n return votes && uni ? CurrencyAmount.fromRawAmount(uni, votes) : undefined\n}\n\nexport function useDelegateCallback(): (delegatee: string | undefined) => undefined | Promise {\n const { account, chainId, library } = useActiveWeb3React()\n const addTransaction = useTransactionAdder()\n\n const uniContract = useUniContract()\n\n return useCallback(\n (delegatee: string | undefined) => {\n if (!library || !chainId || !account || !isAddress(delegatee ?? '')) return undefined\n const args = [delegatee]\n if (!uniContract) throw new Error('No UNI Contract!')\n return uniContract.estimateGas.delegate(...args, {}).then((estimatedGasLimit) => {\n return uniContract\n .delegate(...args, { value: null, gasLimit: calculateGasMargin(chainId, estimatedGasLimit) })\n .then((response: TransactionResponse) => {\n addTransaction(response, {\n summary: t`Delegated votes`,\n })\n return response.hash\n })\n })\n },\n [account, addTransaction, chainId, library, uniContract]\n )\n}\n\nexport function useVoteCallback(): {\n voteCallback: (proposalId: string | undefined, support: boolean) => undefined | Promise\n} {\n const { account, chainId } = useActiveWeb3React()\n\n const latestGovernanceContract = useLatestGovernanceContract()\n\n const addTransaction = useTransactionAdder()\n\n const voteCallback = useCallback(\n (proposalId: string | undefined, support: boolean) => {\n if (!account || !latestGovernanceContract || !proposalId || !chainId) return\n const args = [proposalId, support]\n return latestGovernanceContract.estimateGas.castVote(...args, {}).then((estimatedGasLimit) => {\n return latestGovernanceContract\n .castVote(...args, { value: null, gasLimit: calculateGasMargin(chainId, estimatedGasLimit) })\n .then((response: TransactionResponse) => {\n addTransaction(response, {\n summary: `Voted ${support ? 'for ' : 'against'} proposal ${proposalId}`,\n })\n return response.hash\n })\n })\n },\n [account, addTransaction, latestGovernanceContract, chainId]\n )\n return { voteCallback }\n}\n\nexport function useCreateProposalCallback(): (\n createProposalData: CreateProposalData | undefined\n) => undefined | Promise {\n const { account, chainId } = useActiveWeb3React()\n\n const latestGovernanceContract = useLatestGovernanceContract()\n const addTransaction = useTransactionAdder()\n\n return useCallback(\n (createProposalData: CreateProposalData | undefined) => {\n if (!account || !latestGovernanceContract || !createProposalData || !chainId) return undefined\n\n const args = [\n createProposalData.targets,\n createProposalData.values,\n createProposalData.signatures,\n createProposalData.calldatas,\n createProposalData.description,\n ]\n\n return latestGovernanceContract.estimateGas.propose(...args).then((estimatedGasLimit) => {\n return latestGovernanceContract\n .propose(...args, { gasLimit: calculateGasMargin(chainId, estimatedGasLimit) })\n .then((response: TransactionResponse) => {\n addTransaction(response, {\n summary: t`Submitted new proposal`,\n })\n return response.hash\n })\n })\n },\n [account, addTransaction, latestGovernanceContract, chainId]\n )\n}\n\nexport function useLatestProposalId(address: string | undefined): string | undefined {\n const govContractV1 = useGovernanceV1Contract()\n const res = useSingleCallResult(govContractV1, 'latestProposalIds', [address])\n\n return res?.result?.[0]?.toString()\n}\n\nexport function useProposalThreshold(): CurrencyAmount | undefined {\n const { chainId } = useActiveWeb3React()\n\n const latestGovernanceContract = useLatestGovernanceContract()\n const res = useSingleCallResult(latestGovernanceContract, 'proposalThreshold')\n const uni = chainId ? UNI[chainId] : undefined\n\n if (res?.result?.[0] && uni) {\n return CurrencyAmount.fromRawAmount(uni, res.result[0])\n }\n\n return undefined\n}\n","export const UNISWAP_GRANTS_START_BLOCK = 11473815\n","export const UNISWAP_GRANTS_PROPOSAL_DESCRIPTION = `# Uniswap Grants Program v0.1\n\n*co-authored with [Ken Ng](https://twitter.com/nkennethk?lang=en)*\n\n## Summary:\n\n**This post outlines a framework for funding Uniswap ecosystem development with grants from the[ UNI Community Treasury](https://uniswap.org/blog/uni/).** The program starts small—sponsoring hackathons, [for example](https://gov.uniswap.org/c/proposal-discussion/5)—but could grow in significance over time (with renewals approved by governance) to fund core protocol development. Grants administration is a subjective process that cannot be easily automated, and thus we propose a nimble committee of 6 members —1 lead and 5 reviewers—to deliver an efficient, predictable process to applicants, such that funding can be administered without having to put each application to a vote. We propose the program start with an initial cap of $750K per quarter and a limit of 2 quarters before renewal—a sum that we feel is appropriate for an MVP relative to the size of the treasury that UNI token holders are entrusted with allocating.\n\n**Purpose:**\n\n**The mission of the UGP is to provide valuable resources to help grow the Uniswap ecosystem.** Through public discourse and inbound applications, the community will get first-hand exposure to identify and respond to the most pressing needs of the ecosystem, as well as the ability to support innovative projects expanding the capabilities of Uniswap. By rewarding talent early with developer incentives, bounties, and infrastructure support, UGP acts as a catalyst for growth and helps to maintain Uniswap as a nexus for DeFi on Ethereum.\n\n**Quarterly Budget:**\n\n* Max quarterly budget of up to $750k\n* Budget and caps to be assessed every six months\n\n**Grant Allocation Committee:**\n\n* Of 6 committee members: 1 lead and 5 reviewers\n* Each committee has a term of 2 quarters (6 months) after which the program needs to be renewed by UNI governance\n* Committee functions as a 4 of 5 multi-sig\n\n**Committee Members**\n\nWhile the goals and priorities of the grant program will be thoroughly discussed and reviewed by the community through public discourse, **the decision to start UGP by operating as a small committee is to ensure that the application and decision process will be efficient and predictable, so applicants have clear objectives and timely decisions.**\n\nStarting with just six members enables the committee to efficiently fund projects with tight feedback loops and rapid iterations. The purpose of this committee would be to test the hypothesis that the Grants Program can successfully provide value for the UNI ecosystem before scaling the program.\n\n**We suggest the grants program is administered by a single lead. Here we propose Kenneth Ng, a co-author of this post**. Ken has helped grow the Ethereum Foundation Grants Program over the last two years in establishing high level priorities and adapting for the ecosystems needs.\n\n**The other 5 committee members should be thought of as “reviewers” — UNI community members who will keep the grants program functional by ensuring Ken is leading effectively and, of course, not absconding with funds.** Part of the reviewers job is to hold the program accountable for success (defined below) and/or return any excess funds to the UNI treasury. Reviewers are not compensated as part of this proposal as we expect their time commitment to be minimal. Compensation for the lead role is discussed below, as we expect this to be a labor intensive role.\n\n**Program Lead:** [Ken Ng](https://twitter.com/nkennethk?lang=en) (HL Creative Corp)\n*Ecosystem Support Program at the Ethereum Foundation*\n\n1. Reviewer: [Jesse Walden](https://twitter.com/jessewldn) (o/b/o Unofficial LLC dba [Variant Fund](http://twitter.com/variantfund))\n*Founder and Investor at Variant Fund (holds UNI)*\n\n2. Reviewer: [Monet Supply](https://twitter.com/MonetSupply)\n*Risk Analyst at MakerDAO*\n\n3. Reviewer: [Robert Leshner](https://twitter.com/rleshner)\n*Founder and CEO of Compound Finance*\n\n4. Reviewer: [Kain Warwick](https://twitter.com/kaiynne)\n*Founder of Synthetix*\n\n5. Reviewer: [Ashleigh Schap](https://twitter.com/ashleighschap)\n*Growth Lead, Uniswap (Company)*\n\n## Methodology\n\n**1.1 Budget**\n\nThis proposal recommends a max cap of $750K per quarter, with the ability to reevaluate biannually at each epoch (two fiscal quarters). While the UGP Grants Committee will be the decision makers around individual grants, respective budgets, roadmaps, and milestones, any top-level changes to UGP including epochs and max cap, will require full community quorum (4% approval).\n\nThe UGP will be funded by the UNI treasury according to the[ release schedule](https://uniswap.org/blog/uni/) set out by the Uniswap team, whereby 43% of the UNI treasury is released over a four-year timeline. In Year 1 this will total to 172,000,000 UNI (~$344M as of writing).\n\nTaking into consideration the current landscape of ecosystem funding across Ethereum, the community would be hard-pressed to allocate even 5% of Year 1’s treasury. For context Gitcoin CLR Round 7 distributed $725k ($450k in matched) across 857 projects and YTD, Moloch has granted just under $200k but in contrast, the EF has committed to somewhere in the 8 figure range.\n\n**1.2 Committee Compensation**\n\nOperating a successful grants program takes considerable time and effort. Take, for instance, the EF Ecosystem Support Program, which has awarded grants since 2018, consists of an internal team at the Foundation as well as an ever increasing roster of community advisors in order to keep expanding and adapting to best serve the needs of the Ethereum ecosystem. While the structure of the allocation committee has six members, we propose that only the lead will be remunerated for their work in establishing the initial processes, vetting applications, and managing the program overall as this role is expected to be time consuming if the program is to be succesful. We propose that the other committee members be unpaid UNI ecosystem stakeholders who have an interest in seeing the protocol ecosystem continue to operate and grow.\n\n**We propose the lead be compensated 25 UNI/hr (approximately $100 USD at time of this writing) capped at 30 hours/week. This compensation, along with the quarterly budget, will be allocated to the UGP multisig from the UNI treasury**. In keeping with the committee’s commitment to the community, hours and duties will be logged publicly and transparently .\n\n**2.1 Priorities**\n\nInitially, the program aims to start narrow in scope, funding peripheral ecosystem initiatives, such as targeted bounties, hackathon sponsorships, and other low-stakes means of building out the Uniswap developer ecosystem. Over time, if the program proves effective, the grant allocations can grow in scope to include, for example, improved frontends, trading interfaces, and eventually, core protocol development.\n\n![|624x199](upload://vNP0APCOjiwQMurCmYI47cTLklc.png)\n\nWith the initial priorities in mind, some effective measures for quick successes might look like:\n\n* Total number of projects funded\n* Quarterly increase in applications\n* Project engagement post-event/funding\n* Overall community engagement/sentiment\n\n**2.2 Timeline**\n\nIn keeping with the fast pace of the UNI ecosystem, we organize time in epochs, or two calendar quarters. Each epoch will see two funding rounds, one per quarter, after which the community can review and create proposals to improve or revamp the program as they deem fit.\n\n**![|624x245](upload://n56TSh5X3mt4TSqVVMFhbnZM0eM.png)**\n\n**Rolling Wave 1 & 2 Applications**\n\n* Starting in Q1 2021, UGP will start accepting applications for events looking for support in the form of bounties or prizes that in parallel can be proactively sourced. During these first two waves of funding projects, the allocation committee lead can begin laying out guardrails for continued funding\n\n* Considering the immediate feedback loops for the first epoch, we expect these allocation decisions to be discussed and reviewed by the larger community. Should this not be of value, the community can submit a formal governance proposal to change any piece of UGP that was not effective\n\n**Wave 3 & Beyond**\n\n* Beginning with Wave 3, there should have been enough time with impactful projects funded to be considered for follow-on funding, should it make sense. In the same vein, projects within scope will be expanded to also include those working on integrations and and other key components.\n\n* Beyond the second epoch, as the community helps to review and help adapt UGP to be most effective, the scope will continue to grow in order to accommodate the state of the ecosystem including that of core protocol improvements\n\n## Conclusion:\n\n**If this proposal is successfully approved, UGP will start accepting applications on a rolling basis beginning at the start of 2021.** With the phases and priorities laid out above, UGP will aim to make a significant impact by catalyzing growth and innovation in the UNI ecosystem.\n\n**This program is meant to be the simplest possible MVP of a Uniswap Ecosystem Grants initiative.** While the multi-sig committee comes with trust assumptions about the members, our hope is the community will approve this limited engagement to get the ball rolling in an efficient structure. **After the first epoch (2 fiscal quarters) the burden of proof will be on UGP to show empirical evidence that the program is worth continuing in its existing form and will submit to governance to renew treasury funding.**\n\nIf this program proves successful, we hope it will inspire others to follow suit and create their own funding committees for allocating treasury capital—ideally with different specializations.\n`\n","import React, { useCallback, useMemo, useState } from 'react'\nimport JSBI from 'jsbi'\nimport styled from 'styled-components/macro'\nimport { utils } from 'ethers'\nimport { ExternalLink, TYPE } from 'theme'\nimport { Currency, CurrencyAmount, Token } from '@uniswap/sdk-core'\nimport { UNI } from '../../constants/tokens'\nimport AppBody from '../AppBody'\nimport { CreateProposalTabs } from '../../components/NavigationTabs'\nimport { ButtonError } from 'components/Button'\nimport { AutoColumn } from 'components/Column'\nimport { BlueCard } from 'components/Card'\nimport { Wrapper } from 'pages/Pool/styleds'\nimport { ProposalAction, ProposalActionSelector, ProposalActionSelectorModal } from './ProposalActionSelector'\nimport { ProposalEditor } from './ProposalEditor'\nimport { ProposalActionDetail } from './ProposalActionDetail'\nimport { ProposalSubmissionModal } from './ProposalSubmissionModal'\nimport { useActiveWeb3React } from 'hooks/web3'\nimport {\n CreateProposalData,\n ProposalState,\n useCreateProposalCallback,\n useLatestProposalId,\n useProposalData,\n useProposalThreshold,\n useUserVotes,\n} from 'state/governance/hooks'\nimport { Trans } from '@lingui/macro'\nimport { tryParseAmount } from 'state/swap/hooks'\nimport { getAddress } from '@ethersproject/address'\n\nconst CreateProposalButton = ({\n proposalThreshold,\n hasActiveOrPendingProposal,\n hasEnoughVote,\n isFormInvalid,\n handleCreateProposal,\n}: {\n proposalThreshold?: CurrencyAmount\n hasActiveOrPendingProposal: boolean\n hasEnoughVote: boolean\n isFormInvalid: boolean\n handleCreateProposal: () => void\n}) => {\n const formattedProposalThreshold = proposalThreshold\n ? JSBI.divide(\n proposalThreshold.quotient,\n JSBI.exponentiate(JSBI.BigInt(10), JSBI.BigInt(proposalThreshold.currency.decimals))\n ).toLocaleString()\n : undefined\n\n return (\n \n {hasActiveOrPendingProposal ? (\n You already have an active or pending proposal\n ) : !hasEnoughVote ? (\n <>\n {formattedProposalThreshold ? (\n You must have {formattedProposalThreshold} votes to submit a proposal\n ) : (\n You don't have enough votes to submit a proposal\n )}\n \n ) : (\n Create Proposal\n )}\n \n )\n}\n\nconst CreateProposalWrapper = styled(Wrapper)`\n display: flex;\n flex-flow: column wrap;\n`\n\nconst AutonomousProposalCTA = styled.div`\n text-align: center;\n margin-top: 10px;\n`\n\nexport default function CreateProposal() {\n const { account, chainId } = useActiveWeb3React()\n\n const latestProposalId = useLatestProposalId(account ?? undefined) ?? '0'\n const latestProposalData = useProposalData(0, latestProposalId)\n const { votes: availableVotes } = useUserVotes()\n const proposalThreshold: CurrencyAmount | undefined = useProposalThreshold()\n\n const [modalOpen, setModalOpen] = useState(false)\n const [hash, setHash] = useState()\n const [attempting, setAttempting] = useState(false)\n const [proposalAction, setProposalAction] = useState(ProposalAction.TRANSFER_TOKEN)\n const [toAddressValue, setToAddressValue] = useState('')\n const [currencyValue, setCurrencyValue] = useState(UNI[chainId ?? 1])\n const [amountValue, setAmountValue] = useState('')\n const [titleValue, setTitleValue] = useState('')\n const [bodyValue, setBodyValue] = useState('')\n\n const handleActionSelectorClick = useCallback(() => {\n setModalOpen(true)\n }, [setModalOpen])\n\n const handleActionChange = useCallback(\n (proposalAction: ProposalAction) => {\n setProposalAction(proposalAction)\n },\n [setProposalAction]\n )\n\n const handleDismissActionSelector = useCallback(() => {\n setModalOpen(false)\n }, [setModalOpen])\n\n const handleDismissSubmissionModal = useCallback(() => {\n setHash(undefined)\n setAttempting(false)\n }, [setHash, setAttempting])\n\n const handleToAddressInput = useCallback(\n (toAddress: string) => {\n setToAddressValue(toAddress)\n },\n [setToAddressValue]\n )\n\n const handleCurrencySelect = useCallback(\n (currency: Currency) => {\n setCurrencyValue(currency)\n },\n [setCurrencyValue]\n )\n\n const handleAmountInput = useCallback(\n (amount: string) => {\n setAmountValue(amount)\n },\n [setAmountValue]\n )\n\n const handleTitleInput = useCallback(\n (title: string) => {\n setTitleValue(title)\n },\n [setTitleValue]\n )\n\n const handleBodyInput = useCallback(\n (body: string) => {\n setBodyValue(body)\n },\n [setBodyValue]\n )\n\n const isFormInvalid = useMemo(\n () =>\n Boolean(\n !proposalAction ||\n !utils.isAddress(toAddressValue) ||\n !currencyValue?.isToken ||\n amountValue === '' ||\n titleValue === '' ||\n bodyValue === ''\n ),\n [proposalAction, toAddressValue, currencyValue, amountValue, titleValue, bodyValue]\n )\n\n const hasEnoughVote = Boolean(\n availableVotes && proposalThreshold && JSBI.greaterThanOrEqual(availableVotes.quotient, proposalThreshold.quotient)\n )\n\n const createProposalCallback = useCreateProposalCallback()\n\n const handleCreateProposal = async () => {\n setAttempting(true)\n\n const createProposalData: CreateProposalData = {} as CreateProposalData\n\n if (!createProposalCallback || !proposalAction || !currencyValue.isToken) return\n\n const tokenAmount = tryParseAmount(amountValue, currencyValue)\n if (!tokenAmount) return\n\n createProposalData.targets = [currencyValue.address]\n createProposalData.values = ['0']\n createProposalData.description = `# ${titleValue}\n\n${bodyValue}\n`\n\n let types: string[][]\n let values: string[][]\n switch (proposalAction) {\n case ProposalAction.TRANSFER_TOKEN: {\n types = [['address', 'uint256']]\n values = [[getAddress(toAddressValue), tokenAmount.quotient.toString()]]\n createProposalData.signatures = [`transfer(${types[0].join(',')})`]\n break\n }\n\n case ProposalAction.APPROVE_TOKEN: {\n types = [['address', 'uint256']]\n values = [[getAddress(toAddressValue), tokenAmount.quotient.toString()]]\n createProposalData.signatures = [`approve(${types[0].join(',')})`]\n break\n }\n }\n\n createProposalData.calldatas = []\n for (let i = 0; i < createProposalData.signatures.length; i++) {\n createProposalData.calldatas[i] = utils.defaultAbiCoder.encode(types[i], values[i])\n }\n\n const hash = await createProposalCallback(createProposalData ?? undefined)?.catch(() => {\n setAttempting(false)\n })\n\n if (hash) setHash(hash)\n }\n\n return (\n \n \n \n \n \n \n \n Tip: Select an action and describe your proposal for the community. The proposal cannot\n be modified after submission, so please verify all information before submitting. The voting period will\n begin immediately and last for 7 days. To propose a custom action,{' '}\n \n read the docs\n \n .\n \n \n \n \n\n \n \n \n \n {!hasEnoughVote ? (\n \n Don’t have 2.5M votes? Anyone can create an autonomous proposal using{' '}\n fish.vote\n \n ) : null}\n \n handleActionChange(proposalAction)}\n />\n \n \n )\n}\n","import { AutoColumn } from '../Column'\nimport { RowBetween } from '../Row'\nimport styled from 'styled-components/macro'\nimport { TYPE, StyledInternalLink } from '../../theme'\nimport DoubleCurrencyLogo from '../DoubleLogo'\nimport { CurrencyAmount, Token } from '@uniswap/sdk-core'\nimport JSBI from 'jsbi'\nimport { ButtonPrimary } from '../Button'\nimport { StakingInfo } from '../../state/stake/hooks'\nimport { useColor } from '../../hooks/useColor'\nimport { currencyId } from '../../utils/currencyId'\nimport { Break, CardNoise, CardBGImage } from './styled'\nimport { unwrappedToken } from '../../utils/unwrappedToken'\nimport { useTotalSupply } from '../../hooks/useTotalSupply'\nimport { useV2Pair } from '../../hooks/useV2Pairs'\nimport useUSDCPrice from '../../hooks/useUSDCPrice'\nimport { BIG_INT_SECONDS_IN_WEEK } from '../../constants/misc'\nimport { Trans } from '@lingui/macro'\n\nconst StatContainer = styled.div`\n display: flex;\n justify-content: space-between;\n flex-direction: column;\n gap: 12px;\n margin-bottom: 1rem;\n margin-right: 1rem;\n margin-left: 1rem;\n ${({ theme }) => theme.mediaWidth.upToSmall`\n display: none;\n`};\n`\n\nconst Wrapper = styled(AutoColumn)<{ showBackground: boolean; bgColor: any }>`\n border-radius: 12px;\n width: 100%;\n overflow: hidden;\n position: relative;\n opacity: ${({ showBackground }) => (showBackground ? '1' : '1')};\n background: ${({ theme, bgColor, showBackground }) =>\n `radial-gradient(91.85% 100% at 1.84% 0%, ${bgColor} 0%, ${showBackground ? theme.black : theme.bg5} 100%) `};\n color: ${({ theme, showBackground }) => (showBackground ? theme.white : theme.text1)} !important;\n\n ${({ showBackground }) =>\n showBackground &&\n ` box-shadow: 0px 0px 1px rgba(0, 0, 0, 0.01), 0px 4px 8px rgba(0, 0, 0, 0.04), 0px 16px 24px rgba(0, 0, 0, 0.04),\n 0px 24px 32px rgba(0, 0, 0, 0.01);`}\n`\n\nconst TopSection = styled.div`\n display: grid;\n grid-template-columns: 48px 1fr 120px;\n grid-gap: 0px;\n align-items: center;\n padding: 1rem;\n z-index: 1;\n ${({ theme }) => theme.mediaWidth.upToSmall`\n grid-template-columns: 48px 1fr 96px;\n `};\n`\n\nconst BottomSection = styled.div<{ showBackground: boolean }>`\n padding: 12px 16px;\n opacity: ${({ showBackground }) => (showBackground ? '1' : '0.4')};\n border-radius: 0 0 12px 12px;\n display: flex;\n flex-direction: row;\n align-items: baseline;\n justify-content: space-between;\n z-index: 1;\n`\n\nexport default function PoolCard({ stakingInfo }: { stakingInfo: StakingInfo }) {\n const token0 = stakingInfo.tokens[0]\n const token1 = stakingInfo.tokens[1]\n\n const currency0 = unwrappedToken(token0)\n const currency1 = unwrappedToken(token1)\n\n const isStaking = Boolean(stakingInfo.stakedAmount.greaterThan('0'))\n\n // get the color of the token\n const token = currency0.isNative ? token1 : token0\n const WETH = currency0.isNative ? token0 : token1\n const backgroundColor = useColor(token)\n\n const totalSupplyOfStakingToken = useTotalSupply(stakingInfo.stakedAmount.currency)\n const [, stakingTokenPair] = useV2Pair(...stakingInfo.tokens)\n\n // let returnOverMonth: Percent = new Percent('0')\n let valueOfTotalStakedAmountInWETH: CurrencyAmount | undefined\n if (totalSupplyOfStakingToken && stakingTokenPair) {\n // take the total amount of LP tokens staked, multiply by ETH value of all LP tokens, divide by all LP tokens\n valueOfTotalStakedAmountInWETH = CurrencyAmount.fromRawAmount(\n WETH,\n JSBI.divide(\n JSBI.multiply(\n JSBI.multiply(stakingInfo.totalStakedAmount.quotient, stakingTokenPair.reserveOf(WETH).quotient),\n JSBI.BigInt(2) // this is b/c the value of LP shares are ~double the value of the WETH they entitle owner to\n ),\n totalSupplyOfStakingToken.quotient\n )\n )\n }\n\n // get the USD value of staked WETH\n const USDPrice = useUSDCPrice(WETH)\n const valueOfTotalStakedAmountInUSDC =\n valueOfTotalStakedAmountInWETH && USDPrice?.quote(valueOfTotalStakedAmountInWETH)\n\n return (\n \n \n \n\n \n \n \n {currency0.symbol}-{currency1.symbol}\n \n\n \n \n {isStaking ? Manage : Deposit}\n \n \n \n\n \n \n \n Total deposited\n \n \n {valueOfTotalStakedAmountInUSDC ? (\n ${valueOfTotalStakedAmountInUSDC.toFixed(0, { groupSeparator: ',' })}\n ) : (\n {valueOfTotalStakedAmountInWETH?.toSignificant(4, { groupSeparator: ',' }) ?? '-'} ETH\n )}\n \n \n \n \n Pool rate\n \n \n {stakingInfo ? (\n stakingInfo.active ? (\n \n {stakingInfo.totalRewardRate?.multiply(BIG_INT_SECONDS_IN_WEEK)?.toFixed(0, { groupSeparator: ',' })}{' '}\n UNI / week\n \n ) : (\n 0 UNI / week\n )\n ) : (\n '-'\n )}\n \n \n \n\n {isStaking && (\n <>\n \n \n \n \n Your rate\n \n \n\n \n \n ⚡\n \n {stakingInfo ? (\n stakingInfo.active ? (\n \n {stakingInfo.rewardRate\n ?.multiply(BIG_INT_SECONDS_IN_WEEK)\n ?.toSignificant(4, { groupSeparator: ',' })}{' '}\n UNI / week\n \n ) : (\n 0 UNI / week\n )\n ) : (\n '-'\n )}\n \n \n \n )}\n \n )\n}\n","import { useEffect, useMemo, useState } from 'react'\nimport { STAKING_GENESIS, REWARDS_DURATION_DAYS } from '../../state/stake/hooks'\nimport { TYPE } from '../../theme'\n\nconst MINUTE = 60\nconst HOUR = MINUTE * 60\nconst DAY = HOUR * 24\nconst REWARDS_DURATION = DAY * REWARDS_DURATION_DAYS\n\nexport function Countdown({ exactEnd }: { exactEnd?: Date }) {\n // get end/beginning times\n const end = useMemo(\n () => (exactEnd ? Math.floor(exactEnd.getTime() / 1000) : STAKING_GENESIS + REWARDS_DURATION),\n [exactEnd]\n )\n const begin = useMemo(() => end - REWARDS_DURATION, [end])\n\n // get current time\n const [time, setTime] = useState(() => Math.floor(Date.now() / 1000))\n useEffect((): (() => void) | void => {\n // we only need to tick if rewards haven't ended yet\n if (time <= end) {\n const timeout = setTimeout(() => setTime(Math.floor(Date.now() / 1000)), 1000)\n return () => {\n clearTimeout(timeout)\n }\n }\n }, [time, end])\n\n const timeUntilGenesis = begin - time\n const timeUntilEnd = end - time\n\n let timeRemaining: number\n let message: string\n if (timeUntilGenesis >= 0) {\n message = 'Rewards begin in'\n timeRemaining = timeUntilGenesis\n } else {\n const ongoing = timeUntilEnd >= 0\n if (ongoing) {\n message = 'Rewards end in'\n timeRemaining = timeUntilEnd\n } else {\n message = 'Rewards have ended!'\n timeRemaining = Infinity\n }\n }\n\n const days = (timeRemaining - (timeRemaining % DAY)) / DAY\n timeRemaining -= days * DAY\n const hours = (timeRemaining - (timeRemaining % HOUR)) / HOUR\n timeRemaining -= hours * HOUR\n const minutes = (timeRemaining - (timeRemaining % MINUTE)) / MINUTE\n timeRemaining -= minutes * MINUTE\n const seconds = timeRemaining\n\n return (\n \n {message}{' '}\n {Number.isFinite(timeRemaining) && (\n \n {`${days}:${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${seconds\n .toString()\n .padStart(2, '0')}`}\n \n )}\n \n )\n}\n","import JSBI from 'jsbi'\nimport { AutoColumn } from '../../components/Column'\nimport styled from 'styled-components/macro'\nimport { STAKING_REWARDS_INFO, useStakingInfo } from '../../state/stake/hooks'\nimport { TYPE, ExternalLink } from '../../theme'\nimport PoolCard from '../../components/earn/PoolCard'\nimport { RowBetween } from '../../components/Row'\nimport { CardSection, DataCard, CardNoise, CardBGImage } from '../../components/earn/styled'\nimport { Countdown } from './Countdown'\nimport Loader from '../../components/Loader'\nimport { useActiveWeb3React } from '../../hooks/web3'\nimport { BIG_INT_ZERO } from '../../constants/misc'\nimport { OutlineCard } from '../../components/Card'\nimport { Trans } from '@lingui/macro'\n\nconst PageWrapper = styled(AutoColumn)`\n max-width: 640px;\n width: 100%;\n`\n\nconst TopSection = styled(AutoColumn)`\n max-width: 720px;\n width: 100%;\n`\n\nconst PoolSection = styled.div`\n display: grid;\n grid-template-columns: 1fr;\n column-gap: 10px;\n row-gap: 15px;\n width: 100%;\n justify-self: center;\n`\n\nconst DataRow = styled(RowBetween)`\n ${({ theme }) => theme.mediaWidth.upToSmall`\nflex-direction: column;\n`};\n`\n\nexport default function Earn() {\n const { chainId } = useActiveWeb3React()\n\n // staking info for connected account\n const stakingInfos = useStakingInfo()\n\n /**\n * only show staking cards with balance\n * @todo only account for this if rewards are inactive\n */\n const stakingInfosWithBalance = stakingInfos?.filter((s) => JSBI.greaterThan(s.stakedAmount.quotient, BIG_INT_ZERO))\n\n // toggle copy if rewards are inactive\n const stakingRewardsExist = Boolean(typeof chainId === 'number' && (STAKING_REWARDS_INFO[chainId]?.length ?? 0) > 0)\n\n return (\n \n \n \n \n \n \n \n \n \n Uniswap liquidity mining\n \n \n \n \n \n Deposit your Liquidity Provider tokens to receive UNI, the Uniswap protocol governance token.\n \n \n {' '}\n \n \n Read more about UNI\n \n \n \n \n \n \n \n \n\n \n \n \n Participating pools\n \n \n \n\n \n {stakingRewardsExist && stakingInfos?.length === 0 ? (\n \n ) : !stakingRewardsExist ? (\n \n No active pools\n \n ) : stakingInfos?.length !== 0 && stakingInfosWithBalance.length === 0 ? (\n \n No active pools\n \n ) : (\n stakingInfosWithBalance?.map((stakingInfo) => {\n // need to sort by added liquidity here\n return \n })\n )}\n \n \n \n )\n}\n","import JSBI from 'jsbi'\nimport { Percent, CurrencyAmount, Currency, TradeType, Token } from '@uniswap/sdk-core'\nimport { Trade as V2Trade } from '@uniswap/v2-sdk'\nimport { Trade as V3Trade } from '@uniswap/v3-sdk'\nimport { splitSignature } from 'ethers/lib/utils'\nimport { useMemo, useState } from 'react'\nimport { SWAP_ROUTER_ADDRESSES } from '../constants/addresses'\nimport { DAI, UNI, USDC } from '../constants/tokens'\nimport { useSingleCallResult } from '../state/multicall/hooks'\nimport { useActiveWeb3React } from './web3'\nimport { useEIP2612Contract } from './useContract'\nimport useIsArgentWallet from './useIsArgentWallet'\nimport useTransactionDeadline from './useTransactionDeadline'\n\nenum PermitType {\n AMOUNT = 1,\n ALLOWED = 2,\n}\n\n// 20 minutes to submit after signing\nconst PERMIT_VALIDITY_BUFFER = 20 * 60\n\ninterface PermitInfo {\n type: PermitType\n name: string\n // version is optional, and if omitted, will not be included in the domain\n version?: string\n}\n\n// todo: read this information from extensions on token lists or elsewhere (permit registry?)\nconst PERMITTABLE_TOKENS: {\n [chainId: number]: {\n [checksummedTokenAddress: string]: PermitInfo\n }\n} = {\n [1]: {\n [USDC.address]: { type: PermitType.AMOUNT, name: 'USD Coin', version: '2' },\n [DAI.address]: { type: PermitType.ALLOWED, name: 'Dai Stablecoin', version: '1' },\n [UNI[1].address]: { type: PermitType.AMOUNT, name: 'Uniswap' },\n },\n [4]: {\n ['0xc7AD46e0b8a400Bb3C915120d284AafbA8fc4735']: { type: PermitType.ALLOWED, name: 'Dai Stablecoin', version: '1' },\n [UNI[4].address]: { type: PermitType.AMOUNT, name: 'Uniswap' },\n },\n [3]: {\n [UNI[3].address]: { type: PermitType.AMOUNT, name: 'Uniswap' },\n ['0x07865c6E87B9F70255377e024ace6630C1Eaa37F']: { type: PermitType.AMOUNT, name: 'USD Coin', version: '2' },\n },\n [5]: {\n [UNI[5].address]: { type: PermitType.AMOUNT, name: 'Uniswap' },\n },\n [42]: {\n [UNI[42].address]: { type: PermitType.AMOUNT, name: 'Uniswap' },\n },\n}\n\nexport enum UseERC20PermitState {\n // returned for any reason, e.g. it is an argent wallet, or the currency does not support it\n NOT_APPLICABLE,\n LOADING,\n NOT_SIGNED,\n SIGNED,\n}\n\ninterface BaseSignatureData {\n v: number\n r: string\n s: string\n deadline: number\n nonce: number\n owner: string\n spender: string\n chainId: number\n tokenAddress: string\n permitType: PermitType\n}\n\ninterface StandardSignatureData extends BaseSignatureData {\n amount: string\n}\n\ninterface AllowedSignatureData extends BaseSignatureData {\n allowed: true\n}\n\nexport type SignatureData = StandardSignatureData | AllowedSignatureData\n\nconst EIP712_DOMAIN_TYPE = [\n { name: 'name', type: 'string' },\n { name: 'version', type: 'string' },\n { name: 'chainId', type: 'uint256' },\n { name: 'verifyingContract', type: 'address' },\n]\n\nconst EIP712_DOMAIN_TYPE_NO_VERSION = [\n { name: 'name', type: 'string' },\n { name: 'chainId', type: 'uint256' },\n { name: 'verifyingContract', type: 'address' },\n]\n\nconst EIP2612_TYPE = [\n { name: 'owner', type: 'address' },\n { name: 'spender', type: 'address' },\n { name: 'value', type: 'uint256' },\n { name: 'nonce', type: 'uint256' },\n { name: 'deadline', type: 'uint256' },\n]\n\nconst PERMIT_ALLOWED_TYPE = [\n { name: 'holder', type: 'address' },\n { name: 'spender', type: 'address' },\n { name: 'nonce', type: 'uint256' },\n { name: 'expiry', type: 'uint256' },\n { name: 'allowed', type: 'bool' },\n]\n\nfunction useERC20Permit(\n currencyAmount: CurrencyAmount | null | undefined,\n spender: string | null | undefined,\n overridePermitInfo: PermitInfo | undefined | null\n): {\n signatureData: SignatureData | null\n state: UseERC20PermitState\n gatherPermitSignature: null | (() => Promise)\n} {\n const { account, chainId, library } = useActiveWeb3React()\n const transactionDeadline = useTransactionDeadline()\n const tokenAddress = currencyAmount?.currency?.isToken ? currencyAmount.currency.address : undefined\n const eip2612Contract = useEIP2612Contract(tokenAddress)\n const isArgentWallet = useIsArgentWallet()\n const nonceInputs = useMemo(() => [account ?? undefined], [account])\n const tokenNonceState = useSingleCallResult(eip2612Contract, 'nonces', nonceInputs)\n const permitInfo =\n overridePermitInfo ?? (chainId && tokenAddress ? PERMITTABLE_TOKENS[chainId]?.[tokenAddress] : undefined)\n\n const [signatureData, setSignatureData] = useState(null)\n\n return useMemo(() => {\n if (\n isArgentWallet ||\n !currencyAmount ||\n !eip2612Contract ||\n !account ||\n !chainId ||\n !transactionDeadline ||\n !library ||\n !tokenNonceState.valid ||\n !tokenAddress ||\n !spender ||\n !permitInfo\n ) {\n return {\n state: UseERC20PermitState.NOT_APPLICABLE,\n signatureData: null,\n gatherPermitSignature: null,\n }\n }\n\n const nonceNumber = tokenNonceState.result?.[0]?.toNumber()\n if (tokenNonceState.loading || typeof nonceNumber !== 'number') {\n return {\n state: UseERC20PermitState.LOADING,\n signatureData: null,\n gatherPermitSignature: null,\n }\n }\n\n const isSignatureDataValid =\n signatureData &&\n signatureData.owner === account &&\n signatureData.deadline >= transactionDeadline.toNumber() &&\n signatureData.tokenAddress === tokenAddress &&\n signatureData.nonce === nonceNumber &&\n signatureData.spender === spender &&\n ('allowed' in signatureData || JSBI.equal(JSBI.BigInt(signatureData.amount), currencyAmount.quotient))\n\n return {\n state: isSignatureDataValid ? UseERC20PermitState.SIGNED : UseERC20PermitState.NOT_SIGNED,\n signatureData: isSignatureDataValid ? signatureData : null,\n gatherPermitSignature: async function gatherPermitSignature() {\n const allowed = permitInfo.type === PermitType.ALLOWED\n const signatureDeadline = transactionDeadline.toNumber() + PERMIT_VALIDITY_BUFFER\n const value = currencyAmount.quotient.toString()\n\n const message = allowed\n ? {\n holder: account,\n spender,\n allowed,\n nonce: nonceNumber,\n expiry: signatureDeadline,\n }\n : {\n owner: account,\n spender,\n value,\n nonce: nonceNumber,\n deadline: signatureDeadline,\n }\n const domain = permitInfo.version\n ? {\n name: permitInfo.name,\n version: permitInfo.version,\n verifyingContract: tokenAddress,\n chainId,\n }\n : {\n name: permitInfo.name,\n verifyingContract: tokenAddress,\n chainId,\n }\n const data = JSON.stringify({\n types: {\n EIP712Domain: permitInfo.version ? EIP712_DOMAIN_TYPE : EIP712_DOMAIN_TYPE_NO_VERSION,\n Permit: allowed ? PERMIT_ALLOWED_TYPE : EIP2612_TYPE,\n },\n domain,\n primaryType: 'Permit',\n message,\n })\n\n return library\n .send('eth_signTypedData_v4', [account, data])\n .then(splitSignature)\n .then((signature) => {\n setSignatureData({\n v: signature.v,\n r: signature.r,\n s: signature.s,\n deadline: signatureDeadline,\n ...(allowed ? { allowed } : { amount: value }),\n nonce: nonceNumber,\n chainId,\n owner: account,\n spender,\n tokenAddress,\n permitType: permitInfo.type,\n })\n })\n },\n }\n }, [\n currencyAmount,\n eip2612Contract,\n account,\n chainId,\n isArgentWallet,\n transactionDeadline,\n library,\n tokenNonceState.loading,\n tokenNonceState.valid,\n tokenNonceState.result,\n tokenAddress,\n spender,\n permitInfo,\n signatureData,\n ])\n}\n\nconst REMOVE_V2_LIQUIDITY_PERMIT_INFO: PermitInfo = {\n version: '1',\n name: 'Uniswap V2',\n type: PermitType.AMOUNT,\n}\n\nexport function useV2LiquidityTokenPermit(\n liquidityAmount: CurrencyAmount | null | undefined,\n spender: string | null | undefined\n) {\n return useERC20Permit(liquidityAmount, spender, REMOVE_V2_LIQUIDITY_PERMIT_INFO)\n}\n\nexport function useERC20PermitFromTrade(\n trade: V2Trade | V3Trade | undefined,\n allowedSlippage: Percent\n) {\n const { chainId } = useActiveWeb3React()\n const swapRouterAddress = chainId ? SWAP_ROUTER_ADDRESSES[chainId] : undefined\n const amountToApprove = useMemo(\n () => (trade ? trade.maximumAmountIn(allowedSlippage) : undefined),\n [trade, allowedSlippage]\n )\n\n return useERC20Permit(\n amountToApprove,\n // v2 router does not support\n trade instanceof V2Trade ? undefined : trade instanceof V3Trade ? swapRouterAddress : undefined,\n null\n )\n}\n","import { useContext } from 'react'\nimport styled from 'styled-components/macro'\nimport { AutoColumn } from '../Column'\nimport { ThemeContext } from 'styled-components/macro'\nimport { TYPE } from '../../theme'\n\nconst Wrapper = styled(AutoColumn)`\n margin-right: 8px;\n height: 100%;\n`\n\nconst Grouping = styled(AutoColumn)`\n width: fit-content;\n padding: 4px;\n /* background-color: ${({ theme }) => theme.bg2}; */\n border-radius: 16px;\n`\n\nconst Circle = styled.div<{ confirmed?: boolean; disabled?: boolean }>`\n width: 48px;\n height: 48px;\n background-color: ${({ theme, confirmed, disabled }) =>\n disabled ? theme.bg3 : confirmed ? theme.green1 : theme.primary1};\n border-radius: 50%;\n color: ${({ theme, disabled }) => (disabled ? theme.text3 : theme.text1)};\n display: flex;\n align-items: center;\n justify-content: center;\n line-height: 8px;\n font-size: 16px;\n padding: 1rem;\n`\n\nconst CircleRow = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n`\n\ninterface ProgressCirclesProps {\n steps: boolean[]\n disabled?: boolean\n}\n\n/**\n * Based on array of steps, create a step counter of circles.\n * A circle can be enabled, disabled, or confirmed. States are derived\n * from previous step.\n *\n * An extra circle is added to represent the ability to swap, add, or remove.\n * This step will never be marked as complete (because no 'txn done' state in body ui).\n *\n * @param steps array of booleans where true means step is complete\n */\nexport default function ProgressCircles({ steps, disabled = false, ...rest }: ProgressCirclesProps) {\n const theme = useContext(ThemeContext)\n\n return (\n \n \n {steps.map((step, i) => {\n return (\n \n \n {step ? '✓' : i + 1 + '.'}\n \n |\n \n )\n })}\n {steps.length + 1 + '.'}\n \n \n )\n}\n","import { useState, useCallback } from 'react'\nimport { useV2LiquidityTokenPermit } from '../../hooks/useERC20Permit'\nimport useTransactionDeadline from '../../hooks/useTransactionDeadline'\nimport { formatCurrencyAmount } from '../../utils/formatCurrencyAmount'\nimport Modal from '../Modal'\nimport { AutoColumn } from '../Column'\nimport styled from 'styled-components/macro'\nimport { RowBetween } from '../Row'\nimport { TYPE, CloseIcon } from '../../theme'\nimport { ButtonConfirmed, ButtonError } from '../Button'\nimport ProgressCircles from '../ProgressSteps'\nimport CurrencyInputPanel from '../CurrencyInputPanel'\nimport { Pair } from '@uniswap/v2-sdk'\nimport { Token, CurrencyAmount } from '@uniswap/sdk-core'\nimport { useActiveWeb3React } from '../../hooks/web3'\nimport { maxAmountSpend } from '../../utils/maxAmountSpend'\nimport { usePairContract, useStakingContract, useV2RouterContract } from '../../hooks/useContract'\nimport { useApproveCallback, ApprovalState } from '../../hooks/useApproveCallback'\nimport { StakingInfo, useDerivedStakeInfo } from '../../state/stake/hooks'\nimport { TransactionResponse } from '@ethersproject/providers'\nimport { useTransactionAdder } from '../../state/transactions/hooks'\nimport { LoadingView, SubmittedView } from '../ModalViews'\nimport { t, Trans } from '@lingui/macro'\n\nconst HypotheticalRewardRate = styled.div<{ dim: boolean }>`\n display: flex;\n justify-content: space-between;\n padding-right: 20px;\n padding-left: 20px;\n\n opacity: ${({ dim }) => (dim ? 0.5 : 1)};\n`\n\nconst ContentWrapper = styled(AutoColumn)`\n width: 100%;\n padding: 1rem;\n`\n\ninterface StakingModalProps {\n isOpen: boolean\n onDismiss: () => void\n stakingInfo: StakingInfo\n userLiquidityUnstaked: CurrencyAmount | undefined\n}\n\nexport default function StakingModal({ isOpen, onDismiss, stakingInfo, userLiquidityUnstaked }: StakingModalProps) {\n const { library } = useActiveWeb3React()\n\n // track and parse user input\n const [typedValue, setTypedValue] = useState('')\n const { parsedAmount, error } = useDerivedStakeInfo(\n typedValue,\n stakingInfo.stakedAmount.currency,\n userLiquidityUnstaked\n )\n const parsedAmountWrapped = parsedAmount?.wrapped\n\n let hypotheticalRewardRate: CurrencyAmount = CurrencyAmount.fromRawAmount(stakingInfo.rewardRate.currency, '0')\n if (parsedAmountWrapped?.greaterThan('0')) {\n hypotheticalRewardRate = stakingInfo.getHypotheticalRewardRate(\n stakingInfo.stakedAmount.add(parsedAmountWrapped),\n stakingInfo.totalStakedAmount.add(parsedAmountWrapped),\n stakingInfo.totalRewardRate\n )\n }\n\n // state for pending and submitted txn views\n const addTransaction = useTransactionAdder()\n const [attempting, setAttempting] = useState(false)\n const [hash, setHash] = useState()\n const wrappedOnDismiss = useCallback(() => {\n setHash(undefined)\n setAttempting(false)\n onDismiss()\n }, [onDismiss])\n\n // pair contract for this token to be staked\n const dummyPair = new Pair(\n CurrencyAmount.fromRawAmount(stakingInfo.tokens[0], '0'),\n CurrencyAmount.fromRawAmount(stakingInfo.tokens[1], '0')\n )\n const pairContract = usePairContract(dummyPair.liquidityToken.address)\n\n // approval data for stake\n const deadline = useTransactionDeadline()\n const router = useV2RouterContract()\n const { signatureData, gatherPermitSignature } = useV2LiquidityTokenPermit(parsedAmountWrapped, router?.address)\n const [approval, approveCallback] = useApproveCallback(parsedAmount, stakingInfo.stakingRewardAddress)\n\n const stakingContract = useStakingContract(stakingInfo.stakingRewardAddress)\n async function onStake() {\n setAttempting(true)\n if (stakingContract && parsedAmount && deadline) {\n if (approval === ApprovalState.APPROVED) {\n await stakingContract.stake(`0x${parsedAmount.quotient.toString(16)}`, { gasLimit: 350000 })\n } else if (signatureData) {\n stakingContract\n .stakeWithPermit(\n `0x${parsedAmount.quotient.toString(16)}`,\n signatureData.deadline,\n signatureData.v,\n signatureData.r,\n signatureData.s,\n { gasLimit: 350000 }\n )\n .then((response: TransactionResponse) => {\n addTransaction(response, {\n summary: t`Deposit liquidity`,\n })\n setHash(response.hash)\n })\n .catch((error: any) => {\n setAttempting(false)\n console.log(error)\n })\n } else {\n setAttempting(false)\n throw new Error('Attempting to stake without approval or a signature. Please contact support.')\n }\n }\n }\n\n // wrapped onUserInput to clear signatures\n const onUserInput = useCallback((typedValue: string) => {\n setTypedValue(typedValue)\n }, [])\n\n // used for max input button\n const maxAmountInput = maxAmountSpend(userLiquidityUnstaked)\n const atMaxAmount = Boolean(maxAmountInput && parsedAmount?.equalTo(maxAmountInput))\n const handleMax = useCallback(() => {\n maxAmountInput && onUserInput(maxAmountInput.toExact())\n }, [maxAmountInput, onUserInput])\n\n async function onAttemptToApprove() {\n if (!pairContract || !library || !deadline) throw new Error('missing dependencies')\n if (!parsedAmount) throw new Error('missing liquidity amount')\n\n if (gatherPermitSignature) {\n try {\n await gatherPermitSignature()\n } catch (error) {\n // try to approve if gatherPermitSignature failed for any reason other than the user rejecting it\n if (error?.code !== 4001) {\n await approveCallback()\n }\n }\n } else {\n await approveCallback()\n }\n }\n\n return (\n \n {!attempting && !hash && (\n \n \n \n Deposit\n \n \n \n Available to deposit: {formatCurrencyAmount(amount, 4)}}\n id=\"stake-liquidity-token\"\n />\n\n \n
\n \n Weekly Rewards\n \n
\n\n \n \n {hypotheticalRewardRate\n .multiply((60 * 60 * 24 * 7).toString())\n .toSignificant(4, { groupSeparator: ',' })}{' '}\n UNI / week\n \n \n
\n\n \n \n Approve\n \n \n {error ?? Deposit}\n \n \n \n
\n )}\n {attempting && !hash && (\n \n \n \n Depositing Liquidity\n \n \n {parsedAmount?.toSignificant(4)} UNI-V2\n \n \n \n )}\n {attempting && hash && (\n \n \n \n Transaction Submitted\n \n \n Deposited {parsedAmount?.toSignificant(4)} UNI-V2\n \n \n \n )}\n
\n )\n}\n","import JSBI from 'jsbi'\nimport { Currency, CurrencyAmount, Fraction } from '@uniswap/sdk-core'\n\nconst CURRENCY_AMOUNT_MIN = new Fraction(JSBI.BigInt(1), JSBI.BigInt(1000000))\n\nexport default function FormattedCurrencyAmount({\n currencyAmount,\n significantDigits = 4,\n}: {\n currencyAmount: CurrencyAmount\n significantDigits?: number\n}) {\n return (\n <>\n {currencyAmount.equalTo(JSBI.BigInt(0))\n ? '0'\n : currencyAmount.greaterThan(CURRENCY_AMOUNT_MIN)\n ? currencyAmount.toSignificant(significantDigits)\n : `<${CURRENCY_AMOUNT_MIN.toSignificant(1)}`}\n \n )\n}\n","import { useState } from 'react'\nimport Modal from '../Modal'\nimport { AutoColumn } from '../Column'\nimport styled from 'styled-components/macro'\nimport { RowBetween } from '../Row'\nimport { TYPE, CloseIcon } from '../../theme'\nimport { ButtonError } from '../Button'\nimport { StakingInfo } from '../../state/stake/hooks'\nimport { useStakingContract } from '../../hooks/useContract'\nimport { SubmittedView, LoadingView } from '../ModalViews'\nimport { TransactionResponse } from '@ethersproject/providers'\nimport { useTransactionAdder } from '../../state/transactions/hooks'\nimport FormattedCurrencyAmount from '../FormattedCurrencyAmount'\nimport { useActiveWeb3React } from '../../hooks/web3'\nimport { t, Trans } from '@lingui/macro'\n\nconst ContentWrapper = styled(AutoColumn)`\n width: 100%;\n padding: 1rem;\n`\n\ninterface StakingModalProps {\n isOpen: boolean\n onDismiss: () => void\n stakingInfo: StakingInfo\n}\n\nexport default function UnstakingModal({ isOpen, onDismiss, stakingInfo }: StakingModalProps) {\n const { account } = useActiveWeb3React()\n\n // monitor call to help UI loading state\n const addTransaction = useTransactionAdder()\n const [hash, setHash] = useState()\n const [attempting, setAttempting] = useState(false)\n\n function wrappedOndismiss() {\n setHash(undefined)\n setAttempting(false)\n onDismiss()\n }\n\n const stakingContract = useStakingContract(stakingInfo.stakingRewardAddress)\n\n async function onWithdraw() {\n if (stakingContract && stakingInfo?.stakedAmount) {\n setAttempting(true)\n await stakingContract\n .exit({ gasLimit: 300000 })\n .then((response: TransactionResponse) => {\n addTransaction(response, {\n summary: t`Withdraw deposited liquidity`,\n })\n setHash(response.hash)\n })\n .catch((error: any) => {\n setAttempting(false)\n console.log(error)\n })\n }\n }\n\n let error: string | undefined\n if (!account) {\n error = t`Connect a wallet`\n }\n if (!stakingInfo?.stakedAmount) {\n error = error ?? t`Enter an amount`\n }\n\n return (\n \n {!attempting && !hash && (\n \n \n \n Withdraw\n \n \n \n {stakingInfo?.stakedAmount && (\n \n \n {}\n \n \n Deposited liquidity:\n \n \n )}\n {stakingInfo?.earnedAmount && (\n \n \n {}\n \n \n Unclaimed UNI\n \n \n )}\n \n When you withdraw, your UNI is claimed and your liquidity is removed from the mining pool.\n \n \n {error ?? Withdraw & Claim}\n \n \n )}\n {attempting && !hash && (\n \n \n \n Withdrawing {stakingInfo?.stakedAmount?.toSignificant(4)} UNI-V2\n \n \n Claiming {stakingInfo?.earnedAmount?.toSignificant(4)} UNI\n \n \n \n )}\n {hash && (\n \n \n \n Transaction Submitted\n \n \n Withdrew UNI-V2!\n \n \n Claimed UNI!\n \n \n \n )}\n \n )\n}\n","import { useState } from 'react'\nimport Modal from '../Modal'\nimport { AutoColumn } from '../Column'\nimport styled from 'styled-components/macro'\nimport { RowBetween } from '../Row'\nimport { TYPE, CloseIcon } from '../../theme'\nimport { ButtonError } from '../Button'\nimport { StakingInfo } from '../../state/stake/hooks'\nimport { useStakingContract } from '../../hooks/useContract'\nimport { SubmittedView, LoadingView } from '../ModalViews'\nimport { TransactionResponse } from '@ethersproject/providers'\nimport { useTransactionAdder } from '../../state/transactions/hooks'\nimport { useActiveWeb3React } from '../../hooks/web3'\nimport { t, Trans } from '@lingui/macro'\n\nconst ContentWrapper = styled(AutoColumn)`\n width: 100%;\n padding: 1rem;\n`\n\ninterface StakingModalProps {\n isOpen: boolean\n onDismiss: () => void\n stakingInfo: StakingInfo\n}\n\nexport default function ClaimRewardModal({ isOpen, onDismiss, stakingInfo }: StakingModalProps) {\n const { account } = useActiveWeb3React()\n\n // monitor call to help UI loading state\n const addTransaction = useTransactionAdder()\n const [hash, setHash] = useState()\n const [attempting, setAttempting] = useState(false)\n\n function wrappedOnDismiss() {\n setHash(undefined)\n setAttempting(false)\n onDismiss()\n }\n\n const stakingContract = useStakingContract(stakingInfo.stakingRewardAddress)\n\n async function onClaimReward() {\n if (stakingContract && stakingInfo?.stakedAmount) {\n setAttempting(true)\n await stakingContract\n .getReward({ gasLimit: 350000 })\n .then((response: TransactionResponse) => {\n addTransaction(response, { summary: t`Claim accumulated UNI rewards` })\n setHash(response.hash)\n })\n .catch((error: any) => {\n setAttempting(false)\n console.log(error)\n })\n }\n }\n\n let error: string | undefined\n if (!account) {\n error = t`Connect wallet`\n }\n if (!stakingInfo?.stakedAmount) {\n error = error ?? t`Enter an amount`\n }\n\n return (\n \n {!attempting && !hash && (\n \n \n \n Claim\n \n \n \n {stakingInfo?.earnedAmount && (\n \n \n {stakingInfo?.earnedAmount?.toSignificant(6)}\n \n \n Unclaimed UNI\n \n \n )}\n \n When you claim without withdrawing your liquidity remains in the mining pool.\n \n \n {error ?? Claim}\n \n \n )}\n {attempting && !hash && (\n \n \n \n Claiming {stakingInfo?.earnedAmount?.toSignificant(6)} UNI\n \n \n \n )}\n {hash && (\n \n \n \n Transaction Submitted\n \n \n Claimed UNI!\n \n \n \n )}\n \n )\n}\n","import { useCallback, useState } from 'react'\nimport { AutoColumn } from '../../components/Column'\nimport styled from 'styled-components/macro'\nimport { Link } from 'react-router-dom'\nimport JSBI from 'jsbi'\nimport { Token, CurrencyAmount } from '@uniswap/sdk-core'\nimport { RouteComponentProps } from 'react-router-dom'\nimport DoubleCurrencyLogo from '../../components/DoubleLogo'\nimport { useCurrency } from '../../hooks/Tokens'\nimport { useWalletModalToggle } from '../../state/application/hooks'\nimport { TYPE } from '../../theme'\n\nimport { RowBetween } from '../../components/Row'\nimport { CardSection, DataCard, CardNoise, CardBGImage } from '../../components/earn/styled'\nimport { ButtonPrimary, ButtonEmpty } from '../../components/Button'\nimport StakingModal from '../../components/earn/StakingModal'\nimport { useStakingInfo } from '../../state/stake/hooks'\nimport UnstakingModal from '../../components/earn/UnstakingModal'\nimport ClaimRewardModal from '../../components/earn/ClaimRewardModal'\nimport { useTokenBalance } from '../../state/wallet/hooks'\nimport { useActiveWeb3React } from '../../hooks/web3'\nimport { useColor } from '../../hooks/useColor'\nimport { CountUp } from 'use-count-up'\n\nimport { currencyId } from '../../utils/currencyId'\nimport { useTotalSupply } from '../../hooks/useTotalSupply'\nimport { useV2Pair } from '../../hooks/useV2Pairs'\nimport usePrevious from '../../hooks/usePrevious'\nimport useUSDCPrice from '../../hooks/useUSDCPrice'\nimport { BIG_INT_ZERO, BIG_INT_SECONDS_IN_WEEK } from '../../constants/misc'\nimport { Trans } from '@lingui/macro'\n\nconst PageWrapper = styled(AutoColumn)`\n max-width: 640px;\n width: 100%;\n`\n\nconst PositionInfo = styled(AutoColumn)<{ dim: any }>`\n position: relative;\n max-width: 640px;\n width: 100%;\n opacity: ${({ dim }) => (dim ? 0.6 : 1)};\n`\n\nconst BottomSection = styled(AutoColumn)`\n border-radius: 12px;\n width: 100%;\n position: relative;\n`\n\nconst StyledDataCard = styled(DataCard)<{ bgColor?: any; showBackground?: any }>`\n background: radial-gradient(76.02% 75.41% at 1.84% 0%, #1e1a31 0%, #3d51a5 100%);\n z-index: 2;\n box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.1);\n background: ${({ theme, bgColor, showBackground }) =>\n `radial-gradient(91.85% 100% at 1.84% 0%, ${bgColor} 0%, ${showBackground ? theme.black : theme.bg5} 100%) `};\n`\n\nconst StyledBottomCard = styled(DataCard)<{ dim: any }>`\n background: ${({ theme }) => theme.bg3};\n opacity: ${({ dim }) => (dim ? 0.4 : 1)};\n margin-top: -40px;\n padding: 0 1.25rem 1rem 1.25rem;\n padding-top: 32px;\n z-index: 1;\n`\n\nconst PoolData = styled(DataCard)`\n background: none;\n border: 1px solid ${({ theme }) => theme.bg4};\n padding: 1rem;\n z-index: 1;\n`\n\nconst VoteCard = styled(DataCard)`\n background: radial-gradient(76.02% 75.41% at 1.84% 0%, #27ae60 0%, #000000 100%);\n overflow: hidden;\n`\n\nconst DataRow = styled(RowBetween)`\n justify-content: center;\n gap: 12px;\n\n ${({ theme }) => theme.mediaWidth.upToSmall`\n flex-direction: column;\n gap: 12px;\n `};\n`\n\nexport default function Manage({\n match: {\n params: { currencyIdA, currencyIdB },\n },\n}: RouteComponentProps<{ currencyIdA: string; currencyIdB: string }>) {\n const { account } = useActiveWeb3React()\n\n // get currencies and pair\n const [currencyA, currencyB] = [useCurrency(currencyIdA), useCurrency(currencyIdB)]\n const tokenA = (currencyA ?? undefined)?.wrapped\n const tokenB = (currencyB ?? undefined)?.wrapped\n\n const [, stakingTokenPair] = useV2Pair(tokenA, tokenB)\n const stakingInfo = useStakingInfo(stakingTokenPair)?.[0]\n\n // detect existing unstaked LP position to show add button if none found\n const userLiquidityUnstaked = useTokenBalance(account ?? undefined, stakingInfo?.stakedAmount?.currency)\n const showAddLiquidityButton = Boolean(stakingInfo?.stakedAmount?.equalTo('0') && userLiquidityUnstaked?.equalTo('0'))\n\n // toggle for staking modal and unstaking modal\n const [showStakingModal, setShowStakingModal] = useState(false)\n const [showUnstakingModal, setShowUnstakingModal] = useState(false)\n const [showClaimRewardModal, setShowClaimRewardModal] = useState(false)\n\n // fade cards if nothing staked or nothing earned yet\n const disableTop = !stakingInfo?.stakedAmount || stakingInfo.stakedAmount.equalTo(JSBI.BigInt(0))\n\n const token = currencyA?.isNative ? tokenB : tokenA\n const WETH = currencyA?.isNative ? tokenA : tokenB\n const backgroundColor = useColor(token)\n\n // get WETH value of staked LP tokens\n const totalSupplyOfStakingToken = useTotalSupply(stakingInfo?.stakedAmount?.currency)\n let valueOfTotalStakedAmountInWETH: CurrencyAmount | undefined\n if (totalSupplyOfStakingToken && stakingTokenPair && stakingInfo && WETH) {\n // take the total amount of LP tokens staked, multiply by ETH value of all LP tokens, divide by all LP tokens\n valueOfTotalStakedAmountInWETH = CurrencyAmount.fromRawAmount(\n WETH,\n JSBI.divide(\n JSBI.multiply(\n JSBI.multiply(stakingInfo.totalStakedAmount.quotient, stakingTokenPair.reserveOf(WETH).quotient),\n JSBI.BigInt(2) // this is b/c the value of LP shares are ~double the value of the WETH they entitle owner to\n ),\n totalSupplyOfStakingToken.quotient\n )\n )\n }\n\n const countUpAmount = stakingInfo?.earnedAmount?.toFixed(6) ?? '0'\n const countUpAmountPrevious = usePrevious(countUpAmount) ?? '0'\n\n // get the USD value of staked WETH\n const USDPrice = useUSDCPrice(WETH)\n const valueOfTotalStakedAmountInUSDC =\n valueOfTotalStakedAmountInWETH && USDPrice?.quote(valueOfTotalStakedAmountInWETH)\n\n const toggleWalletModal = useWalletModalToggle()\n\n const handleDepositClick = useCallback(() => {\n if (account) {\n setShowStakingModal(true)\n } else {\n toggleWalletModal()\n }\n }, [account, toggleWalletModal])\n\n return (\n \n \n \n \n {currencyA?.symbol}-{currencyB?.symbol} Liquidity Mining\n \n \n \n \n\n \n \n \n \n Total deposits\n \n \n {valueOfTotalStakedAmountInUSDC\n ? `$${valueOfTotalStakedAmountInUSDC.toFixed(0, { groupSeparator: ',' })}`\n : `${valueOfTotalStakedAmountInWETH?.toSignificant(4, { groupSeparator: ',' }) ?? '-'} ETH`}\n \n \n \n \n \n \n Pool Rate\n \n \n {stakingInfo?.active ? (\n \n {stakingInfo.totalRewardRate?.multiply(BIG_INT_SECONDS_IN_WEEK)?.toFixed(0, { groupSeparator: ',' })}{' '}\n UNI / week\n \n ) : (\n 0 UNI / week\n )}\n \n \n \n \n\n {showAddLiquidityButton && (\n \n \n \n \n \n \n \n Step 1. Get UNI-V2 Liquidity tokens\n \n \n \n \n \n UNI-V2 LP tokens are required. Once you've added liquidity to the {currencyA?.symbol}-\n {currencyB?.symbol} pool you can stake your liquidity tokens on this page.\n \n \n \n \n \n Add {currencyA?.symbol}-{currencyB?.symbol} liquidity\n \n \n \n \n \n \n \n )}\n\n {stakingInfo && (\n <>\n setShowStakingModal(false)}\n stakingInfo={stakingInfo}\n userLiquidityUnstaked={userLiquidityUnstaked}\n />\n setShowUnstakingModal(false)}\n stakingInfo={stakingInfo}\n />\n setShowClaimRewardModal(false)}\n stakingInfo={stakingInfo}\n />\n \n )}\n\n \n \n \n \n \n \n \n \n \n Your liquidity deposits\n \n \n \n \n {stakingInfo?.stakedAmount?.toSignificant(6) ?? '-'}\n \n \n \n UNI-V2 {currencyA?.symbol}-{currencyB?.symbol}\n \n \n \n \n \n \n \n \n \n \n \n
\n \n Your unclaimed UNI\n \n
\n {stakingInfo?.earnedAmount && JSBI.notEqual(BIG_INT_ZERO, stakingInfo?.earnedAmount?.quotient) && (\n setShowClaimRewardModal(true)}\n >\n Claim\n \n )}\n
\n \n \n \n \n \n \n ⚡\n \n\n {stakingInfo?.active ? (\n \n {stakingInfo.rewardRate?.multiply(BIG_INT_SECONDS_IN_WEEK)?.toFixed(0, { groupSeparator: ',' })}{' '}\n UNI / week\n \n ) : (\n 0 UNI / week\n )}\n \n \n
\n
\n
\n \n \n ⭐️\n \n When you withdraw, the contract will automagically claim UNI on your behalf!\n \n\n {!showAddLiquidityButton && (\n \n {stakingInfo && stakingInfo.active && (\n \n {stakingInfo?.stakedAmount?.greaterThan(JSBI.BigInt(0)) ? (\n Deposit\n ) : (\n Deposit UNI-V2 LP Tokens\n )}\n \n )}\n\n {stakingInfo?.stakedAmount?.greaterThan(JSBI.BigInt(0)) && (\n <>\n setShowUnstakingModal(true)}\n >\n Withdraw\n \n \n )}\n \n )}\n {!userLiquidityUnstaked ? null : userLiquidityUnstaked.equalTo('0') ? null : !stakingInfo?.active ? null : (\n \n {userLiquidityUnstaked.toSignificant(6)} UNI-V2 LP tokens available\n \n )}\n
\n
\n )\n}\n","import JSBI from 'jsbi'\nimport { useState } from 'react'\nimport { Percent, CurrencyAmount, Token } from '@uniswap/sdk-core'\nimport { Pair } from '@uniswap/v2-sdk'\nimport { ChevronDown, ChevronUp } from 'react-feather'\nimport { Link } from 'react-router-dom'\nimport { Text } from 'rebass'\nimport styled from 'styled-components/macro'\nimport { useTotalSupply } from '../../hooks/useTotalSupply'\nimport { Trans } from '@lingui/macro'\n\nimport { useActiveWeb3React } from '../../hooks/web3'\nimport { useTokenBalance } from '../../state/wallet/hooks'\nimport { currencyId } from '../../utils/currencyId'\nimport { unwrappedToken } from '../../utils/unwrappedToken'\nimport { ButtonPrimary, ButtonSecondary, ButtonEmpty } from '../Button'\nimport { transparentize } from 'polished'\nimport { CardNoise } from '../earn/styled'\n\nimport { useColor } from '../../hooks/useColor'\n\nimport { LightCard } from '../Card'\nimport { AutoColumn } from '../Column'\nimport CurrencyLogo from '../CurrencyLogo'\nimport DoubleCurrencyLogo from '../DoubleLogo'\nimport { RowBetween, RowFixed, AutoRow } from '../Row'\nimport { Dots } from '../swap/styleds'\nimport { BIG_INT_ZERO } from '../../constants/misc'\nimport { FixedHeightRow } from '.'\n\nconst StyledPositionCard = styled(LightCard)<{ bgColor: any }>`\n border: none;\n background: ${({ theme, bgColor }) =>\n `radial-gradient(91.85% 100% at 1.84% 0%, ${transparentize(0.8, bgColor)} 0%, ${theme.bg3} 100%) `};\n position: relative;\n overflow: hidden;\n`\n\ninterface PositionCardProps {\n pair: Pair\n showUnwrapped?: boolean\n border?: string\n stakedBalance?: CurrencyAmount // optional balance to indicate that liquidity is deposited in mining pool\n}\n\nexport default function V2PositionCard({ pair, border, stakedBalance }: PositionCardProps) {\n const { account } = useActiveWeb3React()\n\n const currency0 = unwrappedToken(pair.token0)\n const currency1 = unwrappedToken(pair.token1)\n\n const [showMore, setShowMore] = useState(false)\n\n const userDefaultPoolBalance = useTokenBalance(account ?? undefined, pair.liquidityToken)\n const totalPoolTokens = useTotalSupply(pair.liquidityToken)\n\n // if staked balance balance provided, add to standard liquidity amount\n const userPoolBalance = stakedBalance ? userDefaultPoolBalance?.add(stakedBalance) : userDefaultPoolBalance\n\n const poolTokenPercentage =\n !!userPoolBalance &&\n !!totalPoolTokens &&\n JSBI.greaterThanOrEqual(totalPoolTokens.quotient, userPoolBalance.quotient)\n ? new Percent(userPoolBalance.quotient, totalPoolTokens.quotient)\n : undefined\n\n const [token0Deposited, token1Deposited] =\n !!pair &&\n !!totalPoolTokens &&\n !!userPoolBalance &&\n // this condition is a short-circuit in the case where useTokenBalance updates sooner than useTotalSupply\n JSBI.greaterThanOrEqual(totalPoolTokens.quotient, userPoolBalance.quotient)\n ? [\n pair.getLiquidityValue(pair.token0, totalPoolTokens, userPoolBalance, false),\n pair.getLiquidityValue(pair.token1, totalPoolTokens, userPoolBalance, false),\n ]\n : [undefined, undefined]\n\n const backgroundColor = useColor(pair?.token0)\n\n return (\n \n \n \n \n \n \n \n {!currency0 || !currency1 ? (\n \n Loading\n \n ) : (\n `${currency0.symbol}/${currency1.symbol}`\n )}\n \n \n \n setShowMore(!showMore)}\n >\n {showMore ? (\n <>\n Manage\n \n \n ) : (\n <>\n Manage\n \n \n )}\n \n \n \n\n {showMore && (\n \n \n \n Your total pool tokens:\n \n \n {userPoolBalance ? userPoolBalance.toSignificant(4) : '-'}\n \n \n {stakedBalance && (\n \n \n Pool tokens in rewards pool:\n \n \n {stakedBalance.toSignificant(4)}\n \n \n )}\n \n \n \n Pooled {currency0.symbol}:\n \n \n {token0Deposited ? (\n \n \n {token0Deposited?.toSignificant(6)}\n \n \n \n ) : (\n '-'\n )}\n \n\n \n \n \n Pooled {currency1.symbol}:\n \n \n {token1Deposited ? (\n \n \n {token1Deposited?.toSignificant(6)}\n \n \n \n ) : (\n '-'\n )}\n \n\n \n \n Your pool share:\n \n \n {poolTokenPercentage\n ? (poolTokenPercentage.toFixed(2) === '0.00' ? '<0.01' : poolTokenPercentage.toFixed(2)) + '%'\n : '-'}\n \n \n\n {userDefaultPoolBalance && JSBI.greaterThan(userDefaultPoolBalance.quotient, BIG_INT_ZERO) && (\n \n \n Migrate\n \n \n Remove\n \n \n )}\n \n )}\n \n \n )\n}\n","import { Token } from '@uniswap/sdk-core'\nimport { Link } from 'react-router-dom'\nimport { Text } from 'rebass'\nimport styled from 'styled-components/macro'\nimport { Trans } from '@lingui/macro'\n\nimport { unwrappedToken } from '../../utils/unwrappedToken'\nimport { ButtonEmpty } from '../Button'\nimport { transparentize } from 'polished'\nimport { CardNoise } from '../earn/styled'\n\nimport { useColor } from '../../hooks/useColor'\n\nimport { LightCard } from '../Card'\nimport { AutoColumn } from '../Column'\nimport DoubleCurrencyLogo from '../DoubleLogo'\nimport { RowFixed, AutoRow } from '../Row'\nimport { Dots } from '../swap/styleds'\nimport { FixedHeightRow } from '.'\nimport Badge, { BadgeVariant } from 'components/Badge'\n\nconst StyledPositionCard = styled(LightCard)<{ bgColor: any }>`\n border: none;\n background: ${({ theme, bgColor }) =>\n `radial-gradient(91.85% 100% at 1.84% 0%, ${transparentize(0.8, bgColor)} 0%, ${theme.bg3} 100%) `};\n position: relative;\n overflow: hidden;\n`\n\ninterface PositionCardProps {\n tokenA: Token\n tokenB: Token\n liquidityToken: Token\n border?: string\n}\n\nexport default function SushiPositionCard({ tokenA, tokenB, liquidityToken, border }: PositionCardProps) {\n const currency0 = unwrappedToken(tokenA)\n const currency1 = unwrappedToken(tokenB)\n\n const backgroundColor = useColor(tokenA)\n\n return (\n \n \n \n \n \n \n \n {!currency0 || !currency1 ? (\n \n Loading\n \n ) : (\n `${currency0.symbol}/${currency1.symbol}`\n )}\n \n\n Sushi\n \n \n \n Migrate\n \n \n \n \n \n )\n}\n","import { ReactNode, useContext, useMemo } from 'react'\nimport { Pair } from '@uniswap/v2-sdk'\nimport { Token } from '@uniswap/sdk-core'\nimport { ThemeContext } from 'styled-components/macro'\nimport { AutoColumn } from '../../components/Column'\nimport { AutoRow } from '../../components/Row'\nimport { Text } from 'rebass'\nimport { V2_FACTORY_ADDRESSES } from '../../constants/addresses'\nimport { useActiveWeb3React } from '../../hooks/web3'\nimport { useTokenBalancesWithLoadingIndicator } from '../../state/wallet/hooks'\nimport { BackArrow, StyledInternalLink, TYPE } from '../../theme'\nimport { LightCard } from '../../components/Card'\nimport { BodyWrapper } from '../AppBody'\nimport QuestionHelper from '../../components/QuestionHelper'\nimport { Dots } from '../../components/swap/styleds'\nimport { toV2LiquidityToken, useTrackedTokenPairs } from '../../state/user/hooks'\nimport MigrateV2PositionCard from 'components/PositionCard/V2'\nimport MigrateSushiPositionCard from 'components/PositionCard/Sushi'\nimport { SwitchLocaleLink } from 'components/SwitchLocaleLink'\nimport { PairState, useV2Pairs } from 'hooks/useV2Pairs'\nimport { getCreate2Address } from '@ethersproject/address'\nimport { pack, keccak256 } from '@ethersproject/solidity'\nimport { Trans } from '@lingui/macro'\n\nfunction EmptyState({ message }: { message: ReactNode }) {\n return (\n \n {message}\n \n )\n}\n\n// quick hack because sushi init code hash is different\nconst computeSushiPairAddress = ({ tokenA, tokenB }: { tokenA: Token; tokenB: Token }): string => {\n const [token0, token1] = tokenA.sortsBefore(tokenB) ? [tokenA, tokenB] : [tokenB, tokenA] // does safety checks\n return getCreate2Address(\n '0xC0AEe478e3658e2610c5F7A4A2E1777cE9e4f2Ac',\n keccak256(['bytes'], [pack(['address', 'address'], [token0.address, token1.address])]),\n '0xe18a34eb0e04b04f7a0ac29a6e80748dca96319b42c54d679cb821dca90c6303'\n )\n}\n\n/**\n * Given two tokens return the sushiswap liquidity token that represents its liquidity shares\n * @param tokenA one of the two tokens\n * @param tokenB the other token\n */\nfunction toSushiLiquidityToken([tokenA, tokenB]: [Token, Token]): Token {\n return new Token(tokenA.chainId, computeSushiPairAddress({ tokenA, tokenB }), 18, 'SLP', 'SushiSwap LP Token')\n}\n\nexport default function MigrateV2() {\n const theme = useContext(ThemeContext)\n const { account, chainId } = useActiveWeb3React()\n\n const v2FactoryAddress = chainId ? V2_FACTORY_ADDRESSES[chainId] : undefined\n\n // fetch the user's balances of all tracked V2 LP tokens\n const trackedTokenPairs = useTrackedTokenPairs()\n\n // calculate v2 + sushi pair contract addresses for all token pairs\n const tokenPairsWithLiquidityTokens = useMemo(\n () =>\n trackedTokenPairs.map((tokens) => {\n // sushi liquidity token or null\n const sushiLiquidityToken = chainId === 1 ? toSushiLiquidityToken(tokens) : null\n return {\n v2liquidityToken: v2FactoryAddress ? toV2LiquidityToken(tokens) : undefined,\n sushiLiquidityToken,\n tokens,\n }\n }),\n [trackedTokenPairs, chainId, v2FactoryAddress]\n )\n\n // get pair liquidity token addresses for balance-fetching purposes\n const allLiquidityTokens = useMemo(() => {\n const v2 = tokenPairsWithLiquidityTokens.map(({ v2liquidityToken }) => v2liquidityToken)\n const sushi = tokenPairsWithLiquidityTokens\n .map(({ sushiLiquidityToken }) => sushiLiquidityToken)\n .filter((token): token is Token => !!token)\n\n return [...v2, ...sushi]\n }, [tokenPairsWithLiquidityTokens])\n\n // fetch pair balances\n const [pairBalances, fetchingPairBalances] = useTokenBalancesWithLoadingIndicator(\n account ?? undefined,\n allLiquidityTokens\n )\n\n // filter for v2 liquidity tokens that the user has a balance in\n const tokenPairsWithV2Balance = useMemo(() => {\n if (fetchingPairBalances) return []\n\n return tokenPairsWithLiquidityTokens\n .filter(({ v2liquidityToken }) => v2liquidityToken && pairBalances[v2liquidityToken.address]?.greaterThan(0))\n .map((tokenPairsWithLiquidityTokens) => tokenPairsWithLiquidityTokens.tokens)\n }, [fetchingPairBalances, tokenPairsWithLiquidityTokens, pairBalances])\n\n // filter for v2 liquidity tokens that the user has a balance in\n const tokenPairsWithSushiBalance = useMemo(() => {\n if (fetchingPairBalances) return []\n\n return tokenPairsWithLiquidityTokens.filter(\n ({ sushiLiquidityToken }) => !!sushiLiquidityToken && pairBalances[sushiLiquidityToken.address]?.greaterThan(0)\n )\n }, [fetchingPairBalances, tokenPairsWithLiquidityTokens, pairBalances])\n\n const v2Pairs = useV2Pairs(tokenPairsWithV2Balance)\n const v2IsLoading = fetchingPairBalances || v2Pairs.some(([pairState]) => pairState === PairState.LOADING)\n\n return (\n <>\n \n \n \n \n \n Migrate V2 Liquidity\n \n
\n Migrate your liquidity tokens from Uniswap V2 to Uniswap V3.} />\n
\n
\n\n \n \n For each pool shown below, click migrate to remove your liquidity from Uniswap V2 and deposit it into\n Uniswap V3.\n \n \n\n {!account ? (\n \n \n Connect to a wallet to view your V2 liquidity.\n \n \n ) : v2IsLoading ? (\n \n \n \n Loading\n \n \n \n ) : v2Pairs.filter(([, pair]) => !!pair).length > 0 ? (\n <>\n {v2Pairs\n .filter(([, pair]) => !!pair)\n .map(([, pair]) => (\n \n ))}\n\n {tokenPairsWithSushiBalance.map(({ sushiLiquidityToken, tokens }) => {\n return (\n \n )\n })}\n \n ) : (\n No V2 Liquidity found.} />\n )}\n\n \n \n \n Don’t see one of your v2 positions?{' '}\n \n Import it.\n \n \n \n \n
\n
\n \n \n )\n}\n","import JSBI from 'jsbi'\nimport { useCallback, useMemo, useState, useEffect, ReactNode } from 'react'\nimport { Fraction, Percent, Price, Token, CurrencyAmount } from '@uniswap/sdk-core'\nimport { Redirect, RouteComponentProps } from 'react-router'\nimport { Text } from 'rebass'\nimport { AutoColumn } from '../../components/Column'\nimport CurrencyLogo from '../../components/CurrencyLogo'\nimport FormattedCurrencyAmount from '../../components/FormattedCurrencyAmount'\nimport { AutoRow, RowBetween, RowFixed } from '../../components/Row'\nimport { V2_FACTORY_ADDRESSES } from '../../constants/addresses'\nimport { WETH9_EXTENDED } from '../../constants/tokens'\nimport { useV2LiquidityTokenPermit } from '../../hooks/useERC20Permit'\nimport useIsArgentWallet from '../../hooks/useIsArgentWallet'\nimport { useTotalSupply } from '../../hooks/useTotalSupply'\nimport { useActiveWeb3React } from '../../hooks/web3'\nimport { useToken } from '../../hooks/Tokens'\nimport { usePairContract, useV2MigratorContract } from '../../hooks/useContract'\nimport { NEVER_RELOAD, useSingleCallResult } from '../../state/multicall/hooks'\nimport { useTokenBalance } from '../../state/wallet/hooks'\nimport { BackArrow, ExternalLink, TYPE } from '../../theme'\nimport { isAddress } from '../../utils'\nimport { calculateGasMargin } from '../../utils/calculateGasMargin'\nimport { getExplorerLink, ExplorerDataType } from '../../utils/getExplorerLink'\nimport { BodyWrapper } from '../AppBody'\nimport { PoolState, usePool } from 'hooks/usePools'\nimport { FeeAmount, Pool, Position, priceToClosestTick, TickMath } from '@uniswap/v3-sdk'\nimport { BlueCard, DarkGreyCard, LightCard, YellowCard } from 'components/Card'\nimport { ApprovalState, useApproveCallback } from 'hooks/useApproveCallback'\nimport { Dots } from 'components/swap/styleds'\nimport { ButtonConfirmed } from 'components/Button'\nimport useTransactionDeadline from 'hooks/useTransactionDeadline'\nimport { useUserSlippageToleranceWithDefault } from 'state/user/hooks'\nimport ReactGA from 'react-ga'\nimport { TransactionResponse } from '@ethersproject/providers'\nimport { useIsTransactionPending, useTransactionAdder } from 'state/transactions/hooks'\nimport { useV3DerivedMintInfo, useRangeHopCallbacks, useV3MintActionHandlers } from 'state/mint/v3/hooks'\nimport { Bound, resetMintState } from 'state/mint/v3/actions'\nimport { Trans } from '@lingui/macro'\nimport { AlertCircle, AlertTriangle, ArrowDown } from 'react-feather'\nimport FeeSelector from 'components/FeeSelector'\nimport RangeSelector from 'components/RangeSelector'\nimport RateToggle from 'components/RateToggle'\nimport { Contract } from '@ethersproject/contracts'\nimport useCurrentBlockTimestamp from 'hooks/useCurrentBlockTimestamp'\nimport { formatCurrencyAmount } from 'utils/formatCurrencyAmount'\nimport useTheme from 'hooks/useTheme'\nimport { unwrappedToken } from 'utils/unwrappedToken'\nimport DoubleCurrencyLogo from 'components/DoubleLogo'\nimport Badge, { BadgeVariant } from 'components/Badge'\n\nimport { useAppDispatch } from 'state/hooks'\nimport SettingsTab from 'components/Settings'\n\nconst ZERO = JSBI.BigInt(0)\n\nconst DEFAULT_MIGRATE_SLIPPAGE_TOLERANCE = new Percent(75, 10_000)\n\nfunction EmptyState({ message }: { message: ReactNode }) {\n return (\n \n {message}\n \n )\n}\n\nfunction LiquidityInfo({\n token0Amount,\n token1Amount,\n}: {\n token0Amount: CurrencyAmount\n token1Amount: CurrencyAmount\n}) {\n const currency0 = unwrappedToken(token0Amount.currency)\n const currency1 = unwrappedToken(token1Amount.currency)\n\n return (\n \n \n \n \n \n {currency0.symbol}\n \n \n \n \n \n \n \n \n \n \n {currency1.symbol}\n \n \n\n \n \n \n \n \n )\n}\n\n// hard-code this for now\nconst percentageToMigrate = 100\n\nfunction V2PairMigration({\n pair,\n pairBalance,\n totalSupply,\n reserve0,\n reserve1,\n token0,\n token1,\n}: {\n pair: Contract\n pairBalance: CurrencyAmount\n totalSupply: CurrencyAmount\n reserve0: CurrencyAmount\n reserve1: CurrencyAmount\n token0: Token\n token1: Token\n}) {\n const { chainId, account } = useActiveWeb3React()\n const theme = useTheme()\n const v2FactoryAddress = chainId ? V2_FACTORY_ADDRESSES[chainId] : undefined\n\n const pairFactory = useSingleCallResult(pair, 'factory')\n const isNotUniswap = pairFactory.result?.[0] && pairFactory.result[0] !== v2FactoryAddress\n\n const deadline = useTransactionDeadline() // custom from users settings\n const blockTimestamp = useCurrentBlockTimestamp()\n const allowedSlippage = useUserSlippageToleranceWithDefault(DEFAULT_MIGRATE_SLIPPAGE_TOLERANCE) // custom from users\n\n const currency0 = unwrappedToken(token0)\n const currency1 = unwrappedToken(token1)\n\n // this is just getLiquidityValue with the fee off, but for the passed pair\n const token0Value = useMemo(\n () =>\n CurrencyAmount.fromRawAmount(\n token0,\n JSBI.divide(JSBI.multiply(pairBalance.quotient, reserve0.quotient), totalSupply.quotient)\n ),\n [token0, pairBalance, reserve0, totalSupply]\n )\n const token1Value = useMemo(\n () =>\n CurrencyAmount.fromRawAmount(\n token1,\n JSBI.divide(JSBI.multiply(pairBalance.quotient, reserve1.quotient), totalSupply.quotient)\n ),\n [token1, pairBalance, reserve1, totalSupply]\n )\n\n // set up v3 pool\n const [feeAmount, setFeeAmount] = useState(FeeAmount.MEDIUM)\n const [poolState, pool] = usePool(token0, token1, feeAmount)\n const noLiquidity = poolState === PoolState.NOT_EXISTS\n\n // get spot prices + price difference\n const v2SpotPrice = useMemo(\n () => new Price(token0, token1, reserve0.quotient, reserve1.quotient),\n [token0, token1, reserve0, reserve1]\n )\n const v3SpotPrice = poolState === PoolState.EXISTS ? pool?.token0Price : undefined\n\n let priceDifferenceFraction: Fraction | undefined =\n v2SpotPrice && v3SpotPrice ? v3SpotPrice.divide(v2SpotPrice).subtract(1).multiply(100) : undefined\n if (priceDifferenceFraction?.lessThan(ZERO)) {\n priceDifferenceFraction = priceDifferenceFraction.multiply(-1)\n }\n\n const largePriceDifference = priceDifferenceFraction && !priceDifferenceFraction?.lessThan(JSBI.BigInt(2))\n\n // the following is a small hack to get access to price range data/input handlers\n const [baseToken, setBaseToken] = useState(token0)\n const { ticks, pricesAtTicks, invertPrice, invalidRange, outOfRange, ticksAtLimit } = useV3DerivedMintInfo(\n token0,\n token1,\n feeAmount,\n baseToken\n )\n\n // get value and prices at ticks\n const { [Bound.LOWER]: tickLower, [Bound.UPPER]: tickUpper } = ticks\n const { [Bound.LOWER]: priceLower, [Bound.UPPER]: priceUpper } = pricesAtTicks\n\n const { getDecrementLower, getIncrementLower, getDecrementUpper, getIncrementUpper } = useRangeHopCallbacks(\n baseToken,\n baseToken.equals(token0) ? token1 : token0,\n feeAmount,\n tickLower,\n tickUpper\n )\n\n const { onLeftRangeInput, onRightRangeInput } = useV3MintActionHandlers(noLiquidity)\n\n // the v3 tick is either the pool's tickCurrent, or the tick closest to the v2 spot price\n const tick = pool?.tickCurrent ?? priceToClosestTick(v2SpotPrice)\n // the price is either the current v3 price, or the price at the tick\n const sqrtPrice = pool?.sqrtRatioX96 ?? TickMath.getSqrtRatioAtTick(tick)\n const position =\n typeof tickLower === 'number' && typeof tickUpper === 'number' && !invalidRange\n ? Position.fromAmounts({\n pool: pool ?? new Pool(token0, token1, feeAmount, sqrtPrice, 0, tick, []),\n tickLower,\n tickUpper,\n amount0: token0Value.quotient,\n amount1: token1Value.quotient,\n useFullPrecision: true, // we want full precision for the theoretical position\n })\n : undefined\n\n const { amount0: v3Amount0Min, amount1: v3Amount1Min } = useMemo(\n () => (position ? position.mintAmountsWithSlippage(allowedSlippage) : { amount0: undefined, amount1: undefined }),\n [position, allowedSlippage]\n )\n\n const refund0 = useMemo(\n () =>\n position && CurrencyAmount.fromRawAmount(token0, JSBI.subtract(token0Value.quotient, position.amount0.quotient)),\n [token0Value, position, token0]\n )\n const refund1 = useMemo(\n () =>\n position && CurrencyAmount.fromRawAmount(token1, JSBI.subtract(token1Value.quotient, position.amount1.quotient)),\n [token1Value, position, token1]\n )\n\n const [confirmingMigration, setConfirmingMigration] = useState(false)\n const [pendingMigrationHash, setPendingMigrationHash] = useState(null)\n\n const migrator = useV2MigratorContract()\n\n // approvals\n const [approval, approveManually] = useApproveCallback(pairBalance, migrator?.address)\n const { signatureData, gatherPermitSignature } = useV2LiquidityTokenPermit(pairBalance, migrator?.address)\n\n const isArgentWallet = useIsArgentWallet()\n\n const approve = useCallback(async () => {\n if (isNotUniswap || isArgentWallet) {\n // sushi has to be manually approved\n await approveManually()\n } else if (gatherPermitSignature) {\n try {\n await gatherPermitSignature()\n } catch (error) {\n // try to approve if gatherPermitSignature failed for any reason other than the user rejecting it\n if (error?.code !== 4001) {\n await approveManually()\n }\n }\n } else {\n await approveManually()\n }\n }, [isNotUniswap, isArgentWallet, gatherPermitSignature, approveManually])\n\n const addTransaction = useTransactionAdder()\n const isMigrationPending = useIsTransactionPending(pendingMigrationHash ?? undefined)\n\n const migrate = useCallback(() => {\n if (\n !migrator ||\n !account ||\n !deadline ||\n !blockTimestamp ||\n typeof tickLower !== 'number' ||\n typeof tickUpper !== 'number' ||\n !v3Amount0Min ||\n !v3Amount1Min ||\n !chainId\n )\n return\n\n const deadlineToUse = signatureData?.deadline ?? deadline\n\n const data: string[] = []\n\n // permit if necessary\n if (signatureData) {\n data.push(\n migrator.interface.encodeFunctionData('selfPermit', [\n pair.address,\n `0x${pairBalance.quotient.toString(16)}`,\n deadlineToUse,\n signatureData.v,\n signatureData.r,\n signatureData.s,\n ])\n )\n }\n\n // create/initialize pool if necessary\n if (noLiquidity) {\n data.push(\n migrator.interface.encodeFunctionData('createAndInitializePoolIfNecessary', [\n token0.address,\n token1.address,\n feeAmount,\n `0x${sqrtPrice.toString(16)}`,\n ])\n )\n }\n\n // TODO could save gas by not doing this in multicall\n data.push(\n migrator.interface.encodeFunctionData('migrate', [\n {\n pair: pair.address,\n liquidityToMigrate: `0x${pairBalance.quotient.toString(16)}`,\n percentageToMigrate,\n token0: token0.address,\n token1: token1.address,\n fee: feeAmount,\n tickLower,\n tickUpper,\n amount0Min: `0x${v3Amount0Min.toString(16)}`,\n amount1Min: `0x${v3Amount1Min.toString(16)}`,\n recipient: account,\n deadline: deadlineToUse,\n refundAsETH: true, // hard-code this for now\n },\n ])\n )\n\n setConfirmingMigration(true)\n\n migrator.estimateGas\n .multicall(data)\n .then((gasEstimate) => {\n return migrator\n .multicall(data, { gasLimit: calculateGasMargin(chainId, gasEstimate) })\n .then((response: TransactionResponse) => {\n ReactGA.event({\n category: 'Migrate',\n action: `${isNotUniswap ? 'SushiSwap' : 'V2'}->V3`,\n label: `${currency0.symbol}/${currency1.symbol}`,\n })\n\n addTransaction(response, {\n summary: `Migrate ${currency0.symbol}/${currency1.symbol} liquidity to V3`,\n })\n setPendingMigrationHash(response.hash)\n })\n })\n .catch(() => {\n setConfirmingMigration(false)\n })\n }, [\n chainId,\n isNotUniswap,\n migrator,\n noLiquidity,\n blockTimestamp,\n token0,\n token1,\n feeAmount,\n pairBalance,\n tickLower,\n tickUpper,\n sqrtPrice,\n v3Amount0Min,\n v3Amount1Min,\n account,\n deadline,\n signatureData,\n addTransaction,\n pair,\n currency0,\n currency1,\n ])\n\n const isSuccessfullyMigrated = !!pendingMigrationHash && JSBI.equal(pairBalance.quotient, ZERO)\n\n return (\n \n \n \n This tool will safely migrate your {isNotUniswap ? 'SushiSwap' : 'V2'} liquidity to V3. The process is\n completely trustless thanks to the{' '}\n \n {chainId && migrator && (\n \n \n Uniswap migration contract↗\n \n \n )}\n .\n \n\n \n \n \n \n \n \n \n {currency0.symbol}/{currency1.symbol} LP Tokens\n \n \n \n {isNotUniswap ? 'Sushi' : 'V2'}\n \n \n \n \n\n
\n \n
\n\n \n \n \n \n \n \n \n {currency0.symbol}/{currency1.symbol} LP NFT\n \n \n \n V3\n \n\n \n {noLiquidity && (\n \n \n \n \n You are the first liquidity provider for this Uniswap V3 pool. Your liquidity will migrate at the\n current {isNotUniswap ? 'SushiSwap' : 'V2'} price.\n \n \n\n \n Your transaction cost will be much higher as it includes the gas to create the pool.\n \n\n {v2SpotPrice && (\n \n \n \n \n {isNotUniswap ? 'SushiSwap' : 'V2'} {invertPrice ? currency1.symbol : currency0.symbol} Price:\n {' '}\n {invertPrice\n ? `${v2SpotPrice?.invert()?.toSignificant(6)} ${currency0.symbol}`\n : `${v2SpotPrice?.toSignificant(6)} ${currency1.symbol}`}\n \n \n \n )}\n \n )}\n\n {largePriceDifference ? (\n \n \n \n \n \n {isNotUniswap ? 'SushiSwap' : 'V2'} {invertPrice ? currency1.symbol : currency0.symbol} Price:\n \n \n \n {invertPrice\n ? `${v2SpotPrice?.invert()?.toSignificant(6)} ${currency0.symbol}`\n : `${v2SpotPrice?.toSignificant(6)} ${currency1.symbol}`}\n \n \n\n \n \n V3 {invertPrice ? currency1.symbol : currency0.symbol} Price:\n \n \n {invertPrice\n ? `${v3SpotPrice?.invert()?.toSignificant(6)} ${currency0.symbol}`\n : `${v3SpotPrice?.toSignificant(6)} ${currency1.symbol}`}\n \n \n\n \n \n Price Difference:\n \n \n {priceDifferenceFraction?.toSignificant(4)}%\n \n \n \n \n \n You should only deposit liquidity into Uniswap V3 at a price you believe is correct.
\n If the price seems incorrect, you can either make a swap to move the price or wait for someone else to\n do so.\n
\n
\n
\n ) : !noLiquidity && v3SpotPrice ? (\n \n \n V3 {invertPrice ? currency1.symbol : currency0.symbol} Price:\n \n \n {invertPrice\n ? `${v3SpotPrice?.invert()?.toSignificant(6)} ${currency0.symbol}`\n : `${v3SpotPrice?.toSignificant(6)} ${currency1.symbol}`}\n \n \n ) : null}\n\n \n \n Set Price Range\n \n {\n onLeftRangeInput('')\n onRightRangeInput('')\n setBaseToken((base) => (base.equals(token0) ? token1 : token0))\n }}\n />\n \n\n \n\n {outOfRange ? (\n \n \n \n \n \n Your position will not earn fees or be used in trades until the market price moves into your range.\n \n \n \n \n ) : null}\n\n {invalidRange ? (\n \n \n \n \n Invalid range selected. The min price must be lower than the max price.\n \n \n \n ) : null}\n\n {position ? (\n \n \n \n {chainId && refund0 && refund1 ? (\n \n \n At least {formatCurrencyAmount(refund0, 4)}{' '}\n {token0.equals(WETH9_EXTENDED[chainId]) ? 'ETH' : token0.symbol} and{' '}\n {formatCurrencyAmount(refund1, 4)}{' '}\n {token1.equals(WETH9_EXTENDED[chainId]) ? 'ETH' : token1.symbol} will be refunded to your wallet\n due to selected price range.\n \n \n ) : null}\n \n \n ) : null}\n\n \n {!isSuccessfullyMigrated && !isMigrationPending ? (\n \n \n {approval === ApprovalState.PENDING ? (\n \n Approving\n \n ) : approval === ApprovalState.APPROVED || signatureData !== null ? (\n Allowed\n ) : (\n Allow LP token migration\n )}\n \n \n ) : null}\n \n \n {isSuccessfullyMigrated ? (\n 'Success!'\n ) : isMigrationPending ? (\n \n Migrating\n \n ) : (\n Migrate\n )}\n \n \n \n
\n
\n
\n )\n}\n\nexport default function MigrateV2Pair({\n match: {\n params: { address },\n },\n}: RouteComponentProps<{ address: string }>) {\n // reset mint state on component mount, and as a cleanup (on unmount)\n const dispatch = useAppDispatch()\n useEffect(() => {\n dispatch(resetMintState())\n return () => {\n dispatch(resetMintState())\n }\n }, [dispatch])\n\n const { chainId, account } = useActiveWeb3React()\n\n // get pair contract\n const validatedAddress = isAddress(address)\n const pair = usePairContract(validatedAddress ? validatedAddress : undefined)\n\n // get token addresses from pair contract\n const token0AddressCallState = useSingleCallResult(pair, 'token0', undefined, NEVER_RELOAD)\n const token0Address = token0AddressCallState?.result?.[0]\n const token1Address = useSingleCallResult(pair, 'token1', undefined, NEVER_RELOAD)?.result?.[0]\n\n // get tokens\n const token0 = useToken(token0Address)\n const token1 = useToken(token1Address)\n\n // get liquidity token balance\n const liquidityToken: Token | undefined = useMemo(\n () => (chainId && validatedAddress ? new Token(chainId, validatedAddress, 18) : undefined),\n [chainId, validatedAddress]\n )\n\n // get data required for V2 pair migration\n const pairBalance = useTokenBalance(account ?? undefined, liquidityToken)\n const totalSupply = useTotalSupply(liquidityToken)\n const [reserve0Raw, reserve1Raw] = useSingleCallResult(pair, 'getReserves')?.result ?? []\n const reserve0 = useMemo(\n () => (token0 && reserve0Raw ? CurrencyAmount.fromRawAmount(token0, reserve0Raw) : undefined),\n [token0, reserve0Raw]\n )\n const reserve1 = useMemo(\n () => (token1 && reserve1Raw ? CurrencyAmount.fromRawAmount(token1, reserve1Raw) : undefined),\n [token1, reserve1Raw]\n )\n\n // redirect for invalid url params\n if (\n !validatedAddress ||\n !pair ||\n (pair &&\n token0AddressCallState?.valid &&\n !token0AddressCallState?.loading &&\n !token0AddressCallState?.error &&\n !token0Address)\n ) {\n console.error('Invalid pair address')\n return \n }\n\n return (\n \n \n \n \n \n Migrate V2 Liquidity\n \n \n \n\n {!account ? (\n \n You must connect an account.\n \n ) : pairBalance && totalSupply && reserve0 && reserve1 && token0 && token1 ? (\n \n ) : (\n Loading} />\n )}\n \n \n )\n}\n","import { FeeAmount, nearestUsableTick, TickMath, TICK_SPACINGS } from '@uniswap/v3-sdk'\nimport { useMemo } from 'react'\nimport { Bound } from 'state/mint/v3/actions'\n\nexport default function useIsTickAtLimit(\n feeAmount: FeeAmount | undefined,\n tickLower: number | undefined,\n tickUpper: number | undefined\n) {\n return useMemo(\n () => ({\n [Bound.LOWER]:\n feeAmount && tickLower\n ? tickLower === nearestUsableTick(TickMath.MIN_TICK, TICK_SPACINGS[feeAmount as FeeAmount])\n : undefined,\n [Bound.UPPER]:\n feeAmount && tickUpper\n ? tickUpper === nearestUsableTick(TickMath.MAX_TICK, TICK_SPACINGS[feeAmount as FeeAmount])\n : undefined,\n }),\n [feeAmount, tickLower, tickUpper]\n )\n}\n","import { useMemo } from 'react'\nimport { Position } from '@uniswap/v3-sdk'\nimport Badge from 'components/Badge'\nimport DoubleCurrencyLogo from 'components/DoubleLogo'\nimport { usePool } from 'hooks/usePools'\nimport { useToken } from 'hooks/Tokens'\nimport { Link } from 'react-router-dom'\nimport styled from 'styled-components/macro'\nimport { HideSmall, MEDIA_WIDTHS, SmallOnly } from 'theme'\nimport { PositionDetails } from 'types/position'\nimport { Price, Token, Percent } from '@uniswap/sdk-core'\nimport { formatTickPrice } from 'utils/formatTickPrice'\nimport Loader from 'components/Loader'\nimport { unwrappedToken } from 'utils/unwrappedToken'\nimport RangeBadge from 'components/Badge/RangeBadge'\nimport { RowBetween } from 'components/Row'\nimport HoverInlineText from 'components/HoverInlineText'\nimport { DAI, USDC, USDT, WBTC, WETH9_EXTENDED } from '../../constants/tokens'\nimport { Trans } from '@lingui/macro'\nimport useIsTickAtLimit from 'hooks/useIsTickAtLimit'\nimport { Bound } from 'state/mint/v3/actions'\n\nconst LinkRow = styled(Link)`\n align-items: center;\n border-radius: 20px;\n display: flex;\n cursor: pointer;\n user-select: none;\n display: flex;\n flex-direction: column;\n\n justify-content: space-between;\n color: ${({ theme }) => theme.text1};\n margin: 8px 0;\n padding: 16px;\n text-decoration: none;\n font-weight: 500;\n background-color: ${({ theme }) => theme.bg1};\n\n &:last-of-type {\n margin: 8px 0 0 0;\n }\n & > div:not(:first-child) {\n text-align: center;\n }\n :hover {\n background-color: ${({ theme }) => theme.bg2};\n }\n\n @media screen and (min-width: ${MEDIA_WIDTHS.upToSmall}px) {\n /* flex-direction: row; */\n }\n\n ${({ theme }) => theme.mediaWidth.upToSmall`\n flex-direction: column;\n row-gap: 12px;\n `};\n`\n\nconst BadgeText = styled.div`\n font-weight: 500;\n font-size: 14px;\n ${({ theme }) => theme.mediaWidth.upToSmall`\n font-size: 12px;\n `};\n`\n\nconst DataLineItem = styled.div`\n font-size: 14px;\n`\n\nconst RangeLineItem = styled(DataLineItem)`\n display: flex;\n flex-direction: row;\n align-items: center;\n\n margin-top: 4px;\n width: 100%;\n\n ${({ theme }) => theme.mediaWidth.upToSmall`\n background-color: ${({ theme }) => theme.bg2};\n border-radius: 12px;\n padding: 8px 0;\n`};\n`\n\nconst DoubleArrow = styled.span`\n margin: 0 2px;\n color: ${({ theme }) => theme.text3};\n ${({ theme }) => theme.mediaWidth.upToSmall`\n margin: 4px;\n padding: 20px;\n `};\n`\n\nconst RangeText = styled.span`\n /* background-color: ${({ theme }) => theme.bg2}; */\n padding: 0.25rem 0.5rem;\n border-radius: 8px;\n`\n\nconst ExtentsText = styled.span`\n color: ${({ theme }) => theme.text3};\n font-size: 14px;\n margin-right: 4px;\n ${({ theme }) => theme.mediaWidth.upToSmall`\n display: none;\n `};\n`\n\nconst PrimaryPositionIdData = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n > * {\n margin-right: 8px;\n }\n`\n\nconst DataText = styled.div`\n font-weight: 600;\n font-size: 18px;\n\n ${({ theme }) => theme.mediaWidth.upToSmall`\n font-size: 14px;\n `};\n`\n\ninterface PositionListItemProps {\n positionDetails: PositionDetails\n}\n\nexport function getPriceOrderingFromPositionForUI(position?: Position): {\n priceLower?: Price\n priceUpper?: Price\n quote?: Token\n base?: Token\n} {\n if (!position) {\n return {}\n }\n\n const token0 = position.amount0.currency\n const token1 = position.amount1.currency\n\n // if token0 is a dollar-stable asset, set it as the quote token\n const stables = [DAI, USDC, USDT]\n if (stables.some((stable) => stable.equals(token0))) {\n return {\n priceLower: position.token0PriceUpper.invert(),\n priceUpper: position.token0PriceLower.invert(),\n quote: token0,\n base: token1,\n }\n }\n\n // if token1 is an ETH-/BTC-stable asset, set it as the base token\n const bases = [...Object.values(WETH9_EXTENDED), WBTC]\n if (bases.some((base) => base.equals(token1))) {\n return {\n priceLower: position.token0PriceUpper.invert(),\n priceUpper: position.token0PriceLower.invert(),\n quote: token0,\n base: token1,\n }\n }\n\n // if both prices are below 1, invert\n if (position.token0PriceUpper.lessThan(1)) {\n return {\n priceLower: position.token0PriceUpper.invert(),\n priceUpper: position.token0PriceLower.invert(),\n quote: token0,\n base: token1,\n }\n }\n\n // otherwise, just return the default\n return {\n priceLower: position.token0PriceLower,\n priceUpper: position.token0PriceUpper,\n quote: token1,\n base: token0,\n }\n}\n\nexport default function PositionListItem({ positionDetails }: PositionListItemProps) {\n const {\n token0: token0Address,\n token1: token1Address,\n fee: feeAmount,\n liquidity,\n tickLower,\n tickUpper,\n } = positionDetails\n\n const token0 = useToken(token0Address)\n const token1 = useToken(token1Address)\n\n const currency0 = token0 ? unwrappedToken(token0) : undefined\n const currency1 = token1 ? unwrappedToken(token1) : undefined\n\n // construct Position from details returned\n const [, pool] = usePool(currency0 ?? undefined, currency1 ?? undefined, feeAmount)\n\n const position = useMemo(() => {\n if (pool) {\n return new Position({ pool, liquidity: liquidity.toString(), tickLower, tickUpper })\n }\n return undefined\n }, [liquidity, pool, tickLower, tickUpper])\n\n const tickAtLimit = useIsTickAtLimit(feeAmount, tickLower, tickUpper)\n\n // prices\n const { priceLower, priceUpper, quote, base } = getPriceOrderingFromPositionForUI(position)\n\n const currencyQuote = quote && unwrappedToken(quote)\n const currencyBase = base && unwrappedToken(base)\n\n // check if price is within range\n const outOfRange: boolean = pool ? pool.tickCurrent < tickLower || pool.tickCurrent >= tickUpper : false\n\n const positionSummaryLink = '/pool/' + positionDetails.tokenId\n\n const removed = liquidity?.eq(0)\n\n return (\n \n \n \n \n \n  {currencyQuote?.symbol} / {currencyBase?.symbol}\n \n  \n \n \n {new Percent(feeAmount, 1_000_000).toSignificant()}%\n \n \n \n \n \n\n {priceLower && priceUpper ? (\n \n \n \n Min: \n \n \n {formatTickPrice(priceLower, tickAtLimit, Bound.LOWER)} {' '}\n per \n \n {' '}\n \n {' '}\n \n \n {' '}\n \n \n \n Max:\n \n \n {formatTickPrice(priceUpper, tickAtLimit, Bound.UPPER)} {' '}\n per \n \n \n \n ) : (\n \n )}\n \n )\n}\n","import PositionListItem from 'components/PositionListItem'\nimport React from 'react'\nimport { Trans } from '@lingui/macro'\nimport styled from 'styled-components/macro'\nimport { MEDIA_WIDTHS } from 'theme'\nimport { PositionDetails } from 'types/position'\n\nconst DesktopHeader = styled.div`\n display: none;\n font-size: 14px;\n font-weight: 500;\n padding: 8px;\n\n @media screen and (min-width: ${MEDIA_WIDTHS.upToSmall}px) {\n align-items: center;\n display: flex;\n\n display: grid;\n grid-template-columns: 1fr 1fr;\n & > div:last-child {\n text-align: right;\n margin-right: 12px;\n }\n }\n`\n\nconst MobileHeader = styled.div`\n font-weight: medium;\n font-size: 16px;\n font-weight: 500;\n padding: 8px;\n @media screen and (min-width: ${MEDIA_WIDTHS.upToSmall}px) {\n display: none;\n }\n`\n\ntype PositionListProps = React.PropsWithChildren<{\n positions: PositionDetails[]\n}>\n\nexport default function PositionList({ positions }: PositionListProps) {\n return (\n <>\n \n
\n Your positions\n {positions && ' (' + positions.length + ')'}\n
\n
\n Status\n
\n
\n \n Your positions\n \n {positions.map((p) => {\n return \n })}\n \n )\n}\n","import { Trans } from '@lingui/macro'\nimport {\n ArbitrumWrapperBackgroundDarkMode,\n ArbitrumWrapperBackgroundLightMode,\n OptimismWrapperBackgroundDarkMode,\n OptimismWrapperBackgroundLightMode,\n} from 'components/NetworkAlert/NetworkAlert'\nimport { CHAIN_INFO, L2_CHAIN_IDS, SupportedChainId, SupportedL2ChainId } from 'constants/chains'\nimport { useActiveWeb3React } from 'hooks/web3'\nimport { ArrowDownCircle } from 'react-feather'\nimport { useArbitrumAlphaAlert, useDarkModeManager } from 'state/user/hooks'\nimport styled from 'styled-components/macro'\nimport { ExternalLink, MEDIA_WIDTHS } from 'theme'\n\nconst L2Icon = styled.img`\n display: none;\n height: 40px;\n margin: auto 20px auto 4px;\n width: 40px;\n @media screen and (min-width: ${MEDIA_WIDTHS.upToSmall}px) {\n display: block;\n }\n`\nconst DesktopTextBreak = styled.div`\n display: none;\n @media screen and (min-width: ${MEDIA_WIDTHS.upToMedium}px) {\n display: block;\n }\n`\nconst Wrapper = styled.div<{ chainId: SupportedL2ChainId; darkMode: boolean; logoUrl: string }>`\n ${({ chainId, darkMode }) =>\n [SupportedChainId.OPTIMISM, SupportedChainId.OPTIMISTIC_KOVAN].includes(chainId)\n ? darkMode\n ? OptimismWrapperBackgroundDarkMode\n : OptimismWrapperBackgroundLightMode\n : darkMode\n ? ArbitrumWrapperBackgroundDarkMode\n : ArbitrumWrapperBackgroundLightMode};\n border-radius: 20px;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n padding: 12px;\n position: relative;\n width: 100%;\n\n :before {\n background-image: url(${({ logoUrl }) => logoUrl});\n background-repeat: no-repeat;\n background-size: 300px;\n content: '';\n height: 300px;\n opacity: 0.1;\n position: absolute;\n transform: rotate(25deg) translate(-90px, -40px);\n width: 300px;\n z-index: -1;\n }\n @media screen and (min-width: ${MEDIA_WIDTHS.upToSmall}px) {\n flex-direction: row;\n padding: 16px 20px;\n }\n`\nconst Body = styled.div`\n font-size: 12px;\n line-height: 143%;\n margin: 12px;\n @media screen and (min-width: ${MEDIA_WIDTHS.upToSmall}px) {\n flex: 1 1 auto;\n margin: auto 0;\n }\n`\nconst LinkOutCircle = styled(ArrowDownCircle)`\n transform: rotate(230deg);\n width: 20px;\n height: 20px;\n margin-left: 12px;\n`\nconst LinkOutToBridge = styled(ExternalLink)`\n align-items: center;\n background-color: black;\n border-radius: 16px;\n color: white;\n display: flex;\n font-size: 14px;\n justify-content: space-between;\n margin: 0;\n max-height: 47px;\n padding: 16px 8px;\n text-decoration: none;\n width: auto;\n :hover,\n :focus,\n :active {\n background-color: black;\n }\n @media screen and (min-width: ${MEDIA_WIDTHS.upToSmall}px) {\n margin: auto 0 auto auto;\n padding: 14px 17px;\n min-width: 226px;\n }\n`\nexport function MinimalNetworkAlert() {\n const { chainId } = useActiveWeb3React()\n const [darkMode] = useDarkModeManager()\n const [arbitrumAlphaAcknowledged] = useArbitrumAlphaAlert()\n\n if (!chainId || !L2_CHAIN_IDS.includes(chainId) || arbitrumAlphaAcknowledged) {\n return null\n }\n const info = CHAIN_INFO[chainId as SupportedL2ChainId]\n const depositUrl = [SupportedChainId.OPTIMISM, SupportedChainId.OPTIMISTIC_KOVAN].includes(chainId)\n ? `${info.bridge}?chainId=1`\n : info.bridge\n return (\n \n \n \n This is an alpha release of Uniswap on the {info.label} network.\n You must bridge L1 assets to the network to use them.\n \n \n Deposit to {info.label}\n \n \n \n )\n}\n","export default __webpack_public_path__ + \"static/media/sandtexture.22e9be85.webp\";","import { Trans } from '@lingui/macro'\nimport { AutoColumn } from 'components/Column'\nimport { MinimalNetworkAlert } from 'components/NetworkAlert/MinimalNetworkAlert'\nimport { CHAIN_INFO, SupportedChainId } from 'constants/chains'\nimport { useActiveWeb3React } from 'hooks/web3'\nimport styled from 'styled-components/macro'\nimport { TYPE } from 'theme'\nimport Texture from '../../assets/images/sandtexture.webp'\nimport { ExternalLink } from '../../theme'\n\nconst CTASection = styled.section`\n display: grid;\n grid-template-columns: 2fr 1fr;\n gap: 8px;\n margin-top: 8px;\n\n ${({ theme }) => theme.mediaWidth.upToSmall`\n grid-template-columns: auto;\n grid-template-rows: auto;\n `};\n`\n\nconst CTA1 = styled(ExternalLink)`\n background-color: ${({ theme }) => theme.bg2};\n background: radial-gradient(\n 92.78% 103.09% at 50.06% 7.22%,\n rgba(255, 58, 212, 0.072) 0%,\n rgba(255, 255, 255, 0.042) 100%\n ),\n radial-gradient(100% 97.16% at 0% 12.22%, rgba(235, 0, 255, 0.2) 0%, rgba(243, 19, 19, 0.2) 100%);\n padding: 2rem;\n border-radius: 20px;\n display: flex;\n flex-direction: column;\n position: relative;\n justify-content: space-between;\n align-items: center;\n overflow: hidden;\n border: 1px solid transparent;\n\n * {\n color: ${({ theme }) => theme.text1};\n text-decoration: none !important;\n }\n\n :hover {\n border: 1px solid ${({ theme }) => theme.bg0};\n text-decoration: none;\n * {\n text-decoration: none !important;\n }\n }\n\n :before {\n content: '';\n position: absolute;\n width: 800%;\n height: 480%;\n top: -390px;\n left: -310px;\n z-index: -1;\n opacity: 0.4;\n background: url(${Texture}) 0 0 repeat;\n transform: rotate(-4deg);\n }\n`\n\nconst CTA2 = styled(ExternalLink)`\n position: relative;\n overflow: hidden;\n padding: 32px;\n border-radius: 20px;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n border: 1px solid transparent;\n\n * {\n color: ${({ theme }) => theme.text1};\n text-decoration: none !important;\n }\n\n :hover {\n border: 1px solid ${({ theme }) => theme.bg0};\n text-decoration: none !important;\n * {\n text-decoration: none !important;\n }\n }\n\n :before {\n content: '';\n position: absolute;\n width: 340%;\n height: 280%;\n top: -170%;\n left: -134%;\n opacity: 0.4;\n z-index: -1;\n background: url(${Texture}) 0 0 repeat;\n transform: rotate(-4deg);\n }\n`\n\nconst HeaderText = styled(TYPE.label)`\n align-items: center;\n display: flex;\n margin-bottom: 24px;\n font-weight: 400;\n font-size: 20px;\n ${({ theme }) => theme.mediaWidth.upToMedium`\n font-size: 20px;\n `};\n`\n\nconst ResponsiveColumn = styled(AutoColumn)`\n grid-template-columns: 1fr;\n width: 100%;\n gap: 12px;\n ${({ theme }) => theme.mediaWidth.upToMedium`\n gap: 8px;\n `};\n justify-content: space-between;\n`\n\nexport default function CTACards() {\n const { chainId } = useActiveWeb3React()\n const { infoLink } = CHAIN_INFO[chainId ? chainId : SupportedChainId.MAINNET]\n return (\n
\n \n \n \n \n \n Learn about providing liquidity ↗\n \n \n Check out our v3 LP walkthrough and migration guides.\n \n \n \n \n \n \n Top pools ↗\n \n \n Explore popular pools on Uniswap Analytics.\n \n \n \n \n
\n )\n}\n","import { Trans } from '@lingui/macro'\nimport { ButtonGray, ButtonOutlined, ButtonPrimary } from 'components/Button'\nimport { AutoColumn } from 'components/Column'\nimport { FlyoutAlignment, NewMenu } from 'components/Menu'\nimport { SwapPoolTabs } from 'components/NavigationTabs'\nimport PositionList from 'components/PositionList'\nimport { RowBetween, RowFixed } from 'components/Row'\nimport { SwitchLocaleLink } from 'components/SwitchLocaleLink'\nimport { L2_CHAIN_IDS } from 'constants/chains'\nimport { useV3Positions } from 'hooks/useV3Positions'\nimport { useActiveWeb3React } from 'hooks/web3'\nimport { useContext } from 'react'\nimport { BookOpen, ChevronDown, ChevronsRight, Inbox, Layers, PlusCircle } from 'react-feather'\nimport { Link } from 'react-router-dom'\nimport { useWalletModalToggle } from 'state/application/hooks'\nimport { useUserHideClosedPositions } from 'state/user/hooks'\nimport styled, { ThemeContext } from 'styled-components/macro'\nimport { HideSmall, TYPE } from 'theme'\nimport { PositionDetails } from 'types/position'\nimport CTACards from './CTACards'\nimport { LoadingRows } from './styleds'\n\nconst PageWrapper = styled(AutoColumn)`\n max-width: 870px;\n width: 100%;\n\n ${({ theme }) => theme.mediaWidth.upToMedium`\n max-width: 800px;\n `};\n\n ${({ theme }) => theme.mediaWidth.upToSmall`\n max-width: 500px;\n `};\n`\nconst TitleRow = styled(RowBetween)`\n color: ${({ theme }) => theme.text2};\n ${({ theme }) => theme.mediaWidth.upToSmall`\n flex-wrap: wrap;\n gap: 12px;\n width: 100%;\n `};\n`\nconst ButtonRow = styled(RowFixed)`\n & > *:not(:last-child) {\n margin-left: 8px;\n }\n\n ${({ theme }) => theme.mediaWidth.upToSmall`\n width: 100%;\n flex-direction: row;\n justify-content: space-between;\n flex-direction: row-reverse;\n `};\n`\nconst Menu = styled(NewMenu)`\n margin-left: 0;\n ${({ theme }) => theme.mediaWidth.upToSmall`\n flex: 1 1 auto;\n width: 49%;\n right: 0px;\n `};\n\n a {\n width: 100%;\n }\n`\nconst MenuItem = styled.div`\n align-items: center;\n display: flex;\n justify-content: space-between;\n width: 100%;\n font-weight: 500;\n`\nconst MoreOptionsButton = styled(ButtonGray)`\n border-radius: 12px;\n flex: 1 1 auto;\n padding: 6px 8px;\n width: 100%;\n background-color: ${({ theme }) => theme.bg0};\n margin-right: 8px;\n`\nconst NoLiquidity = styled.div`\n align-items: center;\n display: flex;\n flex-direction: column;\n justify-content: center;\n margin: auto;\n max-width: 300px;\n min-height: 25vh;\n`\nconst ResponsiveButtonPrimary = styled(ButtonPrimary)`\n border-radius: 12px;\n padding: 6px 8px;\n width: fit-content;\n ${({ theme }) => theme.mediaWidth.upToSmall`\n flex: 1 1 auto;\n width: 100%;\n `};\n`\n\nconst MainContentWrapper = styled.main`\n background-color: ${({ theme }) => theme.bg0};\n padding: 8px;\n border-radius: 20px;\n display: flex;\n flex-direction: column;\n`\n\nconst ShowInactiveToggle = styled.div`\n display: flex;\n align-items: center;\n justify-items: end;\n grid-column-gap: 4px;\n padding: 0 8px;\n ${({ theme }) => theme.mediaWidth.upToMedium`\n margin-bottom: 12px;\n `};\n`\n\nconst ResponsiveRow = styled(RowFixed)`\n justify-content: space-between;\n width: 100%;\n ${({ theme }) => theme.mediaWidth.upToMedium`\n flex-direction: column-reverse;\n `};\n`\n\nexport default function Pool() {\n const { account, chainId } = useActiveWeb3React()\n const toggleWalletModal = useWalletModalToggle()\n\n const theme = useContext(ThemeContext)\n const [userHideClosedPositions, setUserHideClosedPositions] = useUserHideClosedPositions()\n\n const { positions, loading: positionsLoading } = useV3Positions(account)\n\n const [openPositions, closedPositions] = positions?.reduce<[PositionDetails[], PositionDetails[]]>(\n (acc, p) => {\n acc[p.liquidity?.isZero() ? 1 : 0].push(p)\n return acc\n },\n [[], []]\n ) ?? [[], []]\n\n const filteredPositions = [...openPositions, ...(userHideClosedPositions ? [] : closedPositions)]\n const showConnectAWallet = Boolean(!account)\n const showV2Features = !!chainId && !L2_CHAIN_IDS.includes(chainId)\n\n const menuItems = [\n {\n content: (\n \n Create a pool\n \n \n ),\n link: '/add/ETH',\n external: false,\n },\n {\n content: (\n \n Migrate\n \n \n ),\n link: '/migrate/v2',\n external: false,\n },\n {\n content: (\n \n V2 liquidity\n \n \n ),\n link: '/pool/v2',\n external: false,\n },\n {\n content: (\n \n Learn\n \n \n ),\n link: 'https://docs.uniswap.org/',\n external: true,\n },\n ]\n\n return (\n <>\n \n \n \n \n \n \n Pools Overview\n \n \n {showV2Features && (\n (\n \n \n More\n \n \n \n )}\n />\n )}\n \n + New Position\n \n \n \n\n \n \n \n\n \n {positionsLoading ? (\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n ) : filteredPositions && filteredPositions.length > 0 ? (\n \n ) : (\n \n \n \n
\n Your V3 liquidity positions will appear here.\n
\n
\n {showConnectAWallet && (\n \n Connect a wallet\n \n )}\n
\n )}\n \n\n \n {showV2Features && (\n \n \n \n\n View V2 Liquidity\n \n {positions && positions.length > 0 && (\n \n \n\n Migrate Liquidity\n \n )}\n \n )}\n {closedPositions.length > 0 ? (\n \n \n setUserHideClosedPositions(!userHideClosedPositions)}\n checked={!userHideClosedPositions}\n />\n \n ) : null}\n \n \n \n \n \n \n )\n}\n","import { BigNumber } from 'ethers'\nimport JSBI from 'jsbi'\nimport { useMemo } from 'react'\nimport { NEVER_RELOAD, useSingleCallResult } from '../state/multicall/hooks'\nimport { useV3NFTPositionManagerContract } from './useContract'\n\ntype TokenId = number | JSBI | BigNumber\n\nconst STARTS_WITH = 'data:application/json;base64,'\n\ntype UsePositionTokenURIResult =\n | {\n valid: true\n loading: false\n result: {\n name: string\n description: string\n image: string\n }\n }\n | {\n valid: false\n loading: false\n }\n | {\n valid: true\n loading: true\n }\n\nexport function usePositionTokenURI(tokenId: TokenId | undefined): UsePositionTokenURIResult {\n const contract = useV3NFTPositionManagerContract()\n const inputs = useMemo(\n () => [tokenId instanceof BigNumber ? tokenId.toHexString() : tokenId?.toString(16)],\n [tokenId]\n )\n const { result, error, loading, valid } = useSingleCallResult(contract, 'tokenURI', inputs, {\n ...NEVER_RELOAD,\n gasRequired: 3_000_000,\n })\n\n return useMemo(() => {\n if (error || !valid || !tokenId) {\n return {\n valid: false,\n loading: false,\n }\n }\n if (loading) {\n return {\n valid: true,\n loading: true,\n }\n }\n if (!result) {\n return {\n valid: false,\n loading: false,\n }\n }\n const [tokenURI] = result as [string]\n if (!tokenURI || !tokenURI.startsWith(STARTS_WITH))\n return {\n valid: false,\n loading: false,\n }\n\n try {\n const json = JSON.parse(atob(tokenURI.slice(STARTS_WITH.length)))\n\n return {\n valid: true,\n loading: false,\n result: json,\n }\n } catch (error) {\n return { valid: false, loading: false }\n }\n }, [error, loading, result, tokenId, valid])\n}\n","import { useSingleCallResult } from 'state/multicall/hooks'\nimport { useEffect, useState } from 'react'\nimport { useV3NFTPositionManagerContract } from './useContract'\nimport { BigNumber } from '@ethersproject/bignumber'\nimport { Pool } from '@uniswap/v3-sdk'\nimport { CurrencyAmount, Currency } from '@uniswap/sdk-core'\nimport { useBlockNumber } from 'state/application/hooks'\nimport { unwrappedToken } from 'utils/unwrappedToken'\n\nconst MAX_UINT128 = BigNumber.from(2).pow(128).sub(1)\n\n// compute current + counterfactual fees for a v3 position\nexport function useV3PositionFees(\n pool?: Pool,\n tokenId?: BigNumber,\n asWETH = false\n): [CurrencyAmount, CurrencyAmount] | [undefined, undefined] {\n const positionManager = useV3NFTPositionManagerContract(false)\n const owner: string | undefined = useSingleCallResult(tokenId ? positionManager : null, 'ownerOf', [tokenId])\n .result?.[0]\n\n const tokenIdHexString = tokenId?.toHexString()\n const latestBlockNumber = useBlockNumber()\n\n // TODO find a way to get this into multicall\n // latestBlockNumber is included to ensure data stays up-to-date every block\n const [amounts, setAmounts] = useState<[BigNumber, BigNumber]>()\n useEffect(() => {\n let stale = false\n\n if (positionManager && tokenIdHexString && owner && typeof latestBlockNumber === 'number') {\n positionManager.callStatic\n .collect(\n {\n tokenId: tokenIdHexString,\n recipient: owner, // some tokens might fail if transferred to address(0)\n amount0Max: MAX_UINT128,\n amount1Max: MAX_UINT128,\n },\n { from: owner } // need to simulate the call as the owner\n )\n .then((results) => {\n if (!stale) setAmounts([results.amount0, results.amount1])\n })\n }\n\n return () => {\n stale = true\n }\n }, [positionManager, tokenIdHexString, owner, latestBlockNumber])\n\n if (pool && amounts) {\n return [\n CurrencyAmount.fromRawAmount(!asWETH ? unwrappedToken(pool.token0) : pool.token0, amounts[0].toString()),\n CurrencyAmount.fromRawAmount(!asWETH ? unwrappedToken(pool.token1) : pool.token1, amounts[1].toString()),\n ]\n } else {\n return [undefined, undefined]\n }\n}\n","import { useCallback, useMemo, useRef, useState } from 'react'\nimport { NonfungiblePositionManager, Pool, Position } from '@uniswap/v3-sdk'\n\nimport { PoolState, usePool } from 'hooks/usePools'\nimport { useToken } from 'hooks/Tokens'\nimport { useV3PositionFromTokenId } from 'hooks/useV3Positions'\nimport { Link, RouteComponentProps } from 'react-router-dom'\nimport { unwrappedToken } from 'utils/unwrappedToken'\nimport { usePositionTokenURI } from '../../hooks/usePositionTokenURI'\nimport { calculateGasMargin } from '../../utils/calculateGasMargin'\nimport { getExplorerLink, ExplorerDataType } from '../../utils/getExplorerLink'\nimport { LoadingRows } from './styleds'\nimport styled from 'styled-components/macro'\nimport { AutoColumn } from 'components/Column'\nimport { RowBetween, RowFixed } from 'components/Row'\nimport DoubleCurrencyLogo from 'components/DoubleLogo'\nimport { ExternalLink, HideExtraSmall, TYPE } from 'theme'\nimport Badge from 'components/Badge'\nimport { ButtonConfirmed, ButtonPrimary, ButtonGray } from 'components/Button'\nimport { DarkCard, LightCard } from 'components/Card'\nimport CurrencyLogo from 'components/CurrencyLogo'\nimport { Trans } from '@lingui/macro'\nimport { currencyId } from 'utils/currencyId'\nimport { formatCurrencyAmount } from 'utils/formatCurrencyAmount'\nimport { useV3PositionFees } from 'hooks/useV3PositionFees'\nimport { BigNumber } from '@ethersproject/bignumber'\nimport { Token, Currency, CurrencyAmount, Percent, Fraction, Price } from '@uniswap/sdk-core'\nimport { useActiveWeb3React } from 'hooks/web3'\nimport { useV3NFTPositionManagerContract } from 'hooks/useContract'\nimport { useIsTransactionPending, useTransactionAdder } from 'state/transactions/hooks'\nimport ReactGA from 'react-ga'\nimport TransactionConfirmationModal, { ConfirmationModalContent } from 'components/TransactionConfirmationModal'\nimport { TransactionResponse } from '@ethersproject/providers'\nimport { Dots } from 'components/swap/styleds'\nimport { getPriceOrderingFromPositionForUI } from '../../components/PositionListItem'\nimport useTheme from '../../hooks/useTheme'\nimport RateToggle from '../../components/RateToggle'\nimport { useSingleCallResult } from 'state/multicall/hooks'\nimport RangeBadge from '../../components/Badge/RangeBadge'\nimport { SwitchLocaleLink } from '../../components/SwitchLocaleLink'\nimport useUSDCPrice from 'hooks/useUSDCPrice'\nimport Loader from 'components/Loader'\nimport Toggle from 'components/Toggle'\nimport { Bound } from 'state/mint/v3/actions'\nimport useIsTickAtLimit from 'hooks/useIsTickAtLimit'\nimport { formatTickPrice } from 'utils/formatTickPrice'\nimport { SupportedChainId } from 'constants/chains'\n\nconst PageWrapper = styled.div`\n min-width: 800px;\n max-width: 960px;\n\n ${({ theme }) => theme.mediaWidth.upToMedium`\n min-width: 680px;\n max-width: 680px;\n `};\n\n ${({ theme }) => theme.mediaWidth.upToSmall`\n min-width: 600px;\n max-width: 600px;\n `};\n\n @media only screen and (max-width: 620px) {\n min-width: 500px;\n max-width: 500px;\n }\n\n ${({ theme }) => theme.mediaWidth.upToExtraSmall`\n min-width: 340px;\n max-width: 340px;\n `};\n`\n\nconst BadgeText = styled.div`\n font-weight: 500;\n font-size: 14px;\n`\n\n// responsive text\n// disable the warning because we don't use the end prop, we just want to filter it out\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst Label = styled(({ end, ...props }) => )<{ end?: boolean }>`\n display: flex;\n font-size: 16px;\n justify-content: ${({ end }) => (end ? 'flex-end' : 'flex-start')};\n align-items: center;\n`\n\nconst ExtentsText = styled.span`\n color: ${({ theme }) => theme.text2};\n font-size: 14px;\n text-align: center;\n margin-right: 4px;\n font-weight: 500;\n`\n\nconst HoverText = styled(TYPE.main)`\n text-decoration: none;\n color: ${({ theme }) => theme.text3};\n :hover {\n color: ${({ theme }) => theme.text1};\n text-decoration: none;\n }\n`\n\nconst DoubleArrow = styled.span`\n color: ${({ theme }) => theme.text3};\n margin: 0 1rem;\n`\nconst ResponsiveRow = styled(RowBetween)`\n ${({ theme }) => theme.mediaWidth.upToSmall`\n flex-direction: column;\n align-items: flex-start;\n row-gap: 16px;\n width: 100%:\n `};\n`\n\nconst ResponsiveButtonPrimary = styled(ButtonPrimary)`\n border-radius: 12px;\n padding: 6px 8px;\n width: fit-content;\n ${({ theme }) => theme.mediaWidth.upToSmall`\n flex: 1 1 auto;\n width: 49%;\n `};\n`\n\nconst NFTGrid = styled.div`\n display: grid;\n grid-template: 'overlap';\n min-height: 400px;\n`\n\nconst NFTCanvas = styled.canvas`\n grid-area: overlap;\n`\n\nconst NFTImage = styled.img`\n grid-area: overlap;\n height: 400px;\n /* Ensures SVG appears on top of canvas. */\n z-index: 1;\n`\n\nfunction CurrentPriceCard({\n inverted,\n pool,\n currencyQuote,\n currencyBase,\n}: {\n inverted?: boolean\n pool?: Pool | null\n currencyQuote?: Currency\n currencyBase?: Currency\n}) {\n if (!pool || !currencyQuote || !currencyBase) {\n return null\n }\n\n return (\n \n \n \n Current price\n \n \n {(inverted ? pool.token1Price : pool.token0Price).toSignificant(6)}{' '}\n \n \n \n {currencyQuote?.symbol} per {currencyBase?.symbol}\n \n \n \n \n )\n}\n\nfunction LinkedCurrency({ chainId, currency }: { chainId?: number; currency?: Currency }) {\n const address = (currency as Token)?.address\n\n if (typeof chainId === 'number' && address) {\n return (\n \n \n \n {currency?.symbol} ↗\n \n \n )\n }\n\n return (\n \n \n {currency?.symbol}\n \n )\n}\n\nfunction getRatio(\n lower: Price,\n current: Price,\n upper: Price\n) {\n try {\n if (!current.greaterThan(lower)) {\n return 100\n } else if (!current.lessThan(upper)) {\n return 0\n }\n\n const a = Number.parseFloat(lower.toSignificant(15))\n const b = Number.parseFloat(upper.toSignificant(15))\n const c = Number.parseFloat(current.toSignificant(15))\n\n const ratio = Math.floor((1 / ((Math.sqrt(a * b) - Math.sqrt(b * c)) / (c - Math.sqrt(b * c)) + 1)) * 100)\n\n if (ratio < 0 || ratio > 100) {\n throw Error('Out of range')\n }\n\n return ratio\n } catch {\n return undefined\n }\n}\n\n// snapshots a src img into a canvas\nfunction getSnapshot(src: HTMLImageElement, canvas: HTMLCanvasElement, targetHeight: number) {\n const context = canvas.getContext('2d')\n\n if (context) {\n let { width, height } = src\n\n // src may be hidden and not have the target dimensions\n const ratio = width / height\n height = targetHeight\n width = Math.round(ratio * targetHeight)\n\n // Ensure crispness at high DPIs\n canvas.width = width * devicePixelRatio\n canvas.height = height * devicePixelRatio\n canvas.style.width = width + 'px'\n canvas.style.height = height + 'px'\n context.scale(devicePixelRatio, devicePixelRatio)\n\n context.clearRect(0, 0, width, height)\n context.drawImage(src, 0, 0, width, height)\n }\n}\n\nfunction NFT({ image, height: targetHeight }: { image: string; height: number }) {\n const [animate, setAnimate] = useState(false)\n\n const canvasRef = useRef(null)\n const imageRef = useRef(null)\n\n return (\n {\n setAnimate(true)\n }}\n onMouseLeave={() => {\n // snapshot the current frame so the transition to the canvas is smooth\n if (imageRef.current && canvasRef.current) {\n getSnapshot(imageRef.current, canvasRef.current, targetHeight)\n }\n setAnimate(false)\n }}\n >\n \n