/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */
import * as cdktf from 'cdktf';
import { ContainerClusterNodePoolUpgradeSettingsBlueGreenSettings, ContainerClusterNodePoolUpgradeSettingsBlueGreenSettingsOutputReference, ContainerClusterNodePoolAutoscaling, ContainerClusterNodePoolAutoscalingOutputReference, ContainerClusterNodePoolManagement, ContainerClusterNodePoolManagementOutputReference, ContainerClusterNodePoolNetworkConfig, ContainerClusterNodePoolNetworkConfigOutputReference, ContainerClusterNodePoolNodeConfig, ContainerClusterNodePoolNodeConfigOutputReference, ContainerClusterNodePoolPlacementPolicy, ContainerClusterNodePoolPlacementPolicyOutputReference, ContainerClusterNodePoolQueuedProvisioning, ContainerClusterNodePoolQueuedProvisioningOutputReference } from './structs0';
export interface ContainerClusterNodePoolUpgradeSettings {
    /**
    * The number of additional nodes that can be added to the node pool during an upgrade. Increasing max_surge raises the number of nodes that can be upgraded simultaneously. Can be set to 0 or greater.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#max_surge ContainerCluster#max_surge}
    */
    readonly maxSurge?: number;
    /**
    * The number of nodes that can be simultaneously unavailable during an upgrade. Increasing max_unavailable raises the number of nodes that can be upgraded in parallel. Can be set to 0 or greater.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#max_unavailable ContainerCluster#max_unavailable}
    */
    readonly maxUnavailable?: number;
    /**
    * Update strategy for the given nodepool.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#strategy ContainerCluster#strategy}
    */
    readonly strategy?: string;
    /**
    * blue_green_settings block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#blue_green_settings ContainerCluster#blue_green_settings}
    */
    readonly blueGreenSettings?: ContainerClusterNodePoolUpgradeSettingsBlueGreenSettings;
}
export declare function containerClusterNodePoolUpgradeSettingsToTerraform(struct?: ContainerClusterNodePoolUpgradeSettingsOutputReference | ContainerClusterNodePoolUpgradeSettings): any;
export declare function containerClusterNodePoolUpgradeSettingsToHclTerraform(struct?: ContainerClusterNodePoolUpgradeSettingsOutputReference | ContainerClusterNodePoolUpgradeSettings): any;
export declare class ContainerClusterNodePoolUpgradeSettingsOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): ContainerClusterNodePoolUpgradeSettings | undefined;
    set internalValue(value: ContainerClusterNodePoolUpgradeSettings | undefined);
    private _maxSurge?;
    get maxSurge(): number;
    set maxSurge(value: number);
    resetMaxSurge(): void;
    get maxSurgeInput(): number | undefined;
    private _maxUnavailable?;
    get maxUnavailable(): number;
    set maxUnavailable(value: number);
    resetMaxUnavailable(): void;
    get maxUnavailableInput(): number | undefined;
    private _strategy?;
    get strategy(): string;
    set strategy(value: string);
    resetStrategy(): void;
    get strategyInput(): string | undefined;
    private _blueGreenSettings;
    get blueGreenSettings(): ContainerClusterNodePoolUpgradeSettingsBlueGreenSettingsOutputReference;
    putBlueGreenSettings(value: ContainerClusterNodePoolUpgradeSettingsBlueGreenSettings): void;
    resetBlueGreenSettings(): void;
    get blueGreenSettingsInput(): ContainerClusterNodePoolUpgradeSettingsBlueGreenSettings | undefined;
}
export interface ContainerClusterNodePool {
    /**
    * The initial number of nodes for the pool. In regional or multi-zonal clusters, this is the number of nodes per zone. Changing this will force recreation of the resource.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#initial_node_count ContainerCluster#initial_node_count}
    */
    readonly initialNodeCount?: number;
    /**
    * The maximum number of pods per node in this node pool. Note that this does not work on node pools which are "route-based" - that is, node pools belonging to clusters that do not have IP Aliasing enabled.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#max_pods_per_node ContainerCluster#max_pods_per_node}
    */
    readonly maxPodsPerNode?: number;
    /**
    * The name of the node pool. If left blank, Terraform will auto-generate a unique name.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#name ContainerCluster#name}
    */
    readonly name?: string;
    /**
    * Creates a unique name for the node pool beginning with the specified prefix. Conflicts with name.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#name_prefix ContainerCluster#name_prefix}
    */
    readonly namePrefix?: string;
    /**
    * The number of nodes per instance group. This field can be used to update the number of nodes per instance group but should not be used alongside autoscaling.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#node_count ContainerCluster#node_count}
    */
    readonly nodeCount?: number;
    /**
    * The list of zones in which the node pool's nodes should be located. Nodes must be in the region of their regional cluster or in the same region as their cluster's zone for zonal clusters. If unspecified, the cluster-level node_locations will be used.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#node_locations ContainerCluster#node_locations}
    */
    readonly nodeLocations?: string[];
    /**
    * The Kubernetes version for the nodes in this pool. Note that if this field and auto_upgrade are both specified, they will fight each other for what the node version should be, so setting both is highly discouraged. While a fuzzy version can be specified, it's recommended that you specify explicit versions as Terraform will see spurious diffs when fuzzy versions are used. See the google_container_engine_versions data source's version_prefix field to approximate fuzzy versions in a Terraform-compatible way.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#version ContainerCluster#version}
    */
    readonly version?: string;
    /**
    * autoscaling block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#autoscaling ContainerCluster#autoscaling}
    */
    readonly autoscaling?: ContainerClusterNodePoolAutoscaling;
    /**
    * management block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#management ContainerCluster#management}
    */
    readonly management?: ContainerClusterNodePoolManagement;
    /**
    * network_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#network_config ContainerCluster#network_config}
    */
    readonly networkConfig?: ContainerClusterNodePoolNetworkConfig;
    /**
    * node_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#node_config ContainerCluster#node_config}
    */
    readonly nodeConfig?: ContainerClusterNodePoolNodeConfig;
    /**
    * placement_policy block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#placement_policy ContainerCluster#placement_policy}
    */
    readonly placementPolicy?: ContainerClusterNodePoolPlacementPolicy;
    /**
    * queued_provisioning block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#queued_provisioning ContainerCluster#queued_provisioning}
    */
    readonly queuedProvisioning?: ContainerClusterNodePoolQueuedProvisioning;
    /**
    * upgrade_settings block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#upgrade_settings ContainerCluster#upgrade_settings}
    */
    readonly upgradeSettings?: ContainerClusterNodePoolUpgradeSettings;
}
export declare function containerClusterNodePoolToTerraform(struct?: ContainerClusterNodePool | cdktf.IResolvable): any;
export declare function containerClusterNodePoolToHclTerraform(struct?: ContainerClusterNodePool | cdktf.IResolvable): any;
export declare class ContainerClusterNodePoolOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    private resolvableValue?;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): ContainerClusterNodePool | cdktf.IResolvable | undefined;
    set internalValue(value: ContainerClusterNodePool | cdktf.IResolvable | undefined);
    private _initialNodeCount?;
    get initialNodeCount(): number;
    set initialNodeCount(value: number);
    resetInitialNodeCount(): void;
    get initialNodeCountInput(): number | undefined;
    get instanceGroupUrls(): string[];
    get managedInstanceGroupUrls(): string[];
    private _maxPodsPerNode?;
    get maxPodsPerNode(): number;
    set maxPodsPerNode(value: number);
    resetMaxPodsPerNode(): void;
    get maxPodsPerNodeInput(): number | undefined;
    private _name?;
    get name(): string;
    set name(value: string);
    resetName(): void;
    get nameInput(): string | undefined;
    private _namePrefix?;
    get namePrefix(): string;
    set namePrefix(value: string);
    resetNamePrefix(): void;
    get namePrefixInput(): string | undefined;
    private _nodeCount?;
    get nodeCount(): number;
    set nodeCount(value: number);
    resetNodeCount(): void;
    get nodeCountInput(): number | undefined;
    private _nodeLocations?;
    get nodeLocations(): string[];
    set nodeLocations(value: string[]);
    resetNodeLocations(): void;
    get nodeLocationsInput(): string[] | undefined;
    private _version?;
    get version(): string;
    set version(value: string);
    resetVersion(): void;
    get versionInput(): string | undefined;
    private _autoscaling;
    get autoscaling(): ContainerClusterNodePoolAutoscalingOutputReference;
    putAutoscaling(value: ContainerClusterNodePoolAutoscaling): void;
    resetAutoscaling(): void;
    get autoscalingInput(): ContainerClusterNodePoolAutoscaling | undefined;
    private _management;
    get management(): ContainerClusterNodePoolManagementOutputReference;
    putManagement(value: ContainerClusterNodePoolManagement): void;
    resetManagement(): void;
    get managementInput(): ContainerClusterNodePoolManagement | undefined;
    private _networkConfig;
    get networkConfig(): ContainerClusterNodePoolNetworkConfigOutputReference;
    putNetworkConfig(value: ContainerClusterNodePoolNetworkConfig): void;
    resetNetworkConfig(): void;
    get networkConfigInput(): ContainerClusterNodePoolNetworkConfig | undefined;
    private _nodeConfig;
    get nodeConfig(): ContainerClusterNodePoolNodeConfigOutputReference;
    putNodeConfig(value: ContainerClusterNodePoolNodeConfig): void;
    resetNodeConfig(): void;
    get nodeConfigInput(): ContainerClusterNodePoolNodeConfig | undefined;
    private _placementPolicy;
    get placementPolicy(): ContainerClusterNodePoolPlacementPolicyOutputReference;
    putPlacementPolicy(value: ContainerClusterNodePoolPlacementPolicy): void;
    resetPlacementPolicy(): void;
    get placementPolicyInput(): ContainerClusterNodePoolPlacementPolicy | undefined;
    private _queuedProvisioning;
    get queuedProvisioning(): ContainerClusterNodePoolQueuedProvisioningOutputReference;
    putQueuedProvisioning(value: ContainerClusterNodePoolQueuedProvisioning): void;
    resetQueuedProvisioning(): void;
    get queuedProvisioningInput(): ContainerClusterNodePoolQueuedProvisioning | undefined;
    private _upgradeSettings;
    get upgradeSettings(): ContainerClusterNodePoolUpgradeSettingsOutputReference;
    putUpgradeSettings(value: ContainerClusterNodePoolUpgradeSettings): void;
    resetUpgradeSettings(): void;
    get upgradeSettingsInput(): ContainerClusterNodePoolUpgradeSettings | undefined;
}
export declare class ContainerClusterNodePoolList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: ContainerClusterNodePool[] | cdktf.IResolvable;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): ContainerClusterNodePoolOutputReference;
}
export interface ContainerClusterNodePoolAutoConfigLinuxNodeConfig {
    /**
    * cgroupMode specifies the cgroup mode to be used on the node.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#cgroup_mode ContainerCluster#cgroup_mode}
    */
    readonly cgroupMode?: string;
}
export declare function containerClusterNodePoolAutoConfigLinuxNodeConfigToTerraform(struct?: ContainerClusterNodePoolAutoConfigLinuxNodeConfigOutputReference | ContainerClusterNodePoolAutoConfigLinuxNodeConfig): any;
export declare function containerClusterNodePoolAutoConfigLinuxNodeConfigToHclTerraform(struct?: ContainerClusterNodePoolAutoConfigLinuxNodeConfigOutputReference | ContainerClusterNodePoolAutoConfigLinuxNodeConfig): any;
export declare class ContainerClusterNodePoolAutoConfigLinuxNodeConfigOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): ContainerClusterNodePoolAutoConfigLinuxNodeConfig | undefined;
    set internalValue(value: ContainerClusterNodePoolAutoConfigLinuxNodeConfig | undefined);
    private _cgroupMode?;
    get cgroupMode(): string;
    set cgroupMode(value: string);
    resetCgroupMode(): void;
    get cgroupModeInput(): string | undefined;
}
export interface ContainerClusterNodePoolAutoConfigNetworkTags {
    /**
    * List of network tags applied to auto-provisioned node pools.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#tags ContainerCluster#tags}
    */
    readonly tags?: string[];
}
export declare function containerClusterNodePoolAutoConfigNetworkTagsToTerraform(struct?: ContainerClusterNodePoolAutoConfigNetworkTagsOutputReference | ContainerClusterNodePoolAutoConfigNetworkTags): any;
export declare function containerClusterNodePoolAutoConfigNetworkTagsToHclTerraform(struct?: ContainerClusterNodePoolAutoConfigNetworkTagsOutputReference | ContainerClusterNodePoolAutoConfigNetworkTags): any;
export declare class ContainerClusterNodePoolAutoConfigNetworkTagsOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): ContainerClusterNodePoolAutoConfigNetworkTags | undefined;
    set internalValue(value: ContainerClusterNodePoolAutoConfigNetworkTags | undefined);
    private _tags?;
    get tags(): string[];
    set tags(value: string[]);
    resetTags(): void;
    get tagsInput(): string[] | undefined;
}
export interface ContainerClusterNodePoolAutoConfigNodeKubeletConfig {
    /**
    * Controls whether the kubelet read-only port is enabled. It is strongly recommended to set this to `FALSE`. Possible values: `TRUE`, `FALSE`.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#insecure_kubelet_readonly_port_enabled ContainerCluster#insecure_kubelet_readonly_port_enabled}
    */
    readonly insecureKubeletReadonlyPortEnabled?: string;
}
export declare function containerClusterNodePoolAutoConfigNodeKubeletConfigToTerraform(struct?: ContainerClusterNodePoolAutoConfigNodeKubeletConfigOutputReference | ContainerClusterNodePoolAutoConfigNodeKubeletConfig): any;
export declare function containerClusterNodePoolAutoConfigNodeKubeletConfigToHclTerraform(struct?: ContainerClusterNodePoolAutoConfigNodeKubeletConfigOutputReference | ContainerClusterNodePoolAutoConfigNodeKubeletConfig): any;
export declare class ContainerClusterNodePoolAutoConfigNodeKubeletConfigOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): ContainerClusterNodePoolAutoConfigNodeKubeletConfig | undefined;
    set internalValue(value: ContainerClusterNodePoolAutoConfigNodeKubeletConfig | undefined);
    private _insecureKubeletReadonlyPortEnabled?;
    get insecureKubeletReadonlyPortEnabled(): string;
    set insecureKubeletReadonlyPortEnabled(value: string);
    resetInsecureKubeletReadonlyPortEnabled(): void;
    get insecureKubeletReadonlyPortEnabledInput(): string | undefined;
}
export interface ContainerClusterNodePoolAutoConfig {
    /**
    * A map of resource manager tags. Resource manager tag keys and values have the same definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456. The field is ignored (both PUT & PATCH) when empty.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#resource_manager_tags ContainerCluster#resource_manager_tags}
    */
    readonly resourceManagerTags?: {
        [key: string]: string;
    };
    /**
    * linux_node_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#linux_node_config ContainerCluster#linux_node_config}
    */
    readonly linuxNodeConfig?: ContainerClusterNodePoolAutoConfigLinuxNodeConfig;
    /**
    * network_tags block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#network_tags ContainerCluster#network_tags}
    */
    readonly networkTags?: ContainerClusterNodePoolAutoConfigNetworkTags;
    /**
    * node_kubelet_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#node_kubelet_config ContainerCluster#node_kubelet_config}
    */
    readonly nodeKubeletConfig?: ContainerClusterNodePoolAutoConfigNodeKubeletConfig;
}
export declare function containerClusterNodePoolAutoConfigToTerraform(struct?: ContainerClusterNodePoolAutoConfigOutputReference | ContainerClusterNodePoolAutoConfig): any;
export declare function containerClusterNodePoolAutoConfigToHclTerraform(struct?: ContainerClusterNodePoolAutoConfigOutputReference | ContainerClusterNodePoolAutoConfig): any;
export declare class ContainerClusterNodePoolAutoConfigOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): ContainerClusterNodePoolAutoConfig | undefined;
    set internalValue(value: ContainerClusterNodePoolAutoConfig | undefined);
    private _resourceManagerTags?;
    get resourceManagerTags(): {
        [key: string]: string;
    };
    set resourceManagerTags(value: {
        [key: string]: string;
    });
    resetResourceManagerTags(): void;
    get resourceManagerTagsInput(): {
        [key: string]: string;
    } | undefined;
    private _linuxNodeConfig;
    get linuxNodeConfig(): ContainerClusterNodePoolAutoConfigLinuxNodeConfigOutputReference;
    putLinuxNodeConfig(value: ContainerClusterNodePoolAutoConfigLinuxNodeConfig): void;
    resetLinuxNodeConfig(): void;
    get linuxNodeConfigInput(): ContainerClusterNodePoolAutoConfigLinuxNodeConfig | undefined;
    private _networkTags;
    get networkTags(): ContainerClusterNodePoolAutoConfigNetworkTagsOutputReference;
    putNetworkTags(value: ContainerClusterNodePoolAutoConfigNetworkTags): void;
    resetNetworkTags(): void;
    get networkTagsInput(): ContainerClusterNodePoolAutoConfigNetworkTags | undefined;
    private _nodeKubeletConfig;
    get nodeKubeletConfig(): ContainerClusterNodePoolAutoConfigNodeKubeletConfigOutputReference;
    putNodeKubeletConfig(value: ContainerClusterNodePoolAutoConfigNodeKubeletConfig): void;
    resetNodeKubeletConfig(): void;
    get nodeKubeletConfigInput(): ContainerClusterNodePoolAutoConfigNodeKubeletConfig | undefined;
}
export interface ContainerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigGcpSecretManagerCertificateConfig {
    /**
    * URI for the secret that hosts a certificate. Must be in the format 'projects/PROJECT_NUM/secrets/SECRET_NAME/versions/VERSION_OR_LATEST'.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#secret_uri ContainerCluster#secret_uri}
    */
    readonly secretUri: string;
}
export declare function containerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigGcpSecretManagerCertificateConfigToTerraform(struct?: ContainerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigGcpSecretManagerCertificateConfigOutputReference | ContainerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigGcpSecretManagerCertificateConfig): any;
export declare function containerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigGcpSecretManagerCertificateConfigToHclTerraform(struct?: ContainerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigGcpSecretManagerCertificateConfigOutputReference | ContainerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigGcpSecretManagerCertificateConfig): any;
export declare class ContainerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigGcpSecretManagerCertificateConfigOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): ContainerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigGcpSecretManagerCertificateConfig | undefined;
    set internalValue(value: ContainerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigGcpSecretManagerCertificateConfig | undefined);
    private _secretUri?;
    get secretUri(): string;
    set secretUri(value: string);
    get secretUriInput(): string | undefined;
}
export interface ContainerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfig {
    /**
    * List of fully-qualified-domain-names. IPv4s and port specification are supported.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#fqdns ContainerCluster#fqdns}
    */
    readonly fqdns: string[];
    /**
    * gcp_secret_manager_certificate_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#gcp_secret_manager_certificate_config ContainerCluster#gcp_secret_manager_certificate_config}
    */
    readonly gcpSecretManagerCertificateConfig: ContainerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigGcpSecretManagerCertificateConfig;
}
export declare function containerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigToTerraform(struct?: ContainerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfig | cdktf.IResolvable): any;
export declare function containerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigToHclTerraform(struct?: ContainerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfig | cdktf.IResolvable): any;
export declare class ContainerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    private resolvableValue?;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): ContainerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfig | cdktf.IResolvable | undefined;
    set internalValue(value: ContainerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfig | cdktf.IResolvable | undefined);
    private _fqdns?;
    get fqdns(): string[];
    set fqdns(value: string[]);
    get fqdnsInput(): string[] | undefined;
    private _gcpSecretManagerCertificateConfig;
    get gcpSecretManagerCertificateConfig(): ContainerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigGcpSecretManagerCertificateConfigOutputReference;
    putGcpSecretManagerCertificateConfig(value: ContainerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigGcpSecretManagerCertificateConfig): void;
    get gcpSecretManagerCertificateConfigInput(): ContainerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigGcpSecretManagerCertificateConfig | undefined;
}
export declare class ContainerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: ContainerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfig[] | cdktf.IResolvable;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): ContainerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigOutputReference;
}
export interface ContainerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfig {
    /**
    * Whether or not private registries are configured.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#enabled ContainerCluster#enabled}
    */
    readonly enabled: boolean | cdktf.IResolvable;
    /**
    * certificate_authority_domain_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#certificate_authority_domain_config ContainerCluster#certificate_authority_domain_config}
    */
    readonly certificateAuthorityDomainConfig?: ContainerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfig[] | cdktf.IResolvable;
}
export declare function containerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigToTerraform(struct?: ContainerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigOutputReference | ContainerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfig): any;
export declare function containerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigToHclTerraform(struct?: ContainerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigOutputReference | ContainerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfig): any;
export declare class ContainerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): ContainerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfig | undefined;
    set internalValue(value: ContainerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfig | undefined);
    private _enabled?;
    get enabled(): boolean | cdktf.IResolvable;
    set enabled(value: boolean | cdktf.IResolvable);
    get enabledInput(): boolean | cdktf.IResolvable | undefined;
    private _certificateAuthorityDomainConfig;
    get certificateAuthorityDomainConfig(): ContainerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigList;
    putCertificateAuthorityDomainConfig(value: ContainerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfig[] | cdktf.IResolvable): void;
    resetCertificateAuthorityDomainConfig(): void;
    get certificateAuthorityDomainConfigInput(): cdktf.IResolvable | ContainerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfig[] | undefined;
}
export interface ContainerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfig {
    /**
    * private_registry_access_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#private_registry_access_config ContainerCluster#private_registry_access_config}
    */
    readonly privateRegistryAccessConfig?: ContainerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfig;
}
export declare function containerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfigToTerraform(struct?: ContainerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfigOutputReference | ContainerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfig): any;
export declare function containerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfigToHclTerraform(struct?: ContainerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfigOutputReference | ContainerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfig): any;
export declare class ContainerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfigOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): ContainerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfig | undefined;
    set internalValue(value: ContainerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfig | undefined);
    private _privateRegistryAccessConfig;
    get privateRegistryAccessConfig(): ContainerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfigOutputReference;
    putPrivateRegistryAccessConfig(value: ContainerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfig): void;
    resetPrivateRegistryAccessConfig(): void;
    get privateRegistryAccessConfigInput(): ContainerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfigPrivateRegistryAccessConfig | undefined;
}
export interface ContainerClusterNodePoolDefaultsNodeConfigDefaultsGcfsConfig {
    /**
    * Whether or not GCFS is enabled
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#enabled ContainerCluster#enabled}
    */
    readonly enabled: boolean | cdktf.IResolvable;
}
export declare function containerClusterNodePoolDefaultsNodeConfigDefaultsGcfsConfigToTerraform(struct?: ContainerClusterNodePoolDefaultsNodeConfigDefaultsGcfsConfigOutputReference | ContainerClusterNodePoolDefaultsNodeConfigDefaultsGcfsConfig): any;
export declare function containerClusterNodePoolDefaultsNodeConfigDefaultsGcfsConfigToHclTerraform(struct?: ContainerClusterNodePoolDefaultsNodeConfigDefaultsGcfsConfigOutputReference | ContainerClusterNodePoolDefaultsNodeConfigDefaultsGcfsConfig): any;
export declare class ContainerClusterNodePoolDefaultsNodeConfigDefaultsGcfsConfigOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): ContainerClusterNodePoolDefaultsNodeConfigDefaultsGcfsConfig | undefined;
    set internalValue(value: ContainerClusterNodePoolDefaultsNodeConfigDefaultsGcfsConfig | undefined);
    private _enabled?;
    get enabled(): boolean | cdktf.IResolvable;
    set enabled(value: boolean | cdktf.IResolvable);
    get enabledInput(): boolean | cdktf.IResolvable | undefined;
}
export interface ContainerClusterNodePoolDefaultsNodeConfigDefaults {
    /**
    * Controls whether the kubelet read-only port is enabled. It is strongly recommended to set this to `FALSE`. Possible values: `TRUE`, `FALSE`.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#insecure_kubelet_readonly_port_enabled ContainerCluster#insecure_kubelet_readonly_port_enabled}
    */
    readonly insecureKubeletReadonlyPortEnabled?: string;
    /**
    * Type of logging agent that is used as the default value for node pools in the cluster. Valid values include DEFAULT and MAX_THROUGHPUT.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#logging_variant ContainerCluster#logging_variant}
    */
    readonly loggingVariant?: string;
    /**
    * containerd_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#containerd_config ContainerCluster#containerd_config}
    */
    readonly containerdConfig?: ContainerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfig;
    /**
    * gcfs_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#gcfs_config ContainerCluster#gcfs_config}
    */
    readonly gcfsConfig?: ContainerClusterNodePoolDefaultsNodeConfigDefaultsGcfsConfig;
}
export declare function containerClusterNodePoolDefaultsNodeConfigDefaultsToTerraform(struct?: ContainerClusterNodePoolDefaultsNodeConfigDefaultsOutputReference | ContainerClusterNodePoolDefaultsNodeConfigDefaults): any;
export declare function containerClusterNodePoolDefaultsNodeConfigDefaultsToHclTerraform(struct?: ContainerClusterNodePoolDefaultsNodeConfigDefaultsOutputReference | ContainerClusterNodePoolDefaultsNodeConfigDefaults): any;
export declare class ContainerClusterNodePoolDefaultsNodeConfigDefaultsOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): ContainerClusterNodePoolDefaultsNodeConfigDefaults | undefined;
    set internalValue(value: ContainerClusterNodePoolDefaultsNodeConfigDefaults | undefined);
    private _insecureKubeletReadonlyPortEnabled?;
    get insecureKubeletReadonlyPortEnabled(): string;
    set insecureKubeletReadonlyPortEnabled(value: string);
    resetInsecureKubeletReadonlyPortEnabled(): void;
    get insecureKubeletReadonlyPortEnabledInput(): string | undefined;
    private _loggingVariant?;
    get loggingVariant(): string;
    set loggingVariant(value: string);
    resetLoggingVariant(): void;
    get loggingVariantInput(): string | undefined;
    private _containerdConfig;
    get containerdConfig(): ContainerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfigOutputReference;
    putContainerdConfig(value: ContainerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfig): void;
    resetContainerdConfig(): void;
    get containerdConfigInput(): ContainerClusterNodePoolDefaultsNodeConfigDefaultsContainerdConfig | undefined;
    private _gcfsConfig;
    get gcfsConfig(): ContainerClusterNodePoolDefaultsNodeConfigDefaultsGcfsConfigOutputReference;
    putGcfsConfig(value: ContainerClusterNodePoolDefaultsNodeConfigDefaultsGcfsConfig): void;
    resetGcfsConfig(): void;
    get gcfsConfigInput(): ContainerClusterNodePoolDefaultsNodeConfigDefaultsGcfsConfig | undefined;
}
export interface ContainerClusterNodePoolDefaults {
    /**
    * node_config_defaults block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#node_config_defaults ContainerCluster#node_config_defaults}
    */
    readonly nodeConfigDefaults?: ContainerClusterNodePoolDefaultsNodeConfigDefaults;
}
export declare function containerClusterNodePoolDefaultsToTerraform(struct?: ContainerClusterNodePoolDefaultsOutputReference | ContainerClusterNodePoolDefaults): any;
export declare function containerClusterNodePoolDefaultsToHclTerraform(struct?: ContainerClusterNodePoolDefaultsOutputReference | ContainerClusterNodePoolDefaults): any;
export declare class ContainerClusterNodePoolDefaultsOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): ContainerClusterNodePoolDefaults | undefined;
    set internalValue(value: ContainerClusterNodePoolDefaults | undefined);
    private _nodeConfigDefaults;
    get nodeConfigDefaults(): ContainerClusterNodePoolDefaultsNodeConfigDefaultsOutputReference;
    putNodeConfigDefaults(value: ContainerClusterNodePoolDefaultsNodeConfigDefaults): void;
    resetNodeConfigDefaults(): void;
    get nodeConfigDefaultsInput(): ContainerClusterNodePoolDefaultsNodeConfigDefaults | undefined;
}
export interface ContainerClusterNotificationConfigPubsubFilter {
    /**
    * Can be used to filter what notifications are sent. Valid values include include UPGRADE_AVAILABLE_EVENT, UPGRADE_EVENT, SECURITY_BULLETIN_EVENT, and UPGRADE_INFO_EVENT
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#event_type ContainerCluster#event_type}
    */
    readonly eventType: string[];
}
export declare function containerClusterNotificationConfigPubsubFilterToTerraform(struct?: ContainerClusterNotificationConfigPubsubFilterOutputReference | ContainerClusterNotificationConfigPubsubFilter): any;
export declare function containerClusterNotificationConfigPubsubFilterToHclTerraform(struct?: ContainerClusterNotificationConfigPubsubFilterOutputReference | ContainerClusterNotificationConfigPubsubFilter): any;
export declare class ContainerClusterNotificationConfigPubsubFilterOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): ContainerClusterNotificationConfigPubsubFilter | undefined;
    set internalValue(value: ContainerClusterNotificationConfigPubsubFilter | undefined);
    private _eventType?;
    get eventType(): string[];
    set eventType(value: string[]);
    get eventTypeInput(): string[] | undefined;
}
export interface ContainerClusterNotificationConfigPubsub {
    /**
    * Whether or not the notification config is enabled
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#enabled ContainerCluster#enabled}
    */
    readonly enabled: boolean | cdktf.IResolvable;
    /**
    * The pubsub topic to push upgrade notifications to. Must be in the same project as the cluster. Must be in the format: projects/{project}/topics/{topic}.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#topic ContainerCluster#topic}
    */
    readonly topic?: string;
    /**
    * filter block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#filter ContainerCluster#filter}
    */
    readonly filter?: ContainerClusterNotificationConfigPubsubFilter;
}
export declare function containerClusterNotificationConfigPubsubToTerraform(struct?: ContainerClusterNotificationConfigPubsubOutputReference | ContainerClusterNotificationConfigPubsub): any;
export declare function containerClusterNotificationConfigPubsubToHclTerraform(struct?: ContainerClusterNotificationConfigPubsubOutputReference | ContainerClusterNotificationConfigPubsub): any;
export declare class ContainerClusterNotificationConfigPubsubOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): ContainerClusterNotificationConfigPubsub | undefined;
    set internalValue(value: ContainerClusterNotificationConfigPubsub | undefined);
    private _enabled?;
    get enabled(): boolean | cdktf.IResolvable;
    set enabled(value: boolean | cdktf.IResolvable);
    get enabledInput(): boolean | cdktf.IResolvable | undefined;
    private _topic?;
    get topic(): string;
    set topic(value: string);
    resetTopic(): void;
    get topicInput(): string | undefined;
    private _filter;
    get filter(): ContainerClusterNotificationConfigPubsubFilterOutputReference;
    putFilter(value: ContainerClusterNotificationConfigPubsubFilter): void;
    resetFilter(): void;
    get filterInput(): ContainerClusterNotificationConfigPubsubFilter | undefined;
}
export interface ContainerClusterNotificationConfig {
    /**
    * pubsub block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#pubsub ContainerCluster#pubsub}
    */
    readonly pubsub: ContainerClusterNotificationConfigPubsub;
}
export declare function containerClusterNotificationConfigToTerraform(struct?: ContainerClusterNotificationConfigOutputReference | ContainerClusterNotificationConfig): any;
export declare function containerClusterNotificationConfigToHclTerraform(struct?: ContainerClusterNotificationConfigOutputReference | ContainerClusterNotificationConfig): any;
export declare class ContainerClusterNotificationConfigOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): ContainerClusterNotificationConfig | undefined;
    set internalValue(value: ContainerClusterNotificationConfig | undefined);
    private _pubsub;
    get pubsub(): ContainerClusterNotificationConfigPubsubOutputReference;
    putPubsub(value: ContainerClusterNotificationConfigPubsub): void;
    get pubsubInput(): ContainerClusterNotificationConfigPubsub | undefined;
}
export interface ContainerClusterPodAutoscaling {
    /**
    *
    * 								HPA Profile is used to configure the Horizontal Pod Autoscaler (HPA) profile for the cluster.
    * 								Available options include:
    * 								- NONE: Customers explicitly opt-out of HPA profiles.
    * 								- PERFORMANCE: PERFORMANCE is used when customers opt-in to the performance HPA profile. In this profile we support a higher number of HPAs per cluster and faster metrics collection for workload autoscaling.
    *
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#hpa_profile ContainerCluster#hpa_profile}
    */
    readonly hpaProfile: string;
}
export declare function containerClusterPodAutoscalingToTerraform(struct?: ContainerClusterPodAutoscalingOutputReference | ContainerClusterPodAutoscaling): any;
export declare function containerClusterPodAutoscalingToHclTerraform(struct?: ContainerClusterPodAutoscalingOutputReference | ContainerClusterPodAutoscaling): any;
export declare class ContainerClusterPodAutoscalingOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): ContainerClusterPodAutoscaling | undefined;
    set internalValue(value: ContainerClusterPodAutoscaling | undefined);
    private _hpaProfile?;
    get hpaProfile(): string;
    set hpaProfile(value: string);
    get hpaProfileInput(): string | undefined;
}
export interface ContainerClusterPrivateClusterConfigMasterGlobalAccessConfig {
    /**
    * Whether the cluster master is accessible globally or not.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#enabled ContainerCluster#enabled}
    */
    readonly enabled: boolean | cdktf.IResolvable;
}
export declare function containerClusterPrivateClusterConfigMasterGlobalAccessConfigToTerraform(struct?: ContainerClusterPrivateClusterConfigMasterGlobalAccessConfigOutputReference | ContainerClusterPrivateClusterConfigMasterGlobalAccessConfig): any;
export declare function containerClusterPrivateClusterConfigMasterGlobalAccessConfigToHclTerraform(struct?: ContainerClusterPrivateClusterConfigMasterGlobalAccessConfigOutputReference | ContainerClusterPrivateClusterConfigMasterGlobalAccessConfig): any;
export declare class ContainerClusterPrivateClusterConfigMasterGlobalAccessConfigOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): ContainerClusterPrivateClusterConfigMasterGlobalAccessConfig | undefined;
    set internalValue(value: ContainerClusterPrivateClusterConfigMasterGlobalAccessConfig | undefined);
    private _enabled?;
    get enabled(): boolean | cdktf.IResolvable;
    set enabled(value: boolean | cdktf.IResolvable);
    get enabledInput(): boolean | cdktf.IResolvable | undefined;
}
export interface ContainerClusterPrivateClusterConfig {
    /**
    * When true, the cluster's private endpoint is used as the cluster endpoint and access through the public endpoint is disabled. When false, either endpoint can be used.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#enable_private_endpoint ContainerCluster#enable_private_endpoint}
    */
    readonly enablePrivateEndpoint?: boolean | cdktf.IResolvable;
    /**
    * Enables the private cluster feature, creating a private endpoint on the cluster. In a private cluster, nodes only have RFC 1918 private addresses and communicate with the master's private endpoint via private networking.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#enable_private_nodes ContainerCluster#enable_private_nodes}
    */
    readonly enablePrivateNodes?: boolean | cdktf.IResolvable;
    /**
    * The IP range in CIDR notation to use for the hosted master network. This range will be used for assigning private IP addresses to the cluster master(s) and the ILB VIP. This range must not overlap with any other ranges in use within the cluster's network, and it must be a /28 subnet. See Private Cluster Limitations for more details. This field only applies to private clusters, when enable_private_nodes is true.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#master_ipv4_cidr_block ContainerCluster#master_ipv4_cidr_block}
    */
    readonly masterIpv4CidrBlock?: string;
    /**
    * Subnetwork in cluster's network where master's endpoint will be provisioned.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#private_endpoint_subnetwork ContainerCluster#private_endpoint_subnetwork}
    */
    readonly privateEndpointSubnetwork?: string;
    /**
    * master_global_access_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#master_global_access_config ContainerCluster#master_global_access_config}
    */
    readonly masterGlobalAccessConfig?: ContainerClusterPrivateClusterConfigMasterGlobalAccessConfig;
}
export declare function containerClusterPrivateClusterConfigToTerraform(struct?: ContainerClusterPrivateClusterConfigOutputReference | ContainerClusterPrivateClusterConfig): any;
export declare function containerClusterPrivateClusterConfigToHclTerraform(struct?: ContainerClusterPrivateClusterConfigOutputReference | ContainerClusterPrivateClusterConfig): any;
export declare class ContainerClusterPrivateClusterConfigOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): ContainerClusterPrivateClusterConfig | undefined;
    set internalValue(value: ContainerClusterPrivateClusterConfig | undefined);
    private _enablePrivateEndpoint?;
    get enablePrivateEndpoint(): boolean | cdktf.IResolvable;
    set enablePrivateEndpoint(value: boolean | cdktf.IResolvable);
    resetEnablePrivateEndpoint(): void;
    get enablePrivateEndpointInput(): boolean | cdktf.IResolvable | undefined;
    private _enablePrivateNodes?;
    get enablePrivateNodes(): boolean | cdktf.IResolvable;
    set enablePrivateNodes(value: boolean | cdktf.IResolvable);
    resetEnablePrivateNodes(): void;
    get enablePrivateNodesInput(): boolean | cdktf.IResolvable | undefined;
    private _masterIpv4CidrBlock?;
    get masterIpv4CidrBlock(): string;
    set masterIpv4CidrBlock(value: string);
    resetMasterIpv4CidrBlock(): void;
    get masterIpv4CidrBlockInput(): string | undefined;
    get peeringName(): string;
    get privateEndpoint(): string;
    private _privateEndpointSubnetwork?;
    get privateEndpointSubnetwork(): string;
    set privateEndpointSubnetwork(value: string);
    resetPrivateEndpointSubnetwork(): void;
    get privateEndpointSubnetworkInput(): string | undefined;
    get publicEndpoint(): string;
    private _masterGlobalAccessConfig;
    get masterGlobalAccessConfig(): ContainerClusterPrivateClusterConfigMasterGlobalAccessConfigOutputReference;
    putMasterGlobalAccessConfig(value: ContainerClusterPrivateClusterConfigMasterGlobalAccessConfig): void;
    resetMasterGlobalAccessConfig(): void;
    get masterGlobalAccessConfigInput(): ContainerClusterPrivateClusterConfigMasterGlobalAccessConfig | undefined;
}
export interface ContainerClusterReleaseChannel {
    /**
    * The selected release channel. Accepted values are:
    * * UNSPECIFIED: Not set.
    * * RAPID: Weekly upgrade cadence; Early testers and developers who requires new features.
    * * REGULAR: Multiple per month upgrade cadence; Production users who need features not yet offered in the Stable channel.
    * * STABLE: Every few months upgrade cadence; Production users who need stability above all else, and for whom frequent upgrades are too risky.
    * * EXTENDED: GKE provides extended support for Kubernetes minor versions through the Extended channel. With this channel, you can stay on a minor version for up to 24 months.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#channel ContainerCluster#channel}
    */
    readonly channel: string;
}
export declare function containerClusterReleaseChannelToTerraform(struct?: ContainerClusterReleaseChannelOutputReference | ContainerClusterReleaseChannel): any;
export declare function containerClusterReleaseChannelToHclTerraform(struct?: ContainerClusterReleaseChannelOutputReference | ContainerClusterReleaseChannel): any;
export declare class ContainerClusterReleaseChannelOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): ContainerClusterReleaseChannel | undefined;
    set internalValue(value: ContainerClusterReleaseChannel | undefined);
    private _channel?;
    get channel(): string;
    set channel(value: string);
    get channelInput(): string | undefined;
}
export interface ContainerClusterResourceUsageExportConfigBigqueryDestination {
    /**
    * The ID of a BigQuery Dataset.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#dataset_id ContainerCluster#dataset_id}
    */
    readonly datasetId: string;
}
export declare function containerClusterResourceUsageExportConfigBigqueryDestinationToTerraform(struct?: ContainerClusterResourceUsageExportConfigBigqueryDestinationOutputReference | ContainerClusterResourceUsageExportConfigBigqueryDestination): any;
export declare function containerClusterResourceUsageExportConfigBigqueryDestinationToHclTerraform(struct?: ContainerClusterResourceUsageExportConfigBigqueryDestinationOutputReference | ContainerClusterResourceUsageExportConfigBigqueryDestination): any;
export declare class ContainerClusterResourceUsageExportConfigBigqueryDestinationOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): ContainerClusterResourceUsageExportConfigBigqueryDestination | undefined;
    set internalValue(value: ContainerClusterResourceUsageExportConfigBigqueryDestination | undefined);
    private _datasetId?;
    get datasetId(): string;
    set datasetId(value: string);
    get datasetIdInput(): string | undefined;
}
export interface ContainerClusterResourceUsageExportConfig {
    /**
    * Whether to enable network egress metering for this cluster. If enabled, a daemonset will be created in the cluster to meter network egress traffic.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#enable_network_egress_metering ContainerCluster#enable_network_egress_metering}
    */
    readonly enableNetworkEgressMetering?: boolean | cdktf.IResolvable;
    /**
    * Whether to enable resource consumption metering on this cluster. When enabled, a table will be created in the resource export BigQuery dataset to store resource consumption data. The resulting table can be joined with the resource usage table or with BigQuery billing export. Defaults to true.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#enable_resource_consumption_metering ContainerCluster#enable_resource_consumption_metering}
    */
    readonly enableResourceConsumptionMetering?: boolean | cdktf.IResolvable;
    /**
    * bigquery_destination block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#bigquery_destination ContainerCluster#bigquery_destination}
    */
    readonly bigqueryDestination: ContainerClusterResourceUsageExportConfigBigqueryDestination;
}
export declare function containerClusterResourceUsageExportConfigToTerraform(struct?: ContainerClusterResourceUsageExportConfigOutputReference | ContainerClusterResourceUsageExportConfig): any;
export declare function containerClusterResourceUsageExportConfigToHclTerraform(struct?: ContainerClusterResourceUsageExportConfigOutputReference | ContainerClusterResourceUsageExportConfig): any;
export declare class ContainerClusterResourceUsageExportConfigOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): ContainerClusterResourceUsageExportConfig | undefined;
    set internalValue(value: ContainerClusterResourceUsageExportConfig | undefined);
    private _enableNetworkEgressMetering?;
    get enableNetworkEgressMetering(): boolean | cdktf.IResolvable;
    set enableNetworkEgressMetering(value: boolean | cdktf.IResolvable);
    resetEnableNetworkEgressMetering(): void;
    get enableNetworkEgressMeteringInput(): boolean | cdktf.IResolvable | undefined;
    private _enableResourceConsumptionMetering?;
    get enableResourceConsumptionMetering(): boolean | cdktf.IResolvable;
    set enableResourceConsumptionMetering(value: boolean | cdktf.IResolvable);
    resetEnableResourceConsumptionMetering(): void;
    get enableResourceConsumptionMeteringInput(): boolean | cdktf.IResolvable | undefined;
    private _bigqueryDestination;
    get bigqueryDestination(): ContainerClusterResourceUsageExportConfigBigqueryDestinationOutputReference;
    putBigqueryDestination(value: ContainerClusterResourceUsageExportConfigBigqueryDestination): void;
    get bigqueryDestinationInput(): ContainerClusterResourceUsageExportConfigBigqueryDestination | undefined;
}
export interface ContainerClusterSecretManagerConfig {
    /**
    * Enable the Secret manager csi component.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#enabled ContainerCluster#enabled}
    */
    readonly enabled: boolean | cdktf.IResolvable;
}
export declare function containerClusterSecretManagerConfigToTerraform(struct?: ContainerClusterSecretManagerConfigOutputReference | ContainerClusterSecretManagerConfig): any;
export declare function containerClusterSecretManagerConfigToHclTerraform(struct?: ContainerClusterSecretManagerConfigOutputReference | ContainerClusterSecretManagerConfig): any;
export declare class ContainerClusterSecretManagerConfigOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): ContainerClusterSecretManagerConfig | undefined;
    set internalValue(value: ContainerClusterSecretManagerConfig | undefined);
    private _enabled?;
    get enabled(): boolean | cdktf.IResolvable;
    set enabled(value: boolean | cdktf.IResolvable);
    get enabledInput(): boolean | cdktf.IResolvable | undefined;
}
export interface ContainerClusterSecurityPostureConfig {
    /**
    * Sets the mode of the Kubernetes security posture API's off-cluster features. Available options include DISABLED, BASIC, and ENTERPRISE.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#mode ContainerCluster#mode}
    */
    readonly mode?: string;
    /**
    * Sets the mode of the Kubernetes security posture API's workload vulnerability scanning. Available options include VULNERABILITY_DISABLED, VULNERABILITY_BASIC and VULNERABILITY_ENTERPRISE.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#vulnerability_mode ContainerCluster#vulnerability_mode}
    */
    readonly vulnerabilityMode?: string;
}
export declare function containerClusterSecurityPostureConfigToTerraform(struct?: ContainerClusterSecurityPostureConfigOutputReference | ContainerClusterSecurityPostureConfig): any;
export declare function containerClusterSecurityPostureConfigToHclTerraform(struct?: ContainerClusterSecurityPostureConfigOutputReference | ContainerClusterSecurityPostureConfig): any;
export declare class ContainerClusterSecurityPostureConfigOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): ContainerClusterSecurityPostureConfig | undefined;
    set internalValue(value: ContainerClusterSecurityPostureConfig | undefined);
    private _mode?;
    get mode(): string;
    set mode(value: string);
    resetMode(): void;
    get modeInput(): string | undefined;
    private _vulnerabilityMode?;
    get vulnerabilityMode(): string;
    set vulnerabilityMode(value: string);
    resetVulnerabilityMode(): void;
    get vulnerabilityModeInput(): string | undefined;
}
export interface ContainerClusterServiceExternalIpsConfig {
    /**
    * When enabled, services with external ips specified will be allowed.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#enabled ContainerCluster#enabled}
    */
    readonly enabled: boolean | cdktf.IResolvable;
}
export declare function containerClusterServiceExternalIpsConfigToTerraform(struct?: ContainerClusterServiceExternalIpsConfigOutputReference | ContainerClusterServiceExternalIpsConfig): any;
export declare function containerClusterServiceExternalIpsConfigToHclTerraform(struct?: ContainerClusterServiceExternalIpsConfigOutputReference | ContainerClusterServiceExternalIpsConfig): any;
export declare class ContainerClusterServiceExternalIpsConfigOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): ContainerClusterServiceExternalIpsConfig | undefined;
    set internalValue(value: ContainerClusterServiceExternalIpsConfig | undefined);
    private _enabled?;
    get enabled(): boolean | cdktf.IResolvable;
    set enabled(value: boolean | cdktf.IResolvable);
    get enabledInput(): boolean | cdktf.IResolvable | undefined;
}
export interface ContainerClusterTimeouts {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#create ContainerCluster#create}
    */
    readonly create?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#delete ContainerCluster#delete}
    */
    readonly delete?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#read ContainerCluster#read}
    */
    readonly read?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#update ContainerCluster#update}
    */
    readonly update?: string;
}
export declare function containerClusterTimeoutsToTerraform(struct?: ContainerClusterTimeouts | cdktf.IResolvable): any;
export declare function containerClusterTimeoutsToHclTerraform(struct?: ContainerClusterTimeouts | cdktf.IResolvable): any;
export declare class ContainerClusterTimeoutsOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    private resolvableValue?;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): ContainerClusterTimeouts | cdktf.IResolvable | undefined;
    set internalValue(value: ContainerClusterTimeouts | cdktf.IResolvable | undefined);
    private _create?;
    get create(): string;
    set create(value: string);
    resetCreate(): void;
    get createInput(): string | undefined;
    private _delete?;
    get delete(): string;
    set delete(value: string);
    resetDelete(): void;
    get deleteInput(): string | undefined;
    private _read?;
    get read(): string;
    set read(value: string);
    resetRead(): void;
    get readInput(): string | undefined;
    private _update?;
    get update(): string;
    set update(value: string);
    resetUpdate(): void;
    get updateInput(): string | undefined;
}
export interface ContainerClusterUserManagedKeysConfig {
    /**
    * The Certificate Authority Service caPool to use for the aggreation CA in this cluster.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#aggregation_ca ContainerCluster#aggregation_ca}
    */
    readonly aggregationCa?: string;
    /**
    * The Certificate Authority Service caPool to use for the cluster CA in this cluster.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#cluster_ca ContainerCluster#cluster_ca}
    */
    readonly clusterCa?: string;
    /**
    * The Cloud KMS cryptoKey to use for Confidential Hyperdisk on the control plane nodes.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#control_plane_disk_encryption_key ContainerCluster#control_plane_disk_encryption_key}
    */
    readonly controlPlaneDiskEncryptionKey?: string;
    /**
    * The Certificate Authority Service caPool to use for the etcd API CA in this cluster.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#etcd_api_ca ContainerCluster#etcd_api_ca}
    */
    readonly etcdApiCa?: string;
    /**
    * The Certificate Authority Service caPool to use for the etcd peer CA in this cluster.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#etcd_peer_ca ContainerCluster#etcd_peer_ca}
    */
    readonly etcdPeerCa?: string;
    /**
    * Resource path of the Cloud KMS cryptoKey to use for encryption of internal etcd backups.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#gkeops_etcd_backup_encryption_key ContainerCluster#gkeops_etcd_backup_encryption_key}
    */
    readonly gkeopsEtcdBackupEncryptionKey?: string;
    /**
    * The Cloud KMS cryptoKeyVersions to use for signing service account JWTs issued by this cluster.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#service_account_signing_keys ContainerCluster#service_account_signing_keys}
    */
    readonly serviceAccountSigningKeys?: string[];
    /**
    * The Cloud KMS cryptoKeyVersions to use for verifying service account JWTs issued by this cluster.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#service_account_verification_keys ContainerCluster#service_account_verification_keys}
    */
    readonly serviceAccountVerificationKeys?: string[];
}
export declare function containerClusterUserManagedKeysConfigToTerraform(struct?: ContainerClusterUserManagedKeysConfigOutputReference | ContainerClusterUserManagedKeysConfig): any;
export declare function containerClusterUserManagedKeysConfigToHclTerraform(struct?: ContainerClusterUserManagedKeysConfigOutputReference | ContainerClusterUserManagedKeysConfig): any;
export declare class ContainerClusterUserManagedKeysConfigOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): ContainerClusterUserManagedKeysConfig | undefined;
    set internalValue(value: ContainerClusterUserManagedKeysConfig | undefined);
    private _aggregationCa?;
    get aggregationCa(): string;
    set aggregationCa(value: string);
    resetAggregationCa(): void;
    get aggregationCaInput(): string | undefined;
    private _clusterCa?;
    get clusterCa(): string;
    set clusterCa(value: string);
    resetClusterCa(): void;
    get clusterCaInput(): string | undefined;
    private _controlPlaneDiskEncryptionKey?;
    get controlPlaneDiskEncryptionKey(): string;
    set controlPlaneDiskEncryptionKey(value: string);
    resetControlPlaneDiskEncryptionKey(): void;
    get controlPlaneDiskEncryptionKeyInput(): string | undefined;
    private _etcdApiCa?;
    get etcdApiCa(): string;
    set etcdApiCa(value: string);
    resetEtcdApiCa(): void;
    get etcdApiCaInput(): string | undefined;
    private _etcdPeerCa?;
    get etcdPeerCa(): string;
    set etcdPeerCa(value: string);
    resetEtcdPeerCa(): void;
    get etcdPeerCaInput(): string | undefined;
    private _gkeopsEtcdBackupEncryptionKey?;
    get gkeopsEtcdBackupEncryptionKey(): string;
    set gkeopsEtcdBackupEncryptionKey(value: string);
    resetGkeopsEtcdBackupEncryptionKey(): void;
    get gkeopsEtcdBackupEncryptionKeyInput(): string | undefined;
    private _serviceAccountSigningKeys?;
    get serviceAccountSigningKeys(): string[];
    set serviceAccountSigningKeys(value: string[]);
    resetServiceAccountSigningKeys(): void;
    get serviceAccountSigningKeysInput(): string[] | undefined;
    private _serviceAccountVerificationKeys?;
    get serviceAccountVerificationKeys(): string[];
    set serviceAccountVerificationKeys(value: string[]);
    resetServiceAccountVerificationKeys(): void;
    get serviceAccountVerificationKeysInput(): string[] | undefined;
}
export interface ContainerClusterVerticalPodAutoscaling {
    /**
    * Enables vertical pod autoscaling.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#enabled ContainerCluster#enabled}
    */
    readonly enabled: boolean | cdktf.IResolvable;
}
export declare function containerClusterVerticalPodAutoscalingToTerraform(struct?: ContainerClusterVerticalPodAutoscalingOutputReference | ContainerClusterVerticalPodAutoscaling): any;
export declare function containerClusterVerticalPodAutoscalingToHclTerraform(struct?: ContainerClusterVerticalPodAutoscalingOutputReference | ContainerClusterVerticalPodAutoscaling): any;
export declare class ContainerClusterVerticalPodAutoscalingOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): ContainerClusterVerticalPodAutoscaling | undefined;
    set internalValue(value: ContainerClusterVerticalPodAutoscaling | undefined);
    private _enabled?;
    get enabled(): boolean | cdktf.IResolvable;
    set enabled(value: boolean | cdktf.IResolvable);
    get enabledInput(): boolean | cdktf.IResolvable | undefined;
}
export interface ContainerClusterWorkloadIdentityConfig {
    /**
    * The workload pool to attach all Kubernetes service accounts to.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/container_cluster#workload_pool ContainerCluster#workload_pool}
    */
    readonly workloadPool?: string;
}
export declare function containerClusterWorkloadIdentityConfigToTerraform(struct?: ContainerClusterWorkloadIdentityConfigOutputReference | ContainerClusterWorkloadIdentityConfig): any;
export declare function containerClusterWorkloadIdentityConfigToHclTerraform(struct?: ContainerClusterWorkloadIdentityConfigOutputReference | ContainerClusterWorkloadIdentityConfig): any;
export declare class ContainerClusterWorkloadIdentityConfigOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): ContainerClusterWorkloadIdentityConfig | undefined;
    set internalValue(value: ContainerClusterWorkloadIdentityConfig | undefined);
    private _workloadPool?;
    get workloadPool(): string;
    set workloadPool(value: string);
    resetWorkloadPool(): void;
    get workloadPoolInput(): string | undefined;
}
