/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */
import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface AlloydbInstanceConfig extends cdktf.TerraformMetaArguments {
    /**
    * Annotations to allow client tools to store small amount of arbitrary data. This is distinct from labels.
    *
    * **Note**: This field is non-authoritative, and will only manage the annotations present in your configuration.
    * Please refer to the field 'effective_annotations' for all of the annotations present on the resource.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/alloydb_instance#annotations AlloydbInstance#annotations}
    */
    readonly annotations?: {
        [key: string]: string;
    };
    /**
    * 'Availability type of an Instance. Defaults to REGIONAL for both primary and read instances.
    * Note that primary and read instances can have different availability types.
    * Only READ_POOL instance supports ZONAL type. Users can't specify the zone for READ_POOL instance.
    * Zone is automatically chosen from the list of zones in the region specified.
    * Read pool of size 1 can only have zonal availability. Read pools with node count of 2 or more
    * can have regional availability (nodes are present in 2 or more zones in a region).' Possible values: ["AVAILABILITY_TYPE_UNSPECIFIED", "ZONAL", "REGIONAL"]
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/alloydb_instance#availability_type AlloydbInstance#availability_type}
    */
    readonly availabilityType?: string;
    /**
    * Identifies the alloydb cluster. Must be in the format
    * 'projects/{project}/locations/{location}/clusters/{cluster_id}'
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/alloydb_instance#cluster AlloydbInstance#cluster}
    */
    readonly cluster: string;
    /**
    * Database flags. Set at instance level. * They are copied from primary instance on read instance creation. * Read instances can set new or override existing flags that are relevant for reads, e.g. for enabling columnar cache on a read instance. Flags set on read instance may or may not be present on primary.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/alloydb_instance#database_flags AlloydbInstance#database_flags}
    */
    readonly databaseFlags?: {
        [key: string]: string;
    };
    /**
    * User-settable and human-readable display name for the Instance.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/alloydb_instance#display_name AlloydbInstance#display_name}
    */
    readonly displayName?: string;
    /**
    * The Compute Engine zone that the instance should serve from, per https://cloud.google.com/compute/docs/regions-zones This can ONLY be specified for ZONAL instances. If present for a REGIONAL instance, an error will be thrown. If this is absent for a ZONAL instance, instance is created in a random zone with available capacity.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/alloydb_instance#gce_zone AlloydbInstance#gce_zone}
    */
    readonly gceZone?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/alloydb_instance#id AlloydbInstance#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 ID of the alloydb instance.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/alloydb_instance#instance_id AlloydbInstance#instance_id}
    */
    readonly instanceId: string;
    /**
    * The type of the instance.
    * If the instance type is READ_POOL, provide the associated PRIMARY/SECONDARY instance in the 'depends_on' meta-data attribute.
    * If the instance type is SECONDARY, point to the cluster_type of the associated secondary cluster instead of mentioning SECONDARY.
    * Example: {instance_type = google_alloydb_cluster.<secondary_cluster_name>.cluster_type} instead of {instance_type = SECONDARY}
    * If the instance type is SECONDARY, the terraform delete instance operation does not delete the secondary instance but abandons it instead.
    * Use deletion_policy = "FORCE" in the associated secondary cluster and delete the cluster forcefully to delete the secondary cluster as well its associated secondary instance.
    * Users can undo the delete secondary instance action by importing the deleted secondary instance by calling terraform import. Possible values: ["PRIMARY", "READ_POOL", "SECONDARY"]
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/alloydb_instance#instance_type AlloydbInstance#instance_type}
    */
    readonly instanceType: string;
    /**
    * User-defined labels for the alloydb instance.
    *
    * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
    * Please refer to the field 'effective_labels' for all of the labels present on the resource.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/alloydb_instance#labels AlloydbInstance#labels}
    */
    readonly labels?: {
        [key: string]: string;
    };
    /**
    * client_connection_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/alloydb_instance#client_connection_config AlloydbInstance#client_connection_config}
    */
    readonly clientConnectionConfig?: AlloydbInstanceClientConnectionConfig;
    /**
    * machine_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/alloydb_instance#machine_config AlloydbInstance#machine_config}
    */
    readonly machineConfig?: AlloydbInstanceMachineConfig;
    /**
    * network_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/alloydb_instance#network_config AlloydbInstance#network_config}
    */
    readonly networkConfig?: AlloydbInstanceNetworkConfig;
    /**
    * psc_instance_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/alloydb_instance#psc_instance_config AlloydbInstance#psc_instance_config}
    */
    readonly pscInstanceConfig?: AlloydbInstancePscInstanceConfig;
    /**
    * query_insights_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/alloydb_instance#query_insights_config AlloydbInstance#query_insights_config}
    */
    readonly queryInsightsConfig?: AlloydbInstanceQueryInsightsConfig;
    /**
    * read_pool_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/alloydb_instance#read_pool_config AlloydbInstance#read_pool_config}
    */
    readonly readPoolConfig?: AlloydbInstanceReadPoolConfig;
    /**
    * timeouts block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/alloydb_instance#timeouts AlloydbInstance#timeouts}
    */
    readonly timeouts?: AlloydbInstanceTimeouts;
}
export interface AlloydbInstanceClientConnectionConfigSslConfig {
    /**
    * SSL mode. Specifies client-server SSL/TLS connection behavior. Possible values: ["ENCRYPTED_ONLY", "ALLOW_UNENCRYPTED_AND_ENCRYPTED"]
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/alloydb_instance#ssl_mode AlloydbInstance#ssl_mode}
    */
    readonly sslMode?: string;
}
export declare function alloydbInstanceClientConnectionConfigSslConfigToTerraform(struct?: AlloydbInstanceClientConnectionConfigSslConfigOutputReference | AlloydbInstanceClientConnectionConfigSslConfig): any;
export declare function alloydbInstanceClientConnectionConfigSslConfigToHclTerraform(struct?: AlloydbInstanceClientConnectionConfigSslConfigOutputReference | AlloydbInstanceClientConnectionConfigSslConfig): any;
export declare class AlloydbInstanceClientConnectionConfigSslConfigOutputReference 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(): AlloydbInstanceClientConnectionConfigSslConfig | undefined;
    set internalValue(value: AlloydbInstanceClientConnectionConfigSslConfig | undefined);
    private _sslMode?;
    get sslMode(): string;
    set sslMode(value: string);
    resetSslMode(): void;
    get sslModeInput(): string | undefined;
}
export interface AlloydbInstanceClientConnectionConfig {
    /**
    * Configuration to enforce connectors only (ex: AuthProxy) connections to the database.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/alloydb_instance#require_connectors AlloydbInstance#require_connectors}
    */
    readonly requireConnectors?: boolean | cdktf.IResolvable;
    /**
    * ssl_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/alloydb_instance#ssl_config AlloydbInstance#ssl_config}
    */
    readonly sslConfig?: AlloydbInstanceClientConnectionConfigSslConfig;
}
export declare function alloydbInstanceClientConnectionConfigToTerraform(struct?: AlloydbInstanceClientConnectionConfigOutputReference | AlloydbInstanceClientConnectionConfig): any;
export declare function alloydbInstanceClientConnectionConfigToHclTerraform(struct?: AlloydbInstanceClientConnectionConfigOutputReference | AlloydbInstanceClientConnectionConfig): any;
export declare class AlloydbInstanceClientConnectionConfigOutputReference 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(): AlloydbInstanceClientConnectionConfig | undefined;
    set internalValue(value: AlloydbInstanceClientConnectionConfig | undefined);
    private _requireConnectors?;
    get requireConnectors(): boolean | cdktf.IResolvable;
    set requireConnectors(value: boolean | cdktf.IResolvable);
    resetRequireConnectors(): void;
    get requireConnectorsInput(): boolean | cdktf.IResolvable | undefined;
    private _sslConfig;
    get sslConfig(): AlloydbInstanceClientConnectionConfigSslConfigOutputReference;
    putSslConfig(value: AlloydbInstanceClientConnectionConfigSslConfig): void;
    resetSslConfig(): void;
    get sslConfigInput(): AlloydbInstanceClientConnectionConfigSslConfig | undefined;
}
export interface AlloydbInstanceMachineConfig {
    /**
    * The number of CPU's in the VM instance.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/alloydb_instance#cpu_count AlloydbInstance#cpu_count}
    */
    readonly cpuCount?: number;
}
export declare function alloydbInstanceMachineConfigToTerraform(struct?: AlloydbInstanceMachineConfigOutputReference | AlloydbInstanceMachineConfig): any;
export declare function alloydbInstanceMachineConfigToHclTerraform(struct?: AlloydbInstanceMachineConfigOutputReference | AlloydbInstanceMachineConfig): any;
export declare class AlloydbInstanceMachineConfigOutputReference 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(): AlloydbInstanceMachineConfig | undefined;
    set internalValue(value: AlloydbInstanceMachineConfig | undefined);
    private _cpuCount?;
    get cpuCount(): number;
    set cpuCount(value: number);
    resetCpuCount(): void;
    get cpuCountInput(): number | undefined;
}
export interface AlloydbInstanceNetworkConfigAuthorizedExternalNetworks {
    /**
    * CIDR range for one authorized network of the instance.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/alloydb_instance#cidr_range AlloydbInstance#cidr_range}
    */
    readonly cidrRange?: string;
}
export declare function alloydbInstanceNetworkConfigAuthorizedExternalNetworksToTerraform(struct?: AlloydbInstanceNetworkConfigAuthorizedExternalNetworks | cdktf.IResolvable): any;
export declare function alloydbInstanceNetworkConfigAuthorizedExternalNetworksToHclTerraform(struct?: AlloydbInstanceNetworkConfigAuthorizedExternalNetworks | cdktf.IResolvable): any;
export declare class AlloydbInstanceNetworkConfigAuthorizedExternalNetworksOutputReference 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(): AlloydbInstanceNetworkConfigAuthorizedExternalNetworks | cdktf.IResolvable | undefined;
    set internalValue(value: AlloydbInstanceNetworkConfigAuthorizedExternalNetworks | cdktf.IResolvable | undefined);
    private _cidrRange?;
    get cidrRange(): string;
    set cidrRange(value: string);
    resetCidrRange(): void;
    get cidrRangeInput(): string | undefined;
}
export declare class AlloydbInstanceNetworkConfigAuthorizedExternalNetworksList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: AlloydbInstanceNetworkConfigAuthorizedExternalNetworks[] | 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): AlloydbInstanceNetworkConfigAuthorizedExternalNetworksOutputReference;
}
export interface AlloydbInstanceNetworkConfig {
    /**
    * Enabling public ip for the instance. If a user wishes to disable this,
    * please also clear the list of the authorized external networks set on
    * the same instance.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/alloydb_instance#enable_public_ip AlloydbInstance#enable_public_ip}
    */
    readonly enablePublicIp?: boolean | cdktf.IResolvable;
    /**
    * authorized_external_networks block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/alloydb_instance#authorized_external_networks AlloydbInstance#authorized_external_networks}
    */
    readonly authorizedExternalNetworks?: AlloydbInstanceNetworkConfigAuthorizedExternalNetworks[] | cdktf.IResolvable;
}
export declare function alloydbInstanceNetworkConfigToTerraform(struct?: AlloydbInstanceNetworkConfigOutputReference | AlloydbInstanceNetworkConfig): any;
export declare function alloydbInstanceNetworkConfigToHclTerraform(struct?: AlloydbInstanceNetworkConfigOutputReference | AlloydbInstanceNetworkConfig): any;
export declare class AlloydbInstanceNetworkConfigOutputReference 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(): AlloydbInstanceNetworkConfig | undefined;
    set internalValue(value: AlloydbInstanceNetworkConfig | undefined);
    private _enablePublicIp?;
    get enablePublicIp(): boolean | cdktf.IResolvable;
    set enablePublicIp(value: boolean | cdktf.IResolvable);
    resetEnablePublicIp(): void;
    get enablePublicIpInput(): boolean | cdktf.IResolvable | undefined;
    private _authorizedExternalNetworks;
    get authorizedExternalNetworks(): AlloydbInstanceNetworkConfigAuthorizedExternalNetworksList;
    putAuthorizedExternalNetworks(value: AlloydbInstanceNetworkConfigAuthorizedExternalNetworks[] | cdktf.IResolvable): void;
    resetAuthorizedExternalNetworks(): void;
    get authorizedExternalNetworksInput(): cdktf.IResolvable | AlloydbInstanceNetworkConfigAuthorizedExternalNetworks[] | undefined;
}
export interface AlloydbInstancePscInstanceConfig {
    /**
    * List of consumer projects that are allowed to create PSC endpoints to service-attachments to this instance.
    * These should be specified as project numbers only.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/alloydb_instance#allowed_consumer_projects AlloydbInstance#allowed_consumer_projects}
    */
    readonly allowedConsumerProjects?: string[];
}
export declare function alloydbInstancePscInstanceConfigToTerraform(struct?: AlloydbInstancePscInstanceConfigOutputReference | AlloydbInstancePscInstanceConfig): any;
export declare function alloydbInstancePscInstanceConfigToHclTerraform(struct?: AlloydbInstancePscInstanceConfigOutputReference | AlloydbInstancePscInstanceConfig): any;
export declare class AlloydbInstancePscInstanceConfigOutputReference 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(): AlloydbInstancePscInstanceConfig | undefined;
    set internalValue(value: AlloydbInstancePscInstanceConfig | undefined);
    private _allowedConsumerProjects?;
    get allowedConsumerProjects(): string[];
    set allowedConsumerProjects(value: string[]);
    resetAllowedConsumerProjects(): void;
    get allowedConsumerProjectsInput(): string[] | undefined;
    get pscDnsName(): string;
    get serviceAttachmentLink(): string;
}
export interface AlloydbInstanceQueryInsightsConfig {
    /**
    * Number of query execution plans captured by Insights per minute for all queries combined. The default value is 5. Any integer between 0 and 20 is considered valid.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/alloydb_instance#query_plans_per_minute AlloydbInstance#query_plans_per_minute}
    */
    readonly queryPlansPerMinute?: number;
    /**
    * Query string length. The default value is 1024. Any integer between 256 and 4500 is considered valid.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/alloydb_instance#query_string_length AlloydbInstance#query_string_length}
    */
    readonly queryStringLength?: number;
    /**
    * Record application tags for an instance. This flag is turned "on" by default.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/alloydb_instance#record_application_tags AlloydbInstance#record_application_tags}
    */
    readonly recordApplicationTags?: boolean | cdktf.IResolvable;
    /**
    * Record client address for an instance. Client address is PII information. This flag is turned "on" by default.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/alloydb_instance#record_client_address AlloydbInstance#record_client_address}
    */
    readonly recordClientAddress?: boolean | cdktf.IResolvable;
}
export declare function alloydbInstanceQueryInsightsConfigToTerraform(struct?: AlloydbInstanceQueryInsightsConfigOutputReference | AlloydbInstanceQueryInsightsConfig): any;
export declare function alloydbInstanceQueryInsightsConfigToHclTerraform(struct?: AlloydbInstanceQueryInsightsConfigOutputReference | AlloydbInstanceQueryInsightsConfig): any;
export declare class AlloydbInstanceQueryInsightsConfigOutputReference 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(): AlloydbInstanceQueryInsightsConfig | undefined;
    set internalValue(value: AlloydbInstanceQueryInsightsConfig | undefined);
    private _queryPlansPerMinute?;
    get queryPlansPerMinute(): number;
    set queryPlansPerMinute(value: number);
    resetQueryPlansPerMinute(): void;
    get queryPlansPerMinuteInput(): number | undefined;
    private _queryStringLength?;
    get queryStringLength(): number;
    set queryStringLength(value: number);
    resetQueryStringLength(): void;
    get queryStringLengthInput(): number | undefined;
    private _recordApplicationTags?;
    get recordApplicationTags(): boolean | cdktf.IResolvable;
    set recordApplicationTags(value: boolean | cdktf.IResolvable);
    resetRecordApplicationTags(): void;
    get recordApplicationTagsInput(): boolean | cdktf.IResolvable | undefined;
    private _recordClientAddress?;
    get recordClientAddress(): boolean | cdktf.IResolvable;
    set recordClientAddress(value: boolean | cdktf.IResolvable);
    resetRecordClientAddress(): void;
    get recordClientAddressInput(): boolean | cdktf.IResolvable | undefined;
}
export interface AlloydbInstanceReadPoolConfig {
    /**
    * Read capacity, i.e. number of nodes in a read pool instance.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/alloydb_instance#node_count AlloydbInstance#node_count}
    */
    readonly nodeCount?: number;
}
export declare function alloydbInstanceReadPoolConfigToTerraform(struct?: AlloydbInstanceReadPoolConfigOutputReference | AlloydbInstanceReadPoolConfig): any;
export declare function alloydbInstanceReadPoolConfigToHclTerraform(struct?: AlloydbInstanceReadPoolConfigOutputReference | AlloydbInstanceReadPoolConfig): any;
export declare class AlloydbInstanceReadPoolConfigOutputReference 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(): AlloydbInstanceReadPoolConfig | undefined;
    set internalValue(value: AlloydbInstanceReadPoolConfig | undefined);
    private _nodeCount?;
    get nodeCount(): number;
    set nodeCount(value: number);
    resetNodeCount(): void;
    get nodeCountInput(): number | undefined;
}
export interface AlloydbInstanceTimeouts {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/alloydb_instance#create AlloydbInstance#create}
    */
    readonly create?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/alloydb_instance#delete AlloydbInstance#delete}
    */
    readonly delete?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/alloydb_instance#update AlloydbInstance#update}
    */
    readonly update?: string;
}
export declare function alloydbInstanceTimeoutsToTerraform(struct?: AlloydbInstanceTimeouts | cdktf.IResolvable): any;
export declare function alloydbInstanceTimeoutsToHclTerraform(struct?: AlloydbInstanceTimeouts | cdktf.IResolvable): any;
export declare class AlloydbInstanceTimeoutsOutputReference 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(): AlloydbInstanceTimeouts | cdktf.IResolvable | undefined;
    set internalValue(value: AlloydbInstanceTimeouts | cdktf.IResolvable | undefined);
    private _create?;
    get create(): string;
    set create(value: string);
    resetCreate(): void;
    get createInput(): string | undefined;
    private _delete?;
    get delete(): string;
    set delete(value: string);
    resetDelete(): void;
    get deleteInput(): string | undefined;
    private _update?;
    get update(): string;
    set update(value: string);
    resetUpdate(): void;
    get updateInput(): string | undefined;
}
/**
* Represents a {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/alloydb_instance google_alloydb_instance}
*/
export declare class AlloydbInstance extends cdktf.TerraformResource {
    static readonly tfResourceType = "google_alloydb_instance";
    /**
    * Generates CDKTF code for importing a AlloydbInstance 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 AlloydbInstance to import
    * @param importFromId The id of the existing AlloydbInstance that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/alloydb_instance#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the AlloydbInstance to import is found
    */
    static generateConfigForImport(scope: Construct, importToId: string, importFromId: string, provider?: cdktf.TerraformProvider): cdktf.ImportableResource;
    /**
    * Create a new {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/alloydb_instance google_alloydb_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 AlloydbInstanceConfig
    */
    constructor(scope: Construct, id: string, config: AlloydbInstanceConfig);
    private _annotations?;
    get annotations(): {
        [key: string]: string;
    };
    set annotations(value: {
        [key: string]: string;
    });
    resetAnnotations(): void;
    get annotationsInput(): {
        [key: string]: string;
    } | undefined;
    private _availabilityType?;
    get availabilityType(): string;
    set availabilityType(value: string);
    resetAvailabilityType(): void;
    get availabilityTypeInput(): string | undefined;
    private _cluster?;
    get cluster(): string;
    set cluster(value: string);
    get clusterInput(): string | undefined;
    get createTime(): string;
    private _databaseFlags?;
    get databaseFlags(): {
        [key: string]: string;
    };
    set databaseFlags(value: {
        [key: string]: string;
    });
    resetDatabaseFlags(): void;
    get databaseFlagsInput(): {
        [key: string]: string;
    } | undefined;
    private _displayName?;
    get displayName(): string;
    set displayName(value: string);
    resetDisplayName(): void;
    get displayNameInput(): string | undefined;
    private _effectiveAnnotations;
    get effectiveAnnotations(): cdktf.StringMap;
    private _effectiveLabels;
    get effectiveLabels(): cdktf.StringMap;
    private _gceZone?;
    get gceZone(): string;
    set gceZone(value: string);
    resetGceZone(): void;
    get gceZoneInput(): 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 _instanceType?;
    get instanceType(): string;
    set instanceType(value: string);
    get instanceTypeInput(): string | undefined;
    get ipAddress(): string;
    private _labels?;
    get labels(): {
        [key: string]: string;
    };
    set labels(value: {
        [key: string]: string;
    });
    resetLabels(): void;
    get labelsInput(): {
        [key: string]: string;
    } | undefined;
    get name(): string;
    get publicIpAddress(): string;
    get reconciling(): cdktf.IResolvable;
    get state(): string;
    private _terraformLabels;
    get terraformLabels(): cdktf.StringMap;
    get uid(): string;
    get updateTime(): string;
    private _clientConnectionConfig;
    get clientConnectionConfig(): AlloydbInstanceClientConnectionConfigOutputReference;
    putClientConnectionConfig(value: AlloydbInstanceClientConnectionConfig): void;
    resetClientConnectionConfig(): void;
    get clientConnectionConfigInput(): AlloydbInstanceClientConnectionConfig | undefined;
    private _machineConfig;
    get machineConfig(): AlloydbInstanceMachineConfigOutputReference;
    putMachineConfig(value: AlloydbInstanceMachineConfig): void;
    resetMachineConfig(): void;
    get machineConfigInput(): AlloydbInstanceMachineConfig | undefined;
    private _networkConfig;
    get networkConfig(): AlloydbInstanceNetworkConfigOutputReference;
    putNetworkConfig(value: AlloydbInstanceNetworkConfig): void;
    resetNetworkConfig(): void;
    get networkConfigInput(): AlloydbInstanceNetworkConfig | undefined;
    private _pscInstanceConfig;
    get pscInstanceConfig(): AlloydbInstancePscInstanceConfigOutputReference;
    putPscInstanceConfig(value: AlloydbInstancePscInstanceConfig): void;
    resetPscInstanceConfig(): void;
    get pscInstanceConfigInput(): AlloydbInstancePscInstanceConfig | undefined;
    private _queryInsightsConfig;
    get queryInsightsConfig(): AlloydbInstanceQueryInsightsConfigOutputReference;
    putQueryInsightsConfig(value: AlloydbInstanceQueryInsightsConfig): void;
    resetQueryInsightsConfig(): void;
    get queryInsightsConfigInput(): AlloydbInstanceQueryInsightsConfig | undefined;
    private _readPoolConfig;
    get readPoolConfig(): AlloydbInstanceReadPoolConfigOutputReference;
    putReadPoolConfig(value: AlloydbInstanceReadPoolConfig): void;
    resetReadPoolConfig(): void;
    get readPoolConfigInput(): AlloydbInstanceReadPoolConfig | undefined;
    private _timeouts;
    get timeouts(): AlloydbInstanceTimeoutsOutputReference;
    putTimeouts(value: AlloydbInstanceTimeouts): void;
    resetTimeouts(): void;
    get timeoutsInput(): cdktf.IResolvable | AlloydbInstanceTimeouts | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
