import { Duration } from "aws-cdk-lib";
import { ITopic } from "aws-cdk-lib/aws-sns";
import { Alarm, IAlarmAction } from "aws-cdk-lib/aws-cloudwatch";
import { MonitoringFacade } from "cdk-monitoring-constructs";
import { IDashboardFactory } from "cdk-monitoring-constructs";
import { Queue } from "aws-cdk-lib/aws-sqs";
import { Construct } from "constructs";
export interface QueueAlarmsCategoryProps {
    /**
     * Minimum number of messages visible.
     */
    readonly minSize?: number;
    /**
     * Maximum number of messages visible.
     */
    readonly maxSize?: number;
    /**
     * Maximum approximate age of the oldest message in the queue.
     *
     * @default 15 for critical alarm
     */
    readonly maxAgeInSeconds?: number;
    /**
     * Maximum time to drain the queue.
     */
    readonly maxTimeToDrain?: Duration;
    /**
     * Minimum number of incoming messages.
     */
    readonly minIncoming?: number;
    /**
     * Maximum number of incoming messages.
     */
    readonly maxIncoming?: number;
    /**
     * Maximum number of visible messages in the dead-letter queue
     *
     * @default 0 for critical alarm
     */
    readonly deadLetterQueueMaxSize?: number;
    /**
     * Maximum age of the oldest messages in the dead-letter queue
     */
    readonly deadLetterQueueMaxAgeInSeconds?: number;
    /**
     * Maximum number of incoming messages in the dead-letter queue
     */
    readonly deadLetterQueueMaxIncoming?: number;
    /**
     * Topics to send alarm notifications
     */
    readonly notifyTopics?: [ITopic];
    /**
     * Actions to send alarm notifications
     */
    readonly notifyActions?: [IAlarmAction];
}
export interface QueueAlarmsOptions {
    /**
     * Alarm thresholds for critical alarms.
     *
     * If no properties are provided, a set of default alarms are created.
     */
    readonly criticalAlarmProps?: QueueAlarmsCategoryProps;
    /**
     * Alarm threshold for warning alarms.
     *
     * If no properties are provided, a set of default alarms are created.
     */
    readonly warningAlarmProps?: QueueAlarmsCategoryProps;
    /**
     * Main entry point for monitoring.
     *
     * If no value is provided, a default facade will be created.
     */
    readonly monitoringFacade?: MonitoringFacade;
    /**
     * The DashboardFactory to use when generating CloudWatch dashboards.
     *
     * If not defined, dashboards are not generated.
     */
    readonly dashboardFactory?: IDashboardFactory;
    /**
     * Prefix used for generated alarms.
     *
     * @default Stack.of(this).stackName;
     */
    readonly alarmNamePrefix?: string;
}
/**
 * Used to disambiguate warning and critical alarms.
 */
export declare enum QueueAlarmCategory {
    Critical = "Critical",
    Warning = "Warning"
}
/**
 * Properties for QueueAlarms
 */
export interface QueueAlarmsProps extends QueueAlarmsOptions {
    /**
     * The queue to observe.
     */
    readonly queue: Queue;
}
/**
 * Creates CloudWatch alarms for Queues.
 */
export declare class QueueAlarms extends Construct {
    /**
     * The MonitoringFacade instance either passed in or generated.
     */
    readonly monitoringFacade: MonitoringFacade;
    /**
     * Generated critical alarms.
     */
    readonly criticalAlarms: Alarm[];
    /**
     * Generated warning alarms.
     */
    readonly warningAlarms: Alarm[];
    private readonly props;
    private addRecordValue;
    private toRecord;
    private addAlarm;
    constructor(scope: Construct, id: string, props: QueueAlarmsProps);
}
