/**
 * 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';
/**
 * DoubleClick Search API
 *
 * Reports and modifies your advertising data in DoubleClick Search (for
 * example, campaigns, ad groups, keywords, and conversions).
 *
 * @example
 * const google = require('googleapis');
 * const doubleclicksearch = google.doubleclicksearch('v2');
 *
 * @namespace doubleclicksearch
 * @type {Function}
 * @version v2
 * @variation v2
 * @param {object=} options Options for Doubleclicksearch
 */
export declare class Doubleclicksearch {
    _options: GlobalOptions;
    google: GoogleApis;
    root: this;
    conversion: Resource$Conversion;
    reports: Resource$Reports;
    savedColumns: Resource$Savedcolumns;
    constructor(options: GlobalOptions, google: GoogleApis);
    getRoot(): this;
}
/**
 * A message containing availability data relevant to DoubleClick Search.
 */
export interface Schema$Availability {
    /**
     * DS advertiser ID.
     */
    advertiserId: string;
    /**
     * DS agency ID.
     */
    agencyId: string;
    /**
     * The time by which all conversions have been uploaded, in epoch millis UTC.
     */
    availabilityTimestamp: string;
    /**
     * The numeric segmentation identifier (for example, DoubleClick Search
     * Floodlight activity ID).
     */
    segmentationId: string;
    /**
     * The friendly segmentation identifier (for example, DoubleClick Search
     * Floodlight activity name).
     */
    segmentationName: string;
    /**
     * The segmentation type that this availability is for (its default value is
     * FLOODLIGHT).
     */
    segmentationType: string;
}
/**
 * A conversion containing data relevant to DoubleClick Search.
 */
export interface Schema$Conversion {
    /**
     * DS ad group ID.
     */
    adGroupId: string;
    /**
     * DS ad ID.
     */
    adId: string;
    /**
     * DS advertiser ID.
     */
    advertiserId: string;
    /**
     * DS agency ID.
     */
    agencyId: string;
    /**
     * Available to advertisers only after contacting DoubleClick Search customer
     * support.
     */
    attributionModel: string;
    /**
     * DS campaign ID.
     */
    campaignId: string;
    /**
     * Sales channel for the product. Acceptable values are:   -
     * &quot;local&quot;: a physical store  - &quot;online&quot;: an online store
     */
    channel: string;
    /**
     * DS click ID for the conversion.
     */
    clickId: string;
    /**
     * For offline conversions, advertisers provide this ID. Advertisers can
     * specify any ID that is meaningful to them. Each conversion in a request
     * must specify a unique ID, and the combination of ID and timestamp must be
     * unique amongst all conversions within the advertiser. For online
     * conversions, DS copies the dsConversionId or floodlightOrderId into this
     * property depending on the advertiser&#39;s Floodlight instructions.
     */
    conversionId: string;
    /**
     * The time at which the conversion was last modified, in epoch millis UTC.
     */
    conversionModifiedTimestamp: string;
    /**
     * The time at which the conversion took place, in epoch millis UTC.
     */
    conversionTimestamp: string;
    /**
     * Available to advertisers only after contacting DoubleClick Search customer
     * support.
     */
    countMillis: string;
    /**
     * DS criterion (keyword) ID.
     */
    criterionId: string;
    /**
     * The currency code for the conversion&#39;s revenue. Should be in ISO 4217
     * alphabetic (3-char) format.
     */
    currencyCode: string;
    /**
     * Custom dimensions for the conversion, which can be used to filter data in a
     * report.
     */
    customDimension: Schema$CustomDimension[];
    /**
     * Custom metrics for the conversion.
     */
    customMetric: Schema$CustomMetric[];
    /**
     * The type of device on which the conversion occurred.
     */
    deviceType: string;
    /**
     * ID that DoubleClick Search generates for each conversion.
     */
    dsConversionId: string;
    /**
     * DS engine account ID.
     */
    engineAccountId: string;
    /**
     * The Floodlight order ID provided by the advertiser for the conversion.
     */
    floodlightOrderId: string;
    /**
     * ID that DS generates and uses to uniquely identify the inventory account
     * that contains the product.
     */
    inventoryAccountId: string;
    /**
     * The country registered for the Merchant Center feed that contains the
     * product. Use an ISO 3166 code to specify a country.
     */
    productCountry: string;
    /**
     * DS product group ID.
     */
    productGroupId: string;
    /**
     * The product ID (SKU).
     */
    productId: string;
    /**
     * The language registered for the Merchant Center feed that contains the
     * product. Use an ISO 639 code to specify a language.
     */
    productLanguage: string;
    /**
     * The quantity of this conversion, in millis.
     */
    quantityMillis: string;
    /**
     * The revenue amount of this TRANSACTION conversion, in micros (value
     * multiplied by 1000000, no decimal). For example, to specify a revenue value
     * of &quot;10&quot; enter &quot;10000000&quot; (10 million) in your request.
     */
    revenueMicros: string;
    /**
     * The numeric segmentation identifier (for example, DoubleClick Search
     * Floodlight activity ID).
     */
    segmentationId: string;
    /**
     * The friendly segmentation identifier (for example, DoubleClick Search
     * Floodlight activity name).
     */
    segmentationName: string;
    /**
     * The segmentation type of this conversion (for example, FLOODLIGHT).
     */
    segmentationType: string;
    /**
     * The state of the conversion, that is, either ACTIVE or REMOVED. Note: state
     * DELETED is deprecated.
     */
    state: string;
    /**
     * The ID of the local store for which the product was advertised. Applicable
     * only when the channel is &quot;local&quot;.
     */
    storeId: string;
    /**
     * The type of the conversion, that is, either ACTION or TRANSACTION. An
     * ACTION conversion is an action by the user that has no monetarily
     * quantifiable value, while a TRANSACTION conversion is an action that does
     * have a monetarily quantifiable value. Examples are email list signups
     * (ACTION) versus ecommerce purchases (TRANSACTION).
     */
    type: string;
}
/**
 * A list of conversions.
 */
export interface Schema$ConversionList {
    /**
     * The conversions being requested.
     */
    conversion: Schema$Conversion[];
    /**
     * Identifies this as a ConversionList resource. Value: the fixed string
     * doubleclicksearch#conversionList.
     */
    kind: string;
}
/**
 * A message containing the custome dimension.
 */
export interface Schema$CustomDimension {
    /**
     * Custom dimension name.
     */
    name: string;
    /**
     * Custom dimension value.
     */
    value: string;
}
/**
 * A message containing the custome metric.
 */
export interface Schema$CustomMetric {
    /**
     * Custom metric name.
     */
    name: string;
    /**
     * Custom metric numeric value.
     */
    value: number;
}
/**
 * A DoubleClick Search report. This object contains the report request, some
 * report metadata such as currency code, and the generated report rows or
 * report files.
 */
export interface Schema$Report {
    /**
     * Asynchronous report only. Contains a list of generated report files once
     * the report has succesfully completed.
     */
    files: any[];
    /**
     * Asynchronous report only. Id of the report.
     */
    id: string;
    /**
     * Asynchronous report only. True if and only if the report has completed
     * successfully and the report files are ready to be downloaded.
     */
    isReportReady: boolean;
    /**
     * Identifies this as a Report resource. Value: the fixed string
     * doubleclicksearch#report.
     */
    kind: string;
    /**
     * The request that created the report. Optional fields not specified in the
     * original request are filled with default values.
     */
    request: Schema$ReportRequest;
    /**
     * The number of report rows generated by the report, not including headers.
     */
    rowCount: number;
    /**
     * Synchronous report only. Generated report rows.
     */
    rows: Schema$ReportRow[];
    /**
     * The currency code of all monetary values produced in the report, including
     * values that are set by users (e.g., keyword bid settings) and metrics
     * (e.g., cost and revenue). The currency code of a report is determined by
     * the statisticsCurrency field of the report request.
     */
    statisticsCurrencyCode: string;
    /**
     * If all statistics of the report are sourced from the same time zone, this
     * would be it. Otherwise the field is unset.
     */
    statisticsTimeZone: string;
}
/**
 * A request object used to create a DoubleClick Search report.
 */
export interface Schema$ReportApiColumnSpec {
    /**
     * Name of a DoubleClick Search column to include in the report.
     */
    columnName: string;
    /**
     * Segments a report by a custom dimension. The report must be scoped to an
     * advertiser or lower, and the custom dimension must already be set up in
     * DoubleClick Search. The custom dimension name, which appears in DoubleClick
     * Search, is case sensitive. If used in a conversion report, returns the
     * value of the specified custom dimension for the given conversion, if set.
     * This column does not segment the conversion report.
     */
    customDimensionName: string;
    /**
     * Name of a custom metric to include in the report. The report must be scoped
     * to an advertiser or lower, and the custom metric must already be set up in
     * DoubleClick Search. The custom metric name, which appears in DoubleClick
     * Search, is case sensitive.
     */
    customMetricName: string;
    /**
     * Inclusive day in YYYY-MM-DD format. When provided, this overrides the
     * overall time range of the report for this column only. Must be provided
     * together with startDate.
     */
    endDate: string;
    /**
     * Synchronous report only. Set to true to group by this column. Defaults to
     * false.
     */
    groupByColumn: boolean;
    /**
     * Text used to identify this column in the report output; defaults to
     * columnName or savedColumnName when not specified. This can be used to
     * prevent collisions between DoubleClick Search columns and saved columns
     * with the same name.
     */
    headerText: string;
    /**
     * The platform that is used to provide data for the custom dimension.
     * Acceptable values are &quot;floodlight&quot;.
     */
    platformSource: string;
    /**
     * Returns metrics only for a specific type of product activity. Accepted
     * values are:   - &quot;sold&quot;: returns metrics only for products that
     * were sold  - &quot;advertised&quot;: returns metrics only for products that
     * were advertised in a Shopping campaign, and that might or might not have
     * been sold
     */
    productReportPerspective: string;
    /**
     * Name of a saved column to include in the report. The report must be scoped
     * at advertiser or lower, and this saved column must already be created in
     * the DoubleClick Search UI.
     */
    savedColumnName: string;
    /**
     * Inclusive date in YYYY-MM-DD format. When provided, this overrides the
     * overall time range of the report for this column only. Must be provided
     * together with endDate.
     */
    startDate: string;
}
/**
 * A request object used to create a DoubleClick Search report.
 */
export interface Schema$ReportRequest {
    /**
     * The columns to include in the report. This includes both DoubleClick Search
     * columns and saved columns. For DoubleClick Search columns, only the
     * columnName parameter is required. For saved columns only the
     * savedColumnName parameter is required. Both columnName and savedColumnName
     * cannot be set in the same stanza. The maximum number of columns per request
     * is 300.
     */
    columns: Schema$ReportApiColumnSpec[];
    /**
     * Format that the report should be returned in. Currently csv or tsv is
     * supported.
     */
    downloadFormat: string;
    /**
     * A list of filters to be applied to the report. The maximum number of
     * filters per request is 300.
     */
    filters: any[];
    /**
     * Determines if removed entities should be included in the report. Defaults
     * to false. Deprecated, please use includeRemovedEntities instead.
     */
    includeDeletedEntities: boolean;
    /**
     * Determines if removed entities should be included in the report. Defaults
     * to false.
     */
    includeRemovedEntities: boolean;
    /**
     * Asynchronous report only. The maximum number of rows per report file. A
     * large report is split into many files based on this field. Acceptable
     * values are 1000000 to 100000000, inclusive.
     */
    maxRowsPerFile: number;
    /**
     * Synchronous report only. A list of columns and directions defining sorting
     * to be performed on the report rows. The maximum number of orderings per
     * request is 300.
     */
    orderBy: any[];
    /**
     * The reportScope is a set of IDs that are used to determine which subset of
     * entities will be returned in the report. The full lineage of IDs from the
     * lowest scoped level desired up through agency is required.
     */
    reportScope: any;
    /**
     * Determines the type of rows that are returned in the report. For example,
     * if you specify reportType: keyword, each row in the report will contain
     * data about a keyword. See the Types of Reports reference for the columns
     * that are available for each type.
     */
    reportType: string;
    /**
     * Synchronous report only. The maxinum number of rows to return; additional
     * rows are dropped. Acceptable values are 0 to 10000, inclusive. Defaults to
     * 10000.
     */
    rowCount: number;
    /**
     * Synchronous report only. Zero-based index of the first row to return.
     * Acceptable values are 0 to 50000, inclusive. Defaults to 0.
     */
    startRow: number;
    /**
     * Specifies the currency in which monetary will be returned. Possible values
     * are: usd, agency (valid if the report is scoped to agency or lower),
     * advertiser (valid if the report is scoped to * advertiser or lower), or
     * account (valid if the report is scoped to engine account or lower).
     */
    statisticsCurrency: string;
    /**
     * If metrics are requested in a report, this argument will be used to
     * restrict the metrics to a specific time range.
     */
    timeRange: any;
    /**
     * If true, the report would only be created if all the requested stat data
     * are sourced from a single timezone. Defaults to false.
     */
    verifySingleTimeZone: boolean;
}
/**
 * A row in a DoubleClick Search report.
 */
export interface Schema$ReportRow {
}
/**
 * A saved column
 */
export interface Schema$SavedColumn {
    /**
     * Identifies this as a SavedColumn resource. Value: the fixed string
     * doubleclicksearch#savedColumn.
     */
    kind: string;
    /**
     * The name of the saved column.
     */
    savedColumnName: string;
    /**
     * The type of data this saved column will produce.
     */
    type: string;
}
/**
 * A list of saved columns. Advertisers create saved columns to report on
 * Floodlight activities, Google Analytics goals, or custom KPIs. To request
 * reports with saved columns, you&#39;ll need the saved column names that are
 * available from this list.
 */
export interface Schema$SavedColumnList {
    /**
     * The saved columns being requested.
     */
    items: Schema$SavedColumn[];
    /**
     * Identifies this as a SavedColumnList resource. Value: the fixed string
     * doubleclicksearch#savedColumnList.
     */
    kind: string;
}
/**
 * The request to update availability.
 */
export interface Schema$UpdateAvailabilityRequest {
    /**
     * The availabilities being requested.
     */
    availabilities: Schema$Availability[];
}
/**
 * The response to a update availability request.
 */
export interface Schema$UpdateAvailabilityResponse {
    /**
     * The availabilities being returned.
     */
    availabilities: Schema$Availability[];
}
export declare class Resource$Conversion {
    root: Doubleclicksearch;
    constructor(root: Doubleclicksearch);
    getRoot(): Doubleclicksearch;
    /**
     * doubleclicksearch.conversion.get
     * @desc Retrieves a list of conversions from a DoubleClick Search engine
     * account.
     * @alias doubleclicksearch.conversion.get
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string=} params.adGroupId Numeric ID of the ad group.
     * @param {string=} params.adId Numeric ID of the ad.
     * @param {string} params.advertiserId Numeric ID of the advertiser.
     * @param {string} params.agencyId Numeric ID of the agency.
     * @param {string=} params.campaignId Numeric ID of the campaign.
     * @param {string=} params.criterionId Numeric ID of the criterion.
     * @param {integer} params.endDate Last date (inclusive) on which to retrieve conversions. Format is yyyymmdd.
     * @param {string} params.engineAccountId Numeric ID of the engine account.
     * @param {integer} params.rowCount The number of conversions to return per call.
     * @param {integer} params.startDate First date (inclusive) on which to retrieve conversions. Format is yyyymmdd.
     * @param {integer} params.startRow The 0-based starting index for retrieving conversions results.
     * @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
     */
    get(params?: any, options?: MethodOptions): AxiosPromise<Schema$ConversionList>;
    get(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$ConversionList>, callback?: BodyResponseCallback<Schema$ConversionList>): void;
    /**
     * doubleclicksearch.conversion.insert
     * @desc Inserts a batch of new conversions into DoubleClick Search.
     * @alias doubleclicksearch.conversion.insert
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {().ConversionList} params.resource Request body data
     * @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
     */
    insert(params?: any, options?: MethodOptions): AxiosPromise<Schema$ConversionList>;
    insert(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$ConversionList>, callback?: BodyResponseCallback<Schema$ConversionList>): void;
    /**
     * doubleclicksearch.conversion.patch
     * @desc Updates a batch of conversions in DoubleClick Search. This method
     * supports patch semantics.
     * @alias doubleclicksearch.conversion.patch
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.advertiserId Numeric ID of the advertiser.
     * @param {string} params.agencyId Numeric ID of the agency.
     * @param {integer} params.endDate Last date (inclusive) on which to retrieve conversions. Format is yyyymmdd.
     * @param {string} params.engineAccountId Numeric ID of the engine account.
     * @param {integer} params.rowCount The number of conversions to return per call.
     * @param {integer} params.startDate First date (inclusive) on which to retrieve conversions. Format is yyyymmdd.
     * @param {integer} params.startRow The 0-based starting index for retrieving conversions results.
     * @param {().ConversionList} params.resource Request body data
     * @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
     */
    patch(params?: any, options?: MethodOptions): AxiosPromise<Schema$ConversionList>;
    patch(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$ConversionList>, callback?: BodyResponseCallback<Schema$ConversionList>): void;
    /**
     * doubleclicksearch.conversion.update
     * @desc Updates a batch of conversions in DoubleClick Search.
     * @alias doubleclicksearch.conversion.update
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {().ConversionList} params.resource Request body data
     * @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
     */
    update(params?: any, options?: MethodOptions): AxiosPromise<Schema$ConversionList>;
    update(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$ConversionList>, callback?: BodyResponseCallback<Schema$ConversionList>): void;
    /**
     * doubleclicksearch.conversion.updateAvailability
     * @desc Updates the availabilities of a batch of floodlight activities in
     * DoubleClick Search.
     * @alias doubleclicksearch.conversion.updateAvailability
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {().UpdateAvailabilityRequest} params.resource Request body data
     * @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
     */
    updateAvailability(params?: any, options?: MethodOptions): AxiosPromise<Schema$UpdateAvailabilityResponse>;
    updateAvailability(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$UpdateAvailabilityResponse>, callback?: BodyResponseCallback<Schema$UpdateAvailabilityResponse>): void;
}
export declare class Resource$Reports {
    root: Doubleclicksearch;
    constructor(root: Doubleclicksearch);
    getRoot(): Doubleclicksearch;
    /**
     * doubleclicksearch.reports.generate
     * @desc Generates and returns a report immediately.
     * @alias doubleclicksearch.reports.generate
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {().ReportRequest} params.resource Request body data
     * @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
     */
    generate(params?: any, options?: MethodOptions): AxiosPromise<Schema$Report>;
    generate(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$Report>, callback?: BodyResponseCallback<Schema$Report>): void;
    /**
     * doubleclicksearch.reports.get
     * @desc Polls for the status of a report request.
     * @alias doubleclicksearch.reports.get
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.reportId ID of the report request being polled.
     * @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
     */
    get(params?: any, options?: MethodOptions): AxiosPromise<Schema$Report>;
    get(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$Report>, callback?: BodyResponseCallback<Schema$Report>): void;
    /**
     * doubleclicksearch.reports.getFile
     * @desc Downloads a report file encoded in UTF-8.
     * @alias doubleclicksearch.reports.getFile
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {integer} params.reportFragment The index of the report fragment to download.
     * @param {string} params.reportId ID of the report.
     * @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
     */
    getFile(params?: any, options?: MethodOptions): AxiosPromise<void>;
    getFile(params?: any, options?: MethodOptions | BodyResponseCallback<void>, callback?: BodyResponseCallback<void>): void;
    /**
     * doubleclicksearch.reports.request
     * @desc Inserts a report request into the reporting system.
     * @alias doubleclicksearch.reports.request
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {().ReportRequest} params.resource Request body data
     * @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
     */
    request(params?: any, options?: MethodOptions): AxiosPromise<Schema$Report>;
    request(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$Report>, callback?: BodyResponseCallback<Schema$Report>): void;
}
export declare class Resource$Savedcolumns {
    root: Doubleclicksearch;
    constructor(root: Doubleclicksearch);
    getRoot(): Doubleclicksearch;
    /**
     * doubleclicksearch.savedColumns.list
     * @desc Retrieve the list of saved columns for a specified advertiser.
     * @alias doubleclicksearch.savedColumns.list
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.advertiserId DS ID of the advertiser.
     * @param {string} params.agencyId DS ID of the agency.
     * @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?: any, options?: MethodOptions): AxiosPromise<Schema$SavedColumnList>;
    list(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$SavedColumnList>, callback?: BodyResponseCallback<Schema$SavedColumnList>): void;
}
