// Copyright 2026 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.11
// 	protoc        v6.33.2
// source: google/cloud/dialogflow/cx/v3/parameter_definition.proto

package cxpb

import (
	reflect "reflect"
	sync "sync"
	unsafe "unsafe"

	_ "google.golang.org/genproto/googleapis/api/annotations"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

// Defines data types that are supported for inlined schemas. These types are
// consistent with [google.protobuf.Value][google.protobuf.Value].
type DataType int32

const (
	// Not specified.
	DataType_DATA_TYPE_UNSPECIFIED DataType = 0
	// Represents any string value.
	DataType_STRING DataType = 1
	// Represents any number value.
	DataType_NUMBER DataType = 2
	// Represents a boolean value.
	DataType_BOOLEAN DataType = 3
	// Represents a repeated value.
	DataType_ARRAY DataType = 6
)

// Enum value maps for DataType.
var (
	DataType_name = map[int32]string{
		0: "DATA_TYPE_UNSPECIFIED",
		1: "STRING",
		2: "NUMBER",
		3: "BOOLEAN",
		6: "ARRAY",
	}
	DataType_value = map[string]int32{
		"DATA_TYPE_UNSPECIFIED": 0,
		"STRING":                1,
		"NUMBER":                2,
		"BOOLEAN":               3,
		"ARRAY":                 6,
	}
)

func (x DataType) Enum() *DataType {
	p := new(DataType)
	*p = x
	return p
}

func (x DataType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (DataType) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_dialogflow_cx_v3_parameter_definition_proto_enumTypes[0].Descriptor()
}

func (DataType) Type() protoreflect.EnumType {
	return &file_google_cloud_dialogflow_cx_v3_parameter_definition_proto_enumTypes[0]
}

func (x DataType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use DataType.Descriptor instead.
func (DataType) EnumDescriptor() ([]byte, []int) {
	return file_google_cloud_dialogflow_cx_v3_parameter_definition_proto_rawDescGZIP(), []int{0}
}

// Parameter types are used for validation.
// These types are consistent with
// [google.protobuf.Value][google.protobuf.Value].
type ParameterDefinition_ParameterType int32

const (
	// Not specified. No validation will be performed.
	ParameterDefinition_PARAMETER_TYPE_UNSPECIFIED ParameterDefinition_ParameterType = 0
	// Represents any string value.
	ParameterDefinition_STRING ParameterDefinition_ParameterType = 1
	// Represents any number value.
	ParameterDefinition_NUMBER ParameterDefinition_ParameterType = 2
	// Represents a boolean value.
	ParameterDefinition_BOOLEAN ParameterDefinition_ParameterType = 3
	// Represents a null value.
	ParameterDefinition_NULL ParameterDefinition_ParameterType = 4
	// Represents any object value.
	ParameterDefinition_OBJECT ParameterDefinition_ParameterType = 5
	// Represents a repeated value.
	ParameterDefinition_LIST ParameterDefinition_ParameterType = 6
)

// Enum value maps for ParameterDefinition_ParameterType.
var (
	ParameterDefinition_ParameterType_name = map[int32]string{
		0: "PARAMETER_TYPE_UNSPECIFIED",
		1: "STRING",
		2: "NUMBER",
		3: "BOOLEAN",
		4: "NULL",
		5: "OBJECT",
		6: "LIST",
	}
	ParameterDefinition_ParameterType_value = map[string]int32{
		"PARAMETER_TYPE_UNSPECIFIED": 0,
		"STRING":                     1,
		"NUMBER":                     2,
		"BOOLEAN":                    3,
		"NULL":                       4,
		"OBJECT":                     5,
		"LIST":                       6,
	}
)

func (x ParameterDefinition_ParameterType) Enum() *ParameterDefinition_ParameterType {
	p := new(ParameterDefinition_ParameterType)
	*p = x
	return p
}

func (x ParameterDefinition_ParameterType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (ParameterDefinition_ParameterType) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_dialogflow_cx_v3_parameter_definition_proto_enumTypes[1].Descriptor()
}

func (ParameterDefinition_ParameterType) Type() protoreflect.EnumType {
	return &file_google_cloud_dialogflow_cx_v3_parameter_definition_proto_enumTypes[1]
}

func (x ParameterDefinition_ParameterType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use ParameterDefinition_ParameterType.Descriptor instead.
func (ParameterDefinition_ParameterType) EnumDescriptor() ([]byte, []int) {
	return file_google_cloud_dialogflow_cx_v3_parameter_definition_proto_rawDescGZIP(), []int{0, 0}
}

// Defines the properties of a parameter.
// Used to define parameters used in the agent and the
// input / output parameters for each fulfillment.
type ParameterDefinition struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Required. Name of parameter.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Type of parameter.
	//
	// Deprecated: Marked as deprecated in google/cloud/dialogflow/cx/v3/parameter_definition.proto.
	Type ParameterDefinition_ParameterType `protobuf:"varint,2,opt,name=type,proto3,enum=google.cloud.dialogflow.cx.v3.ParameterDefinition_ParameterType" json:"type,omitempty"`
	// Optional. Type schema of parameter.
	TypeSchema *TypeSchema `protobuf:"bytes,4,opt,name=type_schema,json=typeSchema,proto3" json:"type_schema,omitempty"`
	// Human-readable description of the parameter. Limited to 300 characters.
	Description   string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ParameterDefinition) Reset() {
	*x = ParameterDefinition{}
	mi := &file_google_cloud_dialogflow_cx_v3_parameter_definition_proto_msgTypes[0]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ParameterDefinition) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ParameterDefinition) ProtoMessage() {}

func (x *ParameterDefinition) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_dialogflow_cx_v3_parameter_definition_proto_msgTypes[0]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ParameterDefinition.ProtoReflect.Descriptor instead.
func (*ParameterDefinition) Descriptor() ([]byte, []int) {
	return file_google_cloud_dialogflow_cx_v3_parameter_definition_proto_rawDescGZIP(), []int{0}
}

func (x *ParameterDefinition) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

// Deprecated: Marked as deprecated in google/cloud/dialogflow/cx/v3/parameter_definition.proto.
func (x *ParameterDefinition) GetType() ParameterDefinition_ParameterType {
	if x != nil {
		return x.Type
	}
	return ParameterDefinition_PARAMETER_TYPE_UNSPECIFIED
}

func (x *ParameterDefinition) GetTypeSchema() *TypeSchema {
	if x != nil {
		return x.TypeSchema
	}
	return nil
}

func (x *ParameterDefinition) GetDescription() string {
	if x != nil {
		return x.Description
	}
	return ""
}

// Encapsulates different type schema variations: either a reference to an
// a schema that's already defined by a tool, or an inline definition.
type TypeSchema struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The encapsulated schema.
	//
	// Types that are valid to be assigned to Schema:
	//
	//	*TypeSchema_InlineSchema
	//	*TypeSchema_SchemaReference_
	Schema        isTypeSchema_Schema `protobuf_oneof:"schema"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TypeSchema) Reset() {
	*x = TypeSchema{}
	mi := &file_google_cloud_dialogflow_cx_v3_parameter_definition_proto_msgTypes[1]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TypeSchema) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TypeSchema) ProtoMessage() {}

func (x *TypeSchema) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_dialogflow_cx_v3_parameter_definition_proto_msgTypes[1]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TypeSchema.ProtoReflect.Descriptor instead.
func (*TypeSchema) Descriptor() ([]byte, []int) {
	return file_google_cloud_dialogflow_cx_v3_parameter_definition_proto_rawDescGZIP(), []int{1}
}

func (x *TypeSchema) GetSchema() isTypeSchema_Schema {
	if x != nil {
		return x.Schema
	}
	return nil
}

func (x *TypeSchema) GetInlineSchema() *InlineSchema {
	if x != nil {
		if x, ok := x.Schema.(*TypeSchema_InlineSchema); ok {
			return x.InlineSchema
		}
	}
	return nil
}

func (x *TypeSchema) GetSchemaReference() *TypeSchema_SchemaReference {
	if x != nil {
		if x, ok := x.Schema.(*TypeSchema_SchemaReference_); ok {
			return x.SchemaReference
		}
	}
	return nil
}

type isTypeSchema_Schema interface {
	isTypeSchema_Schema()
}

type TypeSchema_InlineSchema struct {
	// Set if this is an inline schema definition.
	InlineSchema *InlineSchema `protobuf:"bytes,1,opt,name=inline_schema,json=inlineSchema,proto3,oneof"`
}

type TypeSchema_SchemaReference_ struct {
	// Set if this is a schema reference.
	SchemaReference *TypeSchema_SchemaReference `protobuf:"bytes,2,opt,name=schema_reference,json=schemaReference,proto3,oneof"`
}

func (*TypeSchema_InlineSchema) isTypeSchema_Schema() {}

func (*TypeSchema_SchemaReference_) isTypeSchema_Schema() {}

// A type schema object that's specified inline.
type InlineSchema struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Data type of the schema.
	Type DataType `protobuf:"varint,1,opt,name=type,proto3,enum=google.cloud.dialogflow.cx.v3.DataType" json:"type,omitempty"`
	// Schema of the elements if this is an ARRAY type.
	Items         *TypeSchema `protobuf:"bytes,2,opt,name=items,proto3" json:"items,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *InlineSchema) Reset() {
	*x = InlineSchema{}
	mi := &file_google_cloud_dialogflow_cx_v3_parameter_definition_proto_msgTypes[2]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *InlineSchema) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*InlineSchema) ProtoMessage() {}

func (x *InlineSchema) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_dialogflow_cx_v3_parameter_definition_proto_msgTypes[2]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use InlineSchema.ProtoReflect.Descriptor instead.
func (*InlineSchema) Descriptor() ([]byte, []int) {
	return file_google_cloud_dialogflow_cx_v3_parameter_definition_proto_rawDescGZIP(), []int{2}
}

func (x *InlineSchema) GetType() DataType {
	if x != nil {
		return x.Type
	}
	return DataType_DATA_TYPE_UNSPECIFIED
}

func (x *InlineSchema) GetItems() *TypeSchema {
	if x != nil {
		return x.Items
	}
	return nil
}

// A reference to the schema of an existing tool.
type TypeSchema_SchemaReference struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The tool that contains this schema definition.
	// Format:
	// `projects/<ProjectID>/locations/<LocationID>/agents/<AgentID>/tools/<ToolID>`.
	Tool string `protobuf:"bytes,1,opt,name=tool,proto3" json:"tool,omitempty"`
	// The name of the schema.
	Schema        string `protobuf:"bytes,2,opt,name=schema,proto3" json:"schema,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TypeSchema_SchemaReference) Reset() {
	*x = TypeSchema_SchemaReference{}
	mi := &file_google_cloud_dialogflow_cx_v3_parameter_definition_proto_msgTypes[3]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TypeSchema_SchemaReference) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TypeSchema_SchemaReference) ProtoMessage() {}

func (x *TypeSchema_SchemaReference) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_dialogflow_cx_v3_parameter_definition_proto_msgTypes[3]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TypeSchema_SchemaReference.ProtoReflect.Descriptor instead.
func (*TypeSchema_SchemaReference) Descriptor() ([]byte, []int) {
	return file_google_cloud_dialogflow_cx_v3_parameter_definition_proto_rawDescGZIP(), []int{1, 0}
}

func (x *TypeSchema_SchemaReference) GetTool() string {
	if x != nil {
		return x.Tool
	}
	return ""
}

func (x *TypeSchema_SchemaReference) GetSchema() string {
	if x != nil {
		return x.Schema
	}
	return ""
}

var File_google_cloud_dialogflow_cx_v3_parameter_definition_proto protoreflect.FileDescriptor

const file_google_cloud_dialogflow_cx_v3_parameter_definition_proto_rawDesc = "" +
	"\n" +
	"8google/cloud/dialogflow/cx/v3/parameter_definition.proto\x12\x1dgoogle.cloud.dialogflow.cx.v3\x1a\x1fgoogle/api/field_behavior.proto\"\xf1\x02\n" +
	"\x13ParameterDefinition\x12\x17\n" +
	"\x04name\x18\x01 \x01(\tB\x03\xe0A\x02R\x04name\x12X\n" +
	"\x04type\x18\x02 \x01(\x0e2@.google.cloud.dialogflow.cx.v3.ParameterDefinition.ParameterTypeB\x02\x18\x01R\x04type\x12O\n" +
	"\vtype_schema\x18\x04 \x01(\v2).google.cloud.dialogflow.cx.v3.TypeSchemaB\x03\xe0A\x01R\n" +
	"typeSchema\x12 \n" +
	"\vdescription\x18\x03 \x01(\tR\vdescription\"t\n" +
	"\rParameterType\x12\x1e\n" +
	"\x1aPARAMETER_TYPE_UNSPECIFIED\x10\x00\x12\n" +
	"\n" +
	"\x06STRING\x10\x01\x12\n" +
	"\n" +
	"\x06NUMBER\x10\x02\x12\v\n" +
	"\aBOOLEAN\x10\x03\x12\b\n" +
	"\x04NULL\x10\x04\x12\n" +
	"\n" +
	"\x06OBJECT\x10\x05\x12\b\n" +
	"\x04LIST\x10\x06\"\x91\x02\n" +
	"\n" +
	"TypeSchema\x12R\n" +
	"\rinline_schema\x18\x01 \x01(\v2+.google.cloud.dialogflow.cx.v3.InlineSchemaH\x00R\finlineSchema\x12f\n" +
	"\x10schema_reference\x18\x02 \x01(\v29.google.cloud.dialogflow.cx.v3.TypeSchema.SchemaReferenceH\x00R\x0fschemaReference\x1a=\n" +
	"\x0fSchemaReference\x12\x12\n" +
	"\x04tool\x18\x01 \x01(\tR\x04tool\x12\x16\n" +
	"\x06schema\x18\x02 \x01(\tR\x06schemaB\b\n" +
	"\x06schema\"\x8c\x01\n" +
	"\fInlineSchema\x12;\n" +
	"\x04type\x18\x01 \x01(\x0e2'.google.cloud.dialogflow.cx.v3.DataTypeR\x04type\x12?\n" +
	"\x05items\x18\x02 \x01(\v2).google.cloud.dialogflow.cx.v3.TypeSchemaR\x05items*U\n" +
	"\bDataType\x12\x19\n" +
	"\x15DATA_TYPE_UNSPECIFIED\x10\x00\x12\n" +
	"\n" +
	"\x06STRING\x10\x01\x12\n" +
	"\n" +
	"\x06NUMBER\x10\x02\x12\v\n" +
	"\aBOOLEAN\x10\x03\x12\t\n" +
	"\x05ARRAY\x10\x06B\x96\x01\n" +
	"!com.google.cloud.dialogflow.cx.v3B\x18ParameterDefinitionProtoP\x01Z1cloud.google.com/go/dialogflow/cx/apiv3/cxpb;cxpb\xea\x02!Google::Cloud::Dialogflow::CX::V3b\x06proto3"

var (
	file_google_cloud_dialogflow_cx_v3_parameter_definition_proto_rawDescOnce sync.Once
	file_google_cloud_dialogflow_cx_v3_parameter_definition_proto_rawDescData []byte
)

func file_google_cloud_dialogflow_cx_v3_parameter_definition_proto_rawDescGZIP() []byte {
	file_google_cloud_dialogflow_cx_v3_parameter_definition_proto_rawDescOnce.Do(func() {
		file_google_cloud_dialogflow_cx_v3_parameter_definition_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_google_cloud_dialogflow_cx_v3_parameter_definition_proto_rawDesc), len(file_google_cloud_dialogflow_cx_v3_parameter_definition_proto_rawDesc)))
	})
	return file_google_cloud_dialogflow_cx_v3_parameter_definition_proto_rawDescData
}

var file_google_cloud_dialogflow_cx_v3_parameter_definition_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
var file_google_cloud_dialogflow_cx_v3_parameter_definition_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
var file_google_cloud_dialogflow_cx_v3_parameter_definition_proto_goTypes = []any{
	(DataType)(0),                          // 0: google.cloud.dialogflow.cx.v3.DataType
	(ParameterDefinition_ParameterType)(0), // 1: google.cloud.dialogflow.cx.v3.ParameterDefinition.ParameterType
	(*ParameterDefinition)(nil),            // 2: google.cloud.dialogflow.cx.v3.ParameterDefinition
	(*TypeSchema)(nil),                     // 3: google.cloud.dialogflow.cx.v3.TypeSchema
	(*InlineSchema)(nil),                   // 4: google.cloud.dialogflow.cx.v3.InlineSchema
	(*TypeSchema_SchemaReference)(nil),     // 5: google.cloud.dialogflow.cx.v3.TypeSchema.SchemaReference
}
var file_google_cloud_dialogflow_cx_v3_parameter_definition_proto_depIdxs = []int32{
	1, // 0: google.cloud.dialogflow.cx.v3.ParameterDefinition.type:type_name -> google.cloud.dialogflow.cx.v3.ParameterDefinition.ParameterType
	3, // 1: google.cloud.dialogflow.cx.v3.ParameterDefinition.type_schema:type_name -> google.cloud.dialogflow.cx.v3.TypeSchema
	4, // 2: google.cloud.dialogflow.cx.v3.TypeSchema.inline_schema:type_name -> google.cloud.dialogflow.cx.v3.InlineSchema
	5, // 3: google.cloud.dialogflow.cx.v3.TypeSchema.schema_reference:type_name -> google.cloud.dialogflow.cx.v3.TypeSchema.SchemaReference
	0, // 4: google.cloud.dialogflow.cx.v3.InlineSchema.type:type_name -> google.cloud.dialogflow.cx.v3.DataType
	3, // 5: google.cloud.dialogflow.cx.v3.InlineSchema.items:type_name -> google.cloud.dialogflow.cx.v3.TypeSchema
	6, // [6:6] is the sub-list for method output_type
	6, // [6:6] is the sub-list for method input_type
	6, // [6:6] is the sub-list for extension type_name
	6, // [6:6] is the sub-list for extension extendee
	0, // [0:6] is the sub-list for field type_name
}

func init() { file_google_cloud_dialogflow_cx_v3_parameter_definition_proto_init() }
func file_google_cloud_dialogflow_cx_v3_parameter_definition_proto_init() {
	if File_google_cloud_dialogflow_cx_v3_parameter_definition_proto != nil {
		return
	}
	file_google_cloud_dialogflow_cx_v3_parameter_definition_proto_msgTypes[1].OneofWrappers = []any{
		(*TypeSchema_InlineSchema)(nil),
		(*TypeSchema_SchemaReference_)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_google_cloud_dialogflow_cx_v3_parameter_definition_proto_rawDesc), len(file_google_cloud_dialogflow_cx_v3_parameter_definition_proto_rawDesc)),
			NumEnums:      2,
			NumMessages:   4,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_google_cloud_dialogflow_cx_v3_parameter_definition_proto_goTypes,
		DependencyIndexes: file_google_cloud_dialogflow_cx_v3_parameter_definition_proto_depIdxs,
		EnumInfos:         file_google_cloud_dialogflow_cx_v3_parameter_definition_proto_enumTypes,
		MessageInfos:      file_google_cloud_dialogflow_cx_v3_parameter_definition_proto_msgTypes,
	}.Build()
	File_google_cloud_dialogflow_cx_v3_parameter_definition_proto = out.File
	file_google_cloud_dialogflow_cx_v3_parameter_definition_proto_goTypes = nil
	file_google_cloud_dialogflow_cx_v3_parameter_definition_proto_depIdxs = nil
}
