/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */
import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface ParallelstoreInstanceConfig extends cdktf.TerraformMetaArguments {
    /**
    * Required. Immutable. Storage capacity of Parallelstore instance in Gibibytes (GiB).
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/parallelstore_instance#capacity_gib ParallelstoreInstance#capacity_gib}
    */
    readonly capacityGib: string;
    /**
    * The description of the instance. 2048 characters or less.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/parallelstore_instance#description ParallelstoreInstance#description}
    */
    readonly description?: string;
    /**
    * Stripe level for directories.
    * MIN when directory has a small number of files.
    * MAX when directory has a large number of files.
    *   Possible values:
    *   DIRECTORY_STRIPE_LEVEL_UNSPECIFIED
    *   DIRECTORY_STRIPE_LEVEL_MIN
    *   DIRECTORY_STRIPE_LEVEL_BALANCED
    *   DIRECTORY_STRIPE_LEVEL_MAX
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/parallelstore_instance#directory_stripe_level ParallelstoreInstance#directory_stripe_level}
    */
    readonly directoryStripeLevel?: string;
    /**
    * Stripe level for files.
    * MIN better suited for small size files.
    * MAX higher throughput performance for larger files.
    *   Possible values:
    *   FILE_STRIPE_LEVEL_UNSPECIFIED
    *   FILE_STRIPE_LEVEL_MIN
    *   FILE_STRIPE_LEVEL_BALANCED
    *   FILE_STRIPE_LEVEL_MAX
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/parallelstore_instance#file_stripe_level ParallelstoreInstance#file_stripe_level}
    */
    readonly fileStripeLevel?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/parallelstore_instance#id ParallelstoreInstance#id}
    *
    * Please be aware that the id field is automatically added to all resources in Terraform providers using a Terraform provider SDK version below 2.
    * If you experience problems setting this value it might not be settable. Please take a look at the provider documentation to ensure it should be settable.
    */
    readonly id?: string;
    /**
    * The logical name of the Parallelstore instance in the user project with the following restrictions:
    *   * Must contain only lowercase letters, numbers, and hyphens.
    *   * Must start with a letter.
    *   * Must be between 1-63 characters.
    *   * Must end with a number or a letter.
    *   * Must be unique within the customer project/ location
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/parallelstore_instance#instance_id ParallelstoreInstance#instance_id}
    */
    readonly instanceId: string;
    /**
    * Cloud Labels are a flexible and lightweight mechanism for
    * organizing cloud resources into groups that reflect a customer's organizational
    * needs and deployment strategies. Cloud Labels can be used to filter collections
    * of resources. They can be used to control how resource metrics are aggregated.
    * And they can be used as arguments to policy management rules (e.g. route, firewall,
    * load balancing, etc.).
    *
    * * Label keys must be between 1 and 63 characters long and must conform to
    *  the following regular expression: 'a-z{0,62}'.
    * * Label values must be between 0 and 63 characters long and must conform
    *  to the regular expression '[a-z0-9_-]{0,63}'.
    * * No more than 64 labels can be associated with a given resource.
    *
    * See https://goo.gl/xmQnxf for more information on and examples of labels.
    *
    * If you plan to use labels in your own code, please note that additional
    * characters may be allowed in the future. Therefore, you are advised to use
    * an internal label representation, such as JSON, which doesn't rely upon
    * specific characters being disallowed.  For example, representing labels
    * as the string:  'name + "_" + value' would prove problematic if we were to
    * allow '"_"' in a future release. "
    *
    *
    * **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.13.0/docs/resources/parallelstore_instance#labels ParallelstoreInstance#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/6.13.0/docs/resources/parallelstore_instance#location ParallelstoreInstance#location}
    */
    readonly location: string;
    /**
    * Immutable. The name of the Google Compute Engine [VPC network](https://cloud.google.com/vpc/docs/vpc)
    * to which the instance is connected.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/parallelstore_instance#network ParallelstoreInstance#network}
    */
    readonly network?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/parallelstore_instance#project ParallelstoreInstance#project}
    */
    readonly project?: string;
    /**
    * Immutable. Contains the id of the allocated IP address range
    * associated with the private service access connection for example, \"test-default\"
    * associated with IP range 10.0.0.0/29. If no range id is provided all ranges will
    * be considered.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/parallelstore_instance#reserved_ip_range ParallelstoreInstance#reserved_ip_range}
    */
    readonly reservedIpRange?: string;
    /**
    * timeouts block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/parallelstore_instance#timeouts ParallelstoreInstance#timeouts}
    */
    readonly timeouts?: ParallelstoreInstanceTimeouts;
}
export interface ParallelstoreInstanceTimeouts {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/parallelstore_instance#create ParallelstoreInstance#create}
    */
    readonly create?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/parallelstore_instance#delete ParallelstoreInstance#delete}
    */
    readonly delete?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/parallelstore_instance#update ParallelstoreInstance#update}
    */
    readonly update?: string;
}
export declare function parallelstoreInstanceTimeoutsToTerraform(struct?: ParallelstoreInstanceTimeouts | cdktf.IResolvable): any;
export declare function parallelstoreInstanceTimeoutsToHclTerraform(struct?: ParallelstoreInstanceTimeouts | cdktf.IResolvable): any;
export declare class ParallelstoreInstanceTimeoutsOutputReference 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(): ParallelstoreInstanceTimeouts | cdktf.IResolvable | undefined;
    set internalValue(value: ParallelstoreInstanceTimeouts | 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.13.0/docs/resources/parallelstore_instance google_parallelstore_instance}
*/
export declare class ParallelstoreInstance extends cdktf.TerraformResource {
    static readonly tfResourceType = "google_parallelstore_instance";
    /**
    * Generates CDKTF code for importing a ParallelstoreInstance 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 ParallelstoreInstance to import
    * @param importFromId The id of the existing ParallelstoreInstance that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/parallelstore_instance#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the ParallelstoreInstance to import is found
    */
    static generateConfigForImport(scope: Construct, importToId: string, importFromId: string, provider?: cdktf.TerraformProvider): cdktf.ImportableResource;
    /**
    * Create a new {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/parallelstore_instance google_parallelstore_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 ParallelstoreInstanceConfig
    */
    constructor(scope: Construct, id: string, config: ParallelstoreInstanceConfig);
    get accessPoints(): string[];
    private _capacityGib?;
    get capacityGib(): string;
    set capacityGib(value: string);
    get capacityGibInput(): string | undefined;
    get createTime(): string;
    get daosVersion(): string;
    private _description?;
    get description(): string;
    set description(value: string);
    resetDescription(): void;
    get descriptionInput(): string | undefined;
    private _directoryStripeLevel?;
    get directoryStripeLevel(): string;
    set directoryStripeLevel(value: string);
    resetDirectoryStripeLevel(): void;
    get directoryStripeLevelInput(): string | undefined;
    private _effectiveLabels;
    get effectiveLabels(): cdktf.StringMap;
    get effectiveReservedIpRange(): string;
    private _fileStripeLevel?;
    get fileStripeLevel(): string;
    set fileStripeLevel(value: string);
    resetFileStripeLevel(): void;
    get fileStripeLevelInput(): string | undefined;
    private _id?;
    get id(): string;
    set id(value: string);
    resetId(): void;
    get idInput(): string | undefined;
    private _instanceId?;
    get instanceId(): string;
    set instanceId(value: string);
    get instanceIdInput(): 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;
    get name(): string;
    private _network?;
    get network(): string;
    set network(value: string);
    resetNetwork(): void;
    get networkInput(): string | undefined;
    private _project?;
    get project(): string;
    set project(value: string);
    resetProject(): void;
    get projectInput(): string | undefined;
    private _reservedIpRange?;
    get reservedIpRange(): string;
    set reservedIpRange(value: string);
    resetReservedIpRange(): void;
    get reservedIpRangeInput(): string | undefined;
    get state(): string;
    private _terraformLabels;
    get terraformLabels(): cdktf.StringMap;
    get updateTime(): string;
    private _timeouts;
    get timeouts(): ParallelstoreInstanceTimeoutsOutputReference;
    putTimeouts(value: ParallelstoreInstanceTimeouts): void;
    resetTimeouts(): void;
    get timeoutsInput(): cdktf.IResolvable | ParallelstoreInstanceTimeouts | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
