#![deny(clippy::unwrap_used, clippy::expect_used)]
#![cfg_attr(test, allow(clippy::unwrap_used, clippy::expect_used))]
#![allow(missing_docs)]
#![allow(missing_debug_implementations)]
#![allow(unused_crate_dependencies)]
#![allow(clippy::module_name_repetitions)]
#![allow(clippy::cognitive_complexity)]
#![allow(clippy::unnecessary_wraps)]
#![allow(clippy::similar_names)]
#![allow(clippy::missing_const_for_fn)]
#![allow(clippy::too_many_lines)]
#![allow(clippy::doc_markdown)]
#![allow(clippy::must_use_candidate)]
#![allow(clippy::missing_errors_doc)]
#![allow(clippy::default_numeric_fallback)]
#![allow(clippy::unused_self)]
#![allow(clippy::unused_async)]
#![allow(clippy::too_many_arguments)]
#![allow(clippy::wildcard_in_or_patterns)]
#![allow(clippy::redundant_pattern_matching)]

//! FXT -- Foxhunt Operations Platform CLI
//!
//! Thin gRPC client that talks exclusively to the API Gateway.
//! All business logic lives in the backend services.

// Suppress false-positive unused extern crate warnings for dependencies
// that are used in sub-modules or generated code.
use chrono as _;
use clap as _;
use colored as _;
use common as _;
use dirs as _;
use futures_util as _;
use prost as _;
use rust_decimal as _;
use serde as _;
use serde_json as _;
use tabled as _;
use thiserror as _;
use toml as _;
use tonic as _;
use tracing_subscriber as _;
use uuid as _;
use crossterm as _;
use ratatui as _;

// Core modules
pub mod auth;
pub mod commands;
pub mod config;
pub mod error;
pub mod grpc;
pub mod mcp;
pub mod output;
pub mod tui;

/// FXT version information.
pub const VERSION: &str = env!("CARGO_PKG_VERSION");

/// Generated protobuf code for gRPC client interfaces.
///
/// All protos are compiled from the workspace-root `proto/` directory.
pub mod proto {
    /// Auth service protobuf definitions (package `auth`)
    #[allow(clippy::shadow_reuse, clippy::impl_trait_in_params, clippy::empty_structs_with_brackets)]
    pub mod auth {
        tonic::include_proto!("auth");
    }

    /// Trading service protobuf definitions (package `trading`)
    #[allow(clippy::shadow_reuse, clippy::impl_trait_in_params, clippy::empty_structs_with_brackets)]
    pub mod trading {
        tonic::include_proto!("trading");
    }

    /// Health check service protobuf definitions (package `grpc.health.v1`)
    #[allow(clippy::shadow_reuse, clippy::impl_trait_in_params, clippy::empty_structs_with_brackets)]
    pub mod health {
        tonic::include_proto!("grpc.health.v1");
    }

    /// ML service protobuf definitions (package `ml`)
    #[allow(clippy::shadow_reuse, clippy::impl_trait_in_params, clippy::empty_structs_with_brackets)]
    pub mod ml {
        tonic::include_proto!("ml");
    }

    /// Configuration service protobuf definitions (package `config`)
    #[allow(clippy::shadow_reuse, clippy::impl_trait_in_params, clippy::empty_structs_with_brackets)]
    pub mod config {
        tonic::include_proto!("config");
    }

    /// ML Training service protobuf definitions (package `ml_training`)
    #[allow(clippy::shadow_reuse, clippy::impl_trait_in_params, clippy::empty_structs_with_brackets)]
    pub mod ml_training {
        tonic::include_proto!("ml_training");
    }

    /// Trading Agent service protobuf definitions (package `trading_agent`)
    #[allow(clippy::shadow_reuse, clippy::impl_trait_in_params, clippy::empty_structs_with_brackets)]
    pub mod trading_agent {
        tonic::include_proto!("trading_agent");
    }

    /// Broker Gateway service protobuf definitions (package `broker_gateway`)
    #[allow(clippy::shadow_reuse, clippy::impl_trait_in_params, clippy::empty_structs_with_brackets)]
    pub mod broker_gateway {
        tonic::include_proto!("broker_gateway");
    }

    /// Monitoring service protobuf definitions (package `monitoring`)
    #[allow(clippy::shadow_reuse, clippy::impl_trait_in_params, clippy::empty_structs_with_brackets)]
    pub mod monitoring {
        tonic::include_proto!("monitoring");
    }

    /// Risk service protobuf definitions (package `risk`)
    #[allow(clippy::shadow_reuse, clippy::impl_trait_in_params, clippy::empty_structs_with_brackets)]
    pub mod risk {
        tonic::include_proto!("risk");
    }

    /// Data acquisition service protobuf definitions (package `data_acquisition`)
    #[allow(clippy::shadow_reuse, clippy::impl_trait_in_params, clippy::empty_structs_with_brackets)]
    pub mod data_acquisition {
        tonic::include_proto!("data_acquisition");
    }

}
