├── .env.production
├── .eslintrc.json
├── .gitattributes
├── .gitignore
├── .prettierrc
├── .yarnrc
├── LICENSE
├── README.md
├── config
├── env.js
├── getHttpsConfig.js
├── jest
│ ├── cssTransform.js
│ └── fileTransform.js
├── modules.js
├── paths.js
├── pnpTs.js
├── webpack.config.js
└── webpackDevServer.config.js
├── cypress.json
├── cypress
├── integration
│ ├── add-liquidity.test.ts
│ ├── landing.test.ts
│ ├── lists.test.ts
│ ├── migrate-v1.test.ts
│ ├── pool.test.ts
│ ├── remove-liquidity.test.ts
│ ├── send.test.ts
│ ├── swap.test.ts
│ └── token-warning.ts
├── support
│ ├── commands.d.ts
│ ├── commands.js
│ └── index.js
└── tsconfig.json
├── npminstall-debug.log
├── package.json
├── public
├── 451.html
├── favicon.ico
├── fonts
│ ├── Manrope1.woff2
│ ├── Manrope2.woff2
│ ├── Manrope3.woff2
│ ├── Manrope4.woff2
│ └── fonts.css
├── images
│ ├── 192x192_App_Icon.png
│ └── 512x512_App_Icon.png
├── index.html
├── locales
│ ├── en.json
│ └── zh-CN.json
├── logo.png
├── lucid.js
└── manifest.json
├── scripts
├── build.js
├── start.js
└── test.js
├── src
├── assets
│ ├── images
│ │ ├── BNB.svg
│ │ ├── BitKeep.jpg
│ │ ├── BitKeep.png
│ │ ├── BitKeep.svg
│ │ ├── Coin98.png
│ │ ├── GnosisSafe.svg
│ │ ├── HT.png
│ │ ├── OKT.png
│ │ ├── OKX.png
│ │ ├── TERRA.png
│ │ ├── TPT.jpg
│ │ ├── TWT.png
│ │ ├── XDEFI.png
│ │ ├── arrow-down-blue.svg
│ │ ├── arrow-down-grey.svg
│ │ ├── arrow-right-white.png
│ │ ├── arrow-right.svg
│ │ ├── blue-loader.svg
│ │ ├── circle-grey.svg
│ │ ├── circle.svg
│ │ ├── clover.png
│ │ ├── clv.png
│ │ ├── coin
│ │ │ ├── any
│ │ │ │ ├── ANY.svg
│ │ │ │ ├── anyDAI.png
│ │ │ │ ├── anyDOPE.png
│ │ │ │ ├── anyETH.svg
│ │ │ │ ├── anyHGET.png
│ │ │ │ ├── anyHYVE.png
│ │ │ │ ├── anyMIM.png
│ │ │ │ ├── anyUSDC.png
│ │ │ │ ├── anyXDEX.png
│ │ │ │ └── anysSPELL.png
│ │ │ └── source
│ │ │ │ ├── ADA.png
│ │ │ │ ├── ALGO.png
│ │ │ │ ├── ANY.svg
│ │ │ │ ├── APT.png
│ │ │ │ ├── ARB.png
│ │ │ │ ├── ARBITRUM.png
│ │ │ │ ├── ASTR.png
│ │ │ │ ├── AURORA.png
│ │ │ │ ├── AVAX.png
│ │ │ │ ├── BAS.svg
│ │ │ │ ├── BASEGOERLI.svg
│ │ │ │ ├── BCH.svg
│ │ │ │ ├── BIT.jpg
│ │ │ │ ├── BLOCK.png
│ │ │ │ ├── BNB.svg
│ │ │ │ ├── BOBABEAM.svg
│ │ │ │ ├── BRISE.png
│ │ │ │ ├── BTC.png
│ │ │ │ ├── BTT.png
│ │ │ │ ├── BitKeep.svg
│ │ │ │ ├── CANTO.png
│ │ │ │ ├── CELO.png
│ │ │ │ ├── CFX.png
│ │ │ │ ├── CKB.png
│ │ │ │ ├── CLV.svg
│ │ │ │ ├── CMP.png
│ │ │ │ ├── COLX.png
│ │ │ │ ├── CORE.svg
│ │ │ │ ├── CRAB.png
│ │ │ │ ├── CRO.png
│ │ │ │ ├── CUBE.png
│ │ │ │ ├── DAI.png
│ │ │ │ ├── DATE.svg
│ │ │ │ ├── DCORE.svg
│ │ │ │ ├── DEP.png
│ │ │ │ ├── DND.png
│ │ │ │ ├── DOPE.png
│ │ │ │ ├── DXT.png
│ │ │ │ ├── EKTA.png
│ │ │ │ ├── ETC.png
│ │ │ │ ├── ETH.svg
│ │ │ │ ├── ETHW.png
│ │ │ │ ├── EVMOS.png
│ │ │ │ ├── FANTOMANIMALS.png
│ │ │ │ ├── FITFI.png
│ │ │ │ ├── FLOW.png
│ │ │ │ ├── FRA.jpg
│ │ │ │ ├── FSN.svg
│ │ │ │ ├── FTM.png
│ │ │ │ ├── FUSE.png
│ │ │ │ ├── GLMR.png
│ │ │ │ ├── GNO.png
│ │ │ │ ├── GT.png
│ │ │ │ ├── HGET.png
│ │ │ │ ├── HOO.png
│ │ │ │ ├── HPB.png
│ │ │ │ ├── HT.png
│ │ │ │ ├── HYVE.png
│ │ │ │ ├── IOTA.png
│ │ │ │ ├── IOTX.png
│ │ │ │ ├── JEWEL.png
│ │ │ │ ├── KAI.png
│ │ │ │ ├── KAVA.png
│ │ │ │ ├── KCC.svg
│ │ │ │ ├── KCS.svg
│ │ │ │ ├── KEK.png
│ │ │ │ ├── KLAY.png
│ │ │ │ ├── LTC.png
│ │ │ │ ├── LUNA.png
│ │ │ │ ├── MATIC.png
│ │ │ │ ├── METIS.png
│ │ │ │ ├── MIM.png
│ │ │ │ ├── MINT.png
│ │ │ │ ├── MINTME.png
│ │ │ │ ├── MOVR.png
│ │ │ │ ├── MULTI.png
│ │ │ │ ├── NAHMII3.png
│ │ │ │ ├── NAS.png
│ │ │ │ ├── NEAR.png
│ │ │ │ ├── NEON.png
│ │ │ │ ├── NOVA.png
│ │ │ │ ├── OETH.png
│ │ │ │ ├── OKT.png
│ │ │ │ ├── OMAX.png
│ │ │ │ ├── ONE.png
│ │ │ │ ├── ONT.png
│ │ │ │ ├── ONUS.png
│ │ │ │ ├── OPTIMISM.png
│ │ │ │ ├── PFSC.svg
│ │ │ │ ├── PLQ.png
│ │ │ │ ├── PolygonzkEVM.png
│ │ │ │ ├── RBTC.png
│ │ │ │ ├── REDLC.png
│ │ │ │ ├── REEF.png
│ │ │ │ ├── REI.png
│ │ │ │ ├── RON.png
│ │ │ │ ├── ROSE.png
│ │ │ │ ├── RPG.png
│ │ │ │ ├── SAMA.png
│ │ │ │ ├── SDN.png
│ │ │ │ ├── SEI.png
│ │ │ │ ├── SHM.jpg
│ │ │ │ ├── SMR.png
│ │ │ │ ├── SOL.png
│ │ │ │ ├── SYS.png
│ │ │ │ ├── TERRA.png
│ │ │ │ ├── TLOS.png
│ │ │ │ ├── TOMO.png
│ │ │ │ ├── TRO.png
│ │ │ │ ├── TRX.png
│ │ │ │ ├── TST.png
│ │ │ │ ├── TT.png
│ │ │ │ ├── USDC.png
│ │ │ │ ├── USDT.png
│ │ │ │ ├── UST.png
│ │ │ │ ├── VLX.png
│ │ │ │ ├── WDOGE.svg
│ │ │ │ ├── WEMIX.png
│ │ │ │ ├── WETH.svg
│ │ │ │ ├── XANA.png
│ │ │ │ ├── XDEX.png
│ │ │ │ ├── XETA.png
│ │ │ │ ├── XLM.png
│ │ │ │ ├── XRP.png
│ │ │ │ ├── ZBC.png
│ │ │ │ ├── ZKR.svg
│ │ │ │ ├── milkADA.svg
│ │ │ │ ├── sSPELL.png
│ │ │ │ ├── scroll.png
│ │ │ │ ├── xDAI.png
│ │ │ │ └── zkSync.png
│ │ ├── coinbaseWalletIcon.svg
│ │ ├── dropdown-blue.svg
│ │ ├── dropdown.svg
│ │ ├── dropup-blue.svg
│ │ ├── ethereum-logo.png
│ │ ├── fortmaticIcon.png
│ │ ├── icon
│ │ │ ├── Next.svg
│ │ │ ├── Previous.svg
│ │ │ ├── add-2-black.svg
│ │ │ ├── add-2-purpl.svg
│ │ │ ├── add-2.svg
│ │ │ ├── add-fff.svg
│ │ │ ├── add-white.svg
│ │ │ ├── add.svg
│ │ │ ├── address.svg
│ │ │ ├── any-illustration.svg
│ │ │ ├── any-purpl.svg
│ │ │ ├── any.svg
│ │ │ ├── anyIcon.svg
│ │ │ ├── application-purpl.svg
│ │ │ ├── application.svg
│ │ │ ├── arrowDown.svg
│ │ │ ├── arrowRighr-purple.svg
│ │ │ ├── arrowRight.svg
│ │ │ ├── arrowTopRight.png
│ │ │ ├── arrowTopRight.svg
│ │ │ ├── bridge-gray.svg
│ │ │ ├── bridge-purpl.svg
│ │ │ ├── bridge-white-btn.svg
│ │ │ ├── bridge-white.svg
│ │ │ ├── bridge.svg
│ │ │ ├── bulb.svg
│ │ │ ├── check.svg
│ │ │ ├── code-white.svg
│ │ │ ├── code.svg
│ │ │ ├── coingecko-white.png
│ │ │ ├── coingecko.png
│ │ │ ├── coinmarketcap-white.png
│ │ │ ├── coinmarketcap.png
│ │ │ ├── create-exchange-purpl.svg
│ │ │ ├── create-exchange-white.svg
│ │ │ ├── create-exchange.svg
│ │ │ ├── day.svg
│ │ │ ├── deposit-purple.svg
│ │ │ ├── deposit.svg
│ │ │ ├── documents-purpl.svg
│ │ │ ├── documents.svg
│ │ │ ├── done.svg
│ │ │ ├── edit.svg
│ │ │ ├── explorer-purpl.png
│ │ │ ├── explorer.png
│ │ │ ├── explorer.svg
│ │ │ ├── github-white.png
│ │ │ ├── github.png
│ │ │ ├── graph-up.svg
│ │ │ ├── inventory.svg
│ │ │ ├── markets-purpl.svg
│ │ │ ├── markets.svg
│ │ │ ├── medium-white.svg
│ │ │ ├── medium.svg
│ │ │ ├── mint-black.svg
│ │ │ ├── mint.svg
│ │ │ ├── network-purpl.svg
│ │ │ ├── network-white.svg
│ │ │ ├── network.svg
│ │ │ ├── night.svg
│ │ │ ├── no-coin.svg
│ │ │ ├── paste.svg
│ │ │ ├── path.svg
│ │ │ ├── pool-purpl.svg
│ │ │ ├── pool.svg
│ │ │ ├── remove-black.svg
│ │ │ ├── remove-purpl.svg
│ │ │ ├── remove-white.svg
│ │ │ ├── remove.svg
│ │ │ ├── revert.svg
│ │ │ ├── router.svg
│ │ │ ├── schedule.svg
│ │ │ ├── search.svg
│ │ │ ├── send-purpl.svg
│ │ │ ├── send-white.svg
│ │ │ ├── send.svg
│ │ │ ├── slippage.svg
│ │ │ ├── swap-purpl.svg
│ │ │ ├── swap-purple.svg
│ │ │ ├── swap-white.svg
│ │ │ ├── swap.svg
│ │ │ ├── telegram-white.svg
│ │ │ ├── telegram.svg
│ │ │ ├── twitter-white.svg
│ │ │ ├── twitter.svg
│ │ │ ├── unlock.svg
│ │ │ ├── unlockBlack.svg
│ │ │ ├── wallet.svg
│ │ │ ├── warning.svg
│ │ │ ├── week.svg
│ │ │ ├── withdraw-purple.svg
│ │ │ └── withdraw.svg
│ │ ├── link.svg
│ │ ├── magnifying-glass.svg
│ │ ├── menu.svg
│ │ ├── metamask.png
│ │ ├── metamask.svg
│ │ ├── plus-blue.svg
│ │ ├── plus-grey.svg
│ │ ├── portisIcon.png
│ │ ├── question-mark.svg
│ │ ├── question.svg
│ │ ├── spinner.svg
│ │ ├── tally.png
│ │ ├── trustWallet.png
│ │ ├── walletConnectIcon.svg
│ │ └── x.svg
│ └── svg
│ │ ├── QR.svg
│ │ ├── active
│ │ ├── logo.png
│ │ ├── logo_color.png
│ │ └── logo_white.png
│ │ ├── lightcircle.svg
│ │ ├── logo.png
│ │ ├── logo.svg
│ │ ├── logo_color.png
│ │ ├── logo_white.png
│ │ └── logo_white.svg
├── components
│ ├── AccountDetails
│ │ ├── Copy.tsx
│ │ ├── NoWalletTxList.tsx
│ │ ├── Transaction.tsx
│ │ └── index.tsx
│ ├── AddressInputPanel
│ │ └── index.tsx
│ ├── Button
│ │ └── index.tsx
│ ├── Card
│ │ └── index.tsx
│ ├── Column
│ │ └── index.tsx
│ ├── CrossChainPanel
│ │ ├── hooks.ts
│ │ ├── reminder.tsx
│ │ └── selectChainID.tsx
│ ├── CrossChainPanelV2
│ │ ├── CrossChainButton.tsx
│ │ ├── CrossChainTip.tsx
│ │ ├── confirmModal.tsx
│ │ ├── crossChainBTC.tsx
│ │ ├── crossChainEVM.tsx
│ │ ├── crossChainNonEVM.tsx
│ │ ├── errorTip.tsx
│ │ ├── hooks.ts
│ │ ├── index.tsx
│ │ ├── reminder.tsx
│ │ ├── routerList.tsx
│ │ ├── selectChainID.tsx
│ │ ├── txnsDtilsModal.tsx
│ │ ├── txnsErrorTipModal.tsx
│ │ └── txnsListModal.tsx
│ ├── CrossChainTitle
│ │ └── index.tsx
│ ├── CurrencySelect
│ │ ├── CommonBases.tsx
│ │ ├── CurrencyList.tsx
│ │ ├── searchModal.tsx
│ │ ├── selectCurrency.tsx
│ │ └── styleds.tsx
│ ├── Farming
│ │ ├── common.ts
│ │ └── index.tsx
│ ├── GasSwap
│ │ ├── chainlist.ts
│ │ ├── crossChainEVM.tsx
│ │ ├── index.tsx
│ │ └── styleds.tsx
│ ├── Header
│ │ ├── NavList.tsx
│ │ ├── NavListTop.tsx
│ │ ├── Polling.tsx
│ │ ├── SelectNetwork.tsx
│ │ ├── URLWarning.tsx
│ │ ├── index.tsx
│ │ └── nav.js
│ ├── Identicon
│ │ └── index.tsx
│ ├── Lazyload
│ │ ├── LazyImage.tsx
│ │ ├── LazyList.tsx
│ │ ├── Lazyload.tsx
│ │ ├── LazyloadService.ts
│ │ └── Loading.tsx
│ ├── LiquidityPool
│ │ └── index.tsx
│ ├── ListLogo
│ │ └── index.tsx
│ ├── Loader
│ │ └── index.tsx
│ ├── Logo
│ │ └── index.tsx
│ ├── Modal
│ │ ├── ModalContent.tsx
│ │ └── index.tsx
│ ├── ModalViews
│ │ └── index.tsx
│ ├── NonApprove
│ │ ├── empty.json
│ │ ├── hooks.ts
│ │ ├── index.tsx
│ │ └── queryIsNeedNonApprove.tsx
│ ├── NumericalInput
│ │ └── index.tsx
│ ├── Popover
│ │ └── index.tsx
│ ├── Popups
│ │ ├── ListUpdatePopup.tsx
│ │ ├── PopupItem.tsx
│ │ ├── TransactionPopup.tsx
│ │ └── index.tsx
│ ├── QRcode
│ │ └── index.tsx
│ ├── QuestionHelper
│ │ └── index.tsx
│ ├── Row
│ │ └── index.tsx
│ ├── SearchModal
│ │ ├── SortButton.tsx
│ │ ├── filtering.ts
│ │ ├── sorting.ts
│ │ └── styleds.tsx
│ ├── Settings
│ │ ├── ModeSetting.tsx
│ │ ├── index.tsx
│ │ └── interfaceSetting.tsx
│ ├── SwapIcon
│ │ └── index.tsx
│ ├── Title
│ │ └── index.tsx
│ ├── Toggle
│ │ └── index.tsx
│ ├── TokenLogo
│ │ └── index.tsx
│ ├── TokenWarningModal
│ │ └── index.tsx
│ ├── Tooltip
│ │ └── index.tsx
│ ├── Transaction
│ │ ├── details.tsx
│ │ ├── txModal.tsx
│ │ └── txnsProgress.tsx
│ ├── TransactionSettings
│ │ └── index.tsx
│ ├── WalletModal
│ │ ├── Option.tsx
│ │ ├── PendingView.tsx
│ │ └── index.tsx
│ ├── WarningTip
│ │ └── index.tsx
│ ├── Web3ReactManager
│ │ └── index.tsx
│ ├── Web3Status
│ │ └── index.tsx
│ └── swap
│ │ └── styleds.tsx
├── config
│ ├── chainConfig
│ │ ├── apt.js
│ │ ├── arbitrum.js
│ │ ├── astar.js
│ │ ├── atom.js
│ │ ├── aurora.js
│ │ ├── avax.js
│ │ ├── bas.js
│ │ ├── bch.js
│ │ ├── bit.ts
│ │ ├── block.js
│ │ ├── bobabeam.js
│ │ ├── brise.ts
│ │ ├── bsc.js
│ │ ├── btc.js
│ │ ├── btt.js
│ │ ├── canto.ts
│ │ ├── cardano.js
│ │ ├── celo.js
│ │ ├── cfx.js
│ │ ├── chainId.ts
│ │ ├── ckb.ts
│ │ ├── clv.js
│ │ ├── cmp.js
│ │ ├── colx.js
│ │ ├── crab.js
│ │ ├── cro.js
│ │ ├── cube.js
│ │ ├── dnd.ts
│ │ ├── doge.js
│ │ ├── dxt.ts
│ │ ├── ekta.ts
│ │ ├── etc.js
│ │ ├── eth.js
│ │ ├── ethw.ts
│ │ ├── evmos.js
│ │ ├── fitfi.js
│ │ ├── flow.js
│ │ ├── fra.ts
│ │ ├── fsn.js
│ │ ├── ftm.js
│ │ ├── fuse.js
│ │ ├── goerli.js
│ │ ├── gt.js
│ │ ├── hoo.js
│ │ ├── hpb.ts
│ │ ├── ht.ts
│ │ ├── index.ts
│ │ ├── intain.js
│ │ ├── iota.js
│ │ ├── iotex.js
│ │ ├── jewel.js
│ │ ├── kai.js
│ │ ├── kava.js
│ │ ├── kcc.js
│ │ ├── kek.ts
│ │ ├── klay.js
│ │ ├── ltc.js
│ │ ├── matic.js
│ │ ├── methods.js
│ │ ├── metis.js
│ │ ├── milkada.js
│ │ ├── milkalgo.ts
│ │ ├── mint.ts
│ │ ├── mintme.js
│ │ ├── moonbeam.js
│ │ ├── movr.js
│ │ ├── nahmii3.ts
│ │ ├── nas.js
│ │ ├── near.js
│ │ ├── neon.ts
│ │ ├── nova.js
│ │ ├── oeth.js
│ │ ├── okt.js
│ │ ├── omax.ts
│ │ ├── omgx.js
│ │ ├── one.js
│ │ ├── ont.js
│ │ ├── onus.ts
│ │ ├── optimism.js
│ │ ├── pft.js
│ │ ├── plq.ts
│ │ ├── polygonzkevm.ts
│ │ ├── rbtc.js
│ │ ├── redlc.ts
│ │ ├── reef.ts
│ │ ├── rei.js
│ │ ├── ron.js
│ │ ├── rose.js
│ │ ├── rpg.js
│ │ ├── sama.ts
│ │ ├── scroll.ts
│ │ ├── sdn.js
│ │ ├── shm.ts
│ │ ├── smr.ts
│ │ ├── sol.js
│ │ ├── sys.js
│ │ ├── terra.js
│ │ ├── tlos.js
│ │ ├── tomo.js
│ │ ├── trx.js
│ │ ├── tst.ts
│ │ ├── tt.js
│ │ ├── twemix.ts
│ │ ├── vlx.js
│ │ ├── xana.ts
│ │ ├── xdai.js
│ │ ├── xlm.js
│ │ ├── xrp.js
│ │ ├── zbc.ts
│ │ └── zksync.ts
│ ├── constant.ts
│ ├── farmlist.ts
│ ├── index.ts
│ ├── status.ts
│ └── tools
│ │ ├── getUrlParams.ts
│ │ └── methods.ts
├── connectors
│ ├── NetworkConnector.ts
│ ├── bitkeep
│ │ └── index.ts
│ ├── gnosis-safe
│ │ ├── hooks.ts
│ │ └── index.ts
│ ├── index.ts
│ ├── tally
│ │ └── index.ts
│ └── xdefi
│ │ └── index.ts
├── constants
│ ├── abis
│ │ ├── anycall.json
│ │ ├── bridge
│ │ │ ├── RouterAction.json
│ │ │ ├── RouterConfig.json
│ │ │ ├── RouterSwapAction.json
│ │ │ ├── RouterSwapActionV2.json
│ │ │ ├── anycallNFT721.json
│ │ │ ├── erc1155.json
│ │ │ ├── erc1155.ts
│ │ │ ├── erc721.json
│ │ │ ├── erc721.ts
│ │ │ ├── nft.json
│ │ │ ├── swapBTCABI.json
│ │ │ └── swapETHABI.json
│ │ ├── client.json
│ │ ├── ens-public-resolver.json
│ │ ├── ens-registrar.json
│ │ ├── erc20.json
│ │ ├── erc20.ts
│ │ ├── erc20_bytes32.json
│ │ ├── farm
│ │ │ └── MasterChef.json
│ │ ├── migrator.json
│ │ ├── migrator.ts
│ │ ├── swapMULTIABI.json
│ │ ├── swapMULTIABI.ts
│ │ ├── v2_factory.json
│ │ ├── veMULTI.json
│ │ ├── veMULTI.ts
│ │ ├── veMULTIReward.json
│ │ ├── veMULTIReward.ts
│ │ ├── veshare.json
│ │ ├── veshare.ts
│ │ └── weth.json
│ ├── index.ts
│ ├── lists.ts
│ ├── multicall
│ │ ├── abi.json
│ │ └── index.ts
│ └── v1
│ │ ├── index.ts
│ │ ├── v1_exchange.json
│ │ └── v1_factory.json
├── data
│ └── Allowances.ts
├── hooks
│ ├── Tokens.ts
│ ├── index.ts
│ ├── useActiveReact.ts
│ ├── useAllBalances.ts
│ ├── useApproveCallback.ts
│ ├── useBridgeCallback.ts
│ ├── useContract.ts
│ ├── useCopyClipboard.ts
│ ├── useDebounce.ts
│ ├── useENS.ts
│ ├── useENSAddress.ts
│ ├── useENSContentHash.ts
│ ├── useENSName.ts
│ ├── useFetchListCallback.ts
│ ├── useHttpLocations.ts
│ ├── useInterval.ts
│ ├── useIsWindowVisible.ts
│ ├── useNFTApproveCallback.ts
│ ├── useNFTCallback.ts
│ ├── useOnClickOutside.tsx
│ ├── useParsedQueryString.ts
│ ├── usePools
│ │ ├── evm.ts
│ │ └── index.ts
│ ├── usePrevious.ts
│ ├── useTerraBalance.ts
│ ├── useToggledVersion.ts
│ ├── useWallet.ts
│ └── useWrapCallback.ts
├── i18n.ts
├── index.tsx
├── nonevm
│ ├── allowances
│ │ └── index.ts
│ ├── apt
│ │ ├── actions.ts
│ │ ├── index.ts
│ │ ├── reducer.ts
│ │ └── updater.ts
│ ├── atom
│ │ ├── actions.ts
│ │ ├── index.ts
│ │ ├── reducer.ts
│ │ ├── updater.ts
│ │ └── walletConfig.ts
│ ├── btc
│ │ ├── actions.ts
│ │ ├── index.ts
│ │ ├── reducer.ts
│ │ └── updater.ts
│ ├── cardano
│ │ ├── actions.ts
│ │ ├── index.ts
│ │ ├── reducer.ts
│ │ └── updater.ts
│ ├── flow
│ │ ├── actions.ts
│ │ ├── index.ts
│ │ ├── reducer.ts
│ │ └── updater.ts
│ ├── getHash
│ │ └── index.ts
│ ├── hooks
│ │ ├── actions.ts
│ │ ├── index.ts
│ │ └── reducer.ts
│ ├── index.ts
│ ├── nas
│ │ ├── index.ts
│ │ └── updater.ts
│ ├── near
│ │ ├── WalletSelectorContext.tsx
│ │ ├── config.ts
│ │ └── index.ts
│ ├── pools
│ │ └── index.ts
│ ├── reef
│ │ ├── abi.json
│ │ ├── actions.ts
│ │ ├── index.ts
│ │ ├── reducer.ts
│ │ └── updater.ts
│ ├── solana
│ │ ├── actions.ts
│ │ ├── index.ts
│ │ ├── reducer.ts
│ │ ├── router.json
│ │ └── updater.ts
│ ├── stellar
│ │ ├── actions.ts
│ │ ├── index.ts
│ │ └── reducer.ts
│ ├── temp
│ │ ├── actions.ts
│ │ ├── index.ts
│ │ ├── reducer.ts
│ │ └── updater.ts
│ ├── terra
│ │ ├── currency.ts
│ │ └── index.ts
│ ├── trx
│ │ ├── abi copy.json
│ │ ├── abi.json
│ │ ├── actions.ts
│ │ ├── crosschainABI.ts
│ │ ├── index.ts
│ │ ├── reducer.ts
│ │ └── updater.ts
│ ├── updater.tsx
│ └── xrp
│ │ └── index.ts
├── pages
│ ├── App.tsx
│ ├── AppBody.tsx
│ ├── AppContainer.tsx
│ ├── CroseNFT
│ │ ├── index.tsx
│ │ ├── selectChainId.tsx
│ │ └── selectCurrency.tsx
│ ├── CrossChain
│ │ └── reminder.tsx
│ ├── Dashboard
│ │ ├── index.tsx
│ │ └── styleds.ts
│ ├── Farms
│ │ ├── ANYFarming.tsx
│ │ ├── FarmsList.tsx
│ │ └── NoanyFarming.tsx
│ ├── History
│ │ ├── details.tsx
│ │ ├── hooks.ts
│ │ └── index.tsx
│ ├── MergeCrossChainV2
│ │ └── index.tsx
│ ├── Pools
│ │ ├── index.tsx
│ │ ├── morePool.tsx
│ │ ├── poolList.tsx
│ │ └── poolTip.tsx
│ ├── SwapMULTI
│ │ └── index.tsx
│ ├── Test
│ │ └── index.tsx
│ ├── Vest
│ │ ├── create.tsx
│ │ ├── data.ts
│ │ ├── hooks.ts
│ │ ├── index.tsx
│ │ ├── lockAmount.tsx
│ │ ├── lockDuration.tsx
│ │ ├── manger.tsx
│ │ ├── style.ts
│ │ ├── veshare.ts
│ │ └── vestingInfo.tsx
│ └── styled.ts
├── react-app-env.d.ts
├── state
│ ├── application
│ │ ├── actions.ts
│ │ ├── hooks.ts
│ │ ├── reducer.ts
│ │ └── updater.ts
│ ├── burn
│ │ ├── actions.ts
│ │ ├── hooks.ts
│ │ └── reducer.ts
│ ├── global
│ │ └── actions.ts
│ ├── index.ts
│ ├── lists
│ │ ├── actions.ts
│ │ ├── hooks.ts
│ │ ├── reducer.test.ts
│ │ ├── reducer.ts
│ │ └── updater.ts
│ ├── multicall
│ │ ├── actions.test.ts
│ │ ├── actions.ts
│ │ ├── hooks.ts
│ │ ├── reducer.test.ts
│ │ ├── reducer.ts
│ │ ├── updater.test.ts
│ │ └── updater.tsx
│ ├── nft
│ │ ├── actions.ts
│ │ ├── hooks.ts
│ │ └── reducer.ts
│ ├── pools
│ │ ├── actions.ts
│ │ ├── hooks.ts
│ │ └── reducer.ts
│ ├── rpc
│ │ ├── actions.ts
│ │ ├── hooks.ts
│ │ ├── reducer.ts
│ │ └── updater.tsx
│ ├── swap
│ │ ├── actions.ts
│ │ ├── hooks.test.ts
│ │ ├── hooks.ts
│ │ ├── reducer.test.ts
│ │ └── reducer.ts
│ ├── transactions
│ │ ├── actions.ts
│ │ ├── hooks.tsx
│ │ ├── reducer.ts
│ │ ├── updater.test.ts
│ │ └── updater.tsx
│ ├── updaters.tsx
│ ├── user
│ │ ├── actions.ts
│ │ ├── hooks.tsx
│ │ ├── reducer.test.ts
│ │ ├── reducer.ts
│ │ └── updater.tsx
│ └── wallet
│ │ ├── actions.ts
│ │ ├── hooks.ts
│ │ ├── reducer.ts
│ │ └── updater.ts
├── theme
│ ├── DarkModeQueryParamReader.tsx
│ ├── components.tsx
│ ├── index.tsx
│ └── styled.d.ts
└── utils
│ ├── bridge
│ ├── getBalanceV2.ts
│ ├── register.ts
│ └── type.ts
│ ├── chunkArray.test.ts
│ ├── chunkArray.ts
│ ├── contenthashToUri.test.skip.ts
│ ├── contenthashToUri.ts
│ ├── formatBignumber
│ ├── fraction.ts
│ └── index.ts
│ ├── getLibrary.ts
│ ├── getNFTimage.ts
│ ├── index.test.ts
│ ├── index.ts
│ ├── indexedDB
│ ├── config.ts
│ ├── index.ts
│ └── tokenlist.ts
│ ├── isAddress
│ ├── BTC.ts
│ └── index.ts
│ ├── isZero.ts
│ ├── listVersionLabel.ts
│ ├── parseENSAddress.test.ts
│ ├── parseENSAddress.ts
│ ├── resolveENSContentHash.ts
│ ├── retry.test.ts
│ ├── retry.ts
│ ├── tools
│ ├── axios.ts
│ ├── getPrice.ts
│ ├── multicall.js
│ ├── tools.ts
│ ├── useBatchData.js
│ └── web3UtilsV2.js
│ ├── uriToHttp.test.ts
│ └── uriToHttp.ts
├── tsconfig.json
└── yarn.lock
/.env.production:
--------------------------------------------------------------------------------
1 | REACT_APP_CHAIN_ID="1"
2 | REACT_APP_NETWORK_URL="https://mainnet.infura.io/v3/099fc58e0de9451d80b18d7c74caa7c1"
3 | REACT_APP_PORTIS_ID="c0e2bf01-4b08-4fd5-ac7b-8e26b58cd236"
4 | REACT_APP_FORTMATIC_KEY="pk_live_F937DF033A1666BF"
5 | REACT_APP_GOOGLE_ANALYTICS_ID="UA-128182339-4"
6 |
--------------------------------------------------------------------------------
/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "parser": "@typescript-eslint/parser",
3 | "parserOptions": {
4 | "ecmaVersion": 2020,
5 | "sourceType": "module",
6 | "ecmaFeatures": {
7 | // Allows for the parsing of JSX
8 | "jsx": true
9 | }
10 | },
11 | "ignorePatterns": [
12 | "node_modules/**/*"
13 | ],
14 | "settings": {
15 | "react": {
16 | "version": "detect"
17 | }
18 | },
19 | "extends": [
20 | "plugin:react/recommended",
21 | "plugin:@typescript-eslint/recommended",
22 | "prettier/@typescript-eslint",
23 | "plugin:prettier/recommended"
24 | ],
25 | "rules": {
26 | "@typescript-eslint/explicit-function-return-type": "off",
27 | "prettier/prettier": "off",
28 | "@typescript-eslint/no-explicit-any": "off",
29 | "@typescript-eslint/no-var-requires": 0
30 | }
31 | }
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/ignore-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /node_modules-
6 |
7 | # testing
8 | /coverage
9 |
10 | # production
11 | /build
12 | /swap
13 | /anyswapv2
14 | /crossbridge
15 | /stable
16 | /anyswapExchange_test
17 | /arb
18 | /deploy
19 | /router
20 | /sushi
21 | /oec
22 | /l2
23 | /movr
24 | /app
25 | /multichain
26 | /conflux
27 | /test
28 | *.zip
29 |
30 | # misc
31 | .DS_Store
32 | .env
33 | .env.local
34 | .env copy
35 | .env.development.local
36 | .env.test.local
37 | .env.production.local
38 |
39 | /.netlify
40 |
41 | npm-debug.log*
42 | yarn-debug.log*
43 | yarn-error.log*
44 |
45 | notes.txt
46 | .idea/
47 |
48 | .vscode/
49 |
50 | package-lock.json
51 |
52 | cypress/videos
53 | cypress/screenshots
54 | cypress/fixtures/example.json
55 |
56 | *.zip
57 | /swap
58 | src/components/NonApprove/nonApproveList.json
59 | yarn.lock
60 | .yarn/install-state.gz
61 | .yarnrc.yml
62 | yarn.lock
63 | npminstall-debug.log
64 |
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "semi": false,
3 | "singleQuote": true,
4 | "printWidth": 120
5 | }
6 |
--------------------------------------------------------------------------------
/.yarnrc:
--------------------------------------------------------------------------------
1 | ignore-scripts true
2 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Multichain Crosschain
2 |
3 | ## Development
4 |
5 | ### Add Non Approve List
6 |
7 | - Create new file named `nonApproveList.json` in `src/components/NonApprove` folder
8 | - Manually populate with
9 | ```
10 | {}
11 | ```
12 | ### Configuring the environment
13 |
14 | - Copy env file to create a local env
15 |
16 | `cp .env.production .env.local `
17 |
18 | To have the interface default to a different network when a wallet is not connected:
19 |
20 | 1. Make a copy of `.env` named `.env.local`
21 | 2. Change `REACT_APP_NETWORK_ID` to `"{YOUR_NETWORK_ID}"`
22 | 3. Change `REACT_APP_NETWORK_URL` to e.g. `"https://{YOUR_NETWORK_ID}.infura.io/v3/{YOUR_INFURA_KEY}"`
23 |
24 | ### Install Dependencies
25 |
26 | ```bash
27 | yarn
28 | ```
29 |
30 | ### Run
31 |
32 | ```bash
33 | yarn start
34 | ```
35 |
36 |
--------------------------------------------------------------------------------
/config/jest/cssTransform.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | // This is a custom Jest transformer turning style imports into empty objects.
4 | // http://facebook.github.io/jest/docs/en/webpack.html
5 |
6 | module.exports = {
7 | process() {
8 | return 'module.exports = {};';
9 | },
10 | getCacheKey() {
11 | // The output is always the same.
12 | return 'cssTransform';
13 | },
14 | };
15 |
--------------------------------------------------------------------------------
/config/pnpTs.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | const { resolveModuleName } = require('ts-pnp');
4 |
5 | exports.resolveModuleName = (
6 | typescript,
7 | moduleName,
8 | containingFile,
9 | compilerOptions,
10 | resolutionHost
11 | ) => {
12 | return resolveModuleName(
13 | moduleName,
14 | containingFile,
15 | compilerOptions,
16 | resolutionHost,
17 | typescript.resolveModuleName
18 | );
19 | };
20 |
21 | exports.resolveTypeReferenceDirective = (
22 | typescript,
23 | moduleName,
24 | containingFile,
25 | compilerOptions,
26 | resolutionHost
27 | ) => {
28 | return resolveModuleName(
29 | moduleName,
30 | containingFile,
31 | compilerOptions,
32 | resolutionHost,
33 | typescript.resolveTypeReferenceDirective
34 | );
35 | };
36 |
--------------------------------------------------------------------------------
/cypress.json:
--------------------------------------------------------------------------------
1 | {
2 | "baseUrl": "http://localhost:3006",
3 | "pluginsFile": false,
4 | "fixturesFolder": false,
5 | "supportFile": "cypress/support/index.js",
6 | "video": false,
7 | "defaultCommandTimeout": 10000
8 | }
9 |
--------------------------------------------------------------------------------
/cypress/integration/landing.test.ts:
--------------------------------------------------------------------------------
1 | import { TEST_ADDRESS_NEVER_USE_SHORTENED } from '../support/commands'
2 |
3 | describe('Landing Page', () => {
4 | beforeEach(() => cy.visit('/'))
5 | it('loads swap page', () => {
6 | cy.get('#swap-page')
7 | })
8 |
9 | it('redirects to url /swap', () => {
10 | cy.url().should('include', '/swap')
11 | })
12 |
13 | it('allows navigation to pool', () => {
14 | cy.get('#pool-nav-link').click()
15 | cy.url().should('include', '/pool')
16 | })
17 |
18 | it('is connected', () => {
19 | cy.get('#web3-status-connected').click()
20 | cy.get('#web3-account-identifier-row').contains(TEST_ADDRESS_NEVER_USE_SHORTENED)
21 | })
22 | })
23 |
--------------------------------------------------------------------------------
/cypress/integration/lists.test.ts:
--------------------------------------------------------------------------------
1 | describe('Lists', () => {
2 | beforeEach(() => {
3 | cy.visit('/swap')
4 | })
5 |
6 | it('defaults to uniswap list', () => {
7 | cy.get('#swap-currency-output .open-currency-select-button').click()
8 | cy.get('#currency-search-selected-list-name').should('contain', 'Uniswap')
9 | })
10 |
11 | it('change list', () => {
12 | cy.get('#swap-currency-output .open-currency-select-button').click()
13 | cy.get('#currency-search-change-list-button').click()
14 | cy.get('#list-row-tokens-1inch-eth .select-button').click()
15 | cy.get('#currency-search-selected-list-name').should('contain', '1inch')
16 | cy.get('#currency-search-change-list-button').click()
17 | cy.get('#list-row-tokens-uniswap-eth .select-button').click()
18 | cy.get('#currency-search-selected-list-name').should('contain', 'Uniswap')
19 | })
20 | })
21 |
--------------------------------------------------------------------------------
/cypress/integration/migrate-v1.test.ts:
--------------------------------------------------------------------------------
1 | describe('Migrate V1 Liquidity', () => {
2 | describe('Remove V1 liquidity', () => {
3 | it('renders the correct page', () => {
4 | cy.visit('/remove/v1/0x93bB63aFe1E0180d0eF100D774B473034fd60C36')
5 | cy.get('#remove-v1-exchange').should('contain', 'MKR/ETH')
6 | })
7 | })
8 | })
9 |
--------------------------------------------------------------------------------
/cypress/integration/pool.test.ts:
--------------------------------------------------------------------------------
1 | describe('Pool', () => {
2 | beforeEach(() => cy.visit('/pool'))
3 | it('add liquidity links to /add/ETH', () => {
4 | cy.get('#join-pool-button').click()
5 | cy.url().should('contain', '/add/ETH')
6 | })
7 |
8 | it('import pool links to /import', () => {
9 | cy.get('#import-pool-link').click()
10 | cy.url().should('contain', '/find')
11 | })
12 | })
13 |
--------------------------------------------------------------------------------
/cypress/integration/send.test.ts:
--------------------------------------------------------------------------------
1 | describe('Send', () => {
2 | it('should redirect', () => {
3 | cy.visit('/send')
4 | cy.url().should('include', '/swap')
5 | })
6 |
7 | it('should redirect with url params', () => {
8 | cy.visit('/send?outputCurrency=ETH&recipient=bob.argent.xyz')
9 | cy.url().should('contain', '/swap?outputCurrency=ETH&recipient=bob.argent.xyz')
10 | })
11 | })
12 |
--------------------------------------------------------------------------------
/cypress/integration/token-warning.ts:
--------------------------------------------------------------------------------
1 | describe('Warning', () => {
2 | beforeEach(() => {
3 | cy.visit('/swap?outputCurrency=0x0a40f26d74274b7f22b28556a27b35d97ce08e0a')
4 | })
5 |
6 | it('Check that warning is displayed', () => {
7 | cy.get('.token-warning-container').should('be.visible')
8 | })
9 |
10 | it('Check that warning hides after button dismissal', () => {
11 | cy.get('.token-dismiss-button').should('be.disabled')
12 | cy.get('.understand-checkbox').click()
13 | cy.get('.token-dismiss-button').should('not.be.disabled')
14 | cy.get('.token-dismiss-button').click()
15 | cy.get('.token-warning-container').should('not.be.visible')
16 | })
17 | })
18 |
--------------------------------------------------------------------------------
/cypress/support/commands.d.ts:
--------------------------------------------------------------------------------
1 | export const TEST_ADDRESS_NEVER_USE: string
2 |
3 | export const TEST_ADDRESS_NEVER_USE_SHORTENED: string
4 |
5 | // declare namespace Cypress {
6 | // // eslint-disable-next-line @typescript-eslint/class-name-casing
7 | // interface cy {
8 | // additionalCommands(): void
9 | // }
10 | // }
11 |
--------------------------------------------------------------------------------
/cypress/support/index.js:
--------------------------------------------------------------------------------
1 | // ***********************************************************
2 | // This file is processed and loaded automatically before your test files.
3 | //
4 | // You can read more here:
5 | // https://on.cypress.io/configuration
6 | // ***********************************************************
7 |
8 | // Import commands.ts using ES2015 syntax:
9 | import './commands'
10 |
--------------------------------------------------------------------------------
/cypress/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "strict": true,
4 | "baseUrl": "../node_modules",
5 | "target": "es5",
6 | "lib": ["es5", "dom"],
7 | "types": ["cypress"]
8 | },
9 | "include": ["**/*.ts"]
10 | }
11 |
--------------------------------------------------------------------------------
/public/451.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Unavailable For Legal Reasons
6 |
7 |
8 | Unavailable For Legal Reasons
9 |
10 |
11 |
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/public/favicon.ico
--------------------------------------------------------------------------------
/public/fonts/Manrope1.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/public/fonts/Manrope1.woff2
--------------------------------------------------------------------------------
/public/fonts/Manrope2.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/public/fonts/Manrope2.woff2
--------------------------------------------------------------------------------
/public/fonts/Manrope3.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/public/fonts/Manrope3.woff2
--------------------------------------------------------------------------------
/public/fonts/Manrope4.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/public/fonts/Manrope4.woff2
--------------------------------------------------------------------------------
/public/fonts/fonts.css:
--------------------------------------------------------------------------------
1 | /* cyrillic */
2 | @font-face {
3 | font-family: 'Manrope';
4 | font-style: normal;
5 | font-weight: 400;
6 | src: url('./Manrope1.woff2') format('woff2');
7 | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
8 | }
9 | /* greek */
10 | @font-face {
11 | font-family: 'Manrope';
12 | font-style: normal;
13 | font-weight: 400;
14 | src: url('./Manrope2.woff2') format('woff2');
15 | unicode-range: U+0370-03FF;
16 | }
17 | /* latin-ext */
18 | @font-face {
19 | font-family: 'Manrope';
20 | font-style: normal;
21 | font-weight: 400;
22 | src: url('./Manrope3.woff2') format('woff2');
23 | unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
24 | }
25 | /* latin */
26 | @font-face {
27 | font-family: 'Manrope';
28 | font-style: normal;
29 | font-weight: 400;
30 | src: url('./Manrope4.woff2') format('woff2');
31 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
32 | }
--------------------------------------------------------------------------------
/public/images/192x192_App_Icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/public/images/192x192_App_Icon.png
--------------------------------------------------------------------------------
/public/images/512x512_App_Icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/public/images/512x512_App_Icon.png
--------------------------------------------------------------------------------
/public/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/public/logo.png
--------------------------------------------------------------------------------
/public/lucid.js:
--------------------------------------------------------------------------------
1 | import { Lucid, Blockfrost, Data } from "https://unpkg.com/lucid-cardano@0.9.4/web/mod.js"
2 | // https://github.com/spacebudz/lucid
3 | async function lucid() {
4 | // testnet
5 | // const lucid = await Lucid.new(
6 | // new Blockfrost("https://cardano-preview.blockfrost.io/api/v0", "preview9uMuq0VQk9n6lJkqGUWPo2t5PsRvqFfu"),
7 | // "Preview",
8 | // );
9 |
10 | const lucid = await Lucid.new(
11 | new Blockfrost("https://cardano-mainnet.blockfrost.io/api/v0/", "mainnet14x6BHJn5rIuSOwGZL8m70MzqPyA5XUV")
12 | );
13 | try {
14 | window.lucid = lucid;
15 | window.lucid.data = Data;
16 | if(localStorage.getItem("lucid") === "true") {
17 | const api = await window.cardano.eternl.enable();
18 | window.lucid.selectWallet(api);
19 | }
20 | } catch (error) {
21 | console.log(error)
22 | }
23 |
24 | }
25 | if(window.cardano && window.cardano.eternl) {
26 | lucid();
27 | }
28 |
--------------------------------------------------------------------------------
/src/assets/images/BNB.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/assets/images/BitKeep.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/BitKeep.jpg
--------------------------------------------------------------------------------
/src/assets/images/BitKeep.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/BitKeep.png
--------------------------------------------------------------------------------
/src/assets/images/BitKeep.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/src/assets/images/Coin98.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/Coin98.png
--------------------------------------------------------------------------------
/src/assets/images/GnosisSafe.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/assets/images/HT.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/HT.png
--------------------------------------------------------------------------------
/src/assets/images/OKT.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/OKT.png
--------------------------------------------------------------------------------
/src/assets/images/OKX.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/OKX.png
--------------------------------------------------------------------------------
/src/assets/images/TERRA.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/TERRA.png
--------------------------------------------------------------------------------
/src/assets/images/TPT.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/TPT.jpg
--------------------------------------------------------------------------------
/src/assets/images/TWT.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/TWT.png
--------------------------------------------------------------------------------
/src/assets/images/XDEFI.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/XDEFI.png
--------------------------------------------------------------------------------
/src/assets/images/arrow-down-blue.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/assets/images/arrow-down-grey.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/assets/images/arrow-right-white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/arrow-right-white.png
--------------------------------------------------------------------------------
/src/assets/images/arrow-right.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/assets/images/blue-loader.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/assets/images/circle-grey.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/assets/images/circle.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/assets/images/clover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/clover.png
--------------------------------------------------------------------------------
/src/assets/images/clv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/clv.png
--------------------------------------------------------------------------------
/src/assets/images/coin/any/ANY.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/coin/any/anyDAI.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/any/anyDAI.png
--------------------------------------------------------------------------------
/src/assets/images/coin/any/anyDOPE.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/any/anyDOPE.png
--------------------------------------------------------------------------------
/src/assets/images/coin/any/anyETH.svg:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/src/assets/images/coin/any/anyHGET.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/any/anyHGET.png
--------------------------------------------------------------------------------
/src/assets/images/coin/any/anyHYVE.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/any/anyHYVE.png
--------------------------------------------------------------------------------
/src/assets/images/coin/any/anyMIM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/any/anyMIM.png
--------------------------------------------------------------------------------
/src/assets/images/coin/any/anyUSDC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/any/anyUSDC.png
--------------------------------------------------------------------------------
/src/assets/images/coin/any/anyXDEX.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/any/anyXDEX.png
--------------------------------------------------------------------------------
/src/assets/images/coin/any/anysSPELL.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/any/anysSPELL.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/ADA.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/ADA.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/ALGO.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/ALGO.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/ANY.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/coin/source/APT.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/APT.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/ARB.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/ARB.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/ARBITRUM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/ARBITRUM.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/ASTR.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/ASTR.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/AURORA.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/AURORA.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/AVAX.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/AVAX.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/BAS.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/assets/images/coin/source/BIT.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/BIT.jpg
--------------------------------------------------------------------------------
/src/assets/images/coin/source/BLOCK.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/BLOCK.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/BNB.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/assets/images/coin/source/BRISE.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/BRISE.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/BTC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/BTC.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/BTT.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/BTT.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/BitKeep.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/src/assets/images/coin/source/CANTO.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/CANTO.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/CELO.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/CELO.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/CFX.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/CFX.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/CKB.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/CKB.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/CLV.svg:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/src/assets/images/coin/source/CMP.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/CMP.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/COLX.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/COLX.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/CORE.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/images/coin/source/CRAB.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/CRAB.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/CRO.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/CRO.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/CUBE.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/CUBE.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/DAI.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/DAI.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/DATE.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/images/coin/source/DCORE.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/images/coin/source/DEP.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/DEP.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/DND.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/DND.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/DOPE.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/DOPE.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/DXT.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/DXT.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/EKTA.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/EKTA.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/ETC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/ETC.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/ETH.svg:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/src/assets/images/coin/source/ETHW.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/ETHW.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/EVMOS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/EVMOS.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/FANTOMANIMALS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/FANTOMANIMALS.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/FITFI.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/FITFI.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/FLOW.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/FLOW.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/FRA.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/FRA.jpg
--------------------------------------------------------------------------------
/src/assets/images/coin/source/FTM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/FTM.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/FUSE.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/FUSE.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/GLMR.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/GLMR.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/GNO.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/GNO.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/GT.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/GT.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/HGET.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/HGET.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/HOO.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/HOO.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/HPB.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/HPB.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/HT.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/HT.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/HYVE.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/HYVE.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/IOTA.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/IOTA.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/IOTX.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/IOTX.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/JEWEL.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/JEWEL.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/KAI.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/KAI.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/KAVA.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/KAVA.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/KEK.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/KEK.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/KLAY.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/KLAY.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/LTC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/LTC.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/LUNA.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/LUNA.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/MATIC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/MATIC.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/METIS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/METIS.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/MIM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/MIM.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/MINT.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/MINT.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/MINTME.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/MINTME.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/MOVR.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/MOVR.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/MULTI.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/MULTI.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/NAHMII3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/NAHMII3.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/NAS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/NAS.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/NEAR.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/NEAR.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/NEON.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/NEON.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/NOVA.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/NOVA.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/OETH.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/OETH.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/OKT.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/OKT.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/OMAX.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/OMAX.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/ONE.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/ONE.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/ONT.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/ONT.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/ONUS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/ONUS.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/OPTIMISM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/OPTIMISM.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/PLQ.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/PLQ.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/PolygonzkEVM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/PolygonzkEVM.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/RBTC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/RBTC.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/REDLC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/REDLC.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/REEF.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/REEF.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/REI.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/REI.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/RON.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/RON.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/ROSE.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/ROSE.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/RPG.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/RPG.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/SAMA.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/SAMA.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/SDN.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/SDN.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/SEI.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/SEI.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/SHM.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/SHM.jpg
--------------------------------------------------------------------------------
/src/assets/images/coin/source/SMR.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/SMR.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/SOL.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/SOL.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/SYS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/SYS.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/TERRA.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/TERRA.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/TLOS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/TLOS.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/TOMO.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/TOMO.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/TRO.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/TRO.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/TRX.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/TRX.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/TST.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/TST.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/TT.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/TT.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/USDC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/USDC.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/USDT.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/USDT.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/UST.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/UST.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/VLX.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/VLX.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/WEMIX.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/WEMIX.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/WETH.svg:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/src/assets/images/coin/source/XANA.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/XANA.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/XDEX.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/XDEX.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/XETA.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/XETA.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/XLM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/XLM.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/XRP.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/XRP.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/ZBC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/ZBC.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/milkADA.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/images/coin/source/sSPELL.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/sSPELL.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/scroll.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/scroll.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/xDAI.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/xDAI.png
--------------------------------------------------------------------------------
/src/assets/images/coin/source/zkSync.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/coin/source/zkSync.png
--------------------------------------------------------------------------------
/src/assets/images/dropdown-blue.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/assets/images/dropdown.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/assets/images/dropup-blue.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/assets/images/ethereum-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/ethereum-logo.png
--------------------------------------------------------------------------------
/src/assets/images/fortmaticIcon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/fortmaticIcon.png
--------------------------------------------------------------------------------
/src/assets/images/icon/Next.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/Previous.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/add-2-black.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/add-2-purpl.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/add-2.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/add-fff.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/add-white.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/add.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/address.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/any-purpl.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/any.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/arrowDown.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/arrowRighr-purple.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/arrowRight.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/arrowTopRight.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/icon/arrowTopRight.png
--------------------------------------------------------------------------------
/src/assets/images/icon/arrowTopRight.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/bridge-gray.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/bridge-purpl.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/bridge-white-btn.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/bridge-white.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/bridge.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/bulb.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/check.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/coingecko-white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/icon/coingecko-white.png
--------------------------------------------------------------------------------
/src/assets/images/icon/coingecko.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/icon/coingecko.png
--------------------------------------------------------------------------------
/src/assets/images/icon/coinmarketcap-white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/icon/coinmarketcap-white.png
--------------------------------------------------------------------------------
/src/assets/images/icon/coinmarketcap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/icon/coinmarketcap.png
--------------------------------------------------------------------------------
/src/assets/images/icon/create-exchange-purpl.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/create-exchange-white.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/create-exchange.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/deposit-purple.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/deposit.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/documents-purpl.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/documents.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/done.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/explorer-purpl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/icon/explorer-purpl.png
--------------------------------------------------------------------------------
/src/assets/images/icon/explorer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/icon/explorer.png
--------------------------------------------------------------------------------
/src/assets/images/icon/explorer.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/images/icon/github-white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/icon/github-white.png
--------------------------------------------------------------------------------
/src/assets/images/icon/github.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/icon/github.png
--------------------------------------------------------------------------------
/src/assets/images/icon/graph-up.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/inventory.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/markets-purpl.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/markets.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/medium-white.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/medium.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/night.svg:
--------------------------------------------------------------------------------
1 |
19 |
--------------------------------------------------------------------------------
/src/assets/images/icon/paste.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/path.svg:
--------------------------------------------------------------------------------
1 |
10 |
--------------------------------------------------------------------------------
/src/assets/images/icon/remove-black.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/remove-purpl.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/remove-white.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/remove.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/schedule.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/search.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/slippage.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/swap-purpl.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/swap-purple.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/swap-white.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/swap.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/telegram-white.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/telegram.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/unlock.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/unlockBlack.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/wallet.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/warning.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/week.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/withdraw-purple.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/icon/withdraw.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/images/link.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/images/menu.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/src/assets/images/metamask.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/metamask.png
--------------------------------------------------------------------------------
/src/assets/images/plus-blue.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/assets/images/plus-grey.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/assets/images/portisIcon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/portisIcon.png
--------------------------------------------------------------------------------
/src/assets/images/question-mark.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/src/assets/images/question.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/src/assets/images/spinner.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/assets/images/tally.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/tally.png
--------------------------------------------------------------------------------
/src/assets/images/trustWallet.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/images/trustWallet.png
--------------------------------------------------------------------------------
/src/assets/images/x.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/svg/QR.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/assets/svg/active/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/svg/active/logo.png
--------------------------------------------------------------------------------
/src/assets/svg/active/logo_color.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/svg/active/logo_color.png
--------------------------------------------------------------------------------
/src/assets/svg/active/logo_white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/svg/active/logo_white.png
--------------------------------------------------------------------------------
/src/assets/svg/lightcircle.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/assets/svg/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/svg/logo.png
--------------------------------------------------------------------------------
/src/assets/svg/logo_color.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/svg/logo_color.png
--------------------------------------------------------------------------------
/src/assets/svg/logo_white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/anyswap/anyswap-crosschain/c7ff9a4dfaab274fac7e33c5f95ff58cfef5f545/src/assets/svg/logo_white.png
--------------------------------------------------------------------------------
/src/components/Column/index.tsx:
--------------------------------------------------------------------------------
1 | import styled from 'styled-components'
2 |
3 | const Column = styled.div`
4 | display: flex;
5 | flex-direction: column;
6 | justify-content: flex-start;
7 | `
8 | export const ColumnCenter = styled(Column)`
9 | width: 100%;
10 | align-items: center;
11 | `
12 |
13 | export const AutoColumn = styled.div<{
14 | gap?: 'sm' | 'md' | 'lg' | string
15 | justify?: 'stretch' | 'center' | 'start' | 'end' | 'flex-start' | 'flex-end' | 'space-between'
16 | }>`
17 | display: grid;
18 | grid-auto-rows: auto;
19 | grid-row-gap: ${({ gap }) => (gap === 'sm' && '8px') || (gap === 'md' && '12px') || (gap === 'lg' && '24px') || gap};
20 | justify-items: ${({ justify }) => justify && justify};
21 | // ${({ theme }) => theme.mediaWidth.upToMedium`
22 | // width: 320px;
23 | // `};
24 | `
25 |
26 | export default Column
27 |
--------------------------------------------------------------------------------
/src/components/CrossChainPanelV2/errorTip.tsx:
--------------------------------------------------------------------------------
1 | import React from "react"
2 | import styled from "styled-components"
3 |
4 | const ErrorTipBox = styled.div`
5 | ${({ theme }) => theme.flexC};
6 | width: 100%;
7 | margin-top: 10px;
8 | .txt {
9 | dispaly:inline-block;
10 | // width: 100%;
11 | // max-width: 300px;
12 | // border: 1px solid ${({ theme }) => theme.birdgeStateBorder};
13 | // background: ${({ theme }) => theme.birdgeStateBg};
14 | border: 1px solid ${({ theme }) => theme.birdgeStateBorder2};
15 | background: ${({ theme }) => theme.birdgeStateBg2};
16 | color: ${({ theme }) => theme.red1};
17 | // color: ${({ theme }) => theme.textColor};
18 | padding: 8px 12px;
19 | border-radius: 10px;
20 | text-align:center;
21 | font-size:14px;
22 | }
23 | `
24 |
25 | export default function ErrorTip ({
26 | errorTip
27 | }: {
28 | errorTip:any
29 | }) {
30 | if (!errorTip) return (<>>)
31 | return (
32 | <>
33 | {
34 | errorTip ? (
35 |
36 | {errorTip.tip}
37 |
38 | ) : ''
39 | }
40 | >
41 | )
42 | }
--------------------------------------------------------------------------------
/src/components/CrossChainTitle/index.tsx:
--------------------------------------------------------------------------------
1 | // import React, { useMemo } from 'react'
2 | import React from 'react'
3 | import styled from 'styled-components'
4 | // import { useTranslation } from 'react-i18next'
5 |
6 | import Title from '../Title'
7 |
8 | const TitleBox = styled.div`
9 | display: block;
10 | width:100%;
11 | ${({ theme }) => theme.mediaWidth.upToMedium`
12 | display:none;
13 | `}
14 | `
15 |
16 | export default function CrossChain() {
17 | return (
18 |
19 |
22 |
23 |
24 | )
25 | }
--------------------------------------------------------------------------------
/src/components/GasSwap/index.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import AppBody from '../../pages/AppBody'
3 | import CrossChainEVM from './crossChainEVM'
4 |
5 | const Index = () => {
6 | return (
7 |
8 |
9 |
10 | )
11 | }
12 |
13 | export default Index
14 |
--------------------------------------------------------------------------------
/src/components/Lazyload/Lazyload.tsx:
--------------------------------------------------------------------------------
1 | import React, { Suspense } from 'react';
2 | import Loading from './Loading';
3 |
4 | export default function (loader: any) {
5 | const OtherComponent = React.lazy(loader);
6 | return function MyComponent(props: any) {
7 | const duration = props.duration || 0;
8 | return (
9 | }>
10 |
11 |
12 | );
13 | };
14 | }
--------------------------------------------------------------------------------
/src/components/Lazyload/Loading.tsx:
--------------------------------------------------------------------------------
1 | import React, { useState, useEffect } from 'react'
2 | import { useTranslation } from 'react-i18next'
3 | import styled from 'styled-components'
4 |
5 | const Tips = styled.div`
6 | line-height: 56px;
7 | padding-top: 120px;
8 | text-align: center;
9 | font-size: 16px;
10 | font-weight: 600;
11 | `
12 |
13 | const Loading = ({ duration = -1 }: { duration?: number }) => {
14 | const [show, setShow] = useState(duration < 0);
15 |
16 | useEffect(() => {
17 | let timeHandler: any;
18 | let cancel = () => {
19 | //
20 | };
21 | if (duration) {
22 | timeHandler = setTimeout(() => setShow(true), duration)
23 | cancel = () => {
24 | clearTimeout(timeHandler);
25 | }
26 | }
27 | return cancel;
28 | }, [])
29 |
30 | const { t } = useTranslation();
31 | return show ? { t('Loading') }... : null;
32 | };
33 |
34 | export default Loading;
35 |
--------------------------------------------------------------------------------
/src/components/ListLogo/index.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import styled from 'styled-components'
3 | import useHttpLocations from '../../hooks/useHttpLocations'
4 |
5 | import Logo from '../Logo'
6 |
7 | const StyledListLogo = styled(Logo)<{ size: string }>`
8 | width: ${({ size }) => size};
9 | height: ${({ size }) => size};
10 | `
11 |
12 | export default function ListLogo({
13 | logoURI,
14 | style,
15 | size = '24px',
16 | alt
17 | }: {
18 | logoURI: string
19 | size?: string
20 | style?: React.CSSProperties
21 | alt?: string
22 | }) {
23 | const srcs: string[] = useHttpLocations(logoURI)
24 |
25 | return
26 | }
27 |
--------------------------------------------------------------------------------
/src/components/Logo/index.tsx:
--------------------------------------------------------------------------------
1 | import React, { useState } from 'react'
2 | import { HelpCircle } from 'react-feather'
3 | import { ImageProps } from 'rebass'
4 |
5 | const BAD_SRCS: { [tokenAddress: string]: true } = {}
6 |
7 | export interface LogoProps extends Pick {
8 | srcs: string[]
9 | }
10 |
11 | /**
12 | * Renders an image by sequentially trying a list of URIs, and then eventually a fallback triangle alert
13 | */
14 | export default function Logo({ srcs, alt, ...rest }: LogoProps) {
15 | const [, refresh] = useState(0)
16 | // console.log(srcs)
17 | // console.log(BAD_SRCS)
18 | const src: string | undefined = srcs.find(src => !BAD_SRCS[src])
19 |
20 | if (src) {
21 | return (
22 |
{
27 | if (src) BAD_SRCS[src] = true
28 | refresh(i => i + 1)
29 | }}
30 | />
31 | )
32 | }
33 |
34 | return
35 | }
36 |
--------------------------------------------------------------------------------
/src/components/NonApprove/empty.json:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/src/components/QRcode/index.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import styled from 'styled-components'
3 | import QRCode from 'qrcode.react'
4 | import { useDarkModeManager } from '../../state/user/hooks'
5 |
6 | const QRCodeWrapper = styled.div`
7 | ${({ theme }) => theme.flexColumnNoWrap};
8 | align-items: center;
9 | justify-content: center;
10 | border-radius: 0.75rem;
11 | margin-bottom: 1.25rem;
12 | `
13 |
14 | export default function QRcode({
15 | uri = '',
16 | size
17 | }: {
18 | uri?: any
19 | size?: any
20 | }) {
21 | const [isDark] = useDarkModeManager()
22 | return (
23 |
24 | {uri && (
25 |
26 | )}
27 |
28 | )
29 | }
30 |
--------------------------------------------------------------------------------
/src/components/Row/index.tsx:
--------------------------------------------------------------------------------
1 | import styled from 'styled-components'
2 | import { Box } from 'rebass/styled-components'
3 |
4 | const Row = styled(Box)<{ align?: string; padding?: string; border?: string; borderRadius?: string }>`
5 | width: 100%;
6 | display: flex;
7 | padding: 0;
8 | align-items: ${({ align }) => (align ? align : 'center')};
9 | padding: ${({ padding }) => padding};
10 | border: ${({ border }) => border};
11 | border-radius: ${({ borderRadius }) => borderRadius};
12 | `
13 |
14 | export const RowBetween = styled(Row)`
15 | justify-content: space-between;
16 | `
17 |
18 | export const RowFlat = styled.div`
19 | display: flex;
20 | align-items: flex-end;
21 | `
22 |
23 | export const AutoRow = styled(Row)<{ gap?: string; justify?: string }>`
24 | flex-wrap: wrap;
25 | margin: ${({ gap }) => gap && `-${gap}`};
26 | justify-content: ${({ justify }) => justify && justify};
27 | position:relative;
28 | & > * {
29 | margin: ${({ gap }) => gap} !important;
30 | }
31 | `
32 |
33 | export const RowFixed = styled(Row)<{ gap?: string; justify?: string }>`
34 | width: fit-content;
35 | margin: ${({ gap }) => gap && `-${gap}`};
36 | `
37 |
38 | export default Row
39 |
--------------------------------------------------------------------------------
/src/components/SearchModal/SortButton.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import { Text } from 'rebass'
3 | import styled from 'styled-components'
4 | import { RowFixed } from '../Row'
5 |
6 | export const FilterWrapper = styled(RowFixed)`
7 | padding: 8px;
8 | background-color: ${({ theme }) => theme.bg2};
9 | color: ${({ theme }) => theme.text1};
10 | border-radius: 8px;
11 | user-select: none;
12 | & > * {
13 | user-select: none;
14 | }
15 | :hover {
16 | cursor: pointer;
17 | }
18 | `
19 |
20 | export default function SortButton({
21 | toggleSortOrder,
22 | ascending
23 | }: {
24 | toggleSortOrder: () => void
25 | ascending: boolean
26 | }) {
27 | return (
28 |
29 |
30 | {ascending ? '↑' : '↓'}
31 |
32 |
33 | )
34 | }
35 |
--------------------------------------------------------------------------------
/src/components/SearchModal/filtering.ts:
--------------------------------------------------------------------------------
1 | import { isAddress } from '../../utils'
2 |
3 | export function filterTokens(tokens: any[], search: string): any[] {
4 | if (search.length === 0) return tokens
5 |
6 | const searchingAddress = isAddress(search)
7 |
8 | if (searchingAddress) {
9 | return tokens.filter(token => token.address === searchingAddress)
10 | }
11 |
12 | const lowerSearchParts = search
13 | .toLowerCase()
14 | .split(/\s+/)
15 | .filter(s => s.length > 0)
16 |
17 | if (lowerSearchParts.length === 0) {
18 | return tokens
19 | }
20 |
21 | const matchesSearch = (s: string): boolean => {
22 | const sParts = s
23 | .toLowerCase()
24 | .split(/\s+/)
25 | .filter(s => s.length > 0)
26 |
27 | return lowerSearchParts.every(p => p.length === 0 || sParts.some(sp => sp.startsWith(p) || sp.endsWith(p)))
28 | }
29 |
30 | return tokens.filter(token => {
31 | const { symbol, name } = token
32 |
33 | return (symbol && matchesSearch(symbol)) || (name && matchesSearch(name))
34 | })
35 | }
36 |
--------------------------------------------------------------------------------
/src/components/SwapIcon/index.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import styled from 'styled-components'
3 |
4 | // import config from '../../config'
5 | const SwapIconBox = styled.div`
6 | ${({ theme }) => theme.flexRowNoWrap}
7 | justify-content: center;
8 | align-items: center;
9 | width: 32px;
10 | height: 26px;
11 | object-fit: contain;
12 | border-radius: 6px;
13 | margin: 0px auto;
14 | cursor: pointer;
15 | background: ${({ theme }) => theme.swapBg};
16 | `
17 |
18 | interface SwapIcon {
19 | iconUrl: string
20 | onClick: () => void
21 | }
22 | export default function SwapIcon({ iconUrl, onClick }: SwapIcon) {
23 | return (
24 | {
26 | onClick()
27 | }}
28 | >
29 |
30 |
31 | )
32 | }
33 |
--------------------------------------------------------------------------------
/src/components/Tooltip/index.tsx:
--------------------------------------------------------------------------------
1 | import React, { useCallback, useState } from 'react'
2 | import styled from 'styled-components'
3 | import Popover, { PopoverProps } from '../Popover'
4 |
5 | const TooltipContainer = styled.div`
6 | width: 228px;
7 | padding: 0.6rem 1rem;
8 | line-height: 150%;
9 | font-weight: 400;
10 | `
11 |
12 | interface TooltipProps extends Omit {
13 | text: string
14 | }
15 |
16 | export default function Tooltip({ text, ...rest }: TooltipProps) {
17 | return {text}} {...rest} />
18 | }
19 |
20 | export function MouseoverTooltip({ children, ...rest }: Omit) {
21 | const [show, setShow] = useState(false)
22 | const open = useCallback(() => setShow(true), [setShow])
23 | const close = useCallback(() => setShow(false), [setShow])
24 | return (
25 |
26 |
27 | {children}
28 |
29 |
30 | )
31 | }
32 |
--------------------------------------------------------------------------------
/src/config/chainConfig/block.js:
--------------------------------------------------------------------------------
1 |
2 | import {VERSION, USE_VERSION} from '../constant'
3 | import {ChainId} from './chainId'
4 |
5 | export const BLOCK_MAINNET = ''
6 | export const BLOCK_MAIN_CHAINID = ChainId.BLOCK
7 | export const BLOCK_MAIN_EXPLORER = ''
8 |
9 | const symbol = 'BLOCK'
10 |
11 | const bridgeToken = {
12 | [VERSION.V1]: {
13 | bridgeInitToken: '',
14 | bridgeInitChain: ''
15 | }
16 | }
17 |
18 | export default {
19 | [BLOCK_MAIN_CHAINID]: {
20 | ...bridgeToken[USE_VERSION],
21 | multicalToken: '',
22 | v1FactoryToken: '',
23 | v2FactoryToken: '',
24 | nodeRpc: BLOCK_MAINNET,
25 | nodeRpcList: [],
26 | chainID: BLOCK_MAIN_CHAINID,
27 | lookHash: BLOCK_MAIN_EXPLORER + '/tx/',
28 | lookAddr: BLOCK_MAIN_EXPLORER + '/address/',
29 | lookBlock: BLOCK_MAIN_EXPLORER + '/block/',
30 | explorer: BLOCK_MAIN_EXPLORER,
31 | symbol: symbol,
32 | name: 'Blocknet',
33 | networkName: 'Blocknet mainnet',
34 | type: 'main',
35 | label: BLOCK_MAIN_CHAINID,
36 | chainType: 'NOWALLET'
37 | },
38 | }
--------------------------------------------------------------------------------
/src/config/chainConfig/colx.js:
--------------------------------------------------------------------------------
1 | import {VERSION, USE_VERSION} from '../constant'
2 | import {ChainId} from './chainId'
3 |
4 | export const COLX_MAINNET = ''
5 | export const COLX_MAIN_CHAINID = ChainId.COLX
6 | export const COLX_MAIN_EXPLORER = ''
7 |
8 | const symbol = 'COLX'
9 |
10 | const bridgeToken = {
11 | [VERSION.V1]: {
12 | bridgeInitToken: '',
13 | bridgeInitChain: ''
14 | }
15 | }
16 |
17 | export default {
18 | [COLX_MAIN_CHAINID]: {
19 | ...bridgeToken[USE_VERSION],
20 | multicalToken: '',
21 | v1FactoryToken: '',
22 | v2FactoryToken: '',
23 | nodeRpc: COLX_MAINNET,
24 | nodeRpcList: [],
25 | chainID: COLX_MAIN_CHAINID,
26 | lookHash: COLX_MAIN_EXPLORER + '/tx/',
27 | lookAddr: COLX_MAIN_EXPLORER + '/address/',
28 | lookBlock: COLX_MAIN_EXPLORER + '/block/',
29 | explorer: COLX_MAIN_EXPLORER,
30 | symbol: symbol,
31 | name: 'ColossusXT',
32 | networkName: 'ColossusXT mainnet',
33 | type: 'main',
34 | label: COLX_MAIN_CHAINID,
35 | chainType: 'NOWALLET'
36 | },
37 | }
--------------------------------------------------------------------------------
/src/config/chainConfig/ltc.js:
--------------------------------------------------------------------------------
1 | import {VERSION, USE_VERSION} from '../constant'
2 | import {ChainId} from './chainId'
3 |
4 | export const LTC_MAINNET = ''
5 | export const LTC_MAIN_CHAINID = ChainId.LTC
6 | export const LTC_MAIN_EXPLORER = ''
7 |
8 | const symbol = 'LTC'
9 |
10 | const bridgeToken = {
11 | [VERSION.V1]: {
12 | bridgeInitToken: '',
13 | bridgeInitChain: ''
14 | }
15 | }
16 |
17 | export default {
18 | [LTC_MAIN_CHAINID]: {
19 | ...bridgeToken[USE_VERSION],
20 | multicalToken: '',
21 | v1FactoryToken: '',
22 | v2FactoryToken: '',
23 | nodeRpc: LTC_MAINNET,
24 | nodeRpcList: [],
25 | chainID: LTC_MAIN_CHAINID,
26 | lookHash: LTC_MAIN_EXPLORER + '/tx/',
27 | lookAddr: LTC_MAIN_EXPLORER + '/address/',
28 | lookBlock: LTC_MAIN_EXPLORER + '/block/',
29 | explorer: LTC_MAIN_EXPLORER,
30 | symbol: symbol,
31 | name: 'Litecoin',
32 | networkName: 'Litecoin mainnet',
33 | type: 'main',
34 | label: LTC_MAIN_CHAINID,
35 | chainType: 'NOWALLET'
36 | },
37 | }
--------------------------------------------------------------------------------
/src/config/chainConfig/nas.js:
--------------------------------------------------------------------------------
1 |
2 | import {VERSION, USE_VERSION} from '../constant'
3 | import {ChainId} from './chainId'
4 |
5 | export const NAS_MAINNET = ''
6 | export const NAS_MAIN_CHAINID = ChainId.NAS
7 | export const NAS_MAIN_EXPLORER = 'https://explorer.nebulas.io/#'
8 |
9 | const symbol = 'NAS'
10 |
11 | const bridgeToken = {
12 | [VERSION.V1]: {
13 | bridgeInitToken: '',
14 | bridgeInitChain: ''
15 | }
16 | }
17 |
18 | export default {
19 | [NAS_MAIN_CHAINID]: {
20 | ...bridgeToken[USE_VERSION],
21 | multicalToken: '',
22 | v1FactoryToken: '',
23 | v2FactoryToken: '',
24 | nodeRpc: NAS_MAINNET,
25 | nodeRpcList: [],
26 | chainID: NAS_MAIN_CHAINID,
27 | lookHash: NAS_MAIN_EXPLORER + '/tx/',
28 | lookAddr: NAS_MAIN_EXPLORER + '/address/',
29 | lookBlock: NAS_MAIN_EXPLORER + '/block/',
30 | explorer: NAS_MAIN_EXPLORER,
31 | symbol: symbol,
32 | name: 'Nebulas',
33 | networkName: 'Nebulas mainnet',
34 | networkLogo: 'NAS',
35 | type: 'main',
36 | label: NAS_MAIN_CHAINID,
37 | chainType: NAS_MAIN_CHAINID
38 | },
39 | }
--------------------------------------------------------------------------------
/src/config/chainConfig/terra.js:
--------------------------------------------------------------------------------
1 | import {VERSION, USE_VERSION} from '../constant'
2 | import {ChainId} from './chainId'
3 |
4 | export const TERRA_MAINNET = ''
5 | export const TERRA_MAIN_CHAINID = ChainId.TERRA
6 | export const TERRA_MAIN_EXPLORER = 'https://finder.terra.money/classic'
7 |
8 | const symbol = 'LUNA'
9 |
10 | const bridgeToken = {
11 | [VERSION.V1]: {
12 | bridgeInitToken: '',
13 | bridgeInitChain: ''
14 | }
15 | }
16 |
17 | export default {
18 | [TERRA_MAIN_CHAINID]: {
19 | ...bridgeToken[USE_VERSION],
20 | multicalToken: '',
21 | v1FactoryToken: '',
22 | v2FactoryToken: '',
23 | nodeRpc: TERRA_MAINNET,
24 | nodeRpcList: [],
25 | chainID: TERRA_MAIN_CHAINID,
26 | lookHash: TERRA_MAIN_EXPLORER + '/tx/',
27 | lookAddr: TERRA_MAIN_EXPLORER + '/address/',
28 | lookBlock: TERRA_MAIN_EXPLORER + '/block/',
29 | explorer: TERRA_MAIN_EXPLORER,
30 | symbol: symbol,
31 | name: 'Terra classic',
32 | networkName: 'Terra classic mainnet',
33 | networkLogo: 'TERRA',
34 | type: 'main',
35 | label: TERRA_MAIN_CHAINID,
36 | chainType: TERRA_MAIN_CHAINID
37 | },
38 | }
--------------------------------------------------------------------------------
/src/config/status.ts:
--------------------------------------------------------------------------------
1 | export enum Status {
2 | Pending = "Pending",
3 | Success = "Success",
4 | Failure = "Failure",
5 | Null = "Null",
6 | Confirming = "Confirming",
7 | Crosschaining = "Routing",
8 | Timeout = "Timeout",
9 | BigAmount = "Big Amount",
10 | }
11 |
12 | export function getStatus (status:any, confirmations?:any) {
13 | let statusType = Status.Confirming
14 | if ([0, 5].includes(status)) {
15 | statusType = Status.Confirming
16 | } else if ([7, 8].includes(status)) {
17 | statusType = Status.Crosschaining
18 | } else if ([9, 10].includes(status)) {
19 | if (
20 | status === 10
21 | || (confirmations && confirmations > 0)
22 | ) {
23 | statusType = Status.Success
24 | } else {
25 | statusType = Status.Crosschaining
26 | }
27 | } else if ([1,2, 4, 6, 3, 16, 11, 14, 20].includes(status)) {
28 | statusType = Status.Failure
29 | }
30 | // else if ([].includes(status)) {
31 | // statusType = Status.Timeout
32 | // }
33 | else if ([12].includes(status)) {
34 | statusType = Status.BigAmount
35 | }
36 | return statusType
37 | }
38 |
39 | export const END_STATUS = [1, 3, 10, 16,-2, -3]
--------------------------------------------------------------------------------
/src/constants/abis/bridge/erc1155.ts:
--------------------------------------------------------------------------------
1 | import { Interface } from '@ethersproject/abi'
2 | import ERC1155_ABI from './erc1155.json'
3 |
4 | const ERC1155_INTERFACE:any = new Interface(ERC1155_ABI)
5 |
6 |
7 | export default ERC1155_INTERFACE
8 | export { ERC1155_ABI }
9 |
--------------------------------------------------------------------------------
/src/constants/abis/bridge/erc721.ts:
--------------------------------------------------------------------------------
1 | import { Interface } from '@ethersproject/abi'
2 | import ERC721_ABI from './erc721.json'
3 |
4 | const ERC721_INTERFACE = new Interface(ERC721_ABI)
5 |
6 |
7 | export default ERC721_INTERFACE
8 | export { ERC721_ABI }
9 |
--------------------------------------------------------------------------------
/src/constants/abis/erc20.ts:
--------------------------------------------------------------------------------
1 | import { Interface } from '@ethersproject/abi'
2 | import ERC20_ABI from './erc20.json'
3 | import ERC20_BYTES32_ABI from './erc20_bytes32.json'
4 |
5 | const ERC20_INTERFACE = new Interface(ERC20_ABI)
6 |
7 | const ERC20_BYTES32_INTERFACE = new Interface(ERC20_BYTES32_ABI)
8 |
9 | export default ERC20_INTERFACE
10 | export { ERC20_ABI, ERC20_BYTES32_INTERFACE, ERC20_BYTES32_ABI }
11 |
--------------------------------------------------------------------------------
/src/constants/abis/erc20_bytes32.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "constant": true,
4 | "inputs": [],
5 | "name": "name",
6 | "outputs": [
7 | {
8 | "name": "",
9 | "type": "bytes32"
10 | }
11 | ],
12 | "payable": false,
13 | "stateMutability": "view",
14 | "type": "function"
15 | },
16 | {
17 | "constant": true,
18 | "inputs": [],
19 | "name": "symbol",
20 | "outputs": [
21 | {
22 | "name": "",
23 | "type": "bytes32"
24 | }
25 | ],
26 | "payable": false,
27 | "stateMutability": "view",
28 | "type": "function"
29 | }
30 | ]
31 |
--------------------------------------------------------------------------------
/src/constants/abis/migrator.ts:
--------------------------------------------------------------------------------
1 | import MIGRATOR_ABI from './migrator.json'
2 |
3 | const MIGRATOR_ADDRESS = '0x16D4F26C15f3658ec65B1126ff27DD3dF2a2996b'
4 |
5 | export { MIGRATOR_ADDRESS, MIGRATOR_ABI }
6 |
--------------------------------------------------------------------------------
/src/constants/abis/swapMULTIABI.ts:
--------------------------------------------------------------------------------
1 | import { Interface } from '@ethersproject/abi'
2 | import swapMULTIABI from './swapMULTIABI.json'
3 |
4 | const SWAP_MULTI_INTERFACE = new Interface(swapMULTIABI)
5 |
6 | export default SWAP_MULTI_INTERFACE
7 | export { SWAP_MULTI_INTERFACE, swapMULTIABI }
8 |
--------------------------------------------------------------------------------
/src/constants/abis/veMULTI.ts:
--------------------------------------------------------------------------------
1 | import { Interface } from '@ethersproject/abi'
2 | import veMULTI from './veMULTI.json'
3 |
4 | const VE_MULTI_INTERFACE = new Interface(veMULTI)
5 |
6 | export default VE_MULTI_INTERFACE
7 | export { VE_MULTI_INTERFACE, veMULTI }
8 |
--------------------------------------------------------------------------------
/src/constants/abis/veMULTIReward.ts:
--------------------------------------------------------------------------------
1 | import { Interface } from '@ethersproject/abi'
2 | import veMULTIReward from './veMULTIReward.json'
3 |
4 | const VE_MULTI_REWARD_INTERFACE = new Interface(veMULTIReward)
5 |
6 | export default VE_MULTI_REWARD_INTERFACE
7 | export { veMULTIReward, VE_MULTI_REWARD_INTERFACE }
8 |
--------------------------------------------------------------------------------
/src/constants/abis/veshare.ts:
--------------------------------------------------------------------------------
1 | import { Interface } from '@ethersproject/abi'
2 | import veshare from './veshare.json'
3 |
4 | const VE_SHARE_INTERFACE = new Interface(veshare)
5 |
6 | export default VE_SHARE_INTERFACE
7 | export { veshare, VE_SHARE_INTERFACE }
8 |
--------------------------------------------------------------------------------
/src/constants/lists.ts:
--------------------------------------------------------------------------------
1 |
2 | export const DEFAULT_TOKEN_LIST_URL = ''
3 |
4 | export const DEFAULT_LIST_OF_LISTS: string[] = [
5 | DEFAULT_TOKEN_LIST_URL,
6 | // 't2crtokens.eth', // kleros
7 | // 'tokens.1inch.eth', // 1inch
8 | // 'synths.snx.eth',
9 | // 'tokenlist.dharma.eth',
10 | // 'defi.cmc.eth',
11 | // 'erc20.cmc.eth',
12 | // 'stablecoin.cmc.eth',
13 | // 'tokenlist.zerion.eth',
14 | // 'tokenlist.aave.eth',
15 | // 'https://tokens.coingecko.com/uniswap/all.json',
16 | // 'https://app.tryroll.com/tokens.json',
17 | // 'https://raw.githubusercontent.com/compound-finance/token-list/master/compound.tokenlist.json',
18 | // 'https://defiprime.com/defiprime.tokenlist.json',
19 | // 'https://umaproject.org/uma.tokenlist.json'
20 | ]
21 |
--------------------------------------------------------------------------------
/src/constants/multicall/index.ts:
--------------------------------------------------------------------------------
1 |
2 | import MULTICALL_ABI from './abi.json'
3 | export { MULTICALL_ABI }
--------------------------------------------------------------------------------
/src/constants/v1/index.ts:
--------------------------------------------------------------------------------
1 | import { Interface } from '@ethersproject/abi'
2 |
3 | import V1_EXCHANGE_ABI from './v1_exchange.json'
4 | import V1_FACTORY_ABI from './v1_factory.json'
5 |
6 | const V1_FACTORY_INTERFACE = new Interface(V1_FACTORY_ABI)
7 | const V1_EXCHANGE_INTERFACE = new Interface(V1_EXCHANGE_ABI)
8 |
9 | export { V1_FACTORY_INTERFACE, V1_FACTORY_ABI, V1_EXCHANGE_INTERFACE, V1_EXCHANGE_ABI }
10 |
--------------------------------------------------------------------------------
/src/hooks/useCopyClipboard.ts:
--------------------------------------------------------------------------------
1 | import copy from 'copy-to-clipboard'
2 | import { useCallback, useEffect, useState } from 'react'
3 |
4 | export default function useCopyClipboard(timeout = 500): [boolean, (toCopy: string) => void] {
5 | const [isCopied, setIsCopied] = useState(false)
6 |
7 | const staticCopy = useCallback(text => {
8 | const didCopy = copy(text)
9 | setIsCopied(didCopy)
10 | }, [])
11 |
12 | useEffect(() => {
13 | if (isCopied) {
14 | const hide = setTimeout(() => {
15 | setIsCopied(false)
16 | }, timeout)
17 |
18 | return () => {
19 | clearTimeout(hide)
20 | }
21 | }
22 | return undefined
23 | }, [isCopied, setIsCopied, timeout])
24 |
25 | return [isCopied, staticCopy]
26 | }
27 |
--------------------------------------------------------------------------------
/src/hooks/useDebounce.ts:
--------------------------------------------------------------------------------
1 | import { useEffect, useState } from 'react'
2 |
3 | // modified from https://usehooks.com/useDebounce/
4 | export default function useDebounce(value: T, delay: number): T {
5 | const [debouncedValue, setDebouncedValue] = useState(value)
6 |
7 | useEffect(() => {
8 | // 延迟后更新被取消的值
9 | const handler = setTimeout(() => {
10 | setDebouncedValue(value)
11 | }, delay)
12 |
13 | // 如果值更改,则取消超时(延迟更改或卸载时也是如此)
14 | // 这就是我们如何防止当值在延迟时间内发生变化时,debdoff值的更新。超时被清除并重新启动。
15 | return () => {
16 | clearTimeout(handler)
17 | }
18 | }, [value, delay])
19 |
20 | return debouncedValue
21 | }
22 |
--------------------------------------------------------------------------------
/src/hooks/useENS.ts:
--------------------------------------------------------------------------------
1 | import { isAddress } from '../utils'
2 | import useENSAddress from './useENSAddress'
3 | import useENSName from './useENSName'
4 |
5 | /**
6 | * Given a name or address, does a lookup to resolve to an address and name
7 | * @param nameOrAddress ENS name or address
8 | */
9 | export default function useENS(
10 | nameOrAddress?: string | null
11 | ): { loading: boolean; address: string | null; name: string | null } {
12 | const validated = isAddress(nameOrAddress)
13 | const reverseLookup = useENSName(validated ? validated : undefined)
14 | const lookup = useENSAddress(nameOrAddress)
15 |
16 | return {
17 | loading: reverseLookup.loading || lookup.loading,
18 | address: validated ? validated : lookup.address,
19 | name: reverseLookup.ENSName ? reverseLookup.ENSName : !validated && lookup.address ? nameOrAddress || null : null
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/src/hooks/useHttpLocations.ts:
--------------------------------------------------------------------------------
1 | import { useMemo } from 'react'
2 | import contenthashToUri from '../utils/contenthashToUri'
3 | import { parseENSAddress } from '../utils/parseENSAddress'
4 | import uriToHttp from '../utils/uriToHttp'
5 | import useENSContentHash from './useENSContentHash'
6 |
7 | export default function useHttpLocations(uri: string | undefined): string[] {
8 | const ens = useMemo(() => (uri ? parseENSAddress(uri) : undefined), [uri])
9 | const resolvedContentHash = useENSContentHash(ens?.ensName)
10 | return useMemo(() => {
11 | if (ens) {
12 | return resolvedContentHash.contenthash ? uriToHttp(contenthashToUri(resolvedContentHash.contenthash)) : []
13 | } else {
14 | return uri ? uriToHttp(uri) : []
15 | }
16 | }, [ens, resolvedContentHash.contenthash, uri])
17 | }
18 |
--------------------------------------------------------------------------------
/src/hooks/useInterval.ts:
--------------------------------------------------------------------------------
1 | import { useEffect, useRef } from 'react'
2 |
3 | export default function useInterval(callback: () => void, delay: null | number, leading = true) {
4 | const savedCallback = useRef<() => void>()
5 |
6 | // 记住最新的回调。
7 | useEffect(() => {
8 | savedCallback.current = callback
9 | }, [callback])
10 |
11 | // 设置间隔。
12 | useEffect(() => {
13 | function tick() {
14 | const current = savedCallback.current
15 | current && current()
16 | }
17 |
18 | if (delay !== null) {
19 | if (leading) tick()
20 | const id = setInterval(tick, delay)
21 | return () => clearInterval(id)
22 | }
23 | return undefined
24 | }, [delay, leading])
25 | }
26 |
--------------------------------------------------------------------------------
/src/hooks/useIsWindowVisible.ts:
--------------------------------------------------------------------------------
1 | import { useCallback, useEffect, useState } from 'react'
2 |
3 | const VISIBILITY_STATE_SUPPORTED = 'visibilityState' in document
4 |
5 | function isWindowVisible() {
6 | return !VISIBILITY_STATE_SUPPORTED || document.visibilityState !== 'hidden'
7 | }
8 |
9 | /**
10 | * 返回当前窗口对用户是否可见。
11 | */
12 | export default function useIsWindowVisible(): boolean {
13 | const [focused, setFocused] = useState(isWindowVisible())
14 | const listener = useCallback(() => {
15 | setFocused(isWindowVisible())
16 | }, [setFocused])
17 |
18 | useEffect(() => {
19 | if (!VISIBILITY_STATE_SUPPORTED) return undefined
20 |
21 | document.addEventListener('visibilitychange', listener)
22 | return () => {
23 | document.removeEventListener('visibilitychange', listener)
24 | }
25 | }, [listener])
26 |
27 | return focused
28 | }
29 |
--------------------------------------------------------------------------------
/src/hooks/useOnClickOutside.tsx:
--------------------------------------------------------------------------------
1 | import { RefObject, useEffect, useRef } from 'react'
2 |
3 | export function useOnClickOutside(
4 | node: RefObject,
5 | handler: undefined | (() => void)
6 | ) {
7 | const handlerRef = useRef void)>(handler)
8 | useEffect(() => {
9 | handlerRef.current = handler
10 | }, [handler])
11 |
12 | useEffect(() => {
13 | const handleClickOutside = (e: MouseEvent) => {
14 | if (node.current?.contains(e.target as Node) ?? false) {
15 | return
16 | }
17 | if (handlerRef.current) handlerRef.current()
18 | }
19 |
20 | document.addEventListener('mousedown', handleClickOutside)
21 |
22 | return () => {
23 | document.removeEventListener('mousedown', handleClickOutside)
24 | }
25 | }, [node])
26 | }
27 |
--------------------------------------------------------------------------------
/src/hooks/useParsedQueryString.ts:
--------------------------------------------------------------------------------
1 | import { parse, ParsedQs } from 'qs'
2 | import { useMemo } from 'react'
3 | import { useLocation } from 'react-router-dom'
4 |
5 | export default function useParsedQueryString(): ParsedQs {
6 | const { search } = useLocation()
7 | return useMemo(
8 | () => (search && search.length > 1 ? parse(search, { parseArrays: false, ignoreQueryPrefix: true }) : {}),
9 | [search]
10 | )
11 | }
12 |
--------------------------------------------------------------------------------
/src/hooks/usePrevious.ts:
--------------------------------------------------------------------------------
1 | import { useEffect, useRef } from 'react'
2 |
3 | // modified from https://usehooks.com/usePrevious/
4 | export default function usePrevious(value: T) {
5 | // The ref object is a generic container whose current property is mutable ...
6 | // ... and can hold any value, similar to an instance property on a class
7 | const ref = useRef()
8 |
9 | // Store current value in ref
10 | useEffect(() => {
11 | ref.current = value
12 | }, [value]) // Only re-run if value changes
13 |
14 | // Return previous value (happens before update in useEffect above)
15 | return ref.current
16 | }
17 |
--------------------------------------------------------------------------------
/src/hooks/useToggledVersion.ts:
--------------------------------------------------------------------------------
1 | import useParsedQueryString from './useParsedQueryString'
2 |
3 | export enum Version {
4 | v1 = 'v1',
5 | v2 = 'v2'
6 | }
7 |
8 | export const DEFAULT_VERSION: Version = Version.v2
9 |
10 | export default function useToggledVersion(): Version {
11 | const { use } = useParsedQueryString()
12 | if (!use || typeof use !== 'string') return Version.v2
13 | if (use.toLowerCase() === 'v1') return Version.v1
14 | return DEFAULT_VERSION
15 | }
16 |
--------------------------------------------------------------------------------
/src/hooks/useWrapCallback.ts:
--------------------------------------------------------------------------------
1 |
2 | export enum WrapType {
3 | NOT_APPLICABLE,
4 | WRAP,
5 | UNWRAP,
6 | NOCONNECT
7 | }
8 |
--------------------------------------------------------------------------------
/src/i18n.ts:
--------------------------------------------------------------------------------
1 | import i18next from 'i18next'
2 | import { initReactI18next } from 'react-i18next'
3 | import XHR from 'i18next-xhr-backend'
4 | import LanguageDetector from 'i18next-browser-languagedetector'
5 |
6 | i18next
7 | .use(XHR)
8 | .use(LanguageDetector)
9 | .use(initReactI18next)
10 | .init({
11 | backend: {
12 | loadPath: `./locales/{{lng}}.json`
13 | },
14 | react: {
15 | useSuspense: true
16 | },
17 | fallbackLng: 'en',
18 | preload: ['en'],
19 | keySeparator: false,
20 | interpolation: { escapeValue: false }
21 | })
22 |
23 | export default i18next
24 |
--------------------------------------------------------------------------------
/src/nonevm/apt/actions.ts:
--------------------------------------------------------------------------------
1 | import { createAction } from '@reduxjs/toolkit'
2 |
3 | export const aptBalanceList = createAction<{ list: any }>('apt/aptBalanceList')
4 | export const aptApproveList = createAction<{ token: any, result: any }>('apt/aptApproveList')
--------------------------------------------------------------------------------
/src/nonevm/apt/reducer.ts:
--------------------------------------------------------------------------------
1 | import { createReducer } from '@reduxjs/toolkit'
2 | import { aptBalanceList, aptApproveList } from './actions'
3 |
4 | export interface BurnState {
5 | readonly aptBalanceList: any
6 | readonly aptApproveList: any
7 | }
8 |
9 | const initialState: BurnState = {
10 | aptBalanceList: {},
11 | aptApproveList: {},
12 | }
13 |
14 | export default createReducer(initialState, builder =>
15 | builder
16 | .addCase(aptBalanceList, (state, { payload: { list } }) => {
17 | // console.log(list)
18 | state.aptBalanceList = list
19 | })
20 | .addCase(aptApproveList, (state, { payload: { token, result } }) => {
21 | // state.trxApproveList = list
22 | if (!state.aptApproveList) state.aptApproveList = {}
23 | state.aptApproveList[token] = result
24 | })
25 | )
--------------------------------------------------------------------------------
/src/nonevm/atom/actions.ts:
--------------------------------------------------------------------------------
1 | import { createAction } from '@reduxjs/toolkit'
2 |
3 | export const atomBalanceList = createAction<{ list: any }>('atom/atomBalanceList')
4 | export const atomApproveList = createAction<{ token: any, result: any }>('atom/atomApproveList')
5 |
--------------------------------------------------------------------------------
/src/nonevm/atom/reducer.ts:
--------------------------------------------------------------------------------
1 | import { createReducer } from '@reduxjs/toolkit'
2 | import { atomBalanceList, atomApproveList } from './actions'
3 |
4 | export interface BurnState {
5 | readonly atomBalanceList: any
6 | readonly atomApproveList: any
7 | }
8 |
9 | const initialState: BurnState = {
10 | atomBalanceList: {},
11 | atomApproveList: {},
12 | }
13 |
14 | export default createReducer(initialState, builder =>
15 | builder
16 | .addCase(atomBalanceList, (state, { payload: { list } }) => {
17 | state.atomBalanceList = list
18 | })
19 | .addCase(atomApproveList, (state, { payload: { token, result } }) => {
20 | // state.trxApproveList = list
21 | if (!state.atomApproveList) state.atomApproveList = {}
22 | state.atomApproveList[token] = result
23 | })
24 | )
25 |
--------------------------------------------------------------------------------
/src/nonevm/btc/actions.ts:
--------------------------------------------------------------------------------
1 | import { createAction } from '@reduxjs/toolkit'
2 |
3 | export const btcBalanceList = createAction<{ list: any }>('btc/btcBalanceList')
--------------------------------------------------------------------------------
/src/nonevm/btc/reducer.ts:
--------------------------------------------------------------------------------
1 | import { createReducer } from '@reduxjs/toolkit'
2 | import { btcBalanceList } from './actions'
3 |
4 | export interface BurnState {
5 | readonly btcBalanceList: any
6 | }
7 |
8 | const initialState: BurnState = {
9 | btcBalanceList: {},
10 | }
11 |
12 | export default createReducer(initialState, builder =>
13 | builder
14 | .addCase(btcBalanceList, (state, { payload: { list } }) => {
15 | // console.log(list)
16 | state.btcBalanceList = list
17 | })
18 | )
--------------------------------------------------------------------------------
/src/nonevm/cardano/actions.ts:
--------------------------------------------------------------------------------
1 | import { createAction } from '@reduxjs/toolkit'
2 |
3 | export const adaAddress = createAction<{ address: any }>('ada/adaAddress')
4 | export const adaBalanceList = createAction<{ list: any }>('ada/adaBalanceList')
5 |
--------------------------------------------------------------------------------
/src/nonevm/cardano/reducer.ts:
--------------------------------------------------------------------------------
1 | import { createReducer } from '@reduxjs/toolkit'
2 | import { adaAddress, adaBalanceList } from './actions'
3 |
4 | export interface BurnState {
5 | readonly adaAddress: any
6 | readonly adaBalanceList: any
7 | // readonly adaWallet: any
8 | }
9 |
10 | const initialState: BurnState = {
11 | adaAddress: '',
12 | adaBalanceList: {},
13 | // adaWallet: '',
14 | }
15 |
16 | export default createReducer(initialState, builder =>
17 | builder
18 | .addCase(adaAddress, (state, { payload: { address } }) => {
19 | state.adaAddress = address
20 | })
21 | .addCase(adaBalanceList, (state, { payload: { list } }) => {
22 | state.adaBalanceList = list
23 | })
24 | )
25 |
--------------------------------------------------------------------------------
/src/nonevm/flow/actions.ts:
--------------------------------------------------------------------------------
1 | import { createAction } from '@reduxjs/toolkit'
2 |
3 | export const flowAddress = createAction<{ address: any }>('flow/flowAddress')
4 | export const flowBalanceList = createAction<{ list: any }>('flow/flowBalanceList')
5 |
--------------------------------------------------------------------------------
/src/nonevm/flow/reducer.ts:
--------------------------------------------------------------------------------
1 | import { createReducer } from '@reduxjs/toolkit'
2 | import { flowAddress, flowBalanceList } from './actions'
3 |
4 | export interface BurnState {
5 | readonly flowAddress: any
6 | readonly flowBalanceList: any
7 | // readonly adaWallet: any
8 | }
9 |
10 | const initialState: BurnState = {
11 | flowAddress: '',
12 | flowBalanceList: {},
13 | // adaWallet: '',
14 | }
15 |
16 | export default createReducer(initialState, builder =>
17 | builder
18 | .addCase(flowAddress, (state, { payload: { address } }) => {
19 | state.flowAddress = address
20 | })
21 | .addCase(flowBalanceList, (state, { payload: { list } }) => {
22 | state.flowBalanceList = list
23 | })
24 | )
25 |
--------------------------------------------------------------------------------
/src/nonevm/hooks/actions.ts:
--------------------------------------------------------------------------------
1 | import { createAction } from '@reduxjs/toolkit'
2 |
3 | export const nonevmAddress = createAction<{ chainId: any, account: any }>('nonevm/nonevmAddress')
4 | export const nonevmBalanceList = createAction<{ list: any }>('nonevm/nonevmBalanceList')
5 | export const approveList = createAction<{ chainId: any, account:any, token:any, spender:any, allowance:any}>('nonevm/approveList')
6 |
--------------------------------------------------------------------------------
/src/nonevm/hooks/index.ts:
--------------------------------------------------------------------------------
1 | import { useCallback } from 'react'
2 | import {
3 | useDispatch,
4 | useSelector
5 | } from 'react-redux'
6 | import {
7 | AppState,
8 | AppDispatch
9 | } from '../../state'
10 | import {approveList} from './actions'
11 |
12 | export function useNonevmAddress (chainId:any) {
13 | const account:any = useSelector(state => state.nonevm.nonevmAddress)
14 | // console.log(account)
15 | // console.log(chainId)
16 | return {
17 | nonevmAccount: account?.[chainId]?.account ?? undefined
18 | }
19 | }
20 |
21 | export function useApproveState () {
22 | // const allowanceList:any = useSelector(state => state.nonevm.approveList)
23 | const dispatch = useDispatch()
24 | const setApprovalState = useCallback(({chainId, account, token, spender, allowance}) => {
25 | if (chainId && account && token && spender) {
26 | dispatch(approveList({
27 | chainId, account, token, spender, allowance
28 | }))
29 | }
30 | }, [])
31 |
32 | return {
33 | setApprovalState
34 | }
35 | }
--------------------------------------------------------------------------------
/src/nonevm/hooks/reducer.ts:
--------------------------------------------------------------------------------
1 | import { createReducer } from '@reduxjs/toolkit'
2 | import { approveList, nonevmAddress } from './actions'
3 |
4 | export interface BurnState {
5 | readonly approveList: any
6 | readonly nonevmAddress: any
7 | }
8 |
9 | const initialState: BurnState = {
10 | approveList: {},
11 | nonevmAddress: {},
12 | }
13 |
14 | export default createReducer(initialState, builder =>
15 | builder
16 | .addCase(approveList, (state, { payload: { chainId, account, token, spender, allowance } }) => {
17 | if (!state.approveList) state.approveList = {}
18 | if (!state.approveList[chainId]) state.approveList[chainId] = {}
19 | if (!state.approveList[chainId][account]) state.approveList[chainId][account] = {}
20 | if (!state.approveList[chainId][account][token]) state.approveList[chainId][account][token] = {}
21 | state.approveList[chainId][account][token][spender] = {
22 | allowance
23 | }
24 | })
25 | .addCase(nonevmAddress, (state, { payload: { chainId, account} }) => {
26 | if (!state.nonevmAddress) state.nonevmAddress = {}
27 | state.nonevmAddress[chainId] = {account}
28 | })
29 | )
30 |
--------------------------------------------------------------------------------
/src/nonevm/index.ts:
--------------------------------------------------------------------------------
1 | import xlm from './stellar/reducer'
2 | import trx from './trx/reducer'
3 | import ada from './cardano/reducer'
4 | import flow from './flow/reducer'
5 | import nonevm from './hooks/reducer'
6 | import temp from './temp/reducer'
7 | import sol from './solana/reducer'
8 | import apt from './apt/reducer'
9 | import btc from './btc/reducer'
10 | import atom from './atom/reducer'
11 | import reef from './reef/reducer'
12 | export default {
13 | xlm,
14 | trx,
15 | ada,
16 | flow,
17 | nonevm,
18 | temp,
19 | sol,
20 | apt,
21 | btc,
22 | atom,
23 | reef
24 | }
--------------------------------------------------------------------------------
/src/nonevm/nas/updater.ts:
--------------------------------------------------------------------------------
1 |
2 | import { useCallback, useEffect } from 'react'
3 | import { useActiveReact } from '../../hooks/useActiveReact'
4 |
5 | import { ChainId } from '../../config/chainConfig/chainId'
6 | import {useNasLogin} from './index'
7 |
8 | export default function Updater(): null {
9 | const { chainId } = useActiveReact()
10 |
11 | const {loginNas} = useNasLogin()
12 |
13 | const getNasAddress = useCallback(() => {
14 | if ([ChainId.NAS].includes(chainId)) {
15 | // console.log(111)
16 | loginNas(chainId, 1)
17 | }
18 | }, [chainId])
19 |
20 | useEffect(() => {
21 | getNasAddress()
22 | }, [chainId])
23 |
24 | return null
25 | }
26 |
--------------------------------------------------------------------------------
/src/nonevm/reef/actions.ts:
--------------------------------------------------------------------------------
1 | import { createAction } from '@reduxjs/toolkit'
2 |
3 | export const reefBalanceList = createAction<{ list: any }>('reef/reefBalanceList')
4 | export const reefApproveList = createAction<{ token: any, result: any }>('reef/reefApproveList')
5 | export const reefEvmAddress = createAction<{ address: any}>('reef/reefEvmAddress')
--------------------------------------------------------------------------------
/src/nonevm/reef/reducer.ts:
--------------------------------------------------------------------------------
1 | import { createReducer } from '@reduxjs/toolkit'
2 | import { reefBalanceList, reefApproveList, reefEvmAddress } from './actions'
3 |
4 | export interface BurnState {
5 | readonly reefBalanceList: any
6 | readonly reefApproveList: any
7 | readonly reefEvmAddress: any
8 | }
9 |
10 | const initialState: BurnState = {
11 | reefBalanceList: {},
12 | reefApproveList: {},
13 | reefEvmAddress: '',
14 | }
15 |
16 | export default createReducer(initialState, builder =>
17 | builder
18 | .addCase(reefBalanceList, (state, { payload: { list } }) => {
19 | state.reefBalanceList = list
20 | })
21 | .addCase(reefEvmAddress, (state, { payload: { address } }) => {
22 | // console.log('reefEvmAddress', address)
23 | state.reefEvmAddress = address
24 | })
25 | .addCase(reefApproveList, (state, { payload: { token, result } }) => {
26 | // state.trxApproveList = list
27 | if (!state.reefApproveList) state.reefApproveList = {}
28 | state.reefApproveList[token] = result
29 | })
30 | )
31 |
--------------------------------------------------------------------------------
/src/nonevm/solana/actions.ts:
--------------------------------------------------------------------------------
1 | import { createAction } from '@reduxjs/toolkit'
2 |
3 | export const solAddress = createAction<{ address: any }>('sol/solAddress')
4 | export const solBalanceList = createAction<{ list: any }>('sol/solBalanceList')
5 | export const solApproveList = createAction<{ token: any, result: any }>('sol/solApproveList')
6 |
--------------------------------------------------------------------------------
/src/nonevm/solana/reducer.ts:
--------------------------------------------------------------------------------
1 | import { createReducer } from '@reduxjs/toolkit'
2 | import { solAddress, solBalanceList, solApproveList } from './actions'
3 |
4 | export interface BurnState {
5 | readonly solAddress: any
6 | readonly solBalanceList: any
7 | readonly solApproveList: any
8 | }
9 |
10 | const initialState: BurnState = {
11 | solAddress: '',
12 | solBalanceList: {},
13 | solApproveList: {},
14 | }
15 |
16 | export default createReducer(initialState, builder =>
17 | builder
18 | .addCase(solAddress, (state, { payload: { address } }) => {
19 | state.solAddress = address
20 | })
21 | .addCase(solBalanceList, (state, { payload: { list } }) => {
22 | state.solBalanceList = list
23 | })
24 | .addCase(solApproveList, (state, { payload: { token, result } }) => {
25 | // state.trxApproveList = list
26 | if (!state.solApproveList) state.solApproveList = {}
27 | state.solApproveList[token] = result
28 | })
29 | )
30 |
--------------------------------------------------------------------------------
/src/nonevm/stellar/actions.ts:
--------------------------------------------------------------------------------
1 | import { createAction } from '@reduxjs/toolkit'
2 |
3 | export const xlmAddress = createAction<{ address: any }>('xlm/xlmAddress')
4 | export const balanceList = createAction<{ list: any }>('xlm/balanceList')
5 |
--------------------------------------------------------------------------------
/src/nonevm/stellar/reducer.ts:
--------------------------------------------------------------------------------
1 | import { createReducer } from '@reduxjs/toolkit'
2 | import { xlmAddress, balanceList } from './actions'
3 |
4 | export interface BurnState {
5 | readonly xlmAddress: any
6 | readonly balanceList: any
7 | }
8 |
9 | const initialState: BurnState = {
10 | xlmAddress: '',
11 | balanceList: {},
12 | }
13 |
14 | export default createReducer(initialState, builder =>
15 | builder
16 | .addCase(xlmAddress, (state, { payload: { address } }) => {
17 | state.xlmAddress = address
18 | })
19 | .addCase(balanceList, (state, { payload: { list } }) => {
20 | state.balanceList = list
21 | })
22 | )
23 |
--------------------------------------------------------------------------------
/src/nonevm/temp/actions.ts:
--------------------------------------------------------------------------------
1 | import { createAction } from '@reduxjs/toolkit'
2 |
3 | export const tempAddress = createAction<{ address: any }>('temp/tempAddress')
4 | export const tempBalanceList = createAction<{ list: any }>('temp/tempBalanceList')
5 | export const tempApproveList = createAction<{ token: any, result: any }>('temp/tempApproveList')
6 |
--------------------------------------------------------------------------------
/src/nonevm/temp/reducer.ts:
--------------------------------------------------------------------------------
1 | import { createReducer } from '@reduxjs/toolkit'
2 | import { tempAddress, tempBalanceList, tempApproveList } from './actions'
3 |
4 | export interface BurnState {
5 | readonly tempAddress: any
6 | readonly tempBalanceList: any
7 | readonly tempApproveList: any
8 | }
9 |
10 | const initialState: BurnState = {
11 | tempAddress: '',
12 | tempBalanceList: {},
13 | tempApproveList: {},
14 | }
15 |
16 | export default createReducer(initialState, builder =>
17 | builder
18 | .addCase(tempAddress, (state, { payload: { address } }) => {
19 | state.tempAddress = address
20 | })
21 | .addCase(tempBalanceList, (state, { payload: { list } }) => {
22 | state.tempBalanceList = list
23 | })
24 | .addCase(tempApproveList, (state, { payload: { token, result } }) => {
25 | // state.trxApproveList = list
26 | if (!state.tempApproveList) state.tempApproveList = {}
27 | state.tempApproveList[token] = result
28 | })
29 | )
30 |
--------------------------------------------------------------------------------
/src/nonevm/temp/updater.ts:
--------------------------------------------------------------------------------
1 |
2 | import { useCallback, useEffect } from 'react'
3 | import { useActiveReact } from '../../hooks/useActiveReact'
4 |
5 | import {useLoginTemp} from './index'
6 |
7 | export default function Updater(): null {
8 | const { chainId } = useActiveReact()
9 |
10 | const {loginTemp} = useLoginTemp()
11 |
12 | const getTempAddress = useCallback(() => {
13 | loginTemp()
14 | }, [chainId])
15 |
16 | useEffect(() => {
17 | getTempAddress()
18 | }, [chainId])
19 |
20 | return null
21 | }
22 |
--------------------------------------------------------------------------------
/src/nonevm/trx/actions.ts:
--------------------------------------------------------------------------------
1 | import { createAction } from '@reduxjs/toolkit'
2 |
3 | export const trxAddress = createAction<{ address: any }>('trx/trxAddress')
4 | export const trxBalanceList = createAction<{ list: any }>('trx/trxBalanceList')
5 | export const trxApproveList = createAction<{ token: any, result: any }>('trx/trxApproveList')
6 |
--------------------------------------------------------------------------------
/src/nonevm/trx/reducer.ts:
--------------------------------------------------------------------------------
1 | import { createReducer } from '@reduxjs/toolkit'
2 | import { trxAddress, trxBalanceList,trxApproveList } from './actions'
3 |
4 | export interface BurnState {
5 | readonly trxAddress: any
6 | readonly trxBalanceList: any
7 | readonly trxApproveList: any
8 | }
9 |
10 | const initialState: BurnState = {
11 | trxAddress: '',
12 | trxBalanceList: {},
13 | trxApproveList: {},
14 | }
15 |
16 | export default createReducer(initialState, builder =>
17 | builder
18 | .addCase(trxAddress, (state, { payload: { address } }) => {
19 | state.trxAddress = address
20 | })
21 | .addCase(trxBalanceList, (state, { payload: { list } }) => {
22 | state.trxBalanceList = list
23 | })
24 | .addCase(trxApproveList, (state, { payload: { token, result } }) => {
25 | // state.trxApproveList = list
26 | if (!state.trxApproveList) state.trxApproveList = {}
27 | state.trxApproveList[token] = result
28 | })
29 | )
30 |
--------------------------------------------------------------------------------
/src/pages/AppBody.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import styled from 'styled-components'
3 |
4 | export const BodyWrapper = styled.div`
5 | position: relative;
6 | width: 100%;
7 | height: 100%;
8 | padding: 2.5rem 70px;
9 | overflow:auto;
10 | margin:auto;
11 | ${({ theme }) => theme.mediaWidth.upToMedium`
12 | padding: 0rem 0px;
13 | `};
14 | `
15 |
16 | const BodyContent = styled.div`
17 | width: 100%;
18 | height: 100%;
19 | padding: 0rem 0px;
20 | overflow: auto;
21 | ${({ theme }) => theme.mediaWidth.upToMedium`
22 | overflow:auto;
23 | padding: 0px;
24 | left:0;
25 | bottom:65px;
26 | `};
27 | `
28 |
29 | /**
30 | * The styled container element that wraps the content of most pages and the tabs.
31 | */
32 | export default function AppBody({ children }: { children: React.ReactNode }) {
33 | return (
34 |
35 | {children}
36 |
37 | )
38 | }
39 |
--------------------------------------------------------------------------------
/src/pages/History/hooks.ts:
--------------------------------------------------------------------------------
1 | export function getSymbol (pairid:any) {
2 | if (pairid === 'any') {
3 | return pairid.toUpperCase()
4 | }
5 | // const pairid = row.pairid ? row.pairid.replace('v2', '').replace('v3', '').replace('v4', '').replace('v5', '').replace('v6', '').replace('any', '').toUpperCase() : (obj ? obj.symbol : '')
6 |
7 | // console.log(row.pairid)
8 | const symbol = pairid ? pairid.replace(/v[0-9]+$/, '').replace('any', '').toUpperCase() : ''
9 | return symbol
10 | }
11 |
12 | const txnsType = ['swapout']
13 |
14 | export function getFromChainId (tx:any) {
15 | if (tx?.fromChainID) {
16 | return tx?.fromChainID
17 | } else if (!txnsType.includes(tx?.historyType)) {
18 | return tx?.srcChainID
19 | } else {
20 | return tx?.destChainID
21 | }
22 | }
23 |
24 | export function getToChainId (tx:any) {
25 | if (tx?.toChainID) {
26 | return tx?.toChainID
27 | } else if (!txnsType.includes(tx?.historyType)) {
28 | return tx?.destChainID
29 | } else {
30 | return tx?.srcChainID
31 | }
32 | }
--------------------------------------------------------------------------------
/src/pages/Test/index.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 |
3 | import { ButtonLight } from '../../components/Button'
4 |
5 | import AppBody from '../AppBody'
6 |
7 | import {
8 | getTokenlist,
9 | // setTokenlist
10 | } from '../../utils/indexedDB'
11 |
12 | // import {
13 | // // useLogin,
14 | // useNearSendTxns
15 | // } from '../../hooks/near'
16 |
17 |
18 |
19 | export default function TestWarpper () {
20 |
21 | // const {execute: sendNearTxns} = useNearSendTxns('1', 'dwinter.testnet')
22 | return (
23 | <>
24 |
25 | {
26 | // if (sendNearTxns) sendNearTxns()
27 | getTokenlist('56')
28 | }}>test
29 | {
30 | // if (sendNearTxns) sendNearTxns()
31 | // setTokenlist('56', {name: 'test'})
32 | }}>test1
33 |
34 | >
35 | )
36 | }
--------------------------------------------------------------------------------
/src/state/burn/actions.ts:
--------------------------------------------------------------------------------
1 | import { createAction } from '@reduxjs/toolkit'
2 |
3 | export enum Field {
4 | LIQUIDITY_PERCENT = 'LIQUIDITY_PERCENT',
5 | LIQUIDITY = 'LIQUIDITY',
6 | CURRENCY_A = 'CURRENCY_A',
7 | CURRENCY_B = 'CURRENCY_B'
8 | }
9 |
10 | export const typeInput = createAction<{ field: Field; typedValue: string }>('burn/typeInputBurn')
11 |
--------------------------------------------------------------------------------
/src/state/burn/hooks.ts:
--------------------------------------------------------------------------------
1 | import { useCallback } from 'react'
2 | import { useDispatch, useSelector } from 'react-redux'
3 | import { AppDispatch, AppState } from '../index'
4 | import { Field, typeInput } from './actions'
5 |
6 | export function useBurnState(): AppState['burn'] {
7 | return useSelector(state => state.burn)
8 | }
9 |
10 | export function useBurnActionHandlers(): {
11 | onUserInput: (field: Field, typedValue: string) => void
12 | } {
13 | const dispatch = useDispatch()
14 |
15 | const onUserInput = useCallback(
16 | (field: Field, typedValue: string) => {
17 | dispatch(typeInput({ field, typedValue }))
18 | },
19 | [dispatch]
20 | )
21 |
22 | return {
23 | onUserInput
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src/state/burn/reducer.ts:
--------------------------------------------------------------------------------
1 | import { createReducer } from '@reduxjs/toolkit'
2 | import { Field, typeInput } from './actions'
3 |
4 | export interface BurnState {
5 | readonly independentField: Field
6 | readonly typedValue: string
7 | }
8 |
9 | const initialState: BurnState = {
10 | independentField: Field.LIQUIDITY_PERCENT,
11 | typedValue: '0'
12 | }
13 |
14 | export default createReducer(initialState, builder =>
15 | builder.addCase(typeInput, (state, { payload: { field, typedValue } }) => {
16 | return {
17 | ...state,
18 | independentField: field,
19 | typedValue
20 | }
21 | })
22 | )
23 |
--------------------------------------------------------------------------------
/src/state/global/actions.ts:
--------------------------------------------------------------------------------
1 | import { createAction } from '@reduxjs/toolkit'
2 |
3 | // fired once when the app reloads but before the app renders
4 | // allows any updates to be applied to store data loaded from localStorage
5 | export const updateVersion = createAction('global/updateVersion')
6 |
--------------------------------------------------------------------------------
/src/state/nft/actions.ts:
--------------------------------------------------------------------------------
1 | import { createAction } from '@reduxjs/toolkit'
2 |
3 | export const nftlist = createAction<{ chainId: any; tokenList: any, version:any }>('nft/nftlist')
4 | export const nftlistinfo = createAction<{ chainId: any; tokenList: any}>('nft/nftlistinfo')
5 | export const updateNftlistTime = createAction<{}>('nft/updateNftlistTime')
6 |
--------------------------------------------------------------------------------
/src/state/nft/reducer.ts:
--------------------------------------------------------------------------------
1 | import { createReducer } from '@reduxjs/toolkit'
2 | import { nftlist, nftlistinfo, updateNftlistTime } from './actions'
3 |
4 | export interface BurnState {
5 | readonly nftlist: any
6 | readonly nftlistinfo: any
7 | readonly updateNftlistTime: any
8 | }
9 |
10 | const initialState: BurnState = {
11 | nftlist: {},
12 | nftlistinfo: {},
13 | updateNftlistTime: ''
14 | }
15 |
16 | export default createReducer(initialState, builder =>
17 | builder
18 | .addCase(nftlist, (state, { payload: { chainId, tokenList, version } }) => {
19 | state.nftlist= {
20 | [chainId]: {tokenList, timestamp: Date.now(), version}
21 | }
22 | })
23 | .addCase(nftlistinfo, (state, { payload: { chainId, tokenList } }) => {
24 | state.nftlistinfo= {
25 | [chainId]: {tokenList, timestamp: Date.now()}
26 | }
27 | })
28 | .addCase(updateNftlistTime, (state, { payload: { } }) => {
29 | state.updateNftlistTime = Date.now()
30 | })
31 | )
32 |
--------------------------------------------------------------------------------
/src/state/pools/actions.ts:
--------------------------------------------------------------------------------
1 | import { createAction } from '@reduxjs/toolkit'
2 |
3 | // export const poolLiquidity = createAction<{poolLiquidity:any}>('pools/liquidity')
4 | export const poolList = createAction<{chainId:any, tokenList:any, version:any}>('pools/poolList')
5 | export const updatePoollistTime = createAction<{}>('lists/updatePoollistTime')
--------------------------------------------------------------------------------
/src/state/rpc/actions.ts:
--------------------------------------------------------------------------------
1 | import { createAction } from '@reduxjs/toolkit'
2 |
3 | export const rpclist = createAction<{ chainId: any; rpclist: any }>('rpc/rpclist')
4 |
--------------------------------------------------------------------------------
/src/state/rpc/hooks.ts:
--------------------------------------------------------------------------------
1 | // import { useCallback, useEffect, useState, useMemo } from 'react'
2 | // import { useDispatch, useSelector } from 'react-redux'
3 | // import { AppDispatch, AppState } from '../index'
4 | import { useSelector } from 'react-redux'
5 | import { AppState } from '../index'
6 | // import { rpclist } from './actions'
7 |
8 | import { useActiveReact } from '../../hooks/useActiveReact'
9 |
10 | export function useRpcState(): any {
11 | const { chainId } = useActiveReact()
12 | const list:any = useSelector(state => state.rpc.rpclist)
13 | if (!chainId || !list[chainId]) return {}
14 |
15 | return list[chainId]
16 | }
17 |
--------------------------------------------------------------------------------
/src/state/swap/actions.ts:
--------------------------------------------------------------------------------
1 | import { createAction } from '@reduxjs/toolkit'
2 |
3 | export enum Field {
4 | INPUT = 'INPUT',
5 | OUTPUT = 'OUTPUT'
6 | }
7 |
8 | export const selectCurrency = createAction<{
9 | field: Field;
10 | currencyId: string,
11 | decimals: number,
12 | symbol: string,
13 | name: string,
14 | chainId: any
15 | }>('swap/selectCurrency')
16 | export const switchCurrencies = createAction('swap/switchCurrencies')
17 | export const typeInput = createAction<{ field: Field; typedValue: string }>('swap/typeInput')
18 | export const replaceSwapState = createAction<{
19 | field: Field
20 | typedValue: string
21 | inputCurrencyId?: string
22 | outputCurrencyId?: string
23 | recipient: string | null
24 | decimals?: number,
25 | symbol?: string,
26 | name?: string,
27 | chainId?: any
28 | }>('swap/replaceSwapState')
29 | export const setRecipient = createAction<{ recipient: string | null }>('swap/setRecipient')
30 |
--------------------------------------------------------------------------------
/src/state/updaters.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import ApplicationUpdater from './application/updater'
3 | import ListsUpdater from './lists/updater'
4 | import MulticallUpdater from './multicall/updater'
5 | import TransactionUpdater from './transactions/updater'
6 | import UserUpdater from './user/updater'
7 | // import PoolsUpdater from './pools/updater'
8 | import WalletUpdater from './wallet/updater'
9 |
10 | import NonevmUpdater from '../nonevm/updater'
11 | // import RpcUpdater from './rpc/updater'
12 |
13 | export function Updaters() {
14 | return (
15 | <>
16 |
17 |
18 | {/* */}
19 |
20 |
21 |
22 |
23 |
24 | {/* */}
25 | {/* */}
26 | >
27 | )
28 | }
--------------------------------------------------------------------------------
/src/state/wallet/actions.ts:
--------------------------------------------------------------------------------
1 | import { createAction } from '@reduxjs/toolkit'
2 |
3 | export const WALLET_VIEWS = {
4 | OPTIONS: 'options',
5 | OPTIONS_SECONDARY: 'options_secondary',
6 | ACCOUNT: 'account',
7 | PENDING: 'pending'
8 | }
9 |
10 | export const tokenBalanceList = createAction<{chainId: any, tokenList:any, account:any}>('wallet/tokenBalanceList')
11 | export const walletViews = createAction<{type: any}>('wallet/walletViews')
12 | export const updateTokenBalance = createAction<{chainId: any, token:any, account:any, balance:string, decimals:number}>('wallet/updateTokenBalance')
--------------------------------------------------------------------------------
/src/theme/DarkModeQueryParamReader.tsx:
--------------------------------------------------------------------------------
1 | import { useEffect } from 'react'
2 | import { useDispatch } from 'react-redux'
3 | import { RouteComponentProps } from 'react-router-dom'
4 | import { parse } from 'qs'
5 | import { AppDispatch } from '../state'
6 | import { updateUserDarkMode } from '../state/user/actions'
7 |
8 | export default function DarkModeQueryParamReader({ location: { search } }: RouteComponentProps): null {
9 | const dispatch = useDispatch()
10 |
11 | useEffect(() => {
12 | if (!search) return
13 | if (search.length < 2) return
14 |
15 | const parsed = parse(search, {
16 | parseArrays: false,
17 | ignoreQueryPrefix: true
18 | })
19 |
20 | const theme = parsed.theme
21 |
22 | if (typeof theme !== 'string') return
23 |
24 | if (theme.toLowerCase() === 'light') {
25 | dispatch(updateUserDarkMode({ userDarkMode: false }))
26 | } else if (theme.toLowerCase() === 'dark') {
27 | dispatch(updateUserDarkMode({ userDarkMode: true }))
28 | }
29 | }, [dispatch, search])
30 |
31 | return null
32 | }
33 |
--------------------------------------------------------------------------------
/src/utils/bridge/type.ts:
--------------------------------------------------------------------------------
1 | // 获取合约配置
2 | export const CROSSCHAINBRIDGE = 'CROSSCHAINBRIDGE'
--------------------------------------------------------------------------------
/src/utils/chunkArray.test.ts:
--------------------------------------------------------------------------------
1 | import chunkArray from './chunkArray'
2 |
3 | describe('#chunkArray', () => {
4 | it('size 1', () => {
5 | expect(chunkArray([1, 2, 3], 1)).toEqual([[1], [2], [3]])
6 | })
7 | it('size 0 throws', () => {
8 | expect(() => chunkArray([1, 2, 3], 0)).toThrow('maxChunkSize must be gte 1')
9 | })
10 | it('size gte items', () => {
11 | expect(chunkArray([1, 2, 3], 3)).toEqual([[1, 2, 3]])
12 | expect(chunkArray([1, 2, 3], 4)).toEqual([[1, 2, 3]])
13 | })
14 | it('size exact half', () => {
15 | expect(chunkArray([1, 2, 3, 4], 2)).toEqual([
16 | [1, 2],
17 | [3, 4]
18 | ])
19 | })
20 | it('evenly distributes', () => {
21 | const chunked = chunkArray([...Array(100).keys()], 40)
22 |
23 | expect(chunked).toEqual([
24 | [...Array(34).keys()],
25 | [...Array(34).keys()].map(i => i + 34),
26 | [...Array(32).keys()].map(i => i + 68)
27 | ])
28 |
29 | expect(chunked[0][0]).toEqual(0)
30 | expect(chunked[2][31]).toEqual(99)
31 | })
32 | })
33 |
--------------------------------------------------------------------------------
/src/utils/chunkArray.ts:
--------------------------------------------------------------------------------
1 | // chunks array into chunks of maximum size
2 | // evenly distributes items among the chunks
3 | export default function chunkArray(items: T[], maxChunkSize: number): T[][] {
4 | if (maxChunkSize < 1) throw new Error('maxChunkSize must be gte 1')
5 | if (items.length <= maxChunkSize) return [items]
6 |
7 | const numChunks: number = Math.ceil(items.length / maxChunkSize)
8 | const chunkSize = Math.ceil(items.length / numChunks)
9 |
10 | return [...Array(numChunks).keys()].map(ix => items.slice(ix * chunkSize, ix * chunkSize + chunkSize))
11 | }
12 |
--------------------------------------------------------------------------------
/src/utils/contenthashToUri.test.skip.ts:
--------------------------------------------------------------------------------
1 | import contenthashToUri, { hexToUint8Array } from './contenthashToUri'
2 |
3 | // this test is skipped for now because importing CID results in
4 | // TypeError: TextDecoder is not a constructor
5 |
6 | describe('#contenthashToUri', () => {
7 | it('1inch.tokens.eth contenthash', () => {
8 | expect(contenthashToUri('0xe3010170122013e051d1cfff20606de36845d4fe28deb9861a319a5bc8596fa4e610e8803918')).toEqual(
9 | 'ipfs://QmPgEqyV3m8SB52BS2j2mJpu9zGprhj2BGCHtRiiw2fdM1'
10 | )
11 | })
12 | it('uniswap.eth contenthash', () => {
13 | expect(contenthashToUri('0xe5010170000f6170702e756e69737761702e6f7267')).toEqual('ipns://app.uniswap.org')
14 | })
15 | })
16 |
17 | describe('#hexToUint8Array', () => {
18 | it('common case', () => {
19 | expect(hexToUint8Array('0x010203fdfeff')).toEqual(new Uint8Array([1, 2, 3, 253, 254, 255]))
20 | })
21 | })
22 |
--------------------------------------------------------------------------------
/src/utils/getLibrary.ts:
--------------------------------------------------------------------------------
1 | import { Web3Provider } from '@ethersproject/providers'
2 |
3 | export default function getLibrary(provider: any): any {
4 | if (provider) {
5 | const library = new Web3Provider(provider, 'any')
6 | library.pollingInterval = 3000
7 | return library
8 | }
9 | return ''
10 | }
11 |
--------------------------------------------------------------------------------
/src/utils/indexedDB/index.ts:
--------------------------------------------------------------------------------
1 | export * from './tokenlist'
2 | // export * from './poollist'
3 | export * from './config'
--------------------------------------------------------------------------------
/src/utils/isZero.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Returns true if the string value is zero in hex
3 | * @param hexNumberString
4 | */
5 | export default function isZero(hexNumberString: string) {
6 | return /^0x0*$/.test(hexNumberString)
7 | }
8 |
--------------------------------------------------------------------------------
/src/utils/listVersionLabel.ts:
--------------------------------------------------------------------------------
1 |
2 | export default function listVersionLabel(version: any): string {
3 | return `v${version.major}.${version.minor}.${version.patch}`
4 | }
5 |
--------------------------------------------------------------------------------
/src/utils/parseENSAddress.test.ts:
--------------------------------------------------------------------------------
1 | import { parseENSAddress } from './parseENSAddress'
2 |
3 | describe('parseENSAddress', () => {
4 | it('test cases', () => {
5 | expect(parseENSAddress('hello.eth')).toEqual({ ensName: 'hello.eth', ensPath: undefined })
6 | expect(parseENSAddress('hello.eth/')).toEqual({ ensName: 'hello.eth', ensPath: '/' })
7 | expect(parseENSAddress('hello.world.eth/')).toEqual({ ensName: 'hello.world.eth', ensPath: '/' })
8 | expect(parseENSAddress('hello.world.eth/abcdef')).toEqual({ ensName: 'hello.world.eth', ensPath: '/abcdef' })
9 | expect(parseENSAddress('abso.lutely')).toEqual(undefined)
10 | expect(parseENSAddress('abso.lutely.eth')).toEqual({ ensName: 'abso.lutely.eth', ensPath: undefined })
11 | expect(parseENSAddress('eth')).toEqual(undefined)
12 | expect(parseENSAddress('eth/hello-world')).toEqual(undefined)
13 | })
14 | })
15 |
--------------------------------------------------------------------------------
/src/utils/parseENSAddress.ts:
--------------------------------------------------------------------------------
1 | const ENS_NAME_REGEX = /^(([a-zA-Z0-9]+\.)+)eth(\/.*)?$/
2 |
3 | export function parseENSAddress(ensAddress: string): { ensName: string; ensPath: string | undefined } | undefined {
4 | const match = ensAddress.match(ENS_NAME_REGEX)
5 | if (!match) return undefined
6 | return { ensName: `${match[1].toLowerCase()}eth`, ensPath: match[3] }
7 | }
8 |
--------------------------------------------------------------------------------
/src/utils/uriToHttp.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Given a URI that may be ipfs, ipns, http, or https protocol, return the fetch-able http(s) URLs for the same content
3 | * @param uri to convert to fetch-able http url
4 | */
5 | export default function uriToHttp(uri: string): string[] {
6 | const protocol = uri.split(':')[0].toLowerCase()
7 | switch (protocol) {
8 | case 'https':
9 | return [uri]
10 | case 'http':
11 | // return ['https' + uri.substr(4), uri]
12 | return [uri]
13 | case 'ipfs':
14 | const hash = uri.match(/^ipfs:(\/\/)?(.*)$/i)?.[2]
15 | return [`https://cloudflare-ipfs.com/ipfs/${hash}/`, `https://ipfs.io/ipfs/${hash}/`]
16 | case 'ipns':
17 | const name = uri.match(/^ipns:(\/\/)?(.*)$/i)?.[2]
18 | return [`https://cloudflare-ipfs.com/ipns/${name}/`, `https://ipfs.io/ipns/${name}/`]
19 | default:
20 | return []
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es5",
4 | "lib": ["dom", "dom.iterable", "esnext"],
5 | "allowJs": true,
6 | "skipLibCheck": true,
7 | "forceConsistentCasingInFileNames": true,
8 | "noEmit": true,
9 | "esModuleInterop": true,
10 | "module": "esnext",
11 | "strict": true,
12 | "alwaysStrict": true,
13 | "strictNullChecks": true,
14 | "noUnusedLocals": true,
15 | "noFallthroughCasesInSwitch": true,
16 | "noImplicitAny": true,
17 | "noImplicitThis": true,
18 | "noImplicitReturns": true,
19 | "moduleResolution": "node",
20 | "resolveJsonModule": true,
21 | "isolatedModules": true,
22 | "jsx": "preserve",
23 | "downlevelIteration": true,
24 | "allowSyntheticDefaultImports": true,
25 | "types": ["react-spring", "jest"]
26 | },
27 | "exclude": ["node_modules", "cypress"],
28 | "include": ["./src/**/*.ts", "./src/**/*.tsx", "src/pages/Farms/FarmsList.tsx"]
29 | }
30 |
--------------------------------------------------------------------------------