"""
Base context builder interface for SkyDiscover
"""

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


class ContextBuilder(ABC):
    """Base class for building LLM prompts for evolution"""

    @abstractmethod
    def build_prompt(
        self,
        current_program: str,
        context: Dict[str, Any] = None,
        **kwargs: Any,
    ) -> Dict[str, str]:
        """
        Build a prompt for the LLM

        Args:
            current_program: The current program solution to evolve from
            context: Additional context dictionary to guide the next program generaiton 
                - E.g., past programs, metrics, inspiration programs, etc.
            **kwargs: Additional parameters specific to the implementation

        Returns:
            Dictionary with 'system' and 'user' keys containing the prompt messages
        """
        pass

