"""
Adapters for different managed app frameworks.
"""

from typing import Dict, List, Any, Optional
from abc import ABC, abstractmethod


class BaseAdapter(ABC):
    """Base adapter interface."""

    def __init__(self, config: Dict[str, Any]):
        """
        Initialize adapter with configuration.

        Args:
            config: Database connection or API endpoint configuration
        """
        self.config = config

    @abstractmethod
    def navigate(
        self,
        query: Optional[str] = None,
        entity: Optional[str] = None,
        id: Optional[int] = None
    ) -> Dict[str, Any]:
        """
        Navigate data graph.

        Returns:
            {
                "nodes": [{"id": str, "type": str, "label": str, "data": dict}],
                "edges": [{"from": str, "to": str, "label": str}],
                "summary": {"title": str, "credentials": str|None, "fields": dict}
            }
        """
        pass

    @abstractmethod
    def get_queries(self) -> List[str]:
        """Return list of available query names."""
        pass
