1use clap::Subcommand;
2
3#[derive(Subcommand, Debug)]
4pub enum QpuAction {
5 ListProviders,
6
7 Configure {
8 provider: String,
9 #[arg(
10 long,
11 help = "API key / bearer token (IBM, D-Wave, IonQ, Rigetti, Quantinuum)"
12 )]
13 api_key: Option<String>,
14 #[arg(long, help = "Custom API endpoint URL (overrides provider default)")]
15 endpoint: Option<String>,
16 #[arg(long, help = "IBM Quantum Network hub (e.g. ibm-q)")]
17 hub: Option<String>,
18 #[arg(long, help = "IBM Quantum Network group (e.g. open)")]
19 group: Option<String>,
20 #[arg(long, help = "IBM Quantum Network project (e.g. main)")]
21 project: Option<String>,
22 #[arg(long, help = "IBM instance string (alternate to hub/group/project)")]
23 instance: Option<String>,
24 #[arg(long, help = "Azure subscription ID")]
25 subscription_id: Option<String>,
26 #[arg(long, help = "Azure resource group name")]
27 resource_group: Option<String>,
28 #[arg(long, help = "Azure Quantum workspace name")]
29 workspace: Option<String>,
30 #[arg(long, help = "Azure region (e.g. eastus)")]
31 location: Option<String>,
32 #[arg(long, help = "AWS access key ID (IAM with AmazonBraketFullAccess)")]
33 access_key_id: Option<String>,
34 #[arg(long, help = "AWS secret access key")]
35 secret_access_key: Option<String>,
36 #[arg(long, help = "AWS region (e.g. us-east-1)")]
37 region: Option<String>,
38 #[arg(long, help = "S3 bucket for Braket job results")]
39 s3_bucket: Option<String>,
40 #[arg(long, help = "Google Cloud project ID")]
41 project_id: Option<String>,
42 #[arg(long, help = "Quantum processor ID (e.g. rainbow, weber)")]
43 processor_id: Option<String>,
44 #[arg(long, help = "Path to service account JSON key file")]
45 service_account_key_path: Option<String>,
46 #[arg(long, help = "Rigetti QCS user ID")]
47 user_id: Option<String>,
48 #[arg(long, help = "Rigetti QPU ID (e.g. Ankaa-2)")]
49 qpu_id: Option<String>,
50 #[arg(
51 long,
52 help = "IonQ backend (ionq_sim | ionq_qpu | qpu.aria-1 | qpu.forte-1)"
53 )]
54 backend: Option<String>,
55 #[arg(
56 long,
57 help = "Quantinuum machine (H1-1 | H1-2 | H2-1 | H1-1E | H1-1SC)"
58 )]
59 machine: Option<String>,
60 },
61
62 Show {
63 #[arg(long)]
64 provider: Option<String>,
65 },
66
67 Clear {
68 provider: String,
69 },
70
71 TestConnection {
72 provider: String,
73 },
74
75 Submit {
76 provider: String,
77 #[arg(long, default_value = "annealing")]
78 problem_type: String,
79 #[arg(long, default_value = "4")]
80 qubits: u32,
81 #[arg(long, default_value = "1000")]
82 shots: u32,
83 },
84}