/**
 * Copyright 2019 Google LLC
 *
 * 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 { OAuth2Client, JWT, Compute, UserRefreshClient } from 'google-auth-library';
import { GoogleConfigurable, MethodOptions, GlobalOptions, BodyResponseCallback, APIRequestContext } from 'googleapis-common';
import { GaxiosPromise } from 'gaxios';
export declare namespace customsearch_v1 {
    interface Options extends GlobalOptions {
        version: 'v1';
    }
    interface StandardParameters {
        /**
         * Data format for the response.
         */
        alt?: string;
        /**
         * Selector specifying which fields to include in a partial response.
         */
        fields?: string;
        /**
         * API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.
         */
        key?: string;
        /**
         * OAuth 2.0 token for the current user.
         */
        oauth_token?: string;
        /**
         * Returns response with indentations and line breaks.
         */
        prettyPrint?: boolean;
        /**
         * An opaque string that represents a user for quota purposes. Must not exceed 40 characters.
         */
        quotaUser?: string;
        /**
         * Deprecated. Please use quotaUser instead.
         */
        userIp?: string;
    }
    /**
     * CustomSearch API
     *
     * Searches over a website or collection of websites
     *
     * @example
     * const {google} = require('googleapis');
     * const customsearch = google.customsearch('v1');
     *
     * @namespace customsearch
     * @type {Function}
     * @version v1
     * @variation v1
     * @param {object=} options Options for Customsearch
     */
    class Customsearch {
        context: APIRequestContext;
        cse: Resource$Cse;
        constructor(options: GlobalOptions, google?: GoogleConfigurable);
    }
    interface Schema$Context {
        facets?: Array<Array<{
            anchor?: string;
            label?: string;
            label_with_op?: string;
        }>>;
        title?: string;
    }
    interface Schema$Promotion {
        bodyLines?: Array<{
            htmlTitle?: string;
            link?: string;
            title?: string;
            url?: string;
        }>;
        displayLink?: string;
        htmlTitle?: string;
        image?: {
            height?: number;
            source?: string;
            width?: number;
        };
        link?: string;
        title?: string;
    }
    interface Schema$Query {
        count?: number;
        cr?: string;
        cx?: string;
        dateRestrict?: string;
        disableCnTwTranslation?: string;
        exactTerms?: string;
        excludeTerms?: string;
        fileType?: string;
        filter?: string;
        gl?: string;
        googleHost?: string;
        highRange?: string;
        hl?: string;
        hq?: string;
        imgColorType?: string;
        imgDominantColor?: string;
        imgSize?: string;
        imgType?: string;
        inputEncoding?: string;
        language?: string;
        linkSite?: string;
        lowRange?: string;
        orTerms?: string;
        outputEncoding?: string;
        relatedSite?: string;
        rights?: string;
        safe?: string;
        searchTerms?: string;
        searchType?: string;
        siteSearch?: string;
        siteSearchFilter?: string;
        sort?: string;
        startIndex?: number;
        startPage?: number;
        title?: string;
        totalResults?: string;
    }
    interface Schema$Result {
        cacheId?: string;
        displayLink?: string;
        fileFormat?: string;
        formattedUrl?: string;
        htmlFormattedUrl?: string;
        htmlSnippet?: string;
        htmlTitle?: string;
        image?: {
            byteSize?: number;
            contextLink?: string;
            height?: number;
            thumbnailHeight?: number;
            thumbnailLink?: string;
            thumbnailWidth?: number;
            width?: number;
        };
        kind?: string;
        labels?: Array<{
            displayName?: string;
            label_with_op?: string;
            name?: string;
        }>;
        link?: string;
        mime?: string;
        pagemap?: {
            [key: string]: Array<{
                [key: string]: any;
            }>;
        };
        snippet?: string;
        title?: string;
    }
    interface Schema$Search {
        context?: Schema$Context;
        items?: Schema$Result[];
        kind?: string;
        promotions?: Schema$Promotion[];
        queries?: {
            [key: string]: Schema$Query[];
        };
        searchInformation?: {
            formattedSearchTime?: string;
            formattedTotalResults?: string;
            searchTime?: number;
            totalResults?: string;
        };
        spelling?: {
            correctedQuery?: string;
            htmlCorrectedQuery?: string;
        };
        url?: {
            template?: string;
            type?: string;
        };
    }
    class Resource$Cse {
        context: APIRequestContext;
        siterestrict: Resource$Cse$Siterestrict;
        constructor(context: APIRequestContext);
        /**
         * search.cse.list
         * @desc Returns metadata about the search performed, metadata about the custom search engine used for the search, and the search results.
         * @alias search.cse.list
         * @memberOf! ()
         *
         * @param {object} params Parameters for request
         * @param {string=} params.c2coff Turns off the translation between zh-CN and zh-TW.
         * @param {string=} params.cr Country restrict(s).
         * @param {string=} params.cx The custom search engine ID to scope this search query
         * @param {string=} params.dateRestrict Specifies all search results are from a time period
         * @param {string=} params.exactTerms Identifies a phrase that all documents in the search results must contain
         * @param {string=} params.excludeTerms Identifies a word or phrase that should not appear in any documents in the search results
         * @param {string=} params.fileType Returns images of a specified type. Some of the allowed values are: bmp, gif, png, jpg, svg, pdf, ...
         * @param {string=} params.filter Controls turning on or off the duplicate content filter.
         * @param {string=} params.gl Geolocation of end user.
         * @param {string=} params.googlehost The local Google domain to use to perform the search.
         * @param {string=} params.highRange Creates a range in form as_nlo value..as_nhi value and attempts to append it to query
         * @param {string=} params.hl Sets the user interface language.
         * @param {string=} params.hq Appends the extra query terms to the query.
         * @param {string=} params.imgColorType Returns black and white, grayscale, or color images: mono, gray, and color.
         * @param {string=} params.imgDominantColor Returns images of a specific dominant color: red, orange, yellow, green, teal, blue, purple, pink, white, gray, black and brown.
         * @param {string=} params.imgSize Returns images of a specified size, where size can be one of: icon, small, medium, large, xlarge, xxlarge, and huge.
         * @param {string=} params.imgType Returns images of a type, which can be one of: clipart, face, lineart, news, and photo.
         * @param {string=} params.linkSite Specifies that all search results should contain a link to a particular URL
         * @param {string=} params.lowRange Creates a range in form as_nlo value..as_nhi value and attempts to append it to query
         * @param {string=} params.lr The language restriction for the search results
         * @param {integer=} params.num Number of search results to return
         * @param {string=} params.orTerms Provides additional search terms to check for in a document, where each document in the search results must contain at least one of the additional search terms
         * @param {string} params.q Query
         * @param {string=} params.relatedSite Specifies that all search results should be pages that are related to the specified URL
         * @param {string=} params.rights Filters based on licensing. Supported values include: cc_publicdomain, cc_attribute, cc_sharealike, cc_noncommercial, cc_nonderived and combinations of these.
         * @param {string=} params.safe Search safety level
         * @param {string=} params.searchType Specifies the search type: image.
         * @param {string=} params.siteSearch Specifies all search results should be pages from a given site
         * @param {string=} params.siteSearchFilter Controls whether to include or exclude results from the site named in the as_sitesearch parameter
         * @param {string=} params.sort The sort expression to apply to the results
         * @param {integer=} params.start The index of the first result to return
         * @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
         */
        list(params?: Params$Resource$Cse$List, options?: MethodOptions): GaxiosPromise<Schema$Search>;
        list(params: Params$Resource$Cse$List, options: MethodOptions | BodyResponseCallback<Schema$Search>, callback: BodyResponseCallback<Schema$Search>): void;
        list(params: Params$Resource$Cse$List, callback: BodyResponseCallback<Schema$Search>): void;
        list(callback: BodyResponseCallback<Schema$Search>): void;
    }
    interface Params$Resource$Cse$List extends StandardParameters {
        /**
         * Auth client or API Key for the request
         */
        auth?: string | OAuth2Client | JWT | Compute | UserRefreshClient;
        /**
         * Turns off the translation between zh-CN and zh-TW.
         */
        c2coff?: string;
        /**
         * Country restrict(s).
         */
        cr?: string;
        /**
         * The custom search engine ID to scope this search query
         */
        cx?: string;
        /**
         * Specifies all search results are from a time period
         */
        dateRestrict?: string;
        /**
         * Identifies a phrase that all documents in the search results must contain
         */
        exactTerms?: string;
        /**
         * Identifies a word or phrase that should not appear in any documents in the search results
         */
        excludeTerms?: string;
        /**
         * Returns images of a specified type. Some of the allowed values are: bmp, gif, png, jpg, svg, pdf, ...
         */
        fileType?: string;
        /**
         * Controls turning on or off the duplicate content filter.
         */
        filter?: string;
        /**
         * Geolocation of end user.
         */
        gl?: string;
        /**
         * The local Google domain to use to perform the search.
         */
        googlehost?: string;
        /**
         * Creates a range in form as_nlo value..as_nhi value and attempts to append it to query
         */
        highRange?: string;
        /**
         * Sets the user interface language.
         */
        hl?: string;
        /**
         * Appends the extra query terms to the query.
         */
        hq?: string;
        /**
         * Returns black and white, grayscale, or color images: mono, gray, and color.
         */
        imgColorType?: string;
        /**
         * Returns images of a specific dominant color: red, orange, yellow, green, teal, blue, purple, pink, white, gray, black and brown.
         */
        imgDominantColor?: string;
        /**
         * Returns images of a specified size, where size can be one of: icon, small, medium, large, xlarge, xxlarge, and huge.
         */
        imgSize?: string;
        /**
         * Returns images of a type, which can be one of: clipart, face, lineart, news, and photo.
         */
        imgType?: string;
        /**
         * Specifies that all search results should contain a link to a particular URL
         */
        linkSite?: string;
        /**
         * Creates a range in form as_nlo value..as_nhi value and attempts to append it to query
         */
        lowRange?: string;
        /**
         * The language restriction for the search results
         */
        lr?: string;
        /**
         * Number of search results to return
         */
        num?: number;
        /**
         * Provides additional search terms to check for in a document, where each document in the search results must contain at least one of the additional search terms
         */
        orTerms?: string;
        /**
         * Query
         */
        q?: string;
        /**
         * Specifies that all search results should be pages that are related to the specified URL
         */
        relatedSite?: string;
        /**
         * Filters based on licensing. Supported values include: cc_publicdomain, cc_attribute, cc_sharealike, cc_noncommercial, cc_nonderived and combinations of these.
         */
        rights?: string;
        /**
         * Search safety level
         */
        safe?: string;
        /**
         * Specifies the search type: image.
         */
        searchType?: string;
        /**
         * Specifies all search results should be pages from a given site
         */
        siteSearch?: string;
        /**
         * Controls whether to include or exclude results from the site named in the as_sitesearch parameter
         */
        siteSearchFilter?: string;
        /**
         * The sort expression to apply to the results
         */
        sort?: string;
        /**
         * The index of the first result to return
         */
        start?: number;
    }
    class Resource$Cse$Siterestrict {
        context: APIRequestContext;
        constructor(context: APIRequestContext);
        /**
         * search.cse.siterestrict.list
         * @desc Returns metadata about the search performed, metadata about the custom search engine used for the search, and the search results. Uses a small set of url patterns.
         * @alias search.cse.siterestrict.list
         * @memberOf! ()
         *
         * @param {object} params Parameters for request
         * @param {string=} params.c2coff Turns off the translation between zh-CN and zh-TW.
         * @param {string=} params.cr Country restrict(s).
         * @param {string=} params.cx The custom search engine ID to scope this search query
         * @param {string=} params.dateRestrict Specifies all search results are from a time period
         * @param {string=} params.exactTerms Identifies a phrase that all documents in the search results must contain
         * @param {string=} params.excludeTerms Identifies a word or phrase that should not appear in any documents in the search results
         * @param {string=} params.fileType Returns images of a specified type. Some of the allowed values are: bmp, gif, png, jpg, svg, pdf, ...
         * @param {string=} params.filter Controls turning on or off the duplicate content filter.
         * @param {string=} params.gl Geolocation of end user.
         * @param {string=} params.googlehost The local Google domain to use to perform the search.
         * @param {string=} params.highRange Creates a range in form as_nlo value..as_nhi value and attempts to append it to query
         * @param {string=} params.hl Sets the user interface language.
         * @param {string=} params.hq Appends the extra query terms to the query.
         * @param {string=} params.imgColorType Returns black and white, grayscale, or color images: mono, gray, and color.
         * @param {string=} params.imgDominantColor Returns images of a specific dominant color: red, orange, yellow, green, teal, blue, purple, pink, white, gray, black and brown.
         * @param {string=} params.imgSize Returns images of a specified size, where size can be one of: icon, small, medium, large, xlarge, xxlarge, and huge.
         * @param {string=} params.imgType Returns images of a type, which can be one of: clipart, face, lineart, news, and photo.
         * @param {string=} params.linkSite Specifies that all search results should contain a link to a particular URL
         * @param {string=} params.lowRange Creates a range in form as_nlo value..as_nhi value and attempts to append it to query
         * @param {string=} params.lr The language restriction for the search results
         * @param {integer=} params.num Number of search results to return
         * @param {string=} params.orTerms Provides additional search terms to check for in a document, where each document in the search results must contain at least one of the additional search terms
         * @param {string} params.q Query
         * @param {string=} params.relatedSite Specifies that all search results should be pages that are related to the specified URL
         * @param {string=} params.rights Filters based on licensing. Supported values include: cc_publicdomain, cc_attribute, cc_sharealike, cc_noncommercial, cc_nonderived and combinations of these.
         * @param {string=} params.safe Search safety level
         * @param {string=} params.searchType Specifies the search type: image.
         * @param {string=} params.siteSearch Specifies all search results should be pages from a given site
         * @param {string=} params.siteSearchFilter Controls whether to include or exclude results from the site named in the as_sitesearch parameter
         * @param {string=} params.sort The sort expression to apply to the results
         * @param {integer=} params.start The index of the first result to return
         * @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
         */
        list(params?: Params$Resource$Cse$Siterestrict$List, options?: MethodOptions): GaxiosPromise<Schema$Search>;
        list(params: Params$Resource$Cse$Siterestrict$List, options: MethodOptions | BodyResponseCallback<Schema$Search>, callback: BodyResponseCallback<Schema$Search>): void;
        list(params: Params$Resource$Cse$Siterestrict$List, callback: BodyResponseCallback<Schema$Search>): void;
        list(callback: BodyResponseCallback<Schema$Search>): void;
    }
    interface Params$Resource$Cse$Siterestrict$List extends StandardParameters {
        /**
         * Auth client or API Key for the request
         */
        auth?: string | OAuth2Client | JWT | Compute | UserRefreshClient;
        /**
         * Turns off the translation between zh-CN and zh-TW.
         */
        c2coff?: string;
        /**
         * Country restrict(s).
         */
        cr?: string;
        /**
         * The custom search engine ID to scope this search query
         */
        cx?: string;
        /**
         * Specifies all search results are from a time period
         */
        dateRestrict?: string;
        /**
         * Identifies a phrase that all documents in the search results must contain
         */
        exactTerms?: string;
        /**
         * Identifies a word or phrase that should not appear in any documents in the search results
         */
        excludeTerms?: string;
        /**
         * Returns images of a specified type. Some of the allowed values are: bmp, gif, png, jpg, svg, pdf, ...
         */
        fileType?: string;
        /**
         * Controls turning on or off the duplicate content filter.
         */
        filter?: string;
        /**
         * Geolocation of end user.
         */
        gl?: string;
        /**
         * The local Google domain to use to perform the search.
         */
        googlehost?: string;
        /**
         * Creates a range in form as_nlo value..as_nhi value and attempts to append it to query
         */
        highRange?: string;
        /**
         * Sets the user interface language.
         */
        hl?: string;
        /**
         * Appends the extra query terms to the query.
         */
        hq?: string;
        /**
         * Returns black and white, grayscale, or color images: mono, gray, and color.
         */
        imgColorType?: string;
        /**
         * Returns images of a specific dominant color: red, orange, yellow, green, teal, blue, purple, pink, white, gray, black and brown.
         */
        imgDominantColor?: string;
        /**
         * Returns images of a specified size, where size can be one of: icon, small, medium, large, xlarge, xxlarge, and huge.
         */
        imgSize?: string;
        /**
         * Returns images of a type, which can be one of: clipart, face, lineart, news, and photo.
         */
        imgType?: string;
        /**
         * Specifies that all search results should contain a link to a particular URL
         */
        linkSite?: string;
        /**
         * Creates a range in form as_nlo value..as_nhi value and attempts to append it to query
         */
        lowRange?: string;
        /**
         * The language restriction for the search results
         */
        lr?: string;
        /**
         * Number of search results to return
         */
        num?: number;
        /**
         * Provides additional search terms to check for in a document, where each document in the search results must contain at least one of the additional search terms
         */
        orTerms?: string;
        /**
         * Query
         */
        q?: string;
        /**
         * Specifies that all search results should be pages that are related to the specified URL
         */
        relatedSite?: string;
        /**
         * Filters based on licensing. Supported values include: cc_publicdomain, cc_attribute, cc_sharealike, cc_noncommercial, cc_nonderived and combinations of these.
         */
        rights?: string;
        /**
         * Search safety level
         */
        safe?: string;
        /**
         * Specifies the search type: image.
         */
        searchType?: string;
        /**
         * Specifies all search results should be pages from a given site
         */
        siteSearch?: string;
        /**
         * Controls whether to include or exclude results from the site named in the as_sitesearch parameter
         */
        siteSearchFilter?: string;
        /**
         * The sort expression to apply to the results
         */
        sort?: string;
        /**
         * The index of the first result to return
         */
        start?: number;
    }
}
