"""
OctaMem Python SDK

Official SDK for OctaMem - Memory as a Service platform.
Access your OctaMem memories from Python with both sync and async clients.

Example:
    ```python
    from octamem import OctaMem

    # Create client (uses OCTAMEM_API_KEY env var by default)
    client = OctaMem(api_key="your-api-key")

    # Search memories
    results = client.get(query="meeting notes")

    # Add memory
    client.add(content="Remember to call John tomorrow")

    # Get memory details
    info = client.details()
    ```

Async example:
    ```python
    import asyncio
    from octamem import AsyncOctaMem

    async def main():
        async with AsyncOctaMem() as client:
            results = await client.get(query="search term")
            print(results)

    asyncio.run(main())
    ```
"""

from __future__ import annotations

from ._async_client import AsyncOctaMem
from ._client import OctaMem
from ._exceptions import (
    APIConnectionError,
    APIError,
    APITimeoutError,
    AuthenticationError,
    InternalServerError,
    MethodNotSupportedError,
    NotFoundError,
    OctaMemError,
    RateLimitError,
    ValidationError,
)
from ._types import (
    AddParams,
    AddResult,
    GetParams,
    MemoryDetails,
    SearchResult,
)

__all__ = [
    # Clients
    "OctaMem",
    "AsyncOctaMem",
    # Types
    "GetParams",
    "AddParams",
    "SearchResult",
    "AddResult",
    "MemoryDetails",
    # Exceptions
    "OctaMemError",
    "AuthenticationError",
    "MethodNotSupportedError",
    "NotFoundError",
    "ValidationError",
    "RateLimitError",
    "APIError",
    "APIConnectionError",
    "APITimeoutError",
    "InternalServerError",
]

__version__ = "1.0.0"
