/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */
import * as cdktf from 'cdktf';
import { ContainerClusterNodePoolDefaultsNodeConfigDefaults, ContainerClusterNodePoolDefaultsNodeConfigDefaultsOutputReference } from './structs0';
export interface ContainerClusterNodePoolDefaults {
    /**
    * node_config_defaults block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.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 and SECURITY_BULLETIN_EVENT
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.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/5.43.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/5.43.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/5.43.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/5.43.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 ContainerClusterPrivateClusterConfigMasterGlobalAccessConfig {
    /**
    * Whether the cluster master is accessible globally or not.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.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/5.43.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/5.43.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/5.43.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/5.43.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/5.43.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/5.43.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/5.43.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/5.43.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/5.43.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/5.43.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 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/5.43.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/5.43.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/5.43.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/5.43.0/docs/resources/container_cluster#create ContainerCluster#create}
    */
    readonly create?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/container_cluster#delete ContainerCluster#delete}
    */
    readonly delete?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/container_cluster#read ContainerCluster#read}
    */
    readonly read?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.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 ContainerClusterVerticalPodAutoscaling {
    /**
    * Enables vertical pod autoscaling.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.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/5.43.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;
}
