package client

import "github.com/6boris/web3-go/consts"

func GetDefaultConfPool() *ConfPool {
	conf := &ConfPool{
		AppID:   "web3.app_id.default",
		Zone:    "web3.zone.default",
		Cluster: "web3.cluster.default",
		SolanaChains: []*ConfSolanaClient{
			{
				ClientID:        "",
				Provider:        "",
				ChainEnv:        consts.ChainEnvTestnet,
				TransportSchema: "http",
				TransportURL:    "https://api.testnet.solana.com",
			},
			{
				ClientID:        "",
				Provider:        "",
				ChainEnv:        consts.ChainEnvDevnet,
				TransportSchema: "http",
				TransportURL:    "https://api.devnet.solana.com",
			},
			{
				ClientID:        "",
				Provider:        "",
				ChainEnv:        consts.ChainEnvMainnet,
				TransportSchema: "http",
				TransportURL:    "https://api.mainnet-beta.solana.com",
			},
		},
		EvmChains: map[int64]*ConfEvmChainInfo{
			1: {
				ChainID:         1,
				ChainName:       "Ethereum Mainnet",
				ChainEnv:        consts.ChainEnvMainnet,
				OfficialWebsite: "https://ethereum.org",
				ExplorerURL:     "https://etherscan.io",
				Faucets:         []string{},
				Clients: []*ConfEvmChainClient{
					{Provider: "LlamaNodes", ProviderWebsite: "https://llamanodes.com", TransportSchema: "https", TransportURL: "https://eth.llamarpc.com"},
					{Provider: "OMNIA", ProviderWebsite: "https://omniatech.io", TransportSchema: "https", TransportURL: "https://endpoints.omniatech.io/v1/eth/mainnet/public"},
					{Provider: "Ankr", ProviderWebsite: "https://www.ankr.com", TransportSchema: "https", TransportURL: "https://rpc.ankr.com/eth"},
					{Provider: "PublicNode", ProviderWebsite: "https://ethereum.publicnode.com", TransportSchema: "https", TransportURL: "https://ethereum.publicnode.com"},
					{Provider: "1RPC", ProviderWebsite: "https://www.1rpc.io", TransportSchema: "https", TransportURL: "https://1rpc.io/eth"},
					{Provider: "MEV Blocker", ProviderWebsite: "https://mevblocker.io", TransportSchema: "https", TransportURL: "https://rpc.mevblocker.io"},
					{Provider: "FlashBots", ProviderWebsite: "https://www.flashbots.net", TransportSchema: "https", TransportURL: "https://rpc.flashbots.net"},
					{Provider: "CloudFlare", ProviderWebsite: "https://www.cloudflare.com/web3", TransportSchema: "https", TransportURL: "https://cloudflare-eth.com"},
					{Provider: "SecureRpc", ProviderWebsite: "https://securerpc.com", TransportSchema: "https", TransportURL: "https://api.securerpc.com/v1"},
					{Provider: "BlockPI", ProviderWebsite: "https://public.blockpi.io", TransportSchema: "https", TransportURL: "https://ethereum.blockpi.network/v1/rpc/public"},
					{Provider: "Payload.De", ProviderWebsite: "https://payload.de", TransportSchema: "https", TransportURL: "https://rpc.payload.de"},
					{Provider: "Alchemy", ProviderWebsite: "https://www.alchemy.com", TransportSchema: "https", TransportURL: "https://eth-mainnet.g.alchemy.com/v2/demo"},
					{Provider: "GasHawk", ProviderWebsite: "https://gashawk.io", TransportSchema: "https", TransportURL: "https://core.gashawk.io/rpc"},
					{Provider: "Other", ProviderWebsite: "", TransportSchema: "https", TransportURL: "https://rpc.mevblocker.io"},
					{Provider: "Other", ProviderWebsite: "", TransportSchema: "https", TransportURL: "https://core.gashawk.io/rpc"},
					{Provider: "Other", ProviderWebsite: "", TransportSchema: "https", TransportURL: "https://eth.api.onfinality.io/public"},
					{Provider: "Other", ProviderWebsite: "", TransportSchema: "https", TransportURL: "https://eth-rpc.gateway.pokt.network"},
				},
			},
			11155111: {
				ChainID:         11155111,
				ChainName:       "Ethereum Sepolia",
				ChainEnv:        consts.ChainEnvTestnet,
				OfficialWebsite: "https://ethereum.org",
				ExplorerURL:     "https://sepolia.etherscan.io",
				Faucets:         []string{},
				Clients: []*ConfEvmChainClient{
					{Provider: "BlockPI", ProviderWebsite: "https://public.blockpi.io/", TransportSchema: "https", TransportURL: "https://ethereum-sepolia.blockpi.network/v1/rpc/public"},
					{Provider: "Other", ProviderWebsite: "", TransportSchema: "https", TransportURL: "https://eth-sepolia.public.blastapi.io"},
					{Provider: "Other", ProviderWebsite: "", TransportSchema: "https", TransportURL: "https://rpc2.sepolia.org"},
					{Provider: "Other", ProviderWebsite: "", TransportSchema: "https", TransportURL: "https://rpc.sepolia.org"},
					{Provider: "Other", ProviderWebsite: "", TransportSchema: "https", TransportURL: "https://eth-sepolia-public.unifra.io"},
					{Provider: "Other", ProviderWebsite: "", TransportSchema: "https", TransportURL: "https://endpoints.omniatech.io/v1/eth/sepolia/public"},
				},
			},
			5: {
				ChainID:         5,
				ChainName:       "Ethereum Goerli",
				ChainEnv:        consts.ChainEnvTestnet,
				OfficialWebsite: "https://ethereum.org",
				ExplorerURL:     "https://goerli.etherscan.io",
				Faucets:         []string{},
				Clients: []*ConfEvmChainClient{
					{Provider: "BlockPI", ProviderWebsite: "https://public.blockpi.io/", TransportSchema: "https", TransportURL: "https://goerli.blockpi.network/v1/rpc/public"},
					{Provider: "Other", ProviderWebsite: "", TransportSchema: "https", TransportURL: "https://rpc.ankr.com/eth_goerli"},
					{Provider: "Other", ProviderWebsite: "", TransportSchema: "https", TransportURL: "https://eth-goerli.public.blastapi.io"},
					{Provider: "Other", ProviderWebsite: "", TransportSchema: "https", TransportURL: "https://eth-goerli.g.alchemy.com/v2/demo"},
					{Provider: "Other", ProviderWebsite: "", TransportSchema: "https", TransportURL: "https://goerli.blockpi.network/v1/rpc/public"},
					{Provider: "Other", ProviderWebsite: "", TransportSchema: "https", TransportURL: "https://eth-goerli.api.onfinality.io/public"},
					{Provider: "Other", ProviderWebsite: "", TransportSchema: "https", TransportURL: "https://rpc.goerli.eth.gateway.fm"},
				},
			},
			137: {
				ChainID:         137,
				ChainName:       "Polygon PoS Chain",
				ChainEnv:        consts.ChainEnvMainnet,
				OfficialWebsite: "https://polygon.technology",
				ExplorerURL:     "https://polygonscan.com",
				Faucets:         []string{},
				Clients: []*ConfEvmChainClient{
					{Provider: "LlamaNodes", ProviderWebsite: "https://llamanodes.com", TransportSchema: "https", TransportURL: "https://polygon.llamarpc.com"},
					{Provider: "Ankr", ProviderWebsite: "https://polygon-rpc.com", TransportSchema: "https", TransportURL: "https://polygon-rpc.com"},
					{Provider: "QuickNode", ProviderWebsite: "https://www.quicknode.com", TransportSchema: "https", TransportURL: "https://rpc-mainnet.matic.quiknode.pro"},
					{Provider: "Other", ProviderWebsite: "", TransportSchema: "https", TransportURL: "https://rpc-mainnet.matic.network"},
					{Provider: "Other", ProviderWebsite: "", TransportSchema: "https", TransportURL: "https://rpc.ankr.com/polygon"},
					{Provider: "Other", ProviderWebsite: "", TransportSchema: "https", TransportURL: "https://1rpc.io/matic"},
					{Provider: "Other", ProviderWebsite: "", TransportSchema: "https", TransportURL: "https://poly-rpc.gateway.pokt.network"},
				},
			},
			80001: {
				ChainID:         80001,
				ChainName:       "Polygon PoS Chain Testnet",
				ChainEnv:        consts.ChainEnvTestnet,
				OfficialWebsite: "https://polygon.technology",
				ExplorerURL:     "https://mumbai.polygonscan.com",
				Faucets:         []string{},
				Clients: []*ConfEvmChainClient{
					{Provider: "BlockPI", ProviderWebsite: "https://public.blockpi.io/", TransportSchema: "https", TransportURL: "https://polygon-mumbai.blockpi.network/v1/rpc/public"},
					{Provider: "Other", ProviderWebsite: "", TransportSchema: "https", TransportURL: "https://rpc-mumbai.maticvigil.com"},
					{Provider: "Other", ProviderWebsite: "", TransportSchema: "https", TransportURL: "https://polygon-testnet.public.blastapi.io"},
					{Provider: "Other", ProviderWebsite: "", TransportSchema: "https", TransportURL: "https://matic-mumbai.chainstacklabs.com"},
					{Provider: "Other", ProviderWebsite: "", TransportSchema: "https", TransportURL: "https://rpc.ankr.com/polygon_mumbai"},
				},
			},
			10: {
				ChainID:         10,
				ChainName:       "Optimism",
				ChainEnv:        consts.ChainEnvMainnet,
				OfficialWebsite: "https://www.optimism.io",
				ExplorerURL:     "https://optimistic.etherscan.io",
				Faucets:         []string{},
				Clients: []*ConfEvmChainClient{
					{Provider: "BlockPI", ProviderWebsite: "https://public.blockpi.io/", TransportSchema: "https", TransportURL: "https://optimism.blockpi.network/v1/rpc/public"},
					{Provider: "Alchemy", ProviderWebsite: "https://www.alchemy.com/", TransportSchema: "https", TransportURL: "https://mainnet.optimism.io"},
					{Provider: "Other", ProviderWebsite: "", TransportSchema: "https", TransportURL: "https://optimism-mainnet.public.blastapi.io"},
					{Provider: "Other", ProviderWebsite: "", TransportSchema: "https", TransportURL: "https://rpc.ankr.com/optimism"},
					{Provider: "Other", ProviderWebsite: "", TransportSchema: "https", TransportURL: "https://1rpc.io/op"},
					{Provider: "Other", ProviderWebsite: "", TransportSchema: "https", TransportURL: "https://optimism.blockpi.network/v1/rpc/public"},
				},
			},
			420: {
				ChainID:         420,
				ChainName:       "Optimism Goerli",
				ChainEnv:        consts.ChainEnvTestnet,
				OfficialWebsite: "https://www.optimism.io",
				ExplorerURL:     "https://goerli-explorer.optimism.io",
				Faucets:         []string{},
				Clients: []*ConfEvmChainClient{
					{Provider: "Other", ProviderWebsite: "", TransportSchema: "https", TransportURL: "https://optimism-goerli.public.blastapi.io"},
					{Provider: "Other", ProviderWebsite: "", TransportSchema: "https", TransportURL: "https://goerli.optimism.io"},
					{Provider: "Other", ProviderWebsite: "", TransportSchema: "https", TransportURL: "https://opt-goerli.g.alchemy.com/v2/demo"},
					{Provider: "Other", ProviderWebsite: "", TransportSchema: "https", TransportURL: "https://endpoints.omniatech.io/v1/op/goerli/public"},
				},
			},
			42161: {
				ChainID:         42161,
				ChainName:       "Arbitrum One",
				ChainEnv:        consts.ChainEnvMainnet,
				OfficialWebsite: "https://arbitrum.io",
				ExplorerURL:     "https://arbiscan.io",
				Faucets:         []string{},
				Clients: []*ConfEvmChainClient{
					{Provider: "BlockPI", ProviderWebsite: "https://public.blockpi.io/", TransportSchema: "https", TransportURL: "https://arbitrum.blockpi.network/v1/rpc/public"},
					{Provider: "Ankr", ProviderWebsite: "https://www.ankr.com", TransportSchema: "https", TransportURL: "https://rpc.ankr.com/arbitrum"},
					{Provider: "Arbitrum", ProviderWebsite: "https://arbitrum.io", TransportSchema: "https", TransportURL: "https://arb1.arbitrum.io/rpc"},
				},
			},
			42170: {
				ChainID:         42170,
				ChainName:       "Arbitrum Nova",
				ChainEnv:        consts.ChainEnvTestnet,
				OfficialWebsite: "https://arbitrum.io",
				ExplorerURL:     "https://nova.arbiscan.io",
				Faucets:         []string{},
				Clients: []*ConfEvmChainClient{
					{Provider: "Arbitrum", ProviderWebsite: "https://developer.arbitrum.io/public-chains", TransportSchema: "https", TransportURL: "https://nova.arbitrum.io/rpc"},
				},
			},
			421613: {
				ChainID:         421613,
				ChainName:       "Arbitrum Goerli",
				ChainEnv:        consts.ChainEnvTestnet,
				OfficialWebsite: "https://arbitrum.io",
				ExplorerURL:     "https://goerli.arbiscan.io",
				Faucets:         []string{},
				Clients: []*ConfEvmChainClient{
					{Provider: "Arbitrum", ProviderWebsite: "https://developer.arbitrum.io/public-chains", TransportSchema: "https", TransportURL: "https://goerli-rollup.arbitrum.io/rpc"},
				},
			},
			43113: {
				ChainID:         43113,
				ChainName:       "Avalanche Fuji",
				ChainEnv:        consts.ChainEnvMainnet,
				OfficialWebsite: "https://www.avax.network",
				ExplorerURL:     "https://testnet.snowtrace.io",
				Faucets:         []string{},
				Clients: []*ConfEvmChainClient{
					{Provider: "Ankr", ProviderWebsite: "https://developer.arbitrum.io/public-chains", TransportSchema: "https", TransportURL: "https://rpc.ankr.com/avalanche_fuji"},
				},
			},
			43114: {
				ChainID:         43114,
				ChainName:       "Avalanche Fuji",
				ChainEnv:        consts.ChainEnvTestnet,
				OfficialWebsite: "https://www.avax.network",
				ExplorerURL:     "https://testnet.snowtrace.io",
				Faucets:         []string{},
				Clients: []*ConfEvmChainClient{
					{Provider: "Arbitrum", ProviderWebsite: "https://developer.arbitrum.io/public-chains", TransportSchema: "https", TransportURL: "https://rpc.ankr.com/avalanche"},
				},
			},

			100: {
				ChainID:         100,
				ChainName:       "Gnosis",
				ChainEnv:        consts.ChainEnvMainnet,
				OfficialWebsite: "https://www.gnosis.io",
				ExplorerURL:     "https://testnet.snowtrace.io",
				Faucets:         []string{},
				Clients: []*ConfEvmChainClient{
					{Provider: "BlockPI", ProviderWebsite: "https://blockscout.com/xdai/mainnet", TransportSchema: "https", TransportURL: "https://gnosis.blockpi.network/v1/rpc/public"},
				},
			},
			56: {
				ChainID:         56,
				ChainName:       "BNB Smart Chain",
				ChainEnv:        consts.ChainEnvMainnet,
				OfficialWebsite: "https://bscscan.com",
				ExplorerURL:     "https://bscscan.com",
				Faucets:         []string{},
				Clients: []*ConfEvmChainClient{
					{Provider: "BlockPI", ProviderWebsite: "https://public.blockpi.io/", TransportSchema: "https", TransportURL: "https://bsc.blockpi.network/v1/rpc/public"},
				},
			},
			97: {
				ChainID:         97,
				ChainName:       "BSC Testnet",
				ChainEnv:        consts.ChainEnvTestnet,
				OfficialWebsite: "https://bscscan.com",
				ExplorerURL:     "https://testnet.bscscan.com",
				Faucets:         []string{},
				Clients: []*ConfEvmChainClient{
					{Provider: "Blast", ProviderWebsite: "https://blastapi.io", TransportSchema: "https", TransportURL: "https://bsc-testnet.public.blastapi.io"},
				},
			},
			250: {
				ChainID:         250,
				ChainName:       "Fantom Mainnet",
				ChainEnv:        consts.ChainEnvMainnet,
				OfficialWebsite: "",
				ExplorerURL:     "",
				Faucets:         []string{},
				Clients: []*ConfEvmChainClient{
					{Provider: "Other", ProviderWebsite: "", TransportSchema: "https", TransportURL: "https://rpc.fantom.network"},
				},
			},
			4002: {
				ChainID:         4002,
				ChainName:       "Fantom Testnet",
				ChainEnv:        consts.ChainEnvTestnet,
				OfficialWebsite: "",
				ExplorerURL:     "",
				Faucets:         []string{},
				Clients: []*ConfEvmChainClient{
					{Provider: "Other", ProviderWebsite: "", TransportSchema: "https", TransportURL: "https://rpc.ankr.com/fantom_testnet"},
				},
			},
		},
	}
	return conf
}
