import * as aws from '@pulumi/aws';
import * as awsx from '@pulumi/awsx';
import * as pulumi from '@pulumi/pulumi';
import { DatabaseReplica } from './database-replica';
import { Ec2SSMConnect } from './ec2-ssm-connect';
import { Password } from '../password';
export declare namespace Database {
    type Instance = {
        dbName?: pulumi.Input<string>;
        engineVersion?: pulumi.Input<string>;
        multiAz?: pulumi.Input<boolean>;
        instanceClass?: pulumi.Input<string>;
        allowMajorVersionUpgrade?: pulumi.Input<boolean>;
        autoMinorVersionUpgrade?: pulumi.Input<boolean>;
        applyImmediately?: pulumi.Input<boolean>;
        skipFinalSnapshot?: pulumi.Input<boolean>;
    };
    type Credentials = {
        username?: pulumi.Input<string>;
        password?: pulumi.Input<string>;
    };
    type Storage = {
        allocatedStorage?: pulumi.Input<number>;
        maxAllocatedStorage?: pulumi.Input<number>;
    };
    type ReplicaConfig = Partial<Omit<DatabaseReplica.Args, 'replicateSourceDb' | keyof DatabaseReplica.Security>> & {
        /**
         * Enables monitoring for the replica instance and
         * reuses the same monitoring role from the primary instance
         * if you don't provide a custom `monitoringRole`.
         */
        enableMonitoring?: pulumi.Input<boolean>;
    };
    type SSMConnectConfig = Omit<Ec2SSMConnect.Args, 'vpc'>;
    type Args = Instance & Credentials & Storage & {
        vpc: pulumi.Input<awsx.ec2.Vpc>;
        enableMonitoring?: pulumi.Input<boolean>;
        snapshotIdentifier?: pulumi.Input<string>;
        parameterGroupName?: pulumi.Input<string>;
        kmsKeyId?: pulumi.Input<string>;
        replicaConfigs?: Map<string, ReplicaConfig>;
        enableSSMConnect?: pulumi.Input<boolean>;
        ssmConnectConfig?: SSMConnectConfig;
        tags?: pulumi.Input<{
            [key: string]: pulumi.Input<string>;
        }>;
    };
}
export declare class Database extends pulumi.ComponentResource {
    name: string;
    instance: aws.rds.Instance;
    vpc: pulumi.Output<awsx.ec2.Vpc>;
    dbSubnetGroup: aws.rds.SubnetGroup;
    dbSecurityGroup: aws.ec2.SecurityGroup;
    password: Password;
    kmsKeyId: pulumi.Output<string>;
    monitoringRole?: aws.iam.Role;
    encryptedSnapshotCopy?: aws.rds.SnapshotCopy;
    replicas?: DatabaseReplica[];
    ec2SSMConnect?: Ec2SSMConnect;
    constructor(name: string, args: Database.Args, opts?: pulumi.ComponentResourceOptions);
    private createSubnetGroup;
    private createSecurityGroup;
    private createEncryptionKey;
    private createMonitoringRole;
    private createEncryptedSnapshotCopy;
    private createDatabaseReplica;
    private createEc2SSMConnect;
    private createDatabaseInstance;
}
//# sourceMappingURL=index.d.ts.map