//! Choreography compilation pipeline
//!
//! This module contains the compilation pipeline that transforms choreographic
//! specifications into executable code.

pub mod analysis;
pub mod choice_analysis;
pub mod codegen;
pub mod diagnostics;
pub mod effects_codegen;
pub mod extension_parser;
pub mod grammar;
pub mod layout;
pub mod merge;
pub use telltale_language::compiler::parser;
pub mod pretty;
pub mod projection;

// Re-export compiler pipeline components explicitly
pub use analysis::{
    analyze, generate_dot_graph, AnalysisResult, AnalysisWarning, CommunicationGraph,
    ParticipationInfo,
};
pub use choice_analysis::{
    analyze_choreography_choices, messages_are_distinguishing, ChoiceAnalysisResult,
    ChoiceAnalyzer, ChoiceId, ChoiceKnowledge, KnowledgeSource,
};
pub use codegen::{
    generate_choreography_code, generate_choreography_code_with_namespacing,
    generate_choreography_code_with_topology, generate_helpers, generate_role_implementations,
    generate_session_type, generate_topology_integration, InlineTopology,
};
pub use diagnostics::{
    check_self_communication, validate_roles, Diagnostic, DiagnosticCode, DiagnosticCollector,
    Severity, SourceLocation,
};
pub use effects_codegen::generate_effects_protocol;
pub use extension_parser::{
    create_standard_extension_parser, ExtensionParseError, ExtensionParser, ExtensionParserBuilder,
    ExtensionStats,
};
pub use grammar::{GrammarComposer, GrammarComposerBuilder, GrammarCompositionError};
pub use merge::{can_merge, merge, merge_all, MergeError};
pub use parser::{
    choreography_macro, collect_dsl_lints, explain_lowering, parse_choreography,
    parse_choreography_file, parse_choreography_str, parse_dsl, render_lsp_lint_diagnostics,
    ErrorSpan, LintDiagnostic, LintLevel, ParseError, DEFAULT_SOURCE_EXTENSION,
};
pub use pretty::{
    format_choreography, format_choreography_str, format_choreography_with_config, PrettyConfig,
};
pub use projection::{project, ProjectionError};
