"""Python SDK for sending data to vikdata ingress cores.

This SDK provides a high-level client for sending telemetry data to vikdata
ingress cores with automatic batching, retry logic, and offline buffering.

Example:
    ```python
    from ingress_edge import IngressClient, IngressDataPoint, IngressClientConfig
    from datetime import datetime

    # Configure client
    config = IngressClientConfig(
        base_url="https://ingress.vikdata.io",
        api_key="your-api-key",
        batch_size=100,
        batch_timeout=5.0,
    )

    # Create client
    async with IngressClient(config) as client:
        # Send data points
        await client.send(IngressDataPoint(
            channel_id="telemetry",
            timestamp=datetime.now(),
            data={"temperature": 22.5, "humidity": 60.0}
        ))

        # Flush immediately
        await client.flush()
    ```
"""

from .batch import BatchManager
from .client import IngressClient
from .offline import OfflineBuffer
from .retry import RetryManager
from .types import (
    BufferStats,
    IngestError,
    IngressBatchRequest,
    IngressClientConfig,
    IngressDataPoint,
    IngressResponse,
)

__version__ = "1.0.0"

__all__ = [
    # Main client
    "IngressClient",
    # Configuration
    "IngressClientConfig",
    # Types
    "IngressDataPoint",
    "IngressBatchRequest",
    "IngressResponse",
    "IngestError",
    "BufferStats",
    # Components (for advanced usage)
    "BatchManager",
    "RetryManager",
    "OfflineBuffer",
]
