//! JSON-serializable DTOs and helpers for PyO3 / napi-rs language bindings.
//!
//! These are not a C ABI. They are intentionally plain Rust data-transfer
//! objects that binding crates can expose idiomatically in Python and
//! TypeScript while sharing the same core behavior.

pub mod client_gen;
pub mod dto;
pub mod host_transform;
pub mod oauth;
pub mod pure;
pub mod session;
#[cfg(test)]
mod types;

pub use client_gen::{
    generate_client_artifact_files, generate_client_artifacts, maybe_toonify_output,
    render_client_artifacts, FfiClientArtifactKind,
};
pub use host_transform::{
    build_host_transform_plan, normalize_host_tool_result, FfiHostJustBashCommandPlan,
    FfiHostJustBashPlan, FfiHostTransformConfig, FfiHostTransformKind, FfiHostTransformPlan,
};
pub use dto::{
    FfiBackendConfig, FfiCompressedSessionConfig, FfiCompressedSessionInfo, FfiGeneratorConfig,
    FfiJustBashCommandSpec, FfiJustBashProviderSpec, FfiMcpServer, FfiSdkServerConfig,
    FfiSdkServersConfig, FfiTool,
};
pub use oauth::{
    clear_oauth_credentials, list_oauth_credentials, oauth_store_path, remember_oauth_backend,
    FfiOAuthStoreEntry,
};
pub use pure::{
    compress_tool_listing, format_tool_schema_response, parse_mcp_config, parse_tool_argv,
};
pub use session::{
    normalize_sdk_servers, start_compressed_session, start_compressed_session_from_mcp_config,
    start_compressed_session_with_backend_configs, FfiCompressedSession,
};
