{"version":3,"sources":["../src/index.ts","../src/hooks/useWallets.ts","../src/context/WalletProvider.tsx","../src/connection/connectors.ts","../src/chains.ts","../src/connection/utils.ts","../src/hooks/useOrderedConnections.ts"],"sourcesContent":["export * from '@web3-react/core'\nexport * from './hooks/useWallets'\nexport * from './chains'\nexport * from './connection/connectors'\nexport * from './context/WalletProvider'\nexport * from './connection/utils'\n","import { useContext } from 'react'\nimport { WalletContext } from '../context/WalletProvider'\n\nexport function useWallets() {\n  const context = useContext(WalletContext)\n  if (context === undefined) {\n    throw new Error('useWallet must be used within a useWalletsProvider')\n  }\n  return context\n}\n","import { useWeb3React, Web3ReactHooks, Web3ReactProvider } from '@web3-react/core'\nimport React, { useEffect, useState, ReactNode, useMemo } from 'react'\nimport { AddEthereumChainParameter, Connector } from '@web3-react/types'\nimport { ethers } from 'ethers'\nimport { RomeEventType, widgetBridge } from '@romeblockchain/bridge'\nimport bannedAccounts from '../../src/bannedAccounts.json'\nimport { Connection, ConnectionType, networkConnection } from '../connection/connectors'\nimport { getConnection, getConnectionName } from '../connection/utils'\nimport useOrderedConnections from '../hooks/useOrderedConnections'\n\nexport interface IWalletContext {\n  setSelectedWallet: (ConnectionType: undefined) => void\n  selectedWallet: ConnectionType | undefined\n  handleConnect: (connector: Connector, chainParams?: AddEthereumChainParameter) => Promise<void>\n  loading: boolean\n}\n\nexport const WalletContext = React.createContext<IWalletContext>({\n  setSelectedWallet: () => {},\n  selectedWallet: undefined,\n  handleConnect: async () => {},\n  loading: false,\n})\n\nconst OfacBan = ({ children }: any) => {\n  const { account } = useWeb3React()\n  const ofacBanned = account && bannedAccounts.includes(account.toLowerCase())\n  if (ofacBanned) {\n    return (\n      <div\n        style={{\n          display: 'flex',\n          justifyContent: 'center',\n          alignItems: 'center',\n          width: '100%',\n          height: '100%',\n        }}\n      >\n        <div\n          style={{\n            padding: '1.25rem',\n            backgroundColor: '#991b1b',\n            borderRadius: '0.375rem',\n          }}\n        >\n          <p\n            style={{\n              marginBottom: '0.75rem',\n              fontSize: 'large',\n            }}\n          >\n            Blocked Address\n          </p>\n          <p>This address is blocked because it is associated with banned activities.</p>\n        </div>\n      </div>\n    )\n  }\n  return children\n}\n\nexport const WalletProvider = ({ children, connectToNetwork }: { children: ReactNode; connectToNetwork?: boolean }) => {\n  const [selectedWallet, setSelectedWallet] = useState<ConnectionType>()\n  const [loading, setLoading] = useState(false)\n\n  const connections = useOrderedConnections(selectedWallet)\n\n  const handleConnect = async (connector: Connector, chainParams?: AddEthereumChainParameter) => {\n    const connection = getConnection(connector)\n    const chainIdInput = chainParams && chainParams.chainId ? chainParams.chainId : undefined\n    const chainIdInputHex = chainIdInput ? ethers.utils.hexValue(chainIdInput) : undefined\n    setLoading(true)\n\n    try {\n      // error would return true if user rejects the wallet connection request\n      // if network doesnt exist yet connector.activate would not throw an error and still successsfully activate\n      await connector.activate(chainIdInput)\n      // activate needs to occur before wallet_addEthereumChain because we can only make requests with an active\n      // connector.\n\n      // check if chainId was passed, if it did, then we can assume that\n      // the user wished to add \"Chain\" and do a \"Network Switch\"\n      // otherwise this is just simply a wallet connect\n      if (chainIdInput != undefined) {\n        // calling wallet_addEthereumChain will check if the chainId is already present in the wallet\n        // if the chainId alreaady exists then it wont add the duplicate network to the wallet\n        connector.provider\n          ?.request({\n            method: 'wallet_addEthereumChain',\n            params: [\n              {\n                ...chainParams,\n                chainId: chainIdInputHex,\n              },\n            ],\n          })\n          .then(() => console.log('chain added'))\n  \n        connector.provider\n          ?.request({\n            method: 'wallet_switchEthereumChain',\n            params: [{ \n              chainId: chainIdInputHex\n            }],\n          })\n          .then(() => console.log('switched network'))\n  \n        // we need to subscribe to chainChanged because we would only want to switch selectedWallet when\n        // the user has switched networks especially when the netork is newly added\n        connector.provider?.once('chainChanged', () => {\n          console.log('Chain changed')\n          setSelectedWallet(connection.type)\n          connector.provider?.removeListener('chainChanged', () => {})\n        })\n      }\n\n      // If wallet is already connected to the correct network then set wallet as priority wallet\n      const chainId = await connector.provider?.request({\n        method: 'eth_chainId',\n      })\n\n      const accounts = (await connector.provider?.request({\n        method: 'eth_requestAccounts',\n      })) as string[]\n\n      widgetBridge?.sendWalletConnectEvent(RomeEventType.WIDGET_WALLET_CONNECT_EVENT, {\n        address: accounts[0],\n        wallet: ConnectionType as any,\n      })\n\n      if (!chainId) throw new Error('Unable to get chainID from provider')\n\n      if (chainId === chainIdInputHex) {\n        setSelectedWallet(connection.type)\n      }\n    } catch (error: any) {\n      throw new Error('Unable to connect to wallet. error:', error)\n    }\n\n    setLoading(false)\n  }\n\n  useEffect(() => {\n    if (!selectedWallet) {\n      widgetBridge?.sendWalletDisconnectEvent(RomeEventType.WIDGET_WALLET_DISCONNECT_EVENT)\n    }\n  }, [selectedWallet])\n\n  useEffect(() => {\n    if (connectToNetwork) {\n      networkConnection.connector.activate()\n    }\n  }, [connectToNetwork])\n\n  const key = useMemo(() => connections.map(({ type }: Connection) => getConnectionName(type)).join('-'), [connections])\n\n  const connectors: [Connector, Web3ReactHooks][] = connections.map(({ hooks, connector }) => [connector, hooks])\n  return (\n    <Web3ReactProvider connectors={connectors} key={key}>\n      <WalletContext.Provider value={{ selectedWallet, setSelectedWallet, handleConnect, loading }}>\n        <OfacBan>{children}</OfacBan>\n      </WalletContext.Provider>\n    </Web3ReactProvider>\n  )\n}\n","import { CoinbaseWallet } from '@web3-react/coinbase-wallet'\nimport { initializeConnector, Web3ReactHooks } from '@web3-react/core'\nimport { MetaMask } from '@web3-react/metamask'\nimport { Network } from '@web3-react/network'\nimport { Connector } from '@web3-react/types'\nimport { WalletConnect } from '@web3-react/walletconnect'\nimport { URLS } from '../chains'\n\nexport enum ConnectionType {\n  INJECTED = 'INJECTED',\n  COINBASE_WALLET = 'COINBASE_WALLET',\n  WALLET_CONNECT = 'WALLET_CONNECT',\n  NETWORK = 'NETWORK',\n  GNOSIS_SAFE = 'GNOSIS_SAFE',\n}\n\nexport interface Connection {\n  connector: Connector\n  hooks: Web3ReactHooks\n  type: ConnectionType\n}\n\nfunction onError(error: Error) {\n  console.debug(`web3-react error: ${error}`)\n}\n\nconst [web3Network, web3NetworkHooks] = initializeConnector<Network>(\n  (actions) =>\n    new Network({\n      actions,\n      urlMap: URLS,\n      defaultChainId: 1,\n    }),\n)\nexport const networkConnection: Connection = {\n  connector: web3Network,\n  hooks: web3NetworkHooks,\n  type: ConnectionType.NETWORK,\n}\n\nconst [web3Injected, web3InjectedHooks] = initializeConnector<MetaMask>((actions) => new MetaMask({ actions, onError }))\nexport const injectedConnection: Connection = {\n  connector: web3Injected,\n  hooks: web3InjectedHooks,\n  type: ConnectionType.INJECTED,\n}\n\nconst [web3WalletConnect, web3WalletConnectHooks] = initializeConnector<WalletConnect>((actions) => {\n  return new WalletConnect({\n    actions,\n    options: {\n      rpc: URLS,\n      qrcode: true,\n    },\n    onError,\n  })\n})\nexport const walletConnectConnection: Connection = {\n  connector: web3WalletConnect,\n  hooks: web3WalletConnectHooks,\n  type: ConnectionType.WALLET_CONNECT,\n}\n\nconst [web3CoinbaseWallet, web3CoinbaseWalletHooks] = initializeConnector<CoinbaseWallet>(\n  (actions) =>\n    new CoinbaseWallet({\n      actions,\n      options: {\n        url: URLS[1][0],\n        appName: 'RBL',\n        appLogoUrl: 'https://app.benqi.fi/favicon.svg',\n        reloadOnDisconnect: false,\n      },\n      onError,\n    }),\n)\nexport const coinbaseWalletConnection: Connection = {\n  connector: web3CoinbaseWallet,\n  hooks: web3CoinbaseWalletHooks,\n  type: ConnectionType.COINBASE_WALLET,\n}\n\nexport const ConnectionList: Connection[] = [injectedConnection, coinbaseWalletConnection, walletConnectConnection]\n","import type { AddEthereumChainParameter } from '@web3-react/types'\n\nconst INFURA_KEY = process.env.REACT_APP_INFURA_KEY ? process.env.REACT_APP_INFURA_KEY : process.env.INFURA_KEY\n\nconst ALCHEMY_KEY = process.env.REACT_APP_ALCHEMY_KEY ? process.env.REACT_APP_ALCHEMY_KEY : process.env.ALCHEMY_KEY\n\nconst ETH: AddEthereumChainParameter['nativeCurrency'] = {\n  name: 'Ether',\n  symbol: 'ETH',\n  decimals: 18,\n}\n\nconst MATIC: AddEthereumChainParameter['nativeCurrency'] = {\n  name: 'Matic',\n  symbol: 'MATIC',\n  decimals: 18,\n}\nconst AVAX: AddEthereumChainParameter['nativeCurrency'] = {\n  name: 'Avax',\n  symbol: 'AVAX',\n  decimals: 18,\n}\nconst BNB: AddEthereumChainParameter['nativeCurrency'] = {\n  name: 'Binance Coin',\n  symbol: 'BNB',\n  decimals: 18,\n}\n\nconst GLMR: AddEthereumChainParameter['nativeCurrency'] = {\n  name: 'Glimmer',\n  symbol: 'GLMR',\n  decimals: 18,\n}\nconst MOVR: AddEthereumChainParameter['nativeCurrency'] = {\n  name: 'Moonriver',\n  symbol: 'MOVR',\n  decimals: 18,\n}\nconst METIS: AddEthereumChainParameter['nativeCurrency'] = {\n  name: 'Metis',\n  symbol: 'METIS',\n  decimals: 18,\n}\n\nconst JEWEL: AddEthereumChainParameter['nativeCurrency'] = {\n  name: 'Jewel',\n  symbol: 'JEWEL',\n  decimals: 18,\n}\n\nconst KLAY: AddEthereumChainParameter['nativeCurrency'] = {\n  name: 'Klay',\n  symbol: 'KLAY',\n  decimals: 18,\n}\n\ninterface BasicChainInformation {\n  urls: (string | undefined)[]\n  name: string\n}\n\nexport enum NetworkName {\n  ETHEREUM = 'ethereum',\n  AVALANCHE = 'avalanche',\n  BINANCE = 'bsc',\n  MOONBEAM = 'moonbeam',\n  MOONRIVER = 'moonriver',\n  METIS = 'metis',\n  OPTIMISM = 'optimism',\n  POLYGON = 'polygon',\n  DFK = 'dfk',\n  KLAYTN = 'klaytn',\n}\n\ninterface ExtendedChainInformation extends BasicChainInformation {\n  nativeCurrency: AddEthereumChainParameter['nativeCurrency']\n  blockExplorerUrls: AddEthereumChainParameter['blockExplorerUrls']\n}\n\nexport function getAddChainParameters(chainId: number): AddEthereumChainParameter {\n  const chainInformation = CHAINS[chainId]\n  return {\n    chainId,\n    chainName: chainInformation.name,\n    nativeCurrency: chainInformation.nativeCurrency,\n    rpcUrls: chainInformation.urls as any,\n    blockExplorerUrls: chainInformation.blockExplorerUrls,\n  }\n}\n\nconst NetworkChainMap: { [key in NetworkName]: number } = {\n  ethereum: 1,\n  avalanche: 43114,\n  bsc: 56,\n  moonbeam: 1284,\n  moonriver: 1285,\n  metis: 1088,\n  optimism: 10,\n  polygon: 137,\n  dfk: 53935,\n  klaytn: 8217,\n}\n\nexport const CHAINS: { [chainId: number]: ExtendedChainInformation } = {\n  1: {\n    urls: [\n      INFURA_KEY ? `https://mainnet.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161` : undefined,\n      ALCHEMY_KEY ? `https://eth-mainnet.alchemyapi.io/v2/${ALCHEMY_KEY}` : undefined,\n      'https://cloudflare-eth.com',\n    ].filter((url) => url !== undefined),\n    name: 'Mainnet',\n    nativeCurrency: ETH,\n    blockExplorerUrls: ['https://etherscan.io/'],\n  },\n  5: {\n    urls: [INFURA_KEY ? `https://goerli.infura.io/v3/${INFURA_KEY}` : undefined].filter((url) => url !== undefined),\n    name: 'Görli',\n    nativeCurrency: ETH,\n    blockExplorerUrls: ['https://goerli.etherscan.io/'],\n  },\n  // Optimism\n  10: {\n    urls: [\n      INFURA_KEY ? `https://optimism-mainnet.infura.io/v3/${INFURA_KEY}` : undefined,\n      'https://mainnet.optimism.io',\n    ].filter((url) => url !== undefined),\n    name: 'Optimism',\n    nativeCurrency: ETH,\n    blockExplorerUrls: ['https://optimistic.etherscan.io'],\n  },\n  // Arbitrum\n  42161: {\n    urls: [\n      INFURA_KEY ? `https://arbitrum-mainnet.infura.io/v3/${INFURA_KEY}` : undefined,\n      'https://arb1.arbitrum.io/rpc',\n    ].filter((url) => url !== undefined),\n    name: 'Arbitrum One',\n    nativeCurrency: ETH,\n    blockExplorerUrls: ['https://arbiscan.io'],\n  },\n  // Polygon\n  137: {\n    urls: [\n      INFURA_KEY ? `https://polygon-mainnet.infura.io/v3/${INFURA_KEY}` : undefined,\n      'https://polygon-rpc.com',\n    ].filter((url) => url !== undefined),\n    name: 'Polygon Mainnet',\n    nativeCurrency: MATIC,\n    blockExplorerUrls: ['https://polygonscan.com'],\n  },\n  80001: {\n    urls: [INFURA_KEY ? `https://polygon-mumbai.infura.io/v3/${INFURA_KEY}` : undefined].filter(\n      (url) => url !== undefined,\n    ),\n    name: 'Polygon Mumbai',\n    nativeCurrency: MATIC,\n    blockExplorerUrls: ['https://mumbai.polygonscan.com'],\n  },\n  43114: {\n    urls: ['https://api.avax.network/ext/bc/C/rpc'].filter((url) => url !== undefined),\n    name: 'Avalanche',\n    nativeCurrency: AVAX,\n    blockExplorerUrls: ['https://snowtrace.io'],\n  },\n\n  56: {\n    urls: ['https://bsc-dataseed.binance.org'].filter((url) => url !== undefined),\n    name: 'Binance',\n    nativeCurrency: BNB,\n    blockExplorerUrls: ['https://bscscan.com'],\n  },\n  1284: {\n    urls: ['https://rpc.api.moonbeam.network'].filter((url) => url !== undefined),\n    name: 'Glimmer',\n    nativeCurrency: GLMR,\n    blockExplorerUrls: ['https://moonbeam.moonscan.io'],\n  },\n  1285: {\n    urls: ['https://rpc.moonriver.moonbeam.network'].filter((url) => url !== undefined),\n    name: 'Moonriver',\n    nativeCurrency: MOVR,\n    blockExplorerUrls: ['https://moonriver.moonscan.io'],\n  },\n  1088: {\n    urls: ['https://andromeda.metis.io/?owner=1088'].filter((url) => url !== undefined),\n    name: 'Metis',\n    nativeCurrency: METIS,\n    blockExplorerUrls: ['https://andromeda-explorer.metis.io'],\n  },\n  53935: {\n    urls: ['https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc'].filter((url) => url !== undefined),\n    name: 'DFK',\n    nativeCurrency: JEWEL,\n    blockExplorerUrls: ['https://subnets.avax.network/defi-kingdoms'],\n  },\n  8217: {\n    urls: ['https://public-node-api.klaytnapi.com/v1/cypress'].filter((url) => url !== undefined),\n    name: 'Klaytn',\n    nativeCurrency: KLAY,\n    blockExplorerUrls: ['https://scope.klaytn.com'],\n  },\n}\n\nexport const URLS: { [chainId: number]: string[] } = Object.keys(CHAINS).reduce<{ [chainId: number]: string[] }>(\n  (accumulator, chainId) => {\n    const validURLs: string[] = CHAINS[Number(chainId)].urls as any\n\n    if (validURLs.length) {\n      accumulator[Number(chainId)] = validURLs\n    }\n\n    return accumulator\n  },\n  {},\n)\nexport const getAddChainParametersfromNetworkName = (network: NetworkName): AddEthereumChainParameter | number => {\n  const chainId = NetworkChainMap[network]\n  return getAddChainParameters(chainId)\n}\n","import { Connector } from '@web3-react/types'\n\nimport {\n  injectedConnection,\n  coinbaseWalletConnection,\n  walletConnectConnection,\n  networkConnection,\n  ConnectionType,\n} from './connectors'\nconst CONNECTIONS = [injectedConnection, coinbaseWalletConnection, walletConnectConnection, networkConnection]\n\nexport function getConnection(connector: Connector | ConnectionType) {\n  if (connector instanceof Connector) {\n    const connection = CONNECTIONS.find((connection) => connection.connector === connector)\n    if (!connection) {\n      throw Error('unsupported connector')\n    }\n\n    return connection\n  } else {\n    switch (connector) {\n      case ConnectionType.INJECTED:\n        return injectedConnection\n      case ConnectionType.COINBASE_WALLET:\n        return coinbaseWalletConnection\n      case ConnectionType.WALLET_CONNECT:\n        return walletConnectConnection\n      case ConnectionType.NETWORK:\n        return networkConnection\n      default:\n        throw Error('invalid connector')\n    }\n  }\n}\n\nexport function getConnectionName(connectionType: ConnectionType, isMetaMask?: boolean, connectionName?: string) {\n  switch (connectionType) {\n    case ConnectionType.INJECTED:\n      return isMetaMask ? 'MetaMask' : connectionName ? connectionName : 'Browser Wallet'\n    case ConnectionType.COINBASE_WALLET:\n      return 'Coinbase Wallet'\n    case ConnectionType.WALLET_CONNECT:\n      return 'WalletConnect'\n    case ConnectionType.NETWORK:\n      return 'Network'\n    case ConnectionType.GNOSIS_SAFE:\n      return 'Gnosis Safe'\n  }\n}\n","import { useMemo } from 'react'\nimport { ConnectionType } from '../connection/connectors'\nimport { getConnection } from '../connection/utils'\n\nconst SELECTABLE_WALLETS = [ConnectionType.INJECTED, ConnectionType.COINBASE_WALLET, ConnectionType.WALLET_CONNECT]\n\nexport default function useOrderedConnections(selectedWallet: ConnectionType | undefined) {\n  return useMemo(() => {\n    const orderedConnectionTypes: ConnectionType[] = []\n\n    // Add the `selectedWallet` to the top so it's prioritized, then add the other selectable wallets.\n    if (selectedWallet) {\n      orderedConnectionTypes.push(selectedWallet)\n    }\n    orderedConnectionTypes.push(...SELECTABLE_WALLETS.filter((wallet) => wallet !== selectedWallet))\n\n    // Add network connection last as it should be the fallback.\n    orderedConnectionTypes.push(ConnectionType.NETWORK)\n\n    return orderedConnectionTypes.map(getConnection)\n  }, [selectedWallet])\n}\n"],"mappings":"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","names":[]}