# Copyright 2024-2025 SpectrixRD
# Licensed under the Apache License, Version 2.0
# See LICENSE file in the project root for full license text

"""
QPHAROS - Quantum Pharmaceutical Optimization System
5-Layer Quantum Drug Discovery Platform

QPHAROS offers 4 usage schemas for different user types:

Schema 1 - Simple API (Beginners):
    from qpharos.simple import quick_dock, is_drug_like, test_molecule
    affinity = quick_dock('CCO', '6B3J')

Schema 2 - Functional API (Normal Users):
    from qpharos import dock, predict_admet, design_drug
    result = dock(ligand='CCO', receptor='6B3J', backend='ibm_torino')

Schema 3 - OOP API (Programmers):
    from qpharos import QPHAROSAnalyzer, QPHAROSConfig
    analyzer = QPHAROSAnalyzer(config)
    result = analyzer.dock('CCO', '6B3J')

Schema 4 - Layer-by-Layer (Quantum Experts):
    from qpharos.layers import QuantumFeatureEncoder, QuantumScoringFunction
    encoder = QuantumFeatureEncoder(backend)
    encoded = encoder.encode_molecule('CCO')
"""

__version__ = "2.0.1"
__author__ = "Heinz Jungbluth"
__email__ = "heinz@bionics-ai.biz"

# Schema 4: Layer-by-Layer API & Schema 1: Simple API
# Use lazy imports to avoid circular dependency
# from . import layers, simple

# Schema 3: OOP API (commented out - missing core.config module)
# from .analyzer import QPHAROSAnalyzer

# Schema 2: Functional API (default/main API)
from .api import design_drug, dock, optimize_lead, predict_admet, screen_library
# from .core import quantum_backend  # Missing module
# from .core.config import QPHAROSConfig  # Missing module

# Data Models
from .models import ADMETResult, DockingResult, DrugDesignResult, GeneratedMolecule

# Molecular Generation (QCBM)
from .molecular_generation import QCBMGenerator

__all__ = [
    # Main API (Schema 2)
    "dock",
    "design_drug",
    "predict_admet",
    "screen_library",
    "optimize_lead",
    # OOP API (Schema 3) - commented out
    # "QPHAROSAnalyzer",
    # "QPHAROSConfig",
    # Models
    "DockingResult",
    "DrugDesignResult",
    "ADMETResult",
    "GeneratedMolecule",
    # Molecular Generation
    "QCBMGenerator",
    # Modules (lazy-loaded, access via qpharos.simple or qpharos.layers)
    # "simple",  # Schema 1
    # "layers",  # Schema 4
    # "quantum_backend",
    # Meta
    "__version__",
]
