import { Duration, ResourceProps } from 'aws-cdk-lib';
import * as ec2 from 'aws-cdk-lib/aws-ec2';
import * as events from 'aws-cdk-lib/aws-events';
import * as lambda from 'aws-cdk-lib/aws-lambda';
import * as s3 from 'aws-cdk-lib/aws-s3';
import { Construct } from 'constructs';
/**
 * Properties for the RDSMySQLBackupLambda construct.
 */
export interface RDSMySQLBackupLambdaProps extends ResourceProps {
    /**
     * VPC used by the RDS instance.
     */
    readonly rdsVpc: ec2.IVpc;
    /**
     * VPC subnet group used by the RDS instance.
     */
    readonly rdsVpcSubnets: ec2.SelectedSubnets;
    /**
     * Name of RDS instance to backup.
     */
    readonly rdsInstanceName: string;
    /**
     * Endpoint address of the RDS instance.
     */
    readonly rdsInstanceEndpointAddress: string;
    /**
     * Port of the RDS instance.
     */
    readonly rdsInstancePort?: number;
    /**
     * Security group ID for the RDS instance.
     */
    readonly rdsSecurityGroupId: string;
    /**
     * User to connect to the RDS instance.
     */
    readonly dbUser: string;
    /**
     * Password to connect to the RDS instance.
     */
    readonly dbPassword: string;
    /**
     * Name of the database to backup.
     */
    readonly dbName: string;
    /**
     * Name of the lambda function that will be created.
     *
     * @default - [db-instance-identifier]-rds-backup-lambda
     */
    readonly lambdaFunctionName?: string;
    /**
     * Timeout value for the backup lambda function.
     *
     * @default - 5 minutes
     */
    readonly lambdaTimeout?: Duration;
    /**
     * Name of the S3 bucket to store the RDS backups.
     *
     * @default - [db-instance-identifier]-rds-backup
     */
    readonly s3BucketName?: string;
    /**
     * Schedule for the lambda function to run.
     *
     * @default - Every day at 00:00 UTC
     */
    readonly scheduleRule?: events.Schedule;
}
export declare class RDSMySQLBackupLambda extends Construct {
    /**
     * The lambda function to backup the RDS instance.
     */
    readonly lambdaFunction: lambda.Function;
    /**
     * The S3 bucket created to store the RDS backups.
     */
    readonly s3Bucket: s3.Bucket;
    constructor(scope: Construct, id: string, props: RDSMySQLBackupLambdaProps);
    private _createBucket;
    private _createFunctionRole;
    private _createFunctionSecurityGroup;
    private _createLambdaFunction;
    private _updateRdsInstanceSecurityGroup;
    private _addScheduledEventRule;
    private _hasS3VpcEndpoint;
    private _fetchRouteTableIds;
    private _createS3VpcEndpoint;
}
