/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
import { AxiosPromise } from 'axios';
import { GoogleApis } from '../..';
import { BodyResponseCallback, GlobalOptions, MethodOptions } from '../../lib/api';
/**
 * PageSpeed Insights API
 *
 * Analyzes the performance of a web page and provides tailored suggestions to
 * make that page faster.
 *
 * @example
 * const google = require('googleapis');
 * const pagespeedonline = google.pagespeedonline('v4');
 *
 * @namespace pagespeedonline
 * @type {Function}
 * @version v4
 * @variation v4
 * @param {object=} options Options for Pagespeedonline
 */
export declare class Pagespeedonline {
    _options: GlobalOptions;
    google: GoogleApis;
    root: this;
    pagespeedapi: Resource$Pagespeedapi;
    constructor(options: GlobalOptions, google: GoogleApis);
    getRoot(): this;
}
export interface Schema$PagespeedApiFormatStringV4 {
    /**
     * List of arguments for the format string.
     */
    args: any[];
    /**
     * A localized format string with {{FOO}} placeholders, where &#39;FOO&#39; is
     * the key of the argument whose value should be substituted. For HYPERLINK
     * arguments, the format string will instead contain {{BEGIN_FOO}} and
     * {{END_FOO}} for the argument with key &#39;FOO&#39;.
     */
    format: string;
}
export interface Schema$PagespeedApiImageV4 {
    /**
     * Image data base64 encoded.
     */
    data: string;
    /**
     * Height of screenshot in pixels.
     */
    height: number;
    /**
     * Unique string key, if any, identifying this image.
     */
    key: string;
    /**
     * Mime type of image data (e.g. &quot;image/jpeg&quot;).
     */
    mime_type: string;
    page_rect: any;
    /**
     * Width of screenshot in pixels.
     */
    width: number;
}
export interface Schema$PagespeedApiPagespeedResponseV4 {
    /**
     * The captcha verify result
     */
    captchaResult: string;
    /**
     * Localized PageSpeed results. Contains a ruleResults entry for each
     * PageSpeed rule instantiated and run by the server.
     */
    formattedResults: any;
    /**
     * Canonicalized and final URL for the document, after following page
     * redirects (if any).
     */
    id: string;
    /**
     * List of rules that were specified in the request, but which the server did
     * not know how to instantiate.
     */
    invalidRules: string[];
    /**
     * Kind of result.
     */
    kind: string;
    /**
     * Metrics of end users&#39; page loading experience.
     */
    loadingExperience: any;
    /**
     * Summary statistics for the page, such as number of JavaScript bytes, number
     * of HTML bytes, etc.
     */
    pageStats: any;
    /**
     * Response code for the document. 200 indicates a normal page load. 4xx/5xx
     * indicates an error.
     */
    responseCode: number;
    /**
     * A map with one entry for each rule group in these results.
     */
    ruleGroups: any;
    /**
     * Base64-encoded screenshot of the page that was analyzed.
     */
    screenshot: Schema$PagespeedApiImageV4;
    /**
     * Additional base64-encoded screenshots of the page, in various partial
     * render states.
     */
    snapshots: Schema$PagespeedApiImageV4[];
    /**
     * Title of the page, as displayed in the browser&#39;s title bar.
     */
    title: string;
    /**
     * The version of PageSpeed used to generate these results.
     */
    version: any;
}
export declare class Resource$Pagespeedapi {
    root: Pagespeedonline;
    constructor(root: Pagespeedonline);
    getRoot(): Pagespeedonline;
    /**
     * pagespeedonline.pagespeedapi.runpagespeed
     * @desc Runs PageSpeed analysis on the page at the specified URL, and returns
     * PageSpeed scores, a list of suggestions to make that page faster, and other
     * information.
     * @alias pagespeedonline.pagespeedapi.runpagespeed
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {boolean=} params.filter_third_party_resources Indicates if third party resources should be filtered out before PageSpeed analysis.
     * @param {string=} params.locale The locale used to localize formatted results
     * @param {string=} params.rule A PageSpeed rule to run; if none are given, all rules are run
     * @param {boolean=} params.screenshot Indicates if binary data containing a screenshot should be included
     * @param {boolean=} params.snapshots Indicates if binary data containing snapshot images should be included
     * @param {string=} params.strategy The analysis strategy (desktop or mobile) to use, and desktop is the default
     * @param {string} params.url The URL to fetch and analyze
     * @param {string=} params.utm_campaign Campaign name for analytics.
     * @param {string=} params.utm_source Campaign source for analytics.
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
    runpagespeed(params?: any, options?: MethodOptions): AxiosPromise<Schema$PagespeedApiPagespeedResponseV4>;
    runpagespeed(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$PagespeedApiPagespeedResponseV4>, callback?: BodyResponseCallback<Schema$PagespeedApiPagespeedResponseV4>): void;
}
