use crate::NodeTarget;
use clap::Parser;
use forc::cli::shared::IrCliOpt;
use fuel_crypto::SecretKey;
pub use super::submit::Network;
pub use forc::cli::shared::{BuildOutput, BuildProfile, Minify, Pkg, Print};
pub use forc_tx::{Gas, Maturity};
#[derive(Debug, Default, Parser)]
#[clap(bin_name = "forc run", version)]
pub struct Command {
#[clap(flatten)]
pub pkg: Pkg,
#[clap(flatten)]
pub minify: Minify,
#[arg(long, value_parser = clap::builder::PossibleValuesParser::new(IrCliOpt::cli_options()))]
pub verify_ir: Option<Vec<String>>,
#[clap(flatten)]
pub print: Print,
#[clap(flatten)]
pub gas: Gas,
#[clap(flatten)]
pub maturity: Maturity,
#[clap(flatten)]
pub build_output: BuildOutput,
#[clap(flatten)]
pub build_profile: BuildProfile,
#[clap(flatten)]
pub node: NodeTarget,
#[clap(short, long)]
pub data: Option<String>,
#[clap(long)]
pub dry_run: bool,
#[clap(long = "pretty-print", short = 'r')]
pub pretty_print: bool,
#[clap(long = "contract")]
pub contract: Option<Vec<String>>,
#[clap(long)]
pub simulate: bool,
#[clap(long)]
pub default_signer: bool,
#[clap(long)]
pub unsigned: bool,
pub signing_key: Option<SecretKey>,
#[clap(long)]
pub args: Option<Vec<String>>,
#[clap(long, help_heading = "DEBUG")]
pub debug: bool,
#[clap(flatten)]
pub experimental: sway_features::CliFields,
}