// Code generated by sidekick. DO NOT EDIT.
//
// Copyright 2026 Google LLC
//
// 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
//
//     https://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 Foundation
#if canImport(FoundationNetworking)
  import FoundationNetworking
#endif
import GoogleCloudWkt
import GoogleLongRunning
import GoogleRpc
import GoogleCloudGax
import struct Logging.Logger

extension Clients {
  final class GkeHubLogging: GkeHubStub {
    let inner: any GkeHubStub
    let logger: Logger

    public init(_ inner: any GkeHubStub, logger: Logger) {
      var logger = logger
      logger[metadataKey: "gcp.artifact.id"] = "google-cloud-gkehub-v1"
      logger[metadataKey: "gcp.client.service"] = "gkehub"
      logger[metadataKey: "gcp.experimental.swift.client"] = "GkeHub"
      self.inner = inner
      self.logger = logger
    }

    func _intercept<Input, Output>(
      request: Input,
      options: GoogleCloudGax.RequestOptions,
      name: Swift.String,
      action: (Input, GoogleCloudGax.RequestOptions) async throws -> Output,
    ) async throws -> Output {
      var logger = logger
      logger[metadataKey: "gcp.experimental.swift.request.id"] = "\(UUID())"
      logger[metadataKey: "gcp.experimental.swift.method"] = .string(name)
      logger.debug("enter  : \(request) \(options)")
      do {
        let output = try await action(request, options)
        logger.debug("success: \(request) \(options) \(output)")
        return output
      } catch let error {
        logger.debug("error  : \(request) \(options) \(error)")
        throw error
      }
    }

    public func listMemberships(
      request: ListMembershipsRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleCloudGKEHubV1.ListMembershipsResponse {
      try await self._intercept(
        request: request,
        options: options,
        name: "listMemberships",
        action: {
          (r: ListMembershipsRequest, o: GoogleCloudGax.RequestOptions) async throws
            -> GoogleCloudGKEHubV1.ListMembershipsResponse
          in
          return try await self.inner.listMemberships(request: r, options: o)
        })
    }

    public func listBoundMemberships(
      request: ListBoundMembershipsRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleCloudGKEHubV1.ListBoundMembershipsResponse {
      try await self._intercept(
        request: request,
        options: options,
        name: "listBoundMemberships",
        action: {
          (r: ListBoundMembershipsRequest, o: GoogleCloudGax.RequestOptions) async throws
            -> GoogleCloudGKEHubV1.ListBoundMembershipsResponse
          in
          return try await self.inner.listBoundMemberships(request: r, options: o)
        })
    }

    public func listFeatures(
      request: ListFeaturesRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleCloudGKEHubV1.ListFeaturesResponse {
      try await self._intercept(
        request: request,
        options: options,
        name: "listFeatures",
        action: {
          (r: ListFeaturesRequest, o: GoogleCloudGax.RequestOptions) async throws
            -> GoogleCloudGKEHubV1.ListFeaturesResponse
          in
          return try await self.inner.listFeatures(request: r, options: o)
        })
    }

    public func getMembership(
      request: GetMembershipRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleCloudGKEHubV1.Membership {
      try await self._intercept(
        request: request,
        options: options,
        name: "getMembership",
        action: {
          (r: GetMembershipRequest, o: GoogleCloudGax.RequestOptions) async throws
            -> GoogleCloudGKEHubV1.Membership
          in
          return try await self.inner.getMembership(request: r, options: o)
        })
    }

    public func getFeature(
      request: GetFeatureRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleCloudGKEHubV1.Feature {
      try await self._intercept(
        request: request,
        options: options,
        name: "getFeature",
        action: {
          (r: GetFeatureRequest, o: GoogleCloudGax.RequestOptions) async throws
            -> GoogleCloudGKEHubV1.Feature
          in
          return try await self.inner.getFeature(request: r, options: o)
        })
    }

    public func createMembership(
      request: CreateMembershipRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleLongRunning.Operation {
      try await self._intercept(
        request: request,
        options: options,
        name: "createMembership",
        action: {
          (r: CreateMembershipRequest, o: GoogleCloudGax.RequestOptions) async throws
            -> GoogleLongRunning.Operation
          in
          return try await self.inner.createMembership(request: r, options: o)
        })
    }

    public func createFeature(
      request: CreateFeatureRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleLongRunning.Operation {
      try await self._intercept(
        request: request,
        options: options,
        name: "createFeature",
        action: {
          (r: CreateFeatureRequest, o: GoogleCloudGax.RequestOptions) async throws
            -> GoogleLongRunning.Operation
          in
          return try await self.inner.createFeature(request: r, options: o)
        })
    }

    public func deleteMembership(
      request: DeleteMembershipRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleLongRunning.Operation {
      try await self._intercept(
        request: request,
        options: options,
        name: "deleteMembership",
        action: {
          (r: DeleteMembershipRequest, o: GoogleCloudGax.RequestOptions) async throws
            -> GoogleLongRunning.Operation
          in
          return try await self.inner.deleteMembership(request: r, options: o)
        })
    }

    public func deleteFeature(
      request: DeleteFeatureRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleLongRunning.Operation {
      try await self._intercept(
        request: request,
        options: options,
        name: "deleteFeature",
        action: {
          (r: DeleteFeatureRequest, o: GoogleCloudGax.RequestOptions) async throws
            -> GoogleLongRunning.Operation
          in
          return try await self.inner.deleteFeature(request: r, options: o)
        })
    }

    public func updateMembership(
      request: UpdateMembershipRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleLongRunning.Operation {
      try await self._intercept(
        request: request,
        options: options,
        name: "updateMembership",
        action: {
          (r: UpdateMembershipRequest, o: GoogleCloudGax.RequestOptions) async throws
            -> GoogleLongRunning.Operation
          in
          return try await self.inner.updateMembership(request: r, options: o)
        })
    }

    public func updateFeature(
      request: UpdateFeatureRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleLongRunning.Operation {
      try await self._intercept(
        request: request,
        options: options,
        name: "updateFeature",
        action: {
          (r: UpdateFeatureRequest, o: GoogleCloudGax.RequestOptions) async throws
            -> GoogleLongRunning.Operation
          in
          return try await self.inner.updateFeature(request: r, options: o)
        })
    }

    public func generateConnectManifest(
      request: GenerateConnectManifestRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleCloudGKEHubV1.GenerateConnectManifestResponse {
      try await self._intercept(
        request: request,
        options: options,
        name: "generateConnectManifest",
        action: {
          (r: GenerateConnectManifestRequest, o: GoogleCloudGax.RequestOptions) async throws
            -> GoogleCloudGKEHubV1.GenerateConnectManifestResponse
          in
          return try await self.inner.generateConnectManifest(request: r, options: o)
        })
    }

    public func createFleet(
      request: CreateFleetRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleLongRunning.Operation {
      try await self._intercept(
        request: request,
        options: options,
        name: "createFleet",
        action: {
          (r: CreateFleetRequest, o: GoogleCloudGax.RequestOptions) async throws
            -> GoogleLongRunning.Operation
          in
          return try await self.inner.createFleet(request: r, options: o)
        })
    }

    public func getFleet(
      request: GetFleetRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleCloudGKEHubV1.Fleet {
      try await self._intercept(
        request: request,
        options: options,
        name: "getFleet",
        action: {
          (r: GetFleetRequest, o: GoogleCloudGax.RequestOptions) async throws
            -> GoogleCloudGKEHubV1.Fleet
          in
          return try await self.inner.getFleet(request: r, options: o)
        })
    }

    public func updateFleet(
      request: UpdateFleetRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleLongRunning.Operation {
      try await self._intercept(
        request: request,
        options: options,
        name: "updateFleet",
        action: {
          (r: UpdateFleetRequest, o: GoogleCloudGax.RequestOptions) async throws
            -> GoogleLongRunning.Operation
          in
          return try await self.inner.updateFleet(request: r, options: o)
        })
    }

    public func deleteFleet(
      request: DeleteFleetRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleLongRunning.Operation {
      try await self._intercept(
        request: request,
        options: options,
        name: "deleteFleet",
        action: {
          (r: DeleteFleetRequest, o: GoogleCloudGax.RequestOptions) async throws
            -> GoogleLongRunning.Operation
          in
          return try await self.inner.deleteFleet(request: r, options: o)
        })
    }

    public func listFleets(
      request: ListFleetsRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleCloudGKEHubV1.ListFleetsResponse {
      try await self._intercept(
        request: request,
        options: options,
        name: "listFleets",
        action: {
          (r: ListFleetsRequest, o: GoogleCloudGax.RequestOptions) async throws
            -> GoogleCloudGKEHubV1.ListFleetsResponse
          in
          return try await self.inner.listFleets(request: r, options: o)
        })
    }

    public func getScopeNamespace(
      request: GetScopeNamespaceRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleCloudGKEHubV1.Namespace {
      try await self._intercept(
        request: request,
        options: options,
        name: "getScopeNamespace",
        action: {
          (r: GetScopeNamespaceRequest, o: GoogleCloudGax.RequestOptions) async throws
            -> GoogleCloudGKEHubV1.Namespace
          in
          return try await self.inner.getScopeNamespace(request: r, options: o)
        })
    }

    public func createScopeNamespace(
      request: CreateScopeNamespaceRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleLongRunning.Operation {
      try await self._intercept(
        request: request,
        options: options,
        name: "createScopeNamespace",
        action: {
          (r: CreateScopeNamespaceRequest, o: GoogleCloudGax.RequestOptions) async throws
            -> GoogleLongRunning.Operation
          in
          return try await self.inner.createScopeNamespace(request: r, options: o)
        })
    }

    public func updateScopeNamespace(
      request: UpdateScopeNamespaceRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleLongRunning.Operation {
      try await self._intercept(
        request: request,
        options: options,
        name: "updateScopeNamespace",
        action: {
          (r: UpdateScopeNamespaceRequest, o: GoogleCloudGax.RequestOptions) async throws
            -> GoogleLongRunning.Operation
          in
          return try await self.inner.updateScopeNamespace(request: r, options: o)
        })
    }

    public func deleteScopeNamespace(
      request: DeleteScopeNamespaceRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleLongRunning.Operation {
      try await self._intercept(
        request: request,
        options: options,
        name: "deleteScopeNamespace",
        action: {
          (r: DeleteScopeNamespaceRequest, o: GoogleCloudGax.RequestOptions) async throws
            -> GoogleLongRunning.Operation
          in
          return try await self.inner.deleteScopeNamespace(request: r, options: o)
        })
    }

    public func listScopeNamespaces(
      request: ListScopeNamespacesRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleCloudGKEHubV1.ListScopeNamespacesResponse {
      try await self._intercept(
        request: request,
        options: options,
        name: "listScopeNamespaces",
        action: {
          (r: ListScopeNamespacesRequest, o: GoogleCloudGax.RequestOptions) async throws
            -> GoogleCloudGKEHubV1.ListScopeNamespacesResponse
          in
          return try await self.inner.listScopeNamespaces(request: r, options: o)
        })
    }

    public func getScopeRbacroleBinding(
      request: GetScopeRBACRoleBindingRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleCloudGKEHubV1.RBACRoleBinding {
      try await self._intercept(
        request: request,
        options: options,
        name: "getScopeRbacroleBinding",
        action: {
          (r: GetScopeRBACRoleBindingRequest, o: GoogleCloudGax.RequestOptions) async throws
            -> GoogleCloudGKEHubV1.RBACRoleBinding
          in
          return try await self.inner.getScopeRbacroleBinding(request: r, options: o)
        })
    }

    public func createScopeRbacroleBinding(
      request: CreateScopeRBACRoleBindingRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleLongRunning.Operation {
      try await self._intercept(
        request: request,
        options: options,
        name: "createScopeRbacroleBinding",
        action: {
          (r: CreateScopeRBACRoleBindingRequest, o: GoogleCloudGax.RequestOptions) async throws
            -> GoogleLongRunning.Operation
          in
          return try await self.inner.createScopeRbacroleBinding(request: r, options: o)
        })
    }

    public func updateScopeRbacroleBinding(
      request: UpdateScopeRBACRoleBindingRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleLongRunning.Operation {
      try await self._intercept(
        request: request,
        options: options,
        name: "updateScopeRbacroleBinding",
        action: {
          (r: UpdateScopeRBACRoleBindingRequest, o: GoogleCloudGax.RequestOptions) async throws
            -> GoogleLongRunning.Operation
          in
          return try await self.inner.updateScopeRbacroleBinding(request: r, options: o)
        })
    }

    public func deleteScopeRbacroleBinding(
      request: DeleteScopeRBACRoleBindingRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleLongRunning.Operation {
      try await self._intercept(
        request: request,
        options: options,
        name: "deleteScopeRbacroleBinding",
        action: {
          (r: DeleteScopeRBACRoleBindingRequest, o: GoogleCloudGax.RequestOptions) async throws
            -> GoogleLongRunning.Operation
          in
          return try await self.inner.deleteScopeRbacroleBinding(request: r, options: o)
        })
    }

    public func listScopeRbacroleBindings(
      request: ListScopeRBACRoleBindingsRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleCloudGKEHubV1.ListScopeRBACRoleBindingsResponse {
      try await self._intercept(
        request: request,
        options: options,
        name: "listScopeRbacroleBindings",
        action: {
          (r: ListScopeRBACRoleBindingsRequest, o: GoogleCloudGax.RequestOptions) async throws
            -> GoogleCloudGKEHubV1.ListScopeRBACRoleBindingsResponse
          in
          return try await self.inner.listScopeRbacroleBindings(request: r, options: o)
        })
    }

    public func getScope(
      request: GetScopeRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleCloudGKEHubV1.Scope {
      try await self._intercept(
        request: request,
        options: options,
        name: "getScope",
        action: {
          (r: GetScopeRequest, o: GoogleCloudGax.RequestOptions) async throws
            -> GoogleCloudGKEHubV1.Scope
          in
          return try await self.inner.getScope(request: r, options: o)
        })
    }

    public func createScope(
      request: CreateScopeRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleLongRunning.Operation {
      try await self._intercept(
        request: request,
        options: options,
        name: "createScope",
        action: {
          (r: CreateScopeRequest, o: GoogleCloudGax.RequestOptions) async throws
            -> GoogleLongRunning.Operation
          in
          return try await self.inner.createScope(request: r, options: o)
        })
    }

    public func updateScope(
      request: UpdateScopeRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleLongRunning.Operation {
      try await self._intercept(
        request: request,
        options: options,
        name: "updateScope",
        action: {
          (r: UpdateScopeRequest, o: GoogleCloudGax.RequestOptions) async throws
            -> GoogleLongRunning.Operation
          in
          return try await self.inner.updateScope(request: r, options: o)
        })
    }

    public func deleteScope(
      request: DeleteScopeRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleLongRunning.Operation {
      try await self._intercept(
        request: request,
        options: options,
        name: "deleteScope",
        action: {
          (r: DeleteScopeRequest, o: GoogleCloudGax.RequestOptions) async throws
            -> GoogleLongRunning.Operation
          in
          return try await self.inner.deleteScope(request: r, options: o)
        })
    }

    public func listScopes(
      request: ListScopesRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleCloudGKEHubV1.ListScopesResponse {
      try await self._intercept(
        request: request,
        options: options,
        name: "listScopes",
        action: {
          (r: ListScopesRequest, o: GoogleCloudGax.RequestOptions) async throws
            -> GoogleCloudGKEHubV1.ListScopesResponse
          in
          return try await self.inner.listScopes(request: r, options: o)
        })
    }

    public func listPermittedScopes(
      request: ListPermittedScopesRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleCloudGKEHubV1.ListPermittedScopesResponse {
      try await self._intercept(
        request: request,
        options: options,
        name: "listPermittedScopes",
        action: {
          (r: ListPermittedScopesRequest, o: GoogleCloudGax.RequestOptions) async throws
            -> GoogleCloudGKEHubV1.ListPermittedScopesResponse
          in
          return try await self.inner.listPermittedScopes(request: r, options: o)
        })
    }

    public func getMembershipBinding(
      request: GetMembershipBindingRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleCloudGKEHubV1.MembershipBinding {
      try await self._intercept(
        request: request,
        options: options,
        name: "getMembershipBinding",
        action: {
          (r: GetMembershipBindingRequest, o: GoogleCloudGax.RequestOptions) async throws
            -> GoogleCloudGKEHubV1.MembershipBinding
          in
          return try await self.inner.getMembershipBinding(request: r, options: o)
        })
    }

    public func createMembershipBinding(
      request: CreateMembershipBindingRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleLongRunning.Operation {
      try await self._intercept(
        request: request,
        options: options,
        name: "createMembershipBinding",
        action: {
          (r: CreateMembershipBindingRequest, o: GoogleCloudGax.RequestOptions) async throws
            -> GoogleLongRunning.Operation
          in
          return try await self.inner.createMembershipBinding(request: r, options: o)
        })
    }

    public func updateMembershipBinding(
      request: UpdateMembershipBindingRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleLongRunning.Operation {
      try await self._intercept(
        request: request,
        options: options,
        name: "updateMembershipBinding",
        action: {
          (r: UpdateMembershipBindingRequest, o: GoogleCloudGax.RequestOptions) async throws
            -> GoogleLongRunning.Operation
          in
          return try await self.inner.updateMembershipBinding(request: r, options: o)
        })
    }

    public func deleteMembershipBinding(
      request: DeleteMembershipBindingRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleLongRunning.Operation {
      try await self._intercept(
        request: request,
        options: options,
        name: "deleteMembershipBinding",
        action: {
          (r: DeleteMembershipBindingRequest, o: GoogleCloudGax.RequestOptions) async throws
            -> GoogleLongRunning.Operation
          in
          return try await self.inner.deleteMembershipBinding(request: r, options: o)
        })
    }

    public func listMembershipBindings(
      request: ListMembershipBindingsRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleCloudGKEHubV1.ListMembershipBindingsResponse {
      try await self._intercept(
        request: request,
        options: options,
        name: "listMembershipBindings",
        action: {
          (r: ListMembershipBindingsRequest, o: GoogleCloudGax.RequestOptions) async throws
            -> GoogleCloudGKEHubV1.ListMembershipBindingsResponse
          in
          return try await self.inner.listMembershipBindings(request: r, options: o)
        })
    }

    public func getMembershipRbacroleBinding(
      request: GetMembershipRBACRoleBindingRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleCloudGKEHubV1.RBACRoleBinding {
      try await self._intercept(
        request: request,
        options: options,
        name: "getMembershipRbacroleBinding",
        action: {
          (r: GetMembershipRBACRoleBindingRequest, o: GoogleCloudGax.RequestOptions) async throws
            -> GoogleCloudGKEHubV1.RBACRoleBinding
          in
          return try await self.inner.getMembershipRbacroleBinding(request: r, options: o)
        })
    }

    public func createMembershipRbacroleBinding(
      request: CreateMembershipRBACRoleBindingRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleLongRunning.Operation {
      try await self._intercept(
        request: request,
        options: options,
        name: "createMembershipRbacroleBinding",
        action: {
          (r: CreateMembershipRBACRoleBindingRequest, o: GoogleCloudGax.RequestOptions) async throws
            -> GoogleLongRunning.Operation
          in
          return try await self.inner.createMembershipRbacroleBinding(request: r, options: o)
        })
    }

    public func updateMembershipRbacroleBinding(
      request: UpdateMembershipRBACRoleBindingRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleLongRunning.Operation {
      try await self._intercept(
        request: request,
        options: options,
        name: "updateMembershipRbacroleBinding",
        action: {
          (r: UpdateMembershipRBACRoleBindingRequest, o: GoogleCloudGax.RequestOptions) async throws
            -> GoogleLongRunning.Operation
          in
          return try await self.inner.updateMembershipRbacroleBinding(request: r, options: o)
        })
    }

    public func deleteMembershipRbacroleBinding(
      request: DeleteMembershipRBACRoleBindingRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleLongRunning.Operation {
      try await self._intercept(
        request: request,
        options: options,
        name: "deleteMembershipRbacroleBinding",
        action: {
          (r: DeleteMembershipRBACRoleBindingRequest, o: GoogleCloudGax.RequestOptions) async throws
            -> GoogleLongRunning.Operation
          in
          return try await self.inner.deleteMembershipRbacroleBinding(request: r, options: o)
        })
    }

    public func listMembershipRbacroleBindings(
      request: ListMembershipRBACRoleBindingsRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleCloudGKEHubV1.ListMembershipRBACRoleBindingsResponse {
      try await self._intercept(
        request: request,
        options: options,
        name: "listMembershipRbacroleBindings",
        action: {
          (r: ListMembershipRBACRoleBindingsRequest, o: GoogleCloudGax.RequestOptions) async throws
            -> GoogleCloudGKEHubV1.ListMembershipRBACRoleBindingsResponse
          in
          return try await self.inner.listMembershipRbacroleBindings(request: r, options: o)
        })
    }

    public func generateMembershipRbacroleBindingYaml(
      request: GenerateMembershipRBACRoleBindingYAMLRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleCloudGKEHubV1.GenerateMembershipRBACRoleBindingYAMLResponse {
      try await self._intercept(
        request: request,
        options: options,
        name: "generateMembershipRbacroleBindingYaml",
        action: {
          (r: GenerateMembershipRBACRoleBindingYAMLRequest, o: GoogleCloudGax.RequestOptions)
            async throws -> GoogleCloudGKEHubV1.GenerateMembershipRBACRoleBindingYAMLResponse
          in
          return try await self.inner.generateMembershipRbacroleBindingYaml(request: r, options: o)
        })
    }

    public func listOperations(
      request: GoogleLongRunning.ListOperationsRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleLongRunning.ListOperationsResponse {
      try await self._intercept(
        request: request,
        options: options,
        name: "listOperations",
        action: {
          (r: GoogleLongRunning.ListOperationsRequest, o: GoogleCloudGax.RequestOptions)
            async throws -> GoogleLongRunning.ListOperationsResponse
          in
          return try await self.inner.listOperations(request: r, options: o)
        })
    }

    public func getOperation(
      request: GoogleLongRunning.GetOperationRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleLongRunning.Operation {
      try await self._intercept(
        request: request,
        options: options,
        name: "getOperation",
        action: {
          (r: GoogleLongRunning.GetOperationRequest, o: GoogleCloudGax.RequestOptions) async throws
            -> GoogleLongRunning.Operation
          in
          return try await self.inner.getOperation(request: r, options: o)
        })
    }

    public func deleteOperation(
      request: GoogleLongRunning.DeleteOperationRequest, options: GoogleCloudGax.RequestOptions
    ) async throws {
      try await self._intercept(
        request: request,
        options: options,
        name: "deleteOperation",
        action: {
          (r: GoogleLongRunning.DeleteOperationRequest, o: GoogleCloudGax.RequestOptions)
            async throws -> Void in
          return try await self.inner.deleteOperation(request: r, options: o)
        })
    }

    public func cancelOperation(
      request: GoogleLongRunning.CancelOperationRequest, options: GoogleCloudGax.RequestOptions
    ) async throws {
      try await self._intercept(
        request: request,
        options: options,
        name: "cancelOperation",
        action: {
          (r: GoogleLongRunning.CancelOperationRequest, o: GoogleCloudGax.RequestOptions)
            async throws -> Void in
          return try await self.inner.cancelOperation(request: r, options: o)
        })
    }
  }
}
