pub use cli_api::{
calculate_zero_angle, calculate_zero_angle_with_conditions, estimate_bc_fit,
estimate_bc_from_trajectory, run_monte_carlo, run_monte_carlo_with_direction_std_dev,
run_monte_carlo_with_wind, run_monte_carlo_with_wind_and_direction_std_dev,
AtmosphericConditions, BallisticInputs, BallisticsError, BcEstimate, BcFitMode,
MonteCarloParams, MonteCarloResults, TrajectoryPoint, TrajectoryResult, TrajectorySolver,
WindConditions, DEFAULT_HIT_RADIUS_M, MAX_TRAJECTORY_POINTS, TARGET_NOT_REACHED_SENTINEL_M,
};
pub use atmosphere::{AtmoSegment, AtmoSock};
pub use drag_model::DragModel;
pub use moving_target::{calculate_lead, lead_from_tof, LeadComponents, LeadError, LeadSolution};
pub mod cli_api;
pub mod moving_target;
mod drag_model;
pub mod ffi;
#[cfg(target_arch = "wasm32")]
pub mod wasm;
#[cfg(test)]
mod wasm_tests;
pub mod atmosphere;
pub mod constants;
pub mod drag;
mod drag_tables;
pub mod wind;
pub mod wind_shear;
pub mod derivatives;
pub mod trajectory_sampling;
pub mod fast_trajectory;
pub mod trajectory_integration;
pub mod pitch_damping;
pub mod spin_decay;
pub mod spin_drift;
pub mod spin_drift_advanced;
pub mod precession_nutation;
pub mod aerodynamic_jump;
pub mod angle_calculations;
pub mod transonic_drag;
pub mod reynolds;
pub mod form_factor;
pub mod bc_estimation;
pub mod cluster_bc;
pub mod monte_carlo;
pub mod stability;
pub mod stability_advanced;
#[cfg(feature = "online")]
pub mod api_client;
#[cfg(feature = "online")]
pub mod bc_table_download;
pub mod bc_table;
pub mod bc_table_5d;
pub(crate) type InternalBallisticInputs = BallisticInputs;
#[derive(Debug, Clone)]
pub struct BCSegmentData {
pub velocity_min: f64,
pub velocity_max: f64,
pub bc_value: f64,
}