import type React from 'react';

import type { PreDefinedNetwork } from 'types/networks';

import arbitrumIcon from 'icons/networks/icons/arbitrum.svg';
import artisIcon from 'icons/networks/icons/artis.svg';
import baseIcon from 'icons/networks/icons/base.svg';
import ethereumClassicIcon from 'icons/networks/icons/ethereum-classic.svg';
import ethereumIcon from 'icons/networks/icons/ethereum.svg';
import gnosisIcon from 'icons/networks/icons/gnosis.svg';
import goerliIcon from 'icons/networks/icons/goerli.svg';
import liFiIcon from 'icons/networks/icons/li-fi.svg';
import optimismIcon from 'icons/networks/icons/optimism.svg';
import poaSokolIcon from 'icons/networks/icons/poa-sokol.svg';
import poaIcon from 'icons/networks/icons/poa.svg';
import rootstockIcon from 'icons/networks/icons/rootstock.svg';
import rskIcon from 'icons/networks/icons/rsk.svg';
import zetachainIcon from 'icons/networks/icons/zetachain.svg';
import artisLogo from 'icons/networks/logos/artis.svg';
import astarLogo from 'icons/networks/logos/astar.svg';
import baseLogo from 'icons/networks/logos/base.svg';
import etcLogo from 'icons/networks/logos/etc.svg';
import ethLogo from 'icons/networks/logos/eth.svg';
import gnosisLogo from 'icons/networks/logos/gnosis.svg';
import goerliLogo from 'icons/networks/logos/goerli.svg';
import liFiLogo from 'icons/networks/logos/li-fi.svg';
import luksoLogo from 'icons/networks/logos/lukso.svg';
import poaLogo from 'icons/networks/logos/poa.svg';
import rootstockLogo from 'icons/networks/logos/rootstock.svg';
import rskLogo from 'icons/networks/logos/rsk.svg';
import shibuyaLogo from 'icons/networks/logos/shibuya.svg';
import shidenLogo from 'icons/networks/logos/shiden.svg';
import sokolLogo from 'icons/networks/logos/sokol.svg';
import zetachainLogo from 'icons/networks/logos/zetachain.svg';

interface NetworkAssets {
  icon?: React.FunctionComponent<React.SVGAttributes<SVGElement>>;
  logo?: React.FunctionComponent<React.SVGAttributes<SVGElement>>;
  smallLogo?: React.FunctionComponent<React.SVGAttributes<SVGElement>>;
}

const networkAssets: Partial<Record<PreDefinedNetwork, NetworkAssets>> = {
  gnosis: {
    icon: gnosisIcon,
    logo: gnosisLogo,
  },
  xdai_mainnet: {
    icon: gnosisIcon,
    logo: gnosisLogo,
  },
  xdai_optimism: {
    icon: optimismIcon,
  },
  xdai_aox: {
    icon: arbitrumIcon,
  },
  eth_mainnet: {
    icon: ethereumIcon,
    logo: ethLogo,
  },
  etc_mainnet: {
    icon: ethereumClassicIcon,
    logo: etcLogo,
  },
  poa_core: {
    icon: poaIcon,
    logo: poaLogo,
  },
  rsk_mainnet: {
    icon: rskIcon,
    logo: rskLogo,
  },
  xdai_testnet: {
    icon: arbitrumIcon,
    logo: gnosisLogo,
  },
  poa_sokol: {
    icon: poaSokolIcon,
    logo: sokolLogo,
  },
  artis_sigma1: {
    icon: artisIcon,
    logo: artisLogo,
  },
  lukso_l14: {
    logo: luksoLogo,
  },
  astar: {
    logo: astarLogo,
  },
  shiden: {
    logo: shidenLogo,
  },
  shibuya: {
    logo: shibuyaLogo,
  },
  goerli: {
    logo: goerliLogo,
    icon: goerliIcon,
  },
  base_goerli: {
    logo: baseLogo,
    icon: baseIcon,
  },
  zetachain: {
    logo: zetachainLogo,
    icon: zetachainIcon,
  },
  rootstock: {
    logo: rootstockLogo,
    icon: rootstockIcon,
  },
  'li-fi': {
    logo: liFiLogo,
    icon: liFiIcon,
  },
};

export default networkAssets;
