/** A single CloudWatch metric datapoint. */
export interface MetricDatapoint {
    Timestamp?: string;
    Sum?: number;
    Average?: number;
    Maximum?: number;
    Minimum?: number;
    /** Percentile values when ExtendedStatistics were requested, e.g. { p95: 86 }. */
    Percentiles?: Record<string, number>;
    Unit?: string;
}
/** A CloudWatch alarm summary. */
export interface MetricAlarm {
    AlarmName?: string;
    StateValue?: string;
    MetricName?: string;
    ComparisonOperator?: string;
    Threshold?: number;
    Namespace?: string;
}
/**
 * Minimal CloudWatch (metrics/alarms) client over the query API — covers what
 * the serverless `metrics` / `alarms` commands need without an AWS SDK.
 */
export declare class CloudWatchClient {
    private client;
    private region;
    constructor(region?: string, profile?: string);
    private query;
    /** Fetch aggregated statistics for one metric over a time window. */
    getMetricStatistics(options: {
        Namespace: string;
        MetricName: string;
        Dimensions?: Array<{
            Name: string;
            Value: string;
        }>;
        StartTime: Date;
        EndTime: Date;
        Period: number;
        Statistics?: Array<'Sum' | 'Average' | 'Maximum' | 'Minimum'>;
        /** Percentiles like ['p50','p95','p99'] (CloudWatch ExtendedStatistics). */
        ExtendedStatistics?: string[];
    }): Promise<MetricDatapoint[]>;
    /**
     * Return a time-ordered series of a single statistic over a window — for
     * sparklines. `stat` is 'Sum'|'Average'|'Maximum'|'Minimum' or a percentile
     * like 'p95'.
     */
    getMetricSeries(options: {
        Namespace: string;
        MetricName: string;
        Dimensions?: Array<{
            Name: string;
            Value: string;
        }>;
        StartTime: Date;
        EndTime: Date;
        Period: number;
        Stat: string;
    }): Promise<number[]>;
    /** List alarms, optionally filtered by name prefix. */
    describeAlarms(options?: {
        AlarmNamePrefix?: string;
        MaxRecords?: number;
    }): Promise<MetricAlarm[]>;
    /** Create or update a metric alarm. */
    putMetricAlarm(options: {
        AlarmName: string;
        Namespace: string;
        MetricName: string;
        ComparisonOperator: string;
        Threshold: number;
        EvaluationPeriods: number;
        Period: number;
        Statistic: 'Sum' | 'Average' | 'Maximum' | 'Minimum';
        Dimensions?: Array<{
            Name: string;
            Value: string;
        }>;
        AlarmActions?: string[];
        AlarmDescription?: string;
    }): Promise<void>;
    /** Delete one or more metric alarms by name. */
    deleteAlarms(alarmNames: string[]): Promise<void>;
}
