//! # aignt-mint-scoring
//!
//! Security scoring library for Solana tokens.
//!
//! Evaluates a mint across five categories — authority controls, holder
//! distribution, metadata flags, trust signals, and exit liquidity — and
//! returns a 0–100 composite score with platform-aware adjustments for known
//! launchpads (Pump.fun, Bonk Launchpad, Moonshot, LetsBonk).
//!
//! ## Quick start
//!
//! ```no_run
//! use birdeye_client::client::{BirdeyeClient, BirdeyeProvider};
//! use aignt_mint_scoring::security_score;
//!
//! #[tokio::main]
//! async fn main() -> anyhow::Result<()> {
//!     let birdeye = BirdeyeClient::new("your-api-key", BirdeyeProvider::Birdeye, None)?;
//!     let rc_client = reqwest::Client::new();
//!
//!     let mint = "So11111111111111111111111111111111111111112";
//!
//!     // Full score with rugcheck LP data
//!     let result = security_score(&birdeye, Some(&rc_client), mint).await?;
//!     println!("Score: {:.1}/100 ({:?})", result.score, result.risk_level);
//!
//!     // Birdeye-only (liquidity category awarded full 25 pts)
//!     let result = security_score(&birdeye, None, mint).await?;
//!     println!("Score: {:.1}/100 ({:?})", result.score, result.risk_level);
//!     Ok(())
//! }
//! ```

pub mod fetch;
pub mod hard_stops;
pub mod platform;
pub mod rugcheck;
pub mod scorer;

pub use birdeye_client::defi::types::BirdeyeTokenSecurity;
pub use fetch::fetch_token_security;
pub use hard_stops::{
    HardStopResult, HardStopSeverity, HardStopViolation, check_hard_stops,
    check_liquidity_hard_stops,
};
pub use platform::{LaunchPlatform, PlatformProfile, TrustLevel, detect_platform};
pub use rugcheck::{RugcheckReport, RugcheckRisk, fetch_rugcheck_report, score_liquidity};
pub use scorer::{
    CategoryBreakdown, HardStopInfo, RiskLevel, RiskLevelStyle, Score, ScoreDetails, score,
    security_score,
};
