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 { CriterionCategoryLocaleAvailabilityModeEnum_CriterionCategoryLocaleAvailabilityMode } from "../enums/criterion_category_locale_availability_mode";
import { AdvertisingChannelSubTypeEnum_AdvertisingChannelSubType } from "../enums/advertising_channel_sub_type";
import { AdvertisingChannelTypeEnum_AdvertisingChannelType } from "../enums/advertising_channel_type";
import { CriterionCategoryChannelAvailabilityModeEnum_CriterionCategoryChannelAvailabilityMode } from "../enums/criterion_category_channel_availability_mode";
/**
 * Information of category availability, per advertising channel.
 *
 * @generated from protobuf message google.ads.googleads.v11.common.CriterionCategoryAvailability
 */
export interface CriterionCategoryAvailability {
    /**
     * Channel types and subtypes that are available to the category.
     *
     * @generated from protobuf field: google.ads.googleads.v11.common.CriterionCategoryChannelAvailability channel = 1;
     */
    channel?: CriterionCategoryChannelAvailability;
    /**
     * Locales that are available to the category for the channel.
     *
     * @generated from protobuf field: repeated google.ads.googleads.v11.common.CriterionCategoryLocaleAvailability locale = 2;
     */
    locale: CriterionCategoryLocaleAvailability[];
}
/**
 * Information of advertising channel type and subtypes a category is available
 * in.
 *
 * @generated from protobuf message google.ads.googleads.v11.common.CriterionCategoryChannelAvailability
 */
export interface CriterionCategoryChannelAvailability {
    /**
     * Format of the channel availability. Can be ALL_CHANNELS (the rest of the
     * fields will not be set), CHANNEL_TYPE (only advertising_channel_type type
     * will be set, the category is available to all sub types under it) or
     * CHANNEL_TYPE_AND_SUBTYPES (advertising_channel_type,
     * advertising_channel_sub_type, and include_default_channel_sub_type will all
     * be set).
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.CriterionCategoryChannelAvailabilityModeEnum.CriterionCategoryChannelAvailabilityMode availability_mode = 1;
     */
    availabilityMode: CriterionCategoryChannelAvailabilityModeEnum_CriterionCategoryChannelAvailabilityMode;
    /**
     * Channel type the category is available to.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.AdvertisingChannelTypeEnum.AdvertisingChannelType advertising_channel_type = 2;
     */
    advertisingChannelType: AdvertisingChannelTypeEnum_AdvertisingChannelType;
    /**
     * Channel subtypes under the channel type the category is available to.
     *
     * @generated from protobuf field: repeated google.ads.googleads.v11.enums.AdvertisingChannelSubTypeEnum.AdvertisingChannelSubType advertising_channel_sub_type = 3;
     */
    advertisingChannelSubType: AdvertisingChannelSubTypeEnum_AdvertisingChannelSubType[];
    /**
     * Whether default channel sub type is included. For example,
     * advertising_channel_type being DISPLAY and include_default_channel_sub_type
     * being false means that the default display campaign where channel sub type
     * is not set is not included in this availability configuration.
     *
     * @generated from protobuf field: optional bool include_default_channel_sub_type = 5;
     */
    includeDefaultChannelSubType?: boolean;
}
/**
 * Information about which locales a category is available in.
 *
 * @generated from protobuf message google.ads.googleads.v11.common.CriterionCategoryLocaleAvailability
 */
export interface CriterionCategoryLocaleAvailability {
    /**
     * Format of the locale availability. Can be LAUNCHED_TO_ALL (both country and
     * language will be empty), COUNTRY (only country will be set), LANGUAGE (only
     * language wil be set), COUNTRY_AND_LANGUAGE (both country and language will
     * be set).
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.CriterionCategoryLocaleAvailabilityModeEnum.CriterionCategoryLocaleAvailabilityMode availability_mode = 1;
     */
    availabilityMode: CriterionCategoryLocaleAvailabilityModeEnum_CriterionCategoryLocaleAvailabilityMode;
    /**
     * Code of the country.
     *
     * @generated from protobuf field: optional string country_code = 4;
     */
    countryCode?: string;
    /**
     * Code of the language.
     *
     * @generated from protobuf field: optional string language_code = 5;
     */
    languageCode?: string;
}
declare class CriterionCategoryAvailability$Type extends MessageType<CriterionCategoryAvailability> {
    constructor();
    create(value?: PartialMessage<CriterionCategoryAvailability>): CriterionCategoryAvailability;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: CriterionCategoryAvailability): CriterionCategoryAvailability;
    internalBinaryWrite(message: CriterionCategoryAvailability, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.common.CriterionCategoryAvailability
 */
export declare const CriterionCategoryAvailability: CriterionCategoryAvailability$Type;
declare class CriterionCategoryChannelAvailability$Type extends MessageType<CriterionCategoryChannelAvailability> {
    constructor();
    create(value?: PartialMessage<CriterionCategoryChannelAvailability>): CriterionCategoryChannelAvailability;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: CriterionCategoryChannelAvailability): CriterionCategoryChannelAvailability;
    internalBinaryWrite(message: CriterionCategoryChannelAvailability, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.common.CriterionCategoryChannelAvailability
 */
export declare const CriterionCategoryChannelAvailability: CriterionCategoryChannelAvailability$Type;
declare class CriterionCategoryLocaleAvailability$Type extends MessageType<CriterionCategoryLocaleAvailability> {
    constructor();
    create(value?: PartialMessage<CriterionCategoryLocaleAvailability>): CriterionCategoryLocaleAvailability;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: CriterionCategoryLocaleAvailability): CriterionCategoryLocaleAvailability;
    internalBinaryWrite(message: CriterionCategoryLocaleAvailability, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.common.CriterionCategoryLocaleAvailability
 */
export declare const CriterionCategoryLocaleAvailability: CriterionCategoryLocaleAvailability$Type;
export {};
