use riglr_core::provider::ApplicationContext;
use riglr_web_tools::rugcheck::{analyze_token_risks, check_if_rugged, get_token_report};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
tracing_subscriber::fmt::init();
let context = ApplicationContext::default();
let token_mint = "So11111111111111111111111111111111111111112";
println!("🔍 Checking token: {}", token_mint);
println!("{}", "=".repeat(60));
println!("\n📊 Quick Rug Check:");
match check_if_rugged(&context, token_mint.to_string()).await {
Ok(result) => {
println!(" Is Rugged: {}", result.is_rugged);
println!(" Risk Score: {}/100", result.risk_score);
println!(" Status: {}", result.status);
}
Err(e) => println!(" Error: {}", e),
}
println!("\n🎯 Detailed Risk Analysis:");
match analyze_token_risks(&context, token_mint.to_string()).await {
Ok(analysis) => {
println!(" Risk Level: {:?}", analysis.risk_level);
println!(" Risk Score: {}/100", analysis.risk_score);
println!(" Recommendation: {}", analysis.recommendation);
if !analysis.critical_risks.is_empty() {
println!("\n ⚠️ Critical Risks:");
for risk in &analysis.critical_risks {
println!(" - {}: {}", risk.name, risk.description);
}
}
if let Some(insider) = &analysis.insider_analysis {
println!("\n 👥 Insider Analysis:");
println!(" Networks Detected: {}", insider.networks_detected);
println!(" Insider Accounts: {}", insider.insider_accounts);
}
if let Some(liquidity) = &analysis.liquidity_analysis {
println!("\n 💧 Liquidity Analysis:");
println!(" Total Liquidity: ${:.2}", liquidity.total_liquidity_usd);
println!(" LP Providers: {}", liquidity.provider_count);
println!(" Concentration: {}", liquidity.concentration);
}
}
Err(e) => println!(" Error: {}", e),
}
println!("\n📋 Full Token Report:");
match get_token_report(&context, token_mint.to_string()).await {
Ok(report) => {
println!(" Token: {}", report.mint);
if let Some(score) = report.score {
println!(" Score: {}/100", score);
}
if let Some(rugged) = report.rugged {
println!(" Rugged: {}", rugged);
}
if let Some(holders) = report.total_holders {
println!(" Total Holders: {}", holders);
}
if let Some(liquidity) = report.total_market_liquidity {
println!(" Market Liquidity: ${:.2}", liquidity);
}
if let Some(risks) = &report.risks {
if !risks.is_empty() {
println!("\n Risk Factors ({} total):", risks.len());
for (i, risk) in risks.iter().take(3).enumerate() {
println!(
" {}. {} ({}): {}",
i + 1,
risk.name,
risk.level,
risk.description
);
}
if risks.len() > 3 {
println!(" ... and {} more", risks.len() - 3);
}
}
}
}
Err(e) => println!(" Error: {}", e),
}
println!("\n{}", "=".repeat(60));
println!("✅ RugCheck example completed!");
Ok(())
}