use crate::SolanaAgentKit;
use solana_client::client_error::ClientError;
use solana_sdk::{native_token::LAMPORTS_PER_SOL, pubkey::Pubkey};
use std::str::FromStr;
pub async fn get_balance(agent: &SolanaAgentKit, token_address: Option<String>) -> Result<f64, ClientError> {
if let Some(token_address) = token_address {
if let Ok(pubkey) = Pubkey::from_str(&token_address) {
let token_account = agent.connection.get_token_account_balance(&pubkey)?;
let ui_amount = token_account.ui_amount.unwrap_or(0.0);
return Ok(ui_amount);
}
}
let balance = agent.connection.get_balance(&agent.wallet.address)?;
Ok(balance as f64 / LAMPORTS_PER_SOL as f64)
}