moonstream/moonstreamdb/moonstreamdb/networks.py

127 wiersze
3.0 KiB
Python

from enum import Enum
from typing import Dict, Union
from .models import (
Base,
EthereumBlock,
EthereumLabel,
EthereumTransaction,
MumbaiBlock,
MumbaiLabel,
MumbaiTransaction,
PolygonBlock,
PolygonLabel,
PolygonTransaction,
WyrmBlock,
WyrmLabel,
WyrmTransaction,
XDaiBlock,
XDaiLabel,
XDaiTransaction,
ZkSyncEraTestnetBlock,
ZkSyncEraTestnetLabel,
ZkSyncEraTestnetTransaction,
ZkSyncEraBlock,
ZkSyncEraLabel,
ZkSyncEraTransaction,
ArbitrumNovaBlock,
ArbitrumNovaTransaction,
ArbitrumNovaLabel,
ArbitrumSepoliaBlock,
ArbitrumSepoliaTransaction,
ArbitrumSepoliaLabel,
XaiBlock,
XaiLabel,
XaiTransaction,
XaiTestnetBlock,
XaiTestnetLabel,
XaiTestnetTransaction,
)
class Network(Enum):
ethereum = "ethereum"
polygon = "polygon"
mumbai = "mumbai"
xdai = "xdai"
wyrm = "wyrm"
zksync_era_testnet = "zksync_era_testnet"
zksync_era = "zksync_era"
arbitrum_nova = "arbitrum_nova"
arbitrum_sepolia = "arbitrum_sepolia"
xai = "xai"
xai_testnet = "xai_testnet"
tx_raw_types = Union[
EthereumTransaction,
MumbaiTransaction,
PolygonTransaction,
WyrmTransaction,
XDaiTransaction,
ZkSyncEraTestnetTransaction,
ZkSyncEraTransaction,
ArbitrumNovaTransaction,
ArbitrumSepoliaTransaction,
XaiTransaction,
XaiTestnetTransaction,
]
MODELS: Dict[Network, Dict[str, Base]] = {
Network.ethereum: {
"blocks": EthereumBlock,
"labels": EthereumLabel,
"transactions": EthereumTransaction,
},
Network.mumbai: {
"blocks": MumbaiBlock,
"labels": MumbaiLabel,
"transactions": MumbaiTransaction,
},
Network.polygon: {
"blocks": PolygonBlock,
"labels": PolygonLabel,
"transactions": PolygonTransaction,
},
Network.xdai: {
"blocks": XDaiBlock,
"labels": XDaiLabel,
"transactions": XDaiTransaction,
},
Network.wyrm: {
"blocks": WyrmBlock,
"labels": WyrmLabel,
"transactions": WyrmTransaction,
},
Network.zksync_era_testnet: {
"blocks": ZkSyncEraTestnetBlock,
"labels": ZkSyncEraTestnetLabel,
"transactions": ZkSyncEraTestnetTransaction,
},
Network.zksync_era: {
"blocks": ZkSyncEraBlock,
"labels": ZkSyncEraLabel,
"transactions": ZkSyncEraTransaction,
},
Network.arbitrum_nova: {
"blocks": ArbitrumNovaBlock,
"labels": ArbitrumNovaLabel,
"transactions": ArbitrumNovaTransaction,
},
Network.arbitrum_sepolia: {
"blocks": ArbitrumSepoliaBlock,
"labels": ArbitrumSepoliaLabel,
"transactions": ArbitrumSepoliaTransaction,
},
Network.xai: {
"blocks": XaiBlock,
"labels": XaiLabel,
"transactions": XaiTransaction,
},
Network.xai_testnet: {
"blocks": XaiTestnetBlock,
"labels": XaiTestnetLabel,
"transactions": XaiTestnetTransaction,
},
}