import { Request, CloudWatch as AWSCloudWatch } from 'aws-sdk';
declare type ReturnTypeFrom<K extends keyof AWSCloudWatch> = AWSCloudWatch[K] extends (...args: any) => Request<infer R, any> ? R : never;
declare type ParamsFrom<K extends keyof AWSCloudWatch, Extras> = AWSCloudWatch[K] extends {
    (param: infer P, callback: (...args: any) => void): Request<infer R, any>;
    (callback: (...args: any) => void): any;
} ? P & Extras : never;
export declare class CloudWatch {
    private readonly client;
    private constructor();
    readonly signingRegion: undefined;
    readonly service: "monitoring";
    readonly global: false;
    readonly category: "Management and Governance";
    readonly topLevelCalls: readonly ["describeAlarmHistory", "describeAlarms", "describeAnomalyDetectors", "describeInsightRules", "listDashboards", "listMetricStreams", "listMetrics"];
    deleteAlarms: (params: ParamsFrom<'deleteAlarms', Record<string, never>>) => Promise<ReturnTypeFrom<'deleteAlarms'>>;
    deleteAnomalyDetector: (params: ParamsFrom<'deleteAnomalyDetector', Record<string, never>>) => Promise<ReturnTypeFrom<'deleteAnomalyDetector'>>;
    deleteDashboards: (params: ParamsFrom<'deleteDashboards', Record<string, never>>) => Promise<ReturnTypeFrom<'deleteDashboards'>>;
    deleteInsightRules: (params: ParamsFrom<'deleteInsightRules', Record<string, never>>) => Promise<ReturnTypeFrom<'deleteInsightRules'>>;
    deleteMetricStream: (params: ParamsFrom<'deleteMetricStream', Record<string, never>>) => Promise<ReturnTypeFrom<'deleteMetricStream'>>;
    describeAlarmHistory(params: {
        [K in keyof ParamsFrom<'describeAlarmHistory', {
            next?: string;
            limit?: number;
        }>]: ParamsFrom<'describeAlarmHistory', {
            next?: string;
            limit?: number;
        }>[K];
    }): Promise<{
        next?: string | number;
        totalItems: number;
        member: {
            [K in keyof ReturnTypeFrom<'describeAlarmHistory'>]-?: ReturnTypeFrom<'describeAlarmHistory'>[K];
        }['AlarmHistoryItems'];
    }>;
    describeAlarms: (params: ParamsFrom<'describeAlarms', Record<string, never>>) => Promise<ReturnTypeFrom<'describeAlarms'>>;
    describeAlarmsForMetric: (params: ParamsFrom<'describeAlarmsForMetric', Record<string, never>>) => Promise<ReturnTypeFrom<'describeAlarmsForMetric'>>;
    describeAnomalyDetectors(params: {
        [K in keyof ParamsFrom<'describeAnomalyDetectors', {
            next?: string;
            limit?: number;
        }>]: ParamsFrom<'describeAnomalyDetectors', {
            next?: string;
            limit?: number;
        }>[K];
    }): Promise<{
        next?: string | number;
        totalItems: number;
        member: {
            [K in keyof ReturnTypeFrom<'describeAnomalyDetectors'>]-?: ReturnTypeFrom<'describeAnomalyDetectors'>[K];
        }['AnomalyDetectors'];
    }>;
    describeInsightRules: (params: ParamsFrom<'describeInsightRules', Record<string, never>>) => Promise<ReturnTypeFrom<'describeInsightRules'>>;
    disableAlarmActions: (params: ParamsFrom<'disableAlarmActions', Record<string, never>>) => Promise<ReturnTypeFrom<'disableAlarmActions'>>;
    disableInsightRules: (params: ParamsFrom<'disableInsightRules', Record<string, never>>) => Promise<ReturnTypeFrom<'disableInsightRules'>>;
    enableAlarmActions: (params: ParamsFrom<'enableAlarmActions', Record<string, never>>) => Promise<ReturnTypeFrom<'enableAlarmActions'>>;
    enableInsightRules: (params: ParamsFrom<'enableInsightRules', Record<string, never>>) => Promise<ReturnTypeFrom<'enableInsightRules'>>;
    getDashboard: (params: ParamsFrom<'getDashboard', Record<string, never>>) => Promise<ReturnTypeFrom<'getDashboard'>>;
    getInsightRuleReport: (params: ParamsFrom<'getInsightRuleReport', Record<string, never>>) => Promise<ReturnTypeFrom<'getInsightRuleReport'>>;
    getMetricData: (params: ParamsFrom<'getMetricData', Record<string, never>>) => Promise<ReturnTypeFrom<'getMetricData'>>;
    getMetricStatistics: (params: ParamsFrom<'getMetricStatistics', Record<string, never>>) => Promise<ReturnTypeFrom<'getMetricStatistics'>>;
    getMetricStream: (params: ParamsFrom<'getMetricStream', Record<string, never>>) => Promise<ReturnTypeFrom<'getMetricStream'>>;
    getMetricWidgetImage: (params: ParamsFrom<'getMetricWidgetImage', Record<string, never>>) => Promise<ReturnTypeFrom<'getMetricWidgetImage'>>;
    listDashboards(params: {
        [K in keyof ParamsFrom<'listDashboards', {
            next?: string;
        }>]: ParamsFrom<'listDashboards', {
            next?: string;
        }>[K];
    }): Promise<{
        next?: string | number;
        totalItems: number;
        member: {
            [K in keyof ReturnTypeFrom<'listDashboards'>]-?: ReturnTypeFrom<'listDashboards'>[K];
        }['DashboardEntries'];
    }>;
    listManagedInsightRules: (params: ParamsFrom<'listManagedInsightRules', Record<string, never>>) => Promise<ReturnTypeFrom<'listManagedInsightRules'>>;
    listMetricStreams: (params: ParamsFrom<'listMetricStreams', Record<string, never>>) => Promise<ReturnTypeFrom<'listMetricStreams'>>;
    listMetrics(params: {
        [K in keyof ParamsFrom<'listMetrics', {
            next?: string;
        }>]: ParamsFrom<'listMetrics', {
            next?: string;
        }>[K];
    }): Promise<{
        next?: string | number;
        totalItems: number;
        member: {
            [K in keyof ReturnTypeFrom<'listMetrics'>]-?: ReturnTypeFrom<'listMetrics'>[K];
        }['Metrics'];
    }>;
    listTagsForResource: (params: ParamsFrom<'listTagsForResource', Record<string, never>>) => Promise<ReturnTypeFrom<'listTagsForResource'>>;
    putAnomalyDetector: (params: ParamsFrom<'putAnomalyDetector', Record<string, never>>) => Promise<ReturnTypeFrom<'putAnomalyDetector'>>;
    putCompositeAlarm: (params: ParamsFrom<'putCompositeAlarm', Record<string, never>>) => Promise<ReturnTypeFrom<'putCompositeAlarm'>>;
    putDashboard: (params: ParamsFrom<'putDashboard', Record<string, never>>) => Promise<ReturnTypeFrom<'putDashboard'>>;
    putInsightRule: (params: ParamsFrom<'putInsightRule', Record<string, never>>) => Promise<ReturnTypeFrom<'putInsightRule'>>;
    putManagedInsightRules: (params: ParamsFrom<'putManagedInsightRules', Record<string, never>>) => Promise<ReturnTypeFrom<'putManagedInsightRules'>>;
    putMetricAlarm: (params: ParamsFrom<'putMetricAlarm', Record<string, never>>) => Promise<ReturnTypeFrom<'putMetricAlarm'>>;
    putMetricData: (params: ParamsFrom<'putMetricData', Record<string, never>>) => Promise<ReturnTypeFrom<'putMetricData'>>;
    putMetricStream: (params: ParamsFrom<'putMetricStream', Record<string, never>>) => Promise<ReturnTypeFrom<'putMetricStream'>>;
    setAlarmState: (params: ParamsFrom<'setAlarmState', Record<string, never>>) => Promise<ReturnTypeFrom<'setAlarmState'>>;
    startMetricStreams: (params: ParamsFrom<'startMetricStreams', Record<string, never>>) => Promise<ReturnTypeFrom<'startMetricStreams'>>;
    stopMetricStreams: (params: ParamsFrom<'stopMetricStreams', Record<string, never>>) => Promise<ReturnTypeFrom<'stopMetricStreams'>>;
    tagResource: (params: ParamsFrom<'tagResource', Record<string, never>>) => Promise<ReturnTypeFrom<'tagResource'>>;
    untagResource: (params: ParamsFrom<'untagResource', Record<string, never>>) => Promise<ReturnTypeFrom<'untagResource'>>;
    static fromClient(client: AWSCloudWatch): CloudWatch;
    static client(options?: AWSCloudWatch.Types.ClientConfiguration): CloudWatch;
}
export {};
