# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
import grpc

from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
from . import qbit_pb2 as qbit__pb2


class QbitStub(object):
  # missing associated documentation comment in .proto file
  pass

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

    Args:
      channel: A grpc.Channel.
    """
    self.CompareMolecule = channel.unary_unary(
        '/qbit.services.Qbit/CompareMolecule',
        request_serializer=qbit__pb2.CompareRequest.SerializeToString,
        response_deserializer=qbit__pb2.ComparisonResult.FromString,
        )
    self.CompareMoleculeBenchmark = channel.unary_unary(
        '/qbit.services.Qbit/CompareMoleculeBenchmark',
        request_serializer=qbit__pb2.CompareRequest.SerializeToString,
        response_deserializer=qbit__pb2.ComparisonResult.FromString,
        )
    self.Hobo2Qubo = channel.unary_unary(
        '/qbit.services.Qbit/Hobo2Qubo',
        request_serializer=qbit__pb2.BinaryPolynomial.SerializeToString,
        response_deserializer=qbit__pb2.BinaryPolynomial.FromString,
        )
    self.SolveQubo = channel.unary_unary(
        '/qbit.services.Qbit/SolveQubo',
        request_serializer=qbit__pb2.QuboRequest.SerializeToString,
        response_deserializer=qbit__pb2.QuboResponse.FromString,
        )
    self.SolveQuboFujitsuDA2 = channel.unary_unary(
        '/qbit.services.Qbit/SolveQuboFujitsuDA2',
        request_serializer=qbit__pb2.QuboRequest.SerializeToString,
        response_deserializer=qbit__pb2.QuboResponse.FromString,
        )
    self.SolveQuboFujitsuDA2PT = channel.unary_unary(
        '/qbit.services.Qbit/SolveQuboFujitsuDA2PT',
        request_serializer=qbit__pb2.QuboRequest.SerializeToString,
        response_deserializer=qbit__pb2.QuboResponse.FromString,
        )
    self.HealthCheck = channel.unary_unary(
        '/qbit.services.Qbit/HealthCheck',
        request_serializer=qbit__pb2.HealthCheckRequest.SerializeToString,
        response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
        )
    self.AuthCheck = channel.unary_unary(
        '/qbit.services.Qbit/AuthCheck',
        request_serializer=qbit__pb2.HealthCheckRequest.SerializeToString,
        response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
        )
    self.Version = channel.unary_unary(
        '/qbit.services.Qbit/Version',
        request_serializer=qbit__pb2.VersionRequest.SerializeToString,
        response_deserializer=qbit__pb2.VersionResponse.FromString,
        )
    self.SubmitQuboTabu = channel.unary_unary(
        '/qbit.services.Qbit/SubmitQuboTabu',
        request_serializer=qbit__pb2.QuboRequest.SerializeToString,
        response_deserializer=qbit__pb2.SubmitQuboResponse.FromString,
        )
    self.SubmitQuboMultiTabu = channel.unary_unary(
        '/qbit.services.Qbit/SubmitQuboMultiTabu',
        request_serializer=qbit__pb2.QuboRequest.SerializeToString,
        response_deserializer=qbit__pb2.SubmitQuboResponse.FromString,
        )
    self.SubmitQuboPTICM = channel.unary_unary(
        '/qbit.services.Qbit/SubmitQuboPTICM',
        request_serializer=qbit__pb2.QuboRequest.SerializeToString,
        response_deserializer=qbit__pb2.SubmitQuboResponse.FromString,
        )
    self.SubmitQuboPathRelinking = channel.unary_unary(
        '/qbit.services.Qbit/SubmitQuboPathRelinking',
        request_serializer=qbit__pb2.QuboRequest.SerializeToString,
        response_deserializer=qbit__pb2.SubmitQuboResponse.FromString,
        )
    self.SubmitQuboFujitsuDA2 = channel.unary_unary(
        '/qbit.services.Qbit/SubmitQuboFujitsuDA2',
        request_serializer=qbit__pb2.QuboRequest.SerializeToString,
        response_deserializer=qbit__pb2.SubmitQuboResponse.FromString,
        )
    self.SubmitQuboFujitsuDA2PT = channel.unary_unary(
        '/qbit.services.Qbit/SubmitQuboFujitsuDA2PT',
        request_serializer=qbit__pb2.QuboRequest.SerializeToString,
        response_deserializer=qbit__pb2.SubmitQuboResponse.FromString,
        )
    self.GetQuboSolution = channel.unary_unary(
        '/qbit.services.Qbit/GetQuboSolution',
        request_serializer=qbit__pb2.QuboSolutionRequest.SerializeToString,
        response_deserializer=qbit__pb2.QuboSolutionResponse.FromString,
        )


class QbitServicer(object):
  # missing associated documentation comment in .proto file
  pass

  def CompareMolecule(self, request, context):
    """Compare molecules.

    With a specified solver, compare molecular similarities with a set of criterias.

    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def CompareMoleculeBenchmark(self, request, context):
    # missing associated documentation comment in .proto file
    pass
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def Hobo2Qubo(self, request, context):
    """Converts HOBO to QUBO.

    Given a Higher Order Binary Optimization (HOBO) problem, convert into
    QUBO form.

    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def SolveQubo(self, request, context):
    """Solves a QUBO.

    Given a QUBO and a solver with optionally set parameters, return a list
    of Solutions ordered by energy.

    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def SolveQuboFujitsuDA2(self, request, context):
    """Solves a QUBO using the FujitsuDA2Solver.

    Given a QUBO and a solver with optionally set parameters, return a list
    of Solutions ordered by energy.

    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def SolveQuboFujitsuDA2PT(self, request, context):
    """Solves a QUBO using the FujitsuDA2PTSolver.

    Given a QUBO and a solver with optionally set parameters, return a list
    of Solutions ordered by energy.

    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def HealthCheck(self, request, context):
    # missing associated documentation comment in .proto file
    pass
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def AuthCheck(self, request, context):
    # missing associated documentation comment in .proto file
    pass
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def Version(self, request, context):
    # missing associated documentation comment in .proto file
    pass
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def SubmitQuboTabu(self, request, context):
    """*******************
    ASYNCHRONOUS CALLS
    *******************

    `SUBMIT` CALLS

    Takes a QUBO and a Tabu solver with optionally set parameters, then
    solves the given problem and saves the results in the database

    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def SubmitQuboMultiTabu(self, request, context):
    """Takes a QUBO and a MultiTabu solver with optionally set parameters, then
    solves the given problem and saves the results in the database

    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def SubmitQuboPTICM(self, request, context):
    """Takes a QUBO and a PTICM solver with optionally set parameters, then
    solves the given problem and saves the results in the database

    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def SubmitQuboPathRelinking(self, request, context):
    """Takes a QUBO and a PathRelinking solver with optionally set parameters, then
    solves the given problem and saves the results in the database

    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def SubmitQuboFujitsuDA2(self, request, context):
    """Takes a QUBO and a FujitsuDA2 solver with optionally set parameters, then
    solves the given problem and saves the results in the database

    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def SubmitQuboFujitsuDA2PT(self, request, context):
    """Takes a QUBO and a FujitsuDA2PT solver with optionally set parameters, then
    solves the given problem and saves the results in the database

    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def GetQuboSolution(self, request, context):
    """`GET SOLUTION` CALLS

    Retrieves the full response based off of the request ID passed through the
    body.
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')


def add_QbitServicer_to_server(servicer, server):
  rpc_method_handlers = {
      'CompareMolecule': grpc.unary_unary_rpc_method_handler(
          servicer.CompareMolecule,
          request_deserializer=qbit__pb2.CompareRequest.FromString,
          response_serializer=qbit__pb2.ComparisonResult.SerializeToString,
      ),
      'CompareMoleculeBenchmark': grpc.unary_unary_rpc_method_handler(
          servicer.CompareMoleculeBenchmark,
          request_deserializer=qbit__pb2.CompareRequest.FromString,
          response_serializer=qbit__pb2.ComparisonResult.SerializeToString,
      ),
      'Hobo2Qubo': grpc.unary_unary_rpc_method_handler(
          servicer.Hobo2Qubo,
          request_deserializer=qbit__pb2.BinaryPolynomial.FromString,
          response_serializer=qbit__pb2.BinaryPolynomial.SerializeToString,
      ),
      'SolveQubo': grpc.unary_unary_rpc_method_handler(
          servicer.SolveQubo,
          request_deserializer=qbit__pb2.QuboRequest.FromString,
          response_serializer=qbit__pb2.QuboResponse.SerializeToString,
      ),
      'SolveQuboFujitsuDA2': grpc.unary_unary_rpc_method_handler(
          servicer.SolveQuboFujitsuDA2,
          request_deserializer=qbit__pb2.QuboRequest.FromString,
          response_serializer=qbit__pb2.QuboResponse.SerializeToString,
      ),
      'SolveQuboFujitsuDA2PT': grpc.unary_unary_rpc_method_handler(
          servicer.SolveQuboFujitsuDA2PT,
          request_deserializer=qbit__pb2.QuboRequest.FromString,
          response_serializer=qbit__pb2.QuboResponse.SerializeToString,
      ),
      'HealthCheck': grpc.unary_unary_rpc_method_handler(
          servicer.HealthCheck,
          request_deserializer=qbit__pb2.HealthCheckRequest.FromString,
          response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
      ),
      'AuthCheck': grpc.unary_unary_rpc_method_handler(
          servicer.AuthCheck,
          request_deserializer=qbit__pb2.HealthCheckRequest.FromString,
          response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
      ),
      'Version': grpc.unary_unary_rpc_method_handler(
          servicer.Version,
          request_deserializer=qbit__pb2.VersionRequest.FromString,
          response_serializer=qbit__pb2.VersionResponse.SerializeToString,
      ),
      'SubmitQuboTabu': grpc.unary_unary_rpc_method_handler(
          servicer.SubmitQuboTabu,
          request_deserializer=qbit__pb2.QuboRequest.FromString,
          response_serializer=qbit__pb2.SubmitQuboResponse.SerializeToString,
      ),
      'SubmitQuboMultiTabu': grpc.unary_unary_rpc_method_handler(
          servicer.SubmitQuboMultiTabu,
          request_deserializer=qbit__pb2.QuboRequest.FromString,
          response_serializer=qbit__pb2.SubmitQuboResponse.SerializeToString,
      ),
      'SubmitQuboPTICM': grpc.unary_unary_rpc_method_handler(
          servicer.SubmitQuboPTICM,
          request_deserializer=qbit__pb2.QuboRequest.FromString,
          response_serializer=qbit__pb2.SubmitQuboResponse.SerializeToString,
      ),
      'SubmitQuboPathRelinking': grpc.unary_unary_rpc_method_handler(
          servicer.SubmitQuboPathRelinking,
          request_deserializer=qbit__pb2.QuboRequest.FromString,
          response_serializer=qbit__pb2.SubmitQuboResponse.SerializeToString,
      ),
      'SubmitQuboFujitsuDA2': grpc.unary_unary_rpc_method_handler(
          servicer.SubmitQuboFujitsuDA2,
          request_deserializer=qbit__pb2.QuboRequest.FromString,
          response_serializer=qbit__pb2.SubmitQuboResponse.SerializeToString,
      ),
      'SubmitQuboFujitsuDA2PT': grpc.unary_unary_rpc_method_handler(
          servicer.SubmitQuboFujitsuDA2PT,
          request_deserializer=qbit__pb2.QuboRequest.FromString,
          response_serializer=qbit__pb2.SubmitQuboResponse.SerializeToString,
      ),
      'GetQuboSolution': grpc.unary_unary_rpc_method_handler(
          servicer.GetQuboSolution,
          request_deserializer=qbit__pb2.QuboSolutionRequest.FromString,
          response_serializer=qbit__pb2.QuboSolutionResponse.SerializeToString,
      ),
  }
  generic_handler = grpc.method_handlers_generic_handler(
      'qbit.services.Qbit', rpc_method_handlers)
  server.add_generic_rpc_handlers((generic_handler,))
