#![allow(clippy::too_many_lines)]
#![allow(clippy::match_same_arms)]
#![allow(clippy::struct_excessive_bools)]
#![allow(clippy::option_if_let_else)]
#![allow(clippy::manual_let_else)]
#![allow(clippy::unnecessary_wraps)]
#![allow(clippy::should_implement_trait)]
#![allow(clippy::doc_markdown)]
#![allow(clippy::suboptimal_flops)]
#![allow(clippy::assigning_clones)]
#![allow(clippy::map_unwrap_or)]
#![allow(clippy::needless_pass_by_ref_mut)]
#![allow(clippy::match_wildcard_for_single_variants)]
#![allow(clippy::manual_clamp)]
#![allow(clippy::doc_lazy_continuation)]
#![allow(clippy::no_effect_underscore_binding)]
#[doc(hidden)]
pub const _ENFORCE_ASYNC_INTERFACE: &str = include_str!("../../tests/cpu_exploded_async.rs");
#[doc(hidden)]
pub const _ENFORCE_VISIBILITY_TESTS: &str = include_str!("../../tests/cbtop_visibility.rs");
#[doc(hidden)]
pub const _ENFORCE_APP_INTERFACE: &str = include_str!("../../tests/ptop_app_interface.rs");
#[doc(hidden)]
pub const _ENFORCE_PANELS_INTERFACE: &str = include_str!("../../tests/ptop_panels_interface.rs");
#[doc(hidden)]
pub const _ENFORCE_WIDGET_INTERFACE: &str = include_str!("../../tests/widget_interface_tests.rs");
#[doc(hidden)]
pub const _ENFORCE_EXPLODED_VIEW: &str = include_str!("../../tests/exploded_view_interface.rs");
#[doc(hidden)]
pub const _ENFORCE_DESIGN_PRINCIPLES: &str =
include_str!("../../tests/design_principles_interface.rs");
pub mod analyzers;
pub mod app;
pub mod config;
pub mod input;
pub mod ui;
pub mod ui_atoms;
pub use analyzers::{
AnalyzerRegistry, ConnectionsAnalyzer, ConnectionsData, PsiAnalyzer, PsiData, TcpConnection,
TcpState,
};
pub use app::{App, MetricsSnapshot};
pub use config::{
calculate_grid_layout, snap_to_grid, DetailLevel, FocusStyle, LayoutConfig, PanelConfig,
PanelRect, PanelType, PtopConfig,
};
pub use input::{InputHandler, TimestampedKey};