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

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
"""
import abc
import buildgrid.common.protos.google.longrunning.operations_pb2
import google.protobuf.empty_pb2
import grpc

class OperationsStub:
    """Manages long-running operations with an API service.

    When an API method normally takes long time to complete, it can be designed
    to return [Operation][google.longrunning.Operation] to the client, and the client can use this
    interface to receive the real response asynchronously by polling the
    operation resource, or pass the operation resource to another API (such as
    Google Cloud Pub/Sub API) to receive the response.  Any API service that
    returns long-running operations should implement the `Operations` interface
    so developers can have a consistent client experience.
    """

    def __init__(self, channel: grpc.Channel) -> None: ...
    ListOperations: grpc.UnaryUnaryMultiCallable[
        buildgrid.common.protos.google.longrunning.operations_pb2.ListOperationsRequest,
        buildgrid.common.protos.google.longrunning.operations_pb2.ListOperationsResponse,
    ]
    """Lists operations that match the specified filter in the request. If the
    server doesn't support this method, it returns `UNIMPLEMENTED`.

    NOTE: the `name` binding below allows API services to override the binding
    to use different resource name schemes, such as `users/*/operations`.
    """
    GetOperation: grpc.UnaryUnaryMultiCallable[
        buildgrid.common.protos.google.longrunning.operations_pb2.GetOperationRequest,
        buildgrid.common.protos.google.longrunning.operations_pb2.Operation,
    ]
    """Gets the latest state of a long-running operation.  Clients can use this
    method to poll the operation result at intervals as recommended by the API
    service.
    """
    DeleteOperation: grpc.UnaryUnaryMultiCallable[
        buildgrid.common.protos.google.longrunning.operations_pb2.DeleteOperationRequest,
        google.protobuf.empty_pb2.Empty,
    ]
    """Deletes a long-running operation. This method indicates that the client is
    no longer interested in the operation result. It does not cancel the
    operation. If the server doesn't support this method, it returns
    `google.rpc.Code.UNIMPLEMENTED`.
    """
    CancelOperation: grpc.UnaryUnaryMultiCallable[
        buildgrid.common.protos.google.longrunning.operations_pb2.CancelOperationRequest,
        google.protobuf.empty_pb2.Empty,
    ]
    """Starts asynchronous cancellation on a long-running operation.  The server
    makes a best effort to cancel the operation, but success is not
    guaranteed.  If the server doesn't support this method, it returns
    `google.rpc.Code.UNIMPLEMENTED`.  Clients can use
    [Operations.GetOperation][google.longrunning.Operations.GetOperation] or
    other methods to check whether the cancellation succeeded or whether the
    operation completed despite cancellation. On successful cancellation,
    the operation is not deleted; instead, it becomes an operation with
    an [Operation.error][google.longrunning.Operation.error] value with a [google.rpc.Status.code][google.rpc.Status.code] of 1,
    corresponding to `Code.CANCELLED`.
    """

class OperationsServicer(metaclass=abc.ABCMeta):
    """Manages long-running operations with an API service.

    When an API method normally takes long time to complete, it can be designed
    to return [Operation][google.longrunning.Operation] to the client, and the client can use this
    interface to receive the real response asynchronously by polling the
    operation resource, or pass the operation resource to another API (such as
    Google Cloud Pub/Sub API) to receive the response.  Any API service that
    returns long-running operations should implement the `Operations` interface
    so developers can have a consistent client experience.
    """

    @abc.abstractmethod
    def ListOperations(
        self,
        request: buildgrid.common.protos.google.longrunning.operations_pb2.ListOperationsRequest,
        context: grpc.ServicerContext,
    ) -> buildgrid.common.protos.google.longrunning.operations_pb2.ListOperationsResponse:
        """Lists operations that match the specified filter in the request. If the
        server doesn't support this method, it returns `UNIMPLEMENTED`.

        NOTE: the `name` binding below allows API services to override the binding
        to use different resource name schemes, such as `users/*/operations`.
        """
    @abc.abstractmethod
    def GetOperation(
        self,
        request: buildgrid.common.protos.google.longrunning.operations_pb2.GetOperationRequest,
        context: grpc.ServicerContext,
    ) -> buildgrid.common.protos.google.longrunning.operations_pb2.Operation:
        """Gets the latest state of a long-running operation.  Clients can use this
        method to poll the operation result at intervals as recommended by the API
        service.
        """
    @abc.abstractmethod
    def DeleteOperation(
        self,
        request: buildgrid.common.protos.google.longrunning.operations_pb2.DeleteOperationRequest,
        context: grpc.ServicerContext,
    ) -> google.protobuf.empty_pb2.Empty:
        """Deletes a long-running operation. This method indicates that the client is
        no longer interested in the operation result. It does not cancel the
        operation. If the server doesn't support this method, it returns
        `google.rpc.Code.UNIMPLEMENTED`.
        """
    @abc.abstractmethod
    def CancelOperation(
        self,
        request: buildgrid.common.protos.google.longrunning.operations_pb2.CancelOperationRequest,
        context: grpc.ServicerContext,
    ) -> google.protobuf.empty_pb2.Empty:
        """Starts asynchronous cancellation on a long-running operation.  The server
        makes a best effort to cancel the operation, but success is not
        guaranteed.  If the server doesn't support this method, it returns
        `google.rpc.Code.UNIMPLEMENTED`.  Clients can use
        [Operations.GetOperation][google.longrunning.Operations.GetOperation] or
        other methods to check whether the cancellation succeeded or whether the
        operation completed despite cancellation. On successful cancellation,
        the operation is not deleted; instead, it becomes an operation with
        an [Operation.error][google.longrunning.Operation.error] value with a [google.rpc.Status.code][google.rpc.Status.code] of 1,
        corresponding to `Code.CANCELLED`.
        """

def add_OperationsServicer_to_server(servicer: OperationsServicer, server: grpc.Server) -> None: ...
