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 { CampaignAssetSet } from "./campaign_asset_set";
import { AssetSetAsset } from "./asset_set_asset";
import { AssetSet } from "./asset_set";
import { AdGroupAsset } from "./ad_group_asset";
import { CampaignAsset } from "./campaign_asset";
import { CustomerAsset } from "./customer_asset";
import { Asset } from "./asset";
import { AdGroupAd } from "./ad_group_ad";
import { AdGroupFeed } from "./ad_group_feed";
import { CampaignFeed } from "./campaign_feed";
import { FeedItem } from "./feed_item";
import { Feed } from "./feed";
import { CampaignCriterion } from "./campaign_criterion";
import { AdGroupBidModifier } from "./ad_group_bid_modifier";
import { CampaignBudget } from "./campaign_budget";
import { Campaign } from "./campaign";
import { AdGroupCriterion } from "./ad_group_criterion";
import { AdGroup } from "./ad_group";
import { Ad } from "./ad";
import { FieldMask } from "../../google/protobuf/field_mask";
import { ResourceChangeOperationEnum_ResourceChangeOperation } from "../enums/resource_change_operation";
import { ChangeClientTypeEnum_ChangeClientType } from "../enums/change_client_type";
import { ChangeEventResourceTypeEnum_ChangeEventResourceType } from "../enums/change_event_resource_type";
/**
 * Describes the granular change of returned resource of certain resource types.
 * Changes made through UI, API and new versions of Editor
 * by external users (including external users, and internal users that can be
 * shown externally) in the past 30 days will be shown. The change shows the old
 * values of the changed fields before the change and the new values right after
 * the change. ChangeEvent could have up to 3 minutes delay to reflect a new
 * change.
 *
 * @generated from protobuf message google.ads.googleads.v11.resources.ChangeEvent
 */
export interface ChangeEvent {
    /**
     * Output only. The resource name of the change event.
     * Change event resource names have the form:
     *
     * `customers/{customer_id}/changeEvents/{timestamp_micros}~{command_index}~{mutate_index}`
     *
     * @generated from protobuf field: string resource_name = 1;
     */
    resourceName: string;
    /**
     * Output only. Time at which the change was committed on this resource.
     *
     * @generated from protobuf field: string change_date_time = 2;
     */
    changeDateTime: string;
    /**
     * Output only. The type of the changed resource. This dictates what resource
     * will be set in old_resource and new_resource.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.ChangeEventResourceTypeEnum.ChangeEventResourceType change_resource_type = 3;
     */
    changeResourceType: ChangeEventResourceTypeEnum_ChangeEventResourceType;
    /**
     * Output only. The Simply resource this change occurred on.
     *
     * @generated from protobuf field: string change_resource_name = 4;
     */
    changeResourceName: string;
    /**
     * Output only. Where the change was made through.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.ChangeClientTypeEnum.ChangeClientType client_type = 5;
     */
    clientType: ChangeClientTypeEnum_ChangeClientType;
    /**
     * Output only. The email of the user who made this change.
     *
     * @generated from protobuf field: string user_email = 6;
     */
    userEmail: string;
    /**
     * Output only. The old resource before the change. Only changed fields will be populated.
     *
     * @generated from protobuf field: google.ads.googleads.v11.resources.ChangeEvent.ChangedResource old_resource = 7;
     */
    oldResource?: ChangeEvent_ChangedResource;
    /**
     * Output only. The new resource after the change. Only changed fields will be populated.
     *
     * @generated from protobuf field: google.ads.googleads.v11.resources.ChangeEvent.ChangedResource new_resource = 8;
     */
    newResource?: ChangeEvent_ChangedResource;
    /**
     * Output only. The operation on the changed resource.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.ResourceChangeOperationEnum.ResourceChangeOperation resource_change_operation = 9;
     */
    resourceChangeOperation: ResourceChangeOperationEnum_ResourceChangeOperation;
    /**
     * Output only. A list of fields that are changed in the returned resource.
     *
     * @generated from protobuf field: google.protobuf.FieldMask changed_fields = 10;
     */
    changedFields?: FieldMask;
    /**
     * Output only. The Campaign affected by this change.
     *
     * @generated from protobuf field: string campaign = 11;
     */
    campaign: string;
    /**
     * Output only. The AdGroup affected by this change.
     *
     * @generated from protobuf field: string ad_group = 12;
     */
    adGroup: string;
    /**
     * Output only. The Feed affected by this change.
     *
     * @generated from protobuf field: string feed = 13;
     */
    feed: string;
    /**
     * Output only. The FeedItem affected by this change.
     *
     * @generated from protobuf field: string feed_item = 14;
     */
    feedItem: string;
    /**
     * Output only. The Asset affected by this change.
     *
     * @generated from protobuf field: string asset = 20;
     */
    asset: string;
}
/**
 * A wrapper proto presenting all supported resources.
 * Only the resource of the change_resource_type will be set.
 *
 * @generated from protobuf message google.ads.googleads.v11.resources.ChangeEvent.ChangedResource
 */
export interface ChangeEvent_ChangedResource {
    /**
     * Output only. Set if change_resource_type == AD.
     *
     * @generated from protobuf field: google.ads.googleads.v11.resources.Ad ad = 1;
     */
    ad?: Ad;
    /**
     * Output only. Set if change_resource_type == AD_GROUP.
     *
     * @generated from protobuf field: google.ads.googleads.v11.resources.AdGroup ad_group = 2;
     */
    adGroup?: AdGroup;
    /**
     * Output only. Set if change_resource_type == AD_GROUP_CRITERION.
     *
     * @generated from protobuf field: google.ads.googleads.v11.resources.AdGroupCriterion ad_group_criterion = 3;
     */
    adGroupCriterion?: AdGroupCriterion;
    /**
     * Output only. Set if change_resource_type == CAMPAIGN.
     *
     * @generated from protobuf field: google.ads.googleads.v11.resources.Campaign campaign = 4;
     */
    campaign?: Campaign;
    /**
     * Output only. Set if change_resource_type == CAMPAIGN_BUDGET.
     *
     * @generated from protobuf field: google.ads.googleads.v11.resources.CampaignBudget campaign_budget = 5;
     */
    campaignBudget?: CampaignBudget;
    /**
     * Output only. Set if change_resource_type == AD_GROUP_BID_MODIFIER.
     *
     * @generated from protobuf field: google.ads.googleads.v11.resources.AdGroupBidModifier ad_group_bid_modifier = 6;
     */
    adGroupBidModifier?: AdGroupBidModifier;
    /**
     * Output only. Set if change_resource_type == CAMPAIGN_CRITERION.
     *
     * @generated from protobuf field: google.ads.googleads.v11.resources.CampaignCriterion campaign_criterion = 7;
     */
    campaignCriterion?: CampaignCriterion;
    /**
     * Output only. Set if change_resource_type == FEED.
     *
     * @generated from protobuf field: google.ads.googleads.v11.resources.Feed feed = 8;
     */
    feed?: Feed;
    /**
     * Output only. Set if change_resource_type == FEED_ITEM.
     *
     * @generated from protobuf field: google.ads.googleads.v11.resources.FeedItem feed_item = 9;
     */
    feedItem?: FeedItem;
    /**
     * Output only. Set if change_resource_type == CAMPAIGN_FEED.
     *
     * @generated from protobuf field: google.ads.googleads.v11.resources.CampaignFeed campaign_feed = 10;
     */
    campaignFeed?: CampaignFeed;
    /**
     * Output only. Set if change_resource_type == AD_GROUP_FEED.
     *
     * @generated from protobuf field: google.ads.googleads.v11.resources.AdGroupFeed ad_group_feed = 11;
     */
    adGroupFeed?: AdGroupFeed;
    /**
     * Output only. Set if change_resource_type == AD_GROUP_AD.
     *
     * @generated from protobuf field: google.ads.googleads.v11.resources.AdGroupAd ad_group_ad = 12;
     */
    adGroupAd?: AdGroupAd;
    /**
     * Output only. Set if change_resource_type == ASSET.
     *
     * @generated from protobuf field: google.ads.googleads.v11.resources.Asset asset = 13;
     */
    asset?: Asset;
    /**
     * Output only. Set if change_resource_type == CUSTOMER_ASSET.
     *
     * @generated from protobuf field: google.ads.googleads.v11.resources.CustomerAsset customer_asset = 14;
     */
    customerAsset?: CustomerAsset;
    /**
     * Output only. Set if change_resource_type == CAMPAIGN_ASSET.
     *
     * @generated from protobuf field: google.ads.googleads.v11.resources.CampaignAsset campaign_asset = 15;
     */
    campaignAsset?: CampaignAsset;
    /**
     * Output only. Set if change_resource_type == AD_GROUP_ASSET.
     *
     * @generated from protobuf field: google.ads.googleads.v11.resources.AdGroupAsset ad_group_asset = 16;
     */
    adGroupAsset?: AdGroupAsset;
    /**
     * Output only. Set if change_resource_type == ASSET_SET.
     *
     * @generated from protobuf field: google.ads.googleads.v11.resources.AssetSet asset_set = 17;
     */
    assetSet?: AssetSet;
    /**
     * Output only. Set if change_resource_type == ASSET_SET_ASSET.
     *
     * @generated from protobuf field: google.ads.googleads.v11.resources.AssetSetAsset asset_set_asset = 18;
     */
    assetSetAsset?: AssetSetAsset;
    /**
     * Output only. Set if change_resource_type == CAMPAIGN_ASSET_SET.
     *
     * @generated from protobuf field: google.ads.googleads.v11.resources.CampaignAssetSet campaign_asset_set = 19;
     */
    campaignAssetSet?: CampaignAssetSet;
}
declare class ChangeEvent$Type extends MessageType<ChangeEvent> {
    constructor();
    create(value?: PartialMessage<ChangeEvent>): ChangeEvent;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ChangeEvent): ChangeEvent;
    internalBinaryWrite(message: ChangeEvent, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.resources.ChangeEvent
 */
export declare const ChangeEvent: ChangeEvent$Type;
declare class ChangeEvent_ChangedResource$Type extends MessageType<ChangeEvent_ChangedResource> {
    constructor();
    create(value?: PartialMessage<ChangeEvent_ChangedResource>): ChangeEvent_ChangedResource;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ChangeEvent_ChangedResource): ChangeEvent_ChangedResource;
    internalBinaryWrite(message: ChangeEvent_ChangedResource, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.resources.ChangeEvent.ChangedResource
 */
export declare const ChangeEvent_ChangedResource: ChangeEvent_ChangedResource$Type;
export {};
