use ant_evm::{EvmNetwork, get_evm_network};
use clap::Subcommand;
use color_eyre::Result;
#[derive(Subcommand, Clone, Debug)]
#[allow(clippy::enum_variant_names)]
pub enum EvmNetworkCommand {
EvmArbitrumOne,
EvmArbitrumSepoliaTest,
EvmCustom {
#[arg(long)]
rpc_url: String,
#[arg(long, short)]
payment_token_address: String,
#[arg(long, short)]
data_payments_address: String,
#[arg(long)]
merkle_payments_address: Option<String>,
},
EvmLocal,
}
impl TryInto<EvmNetwork> for EvmNetworkCommand {
type Error = color_eyre::eyre::Error;
fn try_into(self) -> Result<EvmNetwork> {
match self {
Self::EvmArbitrumOne => Ok(EvmNetwork::ArbitrumOne),
Self::EvmArbitrumSepoliaTest => Ok(EvmNetwork::ArbitrumSepoliaTest),
Self::EvmLocal => {
let network = get_evm_network(true, None)?;
Ok(network)
}
Self::EvmCustom {
rpc_url,
payment_token_address,
data_payments_address,
merkle_payments_address,
} => Ok(EvmNetwork::new_custom(
&rpc_url,
&payment_token_address,
&data_payments_address,
merkle_payments_address.as_deref(),
)),
}
}
}