import { Metric, MetricOptions } from "aws-cdk-lib/aws-cloudwatch";
import { ISecurityGroup } from "aws-cdk-lib/aws-ec2";
import { Construct } from "constructs";
import { Admin } from "./admin";
import { IRabbitMqBroker } from "./rabbitmq-broker";
import { IRabbitMqBrokerConfiguration } from "./rabbitmq-broker-configuration";
import { RabbitMqBrokerEndpoints } from "./rabbitmq-broker-endpoints";
import { RabbitMqBrokerEngineVersion } from "./rabbitmq-broker-engine-version";
import { BrokerDeploymentBase, BrokerDeploymentProps, IBrokerDeployment } from "../broker-deployment";
import { BrokerDeploymentMode } from "../broker-deployment-mode";
export interface RabbitMqCloudwatchLogsExports {
    /**
     * Export general logs to CloudWatch.
     *
     * @default - undefined; do not export general logs.
     */
    readonly general?: boolean;
}
export interface RabbitMqBrokerDeploymentProps extends BrokerDeploymentProps {
    /**
     * Sets the credentials of the broker administrative user.
     */
    readonly admin: Admin;
    /**
     * Sets the version of the broker engine.
     */
    readonly version: RabbitMqBrokerEngineVersion;
    /**
     * Sets the configuration of the broker.
     */
    readonly configuration?: IRabbitMqBrokerConfiguration;
    /**
     * Sets the CloudWatch logs exports for the broker.
     */
    readonly cloudwatchLogsExports?: RabbitMqCloudwatchLogsExports;
}
export interface RabbitMqBrokerDeploymentBaseProps extends RabbitMqBrokerDeploymentProps {
    readonly deploymentMode: BrokerDeploymentMode;
}
export interface IRabbitMqBrokerDeployment extends IBrokerDeployment {
    metricExchangeCount(props?: MetricOptions): Metric;
    metricQueueCount(props?: MetricOptions): Metric;
    metricConnectionCount(props?: MetricOptions): Metric;
    metricChannelCount(props?: MetricOptions): Metric;
    metricConsumerCount(props?: MetricOptions): Metric;
    metricMessageCount(props?: MetricOptions): Metric;
    metricMessageReadyCount(props?: MetricOptions): Metric;
    metricMessageUnacknowledgedCount(props?: MetricOptions): Metric;
    metricPublishRate(props?: MetricOptions): Metric;
    metricConfirmRate(props?: MetricOptions): Metric;
    metricAckRate(props?: MetricOptions): Metric;
    metricSystemCpuUtilization(props?: MetricOptions): Metric;
    metricRabbitMQMemLimit(props?: MetricOptions): Metric;
    metricRabbitMQMemUsed(props?: MetricOptions): Metric;
    metricSystemCpuUtilization(props?: MetricOptions): Metric;
    metricRabbitMQMemLimit(props?: MetricOptions): Metric;
    metricRabbitMQMemUsed(props?: MetricOptions): Metric;
    metricRabbitMQDiskFreeLimit(props?: MetricOptions): Metric;
    metricRabbitMQDiskFree(props?: MetricOptions): Metric;
    metricRabbitMQFdUsed(props?: MetricOptions): Metric;
    metricRabbitMQIOReadAverageTime(props?: MetricOptions): Metric;
    metricRabbitMQIOWriteAverageTime(props?: MetricOptions): Metric;
}
export declare abstract class RabbitMqBrokerDeploymentBase extends BrokerDeploymentBase implements IRabbitMqBrokerDeployment, IRabbitMqBroker {
    /**
     *
     * @internal
     */
    protected static _fromRabbitMqBrokerDeploymentBase(scope: Construct, logicalId: string, arn?: string, name?: string, id?: string, securityGroups?: ISecurityGroup[], urlSuffix?: string): IRabbitMqBrokerDeployment;
    readonly endpoints: RabbitMqBrokerEndpoints;
    constructor(scope: Construct, id: string, props: RabbitMqBrokerDeploymentBaseProps);
    metricExchangeCount(props?: MetricOptions): Metric;
    metricQueueCount(props?: MetricOptions): Metric;
    metricConnectionCount(props?: MetricOptions): Metric;
    metricChannelCount(props?: MetricOptions): Metric;
    metricConsumerCount(props?: MetricOptions): Metric;
    metricMessageCount(props?: MetricOptions): Metric;
    metricMessageReadyCount(props?: MetricOptions): Metric;
    metricMessageUnacknowledgedCount(props?: MetricOptions): Metric;
    metricPublishRate(props?: MetricOptions): Metric;
    metricConfirmRate(props?: MetricOptions): Metric;
    metricAckRate(props?: MetricOptions): Metric;
    metricSystemCpuUtilization(props?: MetricOptions): Metric;
    metricRabbitMQMemLimit(props?: MetricOptions): Metric;
    metricRabbitMQMemUsed(props?: MetricOptions): Metric;
    metricRabbitMQDiskFreeLimit(props?: MetricOptions): Metric;
    metricRabbitMQDiskFree(props?: MetricOptions): Metric;
    metricRabbitMQFdUsed(props?: MetricOptions): Metric;
    metricRabbitMQIOReadAverageTime(props?: MetricOptions): Metric;
    metricRabbitMQIOWriteAverageTime(props?: MetricOptions): Metric;
}
