/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */
import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface ContainerAttachedClusterConfig extends cdktf.TerraformMetaArguments {
    /**
    * Optional. Annotations on the cluster. This field has the same
    * restrictions as Kubernetes annotations. The total size of all keys and
    * values combined is limited to 256k. Key can have 2 segments: prefix (optional)
    * and name (required), separated by a slash (/). Prefix must be a DNS subdomain.
    * Name must be 63 characters or less, begin and end with alphanumerics,
    * with dashes (-), underscores (_), dots (.), and alphanumerics between.
    *
    *
    * **Note**: This field is non-authoritative, and will only manage the annotations present in your configuration.
    * Please refer to the field 'effective_annotations' for all of the annotations present on the resource.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/container_attached_cluster#annotations ContainerAttachedCluster#annotations}
    */
    readonly annotations?: {
        [key: string]: string;
    };
    /**
    * Policy to determine what flags to send on delete. Possible values: DELETE, DELETE_IGNORE_ERRORS
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/container_attached_cluster#deletion_policy ContainerAttachedCluster#deletion_policy}
    */
    readonly deletionPolicy?: string;
    /**
    * A human readable description of this attached cluster. Cannot be longer
    * than 255 UTF-8 encoded bytes.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/container_attached_cluster#description ContainerAttachedCluster#description}
    */
    readonly description?: string;
    /**
    * The Kubernetes distribution of the underlying attached cluster. Supported values:
    * "eks", "aks", "generic". The generic distribution provides the ability to register
    * or migrate any CNCF conformant cluster.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/container_attached_cluster#distribution ContainerAttachedCluster#distribution}
    */
    readonly distribution: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/container_attached_cluster#id ContainerAttachedCluster#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 location for the resource
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/container_attached_cluster#location ContainerAttachedCluster#location}
    */
    readonly location: string;
    /**
    * The name of this resource.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/container_attached_cluster#name ContainerAttachedCluster#name}
    */
    readonly name: string;
    /**
    * The platform version for the cluster (e.g. '1.23.0-gke.1').
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/container_attached_cluster#platform_version ContainerAttachedCluster#platform_version}
    */
    readonly platformVersion: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/container_attached_cluster#project ContainerAttachedCluster#project}
    */
    readonly project?: string;
    /**
    * authorization block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/container_attached_cluster#authorization ContainerAttachedCluster#authorization}
    */
    readonly authorization?: ContainerAttachedClusterAuthorization;
    /**
    * binary_authorization block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/container_attached_cluster#binary_authorization ContainerAttachedCluster#binary_authorization}
    */
    readonly binaryAuthorization?: ContainerAttachedClusterBinaryAuthorization;
    /**
    * fleet block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/container_attached_cluster#fleet ContainerAttachedCluster#fleet}
    */
    readonly fleet: ContainerAttachedClusterFleet;
    /**
    * logging_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/container_attached_cluster#logging_config ContainerAttachedCluster#logging_config}
    */
    readonly loggingConfig?: ContainerAttachedClusterLoggingConfig;
    /**
    * monitoring_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/container_attached_cluster#monitoring_config ContainerAttachedCluster#monitoring_config}
    */
    readonly monitoringConfig?: ContainerAttachedClusterMonitoringConfig;
    /**
    * oidc_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/container_attached_cluster#oidc_config ContainerAttachedCluster#oidc_config}
    */
    readonly oidcConfig: ContainerAttachedClusterOidcConfig;
    /**
    * proxy_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/container_attached_cluster#proxy_config ContainerAttachedCluster#proxy_config}
    */
    readonly proxyConfig?: ContainerAttachedClusterProxyConfig;
    /**
    * security_posture_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/container_attached_cluster#security_posture_config ContainerAttachedCluster#security_posture_config}
    */
    readonly securityPostureConfig?: ContainerAttachedClusterSecurityPostureConfig;
    /**
    * timeouts block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/container_attached_cluster#timeouts ContainerAttachedCluster#timeouts}
    */
    readonly timeouts?: ContainerAttachedClusterTimeouts;
}
export interface ContainerAttachedClusterErrors {
}
export declare function containerAttachedClusterErrorsToTerraform(struct?: ContainerAttachedClusterErrors): any;
export declare function containerAttachedClusterErrorsToHclTerraform(struct?: ContainerAttachedClusterErrors): any;
export declare class ContainerAttachedClusterErrorsOutputReference 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(): ContainerAttachedClusterErrors | undefined;
    set internalValue(value: ContainerAttachedClusterErrors | undefined);
    get message(): string;
}
export declare class ContainerAttachedClusterErrorsList 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): ContainerAttachedClusterErrorsOutputReference;
}
export interface ContainerAttachedClusterWorkloadIdentityConfig {
}
export declare function containerAttachedClusterWorkloadIdentityConfigToTerraform(struct?: ContainerAttachedClusterWorkloadIdentityConfig): any;
export declare function containerAttachedClusterWorkloadIdentityConfigToHclTerraform(struct?: ContainerAttachedClusterWorkloadIdentityConfig): any;
export declare class ContainerAttachedClusterWorkloadIdentityConfigOutputReference 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(): ContainerAttachedClusterWorkloadIdentityConfig | undefined;
    set internalValue(value: ContainerAttachedClusterWorkloadIdentityConfig | undefined);
    get identityProvider(): string;
    get issuerUri(): string;
    get workloadPool(): string;
}
export declare class ContainerAttachedClusterWorkloadIdentityConfigList 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): ContainerAttachedClusterWorkloadIdentityConfigOutputReference;
}
export interface ContainerAttachedClusterAuthorization {
    /**
    * Groups that can perform operations as a cluster admin. A managed
    * ClusterRoleBinding will be created to grant the 'cluster-admin' ClusterRole
    * to the groups. Up to ten admin groups can be provided.
    *
    * For more info on RBAC, see
    * https://kubernetes.io/docs/reference/access-authn-authz/rbac/#user-facing-roles
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/container_attached_cluster#admin_groups ContainerAttachedCluster#admin_groups}
    */
    readonly adminGroups?: string[];
    /**
    * Users that can perform operations as a cluster admin. A managed
    * ClusterRoleBinding will be created to grant the 'cluster-admin' ClusterRole
    * to the users. Up to ten admin users can be provided.
    *
    * For more info on RBAC, see
    * https://kubernetes.io/docs/reference/access-authn-authz/rbac/#user-facing-roles
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/container_attached_cluster#admin_users ContainerAttachedCluster#admin_users}
    */
    readonly adminUsers?: string[];
}
export declare function containerAttachedClusterAuthorizationToTerraform(struct?: ContainerAttachedClusterAuthorizationOutputReference | ContainerAttachedClusterAuthorization): any;
export declare function containerAttachedClusterAuthorizationToHclTerraform(struct?: ContainerAttachedClusterAuthorizationOutputReference | ContainerAttachedClusterAuthorization): any;
export declare class ContainerAttachedClusterAuthorizationOutputReference 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(): ContainerAttachedClusterAuthorization | undefined;
    set internalValue(value: ContainerAttachedClusterAuthorization | undefined);
    private _adminGroups?;
    get adminGroups(): string[];
    set adminGroups(value: string[]);
    resetAdminGroups(): void;
    get adminGroupsInput(): string[] | undefined;
    private _adminUsers?;
    get adminUsers(): string[];
    set adminUsers(value: string[]);
    resetAdminUsers(): void;
    get adminUsersInput(): string[] | undefined;
}
export interface ContainerAttachedClusterBinaryAuthorization {
    /**
    * Configure Binary Authorization evaluation mode. Possible values: ["DISABLED", "PROJECT_SINGLETON_POLICY_ENFORCE"]
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/container_attached_cluster#evaluation_mode ContainerAttachedCluster#evaluation_mode}
    */
    readonly evaluationMode?: string;
}
export declare function containerAttachedClusterBinaryAuthorizationToTerraform(struct?: ContainerAttachedClusterBinaryAuthorizationOutputReference | ContainerAttachedClusterBinaryAuthorization): any;
export declare function containerAttachedClusterBinaryAuthorizationToHclTerraform(struct?: ContainerAttachedClusterBinaryAuthorizationOutputReference | ContainerAttachedClusterBinaryAuthorization): any;
export declare class ContainerAttachedClusterBinaryAuthorizationOutputReference 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(): ContainerAttachedClusterBinaryAuthorization | undefined;
    set internalValue(value: ContainerAttachedClusterBinaryAuthorization | undefined);
    private _evaluationMode?;
    get evaluationMode(): string;
    set evaluationMode(value: string);
    resetEvaluationMode(): void;
    get evaluationModeInput(): string | undefined;
}
export interface ContainerAttachedClusterFleet {
    /**
    * The number of the Fleet host project where this cluster will be registered.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/container_attached_cluster#project ContainerAttachedCluster#project}
    */
    readonly project: string;
}
export declare function containerAttachedClusterFleetToTerraform(struct?: ContainerAttachedClusterFleetOutputReference | ContainerAttachedClusterFleet): any;
export declare function containerAttachedClusterFleetToHclTerraform(struct?: ContainerAttachedClusterFleetOutputReference | ContainerAttachedClusterFleet): any;
export declare class ContainerAttachedClusterFleetOutputReference 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(): ContainerAttachedClusterFleet | undefined;
    set internalValue(value: ContainerAttachedClusterFleet | undefined);
    get membership(): string;
    private _project?;
    get project(): string;
    set project(value: string);
    get projectInput(): string | undefined;
}
export interface ContainerAttachedClusterLoggingConfigComponentConfig {
    /**
    * The components to be enabled. Possible values: ["SYSTEM_COMPONENTS", "WORKLOADS"]
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/container_attached_cluster#enable_components ContainerAttachedCluster#enable_components}
    */
    readonly enableComponents?: string[];
}
export declare function containerAttachedClusterLoggingConfigComponentConfigToTerraform(struct?: ContainerAttachedClusterLoggingConfigComponentConfigOutputReference | ContainerAttachedClusterLoggingConfigComponentConfig): any;
export declare function containerAttachedClusterLoggingConfigComponentConfigToHclTerraform(struct?: ContainerAttachedClusterLoggingConfigComponentConfigOutputReference | ContainerAttachedClusterLoggingConfigComponentConfig): any;
export declare class ContainerAttachedClusterLoggingConfigComponentConfigOutputReference 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(): ContainerAttachedClusterLoggingConfigComponentConfig | undefined;
    set internalValue(value: ContainerAttachedClusterLoggingConfigComponentConfig | undefined);
    private _enableComponents?;
    get enableComponents(): string[];
    set enableComponents(value: string[]);
    resetEnableComponents(): void;
    get enableComponentsInput(): string[] | undefined;
}
export interface ContainerAttachedClusterLoggingConfig {
    /**
    * component_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/container_attached_cluster#component_config ContainerAttachedCluster#component_config}
    */
    readonly componentConfig?: ContainerAttachedClusterLoggingConfigComponentConfig;
}
export declare function containerAttachedClusterLoggingConfigToTerraform(struct?: ContainerAttachedClusterLoggingConfigOutputReference | ContainerAttachedClusterLoggingConfig): any;
export declare function containerAttachedClusterLoggingConfigToHclTerraform(struct?: ContainerAttachedClusterLoggingConfigOutputReference | ContainerAttachedClusterLoggingConfig): any;
export declare class ContainerAttachedClusterLoggingConfigOutputReference 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(): ContainerAttachedClusterLoggingConfig | undefined;
    set internalValue(value: ContainerAttachedClusterLoggingConfig | undefined);
    private _componentConfig;
    get componentConfig(): ContainerAttachedClusterLoggingConfigComponentConfigOutputReference;
    putComponentConfig(value: ContainerAttachedClusterLoggingConfigComponentConfig): void;
    resetComponentConfig(): void;
    get componentConfigInput(): ContainerAttachedClusterLoggingConfigComponentConfig | undefined;
}
export interface ContainerAttachedClusterMonitoringConfigManagedPrometheusConfig {
    /**
    * Enable Managed Collection.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/container_attached_cluster#enabled ContainerAttachedCluster#enabled}
    */
    readonly enabled?: boolean | cdktf.IResolvable;
}
export declare function containerAttachedClusterMonitoringConfigManagedPrometheusConfigToTerraform(struct?: ContainerAttachedClusterMonitoringConfigManagedPrometheusConfigOutputReference | ContainerAttachedClusterMonitoringConfigManagedPrometheusConfig): any;
export declare function containerAttachedClusterMonitoringConfigManagedPrometheusConfigToHclTerraform(struct?: ContainerAttachedClusterMonitoringConfigManagedPrometheusConfigOutputReference | ContainerAttachedClusterMonitoringConfigManagedPrometheusConfig): any;
export declare class ContainerAttachedClusterMonitoringConfigManagedPrometheusConfigOutputReference 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(): ContainerAttachedClusterMonitoringConfigManagedPrometheusConfig | undefined;
    set internalValue(value: ContainerAttachedClusterMonitoringConfigManagedPrometheusConfig | undefined);
    private _enabled?;
    get enabled(): boolean | cdktf.IResolvable;
    set enabled(value: boolean | cdktf.IResolvable);
    resetEnabled(): void;
    get enabledInput(): boolean | cdktf.IResolvable | undefined;
}
export interface ContainerAttachedClusterMonitoringConfig {
    /**
    * managed_prometheus_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/container_attached_cluster#managed_prometheus_config ContainerAttachedCluster#managed_prometheus_config}
    */
    readonly managedPrometheusConfig?: ContainerAttachedClusterMonitoringConfigManagedPrometheusConfig;
}
export declare function containerAttachedClusterMonitoringConfigToTerraform(struct?: ContainerAttachedClusterMonitoringConfigOutputReference | ContainerAttachedClusterMonitoringConfig): any;
export declare function containerAttachedClusterMonitoringConfigToHclTerraform(struct?: ContainerAttachedClusterMonitoringConfigOutputReference | ContainerAttachedClusterMonitoringConfig): any;
export declare class ContainerAttachedClusterMonitoringConfigOutputReference 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(): ContainerAttachedClusterMonitoringConfig | undefined;
    set internalValue(value: ContainerAttachedClusterMonitoringConfig | undefined);
    private _managedPrometheusConfig;
    get managedPrometheusConfig(): ContainerAttachedClusterMonitoringConfigManagedPrometheusConfigOutputReference;
    putManagedPrometheusConfig(value: ContainerAttachedClusterMonitoringConfigManagedPrometheusConfig): void;
    resetManagedPrometheusConfig(): void;
    get managedPrometheusConfigInput(): ContainerAttachedClusterMonitoringConfigManagedPrometheusConfig | undefined;
}
export interface ContainerAttachedClusterOidcConfig {
    /**
    * A JSON Web Token (JWT) issuer URI. 'issuer' must start with 'https://'
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/container_attached_cluster#issuer_url ContainerAttachedCluster#issuer_url}
    */
    readonly issuerUrl: string;
    /**
    * OIDC verification keys in JWKS format (RFC 7517).
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/container_attached_cluster#jwks ContainerAttachedCluster#jwks}
    */
    readonly jwks?: string;
}
export declare function containerAttachedClusterOidcConfigToTerraform(struct?: ContainerAttachedClusterOidcConfigOutputReference | ContainerAttachedClusterOidcConfig): any;
export declare function containerAttachedClusterOidcConfigToHclTerraform(struct?: ContainerAttachedClusterOidcConfigOutputReference | ContainerAttachedClusterOidcConfig): any;
export declare class ContainerAttachedClusterOidcConfigOutputReference 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(): ContainerAttachedClusterOidcConfig | undefined;
    set internalValue(value: ContainerAttachedClusterOidcConfig | undefined);
    private _issuerUrl?;
    get issuerUrl(): string;
    set issuerUrl(value: string);
    get issuerUrlInput(): string | undefined;
    private _jwks?;
    get jwks(): string;
    set jwks(value: string);
    resetJwks(): void;
    get jwksInput(): string | undefined;
}
export interface ContainerAttachedClusterProxyConfigKubernetesSecret {
    /**
    * Name of the kubernetes secret containing the proxy config.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/container_attached_cluster#name ContainerAttachedCluster#name}
    */
    readonly name: string;
    /**
    * Namespace of the kubernetes secret containing the proxy config.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/container_attached_cluster#namespace ContainerAttachedCluster#namespace}
    */
    readonly namespace: string;
}
export declare function containerAttachedClusterProxyConfigKubernetesSecretToTerraform(struct?: ContainerAttachedClusterProxyConfigKubernetesSecretOutputReference | ContainerAttachedClusterProxyConfigKubernetesSecret): any;
export declare function containerAttachedClusterProxyConfigKubernetesSecretToHclTerraform(struct?: ContainerAttachedClusterProxyConfigKubernetesSecretOutputReference | ContainerAttachedClusterProxyConfigKubernetesSecret): any;
export declare class ContainerAttachedClusterProxyConfigKubernetesSecretOutputReference 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(): ContainerAttachedClusterProxyConfigKubernetesSecret | undefined;
    set internalValue(value: ContainerAttachedClusterProxyConfigKubernetesSecret | undefined);
    private _name?;
    get name(): string;
    set name(value: string);
    get nameInput(): string | undefined;
    private _namespace?;
    get namespace(): string;
    set namespace(value: string);
    get namespaceInput(): string | undefined;
}
export interface ContainerAttachedClusterProxyConfig {
    /**
    * kubernetes_secret block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/container_attached_cluster#kubernetes_secret ContainerAttachedCluster#kubernetes_secret}
    */
    readonly kubernetesSecret?: ContainerAttachedClusterProxyConfigKubernetesSecret;
}
export declare function containerAttachedClusterProxyConfigToTerraform(struct?: ContainerAttachedClusterProxyConfigOutputReference | ContainerAttachedClusterProxyConfig): any;
export declare function containerAttachedClusterProxyConfigToHclTerraform(struct?: ContainerAttachedClusterProxyConfigOutputReference | ContainerAttachedClusterProxyConfig): any;
export declare class ContainerAttachedClusterProxyConfigOutputReference 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(): ContainerAttachedClusterProxyConfig | undefined;
    set internalValue(value: ContainerAttachedClusterProxyConfig | undefined);
    private _kubernetesSecret;
    get kubernetesSecret(): ContainerAttachedClusterProxyConfigKubernetesSecretOutputReference;
    putKubernetesSecret(value: ContainerAttachedClusterProxyConfigKubernetesSecret): void;
    resetKubernetesSecret(): void;
    get kubernetesSecretInput(): ContainerAttachedClusterProxyConfigKubernetesSecret | undefined;
}
export interface ContainerAttachedClusterSecurityPostureConfig {
    /**
    * Sets the mode of the Kubernetes security posture API's workload vulnerability scanning. Possible values: ["VULNERABILITY_DISABLED", "VULNERABILITY_ENTERPRISE"]
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/container_attached_cluster#vulnerability_mode ContainerAttachedCluster#vulnerability_mode}
    */
    readonly vulnerabilityMode: string;
}
export declare function containerAttachedClusterSecurityPostureConfigToTerraform(struct?: ContainerAttachedClusterSecurityPostureConfigOutputReference | ContainerAttachedClusterSecurityPostureConfig): any;
export declare function containerAttachedClusterSecurityPostureConfigToHclTerraform(struct?: ContainerAttachedClusterSecurityPostureConfigOutputReference | ContainerAttachedClusterSecurityPostureConfig): any;
export declare class ContainerAttachedClusterSecurityPostureConfigOutputReference 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(): ContainerAttachedClusterSecurityPostureConfig | undefined;
    set internalValue(value: ContainerAttachedClusterSecurityPostureConfig | undefined);
    private _vulnerabilityMode?;
    get vulnerabilityMode(): string;
    set vulnerabilityMode(value: string);
    get vulnerabilityModeInput(): string | undefined;
}
export interface ContainerAttachedClusterTimeouts {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/container_attached_cluster#create ContainerAttachedCluster#create}
    */
    readonly create?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/container_attached_cluster#delete ContainerAttachedCluster#delete}
    */
    readonly delete?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/container_attached_cluster#update ContainerAttachedCluster#update}
    */
    readonly update?: string;
}
export declare function containerAttachedClusterTimeoutsToTerraform(struct?: ContainerAttachedClusterTimeouts | cdktf.IResolvable): any;
export declare function containerAttachedClusterTimeoutsToHclTerraform(struct?: ContainerAttachedClusterTimeouts | cdktf.IResolvable): any;
export declare class ContainerAttachedClusterTimeoutsOutputReference 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(): ContainerAttachedClusterTimeouts | cdktf.IResolvable | undefined;
    set internalValue(value: ContainerAttachedClusterTimeouts | 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;
}
/**
* Represents a {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/container_attached_cluster google_container_attached_cluster}
*/
export declare class ContainerAttachedCluster extends cdktf.TerraformResource {
    static readonly tfResourceType = "google_container_attached_cluster";
    /**
    * Generates CDKTF code for importing a ContainerAttachedCluster 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 ContainerAttachedCluster to import
    * @param importFromId The id of the existing ContainerAttachedCluster that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/container_attached_cluster#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the ContainerAttachedCluster 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.40.0/docs/resources/container_attached_cluster google_container_attached_cluster} 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 ContainerAttachedClusterConfig
    */
    constructor(scope: Construct, id: string, config: ContainerAttachedClusterConfig);
    private _annotations?;
    get annotations(): {
        [key: string]: string;
    };
    set annotations(value: {
        [key: string]: string;
    });
    resetAnnotations(): void;
    get annotationsInput(): {
        [key: string]: string;
    } | undefined;
    get clusterRegion(): string;
    get createTime(): string;
    private _deletionPolicy?;
    get deletionPolicy(): string;
    set deletionPolicy(value: string);
    resetDeletionPolicy(): void;
    get deletionPolicyInput(): string | undefined;
    private _description?;
    get description(): string;
    set description(value: string);
    resetDescription(): void;
    get descriptionInput(): string | undefined;
    private _distribution?;
    get distribution(): string;
    set distribution(value: string);
    get distributionInput(): string | undefined;
    private _effectiveAnnotations;
    get effectiveAnnotations(): cdktf.StringMap;
    private _errors;
    get errors(): ContainerAttachedClusterErrorsList;
    private _id?;
    get id(): string;
    set id(value: string);
    resetId(): void;
    get idInput(): string | undefined;
    get kubernetesVersion(): string;
    private _location?;
    get location(): string;
    set location(value: string);
    get locationInput(): string | undefined;
    private _name?;
    get name(): string;
    set name(value: string);
    get nameInput(): string | undefined;
    private _platformVersion?;
    get platformVersion(): string;
    set platformVersion(value: string);
    get platformVersionInput(): string | undefined;
    private _project?;
    get project(): string;
    set project(value: string);
    resetProject(): void;
    get projectInput(): string | undefined;
    get reconciling(): cdktf.IResolvable;
    get state(): string;
    get uid(): string;
    get updateTime(): string;
    private _workloadIdentityConfig;
    get workloadIdentityConfig(): ContainerAttachedClusterWorkloadIdentityConfigList;
    private _authorization;
    get authorization(): ContainerAttachedClusterAuthorizationOutputReference;
    putAuthorization(value: ContainerAttachedClusterAuthorization): void;
    resetAuthorization(): void;
    get authorizationInput(): ContainerAttachedClusterAuthorization | undefined;
    private _binaryAuthorization;
    get binaryAuthorization(): ContainerAttachedClusterBinaryAuthorizationOutputReference;
    putBinaryAuthorization(value: ContainerAttachedClusterBinaryAuthorization): void;
    resetBinaryAuthorization(): void;
    get binaryAuthorizationInput(): ContainerAttachedClusterBinaryAuthorization | undefined;
    private _fleet;
    get fleet(): ContainerAttachedClusterFleetOutputReference;
    putFleet(value: ContainerAttachedClusterFleet): void;
    get fleetInput(): ContainerAttachedClusterFleet | undefined;
    private _loggingConfig;
    get loggingConfig(): ContainerAttachedClusterLoggingConfigOutputReference;
    putLoggingConfig(value: ContainerAttachedClusterLoggingConfig): void;
    resetLoggingConfig(): void;
    get loggingConfigInput(): ContainerAttachedClusterLoggingConfig | undefined;
    private _monitoringConfig;
    get monitoringConfig(): ContainerAttachedClusterMonitoringConfigOutputReference;
    putMonitoringConfig(value: ContainerAttachedClusterMonitoringConfig): void;
    resetMonitoringConfig(): void;
    get monitoringConfigInput(): ContainerAttachedClusterMonitoringConfig | undefined;
    private _oidcConfig;
    get oidcConfig(): ContainerAttachedClusterOidcConfigOutputReference;
    putOidcConfig(value: ContainerAttachedClusterOidcConfig): void;
    get oidcConfigInput(): ContainerAttachedClusterOidcConfig | undefined;
    private _proxyConfig;
    get proxyConfig(): ContainerAttachedClusterProxyConfigOutputReference;
    putProxyConfig(value: ContainerAttachedClusterProxyConfig): void;
    resetProxyConfig(): void;
    get proxyConfigInput(): ContainerAttachedClusterProxyConfig | undefined;
    private _securityPostureConfig;
    get securityPostureConfig(): ContainerAttachedClusterSecurityPostureConfigOutputReference;
    putSecurityPostureConfig(value: ContainerAttachedClusterSecurityPostureConfig): void;
    resetSecurityPostureConfig(): void;
    get securityPostureConfigInput(): ContainerAttachedClusterSecurityPostureConfig | undefined;
    private _timeouts;
    get timeouts(): ContainerAttachedClusterTimeoutsOutputReference;
    putTimeouts(value: ContainerAttachedClusterTimeouts): void;
    resetTimeouts(): void;
    get timeoutsInput(): cdktf.IResolvable | ContainerAttachedClusterTimeouts | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
