/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */
import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface NetappStoragePoolConfig extends cdktf.TerraformMetaArguments {
    /**
    * Specifies the Active Directory policy to be used. Format: 'projects/{{project}}/locations/{{location}}/activeDirectories/{{name}}'.
    * The policy needs to be in the same location as the storage pool.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.1/docs/resources/netapp_storage_pool#active_directory NetappStoragePool#active_directory}
    */
    readonly activeDirectory?: string;
    /**
    * Optional. True if the storage pool supports Auto Tiering enabled volumes. Default is false.
    * Auto-tiering can be enabled after storage pool creation but it can't be disabled once enabled.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.1/docs/resources/netapp_storage_pool#allow_auto_tiering NetappStoragePool#allow_auto_tiering}
    */
    readonly allowAutoTiering?: boolean | cdktf.IResolvable;
    /**
    * Capacity of the storage pool (in GiB).
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.1/docs/resources/netapp_storage_pool#capacity_gib NetappStoragePool#capacity_gib}
    */
    readonly capacityGib: string;
    /**
    * Optional. True if using Independent Scaling of capacity and performance (Hyperdisk). Default is false.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.1/docs/resources/netapp_storage_pool#custom_performance_enabled NetappStoragePool#custom_performance_enabled}
    */
    readonly customPerformanceEnabled?: boolean | cdktf.IResolvable;
    /**
    * An optional description of this resource.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.1/docs/resources/netapp_storage_pool#description NetappStoragePool#description}
    */
    readonly description?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.1/docs/resources/netapp_storage_pool#id NetappStoragePool#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;
    /**
    * Specifies the CMEK policy to be used for volume encryption. Format: 'projects/{{project}}/locations/{{location}}/kmsConfigs/{{name}}'.
    * The policy needs to be in the same location as the storage pool.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.1/docs/resources/netapp_storage_pool#kms_config NetappStoragePool#kms_config}
    */
    readonly kmsConfig?: string;
    /**
    * 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.36.1/docs/resources/netapp_storage_pool#labels NetappStoragePool#labels}
    */
    readonly labels?: {
        [key: string]: string;
    };
    /**
    * When enabled, the volumes uses Active Directory as LDAP name service for UID/GID lookups. Required to enable extended group support for NFSv3,
    * using security identifiers for NFSv4.1 or principal names for kerberized NFSv4.1.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.1/docs/resources/netapp_storage_pool#ldap_enabled NetappStoragePool#ldap_enabled}
    */
    readonly ldapEnabled?: boolean | cdktf.IResolvable;
    /**
    * Name of the location. For zonal Flex pools specify a zone name, in all other cases a region name.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.1/docs/resources/netapp_storage_pool#location NetappStoragePool#location}
    */
    readonly location: string;
    /**
    * The resource name of the storage pool. Needs to be unique per location/region.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.1/docs/resources/netapp_storage_pool#name NetappStoragePool#name}
    */
    readonly name: string;
    /**
    * VPC network name with format: 'projects/{{project}}/global/networks/{{network}}'
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.1/docs/resources/netapp_storage_pool#network NetappStoragePool#network}
    */
    readonly network: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.1/docs/resources/netapp_storage_pool#project NetappStoragePool#project}
    */
    readonly project?: string;
    /**
    * Specifies the replica zone for regional Flex pools. 'zone' and 'replica_zone' values can be swapped to initiate a
    * [zone switch](https://cloud.google.com/netapp/volumes/docs/configure-and-use/storage-pools/edit-or-delete-storage-pool#switch_active_and_replica_zones).
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.1/docs/resources/netapp_storage_pool#replica_zone NetappStoragePool#replica_zone}
    */
    readonly replicaZone?: string;
    /**
    * Service level of the storage pool. Possible values: ["PREMIUM", "EXTREME", "STANDARD", "FLEX"]
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.1/docs/resources/netapp_storage_pool#service_level NetappStoragePool#service_level}
    */
    readonly serviceLevel: string;
    /**
    * Optional. Custom Performance Total IOPS of the pool If not provided, it will be calculated based on the totalThroughputMibps
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.1/docs/resources/netapp_storage_pool#total_iops NetappStoragePool#total_iops}
    */
    readonly totalIops?: string;
    /**
    * Optional. Custom Performance Total Throughput of the pool (in MiB/s).
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.1/docs/resources/netapp_storage_pool#total_throughput_mibps NetappStoragePool#total_throughput_mibps}
    */
    readonly totalThroughputMibps?: string;
    /**
    * Specifies the active zone for regional Flex pools. 'zone' and 'replica_zone' values can be swapped to initiate a
    * [zone switch](https://cloud.google.com/netapp/volumes/docs/configure-and-use/storage-pools/edit-or-delete-storage-pool#switch_active_and_replica_zones).
    * If you want to create a zonal Flex pool, specify a zone name for 'location' and omit 'zone'.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.1/docs/resources/netapp_storage_pool#zone NetappStoragePool#zone}
    */
    readonly zone?: string;
    /**
    * timeouts block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.1/docs/resources/netapp_storage_pool#timeouts NetappStoragePool#timeouts}
    */
    readonly timeouts?: NetappStoragePoolTimeouts;
}
export interface NetappStoragePoolTimeouts {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.1/docs/resources/netapp_storage_pool#create NetappStoragePool#create}
    */
    readonly create?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.1/docs/resources/netapp_storage_pool#delete NetappStoragePool#delete}
    */
    readonly delete?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.1/docs/resources/netapp_storage_pool#update NetappStoragePool#update}
    */
    readonly update?: string;
}
export declare function netappStoragePoolTimeoutsToTerraform(struct?: NetappStoragePoolTimeouts | cdktf.IResolvable): any;
export declare function netappStoragePoolTimeoutsToHclTerraform(struct?: NetappStoragePoolTimeouts | cdktf.IResolvable): any;
export declare class NetappStoragePoolTimeoutsOutputReference 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(): NetappStoragePoolTimeouts | cdktf.IResolvable | undefined;
    set internalValue(value: NetappStoragePoolTimeouts | 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.36.1/docs/resources/netapp_storage_pool google_netapp_storage_pool}
*/
export declare class NetappStoragePool extends cdktf.TerraformResource {
    static readonly tfResourceType = "google_netapp_storage_pool";
    /**
    * Generates CDKTF code for importing a NetappStoragePool 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 NetappStoragePool to import
    * @param importFromId The id of the existing NetappStoragePool that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/google/6.36.1/docs/resources/netapp_storage_pool#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the NetappStoragePool 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.36.1/docs/resources/netapp_storage_pool google_netapp_storage_pool} Resource
    *
    * @param scope The scope in which to define this construct
    * @param id The scoped construct ID. Must be unique amongst siblings in the same scope
    * @param options NetappStoragePoolConfig
    */
    constructor(scope: Construct, id: string, config: NetappStoragePoolConfig);
    private _activeDirectory?;
    get activeDirectory(): string;
    set activeDirectory(value: string);
    resetActiveDirectory(): void;
    get activeDirectoryInput(): string | undefined;
    private _allowAutoTiering?;
    get allowAutoTiering(): boolean | cdktf.IResolvable;
    set allowAutoTiering(value: boolean | cdktf.IResolvable);
    resetAllowAutoTiering(): void;
    get allowAutoTieringInput(): boolean | cdktf.IResolvable | undefined;
    private _capacityGib?;
    get capacityGib(): string;
    set capacityGib(value: string);
    get capacityGibInput(): string | undefined;
    private _customPerformanceEnabled?;
    get customPerformanceEnabled(): boolean | cdktf.IResolvable;
    set customPerformanceEnabled(value: boolean | cdktf.IResolvable);
    resetCustomPerformanceEnabled(): void;
    get customPerformanceEnabledInput(): boolean | cdktf.IResolvable | 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;
    private _id?;
    get id(): string;
    set id(value: string);
    resetId(): void;
    get idInput(): string | undefined;
    private _kmsConfig?;
    get kmsConfig(): string;
    set kmsConfig(value: string);
    resetKmsConfig(): void;
    get kmsConfigInput(): string | undefined;
    private _labels?;
    get labels(): {
        [key: string]: string;
    };
    set labels(value: {
        [key: string]: string;
    });
    resetLabels(): void;
    get labelsInput(): {
        [key: string]: string;
    } | undefined;
    private _ldapEnabled?;
    get ldapEnabled(): boolean | cdktf.IResolvable;
    set ldapEnabled(value: boolean | cdktf.IResolvable);
    resetLdapEnabled(): void;
    get ldapEnabledInput(): boolean | cdktf.IResolvable | 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 _network?;
    get network(): string;
    set network(value: string);
    get networkInput(): string | undefined;
    private _project?;
    get project(): string;
    set project(value: string);
    resetProject(): void;
    get projectInput(): string | undefined;
    private _replicaZone?;
    get replicaZone(): string;
    set replicaZone(value: string);
    resetReplicaZone(): void;
    get replicaZoneInput(): string | undefined;
    private _serviceLevel?;
    get serviceLevel(): string;
    set serviceLevel(value: string);
    get serviceLevelInput(): string | undefined;
    private _terraformLabels;
    get terraformLabels(): cdktf.StringMap;
    private _totalIops?;
    get totalIops(): string;
    set totalIops(value: string);
    resetTotalIops(): void;
    get totalIopsInput(): string | undefined;
    private _totalThroughputMibps?;
    get totalThroughputMibps(): string;
    set totalThroughputMibps(value: string);
    resetTotalThroughputMibps(): void;
    get totalThroughputMibpsInput(): string | undefined;
    get volumeCapacityGib(): string;
    get volumeCount(): number;
    private _zone?;
    get zone(): string;
    set zone(value: string);
    resetZone(): void;
    get zoneInput(): string | undefined;
    private _timeouts;
    get timeouts(): NetappStoragePoolTimeoutsOutputReference;
    putTimeouts(value: NetappStoragePoolTimeouts): void;
    resetTimeouts(): void;
    get timeoutsInput(): cdktf.IResolvable | NetappStoragePoolTimeouts | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
