ETHEREUM = {
    "chainId": 1,
    "name": "ethereum",
    "nativeTokenSymbol": "ETH",
    "nativeTokenName": "Ether",
    "nativeTokenDecimals": 18,
    "hashflowChainId": 1,
    "testTokens": False,
    "weth": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
    "layerZeroEndpoint": "0x66A71Dcef29A0fFBDBE3c6a460a3B5BC225Cd675",
    "layerZeroChainId": 101,
    "layerZeroNonceContract": "0x5B905fE05F81F3a8ad8B28C6E17779CFAbf76068",
    "wormholeChainId": 2,
    "wormholeEndpoint": "0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B",
    "wormholeConsistency": 1,
    "zksync": False,
}

ARBITRUM = {
    "chainId": 42161,
    "name": "arbitrum",
    "nativeTokenSymbol": "ETH",
    "nativeTokenName": "Ether",
    "nativeTokenDecimals": 18,
    "hashflowChainId": 2,
    "testTokens": False,
    "weth": "0x82af49447d8a07e3bd95bd0d56f35241523fbab1",
    "layerZeroEndpoint": "0x3c2269811836af69497E5F486A85D7316753cf62",
    "layerZeroChainId": 110,
    "layerZeroNonceContract": "0x5B905fE05F81F3a8ad8B28C6E17779CFAbf76068",
    "wormholeChainId": 23,
    "wormholeEndpoint": "0xa5f208e072434bC67592E4C49C1B991BA79BCA46",
    "wormholeConsistency": 1,
    "zksync": False,
}

OPTIMISM = {
    "chainId": 10,
    "name": "optimism",
    "nativeTokenSymbol": "ETH",
    "nativeTokenName": "Ether",
    "nativeTokenDecimals": 18,
    "hashflowChainId": 3,
    "testTokens": False,
    "weth": "0x4200000000000000000000000000000000000006",
    "layerZeroEndpoint": "0x3c2269811836af69497E5F486A85D7316753cf62",
    "layerZeroChainId": 111,
    "layerZeroNonceContract": "0x5B905fE05F81F3a8ad8B28C6E17779CFAbf76068",
    "zksync": False,
}


AVALANCHE = {
    "chainId": 43114,
    "name": "avalanche",
    "nativeTokenSymbol": "AVAX",
    "nativeTokenName": "Avax",
    "nativeTokenDecimals": 18,
    "hashflowChainId": 4,
    "testTokens": False,
    "weth": "0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7",
    "layerZeroEndpoint": "0x3c2269811836af69497E5F486A85D7316753cf62",
    "layerZeroChainId": 106,
    "layerZeroNonceContract": "0x5B905fE05F81F3a8ad8B28C6E17779CFAbf76068",
    "wormholeChainId": 6,
    "wormholeEndpoint": "0x54a8e5f9c4CbA08F9943965859F6c34eAF03E26c",
    "wormholeConsistency": 1,
    "zksync": False,
}

POLYGON = {
    "chainId": 137,
    "name": "polygon",
    "nativeTokenSymbol": "MATIC",
    "nativeTokenName": "Matic",
    "nativeTokenDecimals": 18,
    "hashflowChainId": 5,
    "testTokens": False,
    "weth": "0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270",
    "layerZeroEndpoint": "0x3c2269811836af69497E5F486A85D7316753cf62",
    "layerZeroChainId": 109,
    "layerZeroNonceContract": "0x5B905fE05F81F3a8ad8B28C6E17779CFAbf76068",
    "wormholeChainId": 5,
    "wormholeEndpoint": "0x7A4B5a56256163F07b2C80A7cA55aBE66c4ec4d7",
    "wormholeConsistency": 199,
    "zksync": False,
}

BNB = {
    "chainId": 56,
    "name": "bnb",
    "nativeTokenSymbol": "BNB",
    "nativeTokenName": "BNB",
    "nativeTokenDecimals": 18,
    "hashflowChainId": 6,
    "testTokens": False,
    "weth": "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c",
    "layerZeroEndpoint": "0x3c2269811836af69497E5F486A85D7316753cf62",
    "layerZeroChainId": 102,
    "layerZeroNonceContract": "0x5B905fE05F81F3a8ad8B28C6E17779CFAbf76068",
    "wormholeChainId": 4,
    "wormholeEndpoint": "0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B",
    "wormholeConsistency": 15,
    "zksync": False,
}

GOERLI = {
    "chainId": 5,
    "name": "goerli",
    "nativeTokenSymbol": "ETH",
    "nativeTokenName": "Ether",
    "nativeTokenDecimals": 18,
    "hashflowChainId": 101,
    "testTokens": False,
    "weth": "0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6",
    "layerZeroChainId": 10121,
    "layerZeroEndpoint": "0xbfD2135BFfbb0B5378b56643c2Df8a87552Bfa23",
    "layerZeroNonceContract": "0xe931419cE7f9Ad7Bf9ec8e2657eF6C805A92089c",
    "wormholeChainId": 2,
    "wormholeEndpoint": "0x706abc4E45D419950511e474C7B9Ed348A4a716c",
    "wormholeConsistency": 1,
    "zksync": False,
}

MUMBAI = {
    "chainId": 80001,
    "name": "mumbai",
    "nativeTokenSymbol": "MATIC",
    "nativeTokenName": "Matic",
    "nativeTokenDecimals": 18,
    "hashflowChainId": 103,
    "testTokens": False,
    "weth": "0x9c3C9283D3e44854697Cd22D3Faa240Cfb032889",
    "layerZeroEndpoint": "0xf69186dfBa60DdB133E91E9A4B5673624293d8F8",
    "layerZeroChainId": 10109,
    "layerZeroNonceContract": "0xB3b1f3dB03f7f3A0E49e0F4EEd0fb175B8A2cE15",
    "wormholeChainId": 5,
    "wormholeEndpoint": "0x0CBE91CF822c73C2315FB05100C2F714765d5c20",
    "wormholeConsistency": 1,
    "zksync": False,
}

BNB_TESTNET = {
    "chainId": 97,
    "name": "bnb-testnet",
    "nativeTokenSymbol": "BNB",
    "nativeTokenName": "BNB",
    "nativeTokenDecimals": 18,
    "hashflowChainId": 104,
    "testTokens": False,
    "weth": "0xae13d989dac2f0debff460ac112a837c89baa7cd",
    "layerZeroEndpoint": "0x6Fcb97553D41516Cb228ac03FdC8B9a0a9df04A1",
    "layerZeroChainId": 10102,
    "layerZeroNonceContract": "0x318b10788404E23dE2e02d52fA1329BDf6efD1FE",
    "wormholeChainId": 4,
    "wormholeEndpoint": "0x68605AD7b15c732a30b1BbC62BE8F2A509D74b4D",
    "wormholeConsistency": 1,
    "zksync": False,
}

chains = {
    "ETHEREUM": ETHEREUM,
    "GOERLI": GOERLI,
    "OPTIMISM": OPTIMISM,
    "POLYGON": POLYGON,
    "MUMBAI": MUMBAI,
    "BNB": BNB,
    "BNB_TESTNET": BNB_TESTNET,
    "ARBITRUM": ARBITRUM,
    "AVALANCHE": AVALANCHE,
}

CHAIN_IDS = [chain["chainId"] for chain in chains.values()]
