# 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 terrascope_api.models import aoi_transaction_pb2 as aoi__transaction__pb2

GRPC_GENERATED_VERSION = '1.70.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 aoi_transaction_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 AOITransactionApiStub(object):
    """Missing associated documentation comment in .proto file."""

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

        Args:
            channel: A grpc.Channel.
        """
        self.get = channel.unary_unary(
                '/oi.papi.AOITransactionApi/get',
                request_serializer=aoi__transaction__pb2.AOITransactionGetRequest.SerializeToString,
                response_deserializer=aoi__transaction__pb2.AOITransactionGetResponse.FromString,
                _registered_method=True)
        self.status = channel.unary_unary(
                '/oi.papi.AOITransactionApi/status',
                request_serializer=aoi__transaction__pb2.AOITransactionStatusRequest.SerializeToString,
                response_deserializer=aoi__transaction__pb2.AOITransactionStatusResponse.FromString,
                _registered_method=True)


class AOITransactionApiServicer(object):
    """Missing associated documentation comment in .proto file."""

    def get(self, request, context):
        """
        For a the aoi.upload endpoint, an aoi_transaction_id is returned to allow tracking of its status.
        Once complete, this endpoint can be used to return the list of AOIVersions that were successfully created as part of this upload.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def status(self, request, context):
        """
        Returns the status of an AOITransaction. Once done, the individual AOIVersions can be retrieved with the aoi_transaction.get endpoint.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')


def add_AOITransactionApiServicer_to_server(servicer, server):
    rpc_method_handlers = {
            'get': grpc.unary_unary_rpc_method_handler(
                    servicer.get,
                    request_deserializer=aoi__transaction__pb2.AOITransactionGetRequest.FromString,
                    response_serializer=aoi__transaction__pb2.AOITransactionGetResponse.SerializeToString,
            ),
            'status': grpc.unary_unary_rpc_method_handler(
                    servicer.status,
                    request_deserializer=aoi__transaction__pb2.AOITransactionStatusRequest.FromString,
                    response_serializer=aoi__transaction__pb2.AOITransactionStatusResponse.SerializeToString,
            ),
    }
    generic_handler = grpc.method_handlers_generic_handler(
            'oi.papi.AOITransactionApi', rpc_method_handlers)
    server.add_generic_rpc_handlers((generic_handler,))
    server.add_registered_method_handlers('oi.papi.AOITransactionApi', rpc_method_handlers)


 # This class is part of an EXPERIMENTAL API.
class AOITransactionApi(object):
    """Missing associated documentation comment in .proto file."""

    @staticmethod
    def get(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,
            '/oi.papi.AOITransactionApi/get',
            aoi__transaction__pb2.AOITransactionGetRequest.SerializeToString,
            aoi__transaction__pb2.AOITransactionGetResponse.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def status(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,
            '/oi.papi.AOITransactionApi/status',
            aoi__transaction__pb2.AOITransactionStatusRequest.SerializeToString,
            aoi__transaction__pb2.AOITransactionStatusResponse.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)
