use crate::tokens::{CHAIN_ID_HELP, PROTOCOL_CHAINS_NOTE};
use crate::service::submit::EXIT_STATUS_HELP;
use clap::Subcommand;
#[derive(Subcommand)]
pub enum IntentCommands {
#[command(after_help = format!("{PROTOCOL_CHAINS_NOTE}\n\n{EXIT_STATUS_HELP}"))]
Place {
#[arg(short, long = "chainid", help = CHAIN_ID_HELP)]
chain_id: String,
#[arg(long)]
proxy_owner: String,
#[arg(short, long)]
from: String,
#[arg(short, long)]
to: String,
#[arg(short, long)]
amount: String,
#[arg(long)]
start_out: String,
#[arg(long)]
end_out: String,
#[arg(long)]
decay_secs: Option<u64>,
#[arg(long)]
duration_secs: Option<u64>,
#[arg(long)]
deadline_secs: Option<u64>,
#[arg(long)]
relay: bool,
#[arg(long)]
self_submit: bool,
#[arg(long)]
broadcast: bool,
#[arg(long)]
dry_run: bool,
},
#[command(after_help = PROTOCOL_CHAINS_NOTE)]
List {
#[arg(short, long = "chainid", help = CHAIN_ID_HELP)]
chain_id: String,
#[arg(long, conflicts_with = "agent", required_unless_present = "agent")]
owner: Option<String>,
#[arg(long, conflicts_with = "owner", required_unless_present = "owner")]
agent: Option<String>,
#[arg(long)]
lookback_blocks: Option<u64>,
},
#[command(after_help = PROTOCOL_CHAINS_NOTE)]
Status {
#[arg(short, long = "chainid", help = CHAIN_ID_HELP)]
chain_id: String,
#[arg(long)]
id: String,
#[arg(long)]
lookback_blocks: Option<u64>,
},
}