// SPDX-License-Identifier: BSD-3-Clause

//! droidsaw-core — unified Android reverse engineering toolkit.
//!
//! This crate ships both a library and two binaries:
//!
//! - **`droidsaw`** — the CLI (`src/main.rs`), always compiled.
//! - **`droidsaw-mcp`** — the MCP server (`src/bin/mcp.rs`), compiled
//!   only when `--features mcp` is set. Depends on the `mcp` module
//!   below and on `rmcp` + `tokio`.
//!
//! Both binaries consume the same `commands::*` tool layer — one code
//! path per tool across both transports.

#![cfg_attr(not(test), deny(
    clippy::unwrap_used,
    clippy::expect_used,
    clippy::panic,
    clippy::unreachable,
    clippy::todo,
    clippy::arithmetic_side_effects,
    clippy::indexing_slicing,
    clippy::string_slice,
    clippy::let_underscore_future,
    clippy::await_holding_lock,
    clippy::await_holding_refcell_ref,
    clippy::if_let_mutex,
    clippy::large_futures,
    clippy::as_underscore,
    clippy::cast_lossless,
    clippy::cast_possible_truncation,
    clippy::cast_sign_loss,
    clippy::cast_precision_loss,
    clippy::cast_possible_wrap,
    clippy::unused_result_ok,
    clippy::let_underscore_must_use,
    clippy::map_err_ignore,
    clippy::allow_attributes_without_reason,
    clippy::as_conversions,
))]

pub mod analysis;
pub mod commands;
pub mod context;
pub mod corpus_runner;
pub mod detectors;
pub mod error;
pub mod sarif;
pub mod semgrep;
pub mod threat_model;
pub mod trufflehog;

#[cfg(feature = "mcp")]
pub mod mcp;
