import { IDistribution } from 'aws-cdk-lib/aws-cloudfront';
import { IInstance } from 'aws-cdk-lib/aws-ec2';
import { Rule } from 'aws-cdk-lib/aws-events';
import { Function as LambdaFunction } from 'aws-cdk-lib/aws-lambda';
import { Construct } from 'constructs';
/**
 * Props for IdleMonitor construct
 */
export interface IdleMonitorProps {
    /**
     * The EC2 instance to monitor
     */
    readonly instance: IInstance;
    /**
     * The CloudFront distribution to monitor for activity
     */
    readonly distribution: IDistribution;
    /**
     * Number of minutes of inactivity before stopping the instance
     */
    readonly idleTimeoutMinutes: number;
    /**
     * How often to check for idle activity (in minutes)
     * @default 5 - Check every 5 minutes
     */
    readonly checkIntervalMinutes?: number;
    /**
     * Skip instance status checks before stopping
     * When true, IdleMonitor will stop idle instances even if status checks haven't passed
     * This is useful for integration tests where status check initialization time
     * exceeds test timeout limits
     *
     * WARNING: For testing only - in production, you should wait for status checks
     * to pass before stopping instances
     *
     * @default false
     */
    readonly skipStatusChecks?: boolean;
}
/**
 * Construct that monitors CloudFront request metrics and stops the EC2 instance when idle
 */
export declare class IdleMonitor extends Construct {
    /**
     * The Lambda function that performs idle monitoring
     */
    readonly function: LambdaFunction;
    /**
     * The EventBridge rule that triggers idle monitoring checks
     */
    readonly scheduleRule: Rule;
    constructor(scope: Construct, id: string, props: IdleMonitorProps);
}
