use crate::error::{Error, Result};
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct Bech32Prefixes {
pub account: String,
pub validator: String,
pub consensus: String,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct CoinInfo {
pub display: String,
pub base: String,
pub exponent: u32,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct Endpoints {
pub rest: String,
pub grpc: String,
pub rpc: String,
pub evm_rpc: String,
pub evm_ws: String,
pub svm_rpc: String,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct NetworkConfig {
pub name: String,
pub live: bool,
pub chain_id: Option<String>,
pub bech32: Bech32Prefixes,
pub coin: CoinInfo,
pub endpoints: Option<Endpoints>,
}
fn bech32_prefixes() -> Bech32Prefixes {
Bech32Prefixes {
account: "qor".into(),
validator: "qorvaloper".into(),
consensus: "qorvalcons".into(),
}
}
fn coin_info() -> CoinInfo {
CoinInfo {
display: "QOR".into(),
base: "uqor".into(),
exponent: 6,
}
}
pub fn networks() -> Vec<NetworkConfig> {
vec![
NetworkConfig {
name: "testnet".into(),
live: true,
chain_id: Some("qorechain-diana".into()),
bech32: bech32_prefixes(),
coin: coin_info(),
endpoints: Some(Endpoints {
rest: "http://localhost:1317".into(),
grpc: "http://localhost:9090".into(),
rpc: "http://localhost:26657".into(),
evm_rpc: "http://localhost:8545".into(),
evm_ws: "ws://localhost:8546".into(),
svm_rpc: "http://localhost:8899".into(),
}),
},
NetworkConfig {
name: "mainnet".into(),
live: true,
chain_id: Some("qorechain-vladi".into()),
bech32: bech32_prefixes(),
coin: coin_info(),
endpoints: Some(Endpoints {
rest: "http://localhost:1317".into(),
grpc: "http://localhost:9090".into(),
rpc: "http://localhost:26657".into(),
evm_rpc: "http://localhost:8545".into(),
evm_ws: "ws://localhost:8546".into(),
svm_rpc: "http://localhost:8899".into(),
}),
},
]
}
pub fn get_network(name: &str) -> Result<NetworkConfig> {
networks()
.into_iter()
.find(|n| n.name == name)
.ok_or_else(|| Error::UnknownNetwork(name.to_string()))
}
pub fn list_networks() -> Vec<String> {
vec!["testnet".into(), "mainnet".into()]
}