use solagent_core::SolanaAgentKit;
pub async fn delete_webhook(
agent: &SolanaAgentKit,
webhook_id: &str,
) -> Result<serde_json::Value, Box<dyn std::error::Error>> {
let api_key = match agent.config.helius_api_key.as_ref() {
Some(key) => key,
None => return Err("Missing Helius API key in agent.config.HELIUS_API_KEY".into()),
};
let url = format!("https://api.helius.xyz/v0/webhooks/{}?api-key={}", webhook_id, api_key);
let client = reqwest::Client::new();
let response = client.delete(&url).header("Content-Type", "application/json").send().await?;
if !response.status().is_success() {
return Err(format!(
"Failed to delete webhook: {} {}",
response.status(),
response.status().canonical_reason().unwrap_or("Unknown")
)
.into());
}
if response.status().as_u16() == 204 {
return Ok(serde_json::json!({"message": "Webhook deleted successfully (no content returned)"}));
}
let content_length = response.headers().get("Content-Length");
if content_length.is_none() || content_length.expect("HeaderValue").to_str()? == "0" {
return Ok(serde_json::json!({"message": "Webhook deleted successfully (empty body)"}));
}
let data: serde_json::Value = response.json().await?;
Ok(data)
}