import { IAlarmAction } from "aws-cdk-lib/aws-cloudwatch";
import { Duration } from "aws-cdk-lib";
import { ITopic } from "aws-cdk-lib/aws-sns";
import { CustomAlarmThreshold } from "cdk-monitoring-constructs";
import { AlarmCategory, AlarmsCategoryOptions, AlarmsOptions } from "./alarms-base";
/**
 * Properties for AlarmFacade
 */
export interface AlarmFacadeProps {
    prop: string;
    threshold?: number | Duration;
    defaultThreshold?: number | Duration;
    topics?: ITopic[];
    actions?: IAlarmAction[];
}
/**
 * Facade to assist in generating a CustomAlarmThreshold instance.
 */
export declare class AlarmFacade {
    readonly actions: IAlarmAction[];
    private props;
    constructor(props: AlarmFacadeProps);
    /**
     * Converts this AlarmFacade into a CustomAlarmThreshold instance
     */
    toCustomAlarmThreshold(): CustomAlarmThreshold | undefined;
}
/**
 * Facade to assist in creating Record instances containing alarms.
 */
export declare class AlarmFacadeSet<O extends AlarmsCategoryOptions, T extends CustomAlarmThreshold> {
    private readonly criticalOptions?;
    private readonly warningOptions?;
    private readonly record;
    constructor(props: AlarmsOptions<O>);
    /**
     * Add an alarm to the record set.
     *
     * @param category category of the alarm
     * @param oprop property from the AlarmsCategoryOptions instance
     * @param tprop property from the CustomAlarmThreshold instance
     * @param defaultThreshold optional default value for the threshold
     */
    addAlarm(category: AlarmCategory, oprop: keyof O, tprop: keyof T, defaultThreshold?: number | Duration): AlarmFacadeSet<O, T>;
    /**
     * Adds a critical alarm to the record set.
     *
     * @param oprop property from the AlarmsCategoryOptions instance
     * @param tprop property from the CustomAlarmThreshold instance
     * @param defaultThreshold optional default value for the threshold
     */
    addCriticalAlarm(oprop: keyof O, tprop: keyof T, defaultThreshold?: number | Duration): AlarmFacadeSet<O, T>;
    /**
     * Adds a warning alarm to the record set.
     *
     * @param oprop property from the AlarmsCategoryOptions instance
     * @param tprop property from the CustomAlarmThreshold instance
     * @param defaultThreshold optional default value for the threshold
     */
    addWarningAlarm(oprop: keyof O, tprop: keyof T, defaultThreshold?: number | Duration): AlarmFacadeSet<O, T>;
    /**
     * Adds critical and warning alarms to the record set.
     *
     * @param oprop property from the AlarmsCategoryOptions instance
     * @param tprop property from the CustomAlarmThreshold instance
     * @param defaultCriticalThreshold optional default value for the critical threshold
     * @param defaultWarningThreshold optional default value for the warning threshold
     */
    addAlarms(oprop: keyof O, tprop: keyof T, defaultCriticalThreshold?: number | Duration, defaultWarningThreshold?: number | Duration): AlarmFacadeSet<O, T>;
    /**
     * Returns the record set if alarms were created and undefined if otherwise.
     */
    toRecord(): Record<string, T> | undefined;
}
