1use crate::log::LoggingFormat;
2use clap::{command, Parser};
3
4#[derive(Debug, Parser)]
6#[command(name = "kora")]
7pub struct CommonArgs {
8 #[arg(long, env = "RPC_URL", default_value = "http://127.0.0.1:8899")]
10 pub rpc_url: String,
11
12 #[arg(long, env = "KORA_PRIVATE_KEY", required_unless_present_any = ["skip_signer", "turnkey_signer", "vault_signer", "privy_signer"])]
14 pub private_key: Option<String>,
15
16 #[arg(long, default_value = "kora.toml")]
18 pub config: String,
19
20 #[arg(long = "no-load-signer")]
22 pub skip_signer: bool,
23
24 #[arg(long = "with-turnkey-signer")]
26 pub turnkey_signer: bool,
27
28 #[arg(long, env = "TURNKEY_API_PUBLIC_KEY")]
30 pub turnkey_api_public_key: Option<String>,
31
32 #[arg(long, env = "TURNKEY_API_PRIVATE_KEY")]
33 pub turnkey_api_private_key: Option<String>,
34
35 #[arg(long, env = "TURNKEY_ORGANIZATION_ID")]
36 pub turnkey_organization_id: Option<String>,
37
38 #[arg(long, env = "TURNKEY_PRIVATE_KEY_ID")]
39 pub turnkey_private_key_id: Option<String>,
40
41 #[arg(long, env = "TURNKEY_PUBLIC_KEY")]
42 pub turnkey_public_key: Option<String>,
43
44 #[arg(long = "with-privy-signer")]
46 pub privy_signer: bool,
47
48 #[arg(long, env = "PRIVY_APP_ID")]
50 pub privy_app_id: Option<String>,
51
52 #[arg(long, env = "PRIVY_APP_SECRET")]
53 pub privy_app_secret: Option<String>,
54
55 #[arg(long, env = "PRIVY_WALLET_ID")]
56 pub privy_wallet_id: Option<String>,
57
58 #[arg(long)]
59 pub vault_signer: bool,
60
61 #[arg(long, env = "VAULT_ADDR")]
62 pub vault_addr: Option<String>,
63
64 #[arg(long, env = "VAULT_TOKEN")]
65 pub vault_token: Option<String>,
66
67 #[arg(long, env = "VAULT_KEY_NAME")]
68 pub vault_key_name: Option<String>,
69
70 #[arg(long, env = "VAULT_PUBKEY")]
71 pub vault_pubkey: Option<String>,
72}
73
74#[derive(Debug, Parser)]
76pub struct RpcArgs {
77 #[command(flatten)]
78 pub common: CommonArgs,
79
80 #[arg(short = 'p', long, default_value = "8080")]
82 pub port: Option<u16>,
83
84 #[arg(long, default_value = "standard")]
86 pub logging_format: LoggingFormat,
87
88 #[arg(long, default_value = None)]
90 pub metrics_endpoint: Option<String>,
91}
92
93#[derive(Debug, Parser)]
95pub struct CliArgs {
96 #[command(flatten)]
97 pub common: CommonArgs,
98}