use solana_sdk::{pubkey::Pubkey, signature::Signer}; pub struct SenderStakeArgs { pub stake_account_address: Pubkey, pub stake_authority: Box, pub withdraw_authority: Box, pub lockup_authority: Option>, pub rent_exempt_reserve: Option, } pub struct StakeArgs { pub unlocked_sol: u64, pub lockup_authority: Option, pub sender_stake_args: Option, } pub struct DistributeTokensArgs { pub input_csv: String, pub transaction_db: String, pub output_path: Option, pub dry_run: bool, pub sender_keypair: Box, pub fee_payer: Box, pub stake_args: Option, pub spl_token_args: Option, pub transfer_amount: Option, } #[derive(Default)] pub struct SplTokenArgs { pub token_account_address: Pubkey, pub mint: Pubkey, pub decimals: u8, } pub struct BalancesArgs { pub input_csv: String, pub spl_token_args: Option, } pub struct TransactionLogArgs { pub transaction_db: String, pub output_path: String, } #[allow(clippy::large_enum_variant)] pub enum Command { DistributeTokens(DistributeTokensArgs), Balances(BalancesArgs), TransactionLog(TransactionLogArgs), } pub struct Args { pub config_file: String, pub url: Option, pub command: Command, }