import { IAspect, aws_elasticloadbalancingv2 as elbv2, aws_cloudwatch as cloudwatch, Duration } from 'aws-cdk-lib';
import { Construct, IConstruct } from 'constructs';
import { AlarmBaseProps } from './common';
/**
 * The recommended metrics for NetworkLoadBalancer alarms.
 */
export declare enum NetworkLoadBalancerRecommendedAlarmsMetrics {
    /**
     * The number of reset (RST) packets sent from the load balancer.
     */
    TCP_ELB_RESET_COUNT = "TcpElbResetCount",
    /**
     * The number of reset (RST) packets generated by the targets.
     */
    TCP_TARGET_RESET_COUNT = "TcpTargetResetCount"
}
/**
 * The common optional configuration for the alarms.
 */
export interface NetworkLoadBalancerAlarmBaseConfig extends AlarmBaseProps {
    /**
     * The period over which the specified statistic is applied.
     *
     * @default Duration.minutes(1)
     */
    readonly period?: Duration;
}
/**
 * The common properties for the NetworkLoadBalancer alarms.
 */
export interface NetworkLoadBalancerAlarmProps {
    /**
     * The NetworkLoadBalancer to monitor.
     */
    readonly loadBalancer: elbv2.NetworkLoadBalancer;
}
/**
 * Configuration for the TcpElbResetCount alarm.
 */
export interface NetworkLoadBalancerTcpElbResetCountAlarmConfig extends NetworkLoadBalancerAlarmBaseConfig {
    /**
     * The value against which the specified statistic is compared.
     * You should set this threshold based on the acceptable number of TCP resets from the load balancer.
     *
     * @default 0
     */
    readonly threshold?: number;
    /**
     * The number of periods over which data is compared to the specified threshold.
     *
     * @default 3
     */
    readonly evaluationPeriods?: number;
    /**
     * The number of data points that must be breaching to trigger the alarm.
     *
     * @default 3
     */
    readonly datapointsToAlarm?: number;
    /**
     * The alarm name.
     *
     * @default - loadBalancerName + ' - TcpElbResetCount'
     */
    readonly alarmName?: string;
    /**
     * The description of the alarm.
     *
     * @default - This alarm is used to detect when the load balancer is sending TCP reset packets.
     * A high number of resets can indicate connectivity issues between the load balancer and clients.
     */
    readonly alarmDescription?: string;
}
/**
 * The properties for the NetworkLoadBalancerTcpElbResetCountAlarm construct.
 */
export interface NetworkLoadBalancerTcpElbResetCountAlarmProps extends NetworkLoadBalancerAlarmProps, NetworkLoadBalancerTcpElbResetCountAlarmConfig {
}
/**
 * This alarm is used to detect when the load balancer is sending TCP reset packets.
 *
 * A high number of resets can indicate connectivity issues between the load balancer and clients.
 *
 * The alarm is triggered when the number of TCP resets from the load balancer is greater than threshold.
 */
export declare class NetworkLoadBalancerTcpElbResetCountAlarm extends cloudwatch.Alarm {
    constructor(scope: IConstruct, id: string, props: NetworkLoadBalancerTcpElbResetCountAlarmProps);
}
/**
 * Configuration for the TcpTargetResetCount alarm.
 */
export interface NetworkLoadBalancerTcpTargetResetCountAlarmConfig extends NetworkLoadBalancerAlarmBaseConfig {
    /**
     * The value against which the specified statistic is compared.
     * You should set this threshold based on the acceptable number of TCP resets from targets.
     *
     * @default 0
     */
    readonly threshold?: number;
    /**
     * The number of periods over which data is compared to the specified threshold.
     *
     * @default 3
     */
    readonly evaluationPeriods?: number;
    /**
     * The number of data points that must be breaching to trigger the alarm.
     *
     * @default 3
     */
    readonly datapointsToAlarm?: number;
    /**
     * The alarm name.
     *
     * @default - loadBalancerName + ' - TcpTargetResetCount'
     */
    readonly alarmName?: string;
    /**
     * The description of the alarm.
     *
     * @default - This alarm is used to detect when the targets are sending TCP reset packets.
     * A high number of resets can indicate connectivity issues between the load balancer and targets.
     */
    readonly alarmDescription?: string;
}
/**
 * The properties for the NetworkLoadBalancerTcpTargetResetCountAlarm construct.
 */
export interface NetworkLoadBalancerTcpTargetResetCountAlarmProps extends NetworkLoadBalancerAlarmProps, NetworkLoadBalancerTcpTargetResetCountAlarmConfig {
}
/**
 * This alarm is used to detect when the targets are sending TCP reset packets.
 *
 * A high number of resets can indicate connectivity issues between the load balancer and targets.
 *
 * The alarm is triggered when the number of TCP resets from targets is greater than threshold.
 */
export declare class NetworkLoadBalancerTcpTargetResetCountAlarm extends cloudwatch.Alarm {
    constructor(scope: IConstruct, id: string, props: NetworkLoadBalancerTcpTargetResetCountAlarmProps);
}
/**
 * Configurations for the recommended alarms for a NetworkLoadBalancer.
 *
 * Default actions are overridden by the actions specified in the
 * individual alarm configurations.
 */
export interface NetworkLoadBalancerRecommendedAlarmsConfig {
    /**
     * The default action to take when an alarm is triggered.
     *
     * @default - None
     */
    readonly defaultAlarmAction?: cloudwatch.IAlarmAction;
    /**
     * The default action to take when an alarm enters the ok state.
     *
     * @default - None
     */
    readonly defaultOkAction?: cloudwatch.IAlarmAction;
    /**
     * The default action to take when an alarm has insufficient data.
     *
     * @default - None
     */
    readonly defaultInsufficientDataAction?: cloudwatch.IAlarmAction;
    /**
     * How to handle missing data for this alarm.
     *
     * @default TreatMissingData.MISSING
     */
    readonly treatMissingData?: cloudwatch.TreatMissingData;
    /**
     * Alarm metrics to exclude from the recommended alarms.
     *
     * @default - None
     */
    readonly excludeAlarms?: NetworkLoadBalancerRecommendedAlarmsMetrics[];
    /**
     * The resources to exclude from the recommended alarms.
     *
     * Use a resources id to exclude a specific resource.
     */
    readonly excludeResources?: string[];
    /**
     * The configuration for the TcpElbResetCount alarm.
     */
    readonly configTcpElbResetCountAlarm?: NetworkLoadBalancerTcpElbResetCountAlarmConfig;
    /**
     * The configuration for the TcpTargetResetCount alarm.
     */
    readonly configTcpTargetResetCountAlarm?: NetworkLoadBalancerTcpTargetResetCountAlarmConfig;
}
/**
 * Properties for the NetworkLoadBalancerRecommendedAlarms construct.
 */
export interface NetworkLoadBalancerRecommendedAlarmsProps extends NetworkLoadBalancerRecommendedAlarmsConfig {
    /**
     * The NetworkLoadBalancer to monitor.
     */
    readonly loadBalancer: elbv2.NetworkLoadBalancer;
}
/**
 * A construct that creates the recommended alarms for a NetworkLoadBalancer.
 *
 * @see https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/elb-metricscollected.html
 */
export declare class NetworkLoadBalancerRecommendedAlarms extends Construct {
    /**
     * The TcpElbResetCount alarm.
     */
    readonly alarmTcpElbResetCount?: NetworkLoadBalancerTcpElbResetCountAlarm;
    /**
     * The TcpTargetResetCount alarm.
     */
    readonly alarmTcpTargetResetCount?: NetworkLoadBalancerTcpTargetResetCountAlarm;
    constructor(scope: Construct, id: string, props: NetworkLoadBalancerRecommendedAlarmsProps);
}
/**
 * An extension for the NetworkLoadBalancer construct that provides methods
 * to create recommended alarms.
 */
export declare class NetworkLoadBalancer extends elbv2.NetworkLoadBalancer {
    constructor(scope: Construct, id: string, props: elbv2.NetworkLoadBalancerProps);
    /**
     * Creates an alarm that monitors the TCP reset count from the load balancer.
     */
    alarmTcpElbResetCount(props?: NetworkLoadBalancerTcpElbResetCountAlarmConfig): NetworkLoadBalancerTcpElbResetCountAlarm;
    /**
     * Creates an alarm that monitors the TCP reset count from targets.
     */
    alarmTcpTargetResetCount(props?: NetworkLoadBalancerTcpTargetResetCountAlarmConfig): NetworkLoadBalancerTcpTargetResetCountAlarm;
    /**
     * Creates the recommended alarms for the NetworkLoadBalancer.
     *
     * @see https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/elb-metricscollected.html
     */
    applyRecommendedAlarms(props: NetworkLoadBalancerRecommendedAlarmsConfig): NetworkLoadBalancerRecommendedAlarms;
}
/**
 * Configures the recommended alarms for a NetworkLoadBalancer.
 *
 * @see https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/elb-metricscollected.html
 */
export declare class NetworkLoadBalancerRecommendedAlarmsAspect implements IAspect {
    private readonly props;
    constructor(props: NetworkLoadBalancerRecommendedAlarmsConfig);
    visit(node: IConstruct): void;
}
