import * as Core from 'cloudflare/core';
import { APIResource } from 'cloudflare/resource';
import * as TestsAPI from 'cloudflare/resources/speed/tests';
export declare class Tests extends APIResource {
    /**
     * Starts a test for a specific webpage, in a specific region.
     */
    create(url: string, params: TestCreateParams, options?: Core.RequestOptions): Core.APIPromise<ObservatoryPageTest>;
    /**
     * Test history (list of tests) for a specific webpage.
     */
    list(url: string, params: TestListParams, options?: Core.RequestOptions): Core.APIPromise<TestListResponse>;
    /**
     * Deletes all tests for a specific webpage from a specific region. Deleted tests
     * are still counted as part of the quota.
     */
    delete(url: string, params: TestDeleteParams, options?: Core.RequestOptions): Core.APIPromise<TestDeleteResponse>;
    /**
     * Retrieves the result of a specific test.
     */
    get(url: string, testId: string, params: TestGetParams, options?: Core.RequestOptions): Core.APIPromise<ObservatoryPageTest>;
}
export interface ObservatoryPageTest {
    /**
     * UUID
     */
    id?: string;
    date?: string;
    /**
     * The Lighthouse report.
     */
    desktopReport?: ObservatoryPageTest.DesktopReport;
    /**
     * The Lighthouse report.
     */
    mobileReport?: ObservatoryPageTest.MobileReport;
    /**
     * A test region with a label.
     */
    region?: ObservatoryPageTest.Region;
    /**
     * The frequency of the test.
     */
    scheduleFrequency?: 'DAILY' | 'WEEKLY';
    /**
     * A URL.
     */
    url?: string;
}
export declare namespace ObservatoryPageTest {
    /**
     * The Lighthouse report.
     */
    interface DesktopReport {
        /**
         * Cumulative Layout Shift.
         */
        cls?: number;
        /**
         * The type of device.
         */
        deviceType?: 'DESKTOP' | 'MOBILE';
        error?: DesktopReport.Error;
        /**
         * First Contentful Paint.
         */
        fcp?: number;
        /**
         * The URL to the full Lighthouse JSON report.
         */
        jsonReportUrl?: string;
        /**
         * Largest Contentful Paint.
         */
        lcp?: number;
        /**
         * The Lighthouse performance score.
         */
        performanceScore?: number;
        /**
         * Speed Index.
         */
        si?: number;
        /**
         * The state of the Lighthouse report.
         */
        state?: 'RUNNING' | 'COMPLETE' | 'FAILED';
        /**
         * Total Blocking Time.
         */
        tbt?: number;
        /**
         * Time To First Byte.
         */
        ttfb?: number;
        /**
         * Time To Interactive.
         */
        tti?: number;
    }
    namespace DesktopReport {
        interface Error {
            /**
             * The error code of the Lighthouse result.
             */
            code?: 'NOT_REACHABLE' | 'DNS_FAILURE' | 'NOT_HTML' | 'LIGHTHOUSE_TIMEOUT' | 'UNKNOWN';
            /**
             * Detailed error message.
             */
            detail?: string;
            /**
             * The final URL displayed to the user.
             */
            finalDisplayedUrl?: string;
        }
    }
    /**
     * The Lighthouse report.
     */
    interface MobileReport {
        /**
         * Cumulative Layout Shift.
         */
        cls?: number;
        /**
         * The type of device.
         */
        deviceType?: 'DESKTOP' | 'MOBILE';
        error?: MobileReport.Error;
        /**
         * First Contentful Paint.
         */
        fcp?: number;
        /**
         * The URL to the full Lighthouse JSON report.
         */
        jsonReportUrl?: string;
        /**
         * Largest Contentful Paint.
         */
        lcp?: number;
        /**
         * The Lighthouse performance score.
         */
        performanceScore?: number;
        /**
         * Speed Index.
         */
        si?: number;
        /**
         * The state of the Lighthouse report.
         */
        state?: 'RUNNING' | 'COMPLETE' | 'FAILED';
        /**
         * Total Blocking Time.
         */
        tbt?: number;
        /**
         * Time To First Byte.
         */
        ttfb?: number;
        /**
         * Time To Interactive.
         */
        tti?: number;
    }
    namespace MobileReport {
        interface Error {
            /**
             * The error code of the Lighthouse result.
             */
            code?: 'NOT_REACHABLE' | 'DNS_FAILURE' | 'NOT_HTML' | 'LIGHTHOUSE_TIMEOUT' | 'UNKNOWN';
            /**
             * Detailed error message.
             */
            detail?: string;
            /**
             * The final URL displayed to the user.
             */
            finalDisplayedUrl?: string;
        }
    }
    /**
     * A test region with a label.
     */
    interface Region {
        label?: string;
        /**
         * A test region.
         */
        value?: 'asia-east1' | 'asia-northeast1' | 'asia-northeast2' | 'asia-south1' | 'asia-southeast1' | 'australia-southeast1' | 'europe-north1' | 'europe-southwest1' | 'europe-west1' | 'europe-west2' | 'europe-west3' | 'europe-west4' | 'europe-west8' | 'europe-west9' | 'me-west1' | 'southamerica-east1' | 'us-central1' | 'us-east1' | 'us-east4' | 'us-south1' | 'us-west1';
    }
}
export interface TestListResponse {
    errors: Array<TestListResponse.Error>;
    messages: Array<TestListResponse.Message>;
    /**
     * Whether the API call was successful.
     */
    success: boolean;
    result_info?: TestListResponse.ResultInfo;
}
export declare namespace TestListResponse {
    interface Error {
        code: number;
        message: string;
    }
    interface Message {
        code: number;
        message: string;
    }
    interface ResultInfo {
        count?: number;
        page?: number;
        per_page?: number;
        total_count?: number;
    }
}
export interface TestDeleteResponse {
    /**
     * Number of items affected.
     */
    count?: number;
}
export interface TestCreateParams {
    /**
     * Path param: Identifier
     */
    zone_id: string;
    /**
     * Body param: A test region.
     */
    region?: 'asia-east1' | 'asia-northeast1' | 'asia-northeast2' | 'asia-south1' | 'asia-southeast1' | 'australia-southeast1' | 'europe-north1' | 'europe-southwest1' | 'europe-west1' | 'europe-west2' | 'europe-west3' | 'europe-west4' | 'europe-west8' | 'europe-west9' | 'me-west1' | 'southamerica-east1' | 'us-central1' | 'us-east1' | 'us-east4' | 'us-south1' | 'us-west1';
}
export interface TestListParams {
    /**
     * Path param: Identifier
     */
    zone_id: string;
    /**
     * Query param:
     */
    page?: number;
    /**
     * Query param:
     */
    per_page?: number;
    /**
     * Query param: A test region.
     */
    region?: 'asia-east1' | 'asia-northeast1' | 'asia-northeast2' | 'asia-south1' | 'asia-southeast1' | 'australia-southeast1' | 'europe-north1' | 'europe-southwest1' | 'europe-west1' | 'europe-west2' | 'europe-west3' | 'europe-west4' | 'europe-west8' | 'europe-west9' | 'me-west1' | 'southamerica-east1' | 'us-central1' | 'us-east1' | 'us-east4' | 'us-south1' | 'us-west1';
}
export interface TestDeleteParams {
    /**
     * Path param: Identifier
     */
    zone_id: string;
    /**
     * Query param: A test region.
     */
    region?: 'asia-east1' | 'asia-northeast1' | 'asia-northeast2' | 'asia-south1' | 'asia-southeast1' | 'australia-southeast1' | 'europe-north1' | 'europe-southwest1' | 'europe-west1' | 'europe-west2' | 'europe-west3' | 'europe-west4' | 'europe-west8' | 'europe-west9' | 'me-west1' | 'southamerica-east1' | 'us-central1' | 'us-east1' | 'us-east4' | 'us-south1' | 'us-west1';
}
export interface TestGetParams {
    /**
     * Identifier
     */
    zone_id: string;
}
export declare namespace Tests {
    export import ObservatoryPageTest = TestsAPI.ObservatoryPageTest;
    export import TestListResponse = TestsAPI.TestListResponse;
    export import TestDeleteResponse = TestsAPI.TestDeleteResponse;
    export import TestCreateParams = TestsAPI.TestCreateParams;
    export import TestListParams = TestsAPI.TestListParams;
    export import TestDeleteParams = TestsAPI.TestDeleteParams;
    export import TestGetParams = TestsAPI.TestGetParams;
}
//# sourceMappingURL=tests.d.ts.map