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 { FeedItemValidationErrorEnum_FeedItemValidationError } from "../errors/feed_item_validation_error";
import { FeedItemQualityDisapprovalReasonEnum_FeedItemQualityDisapprovalReason } from "../enums/feed_item_quality_disapproval_reason";
import { FeedItemQualityApprovalStatusEnum_FeedItemQualityApprovalStatus } from "../enums/feed_item_quality_approval_status";
import { FeedItemValidationStatusEnum_FeedItemValidationStatus } from "../enums/feed_item_validation_status";
import { PolicyTopicEntry } from "../common/policy";
import { PolicyApprovalStatusEnum_PolicyApprovalStatus } from "../enums/policy_approval_status";
import { PolicyReviewStatusEnum_PolicyReviewStatus } from "../enums/policy_review_status";
import { PlaceholderTypeEnum_PlaceholderType } from "../enums/placeholder_type";
import { Money } from "../common/feed_common";
import { FeedItemStatusEnum_FeedItemStatus } from "../enums/feed_item_status";
import { CustomParameter } from "../common/custom_parameter";
import { GeoTargetingRestrictionEnum_GeoTargetingRestriction } from "../enums/geo_targeting_restriction";
/**
 * A feed item.
 *
 * @generated from protobuf message google.ads.googleads.v11.resources.FeedItem
 */
export interface FeedItem {
    /**
     * Immutable. The resource name of the feed item.
     * Feed item resource names have the form:
     *
     * `customers/{customer_id}/feedItems/{feed_id}~{feed_item_id}`
     *
     * @generated from protobuf field: string resource_name = 1;
     */
    resourceName: string;
    /**
     * Immutable. The feed to which this feed item belongs.
     *
     * @generated from protobuf field: optional string feed = 11;
     */
    feed?: string;
    /**
     * Output only. The ID of this feed item.
     *
     * @generated from protobuf field: optional int64 id = 12;
     */
    id?: bigint;
    /**
     * Start time in which this feed item is effective and can begin serving. The
     * time is in the customer's time zone.
     * The format is "YYYY-MM-DD HH:MM:SS".
     * Examples: "2018-03-05 09:15:00" or "2018-02-01 14:34:30"
     *
     * @generated from protobuf field: optional string start_date_time = 13;
     */
    startDateTime?: string;
    /**
     * End time in which this feed item is no longer effective and will stop
     * serving. The time is in the customer's time zone.
     * The format is "YYYY-MM-DD HH:MM:SS".
     * Examples: "2018-03-05 09:15:00" or "2018-02-01 14:34:30"
     *
     * @generated from protobuf field: optional string end_date_time = 14;
     */
    endDateTime?: string;
    /**
     * The feed item's attribute values.
     *
     * @generated from protobuf field: repeated google.ads.googleads.v11.resources.FeedItemAttributeValue attribute_values = 6;
     */
    attributeValues: FeedItemAttributeValue[];
    /**
     * Geo targeting restriction specifies the type of location that can be used
     * for targeting.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.GeoTargetingRestrictionEnum.GeoTargetingRestriction geo_targeting_restriction = 7;
     */
    geoTargetingRestriction: GeoTargetingRestrictionEnum_GeoTargetingRestriction;
    /**
     * The list of mappings used to substitute custom parameter tags in a
     * `tracking_url_template`, `final_urls`, or `mobile_final_urls`.
     *
     * @generated from protobuf field: repeated google.ads.googleads.v11.common.CustomParameter url_custom_parameters = 8;
     */
    urlCustomParameters: CustomParameter[];
    /**
     * Output only. Status of the feed item.
     * This field is read-only.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.FeedItemStatusEnum.FeedItemStatus status = 9;
     */
    status: FeedItemStatusEnum_FeedItemStatus;
    /**
     * Output only. List of info about a feed item's validation and approval state for active
     * feed mappings. There will be an entry in the list for each type of feed
     * mapping associated with the feed, for example, a feed with a sitelink and a
     * call feed mapping would cause every feed item associated with that feed to
     * have an entry in this list for both sitelink and call. This field is
     * read-only.
     *
     * @generated from protobuf field: repeated google.ads.googleads.v11.resources.FeedItemPlaceholderPolicyInfo policy_infos = 10;
     */
    policyInfos: FeedItemPlaceholderPolicyInfo[];
}
/**
 * A feed item attribute value.
 *
 * @generated from protobuf message google.ads.googleads.v11.resources.FeedItemAttributeValue
 */
export interface FeedItemAttributeValue {
    /**
     * Id of the feed attribute for which the value is associated with.
     *
     * @generated from protobuf field: optional int64 feed_attribute_id = 11;
     */
    feedAttributeId?: bigint;
    /**
     * Int64 value. Should be set if feed_attribute_id refers to a feed attribute
     * of type INT64.
     *
     * @generated from protobuf field: optional int64 integer_value = 12;
     */
    integerValue?: bigint;
    /**
     * Bool value. Should be set if feed_attribute_id refers to a feed attribute
     * of type BOOLEAN.
     *
     * @generated from protobuf field: optional bool boolean_value = 13;
     */
    booleanValue?: boolean;
    /**
     * String value. Should be set if feed_attribute_id refers to a feed attribute
     * of type STRING, URL or DATE_TIME.
     * For STRING the maximum length is 1500 characters. For URL the maximum
     * length is 2076 characters. For DATE_TIME the string must be in the format
     * "YYYYMMDD HHMMSS".
     *
     * @generated from protobuf field: optional string string_value = 14;
     */
    stringValue?: string;
    /**
     * Double value. Should be set if feed_attribute_id refers to a feed attribute
     * of type DOUBLE.
     *
     * @generated from protobuf field: optional double double_value = 15;
     */
    doubleValue?: number;
    /**
     * Price value. Should be set if feed_attribute_id refers to a feed attribute
     * of type PRICE.
     *
     * @generated from protobuf field: google.ads.googleads.v11.common.Money price_value = 6;
     */
    priceValue?: Money;
    /**
     * Repeated int64 value. Should be set if feed_attribute_id refers to a feed
     * attribute of type INT64_LIST.
     *
     * @generated from protobuf field: repeated int64 integer_values = 16;
     */
    integerValues: bigint[];
    /**
     * Repeated bool value. Should be set if feed_attribute_id refers to a feed
     * attribute of type BOOLEAN_LIST.
     *
     * @generated from protobuf field: repeated bool boolean_values = 17;
     */
    booleanValues: boolean[];
    /**
     * Repeated string value. Should be set if feed_attribute_id refers to a feed
     * attribute of type STRING_LIST, URL_LIST or DATE_TIME_LIST.
     * For STRING_LIST and URL_LIST the total size of the list in bytes may not
     * exceed 3000. For DATE_TIME_LIST the number of elements may not exceed 200.
     *
     * For STRING_LIST the maximum length of each string element is 1500
     * characters. For URL_LIST the maximum length is 2076 characters. For
     * DATE_TIME the format of the string must be the same as start and end time
     * for the feed item.
     *
     * @generated from protobuf field: repeated string string_values = 18;
     */
    stringValues: string[];
    /**
     * Repeated double value. Should be set if feed_attribute_id refers to a feed
     * attribute of type DOUBLE_LIST.
     *
     * @generated from protobuf field: repeated double double_values = 19;
     */
    doubleValues: number[];
}
/**
 * Policy, validation, and quality approval info for a feed item for the
 * specified placeholder type.
 *
 * @generated from protobuf message google.ads.googleads.v11.resources.FeedItemPlaceholderPolicyInfo
 */
export interface FeedItemPlaceholderPolicyInfo {
    /**
     * Output only. The placeholder type.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.PlaceholderTypeEnum.PlaceholderType placeholder_type_enum = 10;
     */
    placeholderTypeEnum: PlaceholderTypeEnum_PlaceholderType;
    /**
     * Output only. The FeedMapping that contains the placeholder type.
     *
     * @generated from protobuf field: optional string feed_mapping_resource_name = 11;
     */
    feedMappingResourceName?: string;
    /**
     * Output only. Where the placeholder type is in the review process.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.PolicyReviewStatusEnum.PolicyReviewStatus review_status = 3;
     */
    reviewStatus: PolicyReviewStatusEnum_PolicyReviewStatus;
    /**
     * Output only. The overall approval status of the placeholder type, calculated based on
     * the status of its individual policy topic entries.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.PolicyApprovalStatusEnum.PolicyApprovalStatus approval_status = 4;
     */
    approvalStatus: PolicyApprovalStatusEnum_PolicyApprovalStatus;
    /**
     * Output only. The list of policy findings for the placeholder type.
     *
     * @generated from protobuf field: repeated google.ads.googleads.v11.common.PolicyTopicEntry policy_topic_entries = 5;
     */
    policyTopicEntries: PolicyTopicEntry[];
    /**
     * Output only. The validation status of the palceholder type.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.FeedItemValidationStatusEnum.FeedItemValidationStatus validation_status = 6;
     */
    validationStatus: FeedItemValidationStatusEnum_FeedItemValidationStatus;
    /**
     * Output only. List of placeholder type validation errors.
     *
     * @generated from protobuf field: repeated google.ads.googleads.v11.resources.FeedItemValidationError validation_errors = 7;
     */
    validationErrors: FeedItemValidationError[];
    /**
     * Output only. Placeholder type quality evaluation approval status.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.FeedItemQualityApprovalStatusEnum.FeedItemQualityApprovalStatus quality_approval_status = 8;
     */
    qualityApprovalStatus: FeedItemQualityApprovalStatusEnum_FeedItemQualityApprovalStatus;
    /**
     * Output only. List of placeholder type quality evaluation disapproval reasons.
     *
     * @generated from protobuf field: repeated google.ads.googleads.v11.enums.FeedItemQualityDisapprovalReasonEnum.FeedItemQualityDisapprovalReason quality_disapproval_reasons = 9;
     */
    qualityDisapprovalReasons: FeedItemQualityDisapprovalReasonEnum_FeedItemQualityDisapprovalReason[];
}
/**
 * Stores a validation error and the set of offending feed attributes which
 * together are responsible for causing a feed item validation error.
 *
 * @generated from protobuf message google.ads.googleads.v11.resources.FeedItemValidationError
 */
export interface FeedItemValidationError {
    /**
     * Output only. Error code indicating what validation error was triggered. The description
     * of the error can be found in the 'description' field.
     *
     * @generated from protobuf field: google.ads.googleads.v11.errors.FeedItemValidationErrorEnum.FeedItemValidationError validation_error = 1;
     */
    validationError: FeedItemValidationErrorEnum_FeedItemValidationError;
    /**
     * Output only. The description of the validation error.
     *
     * @generated from protobuf field: optional string description = 6;
     */
    description?: string;
    /**
     * Output only. Set of feed attributes in the feed item flagged during validation. If
     * empty, no specific feed attributes can be associated with the error
     * (for example, error across the entire feed item).
     *
     * @generated from protobuf field: repeated int64 feed_attribute_ids = 7;
     */
    feedAttributeIds: bigint[];
    /**
     * Output only. Any extra information related to this error which is not captured by
     * validation_error and feed_attribute_id (for example, placeholder field IDs
     * when feed_attribute_id is not mapped). Note that extra_info is not
     * localized.
     *
     * @generated from protobuf field: optional string extra_info = 8;
     */
    extraInfo?: string;
}
declare class FeedItem$Type extends MessageType<FeedItem> {
    constructor();
    create(value?: PartialMessage<FeedItem>): FeedItem;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: FeedItem): FeedItem;
    internalBinaryWrite(message: FeedItem, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.resources.FeedItem
 */
export declare const FeedItem: FeedItem$Type;
declare class FeedItemAttributeValue$Type extends MessageType<FeedItemAttributeValue> {
    constructor();
    create(value?: PartialMessage<FeedItemAttributeValue>): FeedItemAttributeValue;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: FeedItemAttributeValue): FeedItemAttributeValue;
    internalBinaryWrite(message: FeedItemAttributeValue, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.resources.FeedItemAttributeValue
 */
export declare const FeedItemAttributeValue: FeedItemAttributeValue$Type;
declare class FeedItemPlaceholderPolicyInfo$Type extends MessageType<FeedItemPlaceholderPolicyInfo> {
    constructor();
    create(value?: PartialMessage<FeedItemPlaceholderPolicyInfo>): FeedItemPlaceholderPolicyInfo;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: FeedItemPlaceholderPolicyInfo): FeedItemPlaceholderPolicyInfo;
    internalBinaryWrite(message: FeedItemPlaceholderPolicyInfo, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.resources.FeedItemPlaceholderPolicyInfo
 */
export declare const FeedItemPlaceholderPolicyInfo: FeedItemPlaceholderPolicyInfo$Type;
declare class FeedItemValidationError$Type extends MessageType<FeedItemValidationError> {
    constructor();
    create(value?: PartialMessage<FeedItemValidationError>): FeedItemValidationError;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: FeedItemValidationError): FeedItemValidationError;
    internalBinaryWrite(message: FeedItemValidationError, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.resources.FeedItemValidationError
 */
export declare const FeedItemValidationError: FeedItemValidationError$Type;
export {};
