text:
using grpc = global::Grpc.Core;

namespace Google.Cloud.BinaryAuthorization.V1 {
  ///
  /// Google Cloud Management Service for Binary Authorization admission policies
  /// and attestation authorities.
  ///
  /// This API implements a REST model with the following objects:
  ///
  /// * [Policy][google.cloud.binaryauthorization.v1.Policy]
  /// * [Attestor][google.cloud.binaryauthorization.v1.Attestor]
  ///
  public static partial class BinauthzManagementServiceV1
  {
    static readonly string __ServiceName = "google.cloud.binaryauthorization.v1.BinauthzManagementServiceV1";

    [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
    static void __Helper_SerializeMessage(global::Google.Protobuf.IMessage message, grpc::SerializationContext context)
    {
      #if !GRPC_DISABLE_PROTOBUF_BUFFER_SERIALIZATION
      if (message is global::Google.Protobuf.IBufferMessage)
      {
        context.SetPayloadLength(message.CalculateSize());
        global::Google.Protobuf.MessageExtensions.WriteTo(message, context.GetBufferWriter());
        context.Complete();
        return;
      }
      #endif
      context.Complete(global::Google.Protobuf.MessageExtensions.ToByteArray(message));
    }

    [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
    static class __Helper_MessageCache<T>
    {
      public static readonly bool IsBufferMessage = global::System.Reflection.IntrospectionExtensions.GetTypeInfo(typeof(global::Google.Protobuf.IBufferMessage)).IsAssignableFrom(typeof(T));
    }

    [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
    static T __Helper_DeserializeMessage<T>(grpc::DeserializationContext context, global::Google.Protobuf.MessageParser<T> parser) where T : global::Google.Protobuf.IMessage<T>
    {
      #if !GRPC_DISABLE_PROTOBUF_BUFFER_SERIALIZATION
      if (__Helper_MessageCache<T>.IsBufferMessage)
      {
        return parser.ParseFrom(context.PayloadAsReadOnlySequence());
      }
      #endif
      return parser.ParseFrom(context.PayloadAsNewBuffer());
    }

    [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
    static readonly grpc::Marshaller<global::Google.Cloud.BinaryAuthorization.V1.GetPolicyRequest> __Marshaller_google_cloud_binaryauthorization_v1_GetPolicyRequest = grpc::Marshallers.Create(__Helper_SerializeMessage, context => __Helper_DeserializeMessage(context, global::Google.Cloud.BinaryAuthorization.V1.GetPolicyRequest.Parser));
    [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
    static readonly grpc::Marshaller<global::Google.Cloud.BinaryAuthorization.V1.Policy> __Marshaller_google_cloud_binaryauthorization_v1_Policy = grpc::Marshallers.Create(__Helper_SerializeMessage, context => __Helper_DeserializeMessage(context, global::Google.Cloud.BinaryAuthorization.V1.Policy.Parser));
    [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
    static readonly grpc::Marshaller<global::Google.Cloud.BinaryAuthorization.V1.UpdatePolicyRequest> __Marshaller_google_cloud_binaryauthorization_v1_UpdatePolicyRequest = grpc::Marshallers.Create(__Helper_SerializeMessage, context => __Helper_DeserializeMessage(context, global::Google.Cloud.BinaryAuthorization.V1.UpdatePolicyRequest.Parser));
    [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
    static readonly grpc::Marshaller<global::Google.Cloud.BinaryAuthorization.V1.CreateAttestorRequest> __Marshaller_google_cloud_binaryauthorization_v1_CreateAttestorRequest = grpc::Marshallers.Create(__Helper_SerializeMessage, context => __Helper_DeserializeMessage(context, global::Google.Cloud.BinaryAuthorization.V1.CreateAttestorRequest.Parser));
    [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
    static readonly grpc::Marshaller<global::Google.Cloud.BinaryAuthorization.V1.Attestor> __Marshaller_google_cloud_binaryauthorization_v1_Attestor = grpc::Marshallers.Create(__Helper_SerializeMessage, context => __Helper_DeserializeMessage(context, global::Google.Cloud.BinaryAuthorization.V1.Attestor.Parser));
    [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
    static readonly grpc::Marshaller<global::Google.Cloud.BinaryAuthorization.V1.GetAttestorRequest> __Marshaller_google_cloud_binaryauthorization_v1_GetAttestorRequest = grpc::Marshallers.Create(__Helper_SerializeMessage, context => __Helper_DeserializeMessage(context, global::Google.Cloud.BinaryAuthorization.V1.GetAttestorRequest.Parser));
    [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
    static readonly grpc::Marshaller<global::Google.Cloud.BinaryAuthorization.V1.UpdateAttestorRequest> __Marshaller_google_cloud_binaryauthorization_v1_UpdateAttestorRequest = grpc::Marshallers.Create(__Helper_SerializeMessage, context => __Helper_DeserializeMessage(context, global::Google.Cloud.BinaryAuthorization.V1.UpdateAttestorRequest.Parser));
    [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
    static readonly grpc::Marshaller<global::Google.Cloud.BinaryAuthorization.V1.ListAttestorsRequest> __Marshaller_google_cloud_binaryauthorization_v1_ListAttestorsRequest = grpc::Marshallers.Create(__Helper_SerializeMessage, context => __Helper_DeserializeMessage(context, global::Google.Cloud.BinaryAuthorization.V1.ListAttestorsRequest.Parser));
    [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
    static readonly grpc::Marshaller<global::Google.Cloud.BinaryAuthorization.V1.ListAttestorsResponse> __Marshaller_google_cloud_binaryauthorization_v1_ListAttestorsResponse = grpc::Marshallers.Create(__Helper_SerializeMessage, context => __Helper_DeserializeMessage(context, global::Google.Cloud.BinaryAuthorization.V1.ListAttestorsResponse.Parser));
    [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
    static readonly grpc::Marshaller<global::Google.Cloud.BinaryAuthorization.V1.DeleteAttestorRequest> __Marshaller_google_cloud_binaryauthorization_v1_DeleteAttestorRequest = grpc::Marshallers.Create(__Helper_SerializeMessage, context => __Helper_DeserializeMessage(context, global::Google.Cloud.BinaryAuthorization.V1.DeleteAttestorRequest.Parser));
    [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
    static readonly grpc::Marshaller<global::Google.Protobuf.WellKnownTypes.Empty> __Marshaller_google_protobuf_Empty = grpc::Marshallers.Create(__Helper_SerializeMessage, context => __Helper_DeserializeMessage(context, global::Google.Protobuf.WellKnownTypes.Empty.Parser));

    [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
    static readonly grpc::Method<global::Google.Cloud.BinaryAuthorization.V1.GetPolicyRequest, global::Google.Cloud.BinaryAuthorization.V1.Policy> __Method_GetPolicy = new grpc::Method<global::Google.Cloud.BinaryAuthorization.V1.GetPolicyRequest, global::Google.Cloud.BinaryAuthorization.V1.Policy>(
        grpc::MethodType.Unary,
        __ServiceName,
        "GetPolicy",
        __Marshaller_google_cloud_binaryauthorization_v1_GetPolicyRequest,
        __Marshaller_google_cloud_binaryauthorization_v1_Policy);

    [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
    static readonly grpc::Method<global::Google.Cloud.BinaryAuthorization.V1.UpdatePolicyRequest, global::Google.Cloud.BinaryAuthorization.V1.Policy> __Method_UpdatePolicy = new grpc::Method<global::Google.Cloud.BinaryAuthorization.V1.UpdatePolicyRequest, global::Google.Cloud.BinaryAuthorization.V1.Policy>(
        grpc::MethodType.Unary,
        __ServiceName,
        "UpdatePolicy",
        __Marshaller_google_cloud_binaryauthorization_v1_UpdatePolicyRequest,
        __Marshaller_google_cloud_binaryauthorization_v1_Policy);

    [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
    static readonly grpc::Method<global::Google.Cloud.BinaryAuthorization.V1.CreateAttestorRequest, global::Google.Cloud.BinaryAuthorization.V1.Attestor> __Method_CreateAttestor = new grpc::Method<global::Google.Cloud.BinaryAuthorization.V1.CreateAttestorRequest, global::Google.Cloud.BinaryAuthorization.V1.Attestor>(
        grpc::MethodType.Unary,
        __ServiceName,
        "CreateAttestor",
        __Marshaller_google_cloud_binaryauthorization_v1_CreateAttestorRequest,
        __Marshaller_google_cloud_binaryauthorization_v1_Attestor);

    [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
    static readonly grpc::Method<global::Google.Cloud.BinaryAuthorization.V1.GetAttestorRequest, global::Google.Cloud.BinaryAuthorization.V1.Attestor> __Method_GetAttestor = new grpc::Method<global::Google.Cloud.BinaryAuthorization.V1.GetAttestorRequest, global::Google.Cloud.BinaryAuthorization.V1.Attestor>(
        grpc::MethodType.Unary,
        __ServiceName,
        "GetAttestor",
        __Marshaller_google_cloud_binaryauthorization_v1_GetAttestorRequest,
        __Marshaller_google_cloud_binaryauthorization_v1_Attestor);

    [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
    static readonly grpc::Method<global::Google.Cloud.BinaryAuthorization.V1.UpdateAttestorRequest, global::Google.Cloud.BinaryAuthorization.V1.Attestor> __Method_UpdateAttestor = new grpc::Method<global::Google.Cloud.BinaryAuthorization.V1.UpdateAttestorRequest, global::Google.Cloud.BinaryAuthorization.V1.Attestor>(
        grpc::MethodType.Unary,
        __ServiceName,
        "UpdateAttestor",
        __Marshaller_google_cloud_binaryauthorization_v1_UpdateAttestorRequest,
        __Marshaller_google_cloud_binaryauthorization_v1_Attestor);

    [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
    static readonly grpc::Method<global::Google.Cloud.BinaryAuthorization.V1.ListAttestorsRequest, global::Google.Cloud.BinaryAuthorization.V1.ListAttestorsResponse> __Method_ListAttestors = new grpc::Method<global::Google.Cloud.BinaryAuthorization.V1.ListAttestorsRequest, global::Google.Cloud.BinaryAuthorization.V1.ListAttestorsResponse>(
        grpc::MethodType.Unary,
        __ServiceName,
        "ListAttestors",
        __Marshaller_google_cloud_binaryauthorization_v1_ListAttestorsRequest,
        __Marshaller_google_cloud_binaryauthorization_v1_ListAttestorsResponse);

    [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
    static readonly grpc::Method<global::Google.Cloud.BinaryAuthorization.V1.DeleteAttestorRequest, global::Google.Protobuf.WellKnownTypes.Empty> __Method_DeleteAttestor = new grpc::Method<global::Google.Cloud.BinaryAuthorization.V1.DeleteAttestorRequest, global::Google.Protobuf.WellKnownTypes.Empty>(
        grpc::MethodType.Unary,
        __ServiceName,
        "DeleteAttestor",
        __Marshaller_google_cloud_binaryauthorization_v1_DeleteAttestorRequest,
        __Marshaller_google_protobuf_Empty);

    /// Service descriptor
    public static global::Google.Protobuf.Reflection.ServiceDescriptor Descriptor
    {
      get { return global::Google.Cloud.BinaryAuthorization.V1.ServiceReflection.Descriptor.Services[0]; }
    }

    /// Base class for server-side implementations of BinauthzManagementServiceV1
    [grpc::BindServiceMethod(typeof(BinauthzManagementServiceV1), "BindService")]
    public abstract partial class BinauthzManagementServiceV1Base
    {
      ///
      /// A [policy][google.cloud.binaryauthorization.v1.Policy] specifies the [attestors][google.cloud.binaryauthorization.v1.Attestor] that must attest to
      /// a container image, before the project is allowed to deploy that
      /// image. There is at most one policy per project. All image admission
      /// requests are permitted if a project has no policy.
      ///
      /// Gets the [policy][google.cloud.binaryauthorization.v1.Policy] for this project. Returns a default
      /// [policy][google.cloud.binaryauthorization.v1.Policy] if the project does not have one.
      ///
      /// <param name="request">The request received from the client.</param>
      /// <param name="context">The context of the server-side call handler being invoked.</param>
      /// <returns>The response to send back to the client (wrapped by a task).</returns>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public virtual global::System.Threading.Tasks.Task<global::Google.Cloud.BinaryAuthorization.V1.Policy> GetPolicy(global::Google.Cloud.BinaryAuthorization.V1.GetPolicyRequest request, grpc::ServerCallContext context)
      {
        throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, ""));
      }

      ///
      /// Creates or updates a project's [policy][google.cloud.binaryauthorization.v1.Policy], and returns a copy of the
      /// new [policy][google.cloud.binaryauthorization.v1.Policy]. A policy is always updated as a whole, to avoid race
      /// conditions with concurrent policy enforcement (or management!)
      /// requests. Returns NOT_FOUND if the project does not exist, INVALID_ARGUMENT
      /// if the request is malformed.
      ///
      /// <param name="request">The request received from the client.</param>
      /// <param name="context">The context of the server-side call handler being invoked.</param>
      /// <returns>The response to send back to the client (wrapped by a task).</returns>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public virtual global::System.Threading.Tasks.Task<global::Google.Cloud.BinaryAuthorization.V1.Policy> UpdatePolicy(global::Google.Cloud.BinaryAuthorization.V1.UpdatePolicyRequest request, grpc::ServerCallContext context)
      {
        throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, ""));
      }

      ///
      /// Creates an [attestor][google.cloud.binaryauthorization.v1.Attestor], and returns a copy of the new
      /// [attestor][google.cloud.binaryauthorization.v1.Attestor]. Returns NOT_FOUND if the project does not exist,
      /// INVALID_ARGUMENT if the request is malformed, ALREADY_EXISTS if the
      /// [attestor][google.cloud.binaryauthorization.v1.Attestor] already exists.
      ///
      /// <param name="request">The request received from the client.</param>
      /// <param name="context">The context of the server-side call handler being invoked.</param>
      /// <returns>The response to send back to the client (wrapped by a task).</returns>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public virtual global::System.Threading.Tasks.Task<global::Google.Cloud.BinaryAuthorization.V1.Attestor> CreateAttestor(global::Google.Cloud.BinaryAuthorization.V1.CreateAttestorRequest request, grpc::ServerCallContext context)
      {
        throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, ""));
      }

      ///
      /// Gets an [attestor][google.cloud.binaryauthorization.v1.Attestor].
      /// Returns NOT_FOUND if the [attestor][google.cloud.binaryauthorization.v1.Attestor] does not exist.
      ///
      /// <param name="request">The request received from the client.</param>
      /// <param name="context">The context of the server-side call handler being invoked.</param>
      /// <returns>The response to send back to the client (wrapped by a task).</returns>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public virtual global::System.Threading.Tasks.Task<global::Google.Cloud.BinaryAuthorization.V1.Attestor> GetAttestor(global::Google.Cloud.BinaryAuthorization.V1.GetAttestorRequest request, grpc::ServerCallContext context)
      {
        throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, ""));
      }

      ///
      /// Updates an [attestor][google.cloud.binaryauthorization.v1.Attestor].
      /// Returns NOT_FOUND if the [attestor][google.cloud.binaryauthorization.v1.Attestor] does not exist.
      ///
      /// <param name="request">The request received from the client.</param>
      /// <param name="context">The context of the server-side call handler being invoked.</param>
      /// <returns>The response to send back to the client (wrapped by a task).</returns>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public virtual global::System.Threading.Tasks.Task<global::Google.Cloud.BinaryAuthorization.V1.Attestor> UpdateAttestor(global::Google.Cloud.BinaryAuthorization.V1.UpdateAttestorRequest request, grpc::ServerCallContext context)
      {
        throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, ""));
      }

      ///
      /// Lists [attestors][google.cloud.binaryauthorization.v1.Attestor].
      /// Returns INVALID_ARGUMENT if the project does not exist.
      ///
      /// <param name="request">The request received from the client.</param>
      /// <param name="context">The context of the server-side call handler being invoked.</param>
      /// <returns>The response to send back to the client (wrapped by a task).</returns>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public virtual global::System.Threading.Tasks.Task<global::Google.Cloud.BinaryAuthorization.V1.ListAttestorsResponse> ListAttestors(global::Google.Cloud.BinaryAuthorization.V1.ListAttestorsRequest request, grpc::ServerCallContext context)
      {
        throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, ""));
      }

      ///
      /// Deletes an [attestor][google.cloud.binaryauthorization.v1.Attestor]. Returns NOT_FOUND if the
      /// [attestor][google.cloud.binaryauthorization.v1.Attestor] does not exist.
      ///
      /// <param name="request">The request received from the client.</param>
      /// <param name="context">The context of the server-side call handler being invoked.</param>
      /// <returns>The response to send back to the client (wrapped by a task).</returns>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public virtual global::System.Threading.Tasks.Task<global::Google.Protobuf.WellKnownTypes.Empty> DeleteAttestor(global::Google.Cloud.BinaryAuthorization.V1.DeleteAttestorRequest request, grpc::ServerCallContext context)
      {
        throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, ""));
      }

    }

    /// Client for BinauthzManagementServiceV1
    public partial class BinauthzManagementServiceV1Client : grpc::ClientBase<BinauthzManagementServiceV1Client>
    {
      /// Creates a new client for BinauthzManagementServiceV1
      /// <param name="channel">The channel to use to make remote calls.</param>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public BinauthzManagementServiceV1Client(grpc::ChannelBase channel) : base(channel)
      {
      }
      /// Creates a new client for BinauthzManagementServiceV1 that uses a custom <c>CallInvoker</c>.
      /// <param name="callInvoker">The callInvoker to use to make remote calls.</param>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public BinauthzManagementServiceV1Client(grpc::CallInvoker callInvoker) : base(callInvoker)
      {
      }
      /// Protected parameterless constructor to allow creation of test doubles.
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      protected BinauthzManagementServiceV1Client() : base()
      {
      }
      /// Protected constructor to allow creation of configured clients.
      /// <param name="configuration">The client configuration.</param>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      protected BinauthzManagementServiceV1Client(ClientBaseConfiguration configuration) : base(configuration)
      {
      }

      ///
      /// A [policy][google.cloud.binaryauthorization.v1.Policy] specifies the [attestors][google.cloud.binaryauthorization.v1.Attestor] that must attest to
      /// a container image, before the project is allowed to deploy that
      /// image. There is at most one policy per project. All image admission
      /// requests are permitted if a project has no policy.
      ///
      /// Gets the [policy][google.cloud.binaryauthorization.v1.Policy] for this project. Returns a default
      /// [policy][google.cloud.binaryauthorization.v1.Policy] if the project does not have one.
      ///
      /// <param name="request">The request to send to the server.</param>
      /// <param name="headers">The initial metadata to send with the call. This parameter is optional.</param>
      /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
      /// <param name="cancellationToken">An optional token for canceling the call.</param>
      /// <returns>The response received from the server.</returns>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public virtual global::Google.Cloud.BinaryAuthorization.V1.Policy GetPolicy(global::Google.Cloud.BinaryAuthorization.V1.GetPolicyRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, global::System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken))
      {
        return GetPolicy(request, new grpc::CallOptions(headers, deadline, cancellationToken));
      }
      ///
      /// A [policy][google.cloud.binaryauthorization.v1.Policy] specifies the [attestors][google.cloud.binaryauthorization.v1.Attestor] that must attest to
      /// a container image, before the project is allowed to deploy that
      /// image. There is at most one policy per project. All image admission
      /// requests are permitted if a project has no policy.
      ///
      /// Gets the [policy][google.cloud.binaryauthorization.v1.Policy] for this project. Returns a default
      /// [policy][google.cloud.binaryauthorization.v1.Policy] if the project does not have one.
      ///
      /// <param name="request">The request to send to the server.</param>
      /// <param name="options">The options for the call.</param>
      /// <returns>The response received from the server.</returns>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public virtual global::Google.Cloud.BinaryAuthorization.V1.Policy GetPolicy(global::Google.Cloud.BinaryAuthorization.V1.GetPolicyRequest request, grpc::CallOptions options)
      {
        return CallInvoker.BlockingUnaryCall(__Method_GetPolicy, null, options, request);
      }
      ///
      /// A [policy][google.cloud.binaryauthorization.v1.Policy] specifies the [attestors][google.cloud.binaryauthorization.v1.Attestor] that must attest to
      /// a container image, before the project is allowed to deploy that
      /// image. There is at most one policy per project. All image admission
      /// requests are permitted if a project has no policy.
      ///
      /// Gets the [policy][google.cloud.binaryauthorization.v1.Policy] for this project. Returns a default
      /// [policy][google.cloud.binaryauthorization.v1.Policy] if the project does not have one.
      ///
      /// <param name="request">The request to send to the server.</param>
      /// <param name="headers">The initial metadata to send with the call. This parameter is optional.</param>
      /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
      /// <param name="cancellationToken">An optional token for canceling the call.</param>
      /// <returns>The call object.</returns>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.BinaryAuthorization.V1.Policy> GetPolicyAsync(global::Google.Cloud.BinaryAuthorization.V1.GetPolicyRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, global::System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken))
      {
        return GetPolicyAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
      }
      ///
      /// A [policy][google.cloud.binaryauthorization.v1.Policy] specifies the [attestors][google.cloud.binaryauthorization.v1.Attestor] that must attest to
      /// a container image, before the project is allowed to deploy that
      /// image. There is at most one policy per project. All image admission
      /// requests are permitted if a project has no policy.
      ///
      /// Gets the [policy][google.cloud.binaryauthorization.v1.Policy] for this project. Returns a default
      /// [policy][google.cloud.binaryauthorization.v1.Policy] if the project does not have one.
      ///
      /// <param name="request">The request to send to the server.</param>
      /// <param name="options">The options for the call.</param>
      /// <returns>The call object.</returns>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.BinaryAuthorization.V1.Policy> GetPolicyAsync(global::Google.Cloud.BinaryAuthorization.V1.GetPolicyRequest request, grpc::CallOptions options)
      {
        return CallInvoker.AsyncUnaryCall(__Method_GetPolicy, null, options, request);
      }
      ///
      /// Creates or updates a project's [policy][google.cloud.binaryauthorization.v1.Policy], and returns a copy of the
      /// new [policy][google.cloud.binaryauthorization.v1.Policy]. A policy is always updated as a whole, to avoid race
      /// conditions with concurrent policy enforcement (or management!)
      /// requests. Returns NOT_FOUND if the project does not exist, INVALID_ARGUMENT
      /// if the request is malformed.
      ///
      /// <param name="request">The request to send to the server.</param>
      /// <param name="headers">The initial metadata to send with the call. This parameter is optional.</param>
      /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
      /// <param name="cancellationToken">An optional token for canceling the call.</param>
      /// <returns>The response received from the server.</returns>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public virtual global::Google.Cloud.BinaryAuthorization.V1.Policy UpdatePolicy(global::Google.Cloud.BinaryAuthorization.V1.UpdatePolicyRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, global::System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken))
      {
        return UpdatePolicy(request, new grpc::CallOptions(headers, deadline, cancellationToken));
      }
      ///
      /// Creates or updates a project's [policy][google.cloud.binaryauthorization.v1.Policy], and returns a copy of the
      /// new [policy][google.cloud.binaryauthorization.v1.Policy]. A policy is always updated as a whole, to avoid race
      /// conditions with concurrent policy enforcement (or management!)
      /// requests. Returns NOT_FOUND if the project does not exist, INVALID_ARGUMENT
      /// if the request is malformed.
      ///
      /// <param name="request">The request to send to the server.</param>
      /// <param name="options">The options for the call.</param>
      /// <returns>The response received from the server.</returns>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public virtual global::Google.Cloud.BinaryAuthorization.V1.Policy UpdatePolicy(global::Google.Cloud.BinaryAuthorization.V1.UpdatePolicyRequest request, grpc::CallOptions options)
      {
        return CallInvoker.BlockingUnaryCall(__Method_UpdatePolicy, null, options, request);
      }
      ///
      /// Creates or updates a project's [policy][google.cloud.binaryauthorization.v1.Policy], and returns a copy of the
      /// new [policy][google.cloud.binaryauthorization.v1.Policy]. A policy is always updated as a whole, to avoid race
      /// conditions with concurrent policy enforcement (or management!)
      /// requests. Returns NOT_FOUND if the project does not exist, INVALID_ARGUMENT
      /// if the request is malformed.
      ///
      /// <param name="request">The request to send to the server.</param>
      /// <param name="headers">The initial metadata to send with the call. This parameter is optional.</param>
      /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
      /// <param name="cancellationToken">An optional token for canceling the call.</param>
      /// <returns>The call object.</returns>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.BinaryAuthorization.V1.Policy> UpdatePolicyAsync(global::Google.Cloud.BinaryAuthorization.V1.UpdatePolicyRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, global::System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken))
      {
        return UpdatePolicyAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
      }
      ///
      /// Creates or updates a project's [policy][google.cloud.binaryauthorization.v1.Policy], and returns a copy of the
      /// new [policy][google.cloud.binaryauthorization.v1.Policy]. A policy is always updated as a whole, to avoid race
      /// conditions with concurrent policy enforcement (or management!)
      /// requests. Returns NOT_FOUND if the project does not exist, INVALID_ARGUMENT
      /// if the request is malformed.
      ///
      /// <param name="request">The request to send to the server.</param>
      /// <param name="options">The options for the call.</param>
      /// <returns>The call object.</returns>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.BinaryAuthorization.V1.Policy> UpdatePolicyAsync(global::Google.Cloud.BinaryAuthorization.V1.UpdatePolicyRequest request, grpc::CallOptions options)
      {
        return CallInvoker.AsyncUnaryCall(__Method_UpdatePolicy, null, options, request);
      }
      ///
      /// Creates an [attestor][google.cloud.binaryauthorization.v1.Attestor], and returns a copy of the new
      /// [attestor][google.cloud.binaryauthorization.v1.Attestor]. Returns NOT_FOUND if the project does not exist,
      /// INVALID_ARGUMENT if the request is malformed, ALREADY_EXISTS if the
      /// [attestor][google.cloud.binaryauthorization.v1.Attestor] already exists.
      ///
      /// <param name="request">The request to send to the server.</param>
      /// <param name="headers">The initial metadata to send with the call. This parameter is optional.</param>
      /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
      /// <param name="cancellationToken">An optional token for canceling the call.</param>
      /// <returns>The response received from the server.</returns>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public virtual global::Google.Cloud.BinaryAuthorization.V1.Attestor CreateAttestor(global::Google.Cloud.BinaryAuthorization.V1.CreateAttestorRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, global::System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken))
      {
        return CreateAttestor(request, new grpc::CallOptions(headers, deadline, cancellationToken));
      }
      ///
      /// Creates an [attestor][google.cloud.binaryauthorization.v1.Attestor], and returns a copy of the new
      /// [attestor][google.cloud.binaryauthorization.v1.Attestor]. Returns NOT_FOUND if the project does not exist,
      /// INVALID_ARGUMENT if the request is malformed, ALREADY_EXISTS if the
      /// [attestor][google.cloud.binaryauthorization.v1.Attestor] already exists.
      ///
      /// <param name="request">The request to send to the server.</param>
      /// <param name="options">The options for the call.</param>
      /// <returns>The response received from the server.</returns>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public virtual global::Google.Cloud.BinaryAuthorization.V1.Attestor CreateAttestor(global::Google.Cloud.BinaryAuthorization.V1.CreateAttestorRequest request, grpc::CallOptions options)
      {
        return CallInvoker.BlockingUnaryCall(__Method_CreateAttestor, null, options, request);
      }
      ///
      /// Creates an [attestor][google.cloud.binaryauthorization.v1.Attestor], and returns a copy of the new
      /// [attestor][google.cloud.binaryauthorization.v1.Attestor]. Returns NOT_FOUND if the project does not exist,
      /// INVALID_ARGUMENT if the request is malformed, ALREADY_EXISTS if the
      /// [attestor][google.cloud.binaryauthorization.v1.Attestor] already exists.
      ///
      /// <param name="request">The request to send to the server.</param>
      /// <param name="headers">The initial metadata to send with the call. This parameter is optional.</param>
      /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
      /// <param name="cancellationToken">An optional token for canceling the call.</param>
      /// <returns>The call object.</returns>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.BinaryAuthorization.V1.Attestor> CreateAttestorAsync(global::Google.Cloud.BinaryAuthorization.V1.CreateAttestorRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, global::System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken))
      {
        return CreateAttestorAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
      }
      ///
      /// Creates an [attestor][google.cloud.binaryauthorization.v1.Attestor], and returns a copy of the new
      /// [attestor][google.cloud.binaryauthorization.v1.Attestor]. Returns NOT_FOUND if the project does not exist,
      /// INVALID_ARGUMENT if the request is malformed, ALREADY_EXISTS if the
      /// [attestor][google.cloud.binaryauthorization.v1.Attestor] already exists.
      ///
      /// <param name="request">The request to send to the server.</param>
      /// <param name="options">The options for the call.</param>
      /// <returns>The call object.</returns>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.BinaryAuthorization.V1.Attestor> CreateAttestorAsync(global::Google.Cloud.BinaryAuthorization.V1.CreateAttestorRequest request, grpc::CallOptions options)
      {
        return CallInvoker.AsyncUnaryCall(__Method_CreateAttestor, null, options, request);
      }
      ///
      /// Gets an [attestor][google.cloud.binaryauthorization.v1.Attestor].
      /// Returns NOT_FOUND if the [attestor][google.cloud.binaryauthorization.v1.Attestor] does not exist.
      ///
      /// <param name="request">The request to send to the server.</param>
      /// <param name="headers">The initial metadata to send with the call. This parameter is optional.</param>
      /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
      /// <param name="cancellationToken">An optional token for canceling the call.</param>
      /// <returns>The response received from the server.</returns>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public virtual global::Google.Cloud.BinaryAuthorization.V1.Attestor GetAttestor(global::Google.Cloud.BinaryAuthorization.V1.GetAttestorRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, global::System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken))
      {
        return GetAttestor(request, new grpc::CallOptions(headers, deadline, cancellationToken));
      }
      ///
      /// Gets an [attestor][google.cloud.binaryauthorization.v1.Attestor].
      /// Returns NOT_FOUND if the [attestor][google.cloud.binaryauthorization.v1.Attestor] does not exist.
      ///
      /// <param name="request">The request to send to the server.</param>
      /// <param name="options">The options for the call.</param>
      /// <returns>The response received from the server.</returns>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public virtual global::Google.Cloud.BinaryAuthorization.V1.Attestor GetAttestor(global::Google.Cloud.BinaryAuthorization.V1.GetAttestorRequest request, grpc::CallOptions options)
      {
        return CallInvoker.BlockingUnaryCall(__Method_GetAttestor, null, options, request);
      }
      ///
      /// Gets an [attestor][google.cloud.binaryauthorization.v1.Attestor].
      /// Returns NOT_FOUND if the [attestor][google.cloud.binaryauthorization.v1.Attestor] does not exist.
      ///
      /// <param name="request">The request to send to the server.</param>
      /// <param name="headers">The initial metadata to send with the call. This parameter is optional.</param>
      /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
      /// <param name="cancellationToken">An optional token for canceling the call.</param>
      /// <returns>The call object.</returns>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.BinaryAuthorization.V1.Attestor> GetAttestorAsync(global::Google.Cloud.BinaryAuthorization.V1.GetAttestorRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, global::System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken))
      {
        return GetAttestorAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
      }
      ///
      /// Gets an [attestor][google.cloud.binaryauthorization.v1.Attestor].
      /// Returns NOT_FOUND if the [attestor][google.cloud.binaryauthorization.v1.Attestor] does not exist.
      ///
      /// <param name="request">The request to send to the server.</param>
      /// <param name="options">The options for the call.</param>
      /// <returns>The call object.</returns>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.BinaryAuthorization.V1.Attestor> GetAttestorAsync(global::Google.Cloud.BinaryAuthorization.V1.GetAttestorRequest request, grpc::CallOptions options)
      {
        return CallInvoker.AsyncUnaryCall(__Method_GetAttestor, null, options, request);
      }
      ///
      /// Updates an [attestor][google.cloud.binaryauthorization.v1.Attestor].
      /// Returns NOT_FOUND if the [attestor][google.cloud.binaryauthorization.v1.Attestor] does not exist.
      ///
      /// <param name="request">The request to send to the server.</param>
      /// <param name="headers">The initial metadata to send with the call. This parameter is optional.</param>
      /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
      /// <param name="cancellationToken">An optional token for canceling the call.</param>
      /// <returns>The response received from the server.</returns>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public virtual global::Google.Cloud.BinaryAuthorization.V1.Attestor UpdateAttestor(global::Google.Cloud.BinaryAuthorization.V1.UpdateAttestorRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, global::System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken))
      {
        return UpdateAttestor(request, new grpc::CallOptions(headers, deadline, cancellationToken));
      }
      ///
      /// Updates an [attestor][google.cloud.binaryauthorization.v1.Attestor].
      /// Returns NOT_FOUND if the [attestor][google.cloud.binaryauthorization.v1.Attestor] does not exist.
      ///
      /// <param name="request">The request to send to the server.</param>
      /// <param name="options">The options for the call.</param>
      /// <returns>The response received from the server.</returns>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public virtual global::Google.Cloud.BinaryAuthorization.V1.Attestor UpdateAttestor(global::Google.Cloud.BinaryAuthorization.V1.UpdateAttestorRequest request, grpc::CallOptions options)
      {
        return CallInvoker.BlockingUnaryCall(__Method_UpdateAttestor, null, options, request);
      }
      ///
      /// Updates an [attestor][google.cloud.binaryauthorization.v1.Attestor].
      /// Returns NOT_FOUND if the [attestor][google.cloud.binaryauthorization.v1.Attestor] does not exist.
      ///
      /// <param name="request">The request to send to the server.</param>
      /// <param name="headers">The initial metadata to send with the call. This parameter is optional.</param>
      /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
      /// <param name="cancellationToken">An optional token for canceling the call.</param>
      /// <returns>The call object.</returns>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.BinaryAuthorization.V1.Attestor> UpdateAttestorAsync(global::Google.Cloud.BinaryAuthorization.V1.UpdateAttestorRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, global::System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken))
      {
        return UpdateAttestorAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
      }
      ///
      /// Updates an [attestor][google.cloud.binaryauthorization.v1.Attestor].
      /// Returns NOT_FOUND if the [attestor][google.cloud.binaryauthorization.v1.Attestor] does not exist.
      ///
      /// <param name="request">The request to send to the server.</param>
      /// <param name="options">The options for the call.</param>
      /// <returns>The call object.</returns>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.BinaryAuthorization.V1.Attestor> UpdateAttestorAsync(global::Google.Cloud.BinaryAuthorization.V1.UpdateAttestorRequest request, grpc::CallOptions options)
      {
        return CallInvoker.AsyncUnaryCall(__Method_UpdateAttestor, null, options, request);
      }
      ///
      /// Lists [attestors][google.cloud.binaryauthorization.v1.Attestor].
      /// Returns INVALID_ARGUMENT if the project does not exist.
      ///
      /// <param name="request">The request to send to the server.</param>
      /// <param name="headers">The initial metadata to send with the call. This parameter is optional.</param>
      /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
      /// <param name="cancellationToken">An optional token for canceling the call.</param>
      /// <returns>The response received from the server.</returns>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public virtual global::Google.Cloud.BinaryAuthorization.V1.ListAttestorsResponse ListAttestors(global::Google.Cloud.BinaryAuthorization.V1.ListAttestorsRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, global::System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken))
      {
        return ListAttestors(request, new grpc::CallOptions(headers, deadline, cancellationToken));
      }
      ///
      /// Lists [attestors][google.cloud.binaryauthorization.v1.Attestor].
      /// Returns INVALID_ARGUMENT if the project does not exist.
      ///
      /// <param name="request">The request to send to the server.</param>
      /// <param name="options">The options for the call.</param>
      /// <returns>The response received from the server.</returns>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public virtual global::Google.Cloud.BinaryAuthorization.V1.ListAttestorsResponse ListAttestors(global::Google.Cloud.BinaryAuthorization.V1.ListAttestorsRequest request, grpc::CallOptions options)
      {
        return CallInvoker.BlockingUnaryCall(__Method_ListAttestors, null, options, request);
      }
      ///
      /// Lists [attestors][google.cloud.binaryauthorization.v1.Attestor].
      /// Returns INVALID_ARGUMENT if the project does not exist.
      ///
      /// <param name="request">The request to send to the server.</param>
      /// <param name="headers">The initial metadata to send with the call. This parameter is optional.</param>
      /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
      /// <param name="cancellationToken">An optional token for canceling the call.</param>
      /// <returns>The call object.</returns>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.BinaryAuthorization.V1.ListAttestorsResponse> ListAttestorsAsync(global::Google.Cloud.BinaryAuthorization.V1.ListAttestorsRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, global::System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken))
      {
        return ListAttestorsAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
      }
      ///
      /// Lists [attestors][google.cloud.binaryauthorization.v1.Attestor].
      /// Returns INVALID_ARGUMENT if the project does not exist.
      ///
      /// <param name="request">The request to send to the server.</param>
      /// <param name="options">The options for the call.</param>
      /// <returns>The call object.</returns>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.BinaryAuthorization.V1.ListAttestorsResponse> ListAttestorsAsync(global::Google.Cloud.BinaryAuthorization.V1.ListAttestorsRequest request, grpc::CallOptions options)
      {
        return CallInvoker.AsyncUnaryCall(__Method_ListAttestors, null, options, request);
      }
      ///
      /// Deletes an [attestor][google.cloud.binaryauthorization.v1.Attestor]. Returns NOT_FOUND if the
      /// [attestor][google.cloud.binaryauthorization.v1.Attestor] does not exist.
      ///
      /// <param name="request">The request to send to the server.</param>
      /// <param name="headers">The initial metadata to send with the call. This parameter is optional.</param>
      /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
      /// <param name="cancellationToken">An optional token for canceling the call.</param>
      /// <returns>The response received from the server.</returns>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public virtual global::Google.Protobuf.WellKnownTypes.Empty DeleteAttestor(global::Google.Cloud.BinaryAuthorization.V1.DeleteAttestorRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, global::System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken))
      {
        return DeleteAttestor(request, new grpc::CallOptions(headers, deadline, cancellationToken));
      }
      ///
      /// Deletes an [attestor][google.cloud.binaryauthorization.v1.Attestor]. Returns NOT_FOUND if the
      /// [attestor][google.cloud.binaryauthorization.v1.Attestor] does not exist.
      ///
      /// <param name="request">The request to send to the server.</param>
      /// <param name="options">The options for the call.</param>
      /// <returns>The response received from the server.</returns>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public virtual global::Google.Protobuf.WellKnownTypes.Empty DeleteAttestor(global::Google.Cloud.BinaryAuthorization.V1.DeleteAttestorRequest request, grpc::CallOptions options)
      {
        return CallInvoker.BlockingUnaryCall(__Method_DeleteAttestor, null, options, request);
      }
      ///
      /// Deletes an [attestor][google.cloud.binaryauthorization.v1.Attestor]. Returns NOT_FOUND if the
      /// [attestor][google.cloud.binaryauthorization.v1.Attestor] does not exist.
      ///
      /// <param name="request">The request to send to the server.</param>
      /// <param name="headers">The initial metadata to send with the call. This parameter is optional.</param>
      /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
      /// <param name="cancellationToken">An optional token for canceling the call.</param>
      /// <returns>The call object.</returns>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public virtual grpc::AsyncUnaryCall<global::Google.Protobuf.WellKnownTypes.Empty> DeleteAttestorAsync(global::Google.Cloud.BinaryAuthorization.V1.DeleteAttestorRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, global::System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken))
      {
        return DeleteAttestorAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
      }
      ///
      /// Deletes an [attestor][google.cloud.binaryauthorization.v1.Attestor]. Returns NOT_FOUND if the
      /// [attestor][google.cloud.binaryauthorization.v1.Attestor] does not exist.
      ///
      /// <param name="request">The request to send to the server.</param>
      /// <param name="options">The options for the call.</param>
      /// <returns>The call object.</returns>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public virtual grpc::AsyncUnaryCall<global::Google.Protobuf.WellKnownTypes.Empty> DeleteAttestorAsync(global::Google.Cloud.BinaryAuthorization.V1.DeleteAttestorRequest request, grpc::CallOptions options)
      {
        return CallInvoker.AsyncUnaryCall(__Method_DeleteAttestor, null, options, request);
      }
      /// Creates a new instance of client from given <c>ClientBaseConfiguration</c>.
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      protected override BinauthzManagementServiceV1Client NewInstance(ClientBaseConfiguration configuration)
      {
        return new BinauthzManagementServiceV1Client(configuration);
      }
    }

    /// Creates service definition that can be registered with a server
    /// <param name="serviceImpl">An object implementing the server-side handling logic.</param>
    [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
    public static grpc::ServerServiceDefinition BindService(BinauthzManagementServiceV1Base serviceImpl)
    {
      return grpc::ServerServiceDefinition.CreateBuilder()
          .AddMethod(__Method_GetPolicy, serviceImpl.GetPolicy)
          .AddMethod(__Method_UpdatePolicy, serviceImpl.UpdatePolicy)
          .AddMethod(__Method_CreateAttestor, serviceImpl.CreateAttestor)
          .AddMethod(__Method_GetAttestor, serviceImpl.GetAttestor)
          .AddMethod(__Method_UpdateAttestor, serviceImpl.UpdateAttestor)
          .AddMethod(__Method_ListAttestors, serviceImpl.ListAttestors)
          .AddMethod(__Method_DeleteAttestor, serviceImpl.DeleteAttestor).Build();
    }

    /// Register service method with a service binder with or without implementation. Useful when customizing the service binding logic.
    /// Note: this method is part of an experimental API that can change or be removed without any prior notice.
    /// <param name="serviceBinder">Service methods will be bound by calling <c>AddMethod</c> on this object.</param>
    /// <param name="serviceImpl">An object implementing the server-side handling logic.</param>
    [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
    public static void BindService(grpc::ServiceBinderBase serviceBinder, BinauthzManagementServiceV1Base serviceImpl)
    {
      serviceBinder.AddMethod(__Method_GetPolicy, serviceImpl == null ? null : new grpc::UnaryServerMethod<global::Google.Cloud.BinaryAuthorization.V1.GetPolicyRequest, global::Google.Cloud.BinaryAuthorization.V1.Policy>(serviceImpl.GetPolicy));
      serviceBinder.AddMethod(__Method_UpdatePolicy, serviceImpl == null ? null : new grpc::UnaryServerMethod<global::Google.Cloud.BinaryAuthorization.V1.UpdatePolicyRequest, global::Google.Cloud.BinaryAuthorization.V1.Policy>(serviceImpl.UpdatePolicy));
      serviceBinder.AddMethod(__Method_CreateAttestor, serviceImpl == null ? null : new grpc::UnaryServerMethod<global::Google.Cloud.BinaryAuthorization.V1.CreateAttestorRequest, global::Google.Cloud.BinaryAuthorization.V1.Attestor>(serviceImpl.CreateAttestor));
      serviceBinder.AddMethod(__Method_GetAttestor, serviceImpl == null ? null : new grpc::UnaryServerMethod<global::Google.Cloud.BinaryAuthorization.V1.GetAttestorRequest, global::Google.Cloud.BinaryAuthorization.V1.Attestor>(serviceImpl.GetAttestor));
      serviceBinder.AddMethod(__Method_UpdateAttestor, serviceImpl == null ? null : new grpc::UnaryServerMethod<global::Google.Cloud.BinaryAuthorization.V1.UpdateAttestorRequest, global::Google.Cloud.BinaryAuthorization.V1.Attestor>(serviceImpl.UpdateAttestor));
      serviceBinder.AddMethod(__Method_ListAttestors, serviceImpl == null ? null : new grpc::UnaryServerMethod<global::Google.Cloud.BinaryAuthorization.V1.ListAttestorsRequest, global::Google.Cloud.BinaryAuthorization.V1.ListAttestorsResponse>(serviceImpl.ListAttestors));
      serviceBinder.AddMethod(__Method_DeleteAttestor, serviceImpl == null ? null : new grpc::UnaryServerMethod<global::Google.Cloud.BinaryAuthorization.V1.DeleteAttestorRequest, global::Google.Protobuf.WellKnownTypes.Empty>(serviceImpl.DeleteAttestor));
    }

  }
  ///
  /// API for working with the system policy.
  ///
  public static partial class SystemPolicyV1
  {
    static readonly string __ServiceName = "google.cloud.binaryauthorization.v1.SystemPolicyV1";

    [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
    static void __Helper_SerializeMessage(global::Google.Protobuf.IMessage message, grpc::SerializationContext context)
    {
      #if !GRPC_DISABLE_PROTOBUF_BUFFER_SERIALIZATION
      if (message is global::Google.Protobuf.IBufferMessage)
      {
        context.SetPayloadLength(message.CalculateSize());
        global::Google.Protobuf.MessageExtensions.WriteTo(message, context.GetBufferWriter());
        context.Complete();
        return;
      }
      #endif
      context.Complete(global::Google.Protobuf.MessageExtensions.ToByteArray(message));
    }

    [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
    static class __Helper_MessageCache<T>
    {
      public static readonly bool IsBufferMessage = global::System.Reflection.IntrospectionExtensions.GetTypeInfo(typeof(global::Google.Protobuf.IBufferMessage)).IsAssignableFrom(typeof(T));
    }

    [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
    static T __Helper_DeserializeMessage<T>(grpc::DeserializationContext context, global::Google.Protobuf.MessageParser<T> parser) where T : global::Google.Protobuf.IMessage<T>
    {
      #if !GRPC_DISABLE_PROTOBUF_BUFFER_SERIALIZATION
      if (__Helper_MessageCache<T>.IsBufferMessage)
      {
        return parser.ParseFrom(context.PayloadAsReadOnlySequence());
      }
      #endif
      return parser.ParseFrom(context.PayloadAsNewBuffer());
    }

    [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
    static readonly grpc::Marshaller<global::Google.Cloud.BinaryAuthorization.V1.GetSystemPolicyRequest> __Marshaller_google_cloud_binaryauthorization_v1_GetSystemPolicyRequest = grpc::Marshallers.Create(__Helper_SerializeMessage, context => __Helper_DeserializeMessage(context, global::Google.Cloud.BinaryAuthorization.V1.GetSystemPolicyRequest.Parser));
    [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
    static readonly grpc::Marshaller<global::Google.Cloud.BinaryAuthorization.V1.Policy> __Marshaller_google_cloud_binaryauthorization_v1_Policy = grpc::Marshallers.Create(__Helper_SerializeMessage, context => __Helper_DeserializeMessage(context, global::Google.Cloud.BinaryAuthorization.V1.Policy.Parser));

    [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
    static readonly grpc::Method<global::Google.Cloud.BinaryAuthorization.V1.GetSystemPolicyRequest, global::Google.Cloud.BinaryAuthorization.V1.Policy> __Method_GetSystemPolicy = new grpc::Method<global::Google.Cloud.BinaryAuthorization.V1.GetSystemPolicyRequest, global::Google.Cloud.BinaryAuthorization.V1.Policy>(
        grpc::MethodType.Unary,
        __ServiceName,
        "GetSystemPolicy",
        __Marshaller_google_cloud_binaryauthorization_v1_GetSystemPolicyRequest,
        __Marshaller_google_cloud_binaryauthorization_v1_Policy);

    /// Service descriptor
    public static global::Google.Protobuf.Reflection.ServiceDescriptor Descriptor
    {
      get { return global::Google.Cloud.BinaryAuthorization.V1.ServiceReflection.Descriptor.Services[1]; }
    }

    /// Base class for server-side implementations of SystemPolicyV1
    [grpc::BindServiceMethod(typeof(SystemPolicyV1), "BindService")]
    public abstract partial class SystemPolicyV1Base
    {
      ///
      /// Gets the current system policy in the specified location.
      ///
      /// <param name="request">The request received from the client.</param>
      /// <param name="context">The context of the server-side call handler being invoked.</param>
      /// <returns>The response to send back to the client (wrapped by a task).</returns>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public virtual global::System.Threading.Tasks.Task<global::Google.Cloud.BinaryAuthorization.V1.Policy> GetSystemPolicy(global::Google.Cloud.BinaryAuthorization.V1.GetSystemPolicyRequest request, grpc::ServerCallContext context)
      {
        throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, ""));
      }

    }

    /// Client for SystemPolicyV1
    public partial class SystemPolicyV1Client : grpc::ClientBase<SystemPolicyV1Client>
    {
      /// Creates a new client for SystemPolicyV1
      /// <param name="channel">The channel to use to make remote calls.</param>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public SystemPolicyV1Client(grpc::ChannelBase channel) : base(channel)
      {
      }
      /// Creates a new client for SystemPolicyV1 that uses a custom <c>CallInvoker</c>.
      /// <param name="callInvoker">The callInvoker to use to make remote calls.</param>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public SystemPolicyV1Client(grpc::CallInvoker callInvoker) : base(callInvoker)
      {
      }
      /// Protected parameterless constructor to allow creation of test doubles.
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      protected SystemPolicyV1Client() : base()
      {
      }
      /// Protected constructor to allow creation of configured clients.
      /// <param name="configuration">The client configuration.</param>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      protected SystemPolicyV1Client(ClientBaseConfiguration configuration) : base(configuration)
      {
      }

      ///
      /// Gets the current system policy in the specified location.
      ///
      /// <param name="request">The request to send to the server.</param>
      /// <param name="headers">The initial metadata to send with the call. This parameter is optional.</param>
      /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
      /// <param name="cancellationToken">An optional token for canceling the call.</param>
      /// <returns>The response received from the server.</returns>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public virtual global::Google.Cloud.BinaryAuthorization.V1.Policy GetSystemPolicy(global::Google.Cloud.BinaryAuthorization.V1.GetSystemPolicyRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, global::System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken))
      {
        return GetSystemPolicy(request, new grpc::CallOptions(headers, deadline, cancellationToken));
      }
      ///
      /// Gets the current system policy in the specified location.
      ///
      /// <param name="request">The request to send to the server.</param>
      /// <param name="options">The options for the call.</param>
      /// <returns>The response received from the server.</returns>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public virtual global::Google.Cloud.BinaryAuthorization.V1.Policy GetSystemPolicy(global::Google.Cloud.BinaryAuthorization.V1.GetSystemPolicyRequest request, grpc::CallOptions options)
      {
        return CallInvoker.BlockingUnaryCall(__Method_GetSystemPolicy, null, options, request);
      }
      ///
      /// Gets the current system policy in the specified location.
      ///
      /// <param name="request">The request to send to the server.</param>
      /// <param name="headers">The initial metadata to send with the call. This parameter is optional.</param>
      /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
      /// <param name="cancellationToken">An optional token for canceling the call.</param>
      /// <returns>The call object.</returns>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.BinaryAuthorization.V1.Policy> GetSystemPolicyAsync(global::Google.Cloud.BinaryAuthorization.V1.GetSystemPolicyRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, global::System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken))
      {
        return GetSystemPolicyAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
      }
      ///
      /// Gets the current system policy in the specified location.
      ///
      /// <param name="request">The request to send to the server.</param>
      /// <param name="options">The options for the call.</param>
      /// <returns>The call object.</returns>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.BinaryAuthorization.V1.Policy> GetSystemPolicyAsync(global::Google.Cloud.BinaryAuthorization.V1.GetSystemPolicyRequest request, grpc::CallOptions options)
      {
        return CallInvoker.AsyncUnaryCall(__Method_GetSystemPolicy, null, options, request);
      }
      /// Creates a new instance of client from given <c>ClientBaseConfiguration</c>.
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      protected override SystemPolicyV1Client NewInstance(ClientBaseConfiguration configuration)
      {
        return new SystemPolicyV1Client(configuration);
      }
    }

    /// Creates service definition that can be registered with a server
    /// <param name="serviceImpl">An object implementing the server-side handling logic.</param>
    [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
    public static grpc::ServerServiceDefinition BindService(SystemPolicyV1Base serviceImpl)
    {
      return grpc::ServerServiceDefinition.CreateBuilder()
          .AddMethod(__Method_GetSystemPolicy, serviceImpl.GetSystemPolicy).Build();
    }

    /// Register service method with a service binder with or without implementation. Useful when customizing the service binding logic.
    /// Note: this method is part of an experimental API that can change or be removed without any prior notice.
    /// <param name="serviceBinder">Service methods will be bound by calling <c>AddMethod</c> on this object.</param>
    /// <param name="serviceImpl">An object implementing the server-side handling logic.</param>
    [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
    public static void BindService(grpc::ServiceBinderBase serviceBinder, SystemPolicyV1Base serviceImpl)
    {
      serviceBinder.AddMethod(__Method_GetSystemPolicy, serviceImpl == null ? null : new grpc::UnaryServerMethod<global::Google.Cloud.BinaryAuthorization.V1.GetSystemPolicyRequest, global::Google.Cloud.BinaryAuthorization.V1.Policy>(serviceImpl.GetSystemPolicy));
    }

  }
  ///
  /// BinAuthz Attestor verification
  ///
  public static partial class ValidationHelperV1
  {
    static readonly string __ServiceName = "google.cloud.binaryauthorization.v1.ValidationHelperV1";

    [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
    static void __Helper_SerializeMessage(global::Google.Protobuf.IMessage message, grpc::SerializationContext context)
    {
      #if !GRPC_DISABLE_PROTOBUF_BUFFER_SERIALIZATION
      if (message is global::Google.Protobuf.IBufferMessage)
      {
        context.SetPayloadLength(message.CalculateSize());
        global::Google.Protobuf.MessageExtensions.WriteTo(message, context.GetBufferWriter());
        context.Complete();
        return;
      }
      #endif
      context.Complete(global::Google.Protobuf.MessageExtensions.ToByteArray(message));
    }

    [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
    static class __Helper_MessageCache<T>
    {
      public static readonly bool IsBufferMessage = global::System.Reflection.IntrospectionExtensions.GetTypeInfo(typeof(global::Google.Protobuf.IBufferMessage)).IsAssignableFrom(typeof(T));
    }

    [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
    static T __Helper_DeserializeMessage<T>(grpc::DeserializationContext context, global::Google.Protobuf.MessageParser<T> parser) where T : global::Google.Protobuf.IMessage<T>
    {
      #if !GRPC_DISABLE_PROTOBUF_BUFFER_SERIALIZATION
      if (__Helper_MessageCache<T>.IsBufferMessage)
      {
        return parser.ParseFrom(context.PayloadAsReadOnlySequence());
      }
      #endif
      return parser.ParseFrom(context.PayloadAsNewBuffer());
    }

    [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
    static readonly grpc::Marshaller<global::Google.Cloud.BinaryAuthorization.V1.ValidateAttestationOccurrenceRequest> __Marshaller_google_cloud_binaryauthorization_v1_ValidateAttestationOccurrenceRequest = grpc::Marshallers.Create(__Helper_SerializeMessage, context => __Helper_DeserializeMessage(context, global::Google.Cloud.BinaryAuthorization.V1.ValidateAttestationOccurrenceRequest.Parser));
    [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
    static readonly grpc::Marshaller<global::Google.Cloud.BinaryAuthorization.V1.ValidateAttestationOccurrenceResponse> __Marshaller_google_cloud_binaryauthorization_v1_ValidateAttestationOccurrenceResponse = grpc::Marshallers.Create(__Helper_SerializeMessage, context => __Helper_DeserializeMessage(context, global::Google.Cloud.BinaryAuthorization.V1.ValidateAttestationOccurrenceResponse.Parser));

    [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
    static readonly grpc::Method<global::Google.Cloud.BinaryAuthorization.V1.ValidateAttestationOccurrenceRequest, global::Google.Cloud.BinaryAuthorization.V1.ValidateAttestationOccurrenceResponse> __Method_ValidateAttestationOccurrence = new grpc::Method<global::Google.Cloud.BinaryAuthorization.V1.ValidateAttestationOccurrenceRequest, global::Google.Cloud.BinaryAuthorization.V1.ValidateAttestationOccurrenceResponse>(
        grpc::MethodType.Unary,
        __ServiceName,
        "ValidateAttestationOccurrence",
        __Marshaller_google_cloud_binaryauthorization_v1_ValidateAttestationOccurrenceRequest,
        __Marshaller_google_cloud_binaryauthorization_v1_ValidateAttestationOccurrenceResponse);

    /// Service descriptor
    public static global::Google.Protobuf.Reflection.ServiceDescriptor Descriptor
    {
      get { return global::Google.Cloud.BinaryAuthorization.V1.ServiceReflection.Descriptor.Services[2]; }
    }

    /// Base class for server-side implementations of ValidationHelperV1
    [grpc::BindServiceMethod(typeof(ValidationHelperV1), "BindService")]
    public abstract partial class ValidationHelperV1Base
    {
      ///
      /// Returns whether the given Attestation for the given image URI
      /// was signed by the given Attestor
      ///
      /// <param name="request">The request received from the client.</param>
      /// <param name="context">The context of the server-side call handler being invoked.</param>
      /// <returns>The response to send back to the client (wrapped by a task).</returns>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public virtual global::System.Threading.Tasks.Task<global::Google.Cloud.BinaryAuthorization.V1.ValidateAttestationOccurrenceResponse> ValidateAttestationOccurrence(global::Google.Cloud.BinaryAuthorization.V1.ValidateAttestationOccurrenceRequest request, grpc::ServerCallContext context)
      {
        throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, ""));
      }

    }

    /// Client for ValidationHelperV1
    public partial class ValidationHelperV1Client : grpc::ClientBase<ValidationHelperV1Client>
    {
      /// Creates a new client for ValidationHelperV1
      /// <param name="channel">The channel to use to make remote calls.</param>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public ValidationHelperV1Client(grpc::ChannelBase channel) : base(channel)
      {
      }
      /// Creates a new client for ValidationHelperV1 that uses a custom <c>CallInvoker</c>.
      /// <param name="callInvoker">The callInvoker to use to make remote calls.</param>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public ValidationHelperV1Client(grpc::CallInvoker callInvoker) : base(callInvoker)
      {
      }
      /// Protected parameterless constructor to allow creation of test doubles.
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      protected ValidationHelperV1Client() : base()
      {
      }
      /// Protected constructor to allow creation of configured clients.
      /// <param name="configuration">The client configuration.</param>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      protected ValidationHelperV1Client(ClientBaseConfiguration configuration) : base(configuration)
      {
      }

      ///
      /// Returns whether the given Attestation for the given image URI
      /// was signed by the given Attestor
      ///
      /// <param name="request">The request to send to the server.</param>
      /// <param name="headers">The initial metadata to send with the call. This parameter is optional.</param>
      /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
      /// <param name="cancellationToken">An optional token for canceling the call.</param>
      /// <returns>The response received from the server.</returns>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public virtual global::Google.Cloud.BinaryAuthorization.V1.ValidateAttestationOccurrenceResponse ValidateAttestationOccurrence(global::Google.Cloud.BinaryAuthorization.V1.ValidateAttestationOccurrenceRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, global::System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken))
      {
        return ValidateAttestationOccurrence(request, new grpc::CallOptions(headers, deadline, cancellationToken));
      }
      ///
      /// Returns whether the given Attestation for the given image URI
      /// was signed by the given Attestor
      ///
      /// <param name="request">The request to send to the server.</param>
      /// <param name="options">The options for the call.</param>
      /// <returns>The response received from the server.</returns>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public virtual global::Google.Cloud.BinaryAuthorization.V1.ValidateAttestationOccurrenceResponse ValidateAttestationOccurrence(global::Google.Cloud.BinaryAuthorization.V1.ValidateAttestationOccurrenceRequest request, grpc::CallOptions options)
      {
        return CallInvoker.BlockingUnaryCall(__Method_ValidateAttestationOccurrence, null, options, request);
      }
      ///
      /// Returns whether the given Attestation for the given image URI
      /// was signed by the given Attestor
      ///
      /// <param name="request">The request to send to the server.</param>
      /// <param name="headers">The initial metadata to send with the call. This parameter is optional.</param>
      /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
      /// <param name="cancellationToken">An optional token for canceling the call.</param>
      /// <returns>The call object.</returns>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.BinaryAuthorization.V1.ValidateAttestationOccurrenceResponse> ValidateAttestationOccurrenceAsync(global::Google.Cloud.BinaryAuthorization.V1.ValidateAttestationOccurrenceRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, global::System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken))
      {
        return ValidateAttestationOccurrenceAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
      }
      ///
      /// Returns whether the given Attestation for the given image URI
      /// was signed by the given Attestor
      ///
      /// <param name="request">The request to send to the server.</param>
      /// <param name="options">The options for the call.</param>
      /// <returns>The call object.</returns>
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.BinaryAuthorization.V1.ValidateAttestationOccurrenceResponse> ValidateAttestationOccurrenceAsync(global::Google.Cloud.BinaryAuthorization.V1.ValidateAttestationOccurrenceRequest request, grpc::CallOptions options)
      {
        return CallInvoker.AsyncUnaryCall(__Method_ValidateAttestationOccurrence, null, options, request);
      }
      /// Creates a new instance of client from given <c>ClientBaseConfiguration</c>.
      [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
      protected override ValidationHelperV1Client NewInstance(ClientBaseConfiguration configuration)
      {
        return new ValidationHelperV1Client(configuration);
      }
    }

    /// Creates service definition that can be registered with a server
    /// <param name="serviceImpl">An object implementing the server-side handling logic.</param>
    [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
    public static grpc::ServerServiceDefinition BindService(ValidationHelperV1Base serviceImpl)
    {
      return grpc::ServerServiceDefinition.CreateBuilder()
          .AddMethod(__Method_ValidateAttestationOccurrence, serviceImpl.ValidateAttestationOccurrence).Build();
    }

    /// Register service method with a service binder with or without implementation. Useful when customizing the service binding logic.
    /// Note: this method is part of an experimental API that can change or be removed without any prior notice.
    /// <param name="serviceBinder">Service methods will be bound by calling <c>AddMethod</c> on this object.</param>
    /// <param name="serviceImpl">An object implementing the server-side handling logic.</param>
    [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)]
    public static void BindService(grpc::ServiceBinderBase serviceBinder, ValidationHelperV1Base serviceImpl)
    {
      serviceBinder.AddMethod(__Method_ValidateAttestationOccurrence, serviceImpl == null ? null : new grpc::UnaryServerMethod<global::Google.Cloud.BinaryAuthorization.V1.ValidateAttestationOccurrenceRequest, global::Google.Cloud.BinaryAuthorization.V1.ValidateAttestationOccurrenceResponse>(serviceImpl.ValidateAttestationOccurrence));
    }

  }
}
#endregion