"""Provider adapter abstract base class."""

from __future__ import annotations

from abc import ABC, abstractmethod
from typing import Any

from pi_agents.ai.types import Context, Model, SimpleStreamOptions, StreamOptions
from pi_agents.ai.utils.event_stream import AssistantMessageEventStream


class ProviderAdapter(ABC):
    """Abstract base class for LLM provider adapters."""

    @abstractmethod
    def stream(
        self,
        model: Model,
        context: Context,
        options: StreamOptions | None = None,
    ) -> AssistantMessageEventStream:
        """Stream responses from the provider."""
        ...

    @abstractmethod
    def stream_simple(
        self,
        model: Model,
        context: Context,
        options: SimpleStreamOptions | None = None,
    ) -> AssistantMessageEventStream:
        """Stream responses using simplified options."""
        ...
