# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
"""Client and server classes corresponding to protobuf-defined services."""
import grpc
import warnings

from truffle.hyphae.api import globalvars_pb2 as truffle_dot_hyphae_dot_api_dot_globalvars__pb2

GRPC_GENERATED_VERSION = '1.72.0'
GRPC_VERSION = grpc.__version__
_version_not_supported = False

try:
    from grpc._utilities import first_version_is_lower
    _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION)
except ImportError:
    _version_not_supported = True

if _version_not_supported:
    raise RuntimeError(
        f'The grpc package installed is at version {GRPC_VERSION},'
        + f' but the generated code in truffle/hyphae/api/api_pb2_grpc.py depends on'
        + f' grpcio>={GRPC_GENERATED_VERSION}.'
        + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}'
        + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.'
    )


class HyphaeAPIStub(object):
    """
    HyphaeAPI is available to running apps and provides APIs for them to use in their tools and logic
    These include, LLM inference, global variable management, and user response handling.
    future features include: 
    - register and unregister tools dynamically.
    - global data stores beyond just Key value mapping.
    """

    def __init__(self, channel):
        """Constructor.

        Args:
            channel: A grpc.Channel.
        """
        self.GlobalVars = channel.unary_unary(
                '/truffle.hyphae.api.HyphaeAPI/GlobalVars',
                request_serializer=truffle_dot_hyphae_dot_api_dot_globalvars__pb2.GlobalVarsRequest.SerializeToString,
                response_deserializer=truffle_dot_hyphae_dot_api_dot_globalvars__pb2.GlobalVarsResponse.FromString,
                _registered_method=True)


class HyphaeAPIServicer(object):
    """
    HyphaeAPI is available to running apps and provides APIs for them to use in their tools and logic
    These include, LLM inference, global variable management, and user response handling.
    future features include: 
    - register and unregister tools dynamically.
    - global data stores beyond just Key value mapping.
    """

    def GlobalVars(self, request, context):
        """
        Globalvars is a simple key-value store for global variables that can be used by apps and tools.
        vars are shared across all instances of an app, per user, and can be used to store state or configuration.
        This is a simple key-value store, but can be very powerful 
        A full vector store will be implemented in the near future, this is more for state and configuration 
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')


def add_HyphaeAPIServicer_to_server(servicer, server):
    rpc_method_handlers = {
            'GlobalVars': grpc.unary_unary_rpc_method_handler(
                    servicer.GlobalVars,
                    request_deserializer=truffle_dot_hyphae_dot_api_dot_globalvars__pb2.GlobalVarsRequest.FromString,
                    response_serializer=truffle_dot_hyphae_dot_api_dot_globalvars__pb2.GlobalVarsResponse.SerializeToString,
            ),
    }
    generic_handler = grpc.method_handlers_generic_handler(
            'truffle.hyphae.api.HyphaeAPI', rpc_method_handlers)
    server.add_generic_rpc_handlers((generic_handler,))
    server.add_registered_method_handlers('truffle.hyphae.api.HyphaeAPI', rpc_method_handlers)


 # This class is part of an EXPERIMENTAL API.
class HyphaeAPI(object):
    """
    HyphaeAPI is available to running apps and provides APIs for them to use in their tools and logic
    These include, LLM inference, global variable management, and user response handling.
    future features include: 
    - register and unregister tools dynamically.
    - global data stores beyond just Key value mapping.
    """

    @staticmethod
    def GlobalVars(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/truffle.hyphae.api.HyphaeAPI/GlobalVars',
            truffle_dot_hyphae_dot_api_dot_globalvars__pb2.GlobalVarsRequest.SerializeToString,
            truffle_dot_hyphae_dot_api_dot_globalvars__pb2.GlobalVarsResponse.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)
