"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""

from abc import (
    ABCMeta,
    abstractmethod,
)
from chalk._gen.chalk.server.v1.prompt_pb2 import (
    CreateNamedPromptRequest,
    CreateNamedPromptResponse,
    CreatePromptEvaluationRunRequest,
    CreatePromptEvaluationRunResponse,
    GetNamedPromptRequest,
    GetNamedPromptResponse,
    GetPromptEvaluationRunRequest,
    GetPromptEvaluationRunResponse,
    ListNamedPromptsRequest,
    ListNamedPromptsResponse,
    ListPromptEvaluationRunsRequest,
    ListPromptEvaluationRunsResponse,
    ListPromptVariantsRequest,
    ListPromptVariantsResponse,
    UpdateNamedPromptRequest,
    UpdateNamedPromptResponse,
)
from grpc import (
    Channel,
    Server,
    ServicerContext,
    UnaryUnaryMultiCallable,
)

class PromptServiceStub:
    def __init__(self, channel: Channel) -> None: ...
    ListNamedPrompts: UnaryUnaryMultiCallable[
        ListNamedPromptsRequest,
        ListNamedPromptsResponse,
    ]
    """Return a list of named prompts"""
    GetNamedPrompt: UnaryUnaryMultiCallable[
        GetNamedPromptRequest,
        GetNamedPromptResponse,
    ]
    """Return a single named prompt with the latest prompt variant"""
    CreateNamedPrompt: UnaryUnaryMultiCallable[
        CreateNamedPromptRequest,
        CreateNamedPromptResponse,
    ]
    """Create a new named prompt and its corresponding prompt variant"""
    UpdateNamedPrompt: UnaryUnaryMultiCallable[
        UpdateNamedPromptRequest,
        UpdateNamedPromptResponse,
    ]
    """Modify a named prompt; may create a new prompt variant if variant settings changed"""
    ListPromptVariants: UnaryUnaryMultiCallable[
        ListPromptVariantsRequest,
        ListPromptVariantsResponse,
    ]
    """Return a list of prompt variants"""
    ListPromptEvaluationRuns: UnaryUnaryMultiCallable[
        ListPromptEvaluationRunsRequest,
        ListPromptEvaluationRunsResponse,
    ]
    """Return a list of prompt evaluation runs"""
    GetPromptEvaluationRun: UnaryUnaryMultiCallable[
        GetPromptEvaluationRunRequest,
        GetPromptEvaluationRunResponse,
    ]
    """Return a prompt evaluation run and its prompt variants"""
    CreatePromptEvaluationRun: UnaryUnaryMultiCallable[
        CreatePromptEvaluationRunRequest,
        CreatePromptEvaluationRunResponse,
    ]
    """Start a new prompt evaluation run"""

class PromptServiceServicer(metaclass=ABCMeta):
    @abstractmethod
    def ListNamedPrompts(
        self,
        request: ListNamedPromptsRequest,
        context: ServicerContext,
    ) -> ListNamedPromptsResponse:
        """Return a list of named prompts"""
    @abstractmethod
    def GetNamedPrompt(
        self,
        request: GetNamedPromptRequest,
        context: ServicerContext,
    ) -> GetNamedPromptResponse:
        """Return a single named prompt with the latest prompt variant"""
    @abstractmethod
    def CreateNamedPrompt(
        self,
        request: CreateNamedPromptRequest,
        context: ServicerContext,
    ) -> CreateNamedPromptResponse:
        """Create a new named prompt and its corresponding prompt variant"""
    @abstractmethod
    def UpdateNamedPrompt(
        self,
        request: UpdateNamedPromptRequest,
        context: ServicerContext,
    ) -> UpdateNamedPromptResponse:
        """Modify a named prompt; may create a new prompt variant if variant settings changed"""
    @abstractmethod
    def ListPromptVariants(
        self,
        request: ListPromptVariantsRequest,
        context: ServicerContext,
    ) -> ListPromptVariantsResponse:
        """Return a list of prompt variants"""
    @abstractmethod
    def ListPromptEvaluationRuns(
        self,
        request: ListPromptEvaluationRunsRequest,
        context: ServicerContext,
    ) -> ListPromptEvaluationRunsResponse:
        """Return a list of prompt evaluation runs"""
    @abstractmethod
    def GetPromptEvaluationRun(
        self,
        request: GetPromptEvaluationRunRequest,
        context: ServicerContext,
    ) -> GetPromptEvaluationRunResponse:
        """Return a prompt evaluation run and its prompt variants"""
    @abstractmethod
    def CreatePromptEvaluationRun(
        self,
        request: CreatePromptEvaluationRunRequest,
        context: ServicerContext,
    ) -> CreatePromptEvaluationRunResponse:
        """Start a new prompt evaluation run"""

def add_PromptServiceServicer_to_server(servicer: PromptServiceServicer, server: Server) -> None: ...
