"""Top-level package for mat_ret materials retrieval library."""

from .databases import (
    MaterialsDatabaseClient,
    MaterialsProjectClient,
    JARVISClient,
    AFLOWClient,
    AlexandriaClient,
    MaterialsCloudClient,
    MPDSClient,
    OQMDClient,
    MaterialsDatabaseRetriever,
)
from .property_mapping import (
    STANDARD_PROPERTIES,
    PROPERTY_UNITS,
    DATABASE_PROPERTY_MAPPINGS,
    get_available_properties,
    get_property_value,
    standardize_properties,
    export_property_mappings,
)
from .search import SearchFilters
from .api import (
    fetch_materials_project,
    fetch_jarvis,
    fetch_aflow,
    fetch_alexandria,
    fetch_materials_cloud,
    fetch_oqmd,
    fetch_mpds,
    fetch_optimade,
    fetch_all_databases,
    list_optimade_providers,
    harvest_optimade,
    generate_xrd_pattern_from_structure,
    generate_xrd_pattern_from_cif,
    list_xrd_radiations,
)
from .xrd import XRDConfig, XRDPeak, XRDResult, export_xrd_pattern_csv, export_xrd_peaks_csv
from .storage import StorageBackend, FileStorage, SQLiteStorage, MongoDBStorage, get_storage, StorageType

__all__ = [
    "MaterialsDatabaseClient",
    "MaterialsProjectClient",
    "JARVISClient",
    "AFLOWClient",
    "AlexandriaClient",
    "MaterialsCloudClient",
    "MPDSClient",
    "OQMDClient",
    "MaterialsDatabaseRetriever",
    "STANDARD_PROPERTIES",
    "PROPERTY_UNITS",
    "DATABASE_PROPERTY_MAPPINGS",
    "get_available_properties",
    "get_property_value",
    "standardize_properties",
    "export_property_mappings",
    "SearchFilters",
    "fetch_materials_project",
    "fetch_jarvis",
    "fetch_aflow",
    "fetch_alexandria",
    "fetch_materials_cloud",
    "fetch_oqmd",
    "fetch_mpds",
    "fetch_optimade",
    "fetch_all_databases",
    "list_optimade_providers",
    "harvest_optimade",
    "generate_xrd_pattern_from_structure",
    "generate_xrd_pattern_from_cif",
    "list_xrd_radiations",
    "XRDConfig",
    "XRDPeak",
    "XRDResult",
    "export_xrd_pattern_csv",
    "export_xrd_peaks_csv",
    "StorageBackend",
    "FileStorage",
    "SQLiteStorage",
    "MongoDBStorage",
    "get_storage",
    "StorageType",
]
