/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */
import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface RedisClusterConfig extends cdktf.TerraformMetaArguments {
    /**
    * Optional. The authorization mode of the Redis cluster. If not provided, auth feature is disabled for the cluster. Default value: "AUTH_MODE_DISABLED" Possible values: ["AUTH_MODE_UNSPECIFIED", "AUTH_MODE_IAM_AUTH", "AUTH_MODE_DISABLED"]
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/redis_cluster#authorization_mode RedisCluster#authorization_mode}
    */
    readonly authorizationMode?: string;
    /**
    * Optional. Indicates if the cluster is deletion protected or not.
    * If the value if set to true, any delete cluster operation will fail.
    * Default value is true.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/redis_cluster#deletion_protection_enabled RedisCluster#deletion_protection_enabled}
    */
    readonly deletionProtectionEnabled?: boolean | cdktf.IResolvable;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/redis_cluster#id RedisCluster#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 KMS key used to encrypt the at-rest data of the cluster.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/redis_cluster#kms_key RedisCluster#kms_key}
    */
    readonly kmsKey?: string;
    /**
    * Unique name of the resource in this scope including project and location using the form:
    * projects/{projectId}/locations/{locationId}/clusters/{clusterId}
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/redis_cluster#name RedisCluster#name}
    */
    readonly name?: string;
    /**
    * The nodeType for the Redis cluster.
    * If not provided, REDIS_HIGHMEM_MEDIUM will be used as default Possible values: ["REDIS_SHARED_CORE_NANO", "REDIS_HIGHMEM_MEDIUM", "REDIS_HIGHMEM_XLARGE", "REDIS_STANDARD_SMALL"]
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/redis_cluster#node_type RedisCluster#node_type}
    */
    readonly nodeType?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/redis_cluster#project RedisCluster#project}
    */
    readonly project?: string;
    /**
    * Configure Redis Cluster behavior using a subset of native Redis configuration parameters.
    * Please check Memorystore documentation for the list of supported parameters:
    * https://cloud.google.com/memorystore/docs/cluster/supported-instance-configurations
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/redis_cluster#redis_configs RedisCluster#redis_configs}
    */
    readonly redisConfigs?: {
        [key: string]: string;
    };
    /**
    * The name of the region of the Redis cluster.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/redis_cluster#region RedisCluster#region}
    */
    readonly region?: string;
    /**
    * Optional. The number of replica nodes per shard.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/redis_cluster#replica_count RedisCluster#replica_count}
    */
    readonly replicaCount?: number;
    /**
    * Required. Number of shards for the Redis cluster.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/redis_cluster#shard_count RedisCluster#shard_count}
    */
    readonly shardCount: number;
    /**
    * Optional. The in-transit encryption for the Redis cluster.
    * If not provided, encryption is disabled for the cluster. Default value: "TRANSIT_ENCRYPTION_MODE_DISABLED" Possible values: ["TRANSIT_ENCRYPTION_MODE_UNSPECIFIED", "TRANSIT_ENCRYPTION_MODE_DISABLED", "TRANSIT_ENCRYPTION_MODE_SERVER_AUTHENTICATION"]
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/redis_cluster#transit_encryption_mode RedisCluster#transit_encryption_mode}
    */
    readonly transitEncryptionMode?: string;
    /**
    * cross_cluster_replication_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/redis_cluster#cross_cluster_replication_config RedisCluster#cross_cluster_replication_config}
    */
    readonly crossClusterReplicationConfig?: RedisClusterCrossClusterReplicationConfig;
    /**
    * maintenance_policy block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/redis_cluster#maintenance_policy RedisCluster#maintenance_policy}
    */
    readonly maintenancePolicy?: RedisClusterMaintenancePolicy;
    /**
    * persistence_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/redis_cluster#persistence_config RedisCluster#persistence_config}
    */
    readonly persistenceConfig?: RedisClusterPersistenceConfig;
    /**
    * psc_configs block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/redis_cluster#psc_configs RedisCluster#psc_configs}
    */
    readonly pscConfigs?: RedisClusterPscConfigs[] | cdktf.IResolvable;
    /**
    * timeouts block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/redis_cluster#timeouts RedisCluster#timeouts}
    */
    readonly timeouts?: RedisClusterTimeouts;
    /**
    * zone_distribution_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/redis_cluster#zone_distribution_config RedisCluster#zone_distribution_config}
    */
    readonly zoneDistributionConfig?: RedisClusterZoneDistributionConfig;
}
export interface RedisClusterDiscoveryEndpointsPscConfig {
}
export declare function redisClusterDiscoveryEndpointsPscConfigToTerraform(struct?: RedisClusterDiscoveryEndpointsPscConfig): any;
export declare function redisClusterDiscoveryEndpointsPscConfigToHclTerraform(struct?: RedisClusterDiscoveryEndpointsPscConfig): any;
export declare class RedisClusterDiscoveryEndpointsPscConfigOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): RedisClusterDiscoveryEndpointsPscConfig | undefined;
    set internalValue(value: RedisClusterDiscoveryEndpointsPscConfig | undefined);
    get network(): string;
}
export declare class RedisClusterDiscoveryEndpointsPscConfigList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): RedisClusterDiscoveryEndpointsPscConfigOutputReference;
}
export interface RedisClusterDiscoveryEndpoints {
}
export declare function redisClusterDiscoveryEndpointsToTerraform(struct?: RedisClusterDiscoveryEndpoints): any;
export declare function redisClusterDiscoveryEndpointsToHclTerraform(struct?: RedisClusterDiscoveryEndpoints): any;
export declare class RedisClusterDiscoveryEndpointsOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): RedisClusterDiscoveryEndpoints | undefined;
    set internalValue(value: RedisClusterDiscoveryEndpoints | undefined);
    get address(): string;
    get port(): number;
    private _pscConfig;
    get pscConfig(): RedisClusterDiscoveryEndpointsPscConfigList;
}
export declare class RedisClusterDiscoveryEndpointsList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): RedisClusterDiscoveryEndpointsOutputReference;
}
export interface RedisClusterMaintenanceSchedule {
}
export declare function redisClusterMaintenanceScheduleToTerraform(struct?: RedisClusterMaintenanceSchedule): any;
export declare function redisClusterMaintenanceScheduleToHclTerraform(struct?: RedisClusterMaintenanceSchedule): any;
export declare class RedisClusterMaintenanceScheduleOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): RedisClusterMaintenanceSchedule | undefined;
    set internalValue(value: RedisClusterMaintenanceSchedule | undefined);
    get endTime(): string;
    get scheduleDeadlineTime(): string;
    get startTime(): string;
}
export declare class RedisClusterMaintenanceScheduleList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): RedisClusterMaintenanceScheduleOutputReference;
}
export interface RedisClusterPscConnections {
}
export declare function redisClusterPscConnectionsToTerraform(struct?: RedisClusterPscConnections): any;
export declare function redisClusterPscConnectionsToHclTerraform(struct?: RedisClusterPscConnections): any;
export declare class RedisClusterPscConnectionsOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): RedisClusterPscConnections | undefined;
    set internalValue(value: RedisClusterPscConnections | undefined);
    get address(): string;
    get forwardingRule(): string;
    get network(): string;
    get projectId(): string;
    get pscConnectionId(): string;
}
export declare class RedisClusterPscConnectionsList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): RedisClusterPscConnectionsOutputReference;
}
export interface RedisClusterPscServiceAttachments {
}
export declare function redisClusterPscServiceAttachmentsToTerraform(struct?: RedisClusterPscServiceAttachments): any;
export declare function redisClusterPscServiceAttachmentsToHclTerraform(struct?: RedisClusterPscServiceAttachments): any;
export declare class RedisClusterPscServiceAttachmentsOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): RedisClusterPscServiceAttachments | undefined;
    set internalValue(value: RedisClusterPscServiceAttachments | undefined);
    get connectionType(): string;
    get serviceAttachment(): string;
}
export declare class RedisClusterPscServiceAttachmentsList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): RedisClusterPscServiceAttachmentsOutputReference;
}
export interface RedisClusterStateInfoUpdateInfo {
}
export declare function redisClusterStateInfoUpdateInfoToTerraform(struct?: RedisClusterStateInfoUpdateInfo): any;
export declare function redisClusterStateInfoUpdateInfoToHclTerraform(struct?: RedisClusterStateInfoUpdateInfo): any;
export declare class RedisClusterStateInfoUpdateInfoOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): RedisClusterStateInfoUpdateInfo | undefined;
    set internalValue(value: RedisClusterStateInfoUpdateInfo | undefined);
    get targetReplicaCount(): number;
    get targetShardCount(): number;
}
export declare class RedisClusterStateInfoUpdateInfoList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): RedisClusterStateInfoUpdateInfoOutputReference;
}
export interface RedisClusterStateInfo {
}
export declare function redisClusterStateInfoToTerraform(struct?: RedisClusterStateInfo): any;
export declare function redisClusterStateInfoToHclTerraform(struct?: RedisClusterStateInfo): any;
export declare class RedisClusterStateInfoOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): RedisClusterStateInfo | undefined;
    set internalValue(value: RedisClusterStateInfo | undefined);
    private _updateInfo;
    get updateInfo(): RedisClusterStateInfoUpdateInfoList;
}
export declare class RedisClusterStateInfoList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): RedisClusterStateInfoOutputReference;
}
export interface RedisClusterCrossClusterReplicationConfigMembershipPrimaryCluster {
}
export declare function redisClusterCrossClusterReplicationConfigMembershipPrimaryClusterToTerraform(struct?: RedisClusterCrossClusterReplicationConfigMembershipPrimaryCluster): any;
export declare function redisClusterCrossClusterReplicationConfigMembershipPrimaryClusterToHclTerraform(struct?: RedisClusterCrossClusterReplicationConfigMembershipPrimaryCluster): any;
export declare class RedisClusterCrossClusterReplicationConfigMembershipPrimaryClusterOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): RedisClusterCrossClusterReplicationConfigMembershipPrimaryCluster | undefined;
    set internalValue(value: RedisClusterCrossClusterReplicationConfigMembershipPrimaryCluster | undefined);
    get cluster(): string;
    get uid(): string;
}
export declare class RedisClusterCrossClusterReplicationConfigMembershipPrimaryClusterList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): RedisClusterCrossClusterReplicationConfigMembershipPrimaryClusterOutputReference;
}
export interface RedisClusterCrossClusterReplicationConfigMembershipSecondaryClusters {
}
export declare function redisClusterCrossClusterReplicationConfigMembershipSecondaryClustersToTerraform(struct?: RedisClusterCrossClusterReplicationConfigMembershipSecondaryClusters): any;
export declare function redisClusterCrossClusterReplicationConfigMembershipSecondaryClustersToHclTerraform(struct?: RedisClusterCrossClusterReplicationConfigMembershipSecondaryClusters): any;
export declare class RedisClusterCrossClusterReplicationConfigMembershipSecondaryClustersOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): RedisClusterCrossClusterReplicationConfigMembershipSecondaryClusters | undefined;
    set internalValue(value: RedisClusterCrossClusterReplicationConfigMembershipSecondaryClusters | undefined);
    get cluster(): string;
    get uid(): string;
}
export declare class RedisClusterCrossClusterReplicationConfigMembershipSecondaryClustersList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): RedisClusterCrossClusterReplicationConfigMembershipSecondaryClustersOutputReference;
}
export interface RedisClusterCrossClusterReplicationConfigMembership {
}
export declare function redisClusterCrossClusterReplicationConfigMembershipToTerraform(struct?: RedisClusterCrossClusterReplicationConfigMembership): any;
export declare function redisClusterCrossClusterReplicationConfigMembershipToHclTerraform(struct?: RedisClusterCrossClusterReplicationConfigMembership): any;
export declare class RedisClusterCrossClusterReplicationConfigMembershipOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): RedisClusterCrossClusterReplicationConfigMembership | undefined;
    set internalValue(value: RedisClusterCrossClusterReplicationConfigMembership | undefined);
    private _primaryCluster;
    get primaryCluster(): RedisClusterCrossClusterReplicationConfigMembershipPrimaryClusterList;
    private _secondaryClusters;
    get secondaryClusters(): RedisClusterCrossClusterReplicationConfigMembershipSecondaryClustersList;
}
export declare class RedisClusterCrossClusterReplicationConfigMembershipList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): RedisClusterCrossClusterReplicationConfigMembershipOutputReference;
}
export interface RedisClusterCrossClusterReplicationConfigPrimaryCluster {
    /**
    * The full resource path of the primary cluster in the format: projects/{project}/locations/{region}/clusters/{cluster-id}
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/redis_cluster#cluster RedisCluster#cluster}
    */
    readonly cluster?: string;
}
export declare function redisClusterCrossClusterReplicationConfigPrimaryClusterToTerraform(struct?: RedisClusterCrossClusterReplicationConfigPrimaryClusterOutputReference | RedisClusterCrossClusterReplicationConfigPrimaryCluster): any;
export declare function redisClusterCrossClusterReplicationConfigPrimaryClusterToHclTerraform(struct?: RedisClusterCrossClusterReplicationConfigPrimaryClusterOutputReference | RedisClusterCrossClusterReplicationConfigPrimaryCluster): any;
export declare class RedisClusterCrossClusterReplicationConfigPrimaryClusterOutputReference 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(): RedisClusterCrossClusterReplicationConfigPrimaryCluster | undefined;
    set internalValue(value: RedisClusterCrossClusterReplicationConfigPrimaryCluster | undefined);
    private _cluster?;
    get cluster(): string;
    set cluster(value: string);
    resetCluster(): void;
    get clusterInput(): string | undefined;
    get uid(): string;
}
export interface RedisClusterCrossClusterReplicationConfigSecondaryClusters {
    /**
    * The full resource path of the secondary cluster in the format: projects/{project}/locations/{region}/clusters/{cluster-id}
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/redis_cluster#cluster RedisCluster#cluster}
    */
    readonly cluster?: string;
}
export declare function redisClusterCrossClusterReplicationConfigSecondaryClustersToTerraform(struct?: RedisClusterCrossClusterReplicationConfigSecondaryClusters | cdktf.IResolvable): any;
export declare function redisClusterCrossClusterReplicationConfigSecondaryClustersToHclTerraform(struct?: RedisClusterCrossClusterReplicationConfigSecondaryClusters | cdktf.IResolvable): any;
export declare class RedisClusterCrossClusterReplicationConfigSecondaryClustersOutputReference 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(): RedisClusterCrossClusterReplicationConfigSecondaryClusters | cdktf.IResolvable | undefined;
    set internalValue(value: RedisClusterCrossClusterReplicationConfigSecondaryClusters | cdktf.IResolvable | undefined);
    private _cluster?;
    get cluster(): string;
    set cluster(value: string);
    resetCluster(): void;
    get clusterInput(): string | undefined;
    get uid(): string;
}
export declare class RedisClusterCrossClusterReplicationConfigSecondaryClustersList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: RedisClusterCrossClusterReplicationConfigSecondaryClusters[] | 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): RedisClusterCrossClusterReplicationConfigSecondaryClustersOutputReference;
}
export interface RedisClusterCrossClusterReplicationConfig {
    /**
    * The role of the cluster in cross cluster replication. Supported values are:
    *
    * 1. 'CLUSTER_ROLE_UNSPECIFIED': This is an independent cluster that has never participated in cross cluster replication. It allows both reads and writes.
    *
    * 1. 'NONE': This is an independent cluster that previously participated in cross cluster replication(either as a 'PRIMARY' or 'SECONDARY' cluster). It allows both reads and writes.
    *
    * 1. 'PRIMARY': This cluster serves as the replication source for secondary clusters that are replicating from it. Any data written to it is automatically replicated to its secondary clusters. It allows both reads and writes.
    *
    * 1. 'SECONDARY': This cluster replicates data from the primary cluster. It allows only reads. Possible values: ["CLUSTER_ROLE_UNSPECIFIED", "NONE", "PRIMARY", "SECONDARY"]
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/redis_cluster#cluster_role RedisCluster#cluster_role}
    */
    readonly clusterRole?: string;
    /**
    * primary_cluster block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/redis_cluster#primary_cluster RedisCluster#primary_cluster}
    */
    readonly primaryCluster?: RedisClusterCrossClusterReplicationConfigPrimaryCluster;
    /**
    * secondary_clusters block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/redis_cluster#secondary_clusters RedisCluster#secondary_clusters}
    */
    readonly secondaryClusters?: RedisClusterCrossClusterReplicationConfigSecondaryClusters[] | cdktf.IResolvable;
}
export declare function redisClusterCrossClusterReplicationConfigToTerraform(struct?: RedisClusterCrossClusterReplicationConfigOutputReference | RedisClusterCrossClusterReplicationConfig): any;
export declare function redisClusterCrossClusterReplicationConfigToHclTerraform(struct?: RedisClusterCrossClusterReplicationConfigOutputReference | RedisClusterCrossClusterReplicationConfig): any;
export declare class RedisClusterCrossClusterReplicationConfigOutputReference 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(): RedisClusterCrossClusterReplicationConfig | undefined;
    set internalValue(value: RedisClusterCrossClusterReplicationConfig | undefined);
    private _clusterRole?;
    get clusterRole(): string;
    set clusterRole(value: string);
    resetClusterRole(): void;
    get clusterRoleInput(): string | undefined;
    private _membership;
    get membership(): RedisClusterCrossClusterReplicationConfigMembershipList;
    get updateTime(): string;
    private _primaryCluster;
    get primaryCluster(): RedisClusterCrossClusterReplicationConfigPrimaryClusterOutputReference;
    putPrimaryCluster(value: RedisClusterCrossClusterReplicationConfigPrimaryCluster): void;
    resetPrimaryCluster(): void;
    get primaryClusterInput(): RedisClusterCrossClusterReplicationConfigPrimaryCluster | undefined;
    private _secondaryClusters;
    get secondaryClusters(): RedisClusterCrossClusterReplicationConfigSecondaryClustersList;
    putSecondaryClusters(value: RedisClusterCrossClusterReplicationConfigSecondaryClusters[] | cdktf.IResolvable): void;
    resetSecondaryClusters(): void;
    get secondaryClustersInput(): cdktf.IResolvable | RedisClusterCrossClusterReplicationConfigSecondaryClusters[] | undefined;
}
export interface RedisClusterMaintenancePolicyWeeklyMaintenanceWindowStartTime {
    /**
    * Hours of day in 24 hour format. Should be from 0 to 23.
    * An API may choose to allow the value "24:00:00" for scenarios like business closing time.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/redis_cluster#hours RedisCluster#hours}
    */
    readonly hours?: number;
    /**
    * Minutes of hour of day. Must be from 0 to 59.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/redis_cluster#minutes RedisCluster#minutes}
    */
    readonly minutes?: number;
    /**
    * Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/redis_cluster#nanos RedisCluster#nanos}
    */
    readonly nanos?: number;
    /**
    * Seconds of minutes of the time. Must normally be from 0 to 59.
    * An API may allow the value 60 if it allows leap-seconds.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/redis_cluster#seconds RedisCluster#seconds}
    */
    readonly seconds?: number;
}
export declare function redisClusterMaintenancePolicyWeeklyMaintenanceWindowStartTimeToTerraform(struct?: RedisClusterMaintenancePolicyWeeklyMaintenanceWindowStartTimeOutputReference | RedisClusterMaintenancePolicyWeeklyMaintenanceWindowStartTime): any;
export declare function redisClusterMaintenancePolicyWeeklyMaintenanceWindowStartTimeToHclTerraform(struct?: RedisClusterMaintenancePolicyWeeklyMaintenanceWindowStartTimeOutputReference | RedisClusterMaintenancePolicyWeeklyMaintenanceWindowStartTime): any;
export declare class RedisClusterMaintenancePolicyWeeklyMaintenanceWindowStartTimeOutputReference 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(): RedisClusterMaintenancePolicyWeeklyMaintenanceWindowStartTime | undefined;
    set internalValue(value: RedisClusterMaintenancePolicyWeeklyMaintenanceWindowStartTime | undefined);
    private _hours?;
    get hours(): number;
    set hours(value: number);
    resetHours(): void;
    get hoursInput(): number | undefined;
    private _minutes?;
    get minutes(): number;
    set minutes(value: number);
    resetMinutes(): void;
    get minutesInput(): number | undefined;
    private _nanos?;
    get nanos(): number;
    set nanos(value: number);
    resetNanos(): void;
    get nanosInput(): number | undefined;
    private _seconds?;
    get seconds(): number;
    set seconds(value: number);
    resetSeconds(): void;
    get secondsInput(): number | undefined;
}
export interface RedisClusterMaintenancePolicyWeeklyMaintenanceWindow {
    /**
    * Required. The day of week that maintenance updates occur.
    *
    * - DAY_OF_WEEK_UNSPECIFIED: The day of the week is unspecified.
    * - MONDAY: Monday
    * - TUESDAY: Tuesday
    * - WEDNESDAY: Wednesday
    * - THURSDAY: Thursday
    * - FRIDAY: Friday
    * - SATURDAY: Saturday
    * - SUNDAY: Sunday Possible values: ["DAY_OF_WEEK_UNSPECIFIED", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"]
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/redis_cluster#day RedisCluster#day}
    */
    readonly day: string;
    /**
    * start_time block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/redis_cluster#start_time RedisCluster#start_time}
    */
    readonly startTime: RedisClusterMaintenancePolicyWeeklyMaintenanceWindowStartTime;
}
export declare function redisClusterMaintenancePolicyWeeklyMaintenanceWindowToTerraform(struct?: RedisClusterMaintenancePolicyWeeklyMaintenanceWindow | cdktf.IResolvable): any;
export declare function redisClusterMaintenancePolicyWeeklyMaintenanceWindowToHclTerraform(struct?: RedisClusterMaintenancePolicyWeeklyMaintenanceWindow | cdktf.IResolvable): any;
export declare class RedisClusterMaintenancePolicyWeeklyMaintenanceWindowOutputReference 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(): RedisClusterMaintenancePolicyWeeklyMaintenanceWindow | cdktf.IResolvable | undefined;
    set internalValue(value: RedisClusterMaintenancePolicyWeeklyMaintenanceWindow | cdktf.IResolvable | undefined);
    private _day?;
    get day(): string;
    set day(value: string);
    get dayInput(): string | undefined;
    get duration(): string;
    private _startTime;
    get startTime(): RedisClusterMaintenancePolicyWeeklyMaintenanceWindowStartTimeOutputReference;
    putStartTime(value: RedisClusterMaintenancePolicyWeeklyMaintenanceWindowStartTime): void;
    get startTimeInput(): RedisClusterMaintenancePolicyWeeklyMaintenanceWindowStartTime | undefined;
}
export declare class RedisClusterMaintenancePolicyWeeklyMaintenanceWindowList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: RedisClusterMaintenancePolicyWeeklyMaintenanceWindow[] | 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): RedisClusterMaintenancePolicyWeeklyMaintenanceWindowOutputReference;
}
export interface RedisClusterMaintenancePolicy {
    /**
    * weekly_maintenance_window block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/redis_cluster#weekly_maintenance_window RedisCluster#weekly_maintenance_window}
    */
    readonly weeklyMaintenanceWindow?: RedisClusterMaintenancePolicyWeeklyMaintenanceWindow[] | cdktf.IResolvable;
}
export declare function redisClusterMaintenancePolicyToTerraform(struct?: RedisClusterMaintenancePolicyOutputReference | RedisClusterMaintenancePolicy): any;
export declare function redisClusterMaintenancePolicyToHclTerraform(struct?: RedisClusterMaintenancePolicyOutputReference | RedisClusterMaintenancePolicy): any;
export declare class RedisClusterMaintenancePolicyOutputReference 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(): RedisClusterMaintenancePolicy | undefined;
    set internalValue(value: RedisClusterMaintenancePolicy | undefined);
    get createTime(): string;
    get updateTime(): string;
    private _weeklyMaintenanceWindow;
    get weeklyMaintenanceWindow(): RedisClusterMaintenancePolicyWeeklyMaintenanceWindowList;
    putWeeklyMaintenanceWindow(value: RedisClusterMaintenancePolicyWeeklyMaintenanceWindow[] | cdktf.IResolvable): void;
    resetWeeklyMaintenanceWindow(): void;
    get weeklyMaintenanceWindowInput(): cdktf.IResolvable | RedisClusterMaintenancePolicyWeeklyMaintenanceWindow[] | undefined;
}
export interface RedisClusterPersistenceConfigAofConfig {
    /**
    * Optional. Available fsync modes.
    *
    * - NO - Do not explicitly call fsync(). Rely on OS defaults.
    * - EVERYSEC - Call fsync() once per second in a background thread. A balance between performance and durability.
    * - ALWAYS - Call fsync() for earch write command. Possible values: ["APPEND_FSYNC_UNSPECIFIED", "NO", "EVERYSEC", "ALWAYS"]
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/redis_cluster#append_fsync RedisCluster#append_fsync}
    */
    readonly appendFsync?: string;
}
export declare function redisClusterPersistenceConfigAofConfigToTerraform(struct?: RedisClusterPersistenceConfigAofConfigOutputReference | RedisClusterPersistenceConfigAofConfig): any;
export declare function redisClusterPersistenceConfigAofConfigToHclTerraform(struct?: RedisClusterPersistenceConfigAofConfigOutputReference | RedisClusterPersistenceConfigAofConfig): any;
export declare class RedisClusterPersistenceConfigAofConfigOutputReference 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(): RedisClusterPersistenceConfigAofConfig | undefined;
    set internalValue(value: RedisClusterPersistenceConfigAofConfig | undefined);
    private _appendFsync?;
    get appendFsync(): string;
    set appendFsync(value: string);
    resetAppendFsync(): void;
    get appendFsyncInput(): string | undefined;
}
export interface RedisClusterPersistenceConfigRdbConfig {
    /**
    * Optional. Available snapshot periods for scheduling.
    *
    * - ONE_HOUR:	Snapshot every 1 hour.
    * - SIX_HOURS:	Snapshot every 6 hours.
    * - TWELVE_HOURS:	Snapshot every 12 hours.
    * - TWENTY_FOUR_HOURS:	Snapshot every 24 hours. Possible values: ["SNAPSHOT_PERIOD_UNSPECIFIED", "ONE_HOUR", "SIX_HOURS", "TWELVE_HOURS", "TWENTY_FOUR_HOURS"]
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/redis_cluster#rdb_snapshot_period RedisCluster#rdb_snapshot_period}
    */
    readonly rdbSnapshotPeriod?: string;
    /**
    * The time that the first snapshot was/will be attempted, and to which
    * future snapshots will be aligned.
    * If not provided, the current time will be used.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/redis_cluster#rdb_snapshot_start_time RedisCluster#rdb_snapshot_start_time}
    */
    readonly rdbSnapshotStartTime?: string;
}
export declare function redisClusterPersistenceConfigRdbConfigToTerraform(struct?: RedisClusterPersistenceConfigRdbConfigOutputReference | RedisClusterPersistenceConfigRdbConfig): any;
export declare function redisClusterPersistenceConfigRdbConfigToHclTerraform(struct?: RedisClusterPersistenceConfigRdbConfigOutputReference | RedisClusterPersistenceConfigRdbConfig): any;
export declare class RedisClusterPersistenceConfigRdbConfigOutputReference 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(): RedisClusterPersistenceConfigRdbConfig | undefined;
    set internalValue(value: RedisClusterPersistenceConfigRdbConfig | undefined);
    private _rdbSnapshotPeriod?;
    get rdbSnapshotPeriod(): string;
    set rdbSnapshotPeriod(value: string);
    resetRdbSnapshotPeriod(): void;
    get rdbSnapshotPeriodInput(): string | undefined;
    private _rdbSnapshotStartTime?;
    get rdbSnapshotStartTime(): string;
    set rdbSnapshotStartTime(value: string);
    resetRdbSnapshotStartTime(): void;
    get rdbSnapshotStartTimeInput(): string | undefined;
}
export interface RedisClusterPersistenceConfig {
    /**
    * Optional. Controls whether Persistence features are enabled. If not provided, the existing value will be used.
    *
    * - DISABLED: 	Persistence (both backup and restore) is disabled for the cluster.
    * - RDB: RDB based Persistence is enabled.
    * - AOF: AOF based Persistence is enabled. Possible values: ["PERSISTENCE_MODE_UNSPECIFIED", "DISABLED", "RDB", "AOF"]
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/redis_cluster#mode RedisCluster#mode}
    */
    readonly mode?: string;
    /**
    * aof_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/redis_cluster#aof_config RedisCluster#aof_config}
    */
    readonly aofConfig?: RedisClusterPersistenceConfigAofConfig;
    /**
    * rdb_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/redis_cluster#rdb_config RedisCluster#rdb_config}
    */
    readonly rdbConfig?: RedisClusterPersistenceConfigRdbConfig;
}
export declare function redisClusterPersistenceConfigToTerraform(struct?: RedisClusterPersistenceConfigOutputReference | RedisClusterPersistenceConfig): any;
export declare function redisClusterPersistenceConfigToHclTerraform(struct?: RedisClusterPersistenceConfigOutputReference | RedisClusterPersistenceConfig): any;
export declare class RedisClusterPersistenceConfigOutputReference 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(): RedisClusterPersistenceConfig | undefined;
    set internalValue(value: RedisClusterPersistenceConfig | undefined);
    private _mode?;
    get mode(): string;
    set mode(value: string);
    resetMode(): void;
    get modeInput(): string | undefined;
    private _aofConfig;
    get aofConfig(): RedisClusterPersistenceConfigAofConfigOutputReference;
    putAofConfig(value: RedisClusterPersistenceConfigAofConfig): void;
    resetAofConfig(): void;
    get aofConfigInput(): RedisClusterPersistenceConfigAofConfig | undefined;
    private _rdbConfig;
    get rdbConfig(): RedisClusterPersistenceConfigRdbConfigOutputReference;
    putRdbConfig(value: RedisClusterPersistenceConfigRdbConfig): void;
    resetRdbConfig(): void;
    get rdbConfigInput(): RedisClusterPersistenceConfigRdbConfig | undefined;
}
export interface RedisClusterPscConfigs {
    /**
    * Required. The consumer network where the network address of
    * the discovery endpoint will be reserved, in the form of
    * projects/{network_project_id_or_number}/global/networks/{network_id}.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/redis_cluster#network RedisCluster#network}
    */
    readonly network: string;
}
export declare function redisClusterPscConfigsToTerraform(struct?: RedisClusterPscConfigs | cdktf.IResolvable): any;
export declare function redisClusterPscConfigsToHclTerraform(struct?: RedisClusterPscConfigs | cdktf.IResolvable): any;
export declare class RedisClusterPscConfigsOutputReference 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(): RedisClusterPscConfigs | cdktf.IResolvable | undefined;
    set internalValue(value: RedisClusterPscConfigs | cdktf.IResolvable | undefined);
    private _network?;
    get network(): string;
    set network(value: string);
    get networkInput(): string | undefined;
}
export declare class RedisClusterPscConfigsList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: RedisClusterPscConfigs[] | 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): RedisClusterPscConfigsOutputReference;
}
export interface RedisClusterTimeouts {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/redis_cluster#create RedisCluster#create}
    */
    readonly create?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/redis_cluster#delete RedisCluster#delete}
    */
    readonly delete?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/redis_cluster#update RedisCluster#update}
    */
    readonly update?: string;
}
export declare function redisClusterTimeoutsToTerraform(struct?: RedisClusterTimeouts | cdktf.IResolvable): any;
export declare function redisClusterTimeoutsToHclTerraform(struct?: RedisClusterTimeouts | cdktf.IResolvable): any;
export declare class RedisClusterTimeoutsOutputReference 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(): RedisClusterTimeouts | cdktf.IResolvable | undefined;
    set internalValue(value: RedisClusterTimeouts | 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;
}
export interface RedisClusterZoneDistributionConfig {
    /**
    * Immutable. The mode for zone distribution for Memorystore Redis cluster.
    * If not provided, MULTI_ZONE will be used as default Possible values: ["MULTI_ZONE", "SINGLE_ZONE"]
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/redis_cluster#mode RedisCluster#mode}
    */
    readonly mode?: string;
    /**
    * Immutable. The zone for single zone Memorystore Redis cluster.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/redis_cluster#zone RedisCluster#zone}
    */
    readonly zone?: string;
}
export declare function redisClusterZoneDistributionConfigToTerraform(struct?: RedisClusterZoneDistributionConfigOutputReference | RedisClusterZoneDistributionConfig): any;
export declare function redisClusterZoneDistributionConfigToHclTerraform(struct?: RedisClusterZoneDistributionConfigOutputReference | RedisClusterZoneDistributionConfig): any;
export declare class RedisClusterZoneDistributionConfigOutputReference 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(): RedisClusterZoneDistributionConfig | undefined;
    set internalValue(value: RedisClusterZoneDistributionConfig | undefined);
    private _mode?;
    get mode(): string;
    set mode(value: string);
    resetMode(): void;
    get modeInput(): string | undefined;
    private _zone?;
    get zone(): string;
    set zone(value: string);
    resetZone(): void;
    get zoneInput(): string | undefined;
}
/**
* Represents a {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/redis_cluster google_redis_cluster}
*/
export declare class RedisCluster extends cdktf.TerraformResource {
    static readonly tfResourceType = "google_redis_cluster";
    /**
    * Generates CDKTF code for importing a RedisCluster 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 RedisCluster to import
    * @param importFromId The id of the existing RedisCluster that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/redis_cluster#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the RedisCluster 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.27.0/docs/resources/redis_cluster google_redis_cluster} 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 RedisClusterConfig
    */
    constructor(scope: Construct, id: string, config: RedisClusterConfig);
    private _authorizationMode?;
    get authorizationMode(): string;
    set authorizationMode(value: string);
    resetAuthorizationMode(): void;
    get authorizationModeInput(): string | undefined;
    get createTime(): string;
    private _deletionProtectionEnabled?;
    get deletionProtectionEnabled(): boolean | cdktf.IResolvable;
    set deletionProtectionEnabled(value: boolean | cdktf.IResolvable);
    resetDeletionProtectionEnabled(): void;
    get deletionProtectionEnabledInput(): boolean | cdktf.IResolvable | undefined;
    private _discoveryEndpoints;
    get discoveryEndpoints(): RedisClusterDiscoveryEndpointsList;
    private _id?;
    get id(): string;
    set id(value: string);
    resetId(): void;
    get idInput(): string | undefined;
    private _kmsKey?;
    get kmsKey(): string;
    set kmsKey(value: string);
    resetKmsKey(): void;
    get kmsKeyInput(): string | undefined;
    private _maintenanceSchedule;
    get maintenanceSchedule(): RedisClusterMaintenanceScheduleList;
    private _name?;
    get name(): string;
    set name(value: string);
    resetName(): void;
    get nameInput(): string | undefined;
    private _nodeType?;
    get nodeType(): string;
    set nodeType(value: string);
    resetNodeType(): void;
    get nodeTypeInput(): string | undefined;
    get preciseSizeGb(): number;
    private _project?;
    get project(): string;
    set project(value: string);
    resetProject(): void;
    get projectInput(): string | undefined;
    private _pscConnections;
    get pscConnections(): RedisClusterPscConnectionsList;
    private _pscServiceAttachments;
    get pscServiceAttachments(): RedisClusterPscServiceAttachmentsList;
    private _redisConfigs?;
    get redisConfigs(): {
        [key: string]: string;
    };
    set redisConfigs(value: {
        [key: string]: string;
    });
    resetRedisConfigs(): void;
    get redisConfigsInput(): {
        [key: string]: string;
    } | undefined;
    private _region?;
    get region(): string;
    set region(value: string);
    resetRegion(): void;
    get regionInput(): string | undefined;
    private _replicaCount?;
    get replicaCount(): number;
    set replicaCount(value: number);
    resetReplicaCount(): void;
    get replicaCountInput(): number | undefined;
    private _shardCount?;
    get shardCount(): number;
    set shardCount(value: number);
    get shardCountInput(): number | undefined;
    get sizeGb(): number;
    get state(): string;
    private _stateInfo;
    get stateInfo(): RedisClusterStateInfoList;
    private _transitEncryptionMode?;
    get transitEncryptionMode(): string;
    set transitEncryptionMode(value: string);
    resetTransitEncryptionMode(): void;
    get transitEncryptionModeInput(): string | undefined;
    get uid(): string;
    private _crossClusterReplicationConfig;
    get crossClusterReplicationConfig(): RedisClusterCrossClusterReplicationConfigOutputReference;
    putCrossClusterReplicationConfig(value: RedisClusterCrossClusterReplicationConfig): void;
    resetCrossClusterReplicationConfig(): void;
    get crossClusterReplicationConfigInput(): RedisClusterCrossClusterReplicationConfig | undefined;
    private _maintenancePolicy;
    get maintenancePolicy(): RedisClusterMaintenancePolicyOutputReference;
    putMaintenancePolicy(value: RedisClusterMaintenancePolicy): void;
    resetMaintenancePolicy(): void;
    get maintenancePolicyInput(): RedisClusterMaintenancePolicy | undefined;
    private _persistenceConfig;
    get persistenceConfig(): RedisClusterPersistenceConfigOutputReference;
    putPersistenceConfig(value: RedisClusterPersistenceConfig): void;
    resetPersistenceConfig(): void;
    get persistenceConfigInput(): RedisClusterPersistenceConfig | undefined;
    private _pscConfigs;
    get pscConfigs(): RedisClusterPscConfigsList;
    putPscConfigs(value: RedisClusterPscConfigs[] | cdktf.IResolvable): void;
    resetPscConfigs(): void;
    get pscConfigsInput(): cdktf.IResolvable | RedisClusterPscConfigs[] | undefined;
    private _timeouts;
    get timeouts(): RedisClusterTimeoutsOutputReference;
    putTimeouts(value: RedisClusterTimeouts): void;
    resetTimeouts(): void;
    get timeoutsInput(): cdktf.IResolvable | RedisClusterTimeouts | undefined;
    private _zoneDistributionConfig;
    get zoneDistributionConfig(): RedisClusterZoneDistributionConfigOutputReference;
    putZoneDistributionConfig(value: RedisClusterZoneDistributionConfig): void;
    resetZoneDistributionConfig(): void;
    get zoneDistributionConfigInput(): RedisClusterZoneDistributionConfig | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
