"""
Data collection module for Openfund Agent

This module provides data collection functionality, integrating with Openfund-core
to fetch market data and SMC-ICT technical indicators.
"""

# Import modules that don't require external dependencies
from openfund_agent.datas.cache import DataCache
from openfund_agent.datas.exceptions import (
    DataCollectionError,
    RetryableError,
    NetworkError,
    RateLimitError,
    ExchangeError,
    ValidationError,
    DataFormatError,
    IndicatorCalculationError,
)
from openfund_agent.datas.retry import with_retry, with_timeout_retry

# DataCollectionTool requires openfund-core and ccxt, so import it conditionally
try:
    from openfund_agent.datas.collection import DataCollectionTool

    _DATA_COLLECTION_AVAILABLE = True
except ImportError:
    _DATA_COLLECTION_AVAILABLE = False
    DataCollectionTool = None  # type: ignore

__all__ = [
    "DataCollectionTool",
    "DataCache",
    "DataCollectionError",
    "RetryableError",
    "NetworkError",
    "RateLimitError",
    "ExchangeError",
    "ValidationError",
    "DataFormatError",
    "IndicatorCalculationError",
    "with_retry",
    "with_timeout_retry",
]
