1use std::path::PathBuf;
2
3use clap::Parser;
4
5#[derive(Parser, Debug)]
6#[command(version, about, long_about = None, disable_help_subcommand = true)]
7pub struct Args {
8 #[command(subcommand)]
9 pub command: Command,
10}
11
12#[derive(clap::Subcommand, Debug)]
13pub enum Command {
14 Help,
15 Config(ConfigArgs),
16 Create(CreateArgs),
17 Wallet(WalletArgs),
18}
19
20#[derive(Parser, Debug)]
21pub struct ConfigArgs {
22 #[command(subcommand)]
23 pub command: ConfigCommand,
24}
25
26#[derive(clap::Subcommand, Debug)]
27pub enum ConfigCommand {
28 Get,
29 Reset,
30 Set {
31 #[arg(value_name = "NETWORK")]
32 network: Option<String>,
33
34 #[arg(long)]
35 url: Option<String>,
36
37 #[arg(long)]
38 keypair: Option<PathBuf>,
39
40 #[arg(long)]
41 commitment: Option<String>,
42 }
43}
44
45#[derive(Parser, Debug)]
46pub struct CreateArgs {
47 #[command(subcommand)]
48 pub command: CreateCommand,
49}
50
51#[derive(Parser, Debug)]
52pub struct WalletArgs {
53 #[command(subcommand)]
54 pub command: WalletCommand,
55}
56
57#[derive(clap::Subcommand, Debug)]
58pub enum WalletCommand {
59 Address,
60 Balance {
61 #[arg(long)]
62 address: Option<String>,
63 },
64 Status,
65 Airdrop {
66 amount: f64,
67 },
68}
69
70#[derive(clap::Subcommand, Debug)]
71pub enum CreateCommand {
72 Mint {
73 #[arg(long)]
74 mint_authority: String,
75
76 #[arg(long)]
77 freeze_authority: Option<String>,
78
79 #[arg(long)]
80 decimals: u8,
81
82 #[arg(long)]
83 initial_supply: u64,
84 },
85 Metadata {
86 #[arg(long)]
87 mint_address: String,
88
89 #[arg(long)]
90 name: String,
91
92 #[arg(long)]
93 symbol: String,
94
95 #[arg(long)]
96 uri: String,
97
98 #[arg(long)]
99 immutable: bool,
100 },
101 Token {
102 #[arg(long)]
103 name: String,
104
105 #[arg(long)]
106 symbol: String,
107
108 #[arg(long)]
109 decimals: u8,
110
111 #[arg(long)]
112 initial_supply: u64,
113
114 #[arg(long)]
115 uri: String,
116
117 #[arg(long)]
118 freeze_authority: Option<String>,
119
120 #[arg(long)]
121 immutable: bool,
122 },
123 Nft {
124 #[arg(long)]
125 name: String,
126
127 #[arg(long)]
128 symbol: String,
129
130 #[arg(long)]
131 uri: String,
132
133 #[arg(long)]
134 immutable: bool,
135
136 #[arg(long)]
137 freeze_authority: Option<String>,
138
139 #[arg(long)]
140 collection_mint: Option<String>,
141 },
142 Market {
143 #[arg(long)]
144 base_mint: String,
145
146 #[arg(long)]
147 quote_mint: String,
148 },
149 Pool {
150 #[arg(long)]
151 market_id: String,
152
153 #[arg(long)]
154 base_amount: String,
155
156 #[arg(long)]
157 quote_amount: String,
158 },
159 Launch {
160 #[arg(long)]
161 name: String,
162
163 #[arg(long)]
164 symbol: String,
165
166 #[arg(long)]
167 image_path: String,
168
169 #[arg(long)]
170 description: Option<String>,
171
172 #[arg(long)]
173 decimals: u8,
174
175 #[arg(long)]
176 initial_supply: u64,
177
178 #[arg(long)]
179 mint_authority: Option<String>,
180
181 #[arg(long)]
182 freeze_authority: Option<String>,
183
184 #[arg(long)]
185 initial_lp_base: u64,
186
187 #[arg(long)]
188 initial_lp_quote: u64,
189
190 #[arg(long)]
191 immutable: bool,
192
193 #[arg(long)]
194 burn_lp: bool,
195
196 #[arg(long)]
197 lock_lp_duration: u64,
198 }
199}