// Code generated by protoc-gen-go. DO NOT EDIT.
// source: google/ads/googleads/v3/enums/placeholder_type.proto

package enums

import (
	fmt "fmt"
	math "math"

	proto "github.com/golang/protobuf/proto"
	_ "google.golang.org/genproto/googleapis/api/annotations"
)

// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf

// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package

// Possible placeholder types for a feed mapping.
type PlaceholderTypeEnum_PlaceholderType int32

const (
	// Not specified.
	PlaceholderTypeEnum_UNSPECIFIED PlaceholderTypeEnum_PlaceholderType = 0
	// Used for return value only. Represents value unknown in this version.
	PlaceholderTypeEnum_UNKNOWN PlaceholderTypeEnum_PlaceholderType = 1
	// Lets you show links in your ad to pages from your website, including the
	// main landing page.
	PlaceholderTypeEnum_SITELINK PlaceholderTypeEnum_PlaceholderType = 2
	// Lets you attach a phone number to an ad, allowing customers to call
	// directly from the ad.
	PlaceholderTypeEnum_CALL PlaceholderTypeEnum_PlaceholderType = 3
	// Lets you provide users with a link that points to a mobile app in
	// addition to a website.
	PlaceholderTypeEnum_APP PlaceholderTypeEnum_PlaceholderType = 4
	// Lets you show locations of businesses from your Google My Business
	// account in your ad. This helps people find your locations by showing your
	// ads with your address, a map to your location, or the distance to your
	// business. This extension type is useful to draw customers to your
	// brick-and-mortar location.
	PlaceholderTypeEnum_LOCATION PlaceholderTypeEnum_PlaceholderType = 5
	// If you sell your product through retail chains, affiliate location
	// extensions let you show nearby stores that carry your products.
	PlaceholderTypeEnum_AFFILIATE_LOCATION PlaceholderTypeEnum_PlaceholderType = 6
	// Lets you include additional text with your search ads that provide
	// detailed information about your business, including products and services
	// you offer. Callouts appear in ads at the top and bottom of Google search
	// results.
	PlaceholderTypeEnum_CALLOUT PlaceholderTypeEnum_PlaceholderType = 7
	// Lets you add more info to your ad, specific to some predefined categories
	// such as types, brands, styles, etc. A minimum of 3 text (SNIPPETS) values
	// are required.
	PlaceholderTypeEnum_STRUCTURED_SNIPPET PlaceholderTypeEnum_PlaceholderType = 8
	// Allows users to see your ad, click an icon, and contact you directly by
	// text message. With one tap on your ad, people can contact you to book an
	// appointment, get a quote, ask for information, or request a service.
	PlaceholderTypeEnum_MESSAGE PlaceholderTypeEnum_PlaceholderType = 9
	// Lets you display prices for a list of items along with your ads. A price
	// feed is composed of three to eight price table rows.
	PlaceholderTypeEnum_PRICE PlaceholderTypeEnum_PlaceholderType = 10
	// Allows you to highlight sales and other promotions that let users see how
	// they can save by buying now.
	PlaceholderTypeEnum_PROMOTION PlaceholderTypeEnum_PlaceholderType = 11
	// Lets you dynamically inject custom data into the title and description
	// of your ads.
	PlaceholderTypeEnum_AD_CUSTOMIZER PlaceholderTypeEnum_PlaceholderType = 12
	// Indicates that this feed is for education dynamic remarketing.
	PlaceholderTypeEnum_DYNAMIC_EDUCATION PlaceholderTypeEnum_PlaceholderType = 13
	// Indicates that this feed is for flight dynamic remarketing.
	PlaceholderTypeEnum_DYNAMIC_FLIGHT PlaceholderTypeEnum_PlaceholderType = 14
	// Indicates that this feed is for a custom dynamic remarketing type. Use
	// this only if the other business types don't apply to your products or
	// services.
	PlaceholderTypeEnum_DYNAMIC_CUSTOM PlaceholderTypeEnum_PlaceholderType = 15
	// Indicates that this feed is for hotels and rentals dynamic remarketing.
	PlaceholderTypeEnum_DYNAMIC_HOTEL PlaceholderTypeEnum_PlaceholderType = 16
	// Indicates that this feed is for real estate dynamic remarketing.
	PlaceholderTypeEnum_DYNAMIC_REAL_ESTATE PlaceholderTypeEnum_PlaceholderType = 17
	// Indicates that this feed is for travel dynamic remarketing.
	PlaceholderTypeEnum_DYNAMIC_TRAVEL PlaceholderTypeEnum_PlaceholderType = 18
	// Indicates that this feed is for local deals dynamic remarketing.
	PlaceholderTypeEnum_DYNAMIC_LOCAL PlaceholderTypeEnum_PlaceholderType = 19
	// Indicates that this feed is for job dynamic remarketing.
	PlaceholderTypeEnum_DYNAMIC_JOB PlaceholderTypeEnum_PlaceholderType = 20
)

var PlaceholderTypeEnum_PlaceholderType_name = map[int32]string{
	0:  "UNSPECIFIED",
	1:  "UNKNOWN",
	2:  "SITELINK",
	3:  "CALL",
	4:  "APP",
	5:  "LOCATION",
	6:  "AFFILIATE_LOCATION",
	7:  "CALLOUT",
	8:  "STRUCTURED_SNIPPET",
	9:  "MESSAGE",
	10: "PRICE",
	11: "PROMOTION",
	12: "AD_CUSTOMIZER",
	13: "DYNAMIC_EDUCATION",
	14: "DYNAMIC_FLIGHT",
	15: "DYNAMIC_CUSTOM",
	16: "DYNAMIC_HOTEL",
	17: "DYNAMIC_REAL_ESTATE",
	18: "DYNAMIC_TRAVEL",
	19: "DYNAMIC_LOCAL",
	20: "DYNAMIC_JOB",
}

var PlaceholderTypeEnum_PlaceholderType_value = map[string]int32{
	"UNSPECIFIED":         0,
	"UNKNOWN":             1,
	"SITELINK":            2,
	"CALL":                3,
	"APP":                 4,
	"LOCATION":            5,
	"AFFILIATE_LOCATION":  6,
	"CALLOUT":             7,
	"STRUCTURED_SNIPPET":  8,
	"MESSAGE":             9,
	"PRICE":               10,
	"PROMOTION":           11,
	"AD_CUSTOMIZER":       12,
	"DYNAMIC_EDUCATION":   13,
	"DYNAMIC_FLIGHT":      14,
	"DYNAMIC_CUSTOM":      15,
	"DYNAMIC_HOTEL":       16,
	"DYNAMIC_REAL_ESTATE": 17,
	"DYNAMIC_TRAVEL":      18,
	"DYNAMIC_LOCAL":       19,
	"DYNAMIC_JOB":         20,
}

func (x PlaceholderTypeEnum_PlaceholderType) String() string {
	return proto.EnumName(PlaceholderTypeEnum_PlaceholderType_name, int32(x))
}

func (PlaceholderTypeEnum_PlaceholderType) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_60d966f72e921afd, []int{0, 0}
}

// Container for enum describing possible placeholder types for a feed mapping.
type PlaceholderTypeEnum struct {
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *PlaceholderTypeEnum) Reset()         { *m = PlaceholderTypeEnum{} }
func (m *PlaceholderTypeEnum) String() string { return proto.CompactTextString(m) }
func (*PlaceholderTypeEnum) ProtoMessage()    {}
func (*PlaceholderTypeEnum) Descriptor() ([]byte, []int) {
	return fileDescriptor_60d966f72e921afd, []int{0}
}

func (m *PlaceholderTypeEnum) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_PlaceholderTypeEnum.Unmarshal(m, b)
}
func (m *PlaceholderTypeEnum) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_PlaceholderTypeEnum.Marshal(b, m, deterministic)
}
func (m *PlaceholderTypeEnum) XXX_Merge(src proto.Message) {
	xxx_messageInfo_PlaceholderTypeEnum.Merge(m, src)
}
func (m *PlaceholderTypeEnum) XXX_Size() int {
	return xxx_messageInfo_PlaceholderTypeEnum.Size(m)
}
func (m *PlaceholderTypeEnum) XXX_DiscardUnknown() {
	xxx_messageInfo_PlaceholderTypeEnum.DiscardUnknown(m)
}

var xxx_messageInfo_PlaceholderTypeEnum proto.InternalMessageInfo

func init() {
	proto.RegisterEnum("google.ads.googleads.v3.enums.PlaceholderTypeEnum_PlaceholderType", PlaceholderTypeEnum_PlaceholderType_name, PlaceholderTypeEnum_PlaceholderType_value)
	proto.RegisterType((*PlaceholderTypeEnum)(nil), "google.ads.googleads.v3.enums.PlaceholderTypeEnum")
}

func init() {
	proto.RegisterFile("google/ads/googleads/v3/enums/placeholder_type.proto", fileDescriptor_60d966f72e921afd)
}

var fileDescriptor_60d966f72e921afd = []byte{
	// 490 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x92, 0xd1, 0x6e, 0x9b, 0x30,
	0x14, 0x86, 0x17, 0xd2, 0x36, 0x89, 0xd3, 0x34, 0x8e, 0xd3, 0x6d, 0xd2, 0xb4, 0x5e, 0xb4, 0x0f,
	0x00, 0x17, 0xec, 0x8a, 0x5d, 0x39, 0xe0, 0xa4, 0x5e, 0x1d, 0xb0, 0xc0, 0x64, 0x5a, 0x15, 0x09,
	0xb1, 0x82, 0x58, 0xa4, 0x04, 0xa3, 0x90, 0x56, 0xea, 0x5b, 0xec, 0x19, 0x76, 0xb9, 0x47, 0xd9,
	0x9b, 0x6c, 0x4f, 0xb0, 0xcb, 0xc9, 0x50, 0xb2, 0xa8, 0xd2, 0x76, 0x83, 0x8e, 0xbe, 0xf3, 0xff,
	0x3f, 0xb6, 0xcf, 0x01, 0xef, 0x32, 0x29, 0xb3, 0x75, 0x6a, 0xc4, 0x49, 0x69, 0xd4, 0xa5, 0xaa,
	0x1e, 0x4c, 0x23, 0xcd, 0xef, 0x37, 0xa5, 0x51, 0xac, 0xe3, 0xbb, 0xf4, 0x8b, 0x5c, 0x27, 0xe9,
	0x36, 0xda, 0x3d, 0x16, 0xa9, 0x5e, 0x6c, 0xe5, 0x4e, 0xa2, 0x8b, 0x5a, 0xaa, 0xc7, 0x49, 0xa9,
	0xef, 0x5d, 0xfa, 0x83, 0xa9, 0x57, 0xae, 0x37, 0x6f, 0x9b, 0xd0, 0x62, 0x65, 0xc4, 0x79, 0x2e,
	0x77, 0xf1, 0x6e, 0x25, 0xf3, 0xb2, 0x36, 0x5f, 0x7d, 0x6d, 0x83, 0x31, 0xff, 0x9b, 0x2b, 0x1e,
	0x8b, 0x94, 0xe4, 0xf7, 0x9b, 0xab, 0xdf, 0x1a, 0x18, 0x3e, 0xe3, 0x68, 0x08, 0xfa, 0xa1, 0x1b,
	0x70, 0x62, 0xd3, 0x29, 0x25, 0x0e, 0x7c, 0x81, 0xfa, 0xa0, 0x13, 0xba, 0x37, 0xae, 0xf7, 0xd1,
	0x85, 0x2d, 0x74, 0x0a, 0xba, 0x01, 0x15, 0x84, 0x51, 0xf7, 0x06, 0x6a, 0xa8, 0x0b, 0x8e, 0x6c,
	0xcc, 0x18, 0x6c, 0xa3, 0x0e, 0x68, 0x63, 0xce, 0xe1, 0x91, 0x12, 0x30, 0xcf, 0xc6, 0x82, 0x7a,
	0x2e, 0x3c, 0x46, 0xaf, 0x00, 0xc2, 0xd3, 0x29, 0x65, 0x14, 0x0b, 0x12, 0xed, 0xf9, 0x89, 0xca,
	0x54, 0x46, 0x2f, 0x14, 0xb0, 0xa3, 0x44, 0x81, 0xf0, 0x43, 0x5b, 0x84, 0x3e, 0x71, 0xa2, 0xc0,
	0xa5, 0x9c, 0x13, 0x01, 0xbb, 0x4a, 0x34, 0x27, 0x41, 0x80, 0x67, 0x04, 0xf6, 0x50, 0x0f, 0x1c,
	0x73, 0x9f, 0xda, 0x04, 0x02, 0x34, 0x00, 0x3d, 0xee, 0x7b, 0x73, 0xaf, 0xca, 0xea, 0xa3, 0x11,
	0x18, 0x60, 0x27, 0xb2, 0xc3, 0x40, 0x78, 0x73, 0x7a, 0x4b, 0x7c, 0x78, 0x8a, 0x5e, 0x82, 0x91,
	0xf3, 0xc9, 0xc5, 0x73, 0x6a, 0x47, 0xc4, 0x09, 0x9f, 0xfe, 0x3a, 0x40, 0x08, 0x9c, 0x35, 0x78,
	0xca, 0xe8, 0xec, 0x5a, 0xc0, 0xb3, 0x43, 0x56, 0x47, 0xc0, 0xa1, 0x4a, 0x6c, 0xd8, 0xb5, 0x27,
	0x08, 0x83, 0x10, 0xbd, 0x06, 0xe3, 0x06, 0xf9, 0x04, 0xb3, 0x88, 0x04, 0x02, 0x0b, 0x02, 0x47,
	0x87, 0x7e, 0xe1, 0xe3, 0x05, 0x61, 0x10, 0x1d, 0xfa, 0xd5, 0x9d, 0x19, 0x1c, 0xab, 0x57, 0x6d,
	0xd0, 0x07, 0x6f, 0x02, 0xcf, 0x27, 0x3f, 0x5b, 0xe0, 0xf2, 0x4e, 0x6e, 0xf4, 0xff, 0x8e, 0x75,
	0x72, 0xfe, 0x6c, 0x3a, 0x5c, 0x8d, 0x93, 0xb7, 0x6e, 0x27, 0x4f, 0xb6, 0x4c, 0xae, 0xe3, 0x3c,
	0xd3, 0xe5, 0x36, 0x33, 0xb2, 0x34, 0xaf, 0x86, 0xdd, 0xec, 0x54, 0xb1, 0x2a, 0xff, 0xb1, 0x62,
	0xef, 0xab, 0xef, 0x37, 0xad, 0x3d, 0xc3, 0xf8, 0xbb, 0x76, 0x31, 0xab, 0xa3, 0x70, 0x52, 0xea,
	0x75, 0xa9, 0xaa, 0x85, 0xa9, 0xab, 0x0d, 0x29, 0x7f, 0x34, 0xfd, 0x25, 0x4e, 0xca, 0xe5, 0xbe,
	0xbf, 0x5c, 0x98, 0xcb, 0xaa, 0xff, 0x4b, 0xbb, 0xac, 0xa1, 0x65, 0xe1, 0xa4, 0xb4, 0xac, 0xbd,
	0xc2, 0xb2, 0x16, 0xa6, 0x65, 0x55, 0x9a, 0xcf, 0x27, 0xd5, 0xc1, 0xcc, 0x3f, 0x01, 0x00, 0x00,
	0xff, 0xff, 0x00, 0xfe, 0x7a, 0x86, 0xfa, 0x02, 0x00, 0x00,
}
