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 { DiscoveryCarouselAdInfo } from "../common/ad_type_infos";
import { DiscoveryMultiAssetAdInfo } from "../common/ad_type_infos";
import { AppPreRegistrationAdInfo } from "../common/ad_type_infos";
import { SmartCampaignAdInfo } from "../common/ad_type_infos";
import { ShoppingComparisonListingAdInfo } from "../common/ad_type_infos";
import { AppEngagementAdInfo } from "../common/ad_type_infos";
import { DisplayUploadAdInfo } from "../common/ad_type_infos";
import { LocalAdInfo } from "../common/ad_type_infos";
import { ResponsiveDisplayAdInfo } from "../common/ad_type_infos";
import { LegacyAppInstallAdInfo } from "../common/ad_type_infos";
import { AppAdInfo } from "../common/ad_type_infos";
import { LegacyResponsiveDisplayAdInfo } from "../common/ad_type_infos";
import { ResponsiveSearchAdInfo } from "../common/ad_type_infos";
import { VideoResponsiveAdInfo } from "../common/ad_type_infos";
import { VideoAdInfo } from "../common/ad_type_infos";
import { ImageAdInfo } from "../common/ad_type_infos";
import { GmailAdInfo } from "../common/ad_type_infos";
import { ShoppingProductAdInfo } from "../common/ad_type_infos";
import { ShoppingSmartAdInfo } from "../common/ad_type_infos";
import { HotelAdInfo } from "../common/ad_type_infos";
import { ExpandedDynamicSearchAdInfo } from "../common/ad_type_infos";
import { CallAdInfo } from "../common/ad_type_infos";
import { ExpandedTextAdInfo } from "../common/ad_type_infos";
import { TextAdInfo } from "../common/ad_type_infos";
import { SystemManagedResourceSourceEnum_SystemManagedResourceSource } from "../enums/system_managed_entity_source";
import { UrlCollection } from "../common/url_collection";
import { DeviceEnum_Device } from "../enums/device";
import { AdTypeEnum_AdType } from "../enums/ad_type";
import { CustomParameter } from "../common/custom_parameter";
import { FinalAppUrl } from "../common/final_app_url";
/**
 * An ad.
 *
 * @generated from protobuf message google.ads.googleads.v11.resources.Ad
 */
export interface Ad {
    /**
     * Immutable. The resource name of the ad.
     * Ad resource names have the form:
     *
     * `customers/{customer_id}/ads/{ad_id}`
     *
     * @generated from protobuf field: string resource_name = 37;
     */
    resourceName: string;
    /**
     * Output only. The ID of the ad.
     *
     * @generated from protobuf field: optional int64 id = 40;
     */
    id?: bigint;
    /**
     * The list of possible final URLs after all cross-domain redirects for the
     * ad.
     *
     * @generated from protobuf field: repeated string final_urls = 41;
     */
    finalUrls: string[];
    /**
     * A list of final app URLs that will be used on mobile if the user has the
     * specific app installed.
     *
     * @generated from protobuf field: repeated google.ads.googleads.v11.common.FinalAppUrl final_app_urls = 35;
     */
    finalAppUrls: FinalAppUrl[];
    /**
     * The list of possible final mobile URLs after all cross-domain redirects
     * for the ad.
     *
     * @generated from protobuf field: repeated string final_mobile_urls = 42;
     */
    finalMobileUrls: string[];
    /**
     * The URL template for constructing a tracking URL.
     *
     * @generated from protobuf field: optional string tracking_url_template = 43;
     */
    trackingUrlTemplate?: string;
    /**
     * The suffix to use when constructing a final URL.
     *
     * @generated from protobuf field: optional string final_url_suffix = 44;
     */
    finalUrlSuffix?: string;
    /**
     * The list of mappings that can be used to substitute custom parameter tags
     * in a `tracking_url_template`, `final_urls`, or `mobile_final_urls`.
     * For mutates, use url custom parameter operations.
     *
     * @generated from protobuf field: repeated google.ads.googleads.v11.common.CustomParameter url_custom_parameters = 10;
     */
    urlCustomParameters: CustomParameter[];
    /**
     * The URL that appears in the ad description for some ad formats.
     *
     * @generated from protobuf field: optional string display_url = 45;
     */
    displayUrl?: string;
    /**
     * Output only. The type of ad.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.AdTypeEnum.AdType type = 5;
     */
    type: AdTypeEnum_AdType;
    /**
     * Output only. Indicates if this ad was automatically added by Google Ads and not by a
     * user. For example, this could happen when ads are automatically created as
     * suggestions for new ads based on knowledge of how existing ads are
     * performing.
     *
     * @generated from protobuf field: optional bool added_by_google_ads = 46;
     */
    addedByGoogleAds?: boolean;
    /**
     * The device preference for the ad. You can only specify a preference for
     * mobile devices. When this preference is set the ad will be preferred over
     * other ads when being displayed on a mobile device. The ad can still be
     * displayed on other device types, for example, if no other ads are
     * available. If unspecified (no device preference), all devices are targeted.
     * This is only supported by some ad types.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.DeviceEnum.Device device_preference = 20;
     */
    devicePreference: DeviceEnum_Device;
    /**
     * Additional URLs for the ad that are tagged with a unique identifier that
     * can be referenced from other fields in the ad.
     *
     * @generated from protobuf field: repeated google.ads.googleads.v11.common.UrlCollection url_collections = 26;
     */
    urlCollections: UrlCollection[];
    /**
     * Immutable. The name of the ad. This is only used to be able to identify the ad. It
     * does not need to be unique and does not affect the served ad. The name
     * field is currently only supported for DisplayUploadAd, ImageAd,
     * ShoppingComparisonListingAd and VideoAd.
     *
     * @generated from protobuf field: optional string name = 47;
     */
    name?: string;
    /**
     * Output only. If this ad is system managed, then this field will indicate the source.
     * This field is read-only.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.SystemManagedResourceSourceEnum.SystemManagedResourceSource system_managed_resource_source = 27;
     */
    systemManagedResourceSource: SystemManagedResourceSourceEnum_SystemManagedResourceSource;
    /**
     * @generated from protobuf oneof: ad_data
     */
    adData: {
        oneofKind: "textAd";
        /**
         * Immutable. Details pertaining to a text ad.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.TextAdInfo text_ad = 6;
         */
        textAd: TextAdInfo;
    } | {
        oneofKind: "expandedTextAd";
        /**
         * Details pertaining to an expanded text ad.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.ExpandedTextAdInfo expanded_text_ad = 7;
         */
        expandedTextAd: ExpandedTextAdInfo;
    } | {
        oneofKind: "callAd";
        /**
         * Details pertaining to a call ad.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.CallAdInfo call_ad = 49;
         */
        callAd: CallAdInfo;
    } | {
        oneofKind: "expandedDynamicSearchAd";
        /**
         * Immutable. Details pertaining to an Expanded Dynamic Search Ad.
         * This type of ad has its headline, final URLs, and display URL
         * auto-generated at serving time according to domain name specific
         * information provided by `dynamic_search_ads_setting` linked at the
         * campaign level.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.ExpandedDynamicSearchAdInfo expanded_dynamic_search_ad = 14;
         */
        expandedDynamicSearchAd: ExpandedDynamicSearchAdInfo;
    } | {
        oneofKind: "hotelAd";
        /**
         * Details pertaining to a hotel ad.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.HotelAdInfo hotel_ad = 15;
         */
        hotelAd: HotelAdInfo;
    } | {
        oneofKind: "shoppingSmartAd";
        /**
         * Details pertaining to a Smart Shopping ad.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.ShoppingSmartAdInfo shopping_smart_ad = 17;
         */
        shoppingSmartAd: ShoppingSmartAdInfo;
    } | {
        oneofKind: "shoppingProductAd";
        /**
         * Details pertaining to a Shopping product ad.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.ShoppingProductAdInfo shopping_product_ad = 18;
         */
        shoppingProductAd: ShoppingProductAdInfo;
    } | {
        oneofKind: "gmailAd";
        /**
         * Immutable. Details pertaining to a Gmail ad.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.GmailAdInfo gmail_ad = 21;
         */
        gmailAd: GmailAdInfo;
    } | {
        oneofKind: "imageAd";
        /**
         * Immutable. Details pertaining to an Image ad.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.ImageAdInfo image_ad = 22;
         */
        imageAd: ImageAdInfo;
    } | {
        oneofKind: "videoAd";
        /**
         * Details pertaining to a Video ad.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.VideoAdInfo video_ad = 24;
         */
        videoAd: VideoAdInfo;
    } | {
        oneofKind: "videoResponsiveAd";
        /**
         * Details pertaining to a Video responsive ad.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.VideoResponsiveAdInfo video_responsive_ad = 39;
         */
        videoResponsiveAd: VideoResponsiveAdInfo;
    } | {
        oneofKind: "responsiveSearchAd";
        /**
         * Details pertaining to a responsive search ad.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.ResponsiveSearchAdInfo responsive_search_ad = 25;
         */
        responsiveSearchAd: ResponsiveSearchAdInfo;
    } | {
        oneofKind: "legacyResponsiveDisplayAd";
        /**
         * Details pertaining to a legacy responsive display ad.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.LegacyResponsiveDisplayAdInfo legacy_responsive_display_ad = 28;
         */
        legacyResponsiveDisplayAd: LegacyResponsiveDisplayAdInfo;
    } | {
        oneofKind: "appAd";
        /**
         * Details pertaining to an app ad.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.AppAdInfo app_ad = 29;
         */
        appAd: AppAdInfo;
    } | {
        oneofKind: "legacyAppInstallAd";
        /**
         * Immutable. Details pertaining to a legacy app install ad.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.LegacyAppInstallAdInfo legacy_app_install_ad = 30;
         */
        legacyAppInstallAd: LegacyAppInstallAdInfo;
    } | {
        oneofKind: "responsiveDisplayAd";
        /**
         * Details pertaining to a responsive display ad.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.ResponsiveDisplayAdInfo responsive_display_ad = 31;
         */
        responsiveDisplayAd: ResponsiveDisplayAdInfo;
    } | {
        oneofKind: "localAd";
        /**
         * Details pertaining to a local ad.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.LocalAdInfo local_ad = 32;
         */
        localAd: LocalAdInfo;
    } | {
        oneofKind: "displayUploadAd";
        /**
         * Details pertaining to a display upload ad.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.DisplayUploadAdInfo display_upload_ad = 33;
         */
        displayUploadAd: DisplayUploadAdInfo;
    } | {
        oneofKind: "appEngagementAd";
        /**
         * Details pertaining to an app engagement ad.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.AppEngagementAdInfo app_engagement_ad = 34;
         */
        appEngagementAd: AppEngagementAdInfo;
    } | {
        oneofKind: "shoppingComparisonListingAd";
        /**
         * Details pertaining to a Shopping Comparison Listing ad.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.ShoppingComparisonListingAdInfo shopping_comparison_listing_ad = 36;
         */
        shoppingComparisonListingAd: ShoppingComparisonListingAdInfo;
    } | {
        oneofKind: "smartCampaignAd";
        /**
         * Details pertaining to a Smart campaign ad.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.SmartCampaignAdInfo smart_campaign_ad = 48;
         */
        smartCampaignAd: SmartCampaignAdInfo;
    } | {
        oneofKind: "appPreRegistrationAd";
        /**
         * Details pertaining to an app pre-registration ad.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.AppPreRegistrationAdInfo app_pre_registration_ad = 50;
         */
        appPreRegistrationAd: AppPreRegistrationAdInfo;
    } | {
        oneofKind: "discoveryMultiAssetAd";
        /**
         * Details pertaining to a discovery multi asset ad.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.DiscoveryMultiAssetAdInfo discovery_multi_asset_ad = 51;
         */
        discoveryMultiAssetAd: DiscoveryMultiAssetAdInfo;
    } | {
        oneofKind: "discoveryCarouselAd";
        /**
         * Details pertaining to a discovery carousel ad.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.DiscoveryCarouselAdInfo discovery_carousel_ad = 52;
         */
        discoveryCarouselAd: DiscoveryCarouselAdInfo;
    } | {
        oneofKind: undefined;
    };
}
declare class Ad$Type extends MessageType<Ad> {
    constructor();
    create(value?: PartialMessage<Ad>): Ad;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: Ad): Ad;
    internalBinaryWrite(message: Ad, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.resources.Ad
 */
export declare const Ad: Ad$Type;
export {};
