/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */
import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface WorkbenchInstanceConfig extends cdktf.TerraformMetaArguments {
    /**
    * Desired state of the Workbench Instance. Set this field to 'ACTIVE' to start the Instance, and 'STOPPED' to stop the Instance.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#desired_state WorkbenchInstance#desired_state}
    */
    readonly desiredState?: string;
    /**
    * Optional. If true, the workbench instance will not register with the proxy.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#disable_proxy_access WorkbenchInstance#disable_proxy_access}
    */
    readonly disableProxyAccess?: boolean | cdktf.IResolvable;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#id WorkbenchInstance#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;
    /**
    * Required. User-defined unique ID of this instance.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#instance_id WorkbenchInstance#instance_id}
    */
    readonly instanceId?: string;
    /**
    * 'Optional. Input only. The owner of this instance after creation. Format:
    * 'alias@example.com' Currently supports one owner only. If not specified, all of
    * the service account users of your VM instance''s service account can use the instance.'
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#instance_owners WorkbenchInstance#instance_owners}
    */
    readonly instanceOwners?: string[];
    /**
    * Optional. Labels to apply to this instance. These can be later modified
    * by the UpdateInstance method.
    *
    *
    * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
    * Please refer to the field 'effective_labels' for all of the labels present on the resource.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#labels WorkbenchInstance#labels}
    */
    readonly labels?: {
        [key: string]: string;
    };
    /**
    * Part of 'parent'. See documentation of 'projectsId'.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#location WorkbenchInstance#location}
    */
    readonly location: string;
    /**
    * The name of this workbench instance. Format: 'projects/{project_id}/locations/{location}/instances/{instance_id}'
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#name WorkbenchInstance#name}
    */
    readonly name: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#project WorkbenchInstance#project}
    */
    readonly project?: string;
    /**
    * gce_setup block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#gce_setup WorkbenchInstance#gce_setup}
    */
    readonly gceSetup?: WorkbenchInstanceGceSetup;
    /**
    * timeouts block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#timeouts WorkbenchInstance#timeouts}
    */
    readonly timeouts?: WorkbenchInstanceTimeouts;
}
export interface WorkbenchInstanceHealthInfo {
}
export declare function workbenchInstanceHealthInfoToTerraform(struct?: WorkbenchInstanceHealthInfo): any;
export declare function workbenchInstanceHealthInfoToHclTerraform(struct?: WorkbenchInstanceHealthInfo): any;
export declare class WorkbenchInstanceHealthInfoOutputReference 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(): WorkbenchInstanceHealthInfo | undefined;
    set internalValue(value: WorkbenchInstanceHealthInfo | undefined);
}
export declare class WorkbenchInstanceHealthInfoList 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): WorkbenchInstanceHealthInfoOutputReference;
}
export interface WorkbenchInstanceUpgradeHistory {
}
export declare function workbenchInstanceUpgradeHistoryToTerraform(struct?: WorkbenchInstanceUpgradeHistory): any;
export declare function workbenchInstanceUpgradeHistoryToHclTerraform(struct?: WorkbenchInstanceUpgradeHistory): any;
export declare class WorkbenchInstanceUpgradeHistoryOutputReference 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(): WorkbenchInstanceUpgradeHistory | undefined;
    set internalValue(value: WorkbenchInstanceUpgradeHistory | undefined);
    get action(): string;
    get containerImage(): string;
    get createTime(): string;
    get framework(): string;
    get snapshot(): string;
    get state(): string;
    get targetVersion(): string;
    get version(): string;
    get vmImage(): string;
}
export declare class WorkbenchInstanceUpgradeHistoryList 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): WorkbenchInstanceUpgradeHistoryOutputReference;
}
export interface WorkbenchInstanceGceSetupAcceleratorConfigs {
    /**
    * Optional. Count of cores of this accelerator.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#core_count WorkbenchInstance#core_count}
    */
    readonly coreCount?: string;
    /**
    * Optional. Type of this accelerator. Possible values: ["NVIDIA_TESLA_P100", "NVIDIA_TESLA_V100", "NVIDIA_TESLA_P4", "NVIDIA_TESLA_T4", "NVIDIA_TESLA_A100", "NVIDIA_A100_80GB", "NVIDIA_L4", "NVIDIA_TESLA_T4_VWS", "NVIDIA_TESLA_P100_VWS", "NVIDIA_TESLA_P4_VWS"]
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#type WorkbenchInstance#type}
    */
    readonly type?: string;
}
export declare function workbenchInstanceGceSetupAcceleratorConfigsToTerraform(struct?: WorkbenchInstanceGceSetupAcceleratorConfigs | cdktf.IResolvable): any;
export declare function workbenchInstanceGceSetupAcceleratorConfigsToHclTerraform(struct?: WorkbenchInstanceGceSetupAcceleratorConfigs | cdktf.IResolvable): any;
export declare class WorkbenchInstanceGceSetupAcceleratorConfigsOutputReference 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(): WorkbenchInstanceGceSetupAcceleratorConfigs | cdktf.IResolvable | undefined;
    set internalValue(value: WorkbenchInstanceGceSetupAcceleratorConfigs | cdktf.IResolvable | undefined);
    private _coreCount?;
    get coreCount(): string;
    set coreCount(value: string);
    resetCoreCount(): void;
    get coreCountInput(): string | undefined;
    private _type?;
    get type(): string;
    set type(value: string);
    resetType(): void;
    get typeInput(): string | undefined;
}
export declare class WorkbenchInstanceGceSetupAcceleratorConfigsList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: WorkbenchInstanceGceSetupAcceleratorConfigs[] | 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): WorkbenchInstanceGceSetupAcceleratorConfigsOutputReference;
}
export interface WorkbenchInstanceGceSetupBootDisk {
    /**
    * Optional. Input only. Disk encryption method used on the boot and
    * data disks, defaults to GMEK. Possible values: ["GMEK", "CMEK"]
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#disk_encryption WorkbenchInstance#disk_encryption}
    */
    readonly diskEncryption?: string;
    /**
    * Optional. The size of the boot disk in GB attached to this instance,
    * up to a maximum of 64000 GB (64 TB). If not specified, this defaults to the
    * recommended value of 150GB.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#disk_size_gb WorkbenchInstance#disk_size_gb}
    */
    readonly diskSizeGb?: string;
    /**
    * Optional. Indicates the type of the disk. Possible values: ["PD_STANDARD", "PD_SSD", "PD_BALANCED", "PD_EXTREME"]
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#disk_type WorkbenchInstance#disk_type}
    */
    readonly diskType?: string;
    /**
    * 'Optional. The KMS key used to encrypt the disks, only
    * applicable if disk_encryption is CMEK. Format: 'projects/{project_id}/locations/{location}/keyRings/{key_ring_id}/cryptoKeys/{key_id}'
    * Learn more about using your own encryption keys.'
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#kms_key WorkbenchInstance#kms_key}
    */
    readonly kmsKey?: string;
}
export declare function workbenchInstanceGceSetupBootDiskToTerraform(struct?: WorkbenchInstanceGceSetupBootDiskOutputReference | WorkbenchInstanceGceSetupBootDisk): any;
export declare function workbenchInstanceGceSetupBootDiskToHclTerraform(struct?: WorkbenchInstanceGceSetupBootDiskOutputReference | WorkbenchInstanceGceSetupBootDisk): any;
export declare class WorkbenchInstanceGceSetupBootDiskOutputReference 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(): WorkbenchInstanceGceSetupBootDisk | undefined;
    set internalValue(value: WorkbenchInstanceGceSetupBootDisk | undefined);
    private _diskEncryption?;
    get diskEncryption(): string;
    set diskEncryption(value: string);
    resetDiskEncryption(): void;
    get diskEncryptionInput(): string | undefined;
    private _diskSizeGb?;
    get diskSizeGb(): string;
    set diskSizeGb(value: string);
    resetDiskSizeGb(): void;
    get diskSizeGbInput(): string | undefined;
    private _diskType?;
    get diskType(): string;
    set diskType(value: string);
    resetDiskType(): void;
    get diskTypeInput(): string | undefined;
    private _kmsKey?;
    get kmsKey(): string;
    set kmsKey(value: string);
    resetKmsKey(): void;
    get kmsKeyInput(): string | undefined;
}
export interface WorkbenchInstanceGceSetupContainerImage {
    /**
    * The path to the container image repository.
    * For example: gcr.io/{project_id}/{imageName}
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#repository WorkbenchInstance#repository}
    */
    readonly repository: string;
    /**
    * The tag of the container image. If not specified, this defaults to the latest tag.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#tag WorkbenchInstance#tag}
    */
    readonly tag?: string;
}
export declare function workbenchInstanceGceSetupContainerImageToTerraform(struct?: WorkbenchInstanceGceSetupContainerImageOutputReference | WorkbenchInstanceGceSetupContainerImage): any;
export declare function workbenchInstanceGceSetupContainerImageToHclTerraform(struct?: WorkbenchInstanceGceSetupContainerImageOutputReference | WorkbenchInstanceGceSetupContainerImage): any;
export declare class WorkbenchInstanceGceSetupContainerImageOutputReference 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(): WorkbenchInstanceGceSetupContainerImage | undefined;
    set internalValue(value: WorkbenchInstanceGceSetupContainerImage | undefined);
    private _repository?;
    get repository(): string;
    set repository(value: string);
    get repositoryInput(): string | undefined;
    private _tag?;
    get tag(): string;
    set tag(value: string);
    resetTag(): void;
    get tagInput(): string | undefined;
}
export interface WorkbenchInstanceGceSetupDataDisks {
    /**
    * Optional. Input only. Disk encryption method used on the boot
    * and data disks, defaults to GMEK. Possible values: ["GMEK", "CMEK"]
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#disk_encryption WorkbenchInstance#disk_encryption}
    */
    readonly diskEncryption?: string;
    /**
    * Optional. The size of the disk in GB attached to this VM instance,
    * up to a maximum of 64000 GB (64 TB). If not specified, this defaults to
    * 100.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#disk_size_gb WorkbenchInstance#disk_size_gb}
    */
    readonly diskSizeGb?: string;
    /**
    * Optional. Input only. Indicates the type of the disk. Possible values: ["PD_STANDARD", "PD_SSD", "PD_BALANCED", "PD_EXTREME"]
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#disk_type WorkbenchInstance#disk_type}
    */
    readonly diskType?: string;
    /**
    * 'Optional. The KMS key used to encrypt the disks,
    * only applicable if disk_encryption is CMEK. Format: 'projects/{project_id}/locations/{location}/keyRings/{key_ring_id}/cryptoKeys/{key_id}'
    * Learn more about using your own encryption keys.'
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#kms_key WorkbenchInstance#kms_key}
    */
    readonly kmsKey?: string;
}
export declare function workbenchInstanceGceSetupDataDisksToTerraform(struct?: WorkbenchInstanceGceSetupDataDisksOutputReference | WorkbenchInstanceGceSetupDataDisks): any;
export declare function workbenchInstanceGceSetupDataDisksToHclTerraform(struct?: WorkbenchInstanceGceSetupDataDisksOutputReference | WorkbenchInstanceGceSetupDataDisks): any;
export declare class WorkbenchInstanceGceSetupDataDisksOutputReference 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(): WorkbenchInstanceGceSetupDataDisks | undefined;
    set internalValue(value: WorkbenchInstanceGceSetupDataDisks | undefined);
    private _diskEncryption?;
    get diskEncryption(): string;
    set diskEncryption(value: string);
    resetDiskEncryption(): void;
    get diskEncryptionInput(): string | undefined;
    private _diskSizeGb?;
    get diskSizeGb(): string;
    set diskSizeGb(value: string);
    resetDiskSizeGb(): void;
    get diskSizeGbInput(): string | undefined;
    private _diskType?;
    get diskType(): string;
    set diskType(value: string);
    resetDiskType(): void;
    get diskTypeInput(): string | undefined;
    private _kmsKey?;
    get kmsKey(): string;
    set kmsKey(value: string);
    resetKmsKey(): void;
    get kmsKeyInput(): string | undefined;
}
export interface WorkbenchInstanceGceSetupNetworkInterfaces {
    /**
    * Optional. The name of the VPC that this VM instance is in.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#network WorkbenchInstance#network}
    */
    readonly network?: string;
    /**
    * Optional. The type of vNIC to be used on this interface. This
    * may be gVNIC or VirtioNet. Possible values: ["VIRTIO_NET", "GVNIC"]
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#nic_type WorkbenchInstance#nic_type}
    */
    readonly nicType?: string;
    /**
    * Optional. The name of the subnet that this VM instance is in.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#subnet WorkbenchInstance#subnet}
    */
    readonly subnet?: string;
}
export declare function workbenchInstanceGceSetupNetworkInterfacesToTerraform(struct?: WorkbenchInstanceGceSetupNetworkInterfaces | cdktf.IResolvable): any;
export declare function workbenchInstanceGceSetupNetworkInterfacesToHclTerraform(struct?: WorkbenchInstanceGceSetupNetworkInterfaces | cdktf.IResolvable): any;
export declare class WorkbenchInstanceGceSetupNetworkInterfacesOutputReference 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(): WorkbenchInstanceGceSetupNetworkInterfaces | cdktf.IResolvable | undefined;
    set internalValue(value: WorkbenchInstanceGceSetupNetworkInterfaces | cdktf.IResolvable | undefined);
    private _network?;
    get network(): string;
    set network(value: string);
    resetNetwork(): void;
    get networkInput(): string | undefined;
    private _nicType?;
    get nicType(): string;
    set nicType(value: string);
    resetNicType(): void;
    get nicTypeInput(): string | undefined;
    private _subnet?;
    get subnet(): string;
    set subnet(value: string);
    resetSubnet(): void;
    get subnetInput(): string | undefined;
}
export declare class WorkbenchInstanceGceSetupNetworkInterfacesList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: WorkbenchInstanceGceSetupNetworkInterfaces[] | 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): WorkbenchInstanceGceSetupNetworkInterfacesOutputReference;
}
export interface WorkbenchInstanceGceSetupServiceAccounts {
    /**
    * Optional. Email address of the service account.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#email WorkbenchInstance#email}
    */
    readonly email?: string;
}
export declare function workbenchInstanceGceSetupServiceAccountsToTerraform(struct?: WorkbenchInstanceGceSetupServiceAccounts | cdktf.IResolvable): any;
export declare function workbenchInstanceGceSetupServiceAccountsToHclTerraform(struct?: WorkbenchInstanceGceSetupServiceAccounts | cdktf.IResolvable): any;
export declare class WorkbenchInstanceGceSetupServiceAccountsOutputReference 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(): WorkbenchInstanceGceSetupServiceAccounts | cdktf.IResolvable | undefined;
    set internalValue(value: WorkbenchInstanceGceSetupServiceAccounts | cdktf.IResolvable | undefined);
    private _email?;
    get email(): string;
    set email(value: string);
    resetEmail(): void;
    get emailInput(): string | undefined;
    get scopes(): string[];
}
export declare class WorkbenchInstanceGceSetupServiceAccountsList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: WorkbenchInstanceGceSetupServiceAccounts[] | 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): WorkbenchInstanceGceSetupServiceAccountsOutputReference;
}
export interface WorkbenchInstanceGceSetupShieldedInstanceConfig {
    /**
    * Optional. Defines whether the VM instance has integrity monitoring
    * enabled. Enables monitoring and attestation of the boot integrity of the VM
    * instance. The attestation is performed against the integrity policy baseline.
    * This baseline is initially derived from the implicitly trusted boot image
    * when the VM instance is created. Enabled by default.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#enable_integrity_monitoring WorkbenchInstance#enable_integrity_monitoring}
    */
    readonly enableIntegrityMonitoring?: boolean | cdktf.IResolvable;
    /**
    * Optional. Defines whether the VM instance has Secure Boot enabled.
    * Secure Boot helps ensure that the system only runs authentic software by verifying
    * the digital signature of all boot components, and halting the boot process
    * if signature verification fails. Disabled by default.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#enable_secure_boot WorkbenchInstance#enable_secure_boot}
    */
    readonly enableSecureBoot?: boolean | cdktf.IResolvable;
    /**
    * Optional. Defines whether the VM instance has the vTPM enabled.
    * Enabled by default.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#enable_vtpm WorkbenchInstance#enable_vtpm}
    */
    readonly enableVtpm?: boolean | cdktf.IResolvable;
}
export declare function workbenchInstanceGceSetupShieldedInstanceConfigToTerraform(struct?: WorkbenchInstanceGceSetupShieldedInstanceConfigOutputReference | WorkbenchInstanceGceSetupShieldedInstanceConfig): any;
export declare function workbenchInstanceGceSetupShieldedInstanceConfigToHclTerraform(struct?: WorkbenchInstanceGceSetupShieldedInstanceConfigOutputReference | WorkbenchInstanceGceSetupShieldedInstanceConfig): any;
export declare class WorkbenchInstanceGceSetupShieldedInstanceConfigOutputReference 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(): WorkbenchInstanceGceSetupShieldedInstanceConfig | undefined;
    set internalValue(value: WorkbenchInstanceGceSetupShieldedInstanceConfig | 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;
    private _enableVtpm?;
    get enableVtpm(): boolean | cdktf.IResolvable;
    set enableVtpm(value: boolean | cdktf.IResolvable);
    resetEnableVtpm(): void;
    get enableVtpmInput(): boolean | cdktf.IResolvable | undefined;
}
export interface WorkbenchInstanceGceSetupVmImage {
    /**
    * Optional. Use this VM image family to find the image; the newest
    * image in this family will be used.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#family WorkbenchInstance#family}
    */
    readonly family?: string;
    /**
    * Optional. Use VM image name to find the image.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#name WorkbenchInstance#name}
    */
    readonly name?: string;
    /**
    * The name of the Google Cloud project that this VM image belongs to.
    * Format: {project_id}
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#project WorkbenchInstance#project}
    */
    readonly project?: string;
}
export declare function workbenchInstanceGceSetupVmImageToTerraform(struct?: WorkbenchInstanceGceSetupVmImageOutputReference | WorkbenchInstanceGceSetupVmImage): any;
export declare function workbenchInstanceGceSetupVmImageToHclTerraform(struct?: WorkbenchInstanceGceSetupVmImageOutputReference | WorkbenchInstanceGceSetupVmImage): any;
export declare class WorkbenchInstanceGceSetupVmImageOutputReference 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(): WorkbenchInstanceGceSetupVmImage | undefined;
    set internalValue(value: WorkbenchInstanceGceSetupVmImage | undefined);
    private _family?;
    get family(): string;
    set family(value: string);
    resetFamily(): void;
    get familyInput(): string | undefined;
    private _name?;
    get name(): string;
    set name(value: string);
    resetName(): void;
    get nameInput(): string | undefined;
    private _project?;
    get project(): string;
    set project(value: string);
    resetProject(): void;
    get projectInput(): string | undefined;
}
export interface WorkbenchInstanceGceSetup {
    /**
    * Optional. If true, no external IP will be assigned to this VM instance.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#disable_public_ip WorkbenchInstance#disable_public_ip}
    */
    readonly disablePublicIp?: boolean | cdktf.IResolvable;
    /**
    * Optional. Flag to enable ip forwarding or not, default false/off.
    * https://cloud.google.com/vpc/docs/using-routes#canipforward
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#enable_ip_forwarding WorkbenchInstance#enable_ip_forwarding}
    */
    readonly enableIpForwarding?: boolean | cdktf.IResolvable;
    /**
    * Optional. The machine type of the VM instance. https://cloud.google.com/compute/docs/machine-resource
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#machine_type WorkbenchInstance#machine_type}
    */
    readonly machineType?: string;
    /**
    * Optional. Custom metadata to apply to this instance.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#metadata WorkbenchInstance#metadata}
    */
    readonly metadata?: {
        [key: string]: string;
    };
    /**
    * Optional. The Compute Engine tags to add to instance (see [Tagging
    * instances](https://cloud.google.com/compute/docs/label-or-tag-resources#tags)).
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#tags WorkbenchInstance#tags}
    */
    readonly tags?: string[];
    /**
    * accelerator_configs block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#accelerator_configs WorkbenchInstance#accelerator_configs}
    */
    readonly acceleratorConfigs?: WorkbenchInstanceGceSetupAcceleratorConfigs[] | cdktf.IResolvable;
    /**
    * boot_disk block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#boot_disk WorkbenchInstance#boot_disk}
    */
    readonly bootDisk?: WorkbenchInstanceGceSetupBootDisk;
    /**
    * container_image block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#container_image WorkbenchInstance#container_image}
    */
    readonly containerImage?: WorkbenchInstanceGceSetupContainerImage;
    /**
    * data_disks block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#data_disks WorkbenchInstance#data_disks}
    */
    readonly dataDisks?: WorkbenchInstanceGceSetupDataDisks;
    /**
    * network_interfaces block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#network_interfaces WorkbenchInstance#network_interfaces}
    */
    readonly networkInterfaces?: WorkbenchInstanceGceSetupNetworkInterfaces[] | cdktf.IResolvable;
    /**
    * service_accounts block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#service_accounts WorkbenchInstance#service_accounts}
    */
    readonly serviceAccounts?: WorkbenchInstanceGceSetupServiceAccounts[] | cdktf.IResolvable;
    /**
    * shielded_instance_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#shielded_instance_config WorkbenchInstance#shielded_instance_config}
    */
    readonly shieldedInstanceConfig?: WorkbenchInstanceGceSetupShieldedInstanceConfig;
    /**
    * vm_image block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#vm_image WorkbenchInstance#vm_image}
    */
    readonly vmImage?: WorkbenchInstanceGceSetupVmImage;
}
export declare function workbenchInstanceGceSetupToTerraform(struct?: WorkbenchInstanceGceSetupOutputReference | WorkbenchInstanceGceSetup): any;
export declare function workbenchInstanceGceSetupToHclTerraform(struct?: WorkbenchInstanceGceSetupOutputReference | WorkbenchInstanceGceSetup): any;
export declare class WorkbenchInstanceGceSetupOutputReference 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(): WorkbenchInstanceGceSetup | undefined;
    set internalValue(value: WorkbenchInstanceGceSetup | undefined);
    private _disablePublicIp?;
    get disablePublicIp(): boolean | cdktf.IResolvable;
    set disablePublicIp(value: boolean | cdktf.IResolvable);
    resetDisablePublicIp(): void;
    get disablePublicIpInput(): boolean | cdktf.IResolvable | undefined;
    private _enableIpForwarding?;
    get enableIpForwarding(): boolean | cdktf.IResolvable;
    set enableIpForwarding(value: boolean | cdktf.IResolvable);
    resetEnableIpForwarding(): void;
    get enableIpForwardingInput(): boolean | cdktf.IResolvable | 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 _tags?;
    get tags(): string[];
    set tags(value: string[]);
    resetTags(): void;
    get tagsInput(): string[] | undefined;
    private _acceleratorConfigs;
    get acceleratorConfigs(): WorkbenchInstanceGceSetupAcceleratorConfigsList;
    putAcceleratorConfigs(value: WorkbenchInstanceGceSetupAcceleratorConfigs[] | cdktf.IResolvable): void;
    resetAcceleratorConfigs(): void;
    get acceleratorConfigsInput(): cdktf.IResolvable | WorkbenchInstanceGceSetupAcceleratorConfigs[] | undefined;
    private _bootDisk;
    get bootDisk(): WorkbenchInstanceGceSetupBootDiskOutputReference;
    putBootDisk(value: WorkbenchInstanceGceSetupBootDisk): void;
    resetBootDisk(): void;
    get bootDiskInput(): WorkbenchInstanceGceSetupBootDisk | undefined;
    private _containerImage;
    get containerImage(): WorkbenchInstanceGceSetupContainerImageOutputReference;
    putContainerImage(value: WorkbenchInstanceGceSetupContainerImage): void;
    resetContainerImage(): void;
    get containerImageInput(): WorkbenchInstanceGceSetupContainerImage | undefined;
    private _dataDisks;
    get dataDisks(): WorkbenchInstanceGceSetupDataDisksOutputReference;
    putDataDisks(value: WorkbenchInstanceGceSetupDataDisks): void;
    resetDataDisks(): void;
    get dataDisksInput(): WorkbenchInstanceGceSetupDataDisks | undefined;
    private _networkInterfaces;
    get networkInterfaces(): WorkbenchInstanceGceSetupNetworkInterfacesList;
    putNetworkInterfaces(value: WorkbenchInstanceGceSetupNetworkInterfaces[] | cdktf.IResolvable): void;
    resetNetworkInterfaces(): void;
    get networkInterfacesInput(): cdktf.IResolvable | WorkbenchInstanceGceSetupNetworkInterfaces[] | undefined;
    private _serviceAccounts;
    get serviceAccounts(): WorkbenchInstanceGceSetupServiceAccountsList;
    putServiceAccounts(value: WorkbenchInstanceGceSetupServiceAccounts[] | cdktf.IResolvable): void;
    resetServiceAccounts(): void;
    get serviceAccountsInput(): cdktf.IResolvable | WorkbenchInstanceGceSetupServiceAccounts[] | undefined;
    private _shieldedInstanceConfig;
    get shieldedInstanceConfig(): WorkbenchInstanceGceSetupShieldedInstanceConfigOutputReference;
    putShieldedInstanceConfig(value: WorkbenchInstanceGceSetupShieldedInstanceConfig): void;
    resetShieldedInstanceConfig(): void;
    get shieldedInstanceConfigInput(): WorkbenchInstanceGceSetupShieldedInstanceConfig | undefined;
    private _vmImage;
    get vmImage(): WorkbenchInstanceGceSetupVmImageOutputReference;
    putVmImage(value: WorkbenchInstanceGceSetupVmImage): void;
    resetVmImage(): void;
    get vmImageInput(): WorkbenchInstanceGceSetupVmImage | undefined;
}
export interface WorkbenchInstanceTimeouts {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#create WorkbenchInstance#create}
    */
    readonly create?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#delete WorkbenchInstance#delete}
    */
    readonly delete?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#update WorkbenchInstance#update}
    */
    readonly update?: string;
}
export declare function workbenchInstanceTimeoutsToTerraform(struct?: WorkbenchInstanceTimeouts | cdktf.IResolvable): any;
export declare function workbenchInstanceTimeoutsToHclTerraform(struct?: WorkbenchInstanceTimeouts | cdktf.IResolvable): any;
export declare class WorkbenchInstanceTimeoutsOutputReference 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(): WorkbenchInstanceTimeouts | cdktf.IResolvable | undefined;
    set internalValue(value: WorkbenchInstanceTimeouts | 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/5.23.0/docs/resources/workbench_instance google_workbench_instance}
*/
export declare class WorkbenchInstance extends cdktf.TerraformResource {
    static readonly tfResourceType = "google_workbench_instance";
    /**
    * Generates CDKTF code for importing a WorkbenchInstance 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 WorkbenchInstance to import
    * @param importFromId The id of the existing WorkbenchInstance that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/google/5.23.0/docs/resources/workbench_instance#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the WorkbenchInstance 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/5.23.0/docs/resources/workbench_instance google_workbench_instance} 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 WorkbenchInstanceConfig
    */
    constructor(scope: Construct, id: string, config: WorkbenchInstanceConfig);
    get createTime(): string;
    get creator(): string;
    private _desiredState?;
    get desiredState(): string;
    set desiredState(value: string);
    resetDesiredState(): void;
    get desiredStateInput(): string | undefined;
    private _disableProxyAccess?;
    get disableProxyAccess(): boolean | cdktf.IResolvable;
    set disableProxyAccess(value: boolean | cdktf.IResolvable);
    resetDisableProxyAccess(): void;
    get disableProxyAccessInput(): boolean | cdktf.IResolvable | undefined;
    private _effectiveLabels;
    get effectiveLabels(): cdktf.StringMap;
    private _healthInfo;
    get healthInfo(): WorkbenchInstanceHealthInfoList;
    get healthState(): string;
    private _id?;
    get id(): string;
    set id(value: string);
    resetId(): void;
    get idInput(): string | undefined;
    private _instanceId?;
    get instanceId(): string;
    set instanceId(value: string);
    resetInstanceId(): void;
    get instanceIdInput(): string | undefined;
    private _instanceOwners?;
    get instanceOwners(): string[];
    set instanceOwners(value: string[]);
    resetInstanceOwners(): void;
    get instanceOwnersInput(): string[] | undefined;
    private _labels?;
    get labels(): {
        [key: string]: string;
    };
    set labels(value: {
        [key: string]: string;
    });
    resetLabels(): void;
    get labelsInput(): {
        [key: string]: string;
    } | undefined;
    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 _project?;
    get project(): string;
    set project(value: string);
    resetProject(): void;
    get projectInput(): string | undefined;
    get proxyUri(): string;
    get state(): string;
    private _terraformLabels;
    get terraformLabels(): cdktf.StringMap;
    get updateTime(): string;
    private _upgradeHistory;
    get upgradeHistory(): WorkbenchInstanceUpgradeHistoryList;
    private _gceSetup;
    get gceSetup(): WorkbenchInstanceGceSetupOutputReference;
    putGceSetup(value: WorkbenchInstanceGceSetup): void;
    resetGceSetup(): void;
    get gceSetupInput(): WorkbenchInstanceGceSetup | undefined;
    private _timeouts;
    get timeouts(): WorkbenchInstanceTimeoutsOutputReference;
    putTimeouts(value: WorkbenchInstanceTimeouts): void;
    resetTimeouts(): void;
    get timeoutsInput(): cdktf.IResolvable | WorkbenchInstanceTimeouts | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
