/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */
import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface NetappVolumeConfig extends cdktf.TerraformMetaArguments {
    /**
    * Capacity of the volume (in GiB).
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#capacity_gib NetappVolume#capacity_gib}
    */
    readonly capacityGib: string;
    /**
    * Policy to determine if the volume should be deleted forcefully.
    * Volumes may have nested snapshot resources. Deleting such a volume will fail.
    * Setting this parameter to FORCE will delete volumes including nested snapshots.
    * Possible values: DEFAULT, FORCE.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#deletion_policy NetappVolume#deletion_policy}
    */
    readonly deletionPolicy?: string;
    /**
    * An optional description of this resource.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#description NetappVolume#description}
    */
    readonly description?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#id NetappVolume#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;
    /**
    * Flag indicating if the volume is a kerberos volume or not, export policy rules control kerberos security modes (krb5, krb5i, krb5p).
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#kerberos_enabled NetappVolume#kerberos_enabled}
    */
    readonly kerberosEnabled?: boolean | cdktf.IResolvable;
    /**
    * Labels as key value pairs. Example: '{ "owner": "Bob", "department": "finance", "purpose": "testing" }'.
    *
    *
    * **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/6.50.0/docs/resources/netapp_volume#labels NetappVolume#labels}
    */
    readonly labels?: {
        [key: string]: string;
    };
    /**
    * Optional. Flag indicating if the volume will be a large capacity volume or a regular volume.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#large_capacity NetappVolume#large_capacity}
    */
    readonly largeCapacity?: boolean | cdktf.IResolvable;
    /**
    * Name of the pool location. Usually a region name, expect for some STANDARD service level pools which require a zone name.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#location NetappVolume#location}
    */
    readonly location: string;
    /**
    * Optional. Flag indicating if the volume will have an IP address per node for volumes supporting multiple IP endpoints.
    * Only the volume with largeCapacity will be allowed to have multiple endpoints.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#multiple_endpoints NetappVolume#multiple_endpoints}
    */
    readonly multipleEndpoints?: boolean | cdktf.IResolvable;
    /**
    * The name of the volume. Needs to be unique per location.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#name NetappVolume#name}
    */
    readonly name: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#project NetappVolume#project}
    */
    readonly project?: string;
    /**
    * The protocol of the volume. Allowed combinations are '['NFSV3']', '['NFSV4']', '['SMB']', '['NFSV3', 'NFSV4']', '['SMB', 'NFSV3']' and '['SMB', 'NFSV4']'. Possible values: ["NFSV3", "NFSV4", "SMB"]
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#protocols NetappVolume#protocols}
    */
    readonly protocols: string[];
    /**
    * List of actions that are restricted on this volume. Possible values: ["DELETE"]
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#restricted_actions NetappVolume#restricted_actions}
    */
    readonly restrictedActions?: string[];
    /**
    * Security Style of the Volume. Use UNIX to use UNIX or NFSV4 ACLs for file permissions.
    * Use NTFS to use NTFS ACLs for file permissions. Can only be set for volumes which use SMB together with NFS as protocol. Possible values: ["NTFS", "UNIX"]
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#security_style NetappVolume#security_style}
    */
    readonly securityStyle?: string;
    /**
    * Share name (SMB) or export path (NFS) of the volume. Needs to be unique per location.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#share_name NetappVolume#share_name}
    */
    readonly shareName: string;
    /**
    * Settings for volumes with SMB access. Possible values: ["ENCRYPT_DATA", "BROWSABLE", "CHANGE_NOTIFY", "NON_BROWSABLE", "OPLOCKS", "SHOW_SNAPSHOT", "SHOW_PREVIOUS_VERSIONS", "ACCESS_BASED_ENUMERATION", "CONTINUOUSLY_AVAILABLE"]
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#smb_settings NetappVolume#smb_settings}
    */
    readonly smbSettings?: string[];
    /**
    * If enabled, a NFS volume will contain a read-only .snapshot directory which provides access to each of the volume's snapshots. Will enable "Previous Versions" support for SMB.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#snapshot_directory NetappVolume#snapshot_directory}
    */
    readonly snapshotDirectory?: boolean | cdktf.IResolvable;
    /**
    * Name of the storage pool to create the volume in. Pool needs enough spare capacity to accommodate the volume.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#storage_pool NetappVolume#storage_pool}
    */
    readonly storagePool: string;
    /**
    * Unix permission the mount point will be created with. Default is 0770. Applicable for UNIX security style volumes only.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#unix_permissions NetappVolume#unix_permissions}
    */
    readonly unixPermissions?: string;
    /**
    * backup_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#backup_config NetappVolume#backup_config}
    */
    readonly backupConfig?: NetappVolumeBackupConfig;
    /**
    * export_policy block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#export_policy NetappVolume#export_policy}
    */
    readonly exportPolicy?: NetappVolumeExportPolicy;
    /**
    * hybrid_replication_parameters block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#hybrid_replication_parameters NetappVolume#hybrid_replication_parameters}
    */
    readonly hybridReplicationParameters?: NetappVolumeHybridReplicationParameters;
    /**
    * restore_parameters block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#restore_parameters NetappVolume#restore_parameters}
    */
    readonly restoreParameters?: NetappVolumeRestoreParameters;
    /**
    * snapshot_policy block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#snapshot_policy NetappVolume#snapshot_policy}
    */
    readonly snapshotPolicy?: NetappVolumeSnapshotPolicy;
    /**
    * tiering_policy block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#tiering_policy NetappVolume#tiering_policy}
    */
    readonly tieringPolicy?: NetappVolumeTieringPolicy;
    /**
    * timeouts block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#timeouts NetappVolume#timeouts}
    */
    readonly timeouts?: NetappVolumeTimeouts;
}
export interface NetappVolumeMountOptions {
}
export declare function netappVolumeMountOptionsToTerraform(struct?: NetappVolumeMountOptions): any;
export declare function netappVolumeMountOptionsToHclTerraform(struct?: NetappVolumeMountOptions): any;
export declare class NetappVolumeMountOptionsOutputReference 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(): NetappVolumeMountOptions | undefined;
    set internalValue(value: NetappVolumeMountOptions | undefined);
    get export(): string;
    get exportFull(): string;
    get instructions(): string;
    get protocol(): string;
}
export declare class NetappVolumeMountOptionsList 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): NetappVolumeMountOptionsOutputReference;
}
export interface NetappVolumeBackupConfig {
    /**
    * Specify a single backup policy ID for scheduled backups. Format: 'projects/{{projectId}}/locations/{{location}}/backupPolicies/{{backupPolicyName}}'
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#backup_policies NetappVolume#backup_policies}
    */
    readonly backupPolicies?: string[];
    /**
    * ID of the backup vault to use. A backup vault is reqired to create manual or scheduled backups.
    * Format: 'projects/{{projectId}}/locations/{{location}}/backupVaults/{{backupVaultName}}'
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#backup_vault NetappVolume#backup_vault}
    */
    readonly backupVault?: string;
    /**
    * When set to true, scheduled backup is enabled on the volume. Omit if no backup_policy is specified.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#scheduled_backup_enabled NetappVolume#scheduled_backup_enabled}
    */
    readonly scheduledBackupEnabled?: boolean | cdktf.IResolvable;
}
export declare function netappVolumeBackupConfigToTerraform(struct?: NetappVolumeBackupConfigOutputReference | NetappVolumeBackupConfig): any;
export declare function netappVolumeBackupConfigToHclTerraform(struct?: NetappVolumeBackupConfigOutputReference | NetappVolumeBackupConfig): any;
export declare class NetappVolumeBackupConfigOutputReference 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(): NetappVolumeBackupConfig | undefined;
    set internalValue(value: NetappVolumeBackupConfig | undefined);
    private _backupPolicies?;
    get backupPolicies(): string[];
    set backupPolicies(value: string[]);
    resetBackupPolicies(): void;
    get backupPoliciesInput(): string[] | undefined;
    private _backupVault?;
    get backupVault(): string;
    set backupVault(value: string);
    resetBackupVault(): void;
    get backupVaultInput(): string | undefined;
    private _scheduledBackupEnabled?;
    get scheduledBackupEnabled(): boolean | cdktf.IResolvable;
    set scheduledBackupEnabled(value: boolean | cdktf.IResolvable);
    resetScheduledBackupEnabled(): void;
    get scheduledBackupEnabledInput(): boolean | cdktf.IResolvable | undefined;
}
export interface NetappVolumeExportPolicyRules {
    /**
    * Defines the access type for clients matching the 'allowedClients' specification. Possible values: ["READ_ONLY", "READ_WRITE", "READ_NONE"]
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#access_type NetappVolume#access_type}
    */
    readonly accessType?: string;
    /**
    * Defines the client ingress specification (allowed clients) as a comma separated list with IPv4 CIDRs or IPv4 host addresses.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#allowed_clients NetappVolume#allowed_clients}
    */
    readonly allowedClients?: string;
    /**
    * If enabled, the root user (UID = 0) of the specified clients doesn't get mapped to nobody (UID = 65534). This is also known as no_root_squash.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#has_root_access NetappVolume#has_root_access}
    */
    readonly hasRootAccess?: string;
    /**
    * If enabled (true) the rule defines a read only access for clients matching the 'allowedClients' specification. It enables nfs clients to mount using 'authentication' kerberos security mode.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#kerberos5_read_only NetappVolume#kerberos5_read_only}
    */
    readonly kerberos5ReadOnly?: boolean | cdktf.IResolvable;
    /**
    * If enabled (true) the rule defines read and write access for clients matching the 'allowedClients' specification. It enables nfs clients to mount using 'authentication' kerberos security mode. The 'kerberos5ReadOnly' value is ignored if this is enabled.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#kerberos5_read_write NetappVolume#kerberos5_read_write}
    */
    readonly kerberos5ReadWrite?: boolean | cdktf.IResolvable;
    /**
    * If enabled (true) the rule defines a read only access for clients matching the 'allowedClients' specification. It enables nfs clients to mount using 'integrity' kerberos security mode.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#kerberos5i_read_only NetappVolume#kerberos5i_read_only}
    */
    readonly kerberos5IReadOnly?: boolean | cdktf.IResolvable;
    /**
    * If enabled (true) the rule defines read and write access for clients matching the 'allowedClients' specification. It enables nfs clients to mount using 'integrity' kerberos security mode. The 'kerberos5iReadOnly' value is ignored if this is enabled.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#kerberos5i_read_write NetappVolume#kerberos5i_read_write}
    */
    readonly kerberos5IReadWrite?: boolean | cdktf.IResolvable;
    /**
    * If enabled (true) the rule defines a read only access for clients matching the 'allowedClients' specification. It enables nfs clients to mount using 'privacy' kerberos security mode.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#kerberos5p_read_only NetappVolume#kerberos5p_read_only}
    */
    readonly kerberos5PReadOnly?: boolean | cdktf.IResolvable;
    /**
    * If enabled (true) the rule defines read and write access for clients matching the 'allowedClients' specification. It enables nfs clients to mount using 'privacy' kerberos security mode. The 'kerberos5pReadOnly' value is ignored if this is enabled.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#kerberos5p_read_write NetappVolume#kerberos5p_read_write}
    */
    readonly kerberos5PReadWrite?: boolean | cdktf.IResolvable;
    /**
    * Enable to apply the export rule to NFSV3 clients.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#nfsv3 NetappVolume#nfsv3}
    */
    readonly nfsv3?: boolean | cdktf.IResolvable;
    /**
    * Enable to apply the export rule to NFSV4.1 clients.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#nfsv4 NetappVolume#nfsv4}
    */
    readonly nfsv4?: boolean | cdktf.IResolvable;
}
export declare function netappVolumeExportPolicyRulesToTerraform(struct?: NetappVolumeExportPolicyRules | cdktf.IResolvable): any;
export declare function netappVolumeExportPolicyRulesToHclTerraform(struct?: NetappVolumeExportPolicyRules | cdktf.IResolvable): any;
export declare class NetappVolumeExportPolicyRulesOutputReference 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(): NetappVolumeExportPolicyRules | cdktf.IResolvable | undefined;
    set internalValue(value: NetappVolumeExportPolicyRules | cdktf.IResolvable | undefined);
    private _accessType?;
    get accessType(): string;
    set accessType(value: string);
    resetAccessType(): void;
    get accessTypeInput(): string | undefined;
    private _allowedClients?;
    get allowedClients(): string;
    set allowedClients(value: string);
    resetAllowedClients(): void;
    get allowedClientsInput(): string | undefined;
    private _hasRootAccess?;
    get hasRootAccess(): string;
    set hasRootAccess(value: string);
    resetHasRootAccess(): void;
    get hasRootAccessInput(): string | undefined;
    private _kerberos5ReadOnly?;
    get kerberos5ReadOnly(): boolean | cdktf.IResolvable;
    set kerberos5ReadOnly(value: boolean | cdktf.IResolvable);
    resetKerberos5ReadOnly(): void;
    get kerberos5ReadOnlyInput(): boolean | cdktf.IResolvable | undefined;
    private _kerberos5ReadWrite?;
    get kerberos5ReadWrite(): boolean | cdktf.IResolvable;
    set kerberos5ReadWrite(value: boolean | cdktf.IResolvable);
    resetKerberos5ReadWrite(): void;
    get kerberos5ReadWriteInput(): boolean | cdktf.IResolvable | undefined;
    private _kerberos5IReadOnly?;
    get kerberos5IReadOnly(): boolean | cdktf.IResolvable;
    set kerberos5IReadOnly(value: boolean | cdktf.IResolvable);
    resetKerberos5IReadOnly(): void;
    get kerberos5IReadOnlyInput(): boolean | cdktf.IResolvable | undefined;
    private _kerberos5IReadWrite?;
    get kerberos5IReadWrite(): boolean | cdktf.IResolvable;
    set kerberos5IReadWrite(value: boolean | cdktf.IResolvable);
    resetKerberos5IReadWrite(): void;
    get kerberos5IReadWriteInput(): boolean | cdktf.IResolvable | undefined;
    private _kerberos5PReadOnly?;
    get kerberos5PReadOnly(): boolean | cdktf.IResolvable;
    set kerberos5PReadOnly(value: boolean | cdktf.IResolvable);
    resetKerberos5PReadOnly(): void;
    get kerberos5PReadOnlyInput(): boolean | cdktf.IResolvable | undefined;
    private _kerberos5PReadWrite?;
    get kerberos5PReadWrite(): boolean | cdktf.IResolvable;
    set kerberos5PReadWrite(value: boolean | cdktf.IResolvable);
    resetKerberos5PReadWrite(): void;
    get kerberos5PReadWriteInput(): boolean | cdktf.IResolvable | undefined;
    private _nfsv3?;
    get nfsv3(): boolean | cdktf.IResolvable;
    set nfsv3(value: boolean | cdktf.IResolvable);
    resetNfsv3(): void;
    get nfsv3Input(): boolean | cdktf.IResolvable | undefined;
    private _nfsv4?;
    get nfsv4(): boolean | cdktf.IResolvable;
    set nfsv4(value: boolean | cdktf.IResolvable);
    resetNfsv4(): void;
    get nfsv4Input(): boolean | cdktf.IResolvable | undefined;
}
export declare class NetappVolumeExportPolicyRulesList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: NetappVolumeExportPolicyRules[] | 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): NetappVolumeExportPolicyRulesOutputReference;
}
export interface NetappVolumeExportPolicy {
    /**
    * rules block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#rules NetappVolume#rules}
    */
    readonly rules: NetappVolumeExportPolicyRules[] | cdktf.IResolvable;
}
export declare function netappVolumeExportPolicyToTerraform(struct?: NetappVolumeExportPolicyOutputReference | NetappVolumeExportPolicy): any;
export declare function netappVolumeExportPolicyToHclTerraform(struct?: NetappVolumeExportPolicyOutputReference | NetappVolumeExportPolicy): any;
export declare class NetappVolumeExportPolicyOutputReference 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(): NetappVolumeExportPolicy | undefined;
    set internalValue(value: NetappVolumeExportPolicy | undefined);
    private _rules;
    get rules(): NetappVolumeExportPolicyRulesList;
    putRules(value: NetappVolumeExportPolicyRules[] | cdktf.IResolvable): void;
    get rulesInput(): cdktf.IResolvable | NetappVolumeExportPolicyRules[] | undefined;
}
export interface NetappVolumeHybridReplicationParameters {
    /**
    * Optional. Name of source cluster location associated with the Hybrid replication. This is a free-form field for the display purpose only.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#cluster_location NetappVolume#cluster_location}
    */
    readonly clusterLocation?: string;
    /**
    * Optional. Description of the replication.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#description NetappVolume#description}
    */
    readonly description?: string;
    /**
    * Optional. Labels to be added to the replication as the key value pairs.
    * An object containing a list of "key": value pairs. Example: { "name": "wrench", "mass": "1.3kg", "count": "3" }.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#labels NetappVolume#labels}
    */
    readonly labels?: {
        [key: string]: string;
    };
    /**
    * Required. Name of the user's local source cluster to be peered with the destination cluster.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#peer_cluster_name NetappVolume#peer_cluster_name}
    */
    readonly peerClusterName?: string;
    /**
    * Required. List of node ip addresses to be peered with.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#peer_ip_addresses NetappVolume#peer_ip_addresses}
    */
    readonly peerIpAddresses?: string;
    /**
    * Required. Name of the user's local source vserver svm to be peered with the destination vserver svm.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#peer_svm_name NetappVolume#peer_svm_name}
    */
    readonly peerSvmName?: string;
    /**
    * Required. Name of the user's local source volume to be peered with the destination volume.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#peer_volume_name NetappVolume#peer_volume_name}
    */
    readonly peerVolumeName?: string;
    /**
    * Required. Desired name for the replication of this volume.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#replication NetappVolume#replication}
    */
    readonly replication?: string;
}
export declare function netappVolumeHybridReplicationParametersToTerraform(struct?: NetappVolumeHybridReplicationParametersOutputReference | NetappVolumeHybridReplicationParameters): any;
export declare function netappVolumeHybridReplicationParametersToHclTerraform(struct?: NetappVolumeHybridReplicationParametersOutputReference | NetappVolumeHybridReplicationParameters): any;
export declare class NetappVolumeHybridReplicationParametersOutputReference 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(): NetappVolumeHybridReplicationParameters | undefined;
    set internalValue(value: NetappVolumeHybridReplicationParameters | undefined);
    private _clusterLocation?;
    get clusterLocation(): string;
    set clusterLocation(value: string);
    resetClusterLocation(): void;
    get clusterLocationInput(): string | undefined;
    private _description?;
    get description(): string;
    set description(value: string);
    resetDescription(): void;
    get descriptionInput(): string | undefined;
    private _labels?;
    get labels(): {
        [key: string]: string;
    };
    set labels(value: {
        [key: string]: string;
    });
    resetLabels(): void;
    get labelsInput(): {
        [key: string]: string;
    } | undefined;
    private _peerClusterName?;
    get peerClusterName(): string;
    set peerClusterName(value: string);
    resetPeerClusterName(): void;
    get peerClusterNameInput(): string | undefined;
    private _peerIpAddresses?;
    get peerIpAddresses(): string;
    set peerIpAddresses(value: string);
    resetPeerIpAddresses(): void;
    get peerIpAddressesInput(): string | undefined;
    private _peerSvmName?;
    get peerSvmName(): string;
    set peerSvmName(value: string);
    resetPeerSvmName(): void;
    get peerSvmNameInput(): string | undefined;
    private _peerVolumeName?;
    get peerVolumeName(): string;
    set peerVolumeName(value: string);
    resetPeerVolumeName(): void;
    get peerVolumeNameInput(): string | undefined;
    private _replication?;
    get replication(): string;
    set replication(value: string);
    resetReplication(): void;
    get replicationInput(): string | undefined;
}
export interface NetappVolumeRestoreParameters {
    /**
    * Full name of the backup to use for creating this volume.
    * 'source_snapshot' and 'source_backup' cannot be used simultaneously.
    * Format: 'projects/{{project}}/locations/{{location}}/backupVaults/{{backupVaultId}}/backups/{{backup}}'.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#source_backup NetappVolume#source_backup}
    */
    readonly sourceBackup?: string;
    /**
    * Full name of the snapshot to use for creating this volume.
    * 'source_snapshot' and 'source_backup' cannot be used simultaneously.
    * Format: 'projects/{{project}}/locations/{{location}}/volumes/{{volume}}/snapshots/{{snapshot}}'.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#source_snapshot NetappVolume#source_snapshot}
    */
    readonly sourceSnapshot?: string;
}
export declare function netappVolumeRestoreParametersToTerraform(struct?: NetappVolumeRestoreParametersOutputReference | NetappVolumeRestoreParameters): any;
export declare function netappVolumeRestoreParametersToHclTerraform(struct?: NetappVolumeRestoreParametersOutputReference | NetappVolumeRestoreParameters): any;
export declare class NetappVolumeRestoreParametersOutputReference 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(): NetappVolumeRestoreParameters | undefined;
    set internalValue(value: NetappVolumeRestoreParameters | undefined);
    private _sourceBackup?;
    get sourceBackup(): string;
    set sourceBackup(value: string);
    resetSourceBackup(): void;
    get sourceBackupInput(): string | undefined;
    private _sourceSnapshot?;
    get sourceSnapshot(): string;
    set sourceSnapshot(value: string);
    resetSourceSnapshot(): void;
    get sourceSnapshotInput(): string | undefined;
}
export interface NetappVolumeSnapshotPolicyDailySchedule {
    /**
    * Set the hour to create the snapshot (0-23), defaults to midnight (0).
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#hour NetappVolume#hour}
    */
    readonly hour?: number;
    /**
    * Set the minute of the hour to create the snapshot (0-59), defaults to the top of the hour (0).
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#minute NetappVolume#minute}
    */
    readonly minute?: number;
    /**
    * The maximum number of snapshots to keep for the daily schedule.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#snapshots_to_keep NetappVolume#snapshots_to_keep}
    */
    readonly snapshotsToKeep: number;
}
export declare function netappVolumeSnapshotPolicyDailyScheduleToTerraform(struct?: NetappVolumeSnapshotPolicyDailyScheduleOutputReference | NetappVolumeSnapshotPolicyDailySchedule): any;
export declare function netappVolumeSnapshotPolicyDailyScheduleToHclTerraform(struct?: NetappVolumeSnapshotPolicyDailyScheduleOutputReference | NetappVolumeSnapshotPolicyDailySchedule): any;
export declare class NetappVolumeSnapshotPolicyDailyScheduleOutputReference 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(): NetappVolumeSnapshotPolicyDailySchedule | undefined;
    set internalValue(value: NetappVolumeSnapshotPolicyDailySchedule | undefined);
    private _hour?;
    get hour(): number;
    set hour(value: number);
    resetHour(): void;
    get hourInput(): number | undefined;
    private _minute?;
    get minute(): number;
    set minute(value: number);
    resetMinute(): void;
    get minuteInput(): number | undefined;
    private _snapshotsToKeep?;
    get snapshotsToKeep(): number;
    set snapshotsToKeep(value: number);
    get snapshotsToKeepInput(): number | undefined;
}
export interface NetappVolumeSnapshotPolicyHourlySchedule {
    /**
    * Set the minute of the hour to create the snapshot (0-59), defaults to the top of the hour (0).
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#minute NetappVolume#minute}
    */
    readonly minute?: number;
    /**
    * The maximum number of snapshots to keep for the hourly schedule.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#snapshots_to_keep NetappVolume#snapshots_to_keep}
    */
    readonly snapshotsToKeep: number;
}
export declare function netappVolumeSnapshotPolicyHourlyScheduleToTerraform(struct?: NetappVolumeSnapshotPolicyHourlyScheduleOutputReference | NetappVolumeSnapshotPolicyHourlySchedule): any;
export declare function netappVolumeSnapshotPolicyHourlyScheduleToHclTerraform(struct?: NetappVolumeSnapshotPolicyHourlyScheduleOutputReference | NetappVolumeSnapshotPolicyHourlySchedule): any;
export declare class NetappVolumeSnapshotPolicyHourlyScheduleOutputReference 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(): NetappVolumeSnapshotPolicyHourlySchedule | undefined;
    set internalValue(value: NetappVolumeSnapshotPolicyHourlySchedule | undefined);
    private _minute?;
    get minute(): number;
    set minute(value: number);
    resetMinute(): void;
    get minuteInput(): number | undefined;
    private _snapshotsToKeep?;
    get snapshotsToKeep(): number;
    set snapshotsToKeep(value: number);
    get snapshotsToKeepInput(): number | undefined;
}
export interface NetappVolumeSnapshotPolicyMonthlySchedule {
    /**
    * Set the day or days of the month to make a snapshot (1-31). Accepts a comma separated number of days. Defaults to '1'.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#days_of_month NetappVolume#days_of_month}
    */
    readonly daysOfMonth?: string;
    /**
    * Set the hour to create the snapshot (0-23), defaults to midnight (0).
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#hour NetappVolume#hour}
    */
    readonly hour?: number;
    /**
    * Set the minute of the hour to create the snapshot (0-59), defaults to the top of the hour (0).
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#minute NetappVolume#minute}
    */
    readonly minute?: number;
    /**
    * The maximum number of snapshots to keep for the monthly schedule
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#snapshots_to_keep NetappVolume#snapshots_to_keep}
    */
    readonly snapshotsToKeep: number;
}
export declare function netappVolumeSnapshotPolicyMonthlyScheduleToTerraform(struct?: NetappVolumeSnapshotPolicyMonthlyScheduleOutputReference | NetappVolumeSnapshotPolicyMonthlySchedule): any;
export declare function netappVolumeSnapshotPolicyMonthlyScheduleToHclTerraform(struct?: NetappVolumeSnapshotPolicyMonthlyScheduleOutputReference | NetappVolumeSnapshotPolicyMonthlySchedule): any;
export declare class NetappVolumeSnapshotPolicyMonthlyScheduleOutputReference 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(): NetappVolumeSnapshotPolicyMonthlySchedule | undefined;
    set internalValue(value: NetappVolumeSnapshotPolicyMonthlySchedule | undefined);
    private _daysOfMonth?;
    get daysOfMonth(): string;
    set daysOfMonth(value: string);
    resetDaysOfMonth(): void;
    get daysOfMonthInput(): string | undefined;
    private _hour?;
    get hour(): number;
    set hour(value: number);
    resetHour(): void;
    get hourInput(): number | undefined;
    private _minute?;
    get minute(): number;
    set minute(value: number);
    resetMinute(): void;
    get minuteInput(): number | undefined;
    private _snapshotsToKeep?;
    get snapshotsToKeep(): number;
    set snapshotsToKeep(value: number);
    get snapshotsToKeepInput(): number | undefined;
}
export interface NetappVolumeSnapshotPolicyWeeklySchedule {
    /**
    * Set the day or days of the week to make a snapshot. Accepts a comma separated days of the week. Defaults to 'Sunday'.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#day NetappVolume#day}
    */
    readonly day?: string;
    /**
    * Set the hour to create the snapshot (0-23), defaults to midnight (0).
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#hour NetappVolume#hour}
    */
    readonly hour?: number;
    /**
    * Set the minute of the hour to create the snapshot (0-59), defaults to the top of the hour (0).
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#minute NetappVolume#minute}
    */
    readonly minute?: number;
    /**
    * The maximum number of snapshots to keep for the weekly schedule.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#snapshots_to_keep NetappVolume#snapshots_to_keep}
    */
    readonly snapshotsToKeep: number;
}
export declare function netappVolumeSnapshotPolicyWeeklyScheduleToTerraform(struct?: NetappVolumeSnapshotPolicyWeeklyScheduleOutputReference | NetappVolumeSnapshotPolicyWeeklySchedule): any;
export declare function netappVolumeSnapshotPolicyWeeklyScheduleToHclTerraform(struct?: NetappVolumeSnapshotPolicyWeeklyScheduleOutputReference | NetappVolumeSnapshotPolicyWeeklySchedule): any;
export declare class NetappVolumeSnapshotPolicyWeeklyScheduleOutputReference 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(): NetappVolumeSnapshotPolicyWeeklySchedule | undefined;
    set internalValue(value: NetappVolumeSnapshotPolicyWeeklySchedule | undefined);
    private _day?;
    get day(): string;
    set day(value: string);
    resetDay(): void;
    get dayInput(): string | undefined;
    private _hour?;
    get hour(): number;
    set hour(value: number);
    resetHour(): void;
    get hourInput(): number | undefined;
    private _minute?;
    get minute(): number;
    set minute(value: number);
    resetMinute(): void;
    get minuteInput(): number | undefined;
    private _snapshotsToKeep?;
    get snapshotsToKeep(): number;
    set snapshotsToKeep(value: number);
    get snapshotsToKeepInput(): number | undefined;
}
export interface NetappVolumeSnapshotPolicy {
    /**
    * Enables automated snapshot creation according to defined schedule. Default is false.
    * To disable automatic snapshot creation you have to remove the whole snapshot_policy block.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#enabled NetappVolume#enabled}
    */
    readonly enabled?: boolean | cdktf.IResolvable;
    /**
    * daily_schedule block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#daily_schedule NetappVolume#daily_schedule}
    */
    readonly dailySchedule?: NetappVolumeSnapshotPolicyDailySchedule;
    /**
    * hourly_schedule block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#hourly_schedule NetappVolume#hourly_schedule}
    */
    readonly hourlySchedule?: NetappVolumeSnapshotPolicyHourlySchedule;
    /**
    * monthly_schedule block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#monthly_schedule NetappVolume#monthly_schedule}
    */
    readonly monthlySchedule?: NetappVolumeSnapshotPolicyMonthlySchedule;
    /**
    * weekly_schedule block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#weekly_schedule NetappVolume#weekly_schedule}
    */
    readonly weeklySchedule?: NetappVolumeSnapshotPolicyWeeklySchedule;
}
export declare function netappVolumeSnapshotPolicyToTerraform(struct?: NetappVolumeSnapshotPolicyOutputReference | NetappVolumeSnapshotPolicy): any;
export declare function netappVolumeSnapshotPolicyToHclTerraform(struct?: NetappVolumeSnapshotPolicyOutputReference | NetappVolumeSnapshotPolicy): any;
export declare class NetappVolumeSnapshotPolicyOutputReference 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(): NetappVolumeSnapshotPolicy | undefined;
    set internalValue(value: NetappVolumeSnapshotPolicy | undefined);
    private _enabled?;
    get enabled(): boolean | cdktf.IResolvable;
    set enabled(value: boolean | cdktf.IResolvable);
    resetEnabled(): void;
    get enabledInput(): boolean | cdktf.IResolvable | undefined;
    private _dailySchedule;
    get dailySchedule(): NetappVolumeSnapshotPolicyDailyScheduleOutputReference;
    putDailySchedule(value: NetappVolumeSnapshotPolicyDailySchedule): void;
    resetDailySchedule(): void;
    get dailyScheduleInput(): NetappVolumeSnapshotPolicyDailySchedule | undefined;
    private _hourlySchedule;
    get hourlySchedule(): NetappVolumeSnapshotPolicyHourlyScheduleOutputReference;
    putHourlySchedule(value: NetappVolumeSnapshotPolicyHourlySchedule): void;
    resetHourlySchedule(): void;
    get hourlyScheduleInput(): NetappVolumeSnapshotPolicyHourlySchedule | undefined;
    private _monthlySchedule;
    get monthlySchedule(): NetappVolumeSnapshotPolicyMonthlyScheduleOutputReference;
    putMonthlySchedule(value: NetappVolumeSnapshotPolicyMonthlySchedule): void;
    resetMonthlySchedule(): void;
    get monthlyScheduleInput(): NetappVolumeSnapshotPolicyMonthlySchedule | undefined;
    private _weeklySchedule;
    get weeklySchedule(): NetappVolumeSnapshotPolicyWeeklyScheduleOutputReference;
    putWeeklySchedule(value: NetappVolumeSnapshotPolicyWeeklySchedule): void;
    resetWeeklySchedule(): void;
    get weeklyScheduleInput(): NetappVolumeSnapshotPolicyWeeklySchedule | undefined;
}
export interface NetappVolumeTieringPolicy {
    /**
    * Optional. Time in days to mark the volume's data block as cold and make it eligible for tiering, can be range from 2-183.
    * Default is 31.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#cooling_threshold_days NetappVolume#cooling_threshold_days}
    */
    readonly coolingThresholdDays?: number;
    /**
    * Optional. Flag indicating if the volume has tiering policy enable/pause. Default is PAUSED. Default value: "PAUSED" Possible values: ["ENABLED", "PAUSED"]
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#tier_action NetappVolume#tier_action}
    */
    readonly tierAction?: string;
}
export declare function netappVolumeTieringPolicyToTerraform(struct?: NetappVolumeTieringPolicyOutputReference | NetappVolumeTieringPolicy): any;
export declare function netappVolumeTieringPolicyToHclTerraform(struct?: NetappVolumeTieringPolicyOutputReference | NetappVolumeTieringPolicy): any;
export declare class NetappVolumeTieringPolicyOutputReference 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(): NetappVolumeTieringPolicy | undefined;
    set internalValue(value: NetappVolumeTieringPolicy | undefined);
    private _coolingThresholdDays?;
    get coolingThresholdDays(): number;
    set coolingThresholdDays(value: number);
    resetCoolingThresholdDays(): void;
    get coolingThresholdDaysInput(): number | undefined;
    private _tierAction?;
    get tierAction(): string;
    set tierAction(value: string);
    resetTierAction(): void;
    get tierActionInput(): string | undefined;
}
export interface NetappVolumeTimeouts {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#create NetappVolume#create}
    */
    readonly create?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#delete NetappVolume#delete}
    */
    readonly delete?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#update NetappVolume#update}
    */
    readonly update?: string;
}
export declare function netappVolumeTimeoutsToTerraform(struct?: NetappVolumeTimeouts | cdktf.IResolvable): any;
export declare function netappVolumeTimeoutsToHclTerraform(struct?: NetappVolumeTimeouts | cdktf.IResolvable): any;
export declare class NetappVolumeTimeoutsOutputReference 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(): NetappVolumeTimeouts | cdktf.IResolvable | undefined;
    set internalValue(value: NetappVolumeTimeouts | 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.50.0/docs/resources/netapp_volume google_netapp_volume}
*/
export declare class NetappVolume extends cdktf.TerraformResource {
    static readonly tfResourceType = "google_netapp_volume";
    /**
    * Generates CDKTF code for importing a NetappVolume 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 NetappVolume to import
    * @param importFromId The id of the existing NetappVolume that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/netapp_volume#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the NetappVolume 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.50.0/docs/resources/netapp_volume google_netapp_volume} 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 NetappVolumeConfig
    */
    constructor(scope: Construct, id: string, config: NetappVolumeConfig);
    get activeDirectory(): string;
    private _capacityGib?;
    get capacityGib(): string;
    set capacityGib(value: string);
    get capacityGibInput(): string | undefined;
    get coldTierSizeGib(): 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 _effectiveLabels;
    get effectiveLabels(): cdktf.StringMap;
    get encryptionType(): string;
    get hasReplication(): cdktf.IResolvable;
    private _id?;
    get id(): string;
    set id(value: string);
    resetId(): void;
    get idInput(): string | undefined;
    private _kerberosEnabled?;
    get kerberosEnabled(): boolean | cdktf.IResolvable;
    set kerberosEnabled(value: boolean | cdktf.IResolvable);
    resetKerberosEnabled(): void;
    get kerberosEnabledInput(): boolean | cdktf.IResolvable | undefined;
    get kmsConfig(): string;
    private _labels?;
    get labels(): {
        [key: string]: string;
    };
    set labels(value: {
        [key: string]: string;
    });
    resetLabels(): void;
    get labelsInput(): {
        [key: string]: string;
    } | undefined;
    private _largeCapacity?;
    get largeCapacity(): boolean | cdktf.IResolvable;
    set largeCapacity(value: boolean | cdktf.IResolvable);
    resetLargeCapacity(): void;
    get largeCapacityInput(): boolean | cdktf.IResolvable | undefined;
    get ldapEnabled(): cdktf.IResolvable;
    private _location?;
    get location(): string;
    set location(value: string);
    get locationInput(): string | undefined;
    private _mountOptions;
    get mountOptions(): NetappVolumeMountOptionsList;
    private _multipleEndpoints?;
    get multipleEndpoints(): boolean | cdktf.IResolvable;
    set multipleEndpoints(value: boolean | cdktf.IResolvable);
    resetMultipleEndpoints(): void;
    get multipleEndpointsInput(): boolean | cdktf.IResolvable | undefined;
    private _name?;
    get name(): string;
    set name(value: string);
    get nameInput(): string | undefined;
    get network(): string;
    private _project?;
    get project(): string;
    set project(value: string);
    resetProject(): void;
    get projectInput(): string | undefined;
    private _protocols?;
    get protocols(): string[];
    set protocols(value: string[]);
    get protocolsInput(): string[] | undefined;
    get psaRange(): string;
    get replicaZone(): string;
    private _restrictedActions?;
    get restrictedActions(): string[];
    set restrictedActions(value: string[]);
    resetRestrictedActions(): void;
    get restrictedActionsInput(): string[] | undefined;
    private _securityStyle?;
    get securityStyle(): string;
    set securityStyle(value: string);
    resetSecurityStyle(): void;
    get securityStyleInput(): string | undefined;
    get serviceLevel(): string;
    private _shareName?;
    get shareName(): string;
    set shareName(value: string);
    get shareNameInput(): string | undefined;
    private _smbSettings?;
    get smbSettings(): string[];
    set smbSettings(value: string[]);
    resetSmbSettings(): void;
    get smbSettingsInput(): string[] | undefined;
    private _snapshotDirectory?;
    get snapshotDirectory(): boolean | cdktf.IResolvable;
    set snapshotDirectory(value: boolean | cdktf.IResolvable);
    resetSnapshotDirectory(): void;
    get snapshotDirectoryInput(): boolean | cdktf.IResolvable | undefined;
    get state(): string;
    get stateDetails(): string;
    private _storagePool?;
    get storagePool(): string;
    set storagePool(value: string);
    get storagePoolInput(): string | undefined;
    private _terraformLabels;
    get terraformLabels(): cdktf.StringMap;
    private _unixPermissions?;
    get unixPermissions(): string;
    set unixPermissions(value: string);
    resetUnixPermissions(): void;
    get unixPermissionsInput(): string | undefined;
    get usedGib(): string;
    get zone(): string;
    private _backupConfig;
    get backupConfig(): NetappVolumeBackupConfigOutputReference;
    putBackupConfig(value: NetappVolumeBackupConfig): void;
    resetBackupConfig(): void;
    get backupConfigInput(): NetappVolumeBackupConfig | undefined;
    private _exportPolicy;
    get exportPolicy(): NetappVolumeExportPolicyOutputReference;
    putExportPolicy(value: NetappVolumeExportPolicy): void;
    resetExportPolicy(): void;
    get exportPolicyInput(): NetappVolumeExportPolicy | undefined;
    private _hybridReplicationParameters;
    get hybridReplicationParameters(): NetappVolumeHybridReplicationParametersOutputReference;
    putHybridReplicationParameters(value: NetappVolumeHybridReplicationParameters): void;
    resetHybridReplicationParameters(): void;
    get hybridReplicationParametersInput(): NetappVolumeHybridReplicationParameters | undefined;
    private _restoreParameters;
    get restoreParameters(): NetappVolumeRestoreParametersOutputReference;
    putRestoreParameters(value: NetappVolumeRestoreParameters): void;
    resetRestoreParameters(): void;
    get restoreParametersInput(): NetappVolumeRestoreParameters | undefined;
    private _snapshotPolicy;
    get snapshotPolicy(): NetappVolumeSnapshotPolicyOutputReference;
    putSnapshotPolicy(value: NetappVolumeSnapshotPolicy): void;
    resetSnapshotPolicy(): void;
    get snapshotPolicyInput(): NetappVolumeSnapshotPolicy | undefined;
    private _tieringPolicy;
    get tieringPolicy(): NetappVolumeTieringPolicyOutputReference;
    putTieringPolicy(value: NetappVolumeTieringPolicy): void;
    resetTieringPolicy(): void;
    get tieringPolicyInput(): NetappVolumeTieringPolicy | undefined;
    private _timeouts;
    get timeouts(): NetappVolumeTimeoutsOutputReference;
    putTimeouts(value: NetappVolumeTimeouts): void;
    resetTimeouts(): void;
    get timeoutsInput(): cdktf.IResolvable | NetappVolumeTimeouts | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
