from .analyzer import MacroLactoneAnalyzer
from .errors import (
    AmbiguousMacrolactoneError,
    FragmentationError,
    MacrolactoneDetectionError,
    MacrolactoneError,
    RingNumberingError,
)
from .fragmenter import MacrolactoneFragmenter
from .models import (
    FragmentationResult,
    MacrocycleClassificationResult,
    RingNumberingResult,
    SideChainFragment,
)
from .visualization import (
    fragment_svg,
    numbered_molecule_svg,
    save_fragment_png,
    save_numbered_molecule_png,
)
from .workflows import (
    export_numbered_macrolactone_csv,
    fragment_csv,
    results_to_dataframe,
    write_result_json,
)

__all__ = [
    "AmbiguousMacrolactoneError",
    "FragmentationError",
    "FragmentationResult",
    "fragment_csv",
    "fragment_svg",
    "MacroLactoneAnalyzer",
    "MacrolactoneDetectionError",
    "MacrolactoneError",
    "MacrolactoneFragmenter",
    "MacrolactoneValidator",
    "MacrocycleClassificationResult",
    "numbered_molecule_svg",
    "ParentMolecule",
    "RingNumberingError",
    "RingNumberingResult",
    "results_to_dataframe",
    "save_fragment_png",
    "save_numbered_molecule_png",
    "SideChainFragment",
    "export_numbered_macrolactone_csv",
    "write_result_json",
]

# Validation module (optional import)
try:
    from .validation.validator import MacrolactoneValidator
    from .validation.models import ParentMolecule, SideChainFragment
except ImportError:
    pass  # SQLModel not installed

__version__ = "0.1.0"
