import { GraphWidget, HorizontalAnnotation, IMetric, IWidget } from "aws-cdk-lib/aws-cloudwatch";
import { EC2MetricFactoryProps } from "./EC2MetricFactory";
import { BaseMonitoringProps, MetricWithAlarmSupport, Monitoring, MonitoringScope } from "../../common";
import { EC2AlarmFactory, NetworkInThreshold, NetworkOutThreshold } from "../../common/monitoring/alarms/EC2AlarmFactory";
import { MonitoringHeaderWidget } from "../../dashboard";
export interface EC2MonitoringOptions extends EC2MetricFactoryProps, BaseMonitoringProps {
    readonly addNetworkOutTotalBytesExceedThresholdAlarm?: Record<string, NetworkOutThreshold>;
    readonly addNetworkInTotalBytesExceedThresholdAlarm?: Record<string, NetworkInThreshold>;
}
export interface EC2MonitoringProps extends EC2MonitoringOptions {
}
export declare class EC2Monitoring extends Monitoring {
    readonly family: string;
    readonly title: string;
    readonly ec2AlarmFactory: EC2AlarmFactory;
    readonly cpuUtilisationMetrics: IMetric[];
    readonly diskReadBytesMetrics: IMetric[];
    readonly diskWriteBytesMetrics: IMetric[];
    readonly diskReadOpsMetrics: IMetric[];
    readonly diskWriteOpsMetrics: IMetric[];
    readonly networkInMetrics: MetricWithAlarmSupport[];
    readonly networkOutMetrics: MetricWithAlarmSupport[];
    readonly networkInSumMetrics: MetricWithAlarmSupport[];
    readonly networkOutSumMetrics: MetricWithAlarmSupport[];
    readonly networkInSumLimitAnnotations: HorizontalAnnotation[];
    readonly networkOutSumLimitAnnotations: HorizontalAnnotation[];
    constructor(scope: MonitoringScope, props: EC2MonitoringProps);
    summaryWidgets(): IWidget[];
    widgets(): IWidget[];
    createTitleWidget(): MonitoringHeaderWidget;
    createCpuWidget(width: number, height: number): GraphWidget;
    createDiskWidget(width: number, height: number): GraphWidget;
    createDiskOpsWidget(width: number, height: number): GraphWidget;
    createNetworkWidget(width: number, height: number): GraphWidget;
}
