pub mod api;
pub mod backend;
pub mod compose;
pub mod config;
pub mod diag;
pub mod highlight;
pub mod ir;
pub mod opt;
pub mod parse;
#[cfg(feature = "python")]
mod pybindings;
pub mod repl;

pub use api::{ApiError, emit_python, simplify_expr};
pub use backend::interp::{InterpError, Value, eval as interp_eval};
pub use backend::{Backend, python::PythonBackend};
pub use compose::{ComposeError, RenameError, compose, compose_with_diags, rename_params};
pub use config::{
    EffectiveConfig, diag_code_from_short_code, load_effective_config_from_cwd,
    parse_effective_config_toml,
};
pub use diag::{Diag, DiagCode, DiagCollector, DiagConfig, Severity};
pub use highlight::{
    HighlightKind, byte_offset_to_line_col, highlight, highlight_line_ansi, line_starts,
    semantic_tokens_legend, to_semantic_tokens,
};
pub use ir::{
    LowerResultWithErrors, TypedDagError, lower, lower_with_config, lower_with_config_collect,
};
pub use opt::{OptConfig, OptMode, optimize, optimize_with_info, optimize_with_info_and_config};
pub use parse::parse_dsl;
pub use parse::parse_dsl_with_errors;
pub use repl::{
    ReplConfig, ReplSession, format_params_signature, format_value_with_dtype,
    render_simplified_expr,
};
