import * as Core from 'cloudflare/core';
import { APIResource } from 'cloudflare/resource';
import * as HTTPTestsAPI from 'cloudflare/resources/zero-trust/dex/http-tests/http-tests';
import * as PercentilesAPI from 'cloudflare/resources/zero-trust/dex/http-tests/percentiles';
export declare class HTTPTests extends APIResource {
    percentiles: PercentilesAPI.Percentiles;
    /**
     * Get test details and aggregate performance metrics for an http test for a given
     * time period between 1 hour and 7 days.
     */
    get(testId: string, params: HTTPTestGetParams, options?: Core.RequestOptions): Core.APIPromise<DigitalExperienceMonitoringHTTPDetails>;
}
export interface DigitalExperienceMonitoringHTTPDetails {
    /**
     * The url of the HTTP synthetic application test
     */
    host?: string;
    httpStats?: DigitalExperienceMonitoringHTTPDetails.HTTPStats | null;
    httpStatsByColo?: Array<DigitalExperienceMonitoringHTTPDetails.HTTPStatsByColo>;
    /**
     * The interval at which the HTTP synthetic application test is set to run.
     */
    interval?: string;
    kind?: 'http';
    /**
     * The HTTP method to use when running the test
     */
    method?: string;
    /**
     * The name of the HTTP synthetic application test
     */
    name?: string;
}
export declare namespace DigitalExperienceMonitoringHTTPDetails {
    interface HTTPStats {
        dnsResponseTimeMs: HTTPStats.DNSResponseTimeMs;
        httpStatusCode: Array<HTTPStats.HTTPStatusCode>;
        resourceFetchTimeMs: HTTPStats.ResourceFetchTimeMs;
        serverResponseTimeMs: HTTPStats.ServerResponseTimeMs;
        /**
         * Count of unique devices that have run this test in the given time period
         */
        uniqueDevicesTotal: number;
    }
    namespace HTTPStats {
        interface DNSResponseTimeMs {
            slots: Array<DNSResponseTimeMs.Slot>;
            /**
             * average observed in the time period
             */
            avg?: number | null;
            /**
             * highest observed in the time period
             */
            max?: number | null;
            /**
             * lowest observed in the time period
             */
            min?: number | null;
        }
        namespace DNSResponseTimeMs {
            interface Slot {
                timestamp: string;
                value: number;
            }
        }
        interface HTTPStatusCode {
            status200: number;
            status300: number;
            status400: number;
            status500: number;
            timestamp: string;
        }
        interface ResourceFetchTimeMs {
            slots: Array<ResourceFetchTimeMs.Slot>;
            /**
             * average observed in the time period
             */
            avg?: number | null;
            /**
             * highest observed in the time period
             */
            max?: number | null;
            /**
             * lowest observed in the time period
             */
            min?: number | null;
        }
        namespace ResourceFetchTimeMs {
            interface Slot {
                timestamp: string;
                value: number;
            }
        }
        interface ServerResponseTimeMs {
            slots: Array<ServerResponseTimeMs.Slot>;
            /**
             * average observed in the time period
             */
            avg?: number | null;
            /**
             * highest observed in the time period
             */
            max?: number | null;
            /**
             * lowest observed in the time period
             */
            min?: number | null;
        }
        namespace ServerResponseTimeMs {
            interface Slot {
                timestamp: string;
                value: number;
            }
        }
    }
    interface HTTPStatsByColo {
        colo: string;
        dnsResponseTimeMs: HTTPStatsByColo.DNSResponseTimeMs;
        httpStatusCode: Array<HTTPStatsByColo.HTTPStatusCode>;
        resourceFetchTimeMs: HTTPStatsByColo.ResourceFetchTimeMs;
        serverResponseTimeMs: HTTPStatsByColo.ServerResponseTimeMs;
        /**
         * Count of unique devices that have run this test in the given time period
         */
        uniqueDevicesTotal: number;
    }
    namespace HTTPStatsByColo {
        interface DNSResponseTimeMs {
            slots: Array<DNSResponseTimeMs.Slot>;
            /**
             * average observed in the time period
             */
            avg?: number | null;
            /**
             * highest observed in the time period
             */
            max?: number | null;
            /**
             * lowest observed in the time period
             */
            min?: number | null;
        }
        namespace DNSResponseTimeMs {
            interface Slot {
                timestamp: string;
                value: number;
            }
        }
        interface HTTPStatusCode {
            status200: number;
            status300: number;
            status400: number;
            status500: number;
            timestamp: string;
        }
        interface ResourceFetchTimeMs {
            slots: Array<ResourceFetchTimeMs.Slot>;
            /**
             * average observed in the time period
             */
            avg?: number | null;
            /**
             * highest observed in the time period
             */
            max?: number | null;
            /**
             * lowest observed in the time period
             */
            min?: number | null;
        }
        namespace ResourceFetchTimeMs {
            interface Slot {
                timestamp: string;
                value: number;
            }
        }
        interface ServerResponseTimeMs {
            slots: Array<ServerResponseTimeMs.Slot>;
            /**
             * average observed in the time period
             */
            avg?: number | null;
            /**
             * highest observed in the time period
             */
            max?: number | null;
            /**
             * lowest observed in the time period
             */
            min?: number | null;
        }
        namespace ServerResponseTimeMs {
            interface Slot {
                timestamp: string;
                value: number;
            }
        }
    }
}
export interface HTTPTestGetParams {
    /**
     * Path param: unique identifier linked to an account in the API request path.
     */
    account_id: string;
    /**
     * Query param: Time interval for aggregate time slots.
     */
    interval: 'minute' | 'hour';
    /**
     * Query param: End time for aggregate metrics in ISO ms
     */
    timeEnd: string;
    /**
     * Query param: Start time for aggregate metrics in ISO ms
     */
    timeStart: string;
    /**
     * Query param: Optionally filter result stats to a Cloudflare colo. Cannot be used
     * in combination with deviceId param.
     */
    colo?: string;
    /**
     * Query param: Optionally filter result stats to a specific device(s). Cannot be
     * used in combination with colo param.
     */
    deviceId?: Array<string>;
}
export declare namespace HTTPTests {
    export import DigitalExperienceMonitoringHTTPDetails = HTTPTestsAPI.DigitalExperienceMonitoringHTTPDetails;
    export import HTTPTestGetParams = HTTPTestsAPI.HTTPTestGetParams;
    export import Percentiles = PercentilesAPI.Percentiles;
    export import DigitalExperienceMonitoringHTTPDetailsPercentiles = PercentilesAPI.DigitalExperienceMonitoringHTTPDetailsPercentiles;
    export import PercentileGetParams = PercentilesAPI.PercentileGetParams;
}
//# sourceMappingURL=http-tests.d.ts.map