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 { FeedAttributeTypeEnum_FeedAttributeType } from "../enums/feed_attribute_type";
import { AffiliateLocationFeedRelationshipTypeEnum_AffiliateLocationFeedRelationshipType } from "../enums/affiliate_location_feed_relationship_type";
import { FeedStatusEnum_FeedStatus } from "../enums/feed_status";
import { FeedOriginEnum_FeedOrigin } from "../enums/feed_origin";
/**
 * A feed.
 *
 * @generated from protobuf message google.ads.googleads.v11.resources.Feed
 */
export interface Feed {
    /**
     * Immutable. The resource name of the feed.
     * Feed resource names have the form:
     *
     * `customers/{customer_id}/feeds/{feed_id}`
     *
     * @generated from protobuf field: string resource_name = 1;
     */
    resourceName: string;
    /**
     * Output only. The ID of the feed.
     * This field is read-only.
     *
     * @generated from protobuf field: optional int64 id = 11;
     */
    id?: bigint;
    /**
     * Immutable. Name of the feed. Required.
     *
     * @generated from protobuf field: optional string name = 12;
     */
    name?: string;
    /**
     * The Feed's attributes. Required on CREATE, unless
     * system_feed_generation_data is provided, in which case Google Ads will
     * update the feed with the correct attributes.
     * Disallowed on UPDATE. Use attribute_operations to add new attributes.
     *
     * @generated from protobuf field: repeated google.ads.googleads.v11.resources.FeedAttribute attributes = 4;
     */
    attributes: FeedAttribute[];
    /**
     * The list of operations changing the feed attributes. Attributes can only
     * be added, not removed.
     *
     * @generated from protobuf field: repeated google.ads.googleads.v11.resources.FeedAttributeOperation attribute_operations = 9;
     */
    attributeOperations: FeedAttributeOperation[];
    /**
     * Immutable. Specifies who manages the FeedAttributes for the Feed.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.FeedOriginEnum.FeedOrigin origin = 5;
     */
    origin: FeedOriginEnum_FeedOrigin;
    /**
     * Output only. Status of the feed.
     * This field is read-only.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.FeedStatusEnum.FeedStatus status = 8;
     */
    status: FeedStatusEnum_FeedStatus;
    /**
     * @generated from protobuf oneof: system_feed_generation_data
     */
    systemFeedGenerationData: {
        oneofKind: "placesLocationFeedData";
        /**
         * Data used to configure a location feed populated from Business Profile.
         *
         * @generated from protobuf field: google.ads.googleads.v11.resources.Feed.PlacesLocationFeedData places_location_feed_data = 6;
         */
        placesLocationFeedData: Feed_PlacesLocationFeedData;
    } | {
        oneofKind: "affiliateLocationFeedData";
        /**
         * Data used to configure an affiliate location feed populated with
         * the specified chains.
         *
         * @generated from protobuf field: google.ads.googleads.v11.resources.Feed.AffiliateLocationFeedData affiliate_location_feed_data = 7;
         */
        affiliateLocationFeedData: Feed_AffiliateLocationFeedData;
    } | {
        oneofKind: undefined;
    };
}
/**
 * Data used to configure a location feed populated from Business Profile.
 *
 * @generated from protobuf message google.ads.googleads.v11.resources.Feed.PlacesLocationFeedData
 */
export interface Feed_PlacesLocationFeedData {
    /**
     * Immutable. Required authentication token (from OAuth API) for the email.
     * This field can only be specified in a create request. All its subfields
     * are not selectable.
     *
     * @generated from protobuf field: google.ads.googleads.v11.resources.Feed.PlacesLocationFeedData.OAuthInfo oauth_info = 1;
     */
    oauthInfo?: Feed_PlacesLocationFeedData_OAuthInfo;
    /**
     * Email address of a Business Profile or email address of a
     * manager of the Business Profile. Required.
     *
     * @generated from protobuf field: optional string email_address = 7;
     */
    emailAddress?: string;
    /**
     * Plus page ID of the managed business whose locations should be used. If
     * this field is not set, then all businesses accessible by the user
     * (specified by email_address) are used.
     * This field is mutate-only and is not selectable.
     *
     * @generated from protobuf field: string business_account_id = 8;
     */
    businessAccountId: string;
    /**
     * Used to filter Business Profile listings by business name. If
     * business_name_filter is set, only listings with a matching business name
     * are candidates to be sync'd into FeedItems.
     *
     * @generated from protobuf field: optional string business_name_filter = 9;
     */
    businessNameFilter?: string;
    /**
     * Used to filter Business Profile listings by categories. If entries
     * exist in category_filters, only listings that belong to any of the
     * categories are candidates to be sync'd into FeedItems. If no entries
     * exist in category_filters, then all listings are candidates for syncing.
     *
     * @generated from protobuf field: repeated string category_filters = 11;
     */
    categoryFilters: string[];
    /**
     * Used to filter Business Profile listings by labels. If entries exist in
     * label_filters, only listings that has any of the labels set are
     * candidates to be synchronized into FeedItems. If no entries exist in
     * label_filters, then all listings are candidates for syncing.
     *
     * @generated from protobuf field: repeated string label_filters = 12;
     */
    labelFilters: string[];
}
/**
 * Data used for authorization using OAuth.
 *
 * @generated from protobuf message google.ads.googleads.v11.resources.Feed.PlacesLocationFeedData.OAuthInfo
 */
export interface Feed_PlacesLocationFeedData_OAuthInfo {
    /**
     * The HTTP method used to obtain authorization.
     *
     * @generated from protobuf field: optional string http_method = 4;
     */
    httpMethod?: string;
    /**
     * The HTTP request URL used to obtain authorization.
     *
     * @generated from protobuf field: optional string http_request_url = 5;
     */
    httpRequestUrl?: string;
    /**
     * The HTTP authorization header used to obtain authorization.
     *
     * @generated from protobuf field: optional string http_authorization_header = 6;
     */
    httpAuthorizationHeader?: string;
}
/**
 * Data used to configure an affiliate location feed populated with the
 * specified chains.
 *
 * @generated from protobuf message google.ads.googleads.v11.resources.Feed.AffiliateLocationFeedData
 */
export interface Feed_AffiliateLocationFeedData {
    /**
     * The list of chains that the affiliate location feed will sync the
     * locations from.
     *
     * @generated from protobuf field: repeated int64 chain_ids = 3;
     */
    chainIds: bigint[];
    /**
     * The relationship the chains have with the advertiser.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.AffiliateLocationFeedRelationshipTypeEnum.AffiliateLocationFeedRelationshipType relationship_type = 2;
     */
    relationshipType: AffiliateLocationFeedRelationshipTypeEnum_AffiliateLocationFeedRelationshipType;
}
/**
 * FeedAttributes define the types of data expected to be present in a Feed. A
 * single FeedAttribute specifies the expected type of the FeedItemAttributes
 * with the same FeedAttributeId. Optionally, a FeedAttribute can be marked as
 * being part of a FeedItem's unique key.
 *
 * @generated from protobuf message google.ads.googleads.v11.resources.FeedAttribute
 */
export interface FeedAttribute {
    /**
     * ID of the attribute.
     *
     * @generated from protobuf field: optional int64 id = 5;
     */
    id?: bigint;
    /**
     * The name of the attribute. Required.
     *
     * @generated from protobuf field: optional string name = 6;
     */
    name?: string;
    /**
     * Data type for feed attribute. Required.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.FeedAttributeTypeEnum.FeedAttributeType type = 3;
     */
    type: FeedAttributeTypeEnum_FeedAttributeType;
    /**
     * Indicates that data corresponding to this attribute is part of a
     * FeedItem's unique key. It defaults to false if it is unspecified. Note
     * that a unique key is not required in a Feed's schema, in which case the
     * FeedItems must be referenced by their feed_item_id.
     *
     * @generated from protobuf field: optional bool is_part_of_key = 7;
     */
    isPartOfKey?: boolean;
}
/**
 * Operation to be performed on a feed attribute list in a mutate.
 *
 * @generated from protobuf message google.ads.googleads.v11.resources.FeedAttributeOperation
 */
export interface FeedAttributeOperation {
    /**
     * Output only. Type of list operation to perform.
     *
     * @generated from protobuf field: google.ads.googleads.v11.resources.FeedAttributeOperation.Operator operator = 1;
     */
    operator: FeedAttributeOperation_Operator;
    /**
     * Output only. The feed attribute being added to the list.
     *
     * @generated from protobuf field: google.ads.googleads.v11.resources.FeedAttribute value = 2;
     */
    value?: FeedAttribute;
}
/**
 * The operator.
 *
 * @generated from protobuf enum google.ads.googleads.v11.resources.FeedAttributeOperation.Operator
 */
export declare enum FeedAttributeOperation_Operator {
    /**
     * Unspecified.
     *
     * @generated from protobuf enum value: UNSPECIFIED = 0;
     */
    UNSPECIFIED = 0,
    /**
     * Used for return value only. Represents value unknown in this version.
     *
     * @generated from protobuf enum value: UNKNOWN = 1;
     */
    UNKNOWN = 1,
    /**
     * Add the attribute to the existing attributes.
     *
     * @generated from protobuf enum value: ADD = 2;
     */
    ADD = 2
}
declare class Feed$Type extends MessageType<Feed> {
    constructor();
    create(value?: PartialMessage<Feed>): Feed;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: Feed): Feed;
    internalBinaryWrite(message: Feed, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.resources.Feed
 */
export declare const Feed: Feed$Type;
declare class Feed_PlacesLocationFeedData$Type extends MessageType<Feed_PlacesLocationFeedData> {
    constructor();
    create(value?: PartialMessage<Feed_PlacesLocationFeedData>): Feed_PlacesLocationFeedData;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: Feed_PlacesLocationFeedData): Feed_PlacesLocationFeedData;
    internalBinaryWrite(message: Feed_PlacesLocationFeedData, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.resources.Feed.PlacesLocationFeedData
 */
export declare const Feed_PlacesLocationFeedData: Feed_PlacesLocationFeedData$Type;
declare class Feed_PlacesLocationFeedData_OAuthInfo$Type extends MessageType<Feed_PlacesLocationFeedData_OAuthInfo> {
    constructor();
    create(value?: PartialMessage<Feed_PlacesLocationFeedData_OAuthInfo>): Feed_PlacesLocationFeedData_OAuthInfo;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: Feed_PlacesLocationFeedData_OAuthInfo): Feed_PlacesLocationFeedData_OAuthInfo;
    internalBinaryWrite(message: Feed_PlacesLocationFeedData_OAuthInfo, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.resources.Feed.PlacesLocationFeedData.OAuthInfo
 */
export declare const Feed_PlacesLocationFeedData_OAuthInfo: Feed_PlacesLocationFeedData_OAuthInfo$Type;
declare class Feed_AffiliateLocationFeedData$Type extends MessageType<Feed_AffiliateLocationFeedData> {
    constructor();
    create(value?: PartialMessage<Feed_AffiliateLocationFeedData>): Feed_AffiliateLocationFeedData;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: Feed_AffiliateLocationFeedData): Feed_AffiliateLocationFeedData;
    internalBinaryWrite(message: Feed_AffiliateLocationFeedData, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.resources.Feed.AffiliateLocationFeedData
 */
export declare const Feed_AffiliateLocationFeedData: Feed_AffiliateLocationFeedData$Type;
declare class FeedAttribute$Type extends MessageType<FeedAttribute> {
    constructor();
    create(value?: PartialMessage<FeedAttribute>): FeedAttribute;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: FeedAttribute): FeedAttribute;
    internalBinaryWrite(message: FeedAttribute, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.resources.FeedAttribute
 */
export declare const FeedAttribute: FeedAttribute$Type;
declare class FeedAttributeOperation$Type extends MessageType<FeedAttributeOperation> {
    constructor();
    create(value?: PartialMessage<FeedAttributeOperation>): FeedAttributeOperation;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: FeedAttributeOperation): FeedAttributeOperation;
    internalBinaryWrite(message: FeedAttributeOperation, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.resources.FeedAttributeOperation
 */
export declare const FeedAttributeOperation: FeedAttributeOperation$Type;
export {};
