import { Duration } from "aws-cdk-lib";
import { IVpc, SubnetSelection } from "aws-cdk-lib/aws-ec2";
import { IFunction } from "aws-cdk-lib/aws-lambda";
import * as lambda from "aws-cdk-lib/aws-lambda-nodejs";
import { NodejsFunctionProps } from "aws-cdk-lib/aws-lambda-nodejs";
import { IDatabaseCluster, IServerlessCluster, IDatabaseInstance } from "aws-cdk-lib/aws-rds";
import { ISecret } from "aws-cdk-lib/aws-secretsmanager";
import { Construct } from "constructs";
export interface RdsSqlProps {
    /**
     * VPC network to place the provider lambda.
     *
     * Normally this is the VPC of your database.
     *
     * @default - Function is not placed within a VPC.
     */
    readonly vpc: IVpc;
    /**
     * Where to place the network provider lambda within the VPC.
     *
     * @default - the isolated subnet if not specified
     */
    readonly vpcSubnets?: SubnetSelection;
    /**
     * Your database.
     */
    readonly cluster: IServerlessCluster | IDatabaseCluster | IDatabaseInstance;
    /**
     * Secret that grants access to your database.
     *
     * Usually this is your cluster's master secret.
     */
    readonly secret: ISecret;
    /**
     * Timeout for lambda to do its work.
     *
     * @default - 5 minutes
     */
    readonly timeout?: Duration;
    /**
     * Log SQL statements. This includes passwords. Use only for debugging.
     *
     * @default - false
     */
    readonly logger?: boolean;
    /**
     * Additional function customization.
     *
     * This enables additional function customization such as the log group. However,
     * lambda function properties controlled by other {RdsSqlProps} parameters will trump
     * opions set via this parameter.
     *
     * @default - empty
     */
    readonly functionProps?: NodejsFunctionProps;
    /**
     * Use SSL?
     *
     * @default - false
     */
    readonly ssl?: boolean;
}
export declare class Provider extends Construct {
    readonly serviceToken: string;
    readonly secret: ISecret;
    readonly handler: IFunction;
    readonly cluster: IServerlessCluster | IDatabaseCluster | IDatabaseInstance;
    constructor(scope: Construct, id: string, props: RdsSqlProps);
    protected newCustomResourceHandler(scope: Construct, id: string, props: RdsSqlProps): lambda.NodejsFunction;
}
