import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
import * as enums from "../types/enums";
/**
 * The AWS::MemoryDB::Cluster resource creates an Amazon MemoryDB Cluster.
 */
export declare class Cluster extends pulumi.CustomResource {
    /**
     * Get an existing Cluster resource's state with the given name, ID, and optional extra
     * properties used to qualify the lookup.
     *
     * @param name The _unique_ name of the resulting resource.
     * @param id The _unique_ provider ID of the resource to lookup.
     * @param opts Optional settings to control the behavior of the CustomResource.
     */
    static get(name: string, id: pulumi.Input<pulumi.ID>, opts?: pulumi.CustomResourceOptions): Cluster;
    /**
     * Returns true if the given object is an instance of Cluster.  This is designed to work even
     * when multiple copies of the Pulumi SDK have been loaded into the same process.
     */
    static isInstance(obj: any): obj is Cluster;
    /**
     * The name of the Access Control List to associate with the cluster.
     */
    readonly aclName: pulumi.Output<string>;
    /**
     * The Amazon Resource Name (ARN) of the cluster.
     */
    readonly arn: pulumi.Output<string>;
    /**
     * A flag that enables automatic minor version upgrade when set to true.
     *
     * You cannot modify the value of AutoMinorVersionUpgrade after the cluster is created. To enable AutoMinorVersionUpgrade on a cluster you must set AutoMinorVersionUpgrade to true when you create a cluster.
     */
    readonly autoMinorVersionUpgrade: pulumi.Output<boolean | undefined>;
    /**
     * The cluster endpoint.
     */
    readonly clusterEndpoint: pulumi.Output<outputs.memorydb.ClusterEndpoint | undefined>;
    /**
     * The name of the cluster. This value must be unique as it also serves as the cluster identifier.
     */
    readonly clusterName: pulumi.Output<string>;
    /**
     * Enables data tiering. Data tiering is only supported for clusters using the r6gd node type. This parameter must be set when using r6gd nodes.
     */
    readonly dataTiering: pulumi.Output<enums.memorydb.ClusterDataTieringStatus | undefined>;
    /**
     * An optional description of the cluster.
     */
    readonly description: pulumi.Output<string | undefined>;
    /**
     * The engine type used by the cluster.
     */
    readonly engine: pulumi.Output<string | undefined>;
    /**
     * The Redis engine version used by the cluster.
     */
    readonly engineVersion: pulumi.Output<string | undefined>;
    /**
     * The user-supplied name of a final cluster snapshot. This is the unique name that identifies the snapshot. MemoryDB creates the snapshot, and then deletes the cluster immediately afterward.
     */
    readonly finalSnapshotName: pulumi.Output<string | undefined>;
    /**
     * For clusters wth dual stack NetworkType, IpDiscovery controls the Ip protocol (ipv4 or ipv6) returned by the engine commands such as `cluster info` and `cluster nodes` which are used by clients to connect to the nodes in the cluster.
     */
    readonly ipDiscovery: pulumi.Output<enums.memorydb.ClusterSupportedIpDiscoveryTypes | undefined>;
    /**
     * The ID of the KMS key used to encrypt the cluster.
     */
    readonly kmsKeyId: pulumi.Output<string | undefined>;
    /**
     * Specifies the weekly time range during which maintenance on the cluster is performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance window is a 60 minute period.
     */
    readonly maintenanceWindow: pulumi.Output<string | undefined>;
    /**
     * The name of the Global Datastore, it is generated by MemoryDB adding a prefix to MultiRegionClusterNameSuffix.
     */
    readonly multiRegionClusterName: pulumi.Output<string | undefined>;
    /**
     * Must be either ipv4 | ipv6 | dual_stack.
     */
    readonly networkType: pulumi.Output<enums.memorydb.ClusterSupportedNetworkTypes | undefined>;
    /**
     * The compute and memory capacity of the nodes in the cluster.
     */
    readonly nodeType: pulumi.Output<string>;
    /**
     * The number of replicas to apply to each shard. The limit is 5.
     */
    readonly numReplicasPerShard: pulumi.Output<number | undefined>;
    /**
     * The number of shards the cluster will contain.
     */
    readonly numShards: pulumi.Output<number | undefined>;
    /**
     * The name of the parameter group associated with the cluster.
     */
    readonly parameterGroupName: pulumi.Output<string | undefined>;
    /**
     * The status of the parameter group used by the cluster.
     */
    readonly parameterGroupStatus: pulumi.Output<string>;
    /**
     * The port number on which each member of the cluster accepts connections.
     */
    readonly port: pulumi.Output<number | undefined>;
    /**
     * One or more Amazon VPC security groups associated with this cluster.
     */
    readonly securityGroupIds: pulumi.Output<string[] | undefined>;
    /**
     * A list of Amazon Resource Names (ARN) that uniquely identify the RDB snapshot files stored in Amazon S3. The snapshot files are used to populate the new cluster. The Amazon S3 object name in the ARN cannot contain any commas.
     */
    readonly snapshotArns: pulumi.Output<string[] | undefined>;
    /**
     * The name of a snapshot from which to restore data into the new cluster. The snapshot status changes to restoring while the new cluster is being created.
     */
    readonly snapshotName: pulumi.Output<string | undefined>;
    /**
     * The number of days for which MemoryDB retains automatic snapshots before deleting them. For example, if you set SnapshotRetentionLimit to 5, a snapshot that was taken today is retained for 5 days before being deleted.
     */
    readonly snapshotRetentionLimit: pulumi.Output<number | undefined>;
    /**
     * The daily time range (in UTC) during which MemoryDB begins taking a daily snapshot of your cluster.
     */
    readonly snapshotWindow: pulumi.Output<string | undefined>;
    /**
     * The Amazon Resource Name (ARN) of the Amazon Simple Notification Service (SNS) topic to which notifications are sent.
     */
    readonly snsTopicArn: pulumi.Output<string | undefined>;
    /**
     * The status of the Amazon SNS notification topic. Notifications are sent only if the status is enabled.
     */
    readonly snsTopicStatus: pulumi.Output<string | undefined>;
    /**
     * The status of the cluster. For example, Available, Updating, Creating.
     */
    readonly status: pulumi.Output<string>;
    /**
     * The name of the subnet group to be used for the cluster.
     */
    readonly subnetGroupName: pulumi.Output<string | undefined>;
    /**
     * An array of key-value pairs to apply to this cluster.
     */
    readonly tags: pulumi.Output<outputs.Tag[] | undefined>;
    /**
     * A flag that enables in-transit encryption when set to true.
     *
     * You cannot modify the value of TransitEncryptionEnabled after the cluster is created. To enable in-transit encryption on a cluster you must set TransitEncryptionEnabled to true when you create a cluster.
     */
    readonly tlsEnabled: pulumi.Output<boolean | undefined>;
    /**
     * Create a Cluster resource with the given unique name, arguments, and options.
     *
     * @param name The _unique_ name of the resource.
     * @param args The arguments to use to populate this resource's properties.
     * @param opts A bag of options that control this resource's behavior.
     */
    constructor(name: string, args: ClusterArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * The set of arguments for constructing a Cluster resource.
 */
export interface ClusterArgs {
    /**
     * The name of the Access Control List to associate with the cluster.
     */
    aclName: pulumi.Input<string>;
    /**
     * A flag that enables automatic minor version upgrade when set to true.
     *
     * You cannot modify the value of AutoMinorVersionUpgrade after the cluster is created. To enable AutoMinorVersionUpgrade on a cluster you must set AutoMinorVersionUpgrade to true when you create a cluster.
     */
    autoMinorVersionUpgrade?: pulumi.Input<boolean>;
    /**
     * The cluster endpoint.
     */
    clusterEndpoint?: pulumi.Input<inputs.memorydb.ClusterEndpointArgs>;
    /**
     * The name of the cluster. This value must be unique as it also serves as the cluster identifier.
     */
    clusterName?: pulumi.Input<string>;
    /**
     * Enables data tiering. Data tiering is only supported for clusters using the r6gd node type. This parameter must be set when using r6gd nodes.
     */
    dataTiering?: pulumi.Input<enums.memorydb.ClusterDataTieringStatus>;
    /**
     * An optional description of the cluster.
     */
    description?: pulumi.Input<string>;
    /**
     * The engine type used by the cluster.
     */
    engine?: pulumi.Input<string>;
    /**
     * The Redis engine version used by the cluster.
     */
    engineVersion?: pulumi.Input<string>;
    /**
     * The user-supplied name of a final cluster snapshot. This is the unique name that identifies the snapshot. MemoryDB creates the snapshot, and then deletes the cluster immediately afterward.
     */
    finalSnapshotName?: pulumi.Input<string>;
    /**
     * For clusters wth dual stack NetworkType, IpDiscovery controls the Ip protocol (ipv4 or ipv6) returned by the engine commands such as `cluster info` and `cluster nodes` which are used by clients to connect to the nodes in the cluster.
     */
    ipDiscovery?: pulumi.Input<enums.memorydb.ClusterSupportedIpDiscoveryTypes>;
    /**
     * The ID of the KMS key used to encrypt the cluster.
     */
    kmsKeyId?: pulumi.Input<string>;
    /**
     * Specifies the weekly time range during which maintenance on the cluster is performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance window is a 60 minute period.
     */
    maintenanceWindow?: pulumi.Input<string>;
    /**
     * The name of the Global Datastore, it is generated by MemoryDB adding a prefix to MultiRegionClusterNameSuffix.
     */
    multiRegionClusterName?: pulumi.Input<string>;
    /**
     * Must be either ipv4 | ipv6 | dual_stack.
     */
    networkType?: pulumi.Input<enums.memorydb.ClusterSupportedNetworkTypes>;
    /**
     * The compute and memory capacity of the nodes in the cluster.
     */
    nodeType: pulumi.Input<string>;
    /**
     * The number of replicas to apply to each shard. The limit is 5.
     */
    numReplicasPerShard?: pulumi.Input<number>;
    /**
     * The number of shards the cluster will contain.
     */
    numShards?: pulumi.Input<number>;
    /**
     * The name of the parameter group associated with the cluster.
     */
    parameterGroupName?: pulumi.Input<string>;
    /**
     * The port number on which each member of the cluster accepts connections.
     */
    port?: pulumi.Input<number>;
    /**
     * One or more Amazon VPC security groups associated with this cluster.
     */
    securityGroupIds?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * A list of Amazon Resource Names (ARN) that uniquely identify the RDB snapshot files stored in Amazon S3. The snapshot files are used to populate the new cluster. The Amazon S3 object name in the ARN cannot contain any commas.
     */
    snapshotArns?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * The name of a snapshot from which to restore data into the new cluster. The snapshot status changes to restoring while the new cluster is being created.
     */
    snapshotName?: pulumi.Input<string>;
    /**
     * The number of days for which MemoryDB retains automatic snapshots before deleting them. For example, if you set SnapshotRetentionLimit to 5, a snapshot that was taken today is retained for 5 days before being deleted.
     */
    snapshotRetentionLimit?: pulumi.Input<number>;
    /**
     * The daily time range (in UTC) during which MemoryDB begins taking a daily snapshot of your cluster.
     */
    snapshotWindow?: pulumi.Input<string>;
    /**
     * The Amazon Resource Name (ARN) of the Amazon Simple Notification Service (SNS) topic to which notifications are sent.
     */
    snsTopicArn?: pulumi.Input<string>;
    /**
     * The status of the Amazon SNS notification topic. Notifications are sent only if the status is enabled.
     */
    snsTopicStatus?: pulumi.Input<string>;
    /**
     * The name of the subnet group to be used for the cluster.
     */
    subnetGroupName?: pulumi.Input<string>;
    /**
     * An array of key-value pairs to apply to this cluster.
     */
    tags?: pulumi.Input<pulumi.Input<inputs.TagArgs>[]>;
    /**
     * A flag that enables in-transit encryption when set to true.
     *
     * You cannot modify the value of TransitEncryptionEnabled after the cluster is created. To enable in-transit encryption on a cluster you must set TransitEncryptionEnabled to true when you create a cluster.
     */
    tlsEnabled?: pulumi.Input<boolean>;
}
