use anyhow::Result;
use crate::config::{Command, Config, NetworkCommand, VaultCommand};
mod helpers;
mod network_initialize;
mod network_swap;
mod permission_initialize;
mod program_initialize;
mod program_version;
mod show;
mod vault_initialize;
mod vault_liquidity;
pub fn handle(config: &Config) -> Result<()> {
match &config.command {
Command::Show => show::handle(config)?,
Command::Program { command } => match command {
crate::config::ProgramCommand::Initialize => program_initialize::handle(config)?,
crate::config::ProgramCommand::Version => program_version::handle(config)?,
},
Command::Permission { .. } => permission_initialize::handle(config)?,
Command::Network { command } => match command {
NetworkCommand::Initialize { .. } => network_initialize::handle(config)?,
NetworkCommand::Swap { .. } => network_swap::handle(config)?,
},
Command::Vault { command } => match command {
VaultCommand::Initialize { .. } => vault_initialize::handle(config)?,
VaultCommand::Deposit { .. } => vault_liquidity::handle_deposit(config)?,
VaultCommand::Withdraw { .. } => vault_liquidity::handle_withdraw(config)?,
},
}
Ok(())
}