/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */
import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface SpannerInstanceConfig extends cdktf.TerraformMetaArguments {
    /**
    * The name of the instance's configuration (similar but not
    * quite the same as a region) which defines the geographic placement and
    * replication of your databases in this instance. It determines where your data
    * is stored. Values are typically of the form 'regional-europe-west1' , 'us-central' etc.
    * In order to obtain a valid list please consult the
    * [Configuration section of the docs](https://cloud.google.com/spanner/docs/instances).
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/spanner_instance#config SpannerInstance#config}
    */
    readonly config: string;
    /**
    * Controls the default backup behavior for new databases within the instance.
    * Note that 'AUTOMATIC' is not permitted for free instances, as backups and backup schedules are not allowed for free instances.
    * if unset or NONE, no default backup schedule will be created for new databases within the instance. Possible values: ["NONE", "AUTOMATIC"]
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/spanner_instance#default_backup_schedule_type SpannerInstance#default_backup_schedule_type}
    */
    readonly defaultBackupScheduleType?: string;
    /**
    * The descriptive name for this instance as it appears in UIs. Must be
    * unique per project and between 4 and 30 characters in length.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/spanner_instance#display_name SpannerInstance#display_name}
    */
    readonly displayName: string;
    /**
    * The edition selected for this instance. Different editions provide different capabilities at different price points. Possible values: ["EDITION_UNSPECIFIED", "STANDARD", "ENTERPRISE", "ENTERPRISE_PLUS"]
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/spanner_instance#edition SpannerInstance#edition}
    */
    readonly edition?: string;
    /**
    * When deleting a spanner instance, this boolean option will delete all backups of this instance.
    * This must be set to true if you created a backup manually in the console.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/spanner_instance#force_destroy SpannerInstance#force_destroy}
    */
    readonly forceDestroy?: boolean | cdktf.IResolvable;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/spanner_instance#id SpannerInstance#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 type of this instance. The type can be used to distinguish product variants, that can affect aspects like:
    * usage restrictions, quotas and billing. Currently this is used to distinguish FREE_INSTANCE vs PROVISIONED instances.
    * When configured as FREE_INSTANCE, the field 'edition' should not be configured. Possible values: ["PROVISIONED", "FREE_INSTANCE"]
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/spanner_instance#instance_type SpannerInstance#instance_type}
    */
    readonly instanceType?: string;
    /**
    * An object containing a list of "key": value pairs.
    * Example: { "name": "wrench", "mass": "1.3kg", "count": "3" }.
    *
    *
    * **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.40.0/docs/resources/spanner_instance#labels SpannerInstance#labels}
    */
    readonly labels?: {
        [key: string]: string;
    };
    /**
    * A unique identifier for the instance, which cannot be changed after
    * the instance is created. The name must be between 6 and 30 characters
    * in length.
    * If not provided, a random string starting with 'tf-' will be selected.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/spanner_instance#name SpannerInstance#name}
    */
    readonly name?: string;
    /**
    * The number of nodes allocated to this instance. Exactly one of either num_nodes, processing_units or
    * autoscaling_config must be present in terraform except when instance_type = FREE_INSTANCE.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/spanner_instance#num_nodes SpannerInstance#num_nodes}
    */
    readonly numNodes?: number;
    /**
    * The number of processing units allocated to this instance. Exactly one of either num_nodes,
    * processing_units or autoscaling_config must be present in terraform except when instance_type = FREE_INSTANCE.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/spanner_instance#processing_units SpannerInstance#processing_units}
    */
    readonly processingUnits?: number;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/spanner_instance#project SpannerInstance#project}
    */
    readonly project?: string;
    /**
    * autoscaling_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/spanner_instance#autoscaling_config SpannerInstance#autoscaling_config}
    */
    readonly autoscalingConfig?: SpannerInstanceAutoscalingConfig;
    /**
    * timeouts block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/spanner_instance#timeouts SpannerInstance#timeouts}
    */
    readonly timeouts?: SpannerInstanceTimeouts;
}
export interface SpannerInstanceAutoscalingConfigAsymmetricAutoscalingOptionsOverridesAutoscalingLimits {
    /**
    * The maximum number of nodes for this specific replica.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/spanner_instance#max_nodes SpannerInstance#max_nodes}
    */
    readonly maxNodes: number;
    /**
    * The minimum number of nodes for this specific replica.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/spanner_instance#min_nodes SpannerInstance#min_nodes}
    */
    readonly minNodes: number;
}
export declare function spannerInstanceAutoscalingConfigAsymmetricAutoscalingOptionsOverridesAutoscalingLimitsToTerraform(struct?: SpannerInstanceAutoscalingConfigAsymmetricAutoscalingOptionsOverridesAutoscalingLimitsOutputReference | SpannerInstanceAutoscalingConfigAsymmetricAutoscalingOptionsOverridesAutoscalingLimits): any;
export declare function spannerInstanceAutoscalingConfigAsymmetricAutoscalingOptionsOverridesAutoscalingLimitsToHclTerraform(struct?: SpannerInstanceAutoscalingConfigAsymmetricAutoscalingOptionsOverridesAutoscalingLimitsOutputReference | SpannerInstanceAutoscalingConfigAsymmetricAutoscalingOptionsOverridesAutoscalingLimits): any;
export declare class SpannerInstanceAutoscalingConfigAsymmetricAutoscalingOptionsOverridesAutoscalingLimitsOutputReference 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(): SpannerInstanceAutoscalingConfigAsymmetricAutoscalingOptionsOverridesAutoscalingLimits | undefined;
    set internalValue(value: SpannerInstanceAutoscalingConfigAsymmetricAutoscalingOptionsOverridesAutoscalingLimits | undefined);
    private _maxNodes?;
    get maxNodes(): number;
    set maxNodes(value: number);
    get maxNodesInput(): number | undefined;
    private _minNodes?;
    get minNodes(): number;
    set minNodes(value: number);
    get minNodesInput(): number | undefined;
}
export interface SpannerInstanceAutoscalingConfigAsymmetricAutoscalingOptionsOverrides {
    /**
    * autoscaling_limits block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/spanner_instance#autoscaling_limits SpannerInstance#autoscaling_limits}
    */
    readonly autoscalingLimits: SpannerInstanceAutoscalingConfigAsymmetricAutoscalingOptionsOverridesAutoscalingLimits;
}
export declare function spannerInstanceAutoscalingConfigAsymmetricAutoscalingOptionsOverridesToTerraform(struct?: SpannerInstanceAutoscalingConfigAsymmetricAutoscalingOptionsOverridesOutputReference | SpannerInstanceAutoscalingConfigAsymmetricAutoscalingOptionsOverrides): any;
export declare function spannerInstanceAutoscalingConfigAsymmetricAutoscalingOptionsOverridesToHclTerraform(struct?: SpannerInstanceAutoscalingConfigAsymmetricAutoscalingOptionsOverridesOutputReference | SpannerInstanceAutoscalingConfigAsymmetricAutoscalingOptionsOverrides): any;
export declare class SpannerInstanceAutoscalingConfigAsymmetricAutoscalingOptionsOverridesOutputReference 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(): SpannerInstanceAutoscalingConfigAsymmetricAutoscalingOptionsOverrides | undefined;
    set internalValue(value: SpannerInstanceAutoscalingConfigAsymmetricAutoscalingOptionsOverrides | undefined);
    private _autoscalingLimits;
    get autoscalingLimits(): SpannerInstanceAutoscalingConfigAsymmetricAutoscalingOptionsOverridesAutoscalingLimitsOutputReference;
    putAutoscalingLimits(value: SpannerInstanceAutoscalingConfigAsymmetricAutoscalingOptionsOverridesAutoscalingLimits): void;
    get autoscalingLimitsInput(): SpannerInstanceAutoscalingConfigAsymmetricAutoscalingOptionsOverridesAutoscalingLimits | undefined;
}
export interface SpannerInstanceAutoscalingConfigAsymmetricAutoscalingOptionsReplicaSelection {
    /**
    * The location of the replica to apply asymmetric autoscaling options.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/spanner_instance#location SpannerInstance#location}
    */
    readonly location: string;
}
export declare function spannerInstanceAutoscalingConfigAsymmetricAutoscalingOptionsReplicaSelectionToTerraform(struct?: SpannerInstanceAutoscalingConfigAsymmetricAutoscalingOptionsReplicaSelectionOutputReference | SpannerInstanceAutoscalingConfigAsymmetricAutoscalingOptionsReplicaSelection): any;
export declare function spannerInstanceAutoscalingConfigAsymmetricAutoscalingOptionsReplicaSelectionToHclTerraform(struct?: SpannerInstanceAutoscalingConfigAsymmetricAutoscalingOptionsReplicaSelectionOutputReference | SpannerInstanceAutoscalingConfigAsymmetricAutoscalingOptionsReplicaSelection): any;
export declare class SpannerInstanceAutoscalingConfigAsymmetricAutoscalingOptionsReplicaSelectionOutputReference 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(): SpannerInstanceAutoscalingConfigAsymmetricAutoscalingOptionsReplicaSelection | undefined;
    set internalValue(value: SpannerInstanceAutoscalingConfigAsymmetricAutoscalingOptionsReplicaSelection | undefined);
    private _location?;
    get location(): string;
    set location(value: string);
    get locationInput(): string | undefined;
}
export interface SpannerInstanceAutoscalingConfigAsymmetricAutoscalingOptions {
    /**
    * overrides block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/spanner_instance#overrides SpannerInstance#overrides}
    */
    readonly overrides: SpannerInstanceAutoscalingConfigAsymmetricAutoscalingOptionsOverrides;
    /**
    * replica_selection block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/spanner_instance#replica_selection SpannerInstance#replica_selection}
    */
    readonly replicaSelection: SpannerInstanceAutoscalingConfigAsymmetricAutoscalingOptionsReplicaSelection;
}
export declare function spannerInstanceAutoscalingConfigAsymmetricAutoscalingOptionsToTerraform(struct?: SpannerInstanceAutoscalingConfigAsymmetricAutoscalingOptions | cdktf.IResolvable): any;
export declare function spannerInstanceAutoscalingConfigAsymmetricAutoscalingOptionsToHclTerraform(struct?: SpannerInstanceAutoscalingConfigAsymmetricAutoscalingOptions | cdktf.IResolvable): any;
export declare class SpannerInstanceAutoscalingConfigAsymmetricAutoscalingOptionsOutputReference 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(): SpannerInstanceAutoscalingConfigAsymmetricAutoscalingOptions | cdktf.IResolvable | undefined;
    set internalValue(value: SpannerInstanceAutoscalingConfigAsymmetricAutoscalingOptions | cdktf.IResolvable | undefined);
    private _overrides;
    get overrides(): SpannerInstanceAutoscalingConfigAsymmetricAutoscalingOptionsOverridesOutputReference;
    putOverrides(value: SpannerInstanceAutoscalingConfigAsymmetricAutoscalingOptionsOverrides): void;
    get overridesInput(): SpannerInstanceAutoscalingConfigAsymmetricAutoscalingOptionsOverrides | undefined;
    private _replicaSelection;
    get replicaSelection(): SpannerInstanceAutoscalingConfigAsymmetricAutoscalingOptionsReplicaSelectionOutputReference;
    putReplicaSelection(value: SpannerInstanceAutoscalingConfigAsymmetricAutoscalingOptionsReplicaSelection): void;
    get replicaSelectionInput(): SpannerInstanceAutoscalingConfigAsymmetricAutoscalingOptionsReplicaSelection | undefined;
}
export declare class SpannerInstanceAutoscalingConfigAsymmetricAutoscalingOptionsList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: SpannerInstanceAutoscalingConfigAsymmetricAutoscalingOptions[] | 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): SpannerInstanceAutoscalingConfigAsymmetricAutoscalingOptionsOutputReference;
}
export interface SpannerInstanceAutoscalingConfigAutoscalingLimits {
    /**
    * Specifies maximum number of nodes allocated to the instance. If set, this number
    * should be greater than or equal to min_nodes.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/spanner_instance#max_nodes SpannerInstance#max_nodes}
    */
    readonly maxNodes?: number;
    /**
    * Specifies maximum number of processing units allocated to the instance.
    * If set, this number should be multiples of 1000 and be greater than or equal to
    * min_processing_units.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/spanner_instance#max_processing_units SpannerInstance#max_processing_units}
    */
    readonly maxProcessingUnits?: number;
    /**
    * Specifies number of nodes allocated to the instance. If set, this number
    * should be greater than or equal to 1.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/spanner_instance#min_nodes SpannerInstance#min_nodes}
    */
    readonly minNodes?: number;
    /**
    * Specifies minimum number of processing units allocated to the instance.
    * If set, this number should be multiples of 1000.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/spanner_instance#min_processing_units SpannerInstance#min_processing_units}
    */
    readonly minProcessingUnits?: number;
}
export declare function spannerInstanceAutoscalingConfigAutoscalingLimitsToTerraform(struct?: SpannerInstanceAutoscalingConfigAutoscalingLimitsOutputReference | SpannerInstanceAutoscalingConfigAutoscalingLimits): any;
export declare function spannerInstanceAutoscalingConfigAutoscalingLimitsToHclTerraform(struct?: SpannerInstanceAutoscalingConfigAutoscalingLimitsOutputReference | SpannerInstanceAutoscalingConfigAutoscalingLimits): any;
export declare class SpannerInstanceAutoscalingConfigAutoscalingLimitsOutputReference 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(): SpannerInstanceAutoscalingConfigAutoscalingLimits | undefined;
    set internalValue(value: SpannerInstanceAutoscalingConfigAutoscalingLimits | undefined);
    private _maxNodes?;
    get maxNodes(): number;
    set maxNodes(value: number);
    resetMaxNodes(): void;
    get maxNodesInput(): number | undefined;
    private _maxProcessingUnits?;
    get maxProcessingUnits(): number;
    set maxProcessingUnits(value: number);
    resetMaxProcessingUnits(): void;
    get maxProcessingUnitsInput(): number | undefined;
    private _minNodes?;
    get minNodes(): number;
    set minNodes(value: number);
    resetMinNodes(): void;
    get minNodesInput(): number | undefined;
    private _minProcessingUnits?;
    get minProcessingUnits(): number;
    set minProcessingUnits(value: number);
    resetMinProcessingUnits(): void;
    get minProcessingUnitsInput(): number | undefined;
}
export interface SpannerInstanceAutoscalingConfigAutoscalingTargets {
    /**
    * Specifies the target high priority cpu utilization percentage that the autoscaler
    * should be trying to achieve for the instance.
    * This number is on a scale from 0 (no utilization) to 100 (full utilization)..
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/spanner_instance#high_priority_cpu_utilization_percent SpannerInstance#high_priority_cpu_utilization_percent}
    */
    readonly highPriorityCpuUtilizationPercent?: number;
    /**
    * Specifies the target storage utilization percentage that the autoscaler
    * should be trying to achieve for the instance.
    * This number is on a scale from 0 (no utilization) to 100 (full utilization).
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/spanner_instance#storage_utilization_percent SpannerInstance#storage_utilization_percent}
    */
    readonly storageUtilizationPercent?: number;
}
export declare function spannerInstanceAutoscalingConfigAutoscalingTargetsToTerraform(struct?: SpannerInstanceAutoscalingConfigAutoscalingTargetsOutputReference | SpannerInstanceAutoscalingConfigAutoscalingTargets): any;
export declare function spannerInstanceAutoscalingConfigAutoscalingTargetsToHclTerraform(struct?: SpannerInstanceAutoscalingConfigAutoscalingTargetsOutputReference | SpannerInstanceAutoscalingConfigAutoscalingTargets): any;
export declare class SpannerInstanceAutoscalingConfigAutoscalingTargetsOutputReference 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(): SpannerInstanceAutoscalingConfigAutoscalingTargets | undefined;
    set internalValue(value: SpannerInstanceAutoscalingConfigAutoscalingTargets | undefined);
    private _highPriorityCpuUtilizationPercent?;
    get highPriorityCpuUtilizationPercent(): number;
    set highPriorityCpuUtilizationPercent(value: number);
    resetHighPriorityCpuUtilizationPercent(): void;
    get highPriorityCpuUtilizationPercentInput(): number | undefined;
    private _storageUtilizationPercent?;
    get storageUtilizationPercent(): number;
    set storageUtilizationPercent(value: number);
    resetStorageUtilizationPercent(): void;
    get storageUtilizationPercentInput(): number | undefined;
}
export interface SpannerInstanceAutoscalingConfig {
    /**
    * asymmetric_autoscaling_options block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/spanner_instance#asymmetric_autoscaling_options SpannerInstance#asymmetric_autoscaling_options}
    */
    readonly asymmetricAutoscalingOptions?: SpannerInstanceAutoscalingConfigAsymmetricAutoscalingOptions[] | cdktf.IResolvable;
    /**
    * autoscaling_limits block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/spanner_instance#autoscaling_limits SpannerInstance#autoscaling_limits}
    */
    readonly autoscalingLimits?: SpannerInstanceAutoscalingConfigAutoscalingLimits;
    /**
    * autoscaling_targets block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/spanner_instance#autoscaling_targets SpannerInstance#autoscaling_targets}
    */
    readonly autoscalingTargets?: SpannerInstanceAutoscalingConfigAutoscalingTargets;
}
export declare function spannerInstanceAutoscalingConfigToTerraform(struct?: SpannerInstanceAutoscalingConfigOutputReference | SpannerInstanceAutoscalingConfig): any;
export declare function spannerInstanceAutoscalingConfigToHclTerraform(struct?: SpannerInstanceAutoscalingConfigOutputReference | SpannerInstanceAutoscalingConfig): any;
export declare class SpannerInstanceAutoscalingConfigOutputReference 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(): SpannerInstanceAutoscalingConfig | undefined;
    set internalValue(value: SpannerInstanceAutoscalingConfig | undefined);
    private _asymmetricAutoscalingOptions;
    get asymmetricAutoscalingOptions(): SpannerInstanceAutoscalingConfigAsymmetricAutoscalingOptionsList;
    putAsymmetricAutoscalingOptions(value: SpannerInstanceAutoscalingConfigAsymmetricAutoscalingOptions[] | cdktf.IResolvable): void;
    resetAsymmetricAutoscalingOptions(): void;
    get asymmetricAutoscalingOptionsInput(): cdktf.IResolvable | SpannerInstanceAutoscalingConfigAsymmetricAutoscalingOptions[] | undefined;
    private _autoscalingLimits;
    get autoscalingLimits(): SpannerInstanceAutoscalingConfigAutoscalingLimitsOutputReference;
    putAutoscalingLimits(value: SpannerInstanceAutoscalingConfigAutoscalingLimits): void;
    resetAutoscalingLimits(): void;
    get autoscalingLimitsInput(): SpannerInstanceAutoscalingConfigAutoscalingLimits | undefined;
    private _autoscalingTargets;
    get autoscalingTargets(): SpannerInstanceAutoscalingConfigAutoscalingTargetsOutputReference;
    putAutoscalingTargets(value: SpannerInstanceAutoscalingConfigAutoscalingTargets): void;
    resetAutoscalingTargets(): void;
    get autoscalingTargetsInput(): SpannerInstanceAutoscalingConfigAutoscalingTargets | undefined;
}
export interface SpannerInstanceTimeouts {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/spanner_instance#create SpannerInstance#create}
    */
    readonly create?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/spanner_instance#delete SpannerInstance#delete}
    */
    readonly delete?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/spanner_instance#update SpannerInstance#update}
    */
    readonly update?: string;
}
export declare function spannerInstanceTimeoutsToTerraform(struct?: SpannerInstanceTimeouts | cdktf.IResolvable): any;
export declare function spannerInstanceTimeoutsToHclTerraform(struct?: SpannerInstanceTimeouts | cdktf.IResolvable): any;
export declare class SpannerInstanceTimeoutsOutputReference 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(): SpannerInstanceTimeouts | cdktf.IResolvable | undefined;
    set internalValue(value: SpannerInstanceTimeouts | cdktf.IResolvable | undefined);
    private _create?;
    get create(): string;
    set create(value: string);
    resetCreate(): void;
    get createInput(): string | undefined;
    private _delete?;
    get delete(): string;
    set delete(value: string);
    resetDelete(): void;
    get deleteInput(): string | undefined;
    private _update?;
    get update(): string;
    set update(value: string);
    resetUpdate(): void;
    get updateInput(): string | undefined;
}
/**
* Represents a {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/spanner_instance google_spanner_instance}
*/
export declare class SpannerInstance extends cdktf.TerraformResource {
    static readonly tfResourceType = "google_spanner_instance";
    /**
    * Generates CDKTF code for importing a SpannerInstance 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 SpannerInstance to import
    * @param importFromId The id of the existing SpannerInstance that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/spanner_instance#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the SpannerInstance to import is found
    */
    static generateConfigForImport(scope: Construct, importToId: string, importFromId: string, provider?: cdktf.TerraformProvider): cdktf.ImportableResource;
    /**
    * Create a new {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/spanner_instance google_spanner_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 SpannerInstanceConfig
    */
    constructor(scope: Construct, id: string, config: SpannerInstanceConfig);
    private _config?;
    get config(): string;
    set config(value: string);
    get configInput(): string | undefined;
    private _defaultBackupScheduleType?;
    get defaultBackupScheduleType(): string;
    set defaultBackupScheduleType(value: string);
    resetDefaultBackupScheduleType(): void;
    get defaultBackupScheduleTypeInput(): string | undefined;
    private _displayName?;
    get displayName(): string;
    set displayName(value: string);
    get displayNameInput(): string | undefined;
    private _edition?;
    get edition(): string;
    set edition(value: string);
    resetEdition(): void;
    get editionInput(): string | undefined;
    private _effectiveLabels;
    get effectiveLabels(): cdktf.StringMap;
    private _forceDestroy?;
    get forceDestroy(): boolean | cdktf.IResolvable;
    set forceDestroy(value: boolean | cdktf.IResolvable);
    resetForceDestroy(): void;
    get forceDestroyInput(): boolean | cdktf.IResolvable | undefined;
    private _id?;
    get id(): string;
    set id(value: string);
    resetId(): void;
    get idInput(): string | undefined;
    private _instanceType?;
    get instanceType(): string;
    set instanceType(value: string);
    resetInstanceType(): void;
    get instanceTypeInput(): string | undefined;
    private _labels?;
    get labels(): {
        [key: string]: string;
    };
    set labels(value: {
        [key: string]: string;
    });
    resetLabels(): void;
    get labelsInput(): {
        [key: string]: string;
    } | undefined;
    private _name?;
    get name(): string;
    set name(value: string);
    resetName(): void;
    get nameInput(): string | undefined;
    private _numNodes?;
    get numNodes(): number;
    set numNodes(value: number);
    resetNumNodes(): void;
    get numNodesInput(): number | undefined;
    private _processingUnits?;
    get processingUnits(): number;
    set processingUnits(value: number);
    resetProcessingUnits(): void;
    get processingUnitsInput(): number | undefined;
    private _project?;
    get project(): string;
    set project(value: string);
    resetProject(): void;
    get projectInput(): string | undefined;
    get state(): string;
    private _terraformLabels;
    get terraformLabels(): cdktf.StringMap;
    private _autoscalingConfig;
    get autoscalingConfig(): SpannerInstanceAutoscalingConfigOutputReference;
    putAutoscalingConfig(value: SpannerInstanceAutoscalingConfig): void;
    resetAutoscalingConfig(): void;
    get autoscalingConfigInput(): SpannerInstanceAutoscalingConfig | undefined;
    private _timeouts;
    get timeouts(): SpannerInstanceTimeoutsOutputReference;
    putTimeouts(value: SpannerInstanceTimeouts): void;
    resetTimeouts(): void;
    get timeoutsInput(): cdktf.IResolvable | SpannerInstanceTimeouts | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
