"""
Chain interface template
"""
from typing import List, Any
from abc import ABC, abstractmethod


class ChatBotChain(ABC):
    """This is the interface for a chatbot chain model"""    
    @abstractmethod
    def invoke(self, input: str, chat_history: List[Any]) -> str:
        """given a question, return an answer.
        - input: input to the chain. This is the query to be processed by the LLM
        - chat_history: Steamlit messages saved to session_sate."""
        raise NotImplementedError("invoke not implemented")
    
