use anyhow::Result;
use solana_sdk::pubkey::Pubkey;
use std::str::FromStr;
pub fn validate_pubkey(pubkey_str: &str) -> Result<Pubkey> {
Pubkey::from_str(pubkey_str)
.map_err(|e| anyhow::anyhow!("Invalid public key: {}", e))
}
pub fn lamports_to_sol(lamports: u64) -> f64 {
lamports as f64 / 1_000_000_000.0
}
pub fn format_sol(lamports: u64) -> String {
format!("{:.9} SOL", lamports_to_sol(lamports))
}
pub fn truncate_str(s: &str, max_len: usize) -> String {
if s.len() <= max_len {
s.to_string()
} else {
format!("{}...", &s[..max_len.saturating_sub(3)])
}
}
pub fn format_timestamp(timestamp: i64) -> String {
chrono::DateTime::from_timestamp(timestamp, 0)
.map(|dt| dt.format("%Y-%m-%d %H:%M:%S UTC").to_string())
.unwrap_or_else(|| "Unknown".to_string())
}
pub fn pretty_json(value: &serde_json::Value) -> String {
serde_json::to_string_pretty(value).unwrap_or_else(|_| "Invalid JSON".to_string())
}