/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */
import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface ContainerNodePoolConfig extends cdktf.TerraformMetaArguments {
    /**
    * The cluster to create the node pool for. Cluster must be present in location provided for zonal clusters.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#cluster ContainerNodePool#cluster}
    */
    readonly cluster: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#id ContainerNodePool#id}
    *
    * Please be aware that the id field is automatically added to all resources in Terraform providers using a Terraform provider SDK version below 2.
    * If you experience problems setting this value it might not be settable. Please take a look at the provider documentation to ensure it should be settable.
    */
    readonly id?: string;
    /**
    * 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.13.0/docs/resources/container_node_pool#initial_node_count ContainerNodePool#initial_node_count}
    */
    readonly initialNodeCount?: number;
    /**
    * The location (region or zone) of the cluster.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#location ContainerNodePool#location}
    */
    readonly location?: string;
    /**
    * 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.13.0/docs/resources/container_node_pool#max_pods_per_node ContainerNodePool#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.13.0/docs/resources/container_node_pool#name ContainerNodePool#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.13.0/docs/resources/container_node_pool#name_prefix ContainerNodePool#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.13.0/docs/resources/container_node_pool#node_count ContainerNodePool#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.13.0/docs/resources/container_node_pool#node_locations ContainerNodePool#node_locations}
    */
    readonly nodeLocations?: string[];
    /**
    * The ID of the project in which to create the node pool. If blank, the provider-configured project will be used.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#project ContainerNodePool#project}
    */
    readonly project?: 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.13.0/docs/resources/container_node_pool#version ContainerNodePool#version}
    */
    readonly version?: string;
    /**
    * autoscaling block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#autoscaling ContainerNodePool#autoscaling}
    */
    readonly autoscaling?: ContainerNodePoolAutoscaling;
    /**
    * management block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#management ContainerNodePool#management}
    */
    readonly management?: ContainerNodePoolManagement;
    /**
    * network_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#network_config ContainerNodePool#network_config}
    */
    readonly networkConfig?: ContainerNodePoolNetworkConfig;
    /**
    * node_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#node_config ContainerNodePool#node_config}
    */
    readonly nodeConfig?: ContainerNodePoolNodeConfig;
    /**
    * placement_policy block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#placement_policy ContainerNodePool#placement_policy}
    */
    readonly placementPolicy?: ContainerNodePoolPlacementPolicy;
    /**
    * queued_provisioning block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#queued_provisioning ContainerNodePool#queued_provisioning}
    */
    readonly queuedProvisioning?: ContainerNodePoolQueuedProvisioning;
    /**
    * timeouts block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#timeouts ContainerNodePool#timeouts}
    */
    readonly timeouts?: ContainerNodePoolTimeouts;
    /**
    * upgrade_settings block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#upgrade_settings ContainerNodePool#upgrade_settings}
    */
    readonly upgradeSettings?: ContainerNodePoolUpgradeSettings;
}
export interface ContainerNodePoolAutoscaling {
    /**
    * Location policy specifies the algorithm used when scaling-up the node pool. "BALANCED" - Is a best effort policy that aims to balance the sizes of available zones. "ANY" - Instructs the cluster autoscaler to prioritize utilization of unused reservations, and reduces preemption risk for Spot VMs.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#location_policy ContainerNodePool#location_policy}
    */
    readonly locationPolicy?: string;
    /**
    * Maximum number of nodes per zone in the node pool. Must be >= min_node_count. Cannot be used with total limits.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#max_node_count ContainerNodePool#max_node_count}
    */
    readonly maxNodeCount?: number;
    /**
    * Minimum number of nodes per zone in the node pool. Must be >=0 and <= max_node_count. Cannot be used with total limits.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#min_node_count ContainerNodePool#min_node_count}
    */
    readonly minNodeCount?: number;
    /**
    * Maximum number of all nodes in the node pool. Must be >= total_min_node_count. Cannot be used with per zone limits.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#total_max_node_count ContainerNodePool#total_max_node_count}
    */
    readonly totalMaxNodeCount?: number;
    /**
    * Minimum number of all nodes in the node pool. Must be >=0 and <= total_max_node_count. Cannot be used with per zone limits.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#total_min_node_count ContainerNodePool#total_min_node_count}
    */
    readonly totalMinNodeCount?: number;
}
export declare function containerNodePoolAutoscalingToTerraform(struct?: ContainerNodePoolAutoscalingOutputReference | ContainerNodePoolAutoscaling): any;
export declare function containerNodePoolAutoscalingToHclTerraform(struct?: ContainerNodePoolAutoscalingOutputReference | ContainerNodePoolAutoscaling): any;
export declare class ContainerNodePoolAutoscalingOutputReference 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(): ContainerNodePoolAutoscaling | undefined;
    set internalValue(value: ContainerNodePoolAutoscaling | undefined);
    private _locationPolicy?;
    get locationPolicy(): string;
    set locationPolicy(value: string);
    resetLocationPolicy(): void;
    get locationPolicyInput(): string | undefined;
    private _maxNodeCount?;
    get maxNodeCount(): number;
    set maxNodeCount(value: number);
    resetMaxNodeCount(): void;
    get maxNodeCountInput(): number | undefined;
    private _minNodeCount?;
    get minNodeCount(): number;
    set minNodeCount(value: number);
    resetMinNodeCount(): void;
    get minNodeCountInput(): number | undefined;
    private _totalMaxNodeCount?;
    get totalMaxNodeCount(): number;
    set totalMaxNodeCount(value: number);
    resetTotalMaxNodeCount(): void;
    get totalMaxNodeCountInput(): number | undefined;
    private _totalMinNodeCount?;
    get totalMinNodeCount(): number;
    set totalMinNodeCount(value: number);
    resetTotalMinNodeCount(): void;
    get totalMinNodeCountInput(): number | undefined;
}
export interface ContainerNodePoolManagement {
    /**
    * Whether the nodes will be automatically repaired. Enabled by default.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#auto_repair ContainerNodePool#auto_repair}
    */
    readonly autoRepair?: boolean | cdktf.IResolvable;
    /**
    * Whether the nodes will be automatically upgraded. Enabled by default.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#auto_upgrade ContainerNodePool#auto_upgrade}
    */
    readonly autoUpgrade?: boolean | cdktf.IResolvable;
}
export declare function containerNodePoolManagementToTerraform(struct?: ContainerNodePoolManagementOutputReference | ContainerNodePoolManagement): any;
export declare function containerNodePoolManagementToHclTerraform(struct?: ContainerNodePoolManagementOutputReference | ContainerNodePoolManagement): any;
export declare class ContainerNodePoolManagementOutputReference 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(): ContainerNodePoolManagement | undefined;
    set internalValue(value: ContainerNodePoolManagement | undefined);
    private _autoRepair?;
    get autoRepair(): boolean | cdktf.IResolvable;
    set autoRepair(value: boolean | cdktf.IResolvable);
    resetAutoRepair(): void;
    get autoRepairInput(): boolean | cdktf.IResolvable | undefined;
    private _autoUpgrade?;
    get autoUpgrade(): boolean | cdktf.IResolvable;
    set autoUpgrade(value: boolean | cdktf.IResolvable);
    resetAutoUpgrade(): void;
    get autoUpgradeInput(): boolean | cdktf.IResolvable | undefined;
}
export interface ContainerNodePoolNetworkConfigAdditionalNodeNetworkConfigs {
    /**
    * Name of the VPC where the additional interface belongs.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#network ContainerNodePool#network}
    */
    readonly network?: string;
    /**
    * Name of the subnetwork where the additional interface belongs.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#subnetwork ContainerNodePool#subnetwork}
    */
    readonly subnetwork?: string;
}
export declare function containerNodePoolNetworkConfigAdditionalNodeNetworkConfigsToTerraform(struct?: ContainerNodePoolNetworkConfigAdditionalNodeNetworkConfigs | cdktf.IResolvable): any;
export declare function containerNodePoolNetworkConfigAdditionalNodeNetworkConfigsToHclTerraform(struct?: ContainerNodePoolNetworkConfigAdditionalNodeNetworkConfigs | cdktf.IResolvable): any;
export declare class ContainerNodePoolNetworkConfigAdditionalNodeNetworkConfigsOutputReference 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(): ContainerNodePoolNetworkConfigAdditionalNodeNetworkConfigs | cdktf.IResolvable | undefined;
    set internalValue(value: ContainerNodePoolNetworkConfigAdditionalNodeNetworkConfigs | cdktf.IResolvable | undefined);
    private _network?;
    get network(): string;
    set network(value: string);
    resetNetwork(): void;
    get networkInput(): string | undefined;
    private _subnetwork?;
    get subnetwork(): string;
    set subnetwork(value: string);
    resetSubnetwork(): void;
    get subnetworkInput(): string | undefined;
}
export declare class ContainerNodePoolNetworkConfigAdditionalNodeNetworkConfigsList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: ContainerNodePoolNetworkConfigAdditionalNodeNetworkConfigs[] | 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): ContainerNodePoolNetworkConfigAdditionalNodeNetworkConfigsOutputReference;
}
export interface ContainerNodePoolNetworkConfigAdditionalPodNetworkConfigs {
    /**
    * The maximum number of pods per node which use this pod network.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#max_pods_per_node ContainerNodePool#max_pods_per_node}
    */
    readonly maxPodsPerNode?: number;
    /**
    * The name of the secondary range on the subnet which provides IP address for this pod range.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#secondary_pod_range ContainerNodePool#secondary_pod_range}
    */
    readonly secondaryPodRange?: string;
    /**
    * Name of the subnetwork where the additional pod network belongs.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#subnetwork ContainerNodePool#subnetwork}
    */
    readonly subnetwork?: string;
}
export declare function containerNodePoolNetworkConfigAdditionalPodNetworkConfigsToTerraform(struct?: ContainerNodePoolNetworkConfigAdditionalPodNetworkConfigs | cdktf.IResolvable): any;
export declare function containerNodePoolNetworkConfigAdditionalPodNetworkConfigsToHclTerraform(struct?: ContainerNodePoolNetworkConfigAdditionalPodNetworkConfigs | cdktf.IResolvable): any;
export declare class ContainerNodePoolNetworkConfigAdditionalPodNetworkConfigsOutputReference 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(): ContainerNodePoolNetworkConfigAdditionalPodNetworkConfigs | cdktf.IResolvable | undefined;
    set internalValue(value: ContainerNodePoolNetworkConfigAdditionalPodNetworkConfigs | cdktf.IResolvable | undefined);
    private _maxPodsPerNode?;
    get maxPodsPerNode(): number;
    set maxPodsPerNode(value: number);
    resetMaxPodsPerNode(): void;
    get maxPodsPerNodeInput(): number | undefined;
    private _secondaryPodRange?;
    get secondaryPodRange(): string;
    set secondaryPodRange(value: string);
    resetSecondaryPodRange(): void;
    get secondaryPodRangeInput(): string | undefined;
    private _subnetwork?;
    get subnetwork(): string;
    set subnetwork(value: string);
    resetSubnetwork(): void;
    get subnetworkInput(): string | undefined;
}
export declare class ContainerNodePoolNetworkConfigAdditionalPodNetworkConfigsList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: ContainerNodePoolNetworkConfigAdditionalPodNetworkConfigs[] | 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): ContainerNodePoolNetworkConfigAdditionalPodNetworkConfigsOutputReference;
}
export interface ContainerNodePoolNetworkConfigNetworkPerformanceConfig {
    /**
    * Specifies the total network bandwidth tier for the NodePool.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#total_egress_bandwidth_tier ContainerNodePool#total_egress_bandwidth_tier}
    */
    readonly totalEgressBandwidthTier: string;
}
export declare function containerNodePoolNetworkConfigNetworkPerformanceConfigToTerraform(struct?: ContainerNodePoolNetworkConfigNetworkPerformanceConfigOutputReference | ContainerNodePoolNetworkConfigNetworkPerformanceConfig): any;
export declare function containerNodePoolNetworkConfigNetworkPerformanceConfigToHclTerraform(struct?: ContainerNodePoolNetworkConfigNetworkPerformanceConfigOutputReference | ContainerNodePoolNetworkConfigNetworkPerformanceConfig): any;
export declare class ContainerNodePoolNetworkConfigNetworkPerformanceConfigOutputReference 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(): ContainerNodePoolNetworkConfigNetworkPerformanceConfig | undefined;
    set internalValue(value: ContainerNodePoolNetworkConfigNetworkPerformanceConfig | undefined);
    private _totalEgressBandwidthTier?;
    get totalEgressBandwidthTier(): string;
    set totalEgressBandwidthTier(value: string);
    get totalEgressBandwidthTierInput(): string | undefined;
}
export interface ContainerNodePoolNetworkConfigPodCidrOverprovisionConfig {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#disabled ContainerNodePool#disabled}
    */
    readonly disabled: boolean | cdktf.IResolvable;
}
export declare function containerNodePoolNetworkConfigPodCidrOverprovisionConfigToTerraform(struct?: ContainerNodePoolNetworkConfigPodCidrOverprovisionConfigOutputReference | ContainerNodePoolNetworkConfigPodCidrOverprovisionConfig): any;
export declare function containerNodePoolNetworkConfigPodCidrOverprovisionConfigToHclTerraform(struct?: ContainerNodePoolNetworkConfigPodCidrOverprovisionConfigOutputReference | ContainerNodePoolNetworkConfigPodCidrOverprovisionConfig): any;
export declare class ContainerNodePoolNetworkConfigPodCidrOverprovisionConfigOutputReference 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(): ContainerNodePoolNetworkConfigPodCidrOverprovisionConfig | undefined;
    set internalValue(value: ContainerNodePoolNetworkConfigPodCidrOverprovisionConfig | undefined);
    private _disabled?;
    get disabled(): boolean | cdktf.IResolvable;
    set disabled(value: boolean | cdktf.IResolvable);
    get disabledInput(): boolean | cdktf.IResolvable | undefined;
}
export interface ContainerNodePoolNetworkConfig {
    /**
    * Whether to create a new range for pod IPs in this node pool. Defaults are provided for pod_range and pod_ipv4_cidr_block if they are not specified.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#create_pod_range ContainerNodePool#create_pod_range}
    */
    readonly createPodRange?: boolean | cdktf.IResolvable;
    /**
    * Whether nodes have internal IP addresses only.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#enable_private_nodes ContainerNodePool#enable_private_nodes}
    */
    readonly enablePrivateNodes?: boolean | cdktf.IResolvable;
    /**
    * The IP address range for pod IPs in this node pool. Only applicable if create_pod_range is true. Set to blank to have a range chosen with the default size. Set to /netmask (e.g. /14) to have a range chosen with a specific netmask. Set to a CIDR notation (e.g. 10.96.0.0/14) to pick a specific range to use.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#pod_ipv4_cidr_block ContainerNodePool#pod_ipv4_cidr_block}
    */
    readonly podIpv4CidrBlock?: string;
    /**
    * The ID of the secondary range for pod IPs. If create_pod_range is true, this ID is used for the new range. If create_pod_range is false, uses an existing secondary range with this ID.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#pod_range ContainerNodePool#pod_range}
    */
    readonly podRange?: string;
    /**
    * additional_node_network_configs block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#additional_node_network_configs ContainerNodePool#additional_node_network_configs}
    */
    readonly additionalNodeNetworkConfigs?: ContainerNodePoolNetworkConfigAdditionalNodeNetworkConfigs[] | cdktf.IResolvable;
    /**
    * additional_pod_network_configs block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#additional_pod_network_configs ContainerNodePool#additional_pod_network_configs}
    */
    readonly additionalPodNetworkConfigs?: ContainerNodePoolNetworkConfigAdditionalPodNetworkConfigs[] | cdktf.IResolvable;
    /**
    * network_performance_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#network_performance_config ContainerNodePool#network_performance_config}
    */
    readonly networkPerformanceConfig?: ContainerNodePoolNetworkConfigNetworkPerformanceConfig;
    /**
    * pod_cidr_overprovision_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#pod_cidr_overprovision_config ContainerNodePool#pod_cidr_overprovision_config}
    */
    readonly podCidrOverprovisionConfig?: ContainerNodePoolNetworkConfigPodCidrOverprovisionConfig;
}
export declare function containerNodePoolNetworkConfigToTerraform(struct?: ContainerNodePoolNetworkConfigOutputReference | ContainerNodePoolNetworkConfig): any;
export declare function containerNodePoolNetworkConfigToHclTerraform(struct?: ContainerNodePoolNetworkConfigOutputReference | ContainerNodePoolNetworkConfig): any;
export declare class ContainerNodePoolNetworkConfigOutputReference 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(): ContainerNodePoolNetworkConfig | undefined;
    set internalValue(value: ContainerNodePoolNetworkConfig | undefined);
    private _createPodRange?;
    get createPodRange(): boolean | cdktf.IResolvable;
    set createPodRange(value: boolean | cdktf.IResolvable);
    resetCreatePodRange(): void;
    get createPodRangeInput(): 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 _podIpv4CidrBlock?;
    get podIpv4CidrBlock(): string;
    set podIpv4CidrBlock(value: string);
    resetPodIpv4CidrBlock(): void;
    get podIpv4CidrBlockInput(): string | undefined;
    private _podRange?;
    get podRange(): string;
    set podRange(value: string);
    resetPodRange(): void;
    get podRangeInput(): string | undefined;
    private _additionalNodeNetworkConfigs;
    get additionalNodeNetworkConfigs(): ContainerNodePoolNetworkConfigAdditionalNodeNetworkConfigsList;
    putAdditionalNodeNetworkConfigs(value: ContainerNodePoolNetworkConfigAdditionalNodeNetworkConfigs[] | cdktf.IResolvable): void;
    resetAdditionalNodeNetworkConfigs(): void;
    get additionalNodeNetworkConfigsInput(): cdktf.IResolvable | ContainerNodePoolNetworkConfigAdditionalNodeNetworkConfigs[] | undefined;
    private _additionalPodNetworkConfigs;
    get additionalPodNetworkConfigs(): ContainerNodePoolNetworkConfigAdditionalPodNetworkConfigsList;
    putAdditionalPodNetworkConfigs(value: ContainerNodePoolNetworkConfigAdditionalPodNetworkConfigs[] | cdktf.IResolvable): void;
    resetAdditionalPodNetworkConfigs(): void;
    get additionalPodNetworkConfigsInput(): cdktf.IResolvable | ContainerNodePoolNetworkConfigAdditionalPodNetworkConfigs[] | undefined;
    private _networkPerformanceConfig;
    get networkPerformanceConfig(): ContainerNodePoolNetworkConfigNetworkPerformanceConfigOutputReference;
    putNetworkPerformanceConfig(value: ContainerNodePoolNetworkConfigNetworkPerformanceConfig): void;
    resetNetworkPerformanceConfig(): void;
    get networkPerformanceConfigInput(): ContainerNodePoolNetworkConfigNetworkPerformanceConfig | undefined;
    private _podCidrOverprovisionConfig;
    get podCidrOverprovisionConfig(): ContainerNodePoolNetworkConfigPodCidrOverprovisionConfigOutputReference;
    putPodCidrOverprovisionConfig(value: ContainerNodePoolNetworkConfigPodCidrOverprovisionConfig): void;
    resetPodCidrOverprovisionConfig(): void;
    get podCidrOverprovisionConfigInput(): ContainerNodePoolNetworkConfigPodCidrOverprovisionConfig | undefined;
}
export interface ContainerNodePoolNodeConfigEffectiveTaints {
}
export declare function containerNodePoolNodeConfigEffectiveTaintsToTerraform(struct?: ContainerNodePoolNodeConfigEffectiveTaints): any;
export declare function containerNodePoolNodeConfigEffectiveTaintsToHclTerraform(struct?: ContainerNodePoolNodeConfigEffectiveTaints): any;
export declare class ContainerNodePoolNodeConfigEffectiveTaintsOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @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(): ContainerNodePoolNodeConfigEffectiveTaints | undefined;
    set internalValue(value: ContainerNodePoolNodeConfigEffectiveTaints | undefined);
    get effect(): string;
    get key(): string;
    get value(): string;
}
export declare class ContainerNodePoolNodeConfigEffectiveTaintsList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    /**
    * @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): ContainerNodePoolNodeConfigEffectiveTaintsOutputReference;
}
export interface ContainerNodePoolNodeConfigAdvancedMachineFeatures {
    /**
    * Whether the node should have nested virtualization enabled.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#enable_nested_virtualization ContainerNodePool#enable_nested_virtualization}
    */
    readonly enableNestedVirtualization?: boolean | cdktf.IResolvable;
    /**
    * The number of threads per physical core. To disable simultaneous multithreading (SMT) set this to 1. If unset, the maximum number of threads supported per core by the underlying processor is assumed.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#threads_per_core ContainerNodePool#threads_per_core}
    */
    readonly threadsPerCore: number;
}
export declare function containerNodePoolNodeConfigAdvancedMachineFeaturesToTerraform(struct?: ContainerNodePoolNodeConfigAdvancedMachineFeaturesOutputReference | ContainerNodePoolNodeConfigAdvancedMachineFeatures): any;
export declare function containerNodePoolNodeConfigAdvancedMachineFeaturesToHclTerraform(struct?: ContainerNodePoolNodeConfigAdvancedMachineFeaturesOutputReference | ContainerNodePoolNodeConfigAdvancedMachineFeatures): any;
export declare class ContainerNodePoolNodeConfigAdvancedMachineFeaturesOutputReference 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(): ContainerNodePoolNodeConfigAdvancedMachineFeatures | undefined;
    set internalValue(value: ContainerNodePoolNodeConfigAdvancedMachineFeatures | undefined);
    private _enableNestedVirtualization?;
    get enableNestedVirtualization(): boolean | cdktf.IResolvable;
    set enableNestedVirtualization(value: boolean | cdktf.IResolvable);
    resetEnableNestedVirtualization(): void;
    get enableNestedVirtualizationInput(): boolean | cdktf.IResolvable | undefined;
    private _threadsPerCore?;
    get threadsPerCore(): number;
    set threadsPerCore(value: number);
    get threadsPerCoreInput(): number | undefined;
}
export interface ContainerNodePoolNodeConfigConfidentialNodes {
    /**
    * Whether Confidential Nodes feature is enabled for all nodes in this pool.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#enabled ContainerNodePool#enabled}
    */
    readonly enabled: boolean | cdktf.IResolvable;
}
export declare function containerNodePoolNodeConfigConfidentialNodesToTerraform(struct?: ContainerNodePoolNodeConfigConfidentialNodesOutputReference | ContainerNodePoolNodeConfigConfidentialNodes): any;
export declare function containerNodePoolNodeConfigConfidentialNodesToHclTerraform(struct?: ContainerNodePoolNodeConfigConfidentialNodesOutputReference | ContainerNodePoolNodeConfigConfidentialNodes): any;
export declare class ContainerNodePoolNodeConfigConfidentialNodesOutputReference 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(): ContainerNodePoolNodeConfigConfidentialNodes | undefined;
    set internalValue(value: ContainerNodePoolNodeConfigConfidentialNodes | undefined);
    private _enabled?;
    get enabled(): boolean | cdktf.IResolvable;
    set enabled(value: boolean | cdktf.IResolvable);
    get enabledInput(): boolean | cdktf.IResolvable | undefined;
}
export interface ContainerNodePoolNodeConfigContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigGcpSecretManagerCertificateConfig {
    /**
    * 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.13.0/docs/resources/container_node_pool#secret_uri ContainerNodePool#secret_uri}
    */
    readonly secretUri: string;
}
export declare function containerNodePoolNodeConfigContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigGcpSecretManagerCertificateConfigToTerraform(struct?: ContainerNodePoolNodeConfigContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigGcpSecretManagerCertificateConfigOutputReference | ContainerNodePoolNodeConfigContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigGcpSecretManagerCertificateConfig): any;
export declare function containerNodePoolNodeConfigContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigGcpSecretManagerCertificateConfigToHclTerraform(struct?: ContainerNodePoolNodeConfigContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigGcpSecretManagerCertificateConfigOutputReference | ContainerNodePoolNodeConfigContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigGcpSecretManagerCertificateConfig): any;
export declare class ContainerNodePoolNodeConfigContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigGcpSecretManagerCertificateConfigOutputReference 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(): ContainerNodePoolNodeConfigContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigGcpSecretManagerCertificateConfig | undefined;
    set internalValue(value: ContainerNodePoolNodeConfigContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigGcpSecretManagerCertificateConfig | undefined);
    private _secretUri?;
    get secretUri(): string;
    set secretUri(value: string);
    get secretUriInput(): string | undefined;
}
export interface ContainerNodePoolNodeConfigContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfig {
    /**
    * 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.13.0/docs/resources/container_node_pool#fqdns ContainerNodePool#fqdns}
    */
    readonly fqdns: string[];
    /**
    * gcp_secret_manager_certificate_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#gcp_secret_manager_certificate_config ContainerNodePool#gcp_secret_manager_certificate_config}
    */
    readonly gcpSecretManagerCertificateConfig: ContainerNodePoolNodeConfigContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigGcpSecretManagerCertificateConfig;
}
export declare function containerNodePoolNodeConfigContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigToTerraform(struct?: ContainerNodePoolNodeConfigContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfig | cdktf.IResolvable): any;
export declare function containerNodePoolNodeConfigContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigToHclTerraform(struct?: ContainerNodePoolNodeConfigContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfig | cdktf.IResolvable): any;
export declare class ContainerNodePoolNodeConfigContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigOutputReference 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(): ContainerNodePoolNodeConfigContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfig | cdktf.IResolvable | undefined;
    set internalValue(value: ContainerNodePoolNodeConfigContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfig | cdktf.IResolvable | undefined);
    private _fqdns?;
    get fqdns(): string[];
    set fqdns(value: string[]);
    get fqdnsInput(): string[] | undefined;
    private _gcpSecretManagerCertificateConfig;
    get gcpSecretManagerCertificateConfig(): ContainerNodePoolNodeConfigContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigGcpSecretManagerCertificateConfigOutputReference;
    putGcpSecretManagerCertificateConfig(value: ContainerNodePoolNodeConfigContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigGcpSecretManagerCertificateConfig): void;
    get gcpSecretManagerCertificateConfigInput(): ContainerNodePoolNodeConfigContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigGcpSecretManagerCertificateConfig | undefined;
}
export declare class ContainerNodePoolNodeConfigContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: ContainerNodePoolNodeConfigContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfig[] | 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): ContainerNodePoolNodeConfigContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigOutputReference;
}
export interface ContainerNodePoolNodeConfigContainerdConfigPrivateRegistryAccessConfig {
    /**
    * Whether or not private registries are configured.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#enabled ContainerNodePool#enabled}
    */
    readonly enabled: boolean | cdktf.IResolvable;
    /**
    * certificate_authority_domain_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#certificate_authority_domain_config ContainerNodePool#certificate_authority_domain_config}
    */
    readonly certificateAuthorityDomainConfig?: ContainerNodePoolNodeConfigContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfig[] | cdktf.IResolvable;
}
export declare function containerNodePoolNodeConfigContainerdConfigPrivateRegistryAccessConfigToTerraform(struct?: ContainerNodePoolNodeConfigContainerdConfigPrivateRegistryAccessConfigOutputReference | ContainerNodePoolNodeConfigContainerdConfigPrivateRegistryAccessConfig): any;
export declare function containerNodePoolNodeConfigContainerdConfigPrivateRegistryAccessConfigToHclTerraform(struct?: ContainerNodePoolNodeConfigContainerdConfigPrivateRegistryAccessConfigOutputReference | ContainerNodePoolNodeConfigContainerdConfigPrivateRegistryAccessConfig): any;
export declare class ContainerNodePoolNodeConfigContainerdConfigPrivateRegistryAccessConfigOutputReference 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(): ContainerNodePoolNodeConfigContainerdConfigPrivateRegistryAccessConfig | undefined;
    set internalValue(value: ContainerNodePoolNodeConfigContainerdConfigPrivateRegistryAccessConfig | undefined);
    private _enabled?;
    get enabled(): boolean | cdktf.IResolvable;
    set enabled(value: boolean | cdktf.IResolvable);
    get enabledInput(): boolean | cdktf.IResolvable | undefined;
    private _certificateAuthorityDomainConfig;
    get certificateAuthorityDomainConfig(): ContainerNodePoolNodeConfigContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfigList;
    putCertificateAuthorityDomainConfig(value: ContainerNodePoolNodeConfigContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfig[] | cdktf.IResolvable): void;
    resetCertificateAuthorityDomainConfig(): void;
    get certificateAuthorityDomainConfigInput(): cdktf.IResolvable | ContainerNodePoolNodeConfigContainerdConfigPrivateRegistryAccessConfigCertificateAuthorityDomainConfig[] | undefined;
}
export interface ContainerNodePoolNodeConfigContainerdConfig {
    /**
    * private_registry_access_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#private_registry_access_config ContainerNodePool#private_registry_access_config}
    */
    readonly privateRegistryAccessConfig?: ContainerNodePoolNodeConfigContainerdConfigPrivateRegistryAccessConfig;
}
export declare function containerNodePoolNodeConfigContainerdConfigToTerraform(struct?: ContainerNodePoolNodeConfigContainerdConfigOutputReference | ContainerNodePoolNodeConfigContainerdConfig): any;
export declare function containerNodePoolNodeConfigContainerdConfigToHclTerraform(struct?: ContainerNodePoolNodeConfigContainerdConfigOutputReference | ContainerNodePoolNodeConfigContainerdConfig): any;
export declare class ContainerNodePoolNodeConfigContainerdConfigOutputReference 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(): ContainerNodePoolNodeConfigContainerdConfig | undefined;
    set internalValue(value: ContainerNodePoolNodeConfigContainerdConfig | undefined);
    private _privateRegistryAccessConfig;
    get privateRegistryAccessConfig(): ContainerNodePoolNodeConfigContainerdConfigPrivateRegistryAccessConfigOutputReference;
    putPrivateRegistryAccessConfig(value: ContainerNodePoolNodeConfigContainerdConfigPrivateRegistryAccessConfig): void;
    resetPrivateRegistryAccessConfig(): void;
    get privateRegistryAccessConfigInput(): ContainerNodePoolNodeConfigContainerdConfigPrivateRegistryAccessConfig | undefined;
}
export interface ContainerNodePoolNodeConfigEphemeralStorageLocalSsdConfig {
    /**
    * Number of local SSDs to use to back ephemeral storage. Uses NVMe interfaces. Each local SSD must be 375 or 3000 GB in size, and all local SSDs must share the same size.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#local_ssd_count ContainerNodePool#local_ssd_count}
    */
    readonly localSsdCount: number;
}
export declare function containerNodePoolNodeConfigEphemeralStorageLocalSsdConfigToTerraform(struct?: ContainerNodePoolNodeConfigEphemeralStorageLocalSsdConfigOutputReference | ContainerNodePoolNodeConfigEphemeralStorageLocalSsdConfig): any;
export declare function containerNodePoolNodeConfigEphemeralStorageLocalSsdConfigToHclTerraform(struct?: ContainerNodePoolNodeConfigEphemeralStorageLocalSsdConfigOutputReference | ContainerNodePoolNodeConfigEphemeralStorageLocalSsdConfig): any;
export declare class ContainerNodePoolNodeConfigEphemeralStorageLocalSsdConfigOutputReference 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(): ContainerNodePoolNodeConfigEphemeralStorageLocalSsdConfig | undefined;
    set internalValue(value: ContainerNodePoolNodeConfigEphemeralStorageLocalSsdConfig | undefined);
    private _localSsdCount?;
    get localSsdCount(): number;
    set localSsdCount(value: number);
    get localSsdCountInput(): number | undefined;
}
export interface ContainerNodePoolNodeConfigFastSocket {
    /**
    * Whether or not NCCL Fast Socket is enabled
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#enabled ContainerNodePool#enabled}
    */
    readonly enabled: boolean | cdktf.IResolvable;
}
export declare function containerNodePoolNodeConfigFastSocketToTerraform(struct?: ContainerNodePoolNodeConfigFastSocketOutputReference | ContainerNodePoolNodeConfigFastSocket): any;
export declare function containerNodePoolNodeConfigFastSocketToHclTerraform(struct?: ContainerNodePoolNodeConfigFastSocketOutputReference | ContainerNodePoolNodeConfigFastSocket): any;
export declare class ContainerNodePoolNodeConfigFastSocketOutputReference 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(): ContainerNodePoolNodeConfigFastSocket | undefined;
    set internalValue(value: ContainerNodePoolNodeConfigFastSocket | undefined);
    private _enabled?;
    get enabled(): boolean | cdktf.IResolvable;
    set enabled(value: boolean | cdktf.IResolvable);
    get enabledInput(): boolean | cdktf.IResolvable | undefined;
}
export interface ContainerNodePoolNodeConfigGcfsConfig {
    /**
    * Whether or not GCFS is enabled
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#enabled ContainerNodePool#enabled}
    */
    readonly enabled: boolean | cdktf.IResolvable;
}
export declare function containerNodePoolNodeConfigGcfsConfigToTerraform(struct?: ContainerNodePoolNodeConfigGcfsConfigOutputReference | ContainerNodePoolNodeConfigGcfsConfig): any;
export declare function containerNodePoolNodeConfigGcfsConfigToHclTerraform(struct?: ContainerNodePoolNodeConfigGcfsConfigOutputReference | ContainerNodePoolNodeConfigGcfsConfig): any;
export declare class ContainerNodePoolNodeConfigGcfsConfigOutputReference 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(): ContainerNodePoolNodeConfigGcfsConfig | undefined;
    set internalValue(value: ContainerNodePoolNodeConfigGcfsConfig | undefined);
    private _enabled?;
    get enabled(): boolean | cdktf.IResolvable;
    set enabled(value: boolean | cdktf.IResolvable);
    get enabledInput(): boolean | cdktf.IResolvable | undefined;
}
export interface ContainerNodePoolNodeConfigGuestAcceleratorGpuDriverInstallationConfig {
    /**
    * Mode for how the GPU driver is installed.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#gpu_driver_version ContainerNodePool#gpu_driver_version}
    */
    readonly gpuDriverVersion: string;
}
export declare function containerNodePoolNodeConfigGuestAcceleratorGpuDriverInstallationConfigToTerraform(struct?: ContainerNodePoolNodeConfigGuestAcceleratorGpuDriverInstallationConfigOutputReference | ContainerNodePoolNodeConfigGuestAcceleratorGpuDriverInstallationConfig): any;
export declare function containerNodePoolNodeConfigGuestAcceleratorGpuDriverInstallationConfigToHclTerraform(struct?: ContainerNodePoolNodeConfigGuestAcceleratorGpuDriverInstallationConfigOutputReference | ContainerNodePoolNodeConfigGuestAcceleratorGpuDriverInstallationConfig): any;
export declare class ContainerNodePoolNodeConfigGuestAcceleratorGpuDriverInstallationConfigOutputReference 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(): ContainerNodePoolNodeConfigGuestAcceleratorGpuDriverInstallationConfig | undefined;
    set internalValue(value: ContainerNodePoolNodeConfigGuestAcceleratorGpuDriverInstallationConfig | undefined);
    private _gpuDriverVersion?;
    get gpuDriverVersion(): string;
    set gpuDriverVersion(value: string);
    get gpuDriverVersionInput(): string | undefined;
}
export interface ContainerNodePoolNodeConfigGuestAcceleratorGpuSharingConfig {
    /**
    * The type of GPU sharing strategy to enable on the GPU node. Possible values are described in the API package (https://pkg.go.dev/google.golang.org/api/container/v1#GPUSharingConfig)
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#gpu_sharing_strategy ContainerNodePool#gpu_sharing_strategy}
    */
    readonly gpuSharingStrategy: string;
    /**
    * The maximum number of containers that can share a GPU.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#max_shared_clients_per_gpu ContainerNodePool#max_shared_clients_per_gpu}
    */
    readonly maxSharedClientsPerGpu: number;
}
export declare function containerNodePoolNodeConfigGuestAcceleratorGpuSharingConfigToTerraform(struct?: ContainerNodePoolNodeConfigGuestAcceleratorGpuSharingConfigOutputReference | ContainerNodePoolNodeConfigGuestAcceleratorGpuSharingConfig): any;
export declare function containerNodePoolNodeConfigGuestAcceleratorGpuSharingConfigToHclTerraform(struct?: ContainerNodePoolNodeConfigGuestAcceleratorGpuSharingConfigOutputReference | ContainerNodePoolNodeConfigGuestAcceleratorGpuSharingConfig): any;
export declare class ContainerNodePoolNodeConfigGuestAcceleratorGpuSharingConfigOutputReference 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(): ContainerNodePoolNodeConfigGuestAcceleratorGpuSharingConfig | undefined;
    set internalValue(value: ContainerNodePoolNodeConfigGuestAcceleratorGpuSharingConfig | undefined);
    private _gpuSharingStrategy?;
    get gpuSharingStrategy(): string;
    set gpuSharingStrategy(value: string);
    get gpuSharingStrategyInput(): string | undefined;
    private _maxSharedClientsPerGpu?;
    get maxSharedClientsPerGpu(): number;
    set maxSharedClientsPerGpu(value: number);
    get maxSharedClientsPerGpuInput(): number | undefined;
}
export interface ContainerNodePoolNodeConfigGuestAccelerator {
    /**
    * The number of the accelerator cards exposed to an instance.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#count ContainerNodePool#count}
    */
    readonly count: number;
    /**
    * Size of partitions to create on the GPU. Valid values are described in the NVIDIA mig user guide (https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#partitioning)
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#gpu_partition_size ContainerNodePool#gpu_partition_size}
    */
    readonly gpuPartitionSize?: string;
    /**
    * The accelerator type resource name.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#type ContainerNodePool#type}
    */
    readonly type: string;
    /**
    * gpu_driver_installation_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#gpu_driver_installation_config ContainerNodePool#gpu_driver_installation_config}
    */
    readonly gpuDriverInstallationConfig?: ContainerNodePoolNodeConfigGuestAcceleratorGpuDriverInstallationConfig;
    /**
    * gpu_sharing_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#gpu_sharing_config ContainerNodePool#gpu_sharing_config}
    */
    readonly gpuSharingConfig?: ContainerNodePoolNodeConfigGuestAcceleratorGpuSharingConfig;
}
export declare function containerNodePoolNodeConfigGuestAcceleratorToTerraform(struct?: ContainerNodePoolNodeConfigGuestAccelerator | cdktf.IResolvable): any;
export declare function containerNodePoolNodeConfigGuestAcceleratorToHclTerraform(struct?: ContainerNodePoolNodeConfigGuestAccelerator | cdktf.IResolvable): any;
export declare class ContainerNodePoolNodeConfigGuestAcceleratorOutputReference 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(): ContainerNodePoolNodeConfigGuestAccelerator | cdktf.IResolvable | undefined;
    set internalValue(value: ContainerNodePoolNodeConfigGuestAccelerator | cdktf.IResolvable | undefined);
    private _count?;
    get count(): number;
    set count(value: number);
    get countInput(): number | undefined;
    private _gpuPartitionSize?;
    get gpuPartitionSize(): string;
    set gpuPartitionSize(value: string);
    resetGpuPartitionSize(): void;
    get gpuPartitionSizeInput(): string | undefined;
    private _type?;
    get type(): string;
    set type(value: string);
    get typeInput(): string | undefined;
    private _gpuDriverInstallationConfig;
    get gpuDriverInstallationConfig(): ContainerNodePoolNodeConfigGuestAcceleratorGpuDriverInstallationConfigOutputReference;
    putGpuDriverInstallationConfig(value: ContainerNodePoolNodeConfigGuestAcceleratorGpuDriverInstallationConfig): void;
    resetGpuDriverInstallationConfig(): void;
    get gpuDriverInstallationConfigInput(): ContainerNodePoolNodeConfigGuestAcceleratorGpuDriverInstallationConfig | undefined;
    private _gpuSharingConfig;
    get gpuSharingConfig(): ContainerNodePoolNodeConfigGuestAcceleratorGpuSharingConfigOutputReference;
    putGpuSharingConfig(value: ContainerNodePoolNodeConfigGuestAcceleratorGpuSharingConfig): void;
    resetGpuSharingConfig(): void;
    get gpuSharingConfigInput(): ContainerNodePoolNodeConfigGuestAcceleratorGpuSharingConfig | undefined;
}
export declare class ContainerNodePoolNodeConfigGuestAcceleratorList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: ContainerNodePoolNodeConfigGuestAccelerator[] | 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): ContainerNodePoolNodeConfigGuestAcceleratorOutputReference;
}
export interface ContainerNodePoolNodeConfigGvnic {
    /**
    * Whether or not gvnic is enabled
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#enabled ContainerNodePool#enabled}
    */
    readonly enabled: boolean | cdktf.IResolvable;
}
export declare function containerNodePoolNodeConfigGvnicToTerraform(struct?: ContainerNodePoolNodeConfigGvnicOutputReference | ContainerNodePoolNodeConfigGvnic): any;
export declare function containerNodePoolNodeConfigGvnicToHclTerraform(struct?: ContainerNodePoolNodeConfigGvnicOutputReference | ContainerNodePoolNodeConfigGvnic): any;
export declare class ContainerNodePoolNodeConfigGvnicOutputReference 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(): ContainerNodePoolNodeConfigGvnic | undefined;
    set internalValue(value: ContainerNodePoolNodeConfigGvnic | undefined);
    private _enabled?;
    get enabled(): boolean | cdktf.IResolvable;
    set enabled(value: boolean | cdktf.IResolvable);
    get enabledInput(): boolean | cdktf.IResolvable | undefined;
}
export interface ContainerNodePoolNodeConfigHostMaintenancePolicy {
    /**
    * .
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#maintenance_interval ContainerNodePool#maintenance_interval}
    */
    readonly maintenanceInterval: string;
}
export declare function containerNodePoolNodeConfigHostMaintenancePolicyToTerraform(struct?: ContainerNodePoolNodeConfigHostMaintenancePolicyOutputReference | ContainerNodePoolNodeConfigHostMaintenancePolicy): any;
export declare function containerNodePoolNodeConfigHostMaintenancePolicyToHclTerraform(struct?: ContainerNodePoolNodeConfigHostMaintenancePolicyOutputReference | ContainerNodePoolNodeConfigHostMaintenancePolicy): any;
export declare class ContainerNodePoolNodeConfigHostMaintenancePolicyOutputReference 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(): ContainerNodePoolNodeConfigHostMaintenancePolicy | undefined;
    set internalValue(value: ContainerNodePoolNodeConfigHostMaintenancePolicy | undefined);
    private _maintenanceInterval?;
    get maintenanceInterval(): string;
    set maintenanceInterval(value: string);
    get maintenanceIntervalInput(): string | undefined;
}
export interface ContainerNodePoolNodeConfigKubeletConfig {
    /**
    * Enable CPU CFS quota enforcement for containers that specify CPU limits.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#cpu_cfs_quota ContainerNodePool#cpu_cfs_quota}
    */
    readonly cpuCfsQuota?: boolean | cdktf.IResolvable;
    /**
    * Set the CPU CFS quota period value 'cpu.cfs_period_us'.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#cpu_cfs_quota_period ContainerNodePool#cpu_cfs_quota_period}
    */
    readonly cpuCfsQuotaPeriod?: string;
    /**
    * Control the CPU management policy on the node.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#cpu_manager_policy ContainerNodePool#cpu_manager_policy}
    */
    readonly cpuManagerPolicy?: string;
    /**
    * 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.13.0/docs/resources/container_node_pool#insecure_kubelet_readonly_port_enabled ContainerNodePool#insecure_kubelet_readonly_port_enabled}
    */
    readonly insecureKubeletReadonlyPortEnabled?: string;
    /**
    * Controls the maximum number of processes allowed to run in a pod.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#pod_pids_limit ContainerNodePool#pod_pids_limit}
    */
    readonly podPidsLimit?: number;
}
export declare function containerNodePoolNodeConfigKubeletConfigToTerraform(struct?: ContainerNodePoolNodeConfigKubeletConfigOutputReference | ContainerNodePoolNodeConfigKubeletConfig): any;
export declare function containerNodePoolNodeConfigKubeletConfigToHclTerraform(struct?: ContainerNodePoolNodeConfigKubeletConfigOutputReference | ContainerNodePoolNodeConfigKubeletConfig): any;
export declare class ContainerNodePoolNodeConfigKubeletConfigOutputReference 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(): ContainerNodePoolNodeConfigKubeletConfig | undefined;
    set internalValue(value: ContainerNodePoolNodeConfigKubeletConfig | undefined);
    private _cpuCfsQuota?;
    get cpuCfsQuota(): boolean | cdktf.IResolvable;
    set cpuCfsQuota(value: boolean | cdktf.IResolvable);
    resetCpuCfsQuota(): void;
    get cpuCfsQuotaInput(): boolean | cdktf.IResolvable | undefined;
    private _cpuCfsQuotaPeriod?;
    get cpuCfsQuotaPeriod(): string;
    set cpuCfsQuotaPeriod(value: string);
    resetCpuCfsQuotaPeriod(): void;
    get cpuCfsQuotaPeriodInput(): string | undefined;
    private _cpuManagerPolicy?;
    get cpuManagerPolicy(): string;
    set cpuManagerPolicy(value: string);
    resetCpuManagerPolicy(): void;
    get cpuManagerPolicyInput(): string | undefined;
    private _insecureKubeletReadonlyPortEnabled?;
    get insecureKubeletReadonlyPortEnabled(): string;
    set insecureKubeletReadonlyPortEnabled(value: string);
    resetInsecureKubeletReadonlyPortEnabled(): void;
    get insecureKubeletReadonlyPortEnabledInput(): string | undefined;
    private _podPidsLimit?;
    get podPidsLimit(): number;
    set podPidsLimit(value: number);
    resetPodPidsLimit(): void;
    get podPidsLimitInput(): number | undefined;
}
export interface ContainerNodePoolNodeConfigLinuxNodeConfigHugepagesConfig {
    /**
    * Amount of 1G hugepages.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#hugepage_size_1g ContainerNodePool#hugepage_size_1g}
    */
    readonly hugepageSize1G?: number;
    /**
    * Amount of 2M hugepages.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#hugepage_size_2m ContainerNodePool#hugepage_size_2m}
    */
    readonly hugepageSize2M?: number;
}
export declare function containerNodePoolNodeConfigLinuxNodeConfigHugepagesConfigToTerraform(struct?: ContainerNodePoolNodeConfigLinuxNodeConfigHugepagesConfigOutputReference | ContainerNodePoolNodeConfigLinuxNodeConfigHugepagesConfig): any;
export declare function containerNodePoolNodeConfigLinuxNodeConfigHugepagesConfigToHclTerraform(struct?: ContainerNodePoolNodeConfigLinuxNodeConfigHugepagesConfigOutputReference | ContainerNodePoolNodeConfigLinuxNodeConfigHugepagesConfig): any;
export declare class ContainerNodePoolNodeConfigLinuxNodeConfigHugepagesConfigOutputReference 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(): ContainerNodePoolNodeConfigLinuxNodeConfigHugepagesConfig | undefined;
    set internalValue(value: ContainerNodePoolNodeConfigLinuxNodeConfigHugepagesConfig | undefined);
    private _hugepageSize1G?;
    get hugepageSize1G(): number;
    set hugepageSize1G(value: number);
    resetHugepageSize1G(): void;
    get hugepageSize1GInput(): number | undefined;
    private _hugepageSize2M?;
    get hugepageSize2M(): number;
    set hugepageSize2M(value: number);
    resetHugepageSize2M(): void;
    get hugepageSize2MInput(): number | undefined;
}
export interface ContainerNodePoolNodeConfigLinuxNodeConfig {
    /**
    * cgroupMode specifies the cgroup mode to be used on the node.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#cgroup_mode ContainerNodePool#cgroup_mode}
    */
    readonly cgroupMode?: string;
    /**
    * The Linux kernel parameters to be applied to the nodes and all pods running on the nodes.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#sysctls ContainerNodePool#sysctls}
    */
    readonly sysctls?: {
        [key: string]: string;
    };
    /**
    * hugepages_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#hugepages_config ContainerNodePool#hugepages_config}
    */
    readonly hugepagesConfig?: ContainerNodePoolNodeConfigLinuxNodeConfigHugepagesConfig;
}
export declare function containerNodePoolNodeConfigLinuxNodeConfigToTerraform(struct?: ContainerNodePoolNodeConfigLinuxNodeConfigOutputReference | ContainerNodePoolNodeConfigLinuxNodeConfig): any;
export declare function containerNodePoolNodeConfigLinuxNodeConfigToHclTerraform(struct?: ContainerNodePoolNodeConfigLinuxNodeConfigOutputReference | ContainerNodePoolNodeConfigLinuxNodeConfig): any;
export declare class ContainerNodePoolNodeConfigLinuxNodeConfigOutputReference 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(): ContainerNodePoolNodeConfigLinuxNodeConfig | undefined;
    set internalValue(value: ContainerNodePoolNodeConfigLinuxNodeConfig | undefined);
    private _cgroupMode?;
    get cgroupMode(): string;
    set cgroupMode(value: string);
    resetCgroupMode(): void;
    get cgroupModeInput(): string | undefined;
    private _sysctls?;
    get sysctls(): {
        [key: string]: string;
    };
    set sysctls(value: {
        [key: string]: string;
    });
    resetSysctls(): void;
    get sysctlsInput(): {
        [key: string]: string;
    } | undefined;
    private _hugepagesConfig;
    get hugepagesConfig(): ContainerNodePoolNodeConfigLinuxNodeConfigHugepagesConfigOutputReference;
    putHugepagesConfig(value: ContainerNodePoolNodeConfigLinuxNodeConfigHugepagesConfig): void;
    resetHugepagesConfig(): void;
    get hugepagesConfigInput(): ContainerNodePoolNodeConfigLinuxNodeConfigHugepagesConfig | undefined;
}
export interface ContainerNodePoolNodeConfigLocalNvmeSsdBlockConfig {
    /**
    * Number of raw-block local NVMe SSD disks to be attached to the node. Each local SSD is 375 GB in size.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#local_ssd_count ContainerNodePool#local_ssd_count}
    */
    readonly localSsdCount: number;
}
export declare function containerNodePoolNodeConfigLocalNvmeSsdBlockConfigToTerraform(struct?: ContainerNodePoolNodeConfigLocalNvmeSsdBlockConfigOutputReference | ContainerNodePoolNodeConfigLocalNvmeSsdBlockConfig): any;
export declare function containerNodePoolNodeConfigLocalNvmeSsdBlockConfigToHclTerraform(struct?: ContainerNodePoolNodeConfigLocalNvmeSsdBlockConfigOutputReference | ContainerNodePoolNodeConfigLocalNvmeSsdBlockConfig): any;
export declare class ContainerNodePoolNodeConfigLocalNvmeSsdBlockConfigOutputReference 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(): ContainerNodePoolNodeConfigLocalNvmeSsdBlockConfig | undefined;
    set internalValue(value: ContainerNodePoolNodeConfigLocalNvmeSsdBlockConfig | undefined);
    private _localSsdCount?;
    get localSsdCount(): number;
    set localSsdCount(value: number);
    get localSsdCountInput(): number | undefined;
}
export interface ContainerNodePoolNodeConfigReservationAffinity {
    /**
    * Corresponds to the type of reservation consumption.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#consume_reservation_type ContainerNodePool#consume_reservation_type}
    */
    readonly consumeReservationType: string;
    /**
    * The label key of a reservation resource.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#key ContainerNodePool#key}
    */
    readonly key?: string;
    /**
    * The label values of the reservation resource.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#values ContainerNodePool#values}
    */
    readonly values?: string[];
}
export declare function containerNodePoolNodeConfigReservationAffinityToTerraform(struct?: ContainerNodePoolNodeConfigReservationAffinityOutputReference | ContainerNodePoolNodeConfigReservationAffinity): any;
export declare function containerNodePoolNodeConfigReservationAffinityToHclTerraform(struct?: ContainerNodePoolNodeConfigReservationAffinityOutputReference | ContainerNodePoolNodeConfigReservationAffinity): any;
export declare class ContainerNodePoolNodeConfigReservationAffinityOutputReference 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(): ContainerNodePoolNodeConfigReservationAffinity | undefined;
    set internalValue(value: ContainerNodePoolNodeConfigReservationAffinity | undefined);
    private _consumeReservationType?;
    get consumeReservationType(): string;
    set consumeReservationType(value: string);
    get consumeReservationTypeInput(): string | undefined;
    private _key?;
    get key(): string;
    set key(value: string);
    resetKey(): void;
    get keyInput(): string | undefined;
    private _values?;
    get values(): string[];
    set values(value: string[]);
    resetValues(): void;
    get valuesInput(): string[] | undefined;
}
export interface ContainerNodePoolNodeConfigSecondaryBootDisks {
    /**
    * Disk image to create the secondary boot disk from
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#disk_image ContainerNodePool#disk_image}
    */
    readonly diskImage: string;
    /**
    * Mode for how the secondary boot disk is used.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#mode ContainerNodePool#mode}
    */
    readonly mode?: string;
}
export declare function containerNodePoolNodeConfigSecondaryBootDisksToTerraform(struct?: ContainerNodePoolNodeConfigSecondaryBootDisks | cdktf.IResolvable): any;
export declare function containerNodePoolNodeConfigSecondaryBootDisksToHclTerraform(struct?: ContainerNodePoolNodeConfigSecondaryBootDisks | cdktf.IResolvable): any;
export declare class ContainerNodePoolNodeConfigSecondaryBootDisksOutputReference 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(): ContainerNodePoolNodeConfigSecondaryBootDisks | cdktf.IResolvable | undefined;
    set internalValue(value: ContainerNodePoolNodeConfigSecondaryBootDisks | cdktf.IResolvable | undefined);
    private _diskImage?;
    get diskImage(): string;
    set diskImage(value: string);
    get diskImageInput(): string | undefined;
    private _mode?;
    get mode(): string;
    set mode(value: string);
    resetMode(): void;
    get modeInput(): string | undefined;
}
export declare class ContainerNodePoolNodeConfigSecondaryBootDisksList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: ContainerNodePoolNodeConfigSecondaryBootDisks[] | 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): ContainerNodePoolNodeConfigSecondaryBootDisksOutputReference;
}
export interface ContainerNodePoolNodeConfigShieldedInstanceConfig {
    /**
    * Defines whether the instance has integrity monitoring enabled.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#enable_integrity_monitoring ContainerNodePool#enable_integrity_monitoring}
    */
    readonly enableIntegrityMonitoring?: boolean | cdktf.IResolvable;
    /**
    * Defines whether the instance has Secure Boot enabled.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#enable_secure_boot ContainerNodePool#enable_secure_boot}
    */
    readonly enableSecureBoot?: boolean | cdktf.IResolvable;
}
export declare function containerNodePoolNodeConfigShieldedInstanceConfigToTerraform(struct?: ContainerNodePoolNodeConfigShieldedInstanceConfigOutputReference | ContainerNodePoolNodeConfigShieldedInstanceConfig): any;
export declare function containerNodePoolNodeConfigShieldedInstanceConfigToHclTerraform(struct?: ContainerNodePoolNodeConfigShieldedInstanceConfigOutputReference | ContainerNodePoolNodeConfigShieldedInstanceConfig): any;
export declare class ContainerNodePoolNodeConfigShieldedInstanceConfigOutputReference 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(): ContainerNodePoolNodeConfigShieldedInstanceConfig | undefined;
    set internalValue(value: ContainerNodePoolNodeConfigShieldedInstanceConfig | undefined);
    private _enableIntegrityMonitoring?;
    get enableIntegrityMonitoring(): boolean | cdktf.IResolvable;
    set enableIntegrityMonitoring(value: boolean | cdktf.IResolvable);
    resetEnableIntegrityMonitoring(): void;
    get enableIntegrityMonitoringInput(): boolean | cdktf.IResolvable | undefined;
    private _enableSecureBoot?;
    get enableSecureBoot(): boolean | cdktf.IResolvable;
    set enableSecureBoot(value: boolean | cdktf.IResolvable);
    resetEnableSecureBoot(): void;
    get enableSecureBootInput(): boolean | cdktf.IResolvable | undefined;
}
export interface ContainerNodePoolNodeConfigSoleTenantConfigNodeAffinity {
    /**
    * .
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#key ContainerNodePool#key}
    */
    readonly key: string;
    /**
    * .
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#operator ContainerNodePool#operator}
    */
    readonly operator: string;
    /**
    * .
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#values ContainerNodePool#values}
    */
    readonly values: string[];
}
export declare function containerNodePoolNodeConfigSoleTenantConfigNodeAffinityToTerraform(struct?: ContainerNodePoolNodeConfigSoleTenantConfigNodeAffinity | cdktf.IResolvable): any;
export declare function containerNodePoolNodeConfigSoleTenantConfigNodeAffinityToHclTerraform(struct?: ContainerNodePoolNodeConfigSoleTenantConfigNodeAffinity | cdktf.IResolvable): any;
export declare class ContainerNodePoolNodeConfigSoleTenantConfigNodeAffinityOutputReference 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(): ContainerNodePoolNodeConfigSoleTenantConfigNodeAffinity | cdktf.IResolvable | undefined;
    set internalValue(value: ContainerNodePoolNodeConfigSoleTenantConfigNodeAffinity | cdktf.IResolvable | undefined);
    private _key?;
    get key(): string;
    set key(value: string);
    get keyInput(): string | undefined;
    private _operator?;
    get operator(): string;
    set operator(value: string);
    get operatorInput(): string | undefined;
    private _values?;
    get values(): string[];
    set values(value: string[]);
    get valuesInput(): string[] | undefined;
}
export declare class ContainerNodePoolNodeConfigSoleTenantConfigNodeAffinityList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: ContainerNodePoolNodeConfigSoleTenantConfigNodeAffinity[] | 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): ContainerNodePoolNodeConfigSoleTenantConfigNodeAffinityOutputReference;
}
export interface ContainerNodePoolNodeConfigSoleTenantConfig {
    /**
    * node_affinity block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#node_affinity ContainerNodePool#node_affinity}
    */
    readonly nodeAffinity: ContainerNodePoolNodeConfigSoleTenantConfigNodeAffinity[] | cdktf.IResolvable;
}
export declare function containerNodePoolNodeConfigSoleTenantConfigToTerraform(struct?: ContainerNodePoolNodeConfigSoleTenantConfigOutputReference | ContainerNodePoolNodeConfigSoleTenantConfig): any;
export declare function containerNodePoolNodeConfigSoleTenantConfigToHclTerraform(struct?: ContainerNodePoolNodeConfigSoleTenantConfigOutputReference | ContainerNodePoolNodeConfigSoleTenantConfig): any;
export declare class ContainerNodePoolNodeConfigSoleTenantConfigOutputReference 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(): ContainerNodePoolNodeConfigSoleTenantConfig | undefined;
    set internalValue(value: ContainerNodePoolNodeConfigSoleTenantConfig | undefined);
    private _nodeAffinity;
    get nodeAffinity(): ContainerNodePoolNodeConfigSoleTenantConfigNodeAffinityList;
    putNodeAffinity(value: ContainerNodePoolNodeConfigSoleTenantConfigNodeAffinity[] | cdktf.IResolvable): void;
    get nodeAffinityInput(): cdktf.IResolvable | ContainerNodePoolNodeConfigSoleTenantConfigNodeAffinity[] | undefined;
}
export interface ContainerNodePoolNodeConfigTaint {
    /**
    * Effect for taint.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#effect ContainerNodePool#effect}
    */
    readonly effect: string;
    /**
    * Key for taint.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#key ContainerNodePool#key}
    */
    readonly key: string;
    /**
    * Value for taint.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#value ContainerNodePool#value}
    */
    readonly value: string;
}
export declare function containerNodePoolNodeConfigTaintToTerraform(struct?: ContainerNodePoolNodeConfigTaint | cdktf.IResolvable): any;
export declare function containerNodePoolNodeConfigTaintToHclTerraform(struct?: ContainerNodePoolNodeConfigTaint | cdktf.IResolvable): any;
export declare class ContainerNodePoolNodeConfigTaintOutputReference 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(): ContainerNodePoolNodeConfigTaint | cdktf.IResolvable | undefined;
    set internalValue(value: ContainerNodePoolNodeConfigTaint | cdktf.IResolvable | undefined);
    private _effect?;
    get effect(): string;
    set effect(value: string);
    get effectInput(): string | undefined;
    private _key?;
    get key(): string;
    set key(value: string);
    get keyInput(): string | undefined;
    private _value?;
    get value(): string;
    set value(value: string);
    get valueInput(): string | undefined;
}
export declare class ContainerNodePoolNodeConfigTaintList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: ContainerNodePoolNodeConfigTaint[] | 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): ContainerNodePoolNodeConfigTaintOutputReference;
}
export interface ContainerNodePoolNodeConfigWorkloadMetadataConfig {
    /**
    * Mode is the configuration for how to expose metadata to workloads running on the node.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#mode ContainerNodePool#mode}
    */
    readonly mode: string;
}
export declare function containerNodePoolNodeConfigWorkloadMetadataConfigToTerraform(struct?: ContainerNodePoolNodeConfigWorkloadMetadataConfigOutputReference | ContainerNodePoolNodeConfigWorkloadMetadataConfig): any;
export declare function containerNodePoolNodeConfigWorkloadMetadataConfigToHclTerraform(struct?: ContainerNodePoolNodeConfigWorkloadMetadataConfigOutputReference | ContainerNodePoolNodeConfigWorkloadMetadataConfig): any;
export declare class ContainerNodePoolNodeConfigWorkloadMetadataConfigOutputReference 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(): ContainerNodePoolNodeConfigWorkloadMetadataConfig | undefined;
    set internalValue(value: ContainerNodePoolNodeConfigWorkloadMetadataConfig | undefined);
    private _mode?;
    get mode(): string;
    set mode(value: string);
    get modeInput(): string | undefined;
}
export interface ContainerNodePoolNodeConfig {
    /**
    * The Customer Managed Encryption Key used to encrypt the boot disk attached to each node in the node pool.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#boot_disk_kms_key ContainerNodePool#boot_disk_kms_key}
    */
    readonly bootDiskKmsKey?: string;
    /**
    * Size of the disk attached to each node, specified in GB. The smallest allowed disk size is 10GB.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#disk_size_gb ContainerNodePool#disk_size_gb}
    */
    readonly diskSizeGb?: number;
    /**
    * Type of the disk attached to each node. Such as pd-standard, pd-balanced or pd-ssd
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#disk_type ContainerNodePool#disk_type}
    */
    readonly diskType?: string;
    /**
    * If enabled boot disks are configured with confidential mode.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#enable_confidential_storage ContainerNodePool#enable_confidential_storage}
    */
    readonly enableConfidentialStorage?: boolean | cdktf.IResolvable;
    /**
    * The image type to use for this node. Note that for a given image type, the latest version of it will be used.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#image_type ContainerNodePool#image_type}
    */
    readonly imageType?: string;
    /**
    * The map of Kubernetes labels (key/value pairs) to be applied to each node. These will added in addition to any default label(s) that Kubernetes may apply to the node.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#labels ContainerNodePool#labels}
    */
    readonly labels?: {
        [key: string]: string;
    };
    /**
    * The number of local SSD disks to be attached to the node.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#local_ssd_count ContainerNodePool#local_ssd_count}
    */
    readonly localSsdCount?: number;
    /**
    * LocalSsdEncryptionMode specified the method used for encrypting the local SSDs attached to the node.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#local_ssd_encryption_mode ContainerNodePool#local_ssd_encryption_mode}
    */
    readonly localSsdEncryptionMode?: 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.13.0/docs/resources/container_node_pool#logging_variant ContainerNodePool#logging_variant}
    */
    readonly loggingVariant?: string;
    /**
    * The name of a Google Compute Engine machine type.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#machine_type ContainerNodePool#machine_type}
    */
    readonly machineType?: string;
    /**
    * The metadata key/value pairs assigned to instances in the cluster.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#metadata ContainerNodePool#metadata}
    */
    readonly metadata?: {
        [key: string]: string;
    };
    /**
    * Minimum CPU platform to be used by this instance. The instance may be scheduled on the specified or newer CPU platform.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#min_cpu_platform ContainerNodePool#min_cpu_platform}
    */
    readonly minCpuPlatform?: string;
    /**
    * Setting this field will assign instances of this pool to run on the specified node group. This is useful for running workloads on sole tenant nodes.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#node_group ContainerNodePool#node_group}
    */
    readonly nodeGroup?: string;
    /**
    * The set of Google API scopes to be made available on all of the node VMs.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#oauth_scopes ContainerNodePool#oauth_scopes}
    */
    readonly oauthScopes?: string[];
    /**
    * Whether the nodes are created as preemptible VM instances.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#preemptible ContainerNodePool#preemptible}
    */
    readonly preemptible?: boolean | cdktf.IResolvable;
    /**
    * The GCE resource labels (a map of key/value pairs) to be applied to the node pool.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#resource_labels ContainerNodePool#resource_labels}
    */
    readonly resourceLabels?: {
        [key: string]: string;
    };
    /**
    * 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.13.0/docs/resources/container_node_pool#resource_manager_tags ContainerNodePool#resource_manager_tags}
    */
    readonly resourceManagerTags?: {
        [key: string]: string;
    };
    /**
    * The Google Cloud Platform Service Account to be used by the node VMs.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#service_account ContainerNodePool#service_account}
    */
    readonly serviceAccount?: string;
    /**
    * Whether the nodes are created as spot VM instances.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#spot ContainerNodePool#spot}
    */
    readonly spot?: boolean | cdktf.IResolvable;
    /**
    * The list of Storage Pools where boot disks are provisioned.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#storage_pools ContainerNodePool#storage_pools}
    */
    readonly storagePools?: string[];
    /**
    * The list of instance tags applied to all nodes.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#tags ContainerNodePool#tags}
    */
    readonly tags?: string[];
    /**
    * advanced_machine_features block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#advanced_machine_features ContainerNodePool#advanced_machine_features}
    */
    readonly advancedMachineFeatures?: ContainerNodePoolNodeConfigAdvancedMachineFeatures;
    /**
    * confidential_nodes block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#confidential_nodes ContainerNodePool#confidential_nodes}
    */
    readonly confidentialNodes?: ContainerNodePoolNodeConfigConfidentialNodes;
    /**
    * containerd_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#containerd_config ContainerNodePool#containerd_config}
    */
    readonly containerdConfig?: ContainerNodePoolNodeConfigContainerdConfig;
    /**
    * ephemeral_storage_local_ssd_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#ephemeral_storage_local_ssd_config ContainerNodePool#ephemeral_storage_local_ssd_config}
    */
    readonly ephemeralStorageLocalSsdConfig?: ContainerNodePoolNodeConfigEphemeralStorageLocalSsdConfig;
    /**
    * fast_socket block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#fast_socket ContainerNodePool#fast_socket}
    */
    readonly fastSocket?: ContainerNodePoolNodeConfigFastSocket;
    /**
    * gcfs_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#gcfs_config ContainerNodePool#gcfs_config}
    */
    readonly gcfsConfig?: ContainerNodePoolNodeConfigGcfsConfig;
    /**
    * guest_accelerator block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#guest_accelerator ContainerNodePool#guest_accelerator}
    */
    readonly guestAccelerator?: ContainerNodePoolNodeConfigGuestAccelerator[] | cdktf.IResolvable;
    /**
    * gvnic block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#gvnic ContainerNodePool#gvnic}
    */
    readonly gvnic?: ContainerNodePoolNodeConfigGvnic;
    /**
    * host_maintenance_policy block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#host_maintenance_policy ContainerNodePool#host_maintenance_policy}
    */
    readonly hostMaintenancePolicy?: ContainerNodePoolNodeConfigHostMaintenancePolicy;
    /**
    * kubelet_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#kubelet_config ContainerNodePool#kubelet_config}
    */
    readonly kubeletConfig?: ContainerNodePoolNodeConfigKubeletConfig;
    /**
    * linux_node_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#linux_node_config ContainerNodePool#linux_node_config}
    */
    readonly linuxNodeConfig?: ContainerNodePoolNodeConfigLinuxNodeConfig;
    /**
    * local_nvme_ssd_block_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#local_nvme_ssd_block_config ContainerNodePool#local_nvme_ssd_block_config}
    */
    readonly localNvmeSsdBlockConfig?: ContainerNodePoolNodeConfigLocalNvmeSsdBlockConfig;
    /**
    * reservation_affinity block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#reservation_affinity ContainerNodePool#reservation_affinity}
    */
    readonly reservationAffinity?: ContainerNodePoolNodeConfigReservationAffinity;
    /**
    * secondary_boot_disks block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#secondary_boot_disks ContainerNodePool#secondary_boot_disks}
    */
    readonly secondaryBootDisks?: ContainerNodePoolNodeConfigSecondaryBootDisks[] | cdktf.IResolvable;
    /**
    * shielded_instance_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#shielded_instance_config ContainerNodePool#shielded_instance_config}
    */
    readonly shieldedInstanceConfig?: ContainerNodePoolNodeConfigShieldedInstanceConfig;
    /**
    * sole_tenant_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#sole_tenant_config ContainerNodePool#sole_tenant_config}
    */
    readonly soleTenantConfig?: ContainerNodePoolNodeConfigSoleTenantConfig;
    /**
    * taint block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#taint ContainerNodePool#taint}
    */
    readonly taint?: ContainerNodePoolNodeConfigTaint[] | cdktf.IResolvable;
    /**
    * workload_metadata_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#workload_metadata_config ContainerNodePool#workload_metadata_config}
    */
    readonly workloadMetadataConfig?: ContainerNodePoolNodeConfigWorkloadMetadataConfig;
}
export declare function containerNodePoolNodeConfigToTerraform(struct?: ContainerNodePoolNodeConfigOutputReference | ContainerNodePoolNodeConfig): any;
export declare function containerNodePoolNodeConfigToHclTerraform(struct?: ContainerNodePoolNodeConfigOutputReference | ContainerNodePoolNodeConfig): any;
export declare class ContainerNodePoolNodeConfigOutputReference 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(): ContainerNodePoolNodeConfig | undefined;
    set internalValue(value: ContainerNodePoolNodeConfig | undefined);
    private _bootDiskKmsKey?;
    get bootDiskKmsKey(): string;
    set bootDiskKmsKey(value: string);
    resetBootDiskKmsKey(): void;
    get bootDiskKmsKeyInput(): string | undefined;
    private _diskSizeGb?;
    get diskSizeGb(): number;
    set diskSizeGb(value: number);
    resetDiskSizeGb(): void;
    get diskSizeGbInput(): number | undefined;
    private _diskType?;
    get diskType(): string;
    set diskType(value: string);
    resetDiskType(): void;
    get diskTypeInput(): string | undefined;
    private _effectiveTaints;
    get effectiveTaints(): ContainerNodePoolNodeConfigEffectiveTaintsList;
    private _enableConfidentialStorage?;
    get enableConfidentialStorage(): boolean | cdktf.IResolvable;
    set enableConfidentialStorage(value: boolean | cdktf.IResolvable);
    resetEnableConfidentialStorage(): void;
    get enableConfidentialStorageInput(): boolean | cdktf.IResolvable | undefined;
    private _imageType?;
    get imageType(): string;
    set imageType(value: string);
    resetImageType(): void;
    get imageTypeInput(): string | undefined;
    private _labels?;
    get labels(): {
        [key: string]: string;
    };
    set labels(value: {
        [key: string]: string;
    });
    resetLabels(): void;
    get labelsInput(): {
        [key: string]: string;
    } | undefined;
    private _localSsdCount?;
    get localSsdCount(): number;
    set localSsdCount(value: number);
    resetLocalSsdCount(): void;
    get localSsdCountInput(): number | undefined;
    private _localSsdEncryptionMode?;
    get localSsdEncryptionMode(): string;
    set localSsdEncryptionMode(value: string);
    resetLocalSsdEncryptionMode(): void;
    get localSsdEncryptionModeInput(): string | undefined;
    private _loggingVariant?;
    get loggingVariant(): string;
    set loggingVariant(value: string);
    resetLoggingVariant(): void;
    get loggingVariantInput(): string | undefined;
    private _machineType?;
    get machineType(): string;
    set machineType(value: string);
    resetMachineType(): void;
    get machineTypeInput(): string | undefined;
    private _metadata?;
    get metadata(): {
        [key: string]: string;
    };
    set metadata(value: {
        [key: string]: string;
    });
    resetMetadata(): void;
    get metadataInput(): {
        [key: string]: string;
    } | undefined;
    private _minCpuPlatform?;
    get minCpuPlatform(): string;
    set minCpuPlatform(value: string);
    resetMinCpuPlatform(): void;
    get minCpuPlatformInput(): string | undefined;
    private _nodeGroup?;
    get nodeGroup(): string;
    set nodeGroup(value: string);
    resetNodeGroup(): void;
    get nodeGroupInput(): string | undefined;
    private _oauthScopes?;
    get oauthScopes(): string[];
    set oauthScopes(value: string[]);
    resetOauthScopes(): void;
    get oauthScopesInput(): string[] | undefined;
    private _preemptible?;
    get preemptible(): boolean | cdktf.IResolvable;
    set preemptible(value: boolean | cdktf.IResolvable);
    resetPreemptible(): void;
    get preemptibleInput(): boolean | cdktf.IResolvable | undefined;
    private _resourceLabels?;
    get resourceLabels(): {
        [key: string]: string;
    };
    set resourceLabels(value: {
        [key: string]: string;
    });
    resetResourceLabels(): void;
    get resourceLabelsInput(): {
        [key: string]: string;
    } | undefined;
    private _resourceManagerTags?;
    get resourceManagerTags(): {
        [key: string]: string;
    };
    set resourceManagerTags(value: {
        [key: string]: string;
    });
    resetResourceManagerTags(): void;
    get resourceManagerTagsInput(): {
        [key: string]: string;
    } | undefined;
    private _serviceAccount?;
    get serviceAccount(): string;
    set serviceAccount(value: string);
    resetServiceAccount(): void;
    get serviceAccountInput(): string | undefined;
    private _spot?;
    get spot(): boolean | cdktf.IResolvable;
    set spot(value: boolean | cdktf.IResolvable);
    resetSpot(): void;
    get spotInput(): boolean | cdktf.IResolvable | undefined;
    private _storagePools?;
    get storagePools(): string[];
    set storagePools(value: string[]);
    resetStoragePools(): void;
    get storagePoolsInput(): string[] | undefined;
    private _tags?;
    get tags(): string[];
    set tags(value: string[]);
    resetTags(): void;
    get tagsInput(): string[] | undefined;
    private _advancedMachineFeatures;
    get advancedMachineFeatures(): ContainerNodePoolNodeConfigAdvancedMachineFeaturesOutputReference;
    putAdvancedMachineFeatures(value: ContainerNodePoolNodeConfigAdvancedMachineFeatures): void;
    resetAdvancedMachineFeatures(): void;
    get advancedMachineFeaturesInput(): ContainerNodePoolNodeConfigAdvancedMachineFeatures | undefined;
    private _confidentialNodes;
    get confidentialNodes(): ContainerNodePoolNodeConfigConfidentialNodesOutputReference;
    putConfidentialNodes(value: ContainerNodePoolNodeConfigConfidentialNodes): void;
    resetConfidentialNodes(): void;
    get confidentialNodesInput(): ContainerNodePoolNodeConfigConfidentialNodes | undefined;
    private _containerdConfig;
    get containerdConfig(): ContainerNodePoolNodeConfigContainerdConfigOutputReference;
    putContainerdConfig(value: ContainerNodePoolNodeConfigContainerdConfig): void;
    resetContainerdConfig(): void;
    get containerdConfigInput(): ContainerNodePoolNodeConfigContainerdConfig | undefined;
    private _ephemeralStorageLocalSsdConfig;
    get ephemeralStorageLocalSsdConfig(): ContainerNodePoolNodeConfigEphemeralStorageLocalSsdConfigOutputReference;
    putEphemeralStorageLocalSsdConfig(value: ContainerNodePoolNodeConfigEphemeralStorageLocalSsdConfig): void;
    resetEphemeralStorageLocalSsdConfig(): void;
    get ephemeralStorageLocalSsdConfigInput(): ContainerNodePoolNodeConfigEphemeralStorageLocalSsdConfig | undefined;
    private _fastSocket;
    get fastSocket(): ContainerNodePoolNodeConfigFastSocketOutputReference;
    putFastSocket(value: ContainerNodePoolNodeConfigFastSocket): void;
    resetFastSocket(): void;
    get fastSocketInput(): ContainerNodePoolNodeConfigFastSocket | undefined;
    private _gcfsConfig;
    get gcfsConfig(): ContainerNodePoolNodeConfigGcfsConfigOutputReference;
    putGcfsConfig(value: ContainerNodePoolNodeConfigGcfsConfig): void;
    resetGcfsConfig(): void;
    get gcfsConfigInput(): ContainerNodePoolNodeConfigGcfsConfig | undefined;
    private _guestAccelerator;
    get guestAccelerator(): ContainerNodePoolNodeConfigGuestAcceleratorList;
    putGuestAccelerator(value: ContainerNodePoolNodeConfigGuestAccelerator[] | cdktf.IResolvable): void;
    resetGuestAccelerator(): void;
    get guestAcceleratorInput(): cdktf.IResolvable | ContainerNodePoolNodeConfigGuestAccelerator[] | undefined;
    private _gvnic;
    get gvnic(): ContainerNodePoolNodeConfigGvnicOutputReference;
    putGvnic(value: ContainerNodePoolNodeConfigGvnic): void;
    resetGvnic(): void;
    get gvnicInput(): ContainerNodePoolNodeConfigGvnic | undefined;
    private _hostMaintenancePolicy;
    get hostMaintenancePolicy(): ContainerNodePoolNodeConfigHostMaintenancePolicyOutputReference;
    putHostMaintenancePolicy(value: ContainerNodePoolNodeConfigHostMaintenancePolicy): void;
    resetHostMaintenancePolicy(): void;
    get hostMaintenancePolicyInput(): ContainerNodePoolNodeConfigHostMaintenancePolicy | undefined;
    private _kubeletConfig;
    get kubeletConfig(): ContainerNodePoolNodeConfigKubeletConfigOutputReference;
    putKubeletConfig(value: ContainerNodePoolNodeConfigKubeletConfig): void;
    resetKubeletConfig(): void;
    get kubeletConfigInput(): ContainerNodePoolNodeConfigKubeletConfig | undefined;
    private _linuxNodeConfig;
    get linuxNodeConfig(): ContainerNodePoolNodeConfigLinuxNodeConfigOutputReference;
    putLinuxNodeConfig(value: ContainerNodePoolNodeConfigLinuxNodeConfig): void;
    resetLinuxNodeConfig(): void;
    get linuxNodeConfigInput(): ContainerNodePoolNodeConfigLinuxNodeConfig | undefined;
    private _localNvmeSsdBlockConfig;
    get localNvmeSsdBlockConfig(): ContainerNodePoolNodeConfigLocalNvmeSsdBlockConfigOutputReference;
    putLocalNvmeSsdBlockConfig(value: ContainerNodePoolNodeConfigLocalNvmeSsdBlockConfig): void;
    resetLocalNvmeSsdBlockConfig(): void;
    get localNvmeSsdBlockConfigInput(): ContainerNodePoolNodeConfigLocalNvmeSsdBlockConfig | undefined;
    private _reservationAffinity;
    get reservationAffinity(): ContainerNodePoolNodeConfigReservationAffinityOutputReference;
    putReservationAffinity(value: ContainerNodePoolNodeConfigReservationAffinity): void;
    resetReservationAffinity(): void;
    get reservationAffinityInput(): ContainerNodePoolNodeConfigReservationAffinity | undefined;
    private _secondaryBootDisks;
    get secondaryBootDisks(): ContainerNodePoolNodeConfigSecondaryBootDisksList;
    putSecondaryBootDisks(value: ContainerNodePoolNodeConfigSecondaryBootDisks[] | cdktf.IResolvable): void;
    resetSecondaryBootDisks(): void;
    get secondaryBootDisksInput(): cdktf.IResolvable | ContainerNodePoolNodeConfigSecondaryBootDisks[] | undefined;
    private _shieldedInstanceConfig;
    get shieldedInstanceConfig(): ContainerNodePoolNodeConfigShieldedInstanceConfigOutputReference;
    putShieldedInstanceConfig(value: ContainerNodePoolNodeConfigShieldedInstanceConfig): void;
    resetShieldedInstanceConfig(): void;
    get shieldedInstanceConfigInput(): ContainerNodePoolNodeConfigShieldedInstanceConfig | undefined;
    private _soleTenantConfig;
    get soleTenantConfig(): ContainerNodePoolNodeConfigSoleTenantConfigOutputReference;
    putSoleTenantConfig(value: ContainerNodePoolNodeConfigSoleTenantConfig): void;
    resetSoleTenantConfig(): void;
    get soleTenantConfigInput(): ContainerNodePoolNodeConfigSoleTenantConfig | undefined;
    private _taint;
    get taint(): ContainerNodePoolNodeConfigTaintList;
    putTaint(value: ContainerNodePoolNodeConfigTaint[] | cdktf.IResolvable): void;
    resetTaint(): void;
    get taintInput(): cdktf.IResolvable | ContainerNodePoolNodeConfigTaint[] | undefined;
    private _workloadMetadataConfig;
    get workloadMetadataConfig(): ContainerNodePoolNodeConfigWorkloadMetadataConfigOutputReference;
    putWorkloadMetadataConfig(value: ContainerNodePoolNodeConfigWorkloadMetadataConfig): void;
    resetWorkloadMetadataConfig(): void;
    get workloadMetadataConfigInput(): ContainerNodePoolNodeConfigWorkloadMetadataConfig | undefined;
}
export interface ContainerNodePoolPlacementPolicy {
    /**
    * If set, refers to the name of a custom resource policy supplied by the user. The resource policy must be in the same project and region as the node pool. If not found, InvalidArgument error is returned.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#policy_name ContainerNodePool#policy_name}
    */
    readonly policyName?: string;
    /**
    * TPU placement topology for pod slice node pool. https://cloud.google.com/tpu/docs/types-topologies#tpu_topologies
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#tpu_topology ContainerNodePool#tpu_topology}
    */
    readonly tpuTopology?: string;
    /**
    * Type defines the type of placement policy
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#type ContainerNodePool#type}
    */
    readonly type: string;
}
export declare function containerNodePoolPlacementPolicyToTerraform(struct?: ContainerNodePoolPlacementPolicyOutputReference | ContainerNodePoolPlacementPolicy): any;
export declare function containerNodePoolPlacementPolicyToHclTerraform(struct?: ContainerNodePoolPlacementPolicyOutputReference | ContainerNodePoolPlacementPolicy): any;
export declare class ContainerNodePoolPlacementPolicyOutputReference 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(): ContainerNodePoolPlacementPolicy | undefined;
    set internalValue(value: ContainerNodePoolPlacementPolicy | undefined);
    private _policyName?;
    get policyName(): string;
    set policyName(value: string);
    resetPolicyName(): void;
    get policyNameInput(): string | undefined;
    private _tpuTopology?;
    get tpuTopology(): string;
    set tpuTopology(value: string);
    resetTpuTopology(): void;
    get tpuTopologyInput(): string | undefined;
    private _type?;
    get type(): string;
    set type(value: string);
    get typeInput(): string | undefined;
}
export interface ContainerNodePoolQueuedProvisioning {
    /**
    * Whether nodes in this node pool are obtainable solely through the ProvisioningRequest API
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#enabled ContainerNodePool#enabled}
    */
    readonly enabled: boolean | cdktf.IResolvable;
}
export declare function containerNodePoolQueuedProvisioningToTerraform(struct?: ContainerNodePoolQueuedProvisioningOutputReference | ContainerNodePoolQueuedProvisioning): any;
export declare function containerNodePoolQueuedProvisioningToHclTerraform(struct?: ContainerNodePoolQueuedProvisioningOutputReference | ContainerNodePoolQueuedProvisioning): any;
export declare class ContainerNodePoolQueuedProvisioningOutputReference 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(): ContainerNodePoolQueuedProvisioning | undefined;
    set internalValue(value: ContainerNodePoolQueuedProvisioning | undefined);
    private _enabled?;
    get enabled(): boolean | cdktf.IResolvable;
    set enabled(value: boolean | cdktf.IResolvable);
    get enabledInput(): boolean | cdktf.IResolvable | undefined;
}
export interface ContainerNodePoolTimeouts {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#create ContainerNodePool#create}
    */
    readonly create?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#delete ContainerNodePool#delete}
    */
    readonly delete?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#update ContainerNodePool#update}
    */
    readonly update?: string;
}
export declare function containerNodePoolTimeoutsToTerraform(struct?: ContainerNodePoolTimeouts | cdktf.IResolvable): any;
export declare function containerNodePoolTimeoutsToHclTerraform(struct?: ContainerNodePoolTimeouts | cdktf.IResolvable): any;
export declare class ContainerNodePoolTimeoutsOutputReference 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(): ContainerNodePoolTimeouts | cdktf.IResolvable | undefined;
    set internalValue(value: ContainerNodePoolTimeouts | 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 _update?;
    get update(): string;
    set update(value: string);
    resetUpdate(): void;
    get updateInput(): string | undefined;
}
export interface ContainerNodePoolUpgradeSettingsBlueGreenSettingsStandardRolloutPolicy {
    /**
    * Number of blue nodes to drain in a batch.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#batch_node_count ContainerNodePool#batch_node_count}
    */
    readonly batchNodeCount?: number;
    /**
    * Percentage of the blue pool nodes to drain in a batch.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#batch_percentage ContainerNodePool#batch_percentage}
    */
    readonly batchPercentage?: number;
    /**
    * Soak time after each batch gets drained.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#batch_soak_duration ContainerNodePool#batch_soak_duration}
    */
    readonly batchSoakDuration?: string;
}
export declare function containerNodePoolUpgradeSettingsBlueGreenSettingsStandardRolloutPolicyToTerraform(struct?: ContainerNodePoolUpgradeSettingsBlueGreenSettingsStandardRolloutPolicyOutputReference | ContainerNodePoolUpgradeSettingsBlueGreenSettingsStandardRolloutPolicy): any;
export declare function containerNodePoolUpgradeSettingsBlueGreenSettingsStandardRolloutPolicyToHclTerraform(struct?: ContainerNodePoolUpgradeSettingsBlueGreenSettingsStandardRolloutPolicyOutputReference | ContainerNodePoolUpgradeSettingsBlueGreenSettingsStandardRolloutPolicy): any;
export declare class ContainerNodePoolUpgradeSettingsBlueGreenSettingsStandardRolloutPolicyOutputReference 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(): ContainerNodePoolUpgradeSettingsBlueGreenSettingsStandardRolloutPolicy | undefined;
    set internalValue(value: ContainerNodePoolUpgradeSettingsBlueGreenSettingsStandardRolloutPolicy | undefined);
    private _batchNodeCount?;
    get batchNodeCount(): number;
    set batchNodeCount(value: number);
    resetBatchNodeCount(): void;
    get batchNodeCountInput(): number | undefined;
    private _batchPercentage?;
    get batchPercentage(): number;
    set batchPercentage(value: number);
    resetBatchPercentage(): void;
    get batchPercentageInput(): number | undefined;
    private _batchSoakDuration?;
    get batchSoakDuration(): string;
    set batchSoakDuration(value: string);
    resetBatchSoakDuration(): void;
    get batchSoakDurationInput(): string | undefined;
}
export interface ContainerNodePoolUpgradeSettingsBlueGreenSettings {
    /**
    * Time needed after draining entire blue pool. After this period, blue pool will be cleaned up.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#node_pool_soak_duration ContainerNodePool#node_pool_soak_duration}
    */
    readonly nodePoolSoakDuration?: string;
    /**
    * standard_rollout_policy block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#standard_rollout_policy ContainerNodePool#standard_rollout_policy}
    */
    readonly standardRolloutPolicy: ContainerNodePoolUpgradeSettingsBlueGreenSettingsStandardRolloutPolicy;
}
export declare function containerNodePoolUpgradeSettingsBlueGreenSettingsToTerraform(struct?: ContainerNodePoolUpgradeSettingsBlueGreenSettingsOutputReference | ContainerNodePoolUpgradeSettingsBlueGreenSettings): any;
export declare function containerNodePoolUpgradeSettingsBlueGreenSettingsToHclTerraform(struct?: ContainerNodePoolUpgradeSettingsBlueGreenSettingsOutputReference | ContainerNodePoolUpgradeSettingsBlueGreenSettings): any;
export declare class ContainerNodePoolUpgradeSettingsBlueGreenSettingsOutputReference 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(): ContainerNodePoolUpgradeSettingsBlueGreenSettings | undefined;
    set internalValue(value: ContainerNodePoolUpgradeSettingsBlueGreenSettings | undefined);
    private _nodePoolSoakDuration?;
    get nodePoolSoakDuration(): string;
    set nodePoolSoakDuration(value: string);
    resetNodePoolSoakDuration(): void;
    get nodePoolSoakDurationInput(): string | undefined;
    private _standardRolloutPolicy;
    get standardRolloutPolicy(): ContainerNodePoolUpgradeSettingsBlueGreenSettingsStandardRolloutPolicyOutputReference;
    putStandardRolloutPolicy(value: ContainerNodePoolUpgradeSettingsBlueGreenSettingsStandardRolloutPolicy): void;
    get standardRolloutPolicyInput(): ContainerNodePoolUpgradeSettingsBlueGreenSettingsStandardRolloutPolicy | undefined;
}
export interface ContainerNodePoolUpgradeSettings {
    /**
    * 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.13.0/docs/resources/container_node_pool#max_surge ContainerNodePool#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.13.0/docs/resources/container_node_pool#max_unavailable ContainerNodePool#max_unavailable}
    */
    readonly maxUnavailable?: number;
    /**
    * Update strategy for the given nodepool.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#strategy ContainerNodePool#strategy}
    */
    readonly strategy?: string;
    /**
    * blue_green_settings block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#blue_green_settings ContainerNodePool#blue_green_settings}
    */
    readonly blueGreenSettings?: ContainerNodePoolUpgradeSettingsBlueGreenSettings;
}
export declare function containerNodePoolUpgradeSettingsToTerraform(struct?: ContainerNodePoolUpgradeSettingsOutputReference | ContainerNodePoolUpgradeSettings): any;
export declare function containerNodePoolUpgradeSettingsToHclTerraform(struct?: ContainerNodePoolUpgradeSettingsOutputReference | ContainerNodePoolUpgradeSettings): any;
export declare class ContainerNodePoolUpgradeSettingsOutputReference 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(): ContainerNodePoolUpgradeSettings | undefined;
    set internalValue(value: ContainerNodePoolUpgradeSettings | 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(): ContainerNodePoolUpgradeSettingsBlueGreenSettingsOutputReference;
    putBlueGreenSettings(value: ContainerNodePoolUpgradeSettingsBlueGreenSettings): void;
    resetBlueGreenSettings(): void;
    get blueGreenSettingsInput(): ContainerNodePoolUpgradeSettingsBlueGreenSettings | undefined;
}
/**
* Represents a {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool google_container_node_pool}
*/
export declare class ContainerNodePool extends cdktf.TerraformResource {
    static readonly tfResourceType = "google_container_node_pool";
    /**
    * Generates CDKTF code for importing a ContainerNodePool resource upon running "cdktf plan <stack-name>"
    * @param scope The scope in which to define this construct
    * @param importToId The construct id used in the generated config for the ContainerNodePool to import
    * @param importFromId The id of the existing ContainerNodePool that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the ContainerNodePool to import is found
    */
    static generateConfigForImport(scope: Construct, importToId: string, importFromId: string, provider?: cdktf.TerraformProvider): cdktf.ImportableResource;
    /**
    * Create a new {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/container_node_pool google_container_node_pool} Resource
    *
    * @param scope The scope in which to define this construct
    * @param id The scoped construct ID. Must be unique amongst siblings in the same scope
    * @param options ContainerNodePoolConfig
    */
    constructor(scope: Construct, id: string, config: ContainerNodePoolConfig);
    private _cluster?;
    get cluster(): string;
    set cluster(value: string);
    get clusterInput(): string | undefined;
    private _id?;
    get id(): string;
    set id(value: string);
    resetId(): void;
    get idInput(): string | undefined;
    private _initialNodeCount?;
    get initialNodeCount(): number;
    set initialNodeCount(value: number);
    resetInitialNodeCount(): void;
    get initialNodeCountInput(): number | undefined;
    get instanceGroupUrls(): string[];
    private _location?;
    get location(): string;
    set location(value: string);
    resetLocation(): void;
    get locationInput(): string | undefined;
    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;
    get operation(): string;
    private _project?;
    get project(): string;
    set project(value: string);
    resetProject(): void;
    get projectInput(): string | undefined;
    private _version?;
    get version(): string;
    set version(value: string);
    resetVersion(): void;
    get versionInput(): string | undefined;
    private _autoscaling;
    get autoscaling(): ContainerNodePoolAutoscalingOutputReference;
    putAutoscaling(value: ContainerNodePoolAutoscaling): void;
    resetAutoscaling(): void;
    get autoscalingInput(): ContainerNodePoolAutoscaling | undefined;
    private _management;
    get management(): ContainerNodePoolManagementOutputReference;
    putManagement(value: ContainerNodePoolManagement): void;
    resetManagement(): void;
    get managementInput(): ContainerNodePoolManagement | undefined;
    private _networkConfig;
    get networkConfig(): ContainerNodePoolNetworkConfigOutputReference;
    putNetworkConfig(value: ContainerNodePoolNetworkConfig): void;
    resetNetworkConfig(): void;
    get networkConfigInput(): ContainerNodePoolNetworkConfig | undefined;
    private _nodeConfig;
    get nodeConfig(): ContainerNodePoolNodeConfigOutputReference;
    putNodeConfig(value: ContainerNodePoolNodeConfig): void;
    resetNodeConfig(): void;
    get nodeConfigInput(): ContainerNodePoolNodeConfig | undefined;
    private _placementPolicy;
    get placementPolicy(): ContainerNodePoolPlacementPolicyOutputReference;
    putPlacementPolicy(value: ContainerNodePoolPlacementPolicy): void;
    resetPlacementPolicy(): void;
    get placementPolicyInput(): ContainerNodePoolPlacementPolicy | undefined;
    private _queuedProvisioning;
    get queuedProvisioning(): ContainerNodePoolQueuedProvisioningOutputReference;
    putQueuedProvisioning(value: ContainerNodePoolQueuedProvisioning): void;
    resetQueuedProvisioning(): void;
    get queuedProvisioningInput(): ContainerNodePoolQueuedProvisioning | undefined;
    private _timeouts;
    get timeouts(): ContainerNodePoolTimeoutsOutputReference;
    putTimeouts(value: ContainerNodePoolTimeouts): void;
    resetTimeouts(): void;
    get timeoutsInput(): cdktf.IResolvable | ContainerNodePoolTimeouts | undefined;
    private _upgradeSettings;
    get upgradeSettings(): ContainerNodePoolUpgradeSettingsOutputReference;
    putUpgradeSettings(value: ContainerNodePoolUpgradeSettings): void;
    resetUpgradeSettings(): void;
    get upgradeSettingsInput(): ContainerNodePoolUpgradeSettings | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
