import type { BinaryWriteOptions } from "@protobuf-ts/runtime";
import type { IBinaryWriter } from "@protobuf-ts/runtime";
import type { BinaryReadOptions } from "@protobuf-ts/runtime";
import type { IBinaryReader } from "@protobuf-ts/runtime";
import type { PartialMessage } from "@protobuf-ts/runtime";
import { MessageType } from "@protobuf-ts/runtime";
import { KeywordPlanConceptGroupTypeEnum_KeywordPlanConceptGroupType } from "../enums/keyword_plan_concept_group_type";
import { DeviceEnum_Device } from "../enums/device";
import { KeywordPlanAggregateMetricTypeEnum_KeywordPlanAggregateMetricType } from "../enums/keyword_plan_aggregate_metric_type";
import { MonthOfYearEnum_MonthOfYear } from "../enums/month_of_year";
import { YearMonthRange } from "./dates";
import { KeywordPlanCompetitionLevelEnum_KeywordPlanCompetitionLevel } from "../enums/keyword_plan_competition_level";
/**
 * Historical metrics specific to the targeting options selected.
 * Targeting options include geographies, network, etc.
 * Refer to https://support.google.com/google-ads/answer/3022575 for more
 * details.
 *
 * @generated from protobuf message google.ads.googleads.v11.common.KeywordPlanHistoricalMetrics
 */
export interface KeywordPlanHistoricalMetrics {
    /**
     * Approximate number of monthly searches on this query averaged
     * for the past 12 months.
     *
     * @generated from protobuf field: optional int64 avg_monthly_searches = 7;
     */
    avgMonthlySearches?: bigint;
    /**
     * Approximate number of searches on this query for the past twelve months.
     *
     * @generated from protobuf field: repeated google.ads.googleads.v11.common.MonthlySearchVolume monthly_search_volumes = 6;
     */
    monthlySearchVolumes: MonthlySearchVolume[];
    /**
     * The competition level for the query.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.KeywordPlanCompetitionLevelEnum.KeywordPlanCompetitionLevel competition = 2;
     */
    competition: KeywordPlanCompetitionLevelEnum_KeywordPlanCompetitionLevel;
    /**
     * The competition index for the query in the range [0, 100].
     * Shows how competitive ad placement is for a keyword.
     * The level of competition from 0-100 is determined by the number of ad slots
     * filled divided by the total number of ad slots available. If not enough
     * data is available, null is returned.
     *
     * @generated from protobuf field: optional int64 competition_index = 8;
     */
    competitionIndex?: bigint;
    /**
     * Top of page bid low range (20th percentile) in micros for the keyword.
     *
     * @generated from protobuf field: optional int64 low_top_of_page_bid_micros = 9;
     */
    lowTopOfPageBidMicros?: bigint;
    /**
     * Top of page bid high range (80th percentile) in micros for the keyword.
     *
     * @generated from protobuf field: optional int64 high_top_of_page_bid_micros = 10;
     */
    highTopOfPageBidMicros?: bigint;
    /**
     * Average Cost Per Click in micros for the keyword.
     *
     * @generated from protobuf field: optional int64 average_cpc_micros = 11;
     */
    averageCpcMicros?: bigint;
}
/**
 * Historical metrics options.
 *
 * @generated from protobuf message google.ads.googleads.v11.common.HistoricalMetricsOptions
 */
export interface HistoricalMetricsOptions {
    /**
     * The year month range for historical metrics. If not specified the searches
     * will be returned for past 12 months.
     * Searches data is available for the past 4 years. If the search volume is
     * not available for the entire year_month_range provided, the subset of the
     * year month range for which search volume is available will be returned.
     *
     * @generated from protobuf field: optional google.ads.googleads.v11.common.YearMonthRange year_month_range = 1;
     */
    yearMonthRange?: YearMonthRange;
    /**
     * Indicates whether to include average cost per click value.
     * Average CPC is a legacy value that will be removed and replaced in the
     * future, and as such we are including it as an optioanl value so clients
     * only use it when strictly necessary and to better track clients that use
     * this value.
     *
     * @generated from protobuf field: bool include_average_cpc = 2;
     */
    includeAverageCpc: boolean;
}
/**
 * Monthly search volume.
 *
 * @generated from protobuf message google.ads.googleads.v11.common.MonthlySearchVolume
 */
export interface MonthlySearchVolume {
    /**
     * The year of the search volume (for example, 2020).
     *
     * @generated from protobuf field: optional int64 year = 4;
     */
    year?: bigint;
    /**
     * The month of the search volume.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.MonthOfYearEnum.MonthOfYear month = 2;
     */
    month: MonthOfYearEnum_MonthOfYear;
    /**
     * Approximate number of searches for the month.
     * A null value indicates the search volume is unavailable for
     * that month.
     *
     * @generated from protobuf field: optional int64 monthly_searches = 5;
     */
    monthlySearches?: bigint;
}
/**
 * The aggregate metrics specification of the request.
 *
 * @generated from protobuf message google.ads.googleads.v11.common.KeywordPlanAggregateMetrics
 */
export interface KeywordPlanAggregateMetrics {
    /**
     * The list of aggregate metrics to fetch data.
     *
     * @generated from protobuf field: repeated google.ads.googleads.v11.enums.KeywordPlanAggregateMetricTypeEnum.KeywordPlanAggregateMetricType aggregate_metric_types = 1;
     */
    aggregateMetricTypes: KeywordPlanAggregateMetricTypeEnum_KeywordPlanAggregateMetricType[];
}
/**
 * The aggregated historical metrics for keyword plan keywords.
 *
 * @generated from protobuf message google.ads.googleads.v11.common.KeywordPlanAggregateMetricResults
 */
export interface KeywordPlanAggregateMetricResults {
    /**
     * The aggregate searches for all the keywords segmented by device
     * for the specified time.
     * Supports the following device types: MOBILE, TABLET, DESKTOP.
     *
     * This is only set when KeywordPlanAggregateMetricTypeEnum.DEVICE is set
     * in the KeywordPlanAggregateMetrics field in the request.
     *
     * @generated from protobuf field: repeated google.ads.googleads.v11.common.KeywordPlanDeviceSearches device_searches = 1;
     */
    deviceSearches: KeywordPlanDeviceSearches[];
}
/**
 * The total searches for the device type during the specified time period.
 *
 * @generated from protobuf message google.ads.googleads.v11.common.KeywordPlanDeviceSearches
 */
export interface KeywordPlanDeviceSearches {
    /**
     * The device type.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.DeviceEnum.Device device = 1;
     */
    device: DeviceEnum_Device;
    /**
     * The total searches for the device.
     *
     * @generated from protobuf field: optional int64 search_count = 2;
     */
    searchCount?: bigint;
}
/**
 * The Annotations for the Keyword plan keywords.
 *
 * @generated from protobuf message google.ads.googleads.v11.common.KeywordAnnotations
 */
export interface KeywordAnnotations {
    /**
     * The list of concepts for the keyword.
     *
     * @generated from protobuf field: repeated google.ads.googleads.v11.common.KeywordConcept concepts = 1;
     */
    concepts: KeywordConcept[];
}
/**
 * The concept for the keyword.
 *
 * @generated from protobuf message google.ads.googleads.v11.common.KeywordConcept
 */
export interface KeywordConcept {
    /**
     * The concept name for the keyword in the concept_group.
     *
     * @generated from protobuf field: string name = 1;
     */
    name: string;
    /**
     * The concept group of the concept details.
     *
     * @generated from protobuf field: google.ads.googleads.v11.common.ConceptGroup concept_group = 2;
     */
    conceptGroup?: ConceptGroup;
}
/**
 * The concept group for the keyword concept.
 *
 * @generated from protobuf message google.ads.googleads.v11.common.ConceptGroup
 */
export interface ConceptGroup {
    /**
     * The concept group name.
     *
     * @generated from protobuf field: string name = 1;
     */
    name: string;
    /**
     * The concept group type.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.KeywordPlanConceptGroupTypeEnum.KeywordPlanConceptGroupType type = 2;
     */
    type: KeywordPlanConceptGroupTypeEnum_KeywordPlanConceptGroupType;
}
declare class KeywordPlanHistoricalMetrics$Type extends MessageType<KeywordPlanHistoricalMetrics> {
    constructor();
    create(value?: PartialMessage<KeywordPlanHistoricalMetrics>): KeywordPlanHistoricalMetrics;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: KeywordPlanHistoricalMetrics): KeywordPlanHistoricalMetrics;
    internalBinaryWrite(message: KeywordPlanHistoricalMetrics, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.common.KeywordPlanHistoricalMetrics
 */
export declare const KeywordPlanHistoricalMetrics: KeywordPlanHistoricalMetrics$Type;
declare class HistoricalMetricsOptions$Type extends MessageType<HistoricalMetricsOptions> {
    constructor();
    create(value?: PartialMessage<HistoricalMetricsOptions>): HistoricalMetricsOptions;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: HistoricalMetricsOptions): HistoricalMetricsOptions;
    internalBinaryWrite(message: HistoricalMetricsOptions, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.common.HistoricalMetricsOptions
 */
export declare const HistoricalMetricsOptions: HistoricalMetricsOptions$Type;
declare class MonthlySearchVolume$Type extends MessageType<MonthlySearchVolume> {
    constructor();
    create(value?: PartialMessage<MonthlySearchVolume>): MonthlySearchVolume;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: MonthlySearchVolume): MonthlySearchVolume;
    internalBinaryWrite(message: MonthlySearchVolume, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.common.MonthlySearchVolume
 */
export declare const MonthlySearchVolume: MonthlySearchVolume$Type;
declare class KeywordPlanAggregateMetrics$Type extends MessageType<KeywordPlanAggregateMetrics> {
    constructor();
    create(value?: PartialMessage<KeywordPlanAggregateMetrics>): KeywordPlanAggregateMetrics;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: KeywordPlanAggregateMetrics): KeywordPlanAggregateMetrics;
    internalBinaryWrite(message: KeywordPlanAggregateMetrics, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.common.KeywordPlanAggregateMetrics
 */
export declare const KeywordPlanAggregateMetrics: KeywordPlanAggregateMetrics$Type;
declare class KeywordPlanAggregateMetricResults$Type extends MessageType<KeywordPlanAggregateMetricResults> {
    constructor();
    create(value?: PartialMessage<KeywordPlanAggregateMetricResults>): KeywordPlanAggregateMetricResults;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: KeywordPlanAggregateMetricResults): KeywordPlanAggregateMetricResults;
    internalBinaryWrite(message: KeywordPlanAggregateMetricResults, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.common.KeywordPlanAggregateMetricResults
 */
export declare const KeywordPlanAggregateMetricResults: KeywordPlanAggregateMetricResults$Type;
declare class KeywordPlanDeviceSearches$Type extends MessageType<KeywordPlanDeviceSearches> {
    constructor();
    create(value?: PartialMessage<KeywordPlanDeviceSearches>): KeywordPlanDeviceSearches;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: KeywordPlanDeviceSearches): KeywordPlanDeviceSearches;
    internalBinaryWrite(message: KeywordPlanDeviceSearches, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.common.KeywordPlanDeviceSearches
 */
export declare const KeywordPlanDeviceSearches: KeywordPlanDeviceSearches$Type;
declare class KeywordAnnotations$Type extends MessageType<KeywordAnnotations> {
    constructor();
    create(value?: PartialMessage<KeywordAnnotations>): KeywordAnnotations;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: KeywordAnnotations): KeywordAnnotations;
    internalBinaryWrite(message: KeywordAnnotations, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.common.KeywordAnnotations
 */
export declare const KeywordAnnotations: KeywordAnnotations$Type;
declare class KeywordConcept$Type extends MessageType<KeywordConcept> {
    constructor();
    create(value?: PartialMessage<KeywordConcept>): KeywordConcept;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: KeywordConcept): KeywordConcept;
    internalBinaryWrite(message: KeywordConcept, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.common.KeywordConcept
 */
export declare const KeywordConcept: KeywordConcept$Type;
declare class ConceptGroup$Type extends MessageType<ConceptGroup> {
    constructor();
    create(value?: PartialMessage<ConceptGroup>): ConceptGroup;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ConceptGroup): ConceptGroup;
    internalBinaryWrite(message: ConceptGroup, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.common.ConceptGroup
 */
export declare const ConceptGroup: ConceptGroup$Type;
export {};
