solana_tokens/
args.rs

1use {solana_pubkey::Pubkey, solana_signer::Signer};
2
3pub struct SenderStakeArgs {
4    pub stake_account_address: Pubkey,
5    pub stake_authority: Box<dyn Signer>,
6    pub withdraw_authority: Box<dyn Signer>,
7    pub lockup_authority: Option<Box<dyn Signer>>,
8    pub rent_exempt_reserve: Option<u64>,
9}
10
11pub struct StakeArgs {
12    pub unlocked_sol: u64,
13    pub lockup_authority: Option<Pubkey>,
14    pub sender_stake_args: Option<SenderStakeArgs>,
15}
16
17pub struct DistributeTokensArgs {
18    pub input_csv: String,
19    pub transaction_db: String,
20    pub output_path: Option<String>,
21    pub dry_run: bool,
22    pub sender_keypair: Box<dyn Signer>,
23    pub fee_payer: Box<dyn Signer>,
24    pub stake_args: Option<StakeArgs>,
25    pub spl_token_args: Option<SplTokenArgs>,
26    pub transfer_amount: Option<u64>,
27}
28
29#[derive(Default)]
30pub struct SplTokenArgs {
31    pub token_account_address: Pubkey,
32    pub mint: Pubkey,
33    pub decimals: u8,
34}
35
36pub struct BalancesArgs {
37    pub input_csv: String,
38    pub spl_token_args: Option<SplTokenArgs>,
39}
40
41pub struct TransactionLogArgs {
42    pub transaction_db: String,
43    pub output_path: String,
44}
45
46#[allow(clippy::large_enum_variant)]
47pub enum Command {
48    DistributeTokens(DistributeTokensArgs),
49    Balances(BalancesArgs),
50    TransactionLog(TransactionLogArgs),
51}
52
53pub struct Args {
54    pub config_file: String,
55    pub url: Option<String>,
56    pub command: Command,
57}