use clap::Args;
use color_eyre::eyre::Result;
use polyte_data::DataApi;
use crate::commands::common::parsing::parse_comma_separated;
#[derive(Args)]
pub struct HoldersCommand {
#[arg(short, long, value_parser = parse_comma_separated)]
market: Vec<String>,
#[arg(short, long, default_value = "100")]
limit: u32,
#[arg(long, default_value = "1")]
min_balance: u32,
}
impl HoldersCommand {
pub async fn run(self, data: &DataApi) -> Result<()> {
let ids: Vec<&str> = self.market.iter().map(|s| s.as_str()).collect();
let request = data
.holders()
.list(ids)
.limit(self.limit)
.min_balance(self.min_balance);
let holders = request.send().await?;
println!("{}", serde_json::to_string_pretty(&holders)?);
Ok(())
}
}