import type { NonEmptyString } from "../../../common/CustomTypes/NonEmptyString";
import type { NaturalNumber } from "../../../common/CustomTypes/Numerics";
import type { Arn } from "../../CustomTypes/Arn";
import type { AwsResourceCommon, CloudFormationTags } from "../common";
import type { CloudFormationValue } from "../IntrinsicFunctions";
import type { DBRole } from "./common";
export declare type DBClusterType = 'AWS::RDS::DBCluster';
export interface DBCluster extends AwsResourceCommon {
    Type: DBClusterType;
    Properties: DBClusterProperties;
}
export interface DBClusterProperties {
    AssociatedRoles?: DBRole[];
    AvailabilityZones?: CloudFormationValue[];
    BacktrackWindow?: NaturalNumber | 0;
    BackupRetentionPeriod?: NaturalNumber;
    DatabaseName?: NonEmptyString;
    DBClusterIdentifier?: CloudFormationValue;
    DBClusterParameterGroupName?: CloudFormationValue;
    DBSubnetGroupName?: CloudFormationValue;
    DeletionProtection?: boolean;
    EnableCloudwatchLogsExports?: string[];
    EnableHttpEndpoint?: boolean;
    EnableIAMDatabaseAuthentication?: boolean;
    Engine: ClusterEngine;
    EngineMode?: EngineMode;
    EngineVersion?: string;
    GlobalClusterIdentifier?: CloudFormationValue;
    KmsKeyId?: CloudFormationValue<Arn>;
    MasterUsername?: CloudFormationValue;
    MasterUserPassword?: CloudFormationValue;
    Port?: NaturalNumber;
    PreferredBackupWindow?: string;
    PreferredMaintenanceWindow?: string;
    ReplicationSourceIdentifier?: CloudFormationValue<Arn>;
    RestoreType?: RestoreType;
    ScalingConfiguration?: ScalingConfiguration;
    SnapshotIdentifier?: CloudFormationValue;
    SourceDBClusterIdentifier?: CloudFormationValue;
    SourceRegion?: CloudFormationValue;
    StorageEncrypted?: boolean;
    Tags?: CloudFormationTags;
    UseLatestRestorableTime?: boolean;
    VpcSecurityGroupIds?: CloudFormationValue[];
}
export declare type ClusterEngine = 'aurora-mysql' | 'aurora-postgresql' | 'aurora';
export declare type EngineMode = 'global' | 'multimaster' | 'parallelquery' | 'provisioned' | 'serverless';
export declare type RestoreType = 'copy-on-write' | 'full-copy';
export interface ScalingConfiguration {
    AutoPause?: boolean;
    MaxCapacity?: NaturalNumber;
    MinCapacity?: NaturalNumber;
    SecondsUntilAutoPause?: NaturalNumber;
}
