PHP WebShell

Текущая директория: /opt/BitGoJS/modules/statics/src

Просмотр файла: networks.ts

import { CoinFamily } from './base';

export enum NetworkType {
  MAINNET = 'mainnet',
  TESTNET = 'testnet',
}

export abstract class BaseNetwork {
  public abstract readonly name: string;
  public abstract readonly type: NetworkType;
  public abstract readonly family: CoinFamily;
  public abstract readonly explorerUrl: string | undefined;
}

export interface UtxoNetwork extends BaseNetwork {
  // Network name as defined in @bitgo/utxo-lib networks.ts
  utxolibName: string;
}

export interface LightningNetwork extends UtxoNetwork {
  /**
   * The public key of the Lightning service, used for deriving the shared Elliptic Curve Diffie-Hellman (ECDH) secret
   * between the user's extended private key and the Lightning service. This key facilitates secure communication
   * by enabling the creation of a shared secret for encryption and decryption of data.
   */
  lightningServicePubKey: string;
}

export interface AdaNetwork extends BaseNetwork {
  // Network name as defined in @bitgo/utxo-lib networks.ts
  // maybe add network identifier / magic network number
  utxolibName: string;
  poolDeposit: number;
  stakeKeyDeposit: number;
  maxValueSize: number;
  maxTransactionSize: number;
  coinsPerUtxoWord: number;
}

export interface AvalancheNetwork extends BaseNetwork {
  readonly alias: string;
  readonly blockchainID: string;
  readonly cChainBlockchainID: string;
  readonly networkID: number;
  readonly hrp: string;
  readonly vm: string;
  readonly creationTxFee: string;
  readonly createSubnetTx: string;
  readonly createChainTx: string;
  readonly minConsumption: string;
  readonly maxConsumption: string;
  readonly maxSupply: string;
  readonly minStake: string;
  readonly minStakeDuration: string;
  readonly maxStakeDuration: string;
  readonly minDelegationStake: string;
  readonly minDelegationFee: string;
  // current valid asset id is AVAX
  readonly avaxAssetID: string;
  readonly txFee: string;
  readonly maxImportFee: string; // 0.01 AVAX
}

export interface AccountNetwork extends BaseNetwork {
  // some chains pay fees via an enterprise gas task. The account explorer url
  // is a url that can be used to look up the account for the gas tank on-chain.
  readonly accountExplorerUrl?: string;
  readonly blockExplorerUrl?: string;
}

/**
 * Specification name type of the chain. Used in setting up the registry
 */
export type PolkadotSpecNameType = 'kusama' | 'polkadot' | 'westend' | 'statemint' | 'statemine';

export type BittensorSpecNameType = 'kusama' | 'polkadot' | 'westend' | 'statemint' | 'statemine' | 'node-subtensor';

export interface DotNetwork extends AccountNetwork {
  // some chains pay fees via an enterprise gas task. The account explorer url
  // is a url that can be used to look up the account for the gas tank on-chain.
  readonly specName: PolkadotSpecNameType;
  readonly genesisHash: string;
  readonly specVersion: number;
  readonly chainName: string;
  readonly txVersion: number;
}

export interface EthereumNetwork extends AccountNetwork {
  // unique chain id used for replay-protecting transactions
  readonly chainId: number;
  readonly batcherContractAddress?: string;
  // forwarder configuration addresses used for calculating forwarder version 1 addresses
  readonly forwarderFactoryAddress?: string;
  readonly forwarderImplementationAddress?: string;
  readonly nativeCoinOperationHashPrefix?: string;
  readonly tokenOperationHashPrefix?: string;
}

export interface TronNetwork extends AccountNetwork {
  maxFeeLimit: string;
  contractCallFeeLimit: string;
}

export interface StacksNetwork extends AccountNetwork {
  readonly sendmanymemoContractAddress: string;
  readonly stakingContractAddress: string;
}

// eslint-disable-next-line @typescript-eslint/no-empty-interface
export interface OfcNetwork extends BaseNetwork {}

abstract class Mainnet extends BaseNetwork {
  type = NetworkType.MAINNET;
}

abstract class Testnet extends BaseNetwork {
  type = NetworkType.TESTNET;
}

class Algorand extends Mainnet implements AccountNetwork {
  name = 'Algorand';
  family = CoinFamily.ALGO;
  explorerUrl = 'https://allo.info/tx/';
}

class AlgorandTestnet extends Testnet implements AccountNetwork {
  name = 'AlgorandTestnet';
  family = CoinFamily.ALGO;
  explorerUrl = 'https://explorer.bitquery.io/algorand_testnet/tx/';
}

class Ada extends Mainnet implements AdaNetwork {
  name = 'AdaCardano';
  family = CoinFamily.ADA;
  utxolibName = 'cardano';
  poolDeposit = 500000000;
  stakeKeyDeposit = 2000000;
  explorerUrl = 'https://beta.explorer.cardano.org/en/transaction/';
  coinsPerUtxoWord = 34482;
  maxTransactionSize = 8000;
  maxValueSize = 4000;
}

class AdaTestnet extends Testnet implements AdaNetwork {
  name = 'AdaCardanoTestnet';
  family = CoinFamily.ADA;
  utxolibName = 'cardanoTestnet';
  explorerUrl = 'https://preprod.cexplorer.io/';
  coinsPerUtxoWord = 34482;
  maxTransactionSize = 8000;
  maxValueSize = 4000;
  poolDeposit = 500000000;
  stakeKeyDeposit = 2000000;
}

class Apt extends Mainnet implements AccountNetwork {
  name = 'Apt';
  family = CoinFamily.APT;
  explorerUrl = 'https://explorer.aptoslabs.com/txn/?network=mainnet';
  accountExplorerUrl = 'https://explorer.aptoslabs.com/account/?network=mainnet';
  blockExplorerUrl = 'https://explorer.aptoslabs.com/block/?network=mainnet';
}

class AptTestnet extends Testnet implements AccountNetwork {
  name = 'Testnet Apt';
  family = CoinFamily.APT;
  explorerUrl = 'https://explorer.aptoslabs.com/txn/?network=testnet';
  accountExplorerUrl = 'https://explorer.aptoslabs.com/account/?network=testnet';
  blockExplorerUrl = 'https://explorer.aptoslabs.com/block/?network=testnet';
}

class Icp extends Mainnet implements AccountNetwork {
  name = 'Internet Computer';
  family = CoinFamily.ICP;
  explorerUrl = 'https://dashboard.internetcomputer.org/transaction/';
  accountExplorerUrl = 'https://dashboard.internetcomputer.org/account/';
}

class IcpTestnet extends Testnet implements AccountNetwork {
  name = 'Testnet Internet Computer';
  family = CoinFamily.ICP;
  explorerUrl = 'https://dashboard.internetcomputer.org/transaction/'; // ICP testnet explorer is not available, so using mainnet explorer
  accountExplorerUrl = 'https://dashboard.internetcomputer.org/account/';
}

class Arbitrum extends Mainnet implements EthereumNetwork {
  name = 'Arbitrum';
  family = CoinFamily.ARBETH;
  explorerUrl = 'https://arbiscan.io/tx/';
  accountExplorerUrl = 'https://arbiscan.io/address/';
  chainId = 42161;
  nativeCoinOperationHashPrefix = '42161';
  tokenOperationHashPrefix = '42161-ERC20';
  forwarderFactoryAddress = '0x37996e762fa8b671869740c79eb33f625b3bf92a';
  forwarderImplementationAddress = '0xd5fe1c1f216b775dfd30638fa7164d41321ef79b';
  walletFactoryAddress = '0x809ee567e413543af1caebcdb247f6a67eafc8dd';
  walletImplementationAddress = '0x944fef03af368414f29dc31a72061b8d64f568d2';
}

class ArbitrumTestnet extends Testnet implements EthereumNetwork {
  name = 'ArbitrumTestnet';
  family = CoinFamily.ARBETH;
  explorerUrl = 'https://sepolia.arbiscan.io/tx/';
  accountExplorerUrl = 'https://sepolia.arbiscan.io/address/';
  chainId = 421614;
  nativeCoinOperationHashPrefix = '421614';
  tokenOperationHashPrefix = '421614-ERC20';
  forwarderFactoryAddress = '0x37996e762fa8b671869740c79eb33f625b3bf92a';
  forwarderImplementationAddress = '0xd5fe1c1f216b775dfd30638fa7164d41321ef79b';
  walletFactoryAddress = '0x809ee567e413543af1caebcdb247f6a67eafc8dd';
  walletImplementationAddress = '0x944fef03af368414f29dc31a72061b8d64f568d2';
}

class AvalancheC extends Mainnet implements AccountNetwork {
  // https://docs.avax.network/build/tutorials/smart-contracts/deploy-a-smart-contract-on-avalanche-using-remix-and-metamask#avalanche-mainnet-settings
  name = 'AvalancheC';
  family = CoinFamily.AVAXC;
  explorerUrl = 'https://subnets.avax.network/c-chain/tx/';
  accountExplorerUrl = 'https://subnets.avax.network/c-chain/address/';
  chainId = 43114;
}

class AvalancheCTestnet extends Testnet implements AccountNetwork {
  // https://docs.avax.network/build/tutorials/smart-contracts/deploy-a-smart-contract-on-avalanche-using-remix-and-metamask#avalanche-mainnet-settings
  name = 'AvalancheCTestnet';
  family = CoinFamily.AVAXC;
  explorerUrl = 'https://subnets-test.avax.network/c-chain/tx/';
  accountExplorerUrl = 'https://subnets-test.avax.network/c-chain/address/';
  chainId = 43113;
}

class AvalancheP extends Mainnet implements AvalancheNetwork {
  name = 'AvalancheP';
  family = CoinFamily.AVAXP;
  explorerUrl = 'https://subnets.avax.network/p-chain/tx/';
  accountExplorerUrl = 'https://subnets.avax.network/p-chain/address/';
  blockchainID = '11111111111111111111111111111111LpoYY';
  cChainBlockchainID = '2q9e4r6Mu3U68nU1fYjgbR6JvwrRx36CohpAX5UQxse55x1Q5';
  avaxAssetID = 'FvwEAhmxKfeiG8SnEvq42hc6whRyY3EFYAvebMqDNDGCgxN5Z';
  networkID = 1;
  hrp = 'avax';
  alias = 'P';
  vm = 'platformvm';
  txFee = '1000000'; // 1 MILLIAVAX
  maxImportFee = '10000000'; // 0.01 AVAX
  createSubnetTx = '1000000000'; // 1 AVAX
  createChainTx = '1000000000'; // 1 AVAX
  creationTxFee = '10000000'; // 1 CENTIAVAX
  minConsumption = '0.1';
  maxConsumption = '0.12';
  maxSupply = '720000000000000000'; // 720 mil tokens
  minStake = '2000000000000'; // 2000 AVAX
  minStakeDuration = '1209600'; // 2 weeks
  maxStakeDuration = '31536000'; // 1 year
  minDelegationStake = '25000000000'; // 25 AVAX
  minDelegationFee = '2';
}

class AvalanchePTestnet extends Testnet implements AvalancheNetwork {
  name = 'AvalanchePTestnet';
  family = CoinFamily.AVAXP;
  explorerUrl = 'https://subnets-test.avax.network/p-chain/tx/';
  accountExplorerUrl = 'https://subnets-test.avax.network/p-chain/address/';
  blockchainID = '11111111111111111111111111111111LpoYY';
  cChainBlockchainID = 'yH8D7ThNJkxmtkuv2jgBa4P1Rn3Qpr4pPr7QYNfcdoS6k6HWp';
  avaxAssetID = 'U8iRqJoiJm8xZHAacmvYyZVwqQx6uDNtQeP3CQ6fcgQk3JqnK';
  networkID = 5;
  alias = 'P';
  hrp = 'fuji';
  vm = 'platformvm';
  txFee = '1000000'; // 1 MILLIAVAX
  maxImportFee = '10000000'; // 0.01 AVAX
  createSubnetTx = '1000000000'; // 1 AVAX
  createChainTx = '1000000000'; // 1 AVAX
  creationTxFee = '10000000'; // 1 CENTIAVAX
  minConsumption = '0.1';
  maxConsumption = '0.12';
  maxSupply = '720000000000000000'; // 720 mil tokens
  minStake = '1000000000'; // 1 AVAX
  minStakeDuration = '86400'; // 1 day
  maxStakeDuration = '31536000'; // 1 year
  minDelegationStake = '1000000000'; // 1 AVAX
  minDelegationFee = '2';
}

class BinanceSmartChain extends Mainnet implements EthereumNetwork {
  name = 'BinanceSmartChain';
  family = CoinFamily.BSC;
  explorerUrl = 'https://www.bscscan.com/tx/';
  accountExplorerUrl = 'https://www.bscscan.com/address/';
  chainId = 56;
  nativeCoinOperationHashPrefix = '56';
  tokenOperationHashPrefix = '56-ERC20';
  batcherContractAddress = '0xb1b7e7cc1ecafbfd0771a5eb5454ab5b0356980d';
}

class BinanceSmartChainTestnet extends Testnet implements EthereumNetwork {
  name = 'BinanceSmartChainTestnet';
  family = CoinFamily.BSC;
  explorerUrl = 'https://testnet.bscscan.com/tx/';
  accountExplorerUrl = 'https://testnet.bscscan.com/address/';
  chainId = 97;
  nativeCoinOperationHashPrefix = '97';
  tokenOperationHashPrefix = '97-ERC20';
  batcherContractAddress = '0x6faf4b6bae3d4bf20c5d866c938f51992c63e825';
}

class LightningBitcoin extends Mainnet implements LightningNetwork {
  name = 'LightningBitcoin';
  family = CoinFamily.LNBTC;
  utxolibName = 'bitcoin';
  explorerUrl = 'https://mempool.space/lightning';
  lightningServicePubKey = '0338508686f978ceffd7ce05404041b1a5b4f75a39bc92a6d355240ccc081f763e';
}

class LightningBitcoinTestnet extends Testnet implements LightningNetwork {
  name = 'LightningBitcoinTestnet';
  family = CoinFamily.LNBTC;
  utxolibName = 'testnet';
  explorerUrl = 'https://mempool.space/testnet/lightning';
  lightningServicePubKey = '024055021db1e7f019ebb783ab0b0810c21a819207d4cb1ec4a6e2150ac07f1482';
}

class Bitcoin extends Mainnet implements UtxoNetwork {
  name = 'Bitcoin';
  family = CoinFamily.BTC;
  utxolibName = 'bitcoin';
  explorerUrl = 'https://mempool.space/tx/';
}

class BitcoinTestnet extends Testnet implements UtxoNetwork {
  name = 'BitcoinTestnet';
  family = CoinFamily.BTC;
  utxolibName = 'testnet';
  explorerUrl = 'https://mempool.space/testnet/tx/';
}

class BitcoinPublicSignet extends Testnet implements UtxoNetwork {
  name = 'BitcoinPublicSignet';
  family = CoinFamily.BTC;
  utxolibName = 'bitcoinPublicSignet';
  explorerUrl = 'https://mempool.space/signet/tx/';
}

class BitcoinTestnet4 extends Testnet implements UtxoNetwork {
  name = 'BitcoinTestnet4';
  family = CoinFamily.BTC;
  utxolibName = 'bitcoinTestnet4';
  explorerUrl = 'https://mempool.space/testnet4/tx/';
}

class BitcoinBitGoSignet extends Testnet implements UtxoNetwork {
  name = 'BitcoinBitGoSignet';
  family = CoinFamily.BTC;
  utxolibName = 'bitcoinBitGoSignet';
  explorerUrl = 'https://mempool.space/notanetwork/tx/';
}

class BitcoinCash extends Mainnet implements UtxoNetwork {
  name = 'BitcoinCash';
  family = CoinFamily.BCH;
  utxolibName = 'bitcoincash';
  explorerUrl = 'https://www.blockchain.com/bch/tx/';
}

class BitcoinCashTestnet extends Testnet implements UtxoNetwork {
  name = 'BitcoinCashTestnet';
  family = CoinFamily.BCH;
  utxolibName = 'bitcoincashTestnet';
  explorerUrl = 'https://tbch.loping.net/tx/';
}
class BitcoinSV extends Mainnet implements UtxoNetwork {
  name = 'BitcoinSV';
  family = CoinFamily.BSV;
  utxolibName = 'bitcoinsv';
  explorerUrl = 'https://blockchair.com/bitcoin-sv/transaction/';
}

class BitcoinSVTestnet extends Testnet implements UtxoNetwork {
  name = 'BitcoinSVTestnet';
  family = CoinFamily.BSV;
  utxolibName = 'bitcoinsvTestnet';
  explorerUrl = undefined;
}

class BitcoinGold extends Mainnet implements UtxoNetwork {
  name = 'BitcoinGold';
  family = CoinFamily.BTG;
  utxolibName = 'bitcoingold';
  explorerUrl = 'https://btgexplorer.com/tx/';
}

class BitcoinGoldTestnet extends Testnet implements UtxoNetwork {
  name = 'BitcoinGoldTestnet';
  family = CoinFamily.BTG;
  utxolibName = 'bitcoingoldTestnet';
  explorerUrl = undefined;
}

class Dash extends Mainnet implements UtxoNetwork {
  name = 'Dash';
  family = CoinFamily.DASH;
  utxolibName = 'dash';
  explorerUrl = 'https://insight.dashevo.org/insight/tx/';
}

class DashTestnet extends Testnet implements UtxoNetwork {
  name = 'DashTestnet';
  family = CoinFamily.DASH;
  utxolibName = 'dashTest';
  explorerUrl = 'https://testnet-insight.dashevo.org/insight/tx/';
}

class Dogecoin extends Mainnet implements UtxoNetwork {
  name = 'Dogecoin';
  family = CoinFamily.DOGE;
  utxolibName = 'dogecoin';
  explorerUrl = 'https://blockchair.com/dogecoin/transaction/';
}

class DogecoinTestnet extends Testnet implements UtxoNetwork {
  name = 'DogecoinTestnet';
  family = CoinFamily.DOGE;
  utxolibName = 'dogecoinTest';
  explorerUrl = 'https://blockexplorer.one/dogecoin/testnet/tx/';
}

class ECash extends Mainnet implements UtxoNetwork {
  name = 'ECash';
  family = CoinFamily.BCHA;
  utxolibName = 'ecash';
  explorerUrl = 'https://blockchair.com/ecash';
}

class ECashTestnet extends Testnet implements UtxoNetwork {
  name = 'ECashTestnet';
  family = CoinFamily.BCHA;
  utxolibName = 'ecashTest';
  explorerUrl = undefined;
}

class Polkadot extends Mainnet implements DotNetwork {
  name = 'Polkadot';
  family = CoinFamily.DOT;
  explorerUrl = 'https://polkadot.subscan.io/extrinsic/';
  specName = 'polkadot' as PolkadotSpecNameType;
  genesisHash = '0x91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3';
  specVersion = 9140;
  chainName = 'Polkadot';
  txVersion = 9;
}

class PolkadotTestnet extends Testnet implements DotNetwork {
  name = 'Westend';
  family = CoinFamily.DOT;
  explorerUrl = 'https://westend.subscan.io/extrinsic/';
  specName = 'westend' as PolkadotSpecNameType;
  genesisHash = '0xe143f23803ac50e8f6f8e62695d1ce9e4e1d68aa36c1cd2cfd15340213f3423e';
  specVersion = 9430;
  chainName = 'Westend';
  txVersion = 22;
}

class Celo extends Mainnet implements EthereumNetwork {
  name = 'Celo';
  family = CoinFamily.CELO;
  explorerUrl = 'https://explorer.celo.org/tx/';
  accountExplorerUrl = 'https://explorer.celo.org/address/';
  chainId = 42220;
  nativeCoinOperationHashPrefix = 'CELO';
  tokenOperationHashPrefix = 'CELO-ERC20';
}

class CeloTestnet extends Testnet implements EthereumNetwork {
  name = 'CeloTestnet';
  family = CoinFamily.CELO;
  explorerUrl = 'https://alfajores-blockscout.celo-testnet.org/tx/';
  accountExplorerUrl = 'https://alfajores-blockscout.celo-testnet.org/address/';
  chainId = 44787;
  nativeCoinOperationHashPrefix = 'CELO';
  tokenOperationHashPrefix = 'CELO-ERC20';
}

// TODO update explorerUrl STLX-1657
class Casper extends Mainnet implements AccountNetwork {
  name = 'Casper';
  family = CoinFamily.CSPR;
  explorerUrl = 'https://cspr.live/deploy/';
  accountExplorerUrl = 'https://cspr.live/account/';
}

class CasperTestnet extends Testnet implements AccountNetwork {
  name = 'CasperTestnet';
  family = CoinFamily.CSPR;
  explorerUrl = 'https://integration.cspr.live/deploy/';
  accountExplorerUrl = 'https://integration.cspr.live/account/';
}

class Ethereum extends Mainnet implements EthereumNetwork {
  name = 'Ethereum';
  family = CoinFamily.ETH;
  explorerUrl = 'https://etherscan.io/tx/';
  accountExplorerUrl = 'https://etherscan.io/address/';
  blockExplorerUrl = 'https://etherscan.io/block/';
  // from https://github.com/ethereumjs/ethereumjs-common/blob/a978f630858f6843176bb20b277569785914e899/src/chains/index.ts
  chainId = 1;
  batcherContractAddress = '0x3e1e5d78e44f15593b3b61ed278f12c27f0ff33e';
  forwarderFactoryAddress = '0xffa397285ce46fb78c588a9e993286aac68c37cd';
  forwarderImplementationAddress = '0x059ffafdc6ef594230de44f824e2bd0a51ca5ded';
  nativeCoinOperationHashPrefix = 'ETHER';
  tokenOperationHashPrefix = 'ERC20';
}

class Ethereum2 extends Mainnet implements AccountNetwork {
  name = 'Ethereum2';
  family = CoinFamily.ETH2;
  explorerUrl = 'https://beaconscan.com/tx';
  accountExplorerUrl = 'https://beaconscan.com/address';
}

class EthereumW extends Mainnet implements EthereumNetwork {
  name = 'Ethereum PoW';
  family = CoinFamily.ETHW;
  explorerUrl = '';
  accountExplorerUrl = '';
  chainId = 10001;
  batcherContractAddress = '';
  forwarderFactoryAddress = '';
  forwarderImplementationAddress = '';
  nativeCoinOperationHashPrefix = 'ETHER';
  tokenOperationHashPrefix = 'ERC20';
}

class Pyrmont extends Testnet implements AccountNetwork {
  name = 'Pyrmont';
  family = CoinFamily.ETH2;
  explorerUrl = 'https://beaconscan.com/pyrmont/tx';
  accountExplorerUrl = 'https://beaconscan.com/pyrmont/address';
}

class Kovan extends Testnet implements EthereumNetwork {
  name = 'Kovan';
  family = CoinFamily.ETH;
  explorerUrl = 'https://kovan.etherscan.io/tx/';
  accountExplorerUrl = 'https://kovan.etherscan.io/address/';
  // from https://github.com/ethereumjs/ethereumjs-common/blob/a978f630858f6843176bb20b277569785914e899/src/chains/index.ts
  chainId = 42;
  batcherContractAddress = '0xc0aaf2649e7b0f3950164681eca2b1a8f654a478';
  forwarderFactoryAddress = '0xa79a485294d226075ee65410bc94ea454f3e409d';
  forwarderImplementationAddress = '0xa946e748f25a5ec6878eb1a9f2e902028174c0b3';
  nativeCoinOperationHashPrefix = 'ETHER';
  tokenOperationHashPrefix = 'ERC20';
}

class Goerli extends Testnet implements EthereumNetwork {
  name = 'Goerli';
  family = CoinFamily.ETH;
  explorerUrl = 'https://goerli.etherscan.io/tx/';
  accountExplorerUrl = 'https://goerli.etherscan.io/address/';
  blockExplorerUrl = 'https://goerli.etherscan.io/block/';
  // from https://github.com/ethereumjs/ethereumjs-common/blob/a978f630858f6843176bb20b277569785914e899/src/chains/index.ts
  chainId = 5;
  batcherContractAddress = '0xe8e847cf573fc8ed75621660a36affd18c543d7e';
  forwarderFactoryAddress = '0xf5caa5e3e93afbc21bd19ef4f2691a37121f7917';
  forwarderImplementationAddress = '0x80d5c91e8cc21df69fc4d64f21dc2d83121c3999';
  nativeCoinOperationHashPrefix = 'ETHER';
  tokenOperationHashPrefix = 'ERC20';
}

class Holesky extends Testnet implements EthereumNetwork {
  name = 'Holesky';
  family = CoinFamily.ETH;
  explorerUrl = 'https://holesky.etherscan.io/tx/';
  accountExplorerUrl = 'https://holesky.etherscan.io/address/';
  blockExplorerUrl = 'https://holesky.etherscan.io/block/';
  // https://chainlist.org/chain/17000
  chainId = 17000;
  batcherContractAddress = '0x3e1e5d78e44f15593b3b61ed278f12c27f0ff33e';
  forwarderFactoryAddress = '0xffa397285ce46fb78c588a9e993286aac68c37cd';
  forwarderImplementationAddress = '0x059ffafdc6ef594230de44f824e2bd0a51ca5ded';
  nativeCoinOperationHashPrefix = 'ETHER';
  tokenOperationHashPrefix = 'ERC20';
}

class EthereumClassic extends Mainnet implements EthereumNetwork {
  name = 'EthereumClassic';
  family = CoinFamily.ETC;
  explorerUrl = 'https://blockscout.com/etc/mainnet/tx/';
  accountExplorerUrl = 'https://blockscout.com/etc/mainnet/address/';
  // from  https://chainid.network/chains/
  chainId = 61;
  nativeCoinOperationHashPrefix = 'ETC';
  tokenOperationHashPrefix = 'ETC-ERC20';
}

class EthereumClassicTestnet extends Testnet implements EthereumNetwork {
  name = 'EthereumClassicTestnet';
  family = CoinFamily.ETC;
  explorerUrl = 'https://blockscout.com/etc/mordor/tx/';
  accountExplorerUrl = 'https://blockscout.com/etc/mordor/address/';
  // from  https://chainid.network/chains/
  chainId = 63;
  nativeCoinOperationHashPrefix = 'ETC';
  tokenOperationHashPrefix = 'ETC-ERC20';
}

class Eos extends Mainnet implements AccountNetwork {
  name = 'Eos';
  family = CoinFamily.EOS;
  explorerUrl = 'https://explorer.eosnetwork.com/transaction/';
}

class EosTestnet extends Testnet implements AccountNetwork {
  name = 'EosTestnet';
  family = CoinFamily.EOS;
  explorerUrl = 'https://kylin.eosx.io/tx/';
}

class Hedera extends Mainnet implements AccountNetwork {
  name = 'Hedera';
  family = CoinFamily.HBAR;
  explorerUrl = 'https://hashscan.io/mainnet/transaction/';
}

class HederaTestnet extends Testnet implements AccountNetwork {
  name = 'HederaTestnet';
  family = CoinFamily.HBAR;
  explorerUrl = 'https://testnet.dragonglass.me/hedera/search?q=';
}

class Litecoin extends Mainnet implements UtxoNetwork {
  name = 'Litecoin';
  family = CoinFamily.LTC;
  utxolibName = 'litecoin';
  explorerUrl = 'https://blockchair.com/litecoin/transaction/';
}

class LitecoinTestnet extends Testnet implements UtxoNetwork {
  name = 'LitecoinTestnet';
  family = CoinFamily.LTC;
  utxolibName = 'litecoinTest';
  explorerUrl = 'https://blockexplorer.one/litecoin/testnet/tx/';
}

class Ofc extends Mainnet implements OfcNetwork {
  name = 'Ofc';
  family = CoinFamily.OFC;
  explorerUrl = undefined;
}

class OfcTestnet extends Testnet implements OfcNetwork {
  name = 'OfcTestnet';
  family = CoinFamily.OFC;
  explorerUrl = undefined;
}

class Rbtc extends Mainnet implements EthereumNetwork {
  name = 'Rbtc';
  family = CoinFamily.RBTC;
  explorerUrl = 'https://explorer.rsk.co/tx/';
  accountExplorerUrl = 'https://explorer.rsk.co/address/';
  chainId = 30;
  nativeCoinOperationHashPrefix = 'RSK';
  tokenOperationHashPrefix = 'RSK-ERC20';
}

class RbtcTestnet extends Testnet implements EthereumNetwork {
  name = 'RbtcTestnet';
  family = CoinFamily.RBTC;
  explorerUrl = 'https://explorer.testnet.rsk.co/tx/';
  accountExplorerUrl = 'https://explorer.testnet.rsk.co/address/';
  chainId = 31;
  nativeCoinOperationHashPrefix = 'RSK';
  tokenOperationHashPrefix = 'RSK-ERC20';
}

class Stellar extends Mainnet implements AccountNetwork {
  name = 'Stellar';
  family = CoinFamily.XLM;
  explorerUrl = 'https://stellar.expert/explorer/public/tx/';
}

class StellarTestnet extends Testnet implements AccountNetwork {
  name = 'StellarTestnet';
  family = CoinFamily.XLM;
  explorerUrl = 'https://stellar.expert/explorer/testnet/tx/';
}

class Sol extends Mainnet implements AccountNetwork {
  name = 'Sol';
  family = CoinFamily.SOL;
  explorerUrl = 'https://explorer.solana.com/tx/';
}

class SolTestnet extends Testnet implements AccountNetwork {
  name = 'SolTestnet';
  family = CoinFamily.SOL;
  explorerUrl = 'https://explorer.solana.com/tx/?cluster=devnet';
}

class Sui extends Mainnet implements AccountNetwork {
  name = 'Sui';
  family = CoinFamily.SUI;
  explorerUrl = 'https://explorer.sui.io/txblock/?network=mainnet';
}

class SuiTestnet extends Testnet implements AccountNetwork {
  name = 'Testnet Sui';
  family = CoinFamily.SUI;
  explorerUrl = 'https://explorer.sui.io/txblock/?network=testnet';
}

class Atom extends Mainnet implements AccountNetwork {
  name = 'Cosmos Hub ATOM';
  family = CoinFamily.ATOM;
  explorerUrl = 'https://www.mintscan.io/cosmos/tx/';
}

class AtomTestnet extends Testnet implements AccountNetwork {
  name = 'Testnet Cosmos Hub ATOM';
  family = CoinFamily.ATOM;
  explorerUrl = 'https://explorer.polypore.xyz/provider/tx/';
}

class Osmo extends Mainnet implements AccountNetwork {
  name = 'Osmosis';
  family = CoinFamily.OSMO;
  explorerUrl = 'https://www.mintscan.io/osmosis/txs/';
}

class OsmoTestnet extends Testnet implements AccountNetwork {
  name = 'Testnet Osmosis';
  family = CoinFamily.OSMO;
  explorerUrl = 'https://testnet.osmosis.explorers.guru/transaction/';
}

class Tia extends Mainnet implements AccountNetwork {
  name = 'Celestia';
  family = CoinFamily.TIA;
  explorerUrl = 'https://www.mintscan.io/celestia/tx/';
}

class TiaTestnet extends Testnet implements AccountNetwork {
  name = 'Testnet Celestia';
  family = CoinFamily.TIA;
  explorerUrl = 'https://testnet.celestia.explorers.guru/transaction/';
}

class Hash extends Mainnet implements AccountNetwork {
  name = 'Provenance';
  family = CoinFamily.HASH;
  explorerUrl = 'https://www.mintscan.io/provenance/tx/';
}

class HashTestnet extends Testnet implements AccountNetwork {
  name = 'Testnet Provenance';
  family = CoinFamily.HASH;
  explorerUrl = 'https://explorer.test.provenance.io/tx/';
}

class Bld extends Mainnet implements AccountNetwork {
  name = 'Agoric';
  family = CoinFamily.BLD;
  explorerUrl = 'https://bigdipper.live/agoric/transactions/';
}

class BldTestnet extends Testnet implements AccountNetwork {
  name = 'Testnet Agoric';
  family = CoinFamily.BLD;
  explorerUrl = 'https://devnet.explorer.agoric.net/agoric/tx/';
}

class Sei extends Mainnet implements AccountNetwork {
  name = 'Sei';
  family = CoinFamily.SEI;
  explorerUrl = 'https://seistream.app/transactions/';
}

class SeiTestnet extends Testnet implements AccountNetwork {
  name = 'Testnet Sei';
  family = CoinFamily.SEI;
  explorerUrl = 'https://www.mintscan.io/sei/tx/';
}

class Zeta extends Mainnet implements AccountNetwork {
  name = 'Zeta';
  family = CoinFamily.ZETA;
  explorerUrl = 'https://explorer.zetachain.com/cosmos/tx/';
}

class ZetaTestnet extends Testnet implements AccountNetwork {
  name = 'Testnet Zeta';
  family = CoinFamily.ZETA;
  explorerUrl = 'https://athens.explorer.zetachain.com/cosmos/tx/';
}

class Injective extends Mainnet implements AccountNetwork {
  name = 'Injective';
  family = CoinFamily.INJECTIVE;
  explorerUrl = 'https://www.mintscan.io/injective/tx/';
}

class InjectiveTestnet extends Testnet implements AccountNetwork {
  name = 'InjectiveTestnet';
  family = CoinFamily.INJECTIVE;
  explorerUrl = 'https://testnet.explorer.injective.network/transaction/';
}

class Kava extends Mainnet implements AccountNetwork {
  name = 'Kava';
  family = CoinFamily.KAVA;
  explorerUrl = 'https://www.mintscan.io/kava/transactions/';
}

class KavaTestnet extends Testnet implements AccountNetwork {
  name = 'KavaTestnet';
  family = CoinFamily.KAVA;
  explorerUrl = 'https://testnet.mintscan.io/kava-testnet/txs/';
}

class Ton extends Mainnet implements AccountNetwork {
  name = 'Ton';
  family = CoinFamily.TON;
  explorerUrl = 'https://tonscan.org/tx/';
}

class TonTestnet extends Testnet implements AccountNetwork {
  name = 'Testnet Ton';
  family = CoinFamily.TON;
  explorerUrl = 'https://testnet.tonscan.org/tx/';
}

class Coreum extends Mainnet implements AccountNetwork {
  name = 'Coreum';
  family = CoinFamily.COREUM;
  explorerUrl = 'https://www.mintscan.io/coreum/tx/';
}

class CoreumTestnet extends Testnet implements AccountNetwork {
  name = 'CoreumTestnet';
  family = CoinFamily.COREUM;
  explorerUrl = 'https://explorer.testnet-1.coreum.dev/coreum/transactions/';
}

class Rune extends Mainnet implements AccountNetwork {
  name = 'Rune';
  family = CoinFamily.THOR;
  explorerUrl = 'https://runescan.io/tx/';
}

class RuneTestNet extends Testnet implements AccountNetwork {
  name = 'RuneTestNet';
  family = CoinFamily.THOR;
  explorerUrl = 'https://runescan.io/tx/?network=stagenet';
}

class Baby extends Mainnet implements AccountNetwork {
  name = 'Babylon';
  family = CoinFamily.BABY;
  explorerUrl = 'https://babylon.explorers.guru/transaction/';
}

class BabyTestnet extends Testnet implements AccountNetwork {
  name = 'Testnet Babylon';
  family = CoinFamily.BABY;
  explorerUrl = 'https://testnet.babylon.explorers.guru/transaction/';
}

class Mantra extends Mainnet implements AccountNetwork {
  name = 'Mantra';
  family = CoinFamily.MANTRA;
  explorerUrl = 'https://explorer.mantrachain.io/MANTRA-1/tx/';
}

class MantraTestnet extends Testnet implements AccountNetwork {
  name = 'Testnet Mantra';
  family = CoinFamily.MANTRA;
  explorerUrl = 'https://explorer.mantrachain.io/MANTRA-Dukong/tx/';
}

class Cronos extends Mainnet implements AccountNetwork {
  name = 'Cronos';
  family = CoinFamily.CRONOS;
  explorerUrl = 'https://cronos-pos.org/explorer/';
}

class CronosTestnet extends Testnet implements AccountNetwork {
  name = 'Testnet Cronos';
  family = CoinFamily.CRONOS;
  explorerUrl = 'https://cronos-pos.org/explorer/croeseid4/';
}

class Fetch extends Mainnet implements AccountNetwork {
  name = 'Fetch';
  family = CoinFamily.FETCH;
  explorerUrl = 'https://www.mintscan.io/fetchai';
}

class FetchTestnet extends Testnet implements AccountNetwork {
  name = 'Testnet Fetch';
  family = CoinFamily.FETCH;
  explorerUrl = 'https://explore-eridanus-1.fetch.ai/';
}

class Init extends Mainnet implements AccountNetwork {
  name = 'Initia';
  family = CoinFamily.INIT;
  explorerUrl = 'https://scan.initia.xyz/'; //TODO: COIN-3992 : Post launch need to update this if changed
}

class InitTestnet extends Testnet implements AccountNetwork {
  name = 'Testnet Initia';
  family = CoinFamily.INIT;
  explorerUrl = 'https://scan.testnet.initia.xyz/initiation-2/';
}

class Islm extends Mainnet implements AccountNetwork {
  name = 'Haqq';
  family = CoinFamily.ISLM;
  explorerUrl = 'https://ping.pub/haqq/tx/';
}

class IslmTestnet extends Testnet implements AccountNetwork {
  name = 'HaqqTestnet';
  family = CoinFamily.ISLM;
  explorerUrl = 'https://testnet.ping.pub/haqq/tx/';
}

class Stx extends Mainnet implements StacksNetwork {
  name = 'Stx';
  family = CoinFamily.STX;
  explorerUrl = 'https://explorer.hiro.so/txid/';
  sendmanymemoContractAddress = 'SP3FBR2AGK5H9QBDH3EEN6DF8EK8JY7RX8QJ5SVTE';
  stakingContractAddress = 'SP000000000000000000002Q6VF78';
}

class StxTestnet extends Testnet implements StacksNetwork {
  name = 'StxTestnet';
  family = CoinFamily.STX;
  explorerUrl = 'https://explorer.hiro.so/txid/?chain=testnet';
  sendmanymemoContractAddress = 'ST3F1X4QGV2SM8XD96X45M6RTQXKA1PZJZZCQAB4B';
  stakingContractAddress = 'ST000000000000000000002AMW42H';
}

class SUSD extends Mainnet implements AccountNetwork {
  name = 'SUSD';
  family = CoinFamily.SUSD;
  explorerUrl = undefined;
}

class SUSDTestnet extends Testnet implements AccountNetwork {
  name = 'SUSDTestnet';
  family = CoinFamily.SUSD;
  explorerUrl = undefined;
}

class FiatTestnet extends Testnet implements BaseNetwork {
  name = 'FiatTestnet';
  family = CoinFamily.FIAT;
  explorerUrl = undefined;
}

class Fiat extends Mainnet implements BaseNetwork {
  name = 'Fiat';
  family = CoinFamily.FIAT;
  explorerUrl = undefined;
}

class Bittensor extends Mainnet implements AccountNetwork {
  name = 'Tao';
  family = CoinFamily.TAO;
  explorerUrl = 'https://taostats.io/extrinsic/';
}

class BittensorTestnet extends Testnet implements AccountNetwork {
  name = 'Testnet Tao';
  family = CoinFamily.TAO;
  explorerUrl = 'https://explorer.finney.opentensor.ai/#/';
  specName = 'node-subtensor' as BittensorSpecNameType;
  genesisHash = '0x8f9cf856bf558a14440e75569c9e58594757048d7b3a84b5d25f6bd978263105';
  specVersion = 224;
  chainName = 'bittensor';
  txVersion = 1;
}

class Trx extends Mainnet implements TronNetwork {
  name = 'Trx';
  family = CoinFamily.TRX;
  accountExplorerUrl = 'https://tronscan.org/#/address/';
  explorerUrl = 'https://tronscan.org/#/transaction/';
  maxFeeLimit = '5000000000';
  contractCallFeeLimit = '100000000';
}

class TrxTestnet extends Testnet implements TronNetwork {
  name = 'TrxTestnet';
  family = CoinFamily.TRX;
  accountExplorerUrl = 'https://shasta.tronscan.org/#/address/';
  explorerUrl = 'https://shasta.tronscan.org/#/transaction/';
  maxFeeLimit = '5000000000';
  contractCallFeeLimit = '100000000';
}

class Xrp extends Mainnet implements AccountNetwork {
  name = 'Xrp';
  family = CoinFamily.XRP;
  explorerUrl = 'https://livenet.xrpl.org/transactions/';
}

class XrpTestnet extends Testnet implements AccountNetwork {
  name = 'XrpTestnet';
  family = CoinFamily.XRP;
  explorerUrl = 'https://test.xrplexplorer.com/explorer/';
}

class Xtz extends Mainnet implements AccountNetwork {
  name = 'Xtz';
  family = CoinFamily.XTZ;
  explorerUrl = 'https://tzstats.com/';
  accountExplorerUrl = 'https://tzstats.com/';
}

class XtzTestnet extends Testnet implements AccountNetwork {
  name = 'XtzTestnet';
  family = CoinFamily.XTZ;
  explorerUrl = 'https://ghostnet.tzkt.io/';
  accountExplorerUrl = 'https://ghostnet.tzkt.io/';
}

class ZCash extends Mainnet implements UtxoNetwork {
  name = 'ZCash';
  family = CoinFamily.ZEC;
  utxolibName = 'zcash';
  explorerUrl = 'https://chain.so/tx/ZEC/';
}

class ZCashTestnet extends Testnet implements UtxoNetwork {
  name = 'ZCashTestnet';
  family = CoinFamily.ZEC;
  utxolibName = 'zcashTest';
  explorerUrl = 'https://chain.so/tx/ZECTEST/';
}

class Near extends Mainnet implements AccountNetwork {
  name = 'Near';
  family = CoinFamily.NEAR;
  explorerUrl = 'https://nearblocks.io/txns/';
  feeReserve = '50000000000000000000000';
  storageReserve = '2000000000000000000000'; // feeReserve + storageReserve is minimum account balance for a NEAR wallet https://docs.near.org/integrator/faq#is-there-a-minimum-account-balance
}

class NearTestnet extends Testnet implements AccountNetwork {
  name = 'NearTestnet';
  family = CoinFamily.NEAR;
  explorerUrl = 'https://testnet.nearblocks.io/txns/';
  feeReserve = '50000000000000000000000';
  storageReserve = '2000000000000000000000'; // feeReserve + storageReserve is minimum account balance for a NEAR wallet https://docs.near.org/integrator/faq#is-there-a-minimum-account-balance
}

class Polygon extends Mainnet implements EthereumNetwork {
  name = 'Polygon';
  family = CoinFamily.POLYGON;
  explorerUrl = 'https://polygonscan.com/tx/';
  accountExplorerUrl = 'https://polygonscan.com/address/';
  chainId = 137;
  forwarderFactoryAddress = '0x29ef46035e9fa3d570c598d3266424ca11413b0c';
  forwarderImplementationAddress = '0x5397d0869aba0d55e96d5716d383f6e1d8695ed7';
  walletFactoryAddress = '0xa7198f48c58e91f01317e70cd24c5cce475c1555';
  walletImplementationAddress = '0xe5dcdc13b628c2df813db1080367e929c1507ca0';
  batcherContractAddress = '0xb1b7e7cc1ecafbfd0771a5eb5454ab5b0356980d';
  nativeCoinOperationHashPrefix = 'POLYGON';
  tokenOperationHashPrefix = 'POLYGON-ERC20';
}

class PolygonTestnet extends Testnet implements EthereumNetwork {
  name = 'PolygonTestnet';
  family = CoinFamily.POLYGON;
  explorerUrl = 'https://amoy.polygonscan.com/tx/';
  accountExplorerUrl = 'https://amoy.polygonscan.com/address/';
  chainId = 80002;
  forwarderFactoryAddress = '0x23223fd7cfc5f34b20f38ebb9a489e1ff3c084d1';
  forwarderImplementationAddress = '0xd4c24325b5ef514fbb1ecc76a9bb4dcb57a8341e';
  walletFactoryAddress = '0xe9c16033e01bf9f94bf9f99fc0fefcfb8b124992';
  walletImplementationAddress = '0xf8360c213e4f44cce03e48cb9281254de2a7a566';
  batcherContractAddress = '0xb1b7e7cc1ecafbfd0771a5eb5454ab5b0356980d';
  nativeCoinOperationHashPrefix = 'POLYGON';
  tokenOperationHashPrefix = 'POLYGON-ERC20';
}

class Optimism extends Mainnet implements EthereumNetwork {
  name = 'Optimism';
  family = CoinFamily.OPETH;
  explorerUrl = 'https://optimistic.etherscan.io/tx/';
  accountExplorerUrl = 'https://optimistic.etherscan.io/address/';
  chainId = 10;
  nativeCoinOperationHashPrefix = '10';
  tokenOperationHashPrefix = '10-ERC20';
  forwarderFactoryAddress = '0x37996e762fa8b671869740c79eb33f625b3bf92a';
  forwarderImplementationAddress = '0xd5fe1c1f216b775dfd30638fa7164d41321ef79b';
  walletFactoryAddress = '0x809ee567e413543af1caebcdb247f6a67eafc8dd';
  walletImplementationAddress = '0x944fef03af368414f29dc31a72061b8d64f568d2';
  batcherContractAddress = '0x3e1e5d78e44f15593b3b61ed278f12c27f0ff33e';
}

class OptimismTestnet extends Testnet implements EthereumNetwork {
  name = 'OptimismTestnet';
  family = CoinFamily.OPETH;
  explorerUrl = 'https://sepolia-optimism.etherscan.io/tx/';
  accountExplorerUrl = 'https://sepolia-optimism.etherscan.io/address/';
  chainId = 11155420;
  nativeCoinOperationHashPrefix = '11155420';
  tokenOperationHashPrefix = '11155420-ERC20';
  forwarderFactoryAddress = '0x37996e762fa8b671869740c79eb33f625b3bf92a';
  forwarderImplementationAddress = '0xd5fe1c1f216b775dfd30638fa7164d41321ef79b';
  walletFactoryAddress = '0x809ee567e413543af1caebcdb247f6a67eafc8dd';
  walletImplementationAddress = '0x944fef03af368414f29dc31a72061b8d64f568d2';
  batcherContractAddress = '0xc84c7eb4c84271ec03ca9e3dbf12cfa42146309e';
}

class ZkSync extends Mainnet implements EthereumNetwork {
  name = 'ZkSync';
  family = CoinFamily.ZKETH;
  explorerUrl = 'https://explorer.zksync.io/tx/';
  accountExplorerUrl = 'https://explorer.zksync.io/address/';
  chainId = 324;
  nativeCoinOperationHashPrefix = '324';
  tokenOperationHashPrefix = '324-ERC20';
}

class ZkSyncTestnet extends Testnet implements EthereumNetwork {
  name = 'ZkSyncTestnet';
  family = CoinFamily.ZKETH;
  explorerUrl = 'https://sepolia.explorer.zksync.io/tx/';
  accountExplorerUrl = 'https://sepolia.explorer.zksync.io/address/';
  chainId = 300;
  nativeCoinOperationHashPrefix = '300';
  tokenOperationHashPrefix = '300-ERC20';
  forwarderFactoryAddress = '0xdd498702f44c4da08eb9e08d3f015eefe5cb71fc';
  forwarderImplementationAddress = '0xbe69cae311191fb45e648ed20847f06fad2dbab4';
  walletFactoryAddress = '0x4550e1e7616d3364877fc6c9324938dab678621a';
  walletImplementationAddress = '0x92db2759d1dca129a0d9d46877f361be819184c4';
}

class Berachain extends Mainnet implements EthereumNetwork {
  name = 'Bera';
  family = CoinFamily.BERA;
  explorerUrl = 'https://80094.routescan.io/tx/';
  accountExplorerUrl = 'https://80094.routescan.io/address/';
  chainId = 80094;
  nativeCoinOperationHashPrefix = '80094';
  tokenOperationHashPrefix = '80094-ERC20';
  batcherContractAddress = '0xedf1a0016d9c41d2ad0c275e1ba708361a90c0d1';
  forwarderFactoryAddress = '0x37996e762fa8b671869740c79eb33f625b3bf92a';
  forwarderImplementationAddress = '0xd5fe1c1f216b775dfd30638fa7164d41321ef79b';
}

class BerachainTestnet extends Testnet implements EthereumNetwork {
  name = 'BeraTestnet';
  family = CoinFamily.BERA;
  explorerUrl = 'https://80000.testnet.routescan.io/tx/';
  accountExplorerUrl = 'https://80000.testnet.routescan.io/address/';
  chainId = 80000;
  nativeCoinOperationHashPrefix = '80000';
  tokenOperationHashPrefix = '80000-ERC20';
  batcherContractAddress = '0xedf1a0016d9c41d2ad0c275e1ba708361a90c0d1';
  forwarderFactoryAddress = '0x37996e762fa8b671869740c79eb33f625b3bf92a';
  forwarderImplementationAddress = '0xd5fe1c1f216b775dfd30638fa7164d41321ef79b';
}

class Oas extends Mainnet implements EthereumNetwork {
  name = 'Oas';
  family = CoinFamily.OAS;
  explorerUrl = 'https://explorer.oasys.games/tx/';
  accountExplorerUrl = 'https://explorer.oasys.games/address/';
  chainId = 248;
  nativeCoinOperationHashPrefix = '248';
  batcherContractAddress = '0xedf1a0016d9c41d2ad0c275e1ba708361a90c0d1';
  forwarderFactoryAddress = '0x37996e762fa8b671869740c79eb33f625b3bf92a';
  forwarderImplementationAddress = '0xd5fe1c1f216b775dfd30638fa7164d41321ef79b';
}

class OasTestnet extends Testnet implements EthereumNetwork {
  name = 'OasTestnet';
  family = CoinFamily.OAS;
  explorerUrl = 'https://explorer.testnet.oasys.games/tx/';
  accountExplorerUrl = 'https://explorer.testnet.oasys.games/address/';
  chainId = 9372;
  nativeCoinOperationHashPrefix = '9372';
  batcherContractAddress = '0xedf1a0016d9c41d2ad0c275e1ba708361a90c0d1';
  forwarderFactoryAddress = '0x37996e762fa8b671869740c79eb33f625b3bf92a';
  forwarderImplementationAddress = '0xd5fe1c1f216b775dfd30638fa7164d41321ef79b';
}

class Coredao extends Mainnet implements EthereumNetwork {
  name = 'Coredao';
  family = CoinFamily.COREDAO;
  explorerUrl = 'https://scan.coredao.org/tx/';
  accountExplorerUrl = 'https://scan.coredao.org/address/';
  chainId = 1116;
  nativeCoinOperationHashPrefix = '1116';
  batcherContractAddress = '0x3e1e5d78e44f15593b3b61ed278f12c27f0ff33e';
  forwarderFactoryAddress = '0x37996e762fa8b671869740c79eb33f625b3bf92a';
  forwarderImplementationAddress = '0xd5fe1c1f216b775dfd30638fa7164d41321ef79b';
}

class CoredaoTestnet extends Testnet implements EthereumNetwork {
  name = 'CoredaoTestnet';
  family = CoinFamily.COREDAO;
  explorerUrl = 'https://scan.test2.btcs.network/tx/';
  accountExplorerUrl = 'https://scan.test2.btcs.network/address/';
  chainId = 1114;
  nativeCoinOperationHashPrefix = '1114';

  // TODO (SC-1024) Update contract addresses to new testnet when they are deployed
  batcherContractAddress = '0x3e1e5d78e44f15593b3b61ed278f12c27f0ff33e';
  forwarderFactoryAddress = '0x37996e762fa8b671869740c79eb33f625b3bf92a';
  forwarderImplementationAddress = '0xd5fe1c1f216b775dfd30638fa7164d41321ef79b';
}
class Xdc extends Mainnet implements EthereumNetwork {
  name = 'XdcChain';
  family = CoinFamily.XDC;
  explorerUrl = 'https://xdcscan.com/tx/';
  accountExplorerUrl = 'https://xdcscan.com/address/';
  chainId = 50;
  nativeCoinOperationHashPrefix = '50';
  batcherContractAddress = '0x3e1e5d78e44f15593b3b61ed278f12c27f0ff33e';
  forwarderFactoryAddress = '0x37996e762fa8b671869740c79eb33f625b3bf92a';
  forwarderImplementationAddress = '0xd5fe1c1f216b775dfd30638fa7164d41321ef79b';
}
class XdcTestnet extends Testnet implements EthereumNetwork {
  name = 'XdcChainTestnet';
  family = CoinFamily.XDC;
  explorerUrl = 'https://testnet.xdcscan.com/tx/';
  accountExplorerUrl = 'https://testnet.xdcscan.com/address/';
  chainId = 51;
  nativeCoinOperationHashPrefix = '51';
  batcherContractAddress = '0x3e1e5d78e44f15593b3b61ed278f12c27f0ff33e';
  forwarderFactoryAddress = '0x37996e762fa8b671869740c79eb33f625b3bf92a';
  forwarderImplementationAddress = '0xd5fe1c1f216b775dfd30638fa7164d41321ef79b';
}
class Wemix extends Mainnet implements EthereumNetwork {
  name = 'WemixChain';
  family = CoinFamily.WEMIX;
  explorerUrl = 'https://explorer.wemix.com/tx/';
  accountExplorerUrl = 'https://explorer.wemix.com/address/';
  chainId = 1111;
  nativeCoinOperationHashPrefix = '1111';
  batcherContractAddress = '0x3e1e5d78e44f15593b3b61ed278f12c27f0ff33e';
  forwarderFactoryAddress = '0x37996e762fa8b671869740c79eb33f625b3bf92a';
  forwarderImplementationAddress = '0xd5fe1c1f216b775dfd30638fa7164d41321ef79b';
}
class WemixTestnet extends Testnet implements EthereumNetwork {
  name = 'WemixChainTestnet';
  family = CoinFamily.WEMIX;
  explorerUrl = 'https://explorer.test.wemix.com/tx/';
  accountExplorerUrl = 'https://explorer.test.wemix.com/address/';
  chainId = 1112;
  nativeCoinOperationHashPrefix = '1112';
  batcherContractAddress = '0x3e1e5d78e44f15593b3b61ed278f12c27f0ff33e';
  forwarderFactoryAddress = '0x37996e762fa8b671869740c79eb33f625b3bf92a';
  forwarderImplementationAddress = '0xd5fe1c1f216b775dfd30638fa7164d41321ef79b';
}
class MonadTestnet extends Testnet implements EthereumNetwork {
  name = 'MonadTestnet';
  family = CoinFamily.MON;
  explorerUrl = 'https://testnet.monadexplorer.com/tx/';
  accountExplorerUrl = 'https://testnet.monadexplorer.com/address/';
  chainId = 10143;
  nativeCoinOperationHashPrefix = '10143';
}
class Monad extends Mainnet implements EthereumNetwork {
  name = 'Monad';
  family = CoinFamily.MON;
  explorerUrl = 'https://testnet.monadexplorer.com/tx/'; //TODO: WIN-5225: change it with mainnet explorer, when its available
  chainId = 10143; //TODO: WIN-5225: change it with mainnet explorer, when its available
  nativeCoinOperationHashPrefix = '10143'; //TODO: WIN-5225: change it with mainnet explorer, when its available
}

class World extends Mainnet implements EthereumNetwork {
  name = 'Worldchain';
  family = CoinFamily.WORLD;
  explorerUrl = 'https://worldscan.org/tx/';
  accountExplorerUrl = 'https://worldscan.org/address/';
  chainId = 480;
  nativeCoinOperationHashPrefix = '480';
}

class WorldTestnet extends Testnet implements EthereumNetwork {
  name = 'WorldchainTestnet';
  family = CoinFamily.WORLD;
  explorerUrl = 'https://sepolia.worldscan.org/tx/';
  accountExplorerUrl = 'https://sepolia.worldscan.org/address/';
  chainId = 4801;
  nativeCoinOperationHashPrefix = '4801';
}

class Soneium extends Mainnet implements EthereumNetwork {
  name = 'Soneium';
  family = CoinFamily.SONEIUM;
  explorerUrl = 'https://soneium.blockscout.com/tx/';
  accountExplorerUrl = 'https://soneium.blockscout.com/address/';
  chainId = 1868;
  nativeCoinOperationHashPrefix = '1868';
}

class SoneiumTestnet extends Testnet implements EthereumNetwork {
  name = 'SoneiumTestnet';
  family = CoinFamily.SONEIUM;
  explorerUrl = 'https://soneium-minato.blockscout.com/tx/';
  accountExplorerUrl = 'https://soneium-minato.blockscout.com/address/';
  chainId = 1946;
  nativeCoinOperationHashPrefix = '1946';
}

class Somnia extends Mainnet implements EthereumNetwork {
  name = 'Somnia';
  family = CoinFamily.STT;
  explorerUrl = 'https://shannon-explorer.somnia.network/tx/'; //TODO: WIN-5278: change it with mainnet explorer, when its available
  chainId = 50312; //TODO: WIN-5278: change it with mainnet explorer, when its available
  nativeCoinOperationHashPrefix = '50312'; //TODO: WIN-5278: change it with mainnet explorer, when its available
}

class SomniaTestnet extends Testnet implements EthereumNetwork {
  name = 'SomniaTestnet';
  family = CoinFamily.STT;
  explorerUrl = 'https://shannon-explorer.somnia.network/tx/';
  accountExplorerUrl = 'https://shannon-explorer.somnia.network/address/';
  chainId = 50312;
  nativeCoinOperationHashPrefix = '50312';
}

class Flare extends Mainnet implements EthereumNetwork {
  name = 'Flarechain';
  family = CoinFamily.FLR;
  explorerUrl = 'https://flare-explorer.flare.network/tx/';
  accountExplorerUrl = 'https://flare-explorer.flare.network/address/';
  chainId = 14;
  nativeCoinOperationHashPrefix = '14';
  batcherContractAddress = '0x3e1e5d78e44f15593b3b61ed278f12c27f0ff33e';
  forwarderFactoryAddress = '0x37996e762fa8b671869740c79eb33f625b3bf92a';
  forwarderImplementationAddress = '0xd5fe1c1f216b775dfd30638fa7164d41321ef79b';
}
class FlareTestnet extends Testnet implements EthereumNetwork {
  name = 'FlarechainTestnet';
  family = CoinFamily.FLR;
  explorerUrl = 'https://coston2-explorer.flare.network/tx/';
  accountExplorerUrl = 'https://coston2-explorer.flare.network/address/';
  chainId = 114;
  nativeCoinOperationHashPrefix = '114';
  batcherContractAddress = '0x3e1e5d78e44f15593b3b61ed278f12c27f0ff33e';
  forwarderFactoryAddress = '0x37996e762fa8b671869740c79eb33f625b3bf92a';
  forwarderImplementationAddress = '0xd5fe1c1f216b775dfd30638fa7164d41321ef79b';
}
class Songbird extends Mainnet implements EthereumNetwork {
  name = 'Songbirdchain';
  family = CoinFamily.SGB;
  explorerUrl = 'https://songbird-explorer.flare.network/tx/';
  accountExplorerUrl = 'https://songbird-explorer.flare.network/address/';
  chainId = 19;
  nativeCoinOperationHashPrefix = '19';
  batcherContractAddress = '0x3e1e5d78e44f15593b3b61ed278f12c27f0ff33e';
  forwarderFactoryAddress = '0x37996e762fa8b671869740c79eb33f625b3bf92a';
  forwarderImplementationAddress = '0xd5fe1c1f216b775dfd30638fa7164d41321ef79b';
}
class SongbirdTestnet extends Testnet implements EthereumNetwork {
  name = 'SongbirdchainTestnet';
  family = CoinFamily.SGB;
  explorerUrl = 'https://coston-explorer.flare.network/tx/';
  accountExplorerUrl = 'https://coston-explorer.flare.network/address/';
  chainId = 16;
  nativeCoinOperationHashPrefix = '16';
  batcherContractAddress = '0x3e1e5d78e44f15593b3b61ed278f12c27f0ff33e';
  forwarderFactoryAddress = '0x37996e762fa8b671869740c79eb33f625b3bf92a';
  forwarderImplementationAddress = '0xd5fe1c1f216b775dfd30638fa7164d41321ef79b';
}
class BaseChainTestnet extends Testnet implements EthereumNetwork {
  name = 'BaseChainTestnet';
  family = CoinFamily.BASEETH;
  explorerUrl = 'https://sepolia.basescan.org/tx/';
  accountExplorerUrl = 'https://sepolia.basescan.org/address/';
  chainId = 84532;
  nativeCoinOperationHashPrefix = '84532';
  tokenOperationHashPrefix = '84532-ERC20';
  forwarderFactoryAddress = '0xdd498702f44c4da08eb9e08d3f015eefe5cb71fc';
  forwarderImplementationAddress = '0xbe69cae311191fb45e648ed20847f06fad2dbab4';
  walletFactoryAddress = '0x4550e1e7616d3364877fc6c9324938dab678621a';
  walletImplementationAddress = '0x92db2759d1dca129a0d9d46877f361be819184c4';
}

class BaseChain extends Mainnet implements EthereumNetwork {
  name = 'BaseChain';
  family = CoinFamily.BASEETH;
  explorerUrl = 'https://basescan.org/tx/';
  accountExplorerUrl = 'https://basescan.org/address/';
  chainId = 8453;
  nativeCoinOperationHashPrefix = '8453';
  tokenOperationHashPrefix = '8453-ERC20';
  forwarderFactoryAddress = '0xdd498702f44c4da08eb9e08d3f015eefe5cb71fc';
  forwarderImplementationAddress = '0xbe69cae311191fb45e648ed20847f06fad2dbab4';
  walletFactoryAddress = '0x4550e1e7616d3364877fc6c9324938dab678621a';
  walletImplementationAddress = '0x92db2759d1dca129a0d9d46877f361be819184c4';
}

class Polymesh extends Mainnet implements AccountNetwork {
  name = 'Polymesh';
  family = CoinFamily.POLYX;
  explorerUrl = 'https://polymesh.subscan.io/extrinsic/';
}

class PolymeshTestnet extends Testnet implements AccountNetwork {
  name = 'PolymeshTestnet';
  family = CoinFamily.POLYX;
  explorerUrl = 'https://polymesh-testnet.subscan.io/extrinsic/';
}

class Vet extends Mainnet implements AccountNetwork {
  name = 'VeChain';
  family = CoinFamily.VET;
  explorerUrl = 'https://explore.vechain.org/';
}

class VetTestnet extends Testnet implements AccountNetwork {
  name = 'VeChainTestnet';
  family = CoinFamily.VET;
  explorerUrl = 'https://explore-testnet.vechain.org/';
}

export const Networks = {
  main: {
    ada: Object.freeze(new Ada()),
    algorand: Object.freeze(new Algorand()),
    apt: Object.freeze(new Apt()),
    arbitrum: Object.freeze(new Arbitrum()),
    atom: Object.freeze(new Atom()),
    avalancheC: Object.freeze(new AvalancheC()),
    avalancheP: Object.freeze(new AvalancheP()),
    baby: Object.freeze(new Baby()),
    basechain: Object.freeze(new BaseChain()),
    bitcoin: Object.freeze(new Bitcoin()),
    bitcoinCash: Object.freeze(new BitcoinCash()),
    bitcoinGold: Object.freeze(new BitcoinGold()),
    bitcoinSV: Object.freeze(new BitcoinSV()),
    bera: Object.freeze(new Berachain()),
    bld: Object.freeze(new Bld()),
    bsc: Object.freeze(new BinanceSmartChain()),
    casper: Object.freeze(new Casper()),
    celo: Object.freeze(new Celo()),
    coredao: Object.freeze(new Coredao()),
    coreum: Object.freeze(new Coreum()),
    cronos: Object.freeze(new Cronos()),
    dash: Object.freeze(new Dash()),
    dogecoin: Object.freeze(new Dogecoin()),
    dot: Object.freeze(new Polkadot()),
    eCash: Object.freeze(new ECash()),
    eos: Object.freeze(new Eos()),
    ethereum: Object.freeze(new Ethereum()),
    ethereum2: Object.freeze(new Ethereum2()),
    ethereumClassic: Object.freeze(new EthereumClassic()),
    ethereumW: Object.freeze(new EthereumW()),
    fiat: Object.freeze(new Fiat()),
    fetch: Object.freeze(new Fetch()),
    flr: Object.freeze(new Flare()),
    hash: Object.freeze(new Hash()),
    hedera: Object.freeze(new Hedera()),
    icp: Object.freeze(new Icp()),
    init: Object.freeze(new Init()),
    injective: Object.freeze(new Injective()),
    islm: Object.freeze(new Islm()),
    kava: Object.freeze(new Kava()),
    lnbtc: Object.freeze(new LightningBitcoin()),
    litecoin: Object.freeze(new Litecoin()),
    mon: Object.freeze(new Monad()),
    mantra: Object.freeze(new Mantra()),
    polygon: Object.freeze(new Polygon()),
    polyx: Object.freeze(new Polymesh()),
    oas: Object.freeze(new Oas()),
    ofc: Object.freeze(new Ofc()),
    optimism: Object.freeze(new Optimism()),
    osmo: Object.freeze(new Osmo()),
    rbtc: Object.freeze(new Rbtc()),
    rune: Object.freeze(new Rune()),
    stellar: Object.freeze(new Stellar()),
    sei: Object.freeze(new Sei()),
    sgb: Object.freeze(new Songbird()),
    sol: Object.freeze(new Sol()),
    sui: Object.freeze(new Sui()),
    near: Object.freeze(new Near()),
    stx: Object.freeze(new Stx()),
    stt: Object.freeze(new Somnia()),
    soneium: Object.freeze(new Soneium()),
    susd: Object.freeze(new SUSD()),
    tao: Object.freeze(new Bittensor()),
    tia: Object.freeze(new Tia()),
    ton: Object.freeze(new Ton()),
    trx: Object.freeze(new Trx()),
    vet: Object.freeze(new Vet()),
    wemix: Object.freeze(new Wemix()),
    world: Object.freeze(new World()),
    xdc: Object.freeze(new Xdc()),
    xrp: Object.freeze(new Xrp()),
    xtz: Object.freeze(new Xtz()),
    zCash: Object.freeze(new ZCash()),
    zeta: Object.freeze(new Zeta()),
    zkSync: Object.freeze(new ZkSync()),
  },
  test: {
    ada: Object.freeze(new AdaTestnet()),
    algorand: Object.freeze(new AlgorandTestnet()),
    apt: Object.freeze(new AptTestnet()),
    arbitrum: Object.freeze(new ArbitrumTestnet()),
    atom: Object.freeze(new AtomTestnet()),
    avalancheC: Object.freeze(new AvalancheCTestnet()),
    avalancheP: Object.freeze(new AvalanchePTestnet()),
    baby: Object.freeze(new BabyTestnet()),
    basechain: Object.freeze(new BaseChainTestnet()),
    bitcoin: Object.freeze(new BitcoinTestnet()),
    bitcoinPublicSignet: Object.freeze(new BitcoinPublicSignet()),
    bitcoinTestnet4: Object.freeze(new BitcoinTestnet4()),
    bitcoinBitGoSignet: Object.freeze(new BitcoinBitGoSignet()),
    bitcoinCash: Object.freeze(new BitcoinCashTestnet()),
    bitcoinGold: Object.freeze(new BitcoinGoldTestnet()),
    bitcoinSV: Object.freeze(new BitcoinSVTestnet()),
    bera: Object.freeze(new BerachainTestnet()),
    bld: Object.freeze(new BldTestnet()),
    bsc: Object.freeze(new BinanceSmartChainTestnet()),
    casper: Object.freeze(new CasperTestnet()),
    coredao: Object.freeze(new CoredaoTestnet()),
    celo: Object.freeze(new CeloTestnet()),
    cronos: Object.freeze(new CronosTestnet()),
    dash: Object.freeze(new DashTestnet()),
    dogecoin: Object.freeze(new DogecoinTestnet()),
    dot: Object.freeze(new PolkadotTestnet()),
    eCash: Object.freeze(new ECashTestnet()),
    eos: Object.freeze(new EosTestnet()),
    fiat: Object.freeze(new FiatTestnet()),
    fetch: Object.freeze(new FetchTestnet()),
    flr: Object.freeze(new FlareTestnet()),
    mon: Object.freeze(new MonadTestnet()),
    pyrmont: Object.freeze(new Pyrmont()),
    ethereumClassicTestnet: Object.freeze(new EthereumClassicTestnet()),
    hash: Object.freeze(new HashTestnet()),
    hedera: Object.freeze(new HederaTestnet()),
    icp: Object.freeze(new IcpTestnet()),
    init: Object.freeze(new InitTestnet()),
    injective: Object.freeze(new InjectiveTestnet()),
    islm: Object.freeze(new IslmTestnet()),
    kava: Object.freeze(new KavaTestnet()),
    kovan: Object.freeze(new Kovan()),
    goerli: Object.freeze(new Goerli()),
    holesky: Object.freeze(new Holesky()),
    lnbtc: Object.freeze(new LightningBitcoinTestnet()),
    litecoin: Object.freeze(new LitecoinTestnet()),
    mantra: Object.freeze(new MantraTestnet()),
    polygon: Object.freeze(new PolygonTestnet()),
    polyx: Object.freeze(new PolymeshTestnet()),
    oas: Object.freeze(new OasTestnet()),
    ofc: Object.freeze(new OfcTestnet()),
    optimism: Object.freeze(new OptimismTestnet()),
    osmo: Object.freeze(new OsmoTestnet()),
    rbtc: Object.freeze(new RbtcTestnet()),
    rune: Object.freeze(new RuneTestNet()),
    sgb: Object.freeze(new SongbirdTestnet()),
    stellar: Object.freeze(new StellarTestnet()),
    sei: Object.freeze(new SeiTestnet()),
    sol: Object.freeze(new SolTestnet()),
    sui: Object.freeze(new SuiTestnet()),
    near: Object.freeze(new NearTestnet()),
    stx: Object.freeze(new StxTestnet()),
    stt: Object.freeze(new SomniaTestnet()),
    soneium: Object.freeze(new SoneiumTestnet()),
    susd: Object.freeze(new SUSDTestnet()),
    coreum: Object.freeze(new CoreumTestnet()),
    tao: Object.freeze(new BittensorTestnet()),
    tia: Object.freeze(new TiaTestnet()),
    ton: Object.freeze(new TonTestnet()),
    trx: Object.freeze(new TrxTestnet()),
    vet: Object.freeze(new VetTestnet()),
    wemix: Object.freeze(new WemixTestnet()),
    world: Object.freeze(new WorldTestnet()),
    xdc: Object.freeze(new XdcTestnet()),
    xrp: Object.freeze(new XrpTestnet()),
    xtz: Object.freeze(new XtzTestnet()),
    zCash: Object.freeze(new ZCashTestnet()),
    zeta: Object.freeze(new ZetaTestnet()),
    zkSync: Object.freeze(new ZkSyncTestnet()),
  },
};

Выполнить команду


Для локальной разработки. Не используйте в интернете!