solagent_plugin_birdeye/
lib.rsuse anyhow::Result;
use solagent_core::{IWallet, SolanaAgentKit};
mod primitive;
pub use primitive::*;
pub async fn get_token_overview<W: IWallet>(agent: &SolanaAgentKit<W>, address: &str) -> Result<TokenOverviewResponse> {
let api_key = agent
.config
.birdeye_api_key
.as_ref()
.ok_or_else(|| anyhow::anyhow!("Missing Birdeye API key in agent.config.birdeye_api_key"))?;
let client = reqwest::Client::new();
let url = format!("{}/defi/token_overview", BIRDEYE_URL);
let resp = client
.get(url)
.query(&[("address", address)])
.header("X-API-KEY", api_key)
.header("accept", "application/json")
.header("x-chain", "solana")
.send()
.await?
.json::<TokenOverviewResponse>()
.await?;
Ok(resp)
}
pub async fn get_market_data<W: IWallet>(agent: &SolanaAgentKit<W>, address: &str) -> Result<MarketDataResponse> {
let api_key = agent
.config
.birdeye_api_key
.as_ref()
.ok_or_else(|| anyhow::anyhow!("Missing Birdeye API key in agent.config.birdeye_api_key"))?;
let client = reqwest::Client::new();
let url = format!("{}/defi/v3/token/market-data", BIRDEYE_URL);
let resp = client
.get(url)
.query(&[("address", address)])
.header("X-API-KEY", api_key)
.header("accept", "application/json")
.header("x-chain", "solana")
.send()
.await?
.json::<MarketDataResponse>()
.await?;
Ok(resp)
}