// 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 GoogleApi
import GoogleCloudWkt
import GoogleCloudGax

///
/// Lakehouse runtime catalog supports the following catalog management methods:
/// - GetIcebergCatalog
/// - ListIcebergCatalogs
/// - DeleteIcebergCatalog
/// - UpdateIcebergCatalog
/// - CreateIcebergCatalog
/// - FailoverIcebergCatalog
///
/// @Snippet(path: "IcebergCatalogServiceQuickstart")
public class IcebergCatalogServiceClient: Clients.IcebergCatalogServiceProtocol {
  let inner: any Clients.IcebergCatalogServiceStub

  /// Creates a new `IcebergCatalogServiceClient` instance.
  public init(_ options: GoogleCloudGax.ClientOptions = .init()) throws {
    var inner: any Clients.IcebergCatalogServiceStub = try Clients.IcebergCatalogServiceTransport(
      options)
    inner = Clients.IcebergCatalogServiceRetry(inner, options: options)
    if let logger = options.logger {
      inner = Clients.IcebergCatalogServiceLogging(inner, logger: logger)
    }
    self.inner = inner
  }

  /// GetIcebergCatalogConfig lists all catalog configuration settings. Most
  /// importantly it contains the optional `endpoints` field which lists what
  /// methods this catalog supports, since we are not supporting all the methods
  /// right now.
  /// It returns all the methods defined in this service (subject to project
  /// config allowlisting).
  ///
  /// This is not a GCP resource.
  ///
  /// @Snippet(path: "IcebergCatalogService_GetIcebergCatalogConfig")
  public func getIcebergCatalogConfig(
    request: GetIcebergCatalogConfigRequest, options: GoogleCloudGax.RequestOptions
  ) async throws -> GoogleCloudBiglakeV1.IcebergCatalogConfig {
    try await self.inner.getIcebergCatalogConfig(request: request, options: options)
  }

  /// Lists Iceberg namespaces in the catalog. We only support one level of
  /// nesting for namespaces.
  ///
  /// @Snippet(path: "IcebergCatalogService_ListIcebergNamespaces")
  public func listIcebergNamespaces(
    request: ListIcebergNamespacesRequest, options: GoogleCloudGax.RequestOptions
  ) async throws -> GoogleCloudBiglakeV1.ListIcebergNamespacesResponse {
    try await self.inner.listIcebergNamespaces(request: request, options: options)
  }

  /// Gets an Iceberg namespace in the catalog (or checks if it exists, if the
  /// method is HEAD).
  ///
  /// @Snippet(path: "IcebergCatalogService_GetIcebergNamespace")
  public func getIcebergNamespace(
    request: GetIcebergNamespaceRequest, options: GoogleCloudGax.RequestOptions
  ) async throws -> GoogleCloudBiglakeV1.IcebergNamespace {
    try await self.inner.getIcebergNamespace(request: request, options: options)
  }

  /// Creates a namespace in the catalog.
  ///
  /// @Snippet(path: "IcebergCatalogService_CreateIcebergNamespace")
  public func createIcebergNamespace(
    request: CreateIcebergNamespaceRequest, options: GoogleCloudGax.RequestOptions
  ) async throws -> GoogleCloudBiglakeV1.IcebergNamespace {
    try await self.inner.createIcebergNamespace(request: request, options: options)
  }

  /// Returns 204, not 200 on success.
  ///
  /// @Snippet(path: "IcebergCatalogService_DeleteIcebergNamespace")
  public func deleteIcebergNamespace(
    request: DeleteIcebergNamespaceRequest, options: GoogleCloudGax.RequestOptions
  ) async throws {
    try await self.inner.deleteIcebergNamespace(request: request, options: options)
  }

  /// Updates namespace properties.
  ///
  /// @Snippet(path: "IcebergCatalogService_UpdateIcebergNamespace")
  public func updateIcebergNamespace(
    request: UpdateIcebergNamespaceRequest, options: GoogleCloudGax.RequestOptions
  ) async throws -> GoogleCloudBiglakeV1.UpdateIcebergNamespaceResponse {
    try await self.inner.updateIcebergNamespace(request: request, options: options)
  }

  /// Lists table identifiers (not *tables*) in the namespace.
  ///
  /// @Snippet(path: "IcebergCatalogService_ListIcebergTableIdentifiers")
  public func listIcebergTableIdentifiers(
    request: ListIcebergTableIdentifiersRequest, options: GoogleCloudGax.RequestOptions
  ) async throws -> GoogleCloudBiglakeV1.ListIcebergTableIdentifiersResponse {
    try await self.inner.listIcebergTableIdentifiers(request: request, options: options)
  }

  /// Creates a table in the namespace.
  ///
  /// @Snippet(path: "IcebergCatalogService_CreateIcebergTable")
  public func createIcebergTable(
    request: CreateIcebergTableRequest, options: GoogleCloudGax.RequestOptions
  ) async throws -> GoogleApi.HttpBody {
    try await self.inner.createIcebergTable(request: request, options: options)
  }

  /// Deletes a table in the namespace.
  ///
  /// @Snippet(path: "IcebergCatalogService_DeleteIcebergTable")
  public func deleteIcebergTable(
    request: DeleteIcebergTableRequest, options: GoogleCloudGax.RequestOptions
  ) async throws {
    try await self.inner.deleteIcebergTable(request: request, options: options)
  }

  /// Gets a table in the namespace.
  ///
  /// @Snippet(path: "IcebergCatalogService_GetIcebergTable")
  public func getIcebergTable(
    request: GetIcebergTableRequest, options: GoogleCloudGax.RequestOptions
  ) async throws -> GoogleApi.HttpBody {
    try await self.inner.getIcebergTable(request: request, options: options)
  }

  /// Loads credentials for a table in the namespace.
  ///
  /// @Snippet(path: "IcebergCatalogService_LoadIcebergTableCredentials")
  public func loadIcebergTableCredentials(
    request: GetIcebergTableRequest, options: GoogleCloudGax.RequestOptions
  ) async throws -> GoogleCloudBiglakeV1.LoadIcebergTableCredentialsResponse {
    try await self.inner.loadIcebergTableCredentials(request: request, options: options)
  }

  /// This is CommitTable Iceberg API, which maps to `UpdateIcebergTable` in the
  /// Google API nomenclature.
  ///
  /// @Snippet(path: "IcebergCatalogService_UpdateIcebergTable")
  public func updateIcebergTable(
    request: UpdateIcebergTableRequest, options: GoogleCloudGax.RequestOptions
  ) async throws -> GoogleApi.HttpBody {
    try await self.inner.updateIcebergTable(request: request, options: options)
  }

  /// Register a table using given metadata file location.
  ///
  /// @Snippet(path: "IcebergCatalogService_RegisterIcebergTable")
  public func registerIcebergTable(
    request: RegisterIcebergTableRequest, options: GoogleCloudGax.RequestOptions
  ) async throws -> GoogleApi.HttpBody {
    try await self.inner.registerIcebergTable(request: request, options: options)
  }

  /// Reports a metrics report for a table.
  ///
  /// @Snippet(path: "IcebergCatalogService_ReportIcebergTableMetrics")
  public func reportIcebergTableMetrics(
    request: ReportIcebergTableMetricsRequest, options: GoogleCloudGax.RequestOptions
  ) async throws {
    try await self.inner.reportIcebergTableMetrics(request: request, options: options)
  }

  /// Returns the Iceberg REST Catalog configuration options.
  ///
  /// @Snippet(path: "IcebergCatalogService_GetIcebergCatalog")
  public func getIcebergCatalog(
    request: GetIcebergCatalogRequest, options: GoogleCloudGax.RequestOptions
  ) async throws -> GoogleCloudBiglakeV1.IcebergCatalog {
    try await self.inner.getIcebergCatalog(request: request, options: options)
  }

  /// Lists the Iceberg REST Catalogs.
  ///
  /// @Snippet(path: "IcebergCatalogService_ListIcebergCatalogs")
  public func listIcebergCatalogs(
    request: ListIcebergCatalogsRequest, options: GoogleCloudGax.RequestOptions
  ) async throws -> GoogleCloudBiglakeV1.ListIcebergCatalogsResponse {
    try await self.inner.listIcebergCatalogs(request: request, options: options)
  }

  /// Deletes the Iceberg REST Catalog.
  /// Delete does not delete a catalog that has contents -- at least one
  /// namespace.
  ///
  /// Delete is not supported for all catalog types.
  ///
  /// @Snippet(path: "IcebergCatalogService_DeleteIcebergCatalog")
  public func deleteIcebergCatalog(
    request: DeleteIcebergCatalogRequest, options: GoogleCloudGax.RequestOptions
  ) async throws {
    try await self.inner.deleteIcebergCatalog(request: request, options: options)
  }

  /// Update the Iceberg REST Catalog configuration options.
  ///
  /// @Snippet(path: "IcebergCatalogService_UpdateIcebergCatalog")
  public func updateIcebergCatalog(
    request: UpdateIcebergCatalogRequest, options: GoogleCloudGax.RequestOptions
  ) async throws -> GoogleCloudBiglakeV1.IcebergCatalog {
    try await self.inner.updateIcebergCatalog(request: request, options: options)
  }

  /// Creates the Iceberg REST Catalog.
  /// Google Cloud Storage Bucket catalog id is the bucket for which the
  /// catalog is created (e.g. `my-catalog` for `gs://my-catalog`).
  ///
  /// If the bucket does not exist, of the caller does not have bucket metadata
  /// permissions, the catalog will not be created.
  ///
  /// @Snippet(path: "IcebergCatalogService_CreateIcebergCatalog")
  public func createIcebergCatalog(
    request: CreateIcebergCatalogRequest, options: GoogleCloudGax.RequestOptions
  ) async throws -> GoogleCloudBiglakeV1.IcebergCatalog {
    try await self.inner.createIcebergCatalog(request: request, options: options)
  }

  /// Failover the catalog to a new primary replica region.
  ///
  /// @Snippet(path: "IcebergCatalogService_FailoverIcebergCatalog")
  public func failoverIcebergCatalog(
    request: FailoverIcebergCatalogRequest, options: GoogleCloudGax.RequestOptions
  ) async throws -> GoogleCloudBiglakeV1.FailoverIcebergCatalogResponse {
    try await self.inner.failoverIcebergCatalog(request: request, options: options)
  }
}

extension Clients {
  /// A Swift protocol to mock `IcebergCatalogServiceClient`.
  ///
  /// To mock `IcebergCatalogServiceClient` change your functions to receive
  /// `some IcebergCatalogServiceProtocol` or `any IcebergCatalogServiceProtocol`
  /// and pass a mock implementation in your tests.
  public protocol IcebergCatalogServiceProtocol {
    /// See `IcebergCatalogServiceClient.getIcebergCatalogConfig`.
    func getIcebergCatalogConfig(request: GetIcebergCatalogConfigRequest) async throws
      -> GoogleCloudBiglakeV1.IcebergCatalogConfig

    /// See `IcebergCatalogServiceClient.listIcebergNamespaces`.
    func listIcebergNamespaces(request: ListIcebergNamespacesRequest) async throws
      -> GoogleCloudBiglakeV1.ListIcebergNamespacesResponse

    /// See `IcebergCatalogServiceClient.listIcebergNamespaces`.
    func listIcebergNamespaces(
      apiParent: Swift.String,
    ) async throws -> GoogleCloudBiglakeV1.ListIcebergNamespacesResponse

    /// See `IcebergCatalogServiceClient.getIcebergNamespace`.
    func getIcebergNamespace(request: GetIcebergNamespaceRequest) async throws
      -> GoogleCloudBiglakeV1.IcebergNamespace

    /// See `IcebergCatalogServiceClient.getIcebergNamespace`.
    func getIcebergNamespace(
      name: Swift.String,
    ) async throws -> GoogleCloudBiglakeV1.IcebergNamespace

    /// See `IcebergCatalogServiceClient.createIcebergNamespace`.
    func createIcebergNamespace(request: CreateIcebergNamespaceRequest) async throws
      -> GoogleCloudBiglakeV1.IcebergNamespace

    /// See `IcebergCatalogServiceClient.createIcebergNamespace`.
    func createIcebergNamespace(
      parent: Swift.String,
      icebergNamespace: IcebergNamespace?,
    ) async throws -> GoogleCloudBiglakeV1.IcebergNamespace

    /// See `IcebergCatalogServiceClient.deleteIcebergNamespace`.
    func deleteIcebergNamespace(request: DeleteIcebergNamespaceRequest) async throws

    /// See `IcebergCatalogServiceClient.deleteIcebergNamespace`.
    func deleteIcebergNamespace(
      name: Swift.String,
    ) async throws

    /// See `IcebergCatalogServiceClient.updateIcebergNamespace`.
    func updateIcebergNamespace(request: UpdateIcebergNamespaceRequest) async throws
      -> GoogleCloudBiglakeV1.UpdateIcebergNamespaceResponse

    /// See `IcebergCatalogServiceClient.listIcebergTableIdentifiers`.
    func listIcebergTableIdentifiers(request: ListIcebergTableIdentifiersRequest) async throws
      -> GoogleCloudBiglakeV1.ListIcebergTableIdentifiersResponse

    /// See `IcebergCatalogServiceClient.listIcebergTableIdentifiers`.
    func listIcebergTableIdentifiers(
      parent: Swift.String,
    ) async throws -> GoogleCloudBiglakeV1.ListIcebergTableIdentifiersResponse

    /// See `IcebergCatalogServiceClient.createIcebergTable`.
    func createIcebergTable(request: CreateIcebergTableRequest) async throws -> GoogleApi.HttpBody

    /// See `IcebergCatalogServiceClient.createIcebergTable`.
    func createIcebergTable(
      parent: Swift.String,
    ) async throws -> GoogleApi.HttpBody

    /// See `IcebergCatalogServiceClient.deleteIcebergTable`.
    func deleteIcebergTable(request: DeleteIcebergTableRequest) async throws

    /// See `IcebergCatalogServiceClient.deleteIcebergTable`.
    func deleteIcebergTable(
      name: Swift.String,
    ) async throws

    /// See `IcebergCatalogServiceClient.getIcebergTable`.
    func getIcebergTable(request: GetIcebergTableRequest) async throws -> GoogleApi.HttpBody

    /// See `IcebergCatalogServiceClient.getIcebergTable`.
    func getIcebergTable(
      name: Swift.String,
      snapshots: Swift.String,
    ) async throws -> GoogleApi.HttpBody

    /// See `IcebergCatalogServiceClient.loadIcebergTableCredentials`.
    func loadIcebergTableCredentials(request: GetIcebergTableRequest) async throws
      -> GoogleCloudBiglakeV1.LoadIcebergTableCredentialsResponse

    /// See `IcebergCatalogServiceClient.loadIcebergTableCredentials`.
    func loadIcebergTableCredentials(
      name: Swift.String,
    ) async throws -> GoogleCloudBiglakeV1.LoadIcebergTableCredentialsResponse

    /// See `IcebergCatalogServiceClient.updateIcebergTable`.
    func updateIcebergTable(request: UpdateIcebergTableRequest) async throws -> GoogleApi.HttpBody

    /// See `IcebergCatalogServiceClient.registerIcebergTable`.
    func registerIcebergTable(request: RegisterIcebergTableRequest) async throws
      -> GoogleApi.HttpBody

    /// See `IcebergCatalogServiceClient.reportIcebergTableMetrics`.
    func reportIcebergTableMetrics(request: ReportIcebergTableMetricsRequest) async throws

    /// See `IcebergCatalogServiceClient.reportIcebergTableMetrics`.
    func reportIcebergTableMetrics(
      name: Swift.String,
    ) async throws

    /// See `IcebergCatalogServiceClient.getIcebergCatalog`.
    func getIcebergCatalog(request: GetIcebergCatalogRequest) async throws
      -> GoogleCloudBiglakeV1.IcebergCatalog

    /// See `IcebergCatalogServiceClient.getIcebergCatalog`.
    func getIcebergCatalog(
      name: Swift.String,
    ) async throws -> GoogleCloudBiglakeV1.IcebergCatalog

    /// See `IcebergCatalogServiceClient.listIcebergCatalogs`.
    func listIcebergCatalogs(request: ListIcebergCatalogsRequest) async throws
      -> GoogleCloudBiglakeV1.ListIcebergCatalogsResponse

    /// See `IcebergCatalogServiceClient.listIcebergCatalogs`.
    func listIcebergCatalogs(
      parent: Swift.String,
    ) async throws -> GoogleCloudBiglakeV1.ListIcebergCatalogsResponse

    /// See `IcebergCatalogServiceClient.deleteIcebergCatalog`.
    func deleteIcebergCatalog(request: DeleteIcebergCatalogRequest) async throws

    /// See `IcebergCatalogServiceClient.deleteIcebergCatalog`.
    func deleteIcebergCatalog(
      name: Swift.String,
    ) async throws

    /// See `IcebergCatalogServiceClient.updateIcebergCatalog`.
    func updateIcebergCatalog(request: UpdateIcebergCatalogRequest) async throws
      -> GoogleCloudBiglakeV1.IcebergCatalog

    /// See `IcebergCatalogServiceClient.updateIcebergCatalog`.
    func updateIcebergCatalog(
      icebergCatalog: IcebergCatalog?,
      updateMask: GoogleCloudWkt.FieldMask?,
    ) async throws -> GoogleCloudBiglakeV1.IcebergCatalog

    /// See `IcebergCatalogServiceClient.createIcebergCatalog`.
    func createIcebergCatalog(request: CreateIcebergCatalogRequest) async throws
      -> GoogleCloudBiglakeV1.IcebergCatalog

    /// See `IcebergCatalogServiceClient.createIcebergCatalog`.
    func createIcebergCatalog(
      parent: Swift.String,
      icebergCatalog: IcebergCatalog?,
      icebergCatalogId: Swift.String,
    ) async throws -> GoogleCloudBiglakeV1.IcebergCatalog

    /// See `IcebergCatalogServiceClient.createIcebergCatalog`.
    func createIcebergCatalog(
      parent: Swift.String,
      icebergCatalog: IcebergCatalog?,
      icebergCatalogId: Swift.String,
      primaryLocation: Swift.String,
    ) async throws -> GoogleCloudBiglakeV1.IcebergCatalog

    /// See `IcebergCatalogServiceClient.failoverIcebergCatalog`.
    func failoverIcebergCatalog(request: FailoverIcebergCatalogRequest) async throws
      -> GoogleCloudBiglakeV1.FailoverIcebergCatalogResponse

    /// See `IcebergCatalogServiceClient.failoverIcebergCatalog`.
    func failoverIcebergCatalog(
      name: Swift.String,
      primaryReplica: Swift.String,
    ) async throws -> GoogleCloudBiglakeV1.FailoverIcebergCatalogResponse

    /// See `IcebergCatalogServiceClient.getIcebergCatalogConfig`.
    func getIcebergCatalogConfig(
      request: GetIcebergCatalogConfigRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleCloudBiglakeV1.IcebergCatalogConfig

    /// See `IcebergCatalogServiceClient.listIcebergNamespaces`.
    func listIcebergNamespaces(
      request: ListIcebergNamespacesRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleCloudBiglakeV1.ListIcebergNamespacesResponse

    /// See `IcebergCatalogServiceClient.getIcebergNamespace`.
    func getIcebergNamespace(
      request: GetIcebergNamespaceRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleCloudBiglakeV1.IcebergNamespace

    /// See `IcebergCatalogServiceClient.createIcebergNamespace`.
    func createIcebergNamespace(
      request: CreateIcebergNamespaceRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleCloudBiglakeV1.IcebergNamespace

    /// See `IcebergCatalogServiceClient.deleteIcebergNamespace`.
    func deleteIcebergNamespace(
      request: DeleteIcebergNamespaceRequest, options: GoogleCloudGax.RequestOptions
    ) async throws

    /// See `IcebergCatalogServiceClient.updateIcebergNamespace`.
    func updateIcebergNamespace(
      request: UpdateIcebergNamespaceRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleCloudBiglakeV1.UpdateIcebergNamespaceResponse

    /// See `IcebergCatalogServiceClient.listIcebergTableIdentifiers`.
    func listIcebergTableIdentifiers(
      request: ListIcebergTableIdentifiersRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleCloudBiglakeV1.ListIcebergTableIdentifiersResponse

    /// See `IcebergCatalogServiceClient.createIcebergTable`.
    func createIcebergTable(
      request: CreateIcebergTableRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleApi.HttpBody

    /// See `IcebergCatalogServiceClient.deleteIcebergTable`.
    func deleteIcebergTable(
      request: DeleteIcebergTableRequest, options: GoogleCloudGax.RequestOptions
    ) async throws

    /// See `IcebergCatalogServiceClient.getIcebergTable`.
    func getIcebergTable(
      request: GetIcebergTableRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleApi.HttpBody

    /// See `IcebergCatalogServiceClient.loadIcebergTableCredentials`.
    func loadIcebergTableCredentials(
      request: GetIcebergTableRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleCloudBiglakeV1.LoadIcebergTableCredentialsResponse

    /// See `IcebergCatalogServiceClient.updateIcebergTable`.
    func updateIcebergTable(
      request: UpdateIcebergTableRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleApi.HttpBody

    /// See `IcebergCatalogServiceClient.registerIcebergTable`.
    func registerIcebergTable(
      request: RegisterIcebergTableRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleApi.HttpBody

    /// See `IcebergCatalogServiceClient.reportIcebergTableMetrics`.
    func reportIcebergTableMetrics(
      request: ReportIcebergTableMetricsRequest, options: GoogleCloudGax.RequestOptions
    ) async throws

    /// See `IcebergCatalogServiceClient.getIcebergCatalog`.
    func getIcebergCatalog(
      request: GetIcebergCatalogRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleCloudBiglakeV1.IcebergCatalog

    /// See `IcebergCatalogServiceClient.listIcebergCatalogs`.
    func listIcebergCatalogs(
      request: ListIcebergCatalogsRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleCloudBiglakeV1.ListIcebergCatalogsResponse

    /// See `IcebergCatalogServiceClient.deleteIcebergCatalog`.
    func deleteIcebergCatalog(
      request: DeleteIcebergCatalogRequest, options: GoogleCloudGax.RequestOptions
    ) async throws

    /// See `IcebergCatalogServiceClient.updateIcebergCatalog`.
    func updateIcebergCatalog(
      request: UpdateIcebergCatalogRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleCloudBiglakeV1.IcebergCatalog

    /// See `IcebergCatalogServiceClient.createIcebergCatalog`.
    func createIcebergCatalog(
      request: CreateIcebergCatalogRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleCloudBiglakeV1.IcebergCatalog

    /// See `IcebergCatalogServiceClient.failoverIcebergCatalog`.
    func failoverIcebergCatalog(
      request: FailoverIcebergCatalogRequest, options: GoogleCloudGax.RequestOptions
    ) async throws -> GoogleCloudBiglakeV1.FailoverIcebergCatalogResponse
  }
}

// Default implementations
extension Clients.IcebergCatalogServiceProtocol {
  public func getIcebergCatalogConfig(request: GetIcebergCatalogConfigRequest) async throws
    -> GoogleCloudBiglakeV1.IcebergCatalogConfig
  {
    try await self.getIcebergCatalogConfig(request: request, options: .init())
  }

  public func getIcebergCatalogConfig(
    request: GetIcebergCatalogConfigRequest, options: GoogleCloudGax.RequestOptions
  ) async throws -> GoogleCloudBiglakeV1.IcebergCatalogConfig {
    throw GoogleCloudGax.RequestError.unimplemented
  }

  public func listIcebergNamespaces(request: ListIcebergNamespacesRequest) async throws
    -> GoogleCloudBiglakeV1.ListIcebergNamespacesResponse
  {
    try await self.listIcebergNamespaces(request: request, options: .init())
  }

  public func listIcebergNamespaces(
    request: ListIcebergNamespacesRequest, options: GoogleCloudGax.RequestOptions
  ) async throws -> GoogleCloudBiglakeV1.ListIcebergNamespacesResponse {
    throw GoogleCloudGax.RequestError.unimplemented
  }

  public func listIcebergNamespaces(
    apiParent: Swift.String,
  ) async throws -> GoogleCloudBiglakeV1.ListIcebergNamespacesResponse {
    let request = ListIcebergNamespacesRequest().with {
      $0.apiParent = apiParent
    }
    return try await self.listIcebergNamespaces(request: request)
  }

  public func getIcebergNamespace(request: GetIcebergNamespaceRequest) async throws
    -> GoogleCloudBiglakeV1.IcebergNamespace
  {
    try await self.getIcebergNamespace(request: request, options: .init())
  }

  public func getIcebergNamespace(
    request: GetIcebergNamespaceRequest, options: GoogleCloudGax.RequestOptions
  ) async throws -> GoogleCloudBiglakeV1.IcebergNamespace {
    throw GoogleCloudGax.RequestError.unimplemented
  }

  public func getIcebergNamespace(
    name: Swift.String,
  ) async throws -> GoogleCloudBiglakeV1.IcebergNamespace {
    let request = GetIcebergNamespaceRequest().with {
      $0.name = name
    }
    return try await self.getIcebergNamespace(request: request)
  }

  public func createIcebergNamespace(request: CreateIcebergNamespaceRequest) async throws
    -> GoogleCloudBiglakeV1.IcebergNamespace
  {
    try await self.createIcebergNamespace(request: request, options: .init())
  }

  public func createIcebergNamespace(
    request: CreateIcebergNamespaceRequest, options: GoogleCloudGax.RequestOptions
  ) async throws -> GoogleCloudBiglakeV1.IcebergNamespace {
    throw GoogleCloudGax.RequestError.unimplemented
  }

  public func createIcebergNamespace(
    parent: Swift.String,
    icebergNamespace: IcebergNamespace?,
  ) async throws -> GoogleCloudBiglakeV1.IcebergNamespace {
    let request = CreateIcebergNamespaceRequest().with {
      $0.parent = parent
      $0.icebergNamespace = icebergNamespace
    }
    return try await self.createIcebergNamespace(request: request)
  }

  public func deleteIcebergNamespace(request: DeleteIcebergNamespaceRequest) async throws {
    try await self.deleteIcebergNamespace(request: request, options: .init())
  }

  public func deleteIcebergNamespace(
    request: DeleteIcebergNamespaceRequest, options: GoogleCloudGax.RequestOptions
  ) async throws {
    throw GoogleCloudGax.RequestError.unimplemented
  }

  public func deleteIcebergNamespace(
    name: Swift.String,
  ) async throws {
    let request = DeleteIcebergNamespaceRequest().with {
      $0.name = name
    }
    try await self.deleteIcebergNamespace(request: request)
  }

  public func updateIcebergNamespace(request: UpdateIcebergNamespaceRequest) async throws
    -> GoogleCloudBiglakeV1.UpdateIcebergNamespaceResponse
  {
    try await self.updateIcebergNamespace(request: request, options: .init())
  }

  public func updateIcebergNamespace(
    request: UpdateIcebergNamespaceRequest, options: GoogleCloudGax.RequestOptions
  ) async throws -> GoogleCloudBiglakeV1.UpdateIcebergNamespaceResponse {
    throw GoogleCloudGax.RequestError.unimplemented
  }

  public func listIcebergTableIdentifiers(request: ListIcebergTableIdentifiersRequest) async throws
    -> GoogleCloudBiglakeV1.ListIcebergTableIdentifiersResponse
  {
    try await self.listIcebergTableIdentifiers(request: request, options: .init())
  }

  public func listIcebergTableIdentifiers(
    request: ListIcebergTableIdentifiersRequest, options: GoogleCloudGax.RequestOptions
  ) async throws -> GoogleCloudBiglakeV1.ListIcebergTableIdentifiersResponse {
    throw GoogleCloudGax.RequestError.unimplemented
  }

  public func listIcebergTableIdentifiers(
    parent: Swift.String,
  ) async throws -> GoogleCloudBiglakeV1.ListIcebergTableIdentifiersResponse {
    let request = ListIcebergTableIdentifiersRequest().with {
      $0.parent = parent
    }
    return try await self.listIcebergTableIdentifiers(request: request)
  }

  public func createIcebergTable(request: CreateIcebergTableRequest) async throws
    -> GoogleApi.HttpBody
  {
    try await self.createIcebergTable(request: request, options: .init())
  }

  public func createIcebergTable(
    request: CreateIcebergTableRequest, options: GoogleCloudGax.RequestOptions
  ) async throws -> GoogleApi.HttpBody {
    throw GoogleCloudGax.RequestError.unimplemented
  }

  public func createIcebergTable(
    parent: Swift.String,
  ) async throws -> GoogleApi.HttpBody {
    let request = CreateIcebergTableRequest().with {
      $0.parent = parent
    }
    return try await self.createIcebergTable(request: request)
  }

  public func deleteIcebergTable(request: DeleteIcebergTableRequest) async throws {
    try await self.deleteIcebergTable(request: request, options: .init())
  }

  public func deleteIcebergTable(
    request: DeleteIcebergTableRequest, options: GoogleCloudGax.RequestOptions
  ) async throws {
    throw GoogleCloudGax.RequestError.unimplemented
  }

  public func deleteIcebergTable(
    name: Swift.String,
  ) async throws {
    let request = DeleteIcebergTableRequest().with {
      $0.name = name
    }
    try await self.deleteIcebergTable(request: request)
  }

  public func getIcebergTable(request: GetIcebergTableRequest) async throws -> GoogleApi.HttpBody {
    try await self.getIcebergTable(request: request, options: .init())
  }

  public func getIcebergTable(
    request: GetIcebergTableRequest, options: GoogleCloudGax.RequestOptions
  ) async throws -> GoogleApi.HttpBody {
    throw GoogleCloudGax.RequestError.unimplemented
  }

  public func getIcebergTable(
    name: Swift.String,
    snapshots: Swift.String,
  ) async throws -> GoogleApi.HttpBody {
    let request = GetIcebergTableRequest().with {
      $0.name = name
      $0.snapshots = snapshots
    }
    return try await self.getIcebergTable(request: request)
  }

  public func loadIcebergTableCredentials(request: GetIcebergTableRequest) async throws
    -> GoogleCloudBiglakeV1.LoadIcebergTableCredentialsResponse
  {
    try await self.loadIcebergTableCredentials(request: request, options: .init())
  }

  public func loadIcebergTableCredentials(
    request: GetIcebergTableRequest, options: GoogleCloudGax.RequestOptions
  ) async throws -> GoogleCloudBiglakeV1.LoadIcebergTableCredentialsResponse {
    throw GoogleCloudGax.RequestError.unimplemented
  }

  public func loadIcebergTableCredentials(
    name: Swift.String,
  ) async throws -> GoogleCloudBiglakeV1.LoadIcebergTableCredentialsResponse {
    let request = GetIcebergTableRequest().with {
      $0.name = name
    }
    return try await self.loadIcebergTableCredentials(request: request)
  }

  public func updateIcebergTable(request: UpdateIcebergTableRequest) async throws
    -> GoogleApi.HttpBody
  {
    try await self.updateIcebergTable(request: request, options: .init())
  }

  public func updateIcebergTable(
    request: UpdateIcebergTableRequest, options: GoogleCloudGax.RequestOptions
  ) async throws -> GoogleApi.HttpBody {
    throw GoogleCloudGax.RequestError.unimplemented
  }

  public func registerIcebergTable(request: RegisterIcebergTableRequest) async throws
    -> GoogleApi.HttpBody
  {
    try await self.registerIcebergTable(request: request, options: .init())
  }

  public func registerIcebergTable(
    request: RegisterIcebergTableRequest, options: GoogleCloudGax.RequestOptions
  ) async throws -> GoogleApi.HttpBody {
    throw GoogleCloudGax.RequestError.unimplemented
  }

  public func reportIcebergTableMetrics(request: ReportIcebergTableMetricsRequest) async throws {
    try await self.reportIcebergTableMetrics(request: request, options: .init())
  }

  public func reportIcebergTableMetrics(
    request: ReportIcebergTableMetricsRequest, options: GoogleCloudGax.RequestOptions
  ) async throws {
    throw GoogleCloudGax.RequestError.unimplemented
  }

  public func reportIcebergTableMetrics(
    name: Swift.String,
  ) async throws {
    let request = ReportIcebergTableMetricsRequest().with {
      $0.name = name
    }
    try await self.reportIcebergTableMetrics(request: request)
  }

  public func getIcebergCatalog(request: GetIcebergCatalogRequest) async throws
    -> GoogleCloudBiglakeV1.IcebergCatalog
  {
    try await self.getIcebergCatalog(request: request, options: .init())
  }

  public func getIcebergCatalog(
    request: GetIcebergCatalogRequest, options: GoogleCloudGax.RequestOptions
  ) async throws -> GoogleCloudBiglakeV1.IcebergCatalog {
    throw GoogleCloudGax.RequestError.unimplemented
  }

  public func getIcebergCatalog(
    name: Swift.String,
  ) async throws -> GoogleCloudBiglakeV1.IcebergCatalog {
    let request = GetIcebergCatalogRequest().with {
      $0.name = name
    }
    return try await self.getIcebergCatalog(request: request)
  }

  public func listIcebergCatalogs(request: ListIcebergCatalogsRequest) async throws
    -> GoogleCloudBiglakeV1.ListIcebergCatalogsResponse
  {
    try await self.listIcebergCatalogs(request: request, options: .init())
  }

  public func listIcebergCatalogs(
    request: ListIcebergCatalogsRequest, options: GoogleCloudGax.RequestOptions
  ) async throws -> GoogleCloudBiglakeV1.ListIcebergCatalogsResponse {
    throw GoogleCloudGax.RequestError.unimplemented
  }

  public func listIcebergCatalogs(
    parent: Swift.String,
  ) async throws -> GoogleCloudBiglakeV1.ListIcebergCatalogsResponse {
    let request = ListIcebergCatalogsRequest().with {
      $0.parent = parent
    }
    return try await self.listIcebergCatalogs(request: request)
  }

  public func deleteIcebergCatalog(request: DeleteIcebergCatalogRequest) async throws {
    try await self.deleteIcebergCatalog(request: request, options: .init())
  }

  public func deleteIcebergCatalog(
    request: DeleteIcebergCatalogRequest, options: GoogleCloudGax.RequestOptions
  ) async throws {
    throw GoogleCloudGax.RequestError.unimplemented
  }

  public func deleteIcebergCatalog(
    name: Swift.String,
  ) async throws {
    let request = DeleteIcebergCatalogRequest().with {
      $0.name = name
    }
    try await self.deleteIcebergCatalog(request: request)
  }

  public func updateIcebergCatalog(request: UpdateIcebergCatalogRequest) async throws
    -> GoogleCloudBiglakeV1.IcebergCatalog
  {
    try await self.updateIcebergCatalog(request: request, options: .init())
  }

  public func updateIcebergCatalog(
    request: UpdateIcebergCatalogRequest, options: GoogleCloudGax.RequestOptions
  ) async throws -> GoogleCloudBiglakeV1.IcebergCatalog {
    throw GoogleCloudGax.RequestError.unimplemented
  }

  public func updateIcebergCatalog(
    icebergCatalog: IcebergCatalog?,
    updateMask: GoogleCloudWkt.FieldMask?,
  ) async throws -> GoogleCloudBiglakeV1.IcebergCatalog {
    let request = UpdateIcebergCatalogRequest().with {
      $0.icebergCatalog = icebergCatalog
      $0.updateMask = updateMask
    }
    return try await self.updateIcebergCatalog(request: request)
  }

  public func createIcebergCatalog(request: CreateIcebergCatalogRequest) async throws
    -> GoogleCloudBiglakeV1.IcebergCatalog
  {
    try await self.createIcebergCatalog(request: request, options: .init())
  }

  public func createIcebergCatalog(
    request: CreateIcebergCatalogRequest, options: GoogleCloudGax.RequestOptions
  ) async throws -> GoogleCloudBiglakeV1.IcebergCatalog {
    throw GoogleCloudGax.RequestError.unimplemented
  }

  public func createIcebergCatalog(
    parent: Swift.String,
    icebergCatalog: IcebergCatalog?,
    icebergCatalogId: Swift.String,
  ) async throws -> GoogleCloudBiglakeV1.IcebergCatalog {
    let request = CreateIcebergCatalogRequest().with {
      $0.parent = parent
      $0.icebergCatalog = icebergCatalog
      $0.icebergCatalogId = icebergCatalogId
    }
    return try await self.createIcebergCatalog(request: request)
  }

  public func createIcebergCatalog(
    parent: Swift.String,
    icebergCatalog: IcebergCatalog?,
    icebergCatalogId: Swift.String,
    primaryLocation: Swift.String,
  ) async throws -> GoogleCloudBiglakeV1.IcebergCatalog {
    let request = CreateIcebergCatalogRequest().with {
      $0.parent = parent
      $0.icebergCatalog = icebergCatalog
      $0.icebergCatalogId = icebergCatalogId
      $0.primaryLocation = primaryLocation
    }
    return try await self.createIcebergCatalog(request: request)
  }

  public func failoverIcebergCatalog(request: FailoverIcebergCatalogRequest) async throws
    -> GoogleCloudBiglakeV1.FailoverIcebergCatalogResponse
  {
    try await self.failoverIcebergCatalog(request: request, options: .init())
  }

  public func failoverIcebergCatalog(
    request: FailoverIcebergCatalogRequest, options: GoogleCloudGax.RequestOptions
  ) async throws -> GoogleCloudBiglakeV1.FailoverIcebergCatalogResponse {
    throw GoogleCloudGax.RequestError.unimplemented
  }

  public func failoverIcebergCatalog(
    name: Swift.String,
    primaryReplica: Swift.String,
  ) async throws -> GoogleCloudBiglakeV1.FailoverIcebergCatalogResponse {
    let request = FailoverIcebergCatalogRequest().with {
      $0.name = name
      $0.primaryReplica = primaryReplica
    }
    return try await self.failoverIcebergCatalog(request: request)
  }
}
