import type { NonEmptyString } from "../../../common/CustomTypes/NonEmptyString";
import type { Integer, NaturalNumber } from "../../../common/CustomTypes/Numerics";
import type { Arn } from "../../CustomTypes/Arn";
import type { AwsResourceCommon, CloudFormationTags } from "../common";
import type { CloudFormationString, CloudFormationValue } from "../IntrinsicFunctions";
import type { DBRole } from "./common";
export declare type DBInstanceType = 'AWS::RDS::DBInstance';
export interface DBInstance extends AwsResourceCommon {
    Type: DBInstanceType;
    Properties: DBInstanceProperties;
}
export interface DBInstanceProperties {
    AllocatedStorage?: NaturalNumber | string;
    AllowMajorVersionUpgrade?: boolean;
    AssociatedRoles?: DBRole[];
    AutoMinorVersionUpgrade?: boolean;
    AvailabilityZone?: CloudFormationValue;
    BackupRetentionPeriod?: NaturalNumber | 0;
    CACertificateIdentifier?: string;
    CharacterSetName?: string;
    CopyTagsToSnapshot?: boolean;
    DBClusterIdentifier?: CloudFormationValue;
    DBInstanceClass: string;
    DBInstanceIdentifier?: CloudFormationValue;
    DBName?: NonEmptyString;
    DBParameterGroupName?: CloudFormationValue;
    DBSecurityGroups?: CloudFormationValue[];
    DBSnapshotIdentifier?: CloudFormationValue<Arn>;
    DBSubnetGroupName?: CloudFormationValue;
    DeleteAutomatedBackups?: boolean;
    DeletionProtection?: boolean;
    Domain?: string;
    DomainIAMRoleName?: string;
    EnableCloudwatchLogsExports?: string;
    EnableIAMDatabaseAuthentication?: boolean;
    EnablePerformanceInsights?: boolean;
    Engine: InstanceEngine;
    EngineVersion?: string;
    Iops?: Integer;
    KmsKeyId?: CloudFormationValue<Arn>;
    LicenseModel?: LicenseModel;
    MasterUsername?: CloudFormationValue;
    MasterUserPassword?: CloudFormationValue;
    MaxAllocatedStorage?: NaturalNumber;
    MonitoringInterval?: MonitoringInterval;
    MonitoringRoleArn?: CloudFormationValue<Arn>;
    MultiAZ?: boolean;
    OptionGroupName?: CloudFormationString;
    PerformanceInsightsKMSKeyId?: CloudFormationString;
    PerformanceInsightsRetentionPeriod?: PerformanceInsightsRetentionPeriod;
    Port?: NaturalNumber;
    PreferredBackupWindow?: string;
    PreferredMaintenanceWindow?: string;
    ProcessorFeatures?: ProcessorFeature[];
    PromotionTier?: NaturalNumber | 0;
    PubliclyAccessible?: boolean;
    SourceDBInstanceIdentifier?: CloudFormationValue;
    SourceRegion?: CloudFormationValue;
    StorageEncrypted?: boolean;
    StorageType?: StorageType;
    Tags?: CloudFormationTags;
    Timezone?: string;
    UseDefaultProcessorFeatures?: boolean;
    VPCSecurityGroups?: CloudFormationValue[];
}
export declare type InstanceEngine = 'aurora-mysql' | 'aurora-postgresql' | 'aurora' | 'mariadb' | 'mysql' | 'oracle-ee' | 'oracle-se' | 'oracle-se1' | 'oracle-se2' | 'postgres' | 'sqlserver-ee' | 'sqlserver-ex' | 'sqlserver-se' | 'sqlserver-web';
export declare type LicenseModel = 'bring-your-own-license' | 'general-public-license' | 'license-included';
export declare type MonitoringInterval = 0 | 1 | 5 | 10 | 15 | 30 | 60;
export declare type PerformanceInsightsRetentionPeriod = 2 | 731;
export interface ProcessorFeature {
    Name?: ProcessorFeatureName;
    Value?: Integer | string;
}
export declare type ProcessorFeatureName = 'coreCount' | 'threadsPerCore';
export declare type StorageType = 'gp2' | 'io1' | 'standard';
