use abscissa_core::clap::Parser;
use abscissa_core::{config::Override, Command, Runnable};
use ibc_relayer::config::Config;
mod channel;
pub(crate) mod client;
mod connection;
mod packet;
mod transfer;
mod upgrade;
#[allow(clippy::large_enum_variant)]
#[derive(Command, Debug, Parser, Runnable)]
pub enum TxCmd {
ConnInit(connection::TxConnInitCmd),
ConnTry(connection::TxConnTryCmd),
ConnAck(connection::TxConnAckCmd),
ConnConfirm(connection::TxConnConfirmCmd),
ChanOpenInit(channel::TxChanOpenInitCmd),
ChanOpenTry(channel::TxChanOpenTryCmd),
ChanOpenAck(channel::TxChanOpenAckCmd),
ChanOpenConfirm(channel::TxChanOpenConfirmCmd),
ChanCloseInit(channel::TxChanCloseInitCmd),
ChanCloseConfirm(channel::TxChanCloseConfirmCmd),
FtTransfer(transfer::TxIcs20MsgTransferCmd),
PacketRecv(packet::TxPacketRecvCmd),
PacketAck(packet::TxPacketAckCmd),
UpgradeChain(upgrade::TxIbcUpgradeChainCmd),
}
impl Override<Config> for TxCmd {
fn override_config(&self, config: Config) -> Result<Config, abscissa_core::FrameworkError> {
match self {
Self::FtTransfer(cmd) => cmd.override_config(config),
_ => Ok(config),
}
}
}