use std::path::PathBuf;
use clap::{Parser, Subcommand};
use aimo_core::keys::Scope;
#[derive(Debug, Parser)]
#[command(version, about, long_about = None)]
pub struct CliArgs {
#[command(subcommand)]
pub command: CommandArgs,
}
#[derive(Debug, Subcommand)]
pub enum CommandArgs {
Keygen {
#[arg(
long,
short,
default_value = "dev",
long_help = "Scope tag is set to `dev` by default. By specifying this, you get a secret key like: `aimo-sk-<tag>-xxxxxxx`"
)]
tag: String,
#[arg(long, short, default_value_t = 90)]
valid_for: u32,
#[arg(
long,
short,
value_delimiter = ',',
long_help = "Specify which scopes to enable with comma-seperated values. Current supported values are: \"completion_model\"",
default_value = "completion_model"
)]
scopes: Vec<Scope>,
#[arg(long, short, default_value_t = 0)]
usage_limit: u64,
#[arg(
long,
value_name = "FILE",
long_help = "Specify a Solana wallet id file (id.json, generated with `solana-keygen new`) to sign the secret key. Defaults to `~/.config/solana/id.json`."
)]
id: Option<PathBuf>,
},
Proxy {
#[arg(short, long)]
config: std::path::PathBuf,
#[arg(long, value_name = "FILE")]
id: Option<PathBuf>,
},
Topup {
amount: f64,
token: Option<String>,
#[arg(short, long, action)]
devnet_tokens: bool,
#[arg(long, default_value = "https://api.devnet.solana.com")]
rpc_url: String,
#[arg(long, default_value = "https://devnet.aimo.network")]
router_url: String,
#[arg(
long,
value_name = "FILE",
long_help = "Specify a Solana wallet id file (id.json, generated with `solana-keygen new`) to use for the topup. Defaults to `~/.config/solana/id.json`."
)]
id: Option<PathBuf>,
},
}