// 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/v3beta1/experiment.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"
	durationpb "google.golang.org/protobuf/types/known/durationpb"
	emptypb "google.golang.org/protobuf/types/known/emptypb"
	fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb"
	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
)

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)
)

// The state of the experiment.
type Experiment_State int32

const (
	// State unspecified.
	Experiment_STATE_UNSPECIFIED Experiment_State = 0
	// The experiment is created but not started yet.
	Experiment_DRAFT Experiment_State = 1
	// The experiment is running.
	Experiment_RUNNING Experiment_State = 2
	// The experiment is done.
	Experiment_DONE Experiment_State = 3
	// The experiment with auto-rollout enabled has failed.
	Experiment_ROLLOUT_FAILED Experiment_State = 4
)

// Enum value maps for Experiment_State.
var (
	Experiment_State_name = map[int32]string{
		0: "STATE_UNSPECIFIED",
		1: "DRAFT",
		2: "RUNNING",
		3: "DONE",
		4: "ROLLOUT_FAILED",
	}
	Experiment_State_value = map[string]int32{
		"STATE_UNSPECIFIED": 0,
		"DRAFT":             1,
		"RUNNING":           2,
		"DONE":              3,
		"ROLLOUT_FAILED":    4,
	}
)

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

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

func (Experiment_State) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_enumTypes[0].Descriptor()
}

func (Experiment_State) Type() protoreflect.EnumType {
	return &file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_enumTypes[0]
}

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

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

// Types of ratio-based metric for Dialogflow experiment.
type Experiment_Result_MetricType int32

const (
	// Metric unspecified.
	Experiment_Result_METRIC_UNSPECIFIED Experiment_Result_MetricType = 0
	// Percentage of contained sessions without user calling back in 24 hours.
	Experiment_Result_CONTAINED_SESSION_NO_CALLBACK_RATE Experiment_Result_MetricType = 1
	// Percentage of sessions that were handed to a human agent.
	Experiment_Result_LIVE_AGENT_HANDOFF_RATE Experiment_Result_MetricType = 2
	// Percentage of sessions with the same user calling back.
	Experiment_Result_CALLBACK_SESSION_RATE Experiment_Result_MetricType = 3
	// Percentage of sessions where user hung up.
	Experiment_Result_ABANDONED_SESSION_RATE Experiment_Result_MetricType = 4
	// Percentage of sessions reached Dialogflow 'END_PAGE' or
	// 'END_SESSION'.
	Experiment_Result_SESSION_END_RATE Experiment_Result_MetricType = 5
)

// Enum value maps for Experiment_Result_MetricType.
var (
	Experiment_Result_MetricType_name = map[int32]string{
		0: "METRIC_UNSPECIFIED",
		1: "CONTAINED_SESSION_NO_CALLBACK_RATE",
		2: "LIVE_AGENT_HANDOFF_RATE",
		3: "CALLBACK_SESSION_RATE",
		4: "ABANDONED_SESSION_RATE",
		5: "SESSION_END_RATE",
	}
	Experiment_Result_MetricType_value = map[string]int32{
		"METRIC_UNSPECIFIED":                 0,
		"CONTAINED_SESSION_NO_CALLBACK_RATE": 1,
		"LIVE_AGENT_HANDOFF_RATE":            2,
		"CALLBACK_SESSION_RATE":              3,
		"ABANDONED_SESSION_RATE":             4,
		"SESSION_END_RATE":                   5,
	}
)

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

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

func (Experiment_Result_MetricType) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_enumTypes[1].Descriptor()
}

func (Experiment_Result_MetricType) Type() protoreflect.EnumType {
	return &file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_enumTypes[1]
}

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

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

// types of count-based metric for Dialogflow experiment.
type Experiment_Result_CountType int32

const (
	// Count type unspecified.
	Experiment_Result_COUNT_TYPE_UNSPECIFIED Experiment_Result_CountType = 0
	// Total number of occurrences of a 'NO_MATCH'.
	Experiment_Result_TOTAL_NO_MATCH_COUNT Experiment_Result_CountType = 1
	// Total number of turn counts.
	Experiment_Result_TOTAL_TURN_COUNT Experiment_Result_CountType = 2
	// Average turn count in a session.
	Experiment_Result_AVERAGE_TURN_COUNT Experiment_Result_CountType = 3
)

// Enum value maps for Experiment_Result_CountType.
var (
	Experiment_Result_CountType_name = map[int32]string{
		0: "COUNT_TYPE_UNSPECIFIED",
		1: "TOTAL_NO_MATCH_COUNT",
		2: "TOTAL_TURN_COUNT",
		3: "AVERAGE_TURN_COUNT",
	}
	Experiment_Result_CountType_value = map[string]int32{
		"COUNT_TYPE_UNSPECIFIED": 0,
		"TOTAL_NO_MATCH_COUNT":   1,
		"TOTAL_TURN_COUNT":       2,
		"AVERAGE_TURN_COUNT":     3,
	}
)

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

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

func (Experiment_Result_CountType) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_enumTypes[2].Descriptor()
}

func (Experiment_Result_CountType) Type() protoreflect.EnumType {
	return &file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_enumTypes[2]
}

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

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

// Represents an experiment in an environment.
type Experiment struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The name of the experiment.
	// Format:
	// projects/<ProjectID>/locations/<LocationID>/agents/<AgentID>/environments/<EnvironmentID>/experiments/<ExperimentID>.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Required. The human-readable name of the experiment (unique in an
	// environment). Limit of 64 characters.
	DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
	// The human-readable description of the experiment.
	Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
	// The current state of the experiment.
	// Transition triggered by Experiments.StartExperiment: DRAFT->RUNNING.
	// Transition triggered by Experiments.CancelExperiment: DRAFT->DONE or
	// RUNNING->DONE.
	State Experiment_State `protobuf:"varint,4,opt,name=state,proto3,enum=google.cloud.dialogflow.cx.v3beta1.Experiment_State" json:"state,omitempty"`
	// The definition of the experiment.
	Definition *Experiment_Definition `protobuf:"bytes,5,opt,name=definition,proto3" json:"definition,omitempty"`
	// The configuration for auto rollout. If set, there should be exactly two
	// variants in the experiment (control variant being the default version of
	// the flow), the traffic allocation for the non-control variant will
	// gradually increase to 100% when conditions are met, and eventually
	// replace the control variant to become the default version of the flow.
	RolloutConfig *RolloutConfig `protobuf:"bytes,14,opt,name=rollout_config,json=rolloutConfig,proto3" json:"rollout_config,omitempty"`
	// State of the auto rollout process.
	RolloutState *RolloutState `protobuf:"bytes,15,opt,name=rollout_state,json=rolloutState,proto3" json:"rollout_state,omitempty"`
	// The reason why rollout has failed. Should only be set when state is
	// ROLLOUT_FAILED.
	RolloutFailureReason string `protobuf:"bytes,16,opt,name=rollout_failure_reason,json=rolloutFailureReason,proto3" json:"rollout_failure_reason,omitempty"`
	// Inference result of the experiment.
	Result *Experiment_Result `protobuf:"bytes,6,opt,name=result,proto3" json:"result,omitempty"`
	// Creation time of this experiment.
	CreateTime *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
	// Start time of this experiment.
	StartTime *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
	// End time of this experiment.
	EndTime *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`
	// Last update time of this experiment.
	LastUpdateTime *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=last_update_time,json=lastUpdateTime,proto3" json:"last_update_time,omitempty"`
	// Maximum number of days to run the experiment. If auto-rollout is
	// not enabled, default value and maximum will be 30 days. If auto-rollout is
	// enabled, default value and maximum will be 6 days.
	ExperimentLength *durationpb.Duration `protobuf:"bytes,11,opt,name=experiment_length,json=experimentLength,proto3" json:"experiment_length,omitempty"`
	// The history of updates to the experiment variants.
	VariantsHistory []*VariantsHistory `protobuf:"bytes,12,rep,name=variants_history,json=variantsHistory,proto3" json:"variants_history,omitempty"`
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

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

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

func (*Experiment) ProtoMessage() {}

func (x *Experiment) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_dialogflow_cx_v3beta1_experiment_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 Experiment.ProtoReflect.Descriptor instead.
func (*Experiment) Descriptor() ([]byte, []int) {
	return file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_rawDescGZIP(), []int{0}
}

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

func (x *Experiment) GetDisplayName() string {
	if x != nil {
		return x.DisplayName
	}
	return ""
}

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

func (x *Experiment) GetState() Experiment_State {
	if x != nil {
		return x.State
	}
	return Experiment_STATE_UNSPECIFIED
}

func (x *Experiment) GetDefinition() *Experiment_Definition {
	if x != nil {
		return x.Definition
	}
	return nil
}

func (x *Experiment) GetRolloutConfig() *RolloutConfig {
	if x != nil {
		return x.RolloutConfig
	}
	return nil
}

func (x *Experiment) GetRolloutState() *RolloutState {
	if x != nil {
		return x.RolloutState
	}
	return nil
}

func (x *Experiment) GetRolloutFailureReason() string {
	if x != nil {
		return x.RolloutFailureReason
	}
	return ""
}

func (x *Experiment) GetResult() *Experiment_Result {
	if x != nil {
		return x.Result
	}
	return nil
}

func (x *Experiment) GetCreateTime() *timestamppb.Timestamp {
	if x != nil {
		return x.CreateTime
	}
	return nil
}

func (x *Experiment) GetStartTime() *timestamppb.Timestamp {
	if x != nil {
		return x.StartTime
	}
	return nil
}

func (x *Experiment) GetEndTime() *timestamppb.Timestamp {
	if x != nil {
		return x.EndTime
	}
	return nil
}

func (x *Experiment) GetLastUpdateTime() *timestamppb.Timestamp {
	if x != nil {
		return x.LastUpdateTime
	}
	return nil
}

func (x *Experiment) GetExperimentLength() *durationpb.Duration {
	if x != nil {
		return x.ExperimentLength
	}
	return nil
}

func (x *Experiment) GetVariantsHistory() []*VariantsHistory {
	if x != nil {
		return x.VariantsHistory
	}
	return nil
}

// A list of flow version variants.
type VersionVariants struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// A list of flow version variants.
	Variants      []*VersionVariants_Variant `protobuf:"bytes,1,rep,name=variants,proto3" json:"variants,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*VersionVariants) ProtoMessage() {}

func (x *VersionVariants) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_dialogflow_cx_v3beta1_experiment_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 VersionVariants.ProtoReflect.Descriptor instead.
func (*VersionVariants) Descriptor() ([]byte, []int) {
	return file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_rawDescGZIP(), []int{1}
}

func (x *VersionVariants) GetVariants() []*VersionVariants_Variant {
	if x != nil {
		return x.Variants
	}
	return nil
}

// The configuration for auto rollout.
type RolloutConfig struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Steps to roll out a flow version. Steps should be sorted by percentage in
	// ascending order.
	RolloutSteps []*RolloutConfig_RolloutStep `protobuf:"bytes,1,rep,name=rollout_steps,json=rolloutSteps,proto3" json:"rollout_steps,omitempty"`
	// The conditions that are used to evaluate the success of a rollout
	// step. If not specified, all rollout steps will proceed to the next one
	// unless failure conditions are met. E.g. "containment_rate > 60% AND
	// callback_rate < 20%". See the [conditions
	// reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition).
	RolloutCondition string `protobuf:"bytes,2,opt,name=rollout_condition,json=rolloutCondition,proto3" json:"rollout_condition,omitempty"`
	// The conditions that are used to evaluate the failure of a rollout
	// step. If not specified, no rollout steps will fail. E.g. "containment_rate
	// < 10% OR average_turn_count < 3". See the [conditions
	// reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition).
	FailureCondition string `protobuf:"bytes,3,opt,name=failure_condition,json=failureCondition,proto3" json:"failure_condition,omitempty"`
	unknownFields    protoimpl.UnknownFields
	sizeCache        protoimpl.SizeCache
}

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

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

func (*RolloutConfig) ProtoMessage() {}

func (x *RolloutConfig) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_dialogflow_cx_v3beta1_experiment_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 RolloutConfig.ProtoReflect.Descriptor instead.
func (*RolloutConfig) Descriptor() ([]byte, []int) {
	return file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_rawDescGZIP(), []int{2}
}

func (x *RolloutConfig) GetRolloutSteps() []*RolloutConfig_RolloutStep {
	if x != nil {
		return x.RolloutSteps
	}
	return nil
}

func (x *RolloutConfig) GetRolloutCondition() string {
	if x != nil {
		return x.RolloutCondition
	}
	return ""
}

func (x *RolloutConfig) GetFailureCondition() string {
	if x != nil {
		return x.FailureCondition
	}
	return ""
}

// State of the auto-rollout process.
type RolloutState struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Display name of the current auto rollout step.
	Step string `protobuf:"bytes,1,opt,name=step,proto3" json:"step,omitempty"`
	// Index of the current step in the auto rollout steps list.
	StepIndex int32 `protobuf:"varint,3,opt,name=step_index,json=stepIndex,proto3" json:"step_index,omitempty"`
	// Start time of the current step.
	StartTime     *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*RolloutState) ProtoMessage() {}

func (x *RolloutState) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_dialogflow_cx_v3beta1_experiment_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 RolloutState.ProtoReflect.Descriptor instead.
func (*RolloutState) Descriptor() ([]byte, []int) {
	return file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_rawDescGZIP(), []int{3}
}

func (x *RolloutState) GetStep() string {
	if x != nil {
		return x.Step
	}
	return ""
}

func (x *RolloutState) GetStepIndex() int32 {
	if x != nil {
		return x.StepIndex
	}
	return 0
}

func (x *RolloutState) GetStartTime() *timestamppb.Timestamp {
	if x != nil {
		return x.StartTime
	}
	return nil
}

// The history of variants update.
type VariantsHistory struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The variants updated. We currently only support single variant
	// experiment.
	//
	// Types that are valid to be assigned to Variants:
	//
	//	*VariantsHistory_VersionVariants
	Variants isVariantsHistory_Variants `protobuf_oneof:"variants"`
	// Update time of the variants.
	UpdateTime    *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *VariantsHistory) Reset() {
	*x = VariantsHistory{}
	mi := &file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_msgTypes[4]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*VariantsHistory) ProtoMessage() {}

func (x *VariantsHistory) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_msgTypes[4]
	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 VariantsHistory.ProtoReflect.Descriptor instead.
func (*VariantsHistory) Descriptor() ([]byte, []int) {
	return file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_rawDescGZIP(), []int{4}
}

func (x *VariantsHistory) GetVariants() isVariantsHistory_Variants {
	if x != nil {
		return x.Variants
	}
	return nil
}

func (x *VariantsHistory) GetVersionVariants() *VersionVariants {
	if x != nil {
		if x, ok := x.Variants.(*VariantsHistory_VersionVariants); ok {
			return x.VersionVariants
		}
	}
	return nil
}

func (x *VariantsHistory) GetUpdateTime() *timestamppb.Timestamp {
	if x != nil {
		return x.UpdateTime
	}
	return nil
}

type isVariantsHistory_Variants interface {
	isVariantsHistory_Variants()
}

type VariantsHistory_VersionVariants struct {
	// The flow versions as the variants.
	VersionVariants *VersionVariants `protobuf:"bytes,1,opt,name=version_variants,json=versionVariants,proto3,oneof"`
}

func (*VariantsHistory_VersionVariants) isVariantsHistory_Variants() {}

// The request message for
// [Experiments.ListExperiments][google.cloud.dialogflow.cx.v3beta1.Experiments.ListExperiments].
type ListExperimentsRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Required. The [Environment][google.cloud.dialogflow.cx.v3beta1.Environment]
	// to list all environments for. Format:
	// `projects/<ProjectID>/locations/<LocationID>/agents/<AgentID>/environments/<EnvironmentID>`.
	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
	// The maximum number of items to return in a single page. By default 20 and
	// at most 100.
	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
	// The next_page_token value returned from a previous list request.
	PageToken     string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListExperimentsRequest) Reset() {
	*x = ListExperimentsRequest{}
	mi := &file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_msgTypes[5]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ListExperimentsRequest) ProtoMessage() {}

func (x *ListExperimentsRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_msgTypes[5]
	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 ListExperimentsRequest.ProtoReflect.Descriptor instead.
func (*ListExperimentsRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_rawDescGZIP(), []int{5}
}

func (x *ListExperimentsRequest) GetParent() string {
	if x != nil {
		return x.Parent
	}
	return ""
}

func (x *ListExperimentsRequest) GetPageSize() int32 {
	if x != nil {
		return x.PageSize
	}
	return 0
}

func (x *ListExperimentsRequest) GetPageToken() string {
	if x != nil {
		return x.PageToken
	}
	return ""
}

// The response message for
// [Experiments.ListExperiments][google.cloud.dialogflow.cx.v3beta1.Experiments.ListExperiments].
type ListExperimentsResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The list of experiments. There will be a maximum number of items
	// returned based on the page_size field in the request. The list may in some
	// cases be empty or contain fewer entries than page_size even if this isn't
	// the last page.
	Experiments []*Experiment `protobuf:"bytes,1,rep,name=experiments,proto3" json:"experiments,omitempty"`
	// Token to retrieve the next page of results, or empty if there are no more
	// results in the list.
	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListExperimentsResponse) Reset() {
	*x = ListExperimentsResponse{}
	mi := &file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_msgTypes[6]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ListExperimentsResponse) ProtoMessage() {}

func (x *ListExperimentsResponse) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_msgTypes[6]
	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 ListExperimentsResponse.ProtoReflect.Descriptor instead.
func (*ListExperimentsResponse) Descriptor() ([]byte, []int) {
	return file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_rawDescGZIP(), []int{6}
}

func (x *ListExperimentsResponse) GetExperiments() []*Experiment {
	if x != nil {
		return x.Experiments
	}
	return nil
}

func (x *ListExperimentsResponse) GetNextPageToken() string {
	if x != nil {
		return x.NextPageToken
	}
	return ""
}

// The request message for
// [Experiments.GetExperiment][google.cloud.dialogflow.cx.v3beta1.Experiments.GetExperiment].
type GetExperimentRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Required. The name of the
	// [Environment][google.cloud.dialogflow.cx.v3beta1.Environment]. Format:
	// `projects/<ProjectID>/locations/<LocationID>/agents/<AgentID>/environments/<EnvironmentID>/experiments/<ExperimentID>`.
	Name          string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetExperimentRequest) Reset() {
	*x = GetExperimentRequest{}
	mi := &file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_msgTypes[7]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*GetExperimentRequest) ProtoMessage() {}

func (x *GetExperimentRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_msgTypes[7]
	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 GetExperimentRequest.ProtoReflect.Descriptor instead.
func (*GetExperimentRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_rawDescGZIP(), []int{7}
}

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

// The request message for
// [Experiments.CreateExperiment][google.cloud.dialogflow.cx.v3beta1.Experiments.CreateExperiment].
type CreateExperimentRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Required. The [Agent][google.cloud.dialogflow.cx.v3beta1.Agent] to create
	// an [Environment][google.cloud.dialogflow.cx.v3beta1.Environment] for.
	// Format:
	// `projects/<ProjectID>/locations/<LocationID>/agents/<AgentID>/environments/<EnvironmentID>`.
	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
	// Required. The experiment to create.
	Experiment    *Experiment `protobuf:"bytes,2,opt,name=experiment,proto3" json:"experiment,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CreateExperimentRequest) Reset() {
	*x = CreateExperimentRequest{}
	mi := &file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_msgTypes[8]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*CreateExperimentRequest) ProtoMessage() {}

func (x *CreateExperimentRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_msgTypes[8]
	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 CreateExperimentRequest.ProtoReflect.Descriptor instead.
func (*CreateExperimentRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_rawDescGZIP(), []int{8}
}

func (x *CreateExperimentRequest) GetParent() string {
	if x != nil {
		return x.Parent
	}
	return ""
}

func (x *CreateExperimentRequest) GetExperiment() *Experiment {
	if x != nil {
		return x.Experiment
	}
	return nil
}

// The request message for
// [Experiments.UpdateExperiment][google.cloud.dialogflow.cx.v3beta1.Experiments.UpdateExperiment].
type UpdateExperimentRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Required. The experiment to update.
	Experiment *Experiment `protobuf:"bytes,1,opt,name=experiment,proto3" json:"experiment,omitempty"`
	// Required. The mask to control which fields get updated.
	UpdateMask    *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *UpdateExperimentRequest) Reset() {
	*x = UpdateExperimentRequest{}
	mi := &file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_msgTypes[9]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*UpdateExperimentRequest) ProtoMessage() {}

func (x *UpdateExperimentRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_msgTypes[9]
	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 UpdateExperimentRequest.ProtoReflect.Descriptor instead.
func (*UpdateExperimentRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_rawDescGZIP(), []int{9}
}

func (x *UpdateExperimentRequest) GetExperiment() *Experiment {
	if x != nil {
		return x.Experiment
	}
	return nil
}

func (x *UpdateExperimentRequest) GetUpdateMask() *fieldmaskpb.FieldMask {
	if x != nil {
		return x.UpdateMask
	}
	return nil
}

// The request message for
// [Experiments.DeleteExperiment][google.cloud.dialogflow.cx.v3beta1.Experiments.DeleteExperiment].
type DeleteExperimentRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Required. The name of the
	// [Environment][google.cloud.dialogflow.cx.v3beta1.Environment] to delete.
	// Format:
	// `projects/<ProjectID>/locations/<LocationID>/agents/<AgentID>/environments/<EnvironmentID>/experiments/<ExperimentID>`.
	Name          string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *DeleteExperimentRequest) Reset() {
	*x = DeleteExperimentRequest{}
	mi := &file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_msgTypes[10]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*DeleteExperimentRequest) ProtoMessage() {}

func (x *DeleteExperimentRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_msgTypes[10]
	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 DeleteExperimentRequest.ProtoReflect.Descriptor instead.
func (*DeleteExperimentRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_rawDescGZIP(), []int{10}
}

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

// The request message for
// [Experiments.StartExperiment][google.cloud.dialogflow.cx.v3beta1.Experiments.StartExperiment].
type StartExperimentRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Required. Resource name of the experiment to start.
	// Format:
	// `projects/<ProjectID>/locations/<LocationID>/agents/<AgentID>/environments/<EnvironmentID>/experiments/<ExperimentID>`.
	Name          string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *StartExperimentRequest) Reset() {
	*x = StartExperimentRequest{}
	mi := &file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_msgTypes[11]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*StartExperimentRequest) ProtoMessage() {}

func (x *StartExperimentRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_msgTypes[11]
	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 StartExperimentRequest.ProtoReflect.Descriptor instead.
func (*StartExperimentRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_rawDescGZIP(), []int{11}
}

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

// The request message for
// [Experiments.StopExperiment][google.cloud.dialogflow.cx.v3beta1.Experiments.StopExperiment].
type StopExperimentRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Required. Resource name of the experiment to stop.
	// Format:
	// `projects/<ProjectID>/locations/<LocationID>/agents/<AgentID>/environments/<EnvironmentID>/experiments/<ExperimentID>`.
	Name          string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *StopExperimentRequest) Reset() {
	*x = StopExperimentRequest{}
	mi := &file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_msgTypes[12]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*StopExperimentRequest) ProtoMessage() {}

func (x *StopExperimentRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_msgTypes[12]
	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 StopExperimentRequest.ProtoReflect.Descriptor instead.
func (*StopExperimentRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_rawDescGZIP(), []int{12}
}

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

// Definition of the experiment.
type Experiment_Definition struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The condition defines which subset of sessions are selected for
	// this experiment. If not specified, all sessions are eligible. E.g.
	// "query_input.language_code=en" See the [conditions
	// reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition).
	Condition string `protobuf:"bytes,1,opt,name=condition,proto3" json:"condition,omitempty"`
	// The variants of the experiment. We currently only support single variant
	// experiment.
	//
	// Types that are valid to be assigned to Variants:
	//
	//	*Experiment_Definition_VersionVariants
	Variants      isExperiment_Definition_Variants `protobuf_oneof:"variants"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Experiment_Definition) Reset() {
	*x = Experiment_Definition{}
	mi := &file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_msgTypes[13]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Experiment_Definition) ProtoMessage() {}

func (x *Experiment_Definition) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_msgTypes[13]
	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 Experiment_Definition.ProtoReflect.Descriptor instead.
func (*Experiment_Definition) Descriptor() ([]byte, []int) {
	return file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_rawDescGZIP(), []int{0, 0}
}

func (x *Experiment_Definition) GetCondition() string {
	if x != nil {
		return x.Condition
	}
	return ""
}

func (x *Experiment_Definition) GetVariants() isExperiment_Definition_Variants {
	if x != nil {
		return x.Variants
	}
	return nil
}

func (x *Experiment_Definition) GetVersionVariants() *VersionVariants {
	if x != nil {
		if x, ok := x.Variants.(*Experiment_Definition_VersionVariants); ok {
			return x.VersionVariants
		}
	}
	return nil
}

type isExperiment_Definition_Variants interface {
	isExperiment_Definition_Variants()
}

type Experiment_Definition_VersionVariants struct {
	// The flow versions as the variants of this experiment.
	VersionVariants *VersionVariants `protobuf:"bytes,2,opt,name=version_variants,json=versionVariants,proto3,oneof"`
}

func (*Experiment_Definition_VersionVariants) isExperiment_Definition_Variants() {}

// The inference result which includes an objective metric to optimize and the
// confidence interval.
type Experiment_Result struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Version variants and metrics.
	VersionMetrics []*Experiment_Result_VersionMetrics `protobuf:"bytes,1,rep,name=version_metrics,json=versionMetrics,proto3" json:"version_metrics,omitempty"`
	// The last time the experiment's stats data was updated. Will have default
	// value if stats have never been computed for this experiment.
	LastUpdateTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=last_update_time,json=lastUpdateTime,proto3" json:"last_update_time,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *Experiment_Result) Reset() {
	*x = Experiment_Result{}
	mi := &file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_msgTypes[14]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Experiment_Result) ProtoMessage() {}

func (x *Experiment_Result) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_msgTypes[14]
	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 Experiment_Result.ProtoReflect.Descriptor instead.
func (*Experiment_Result) Descriptor() ([]byte, []int) {
	return file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_rawDescGZIP(), []int{0, 1}
}

func (x *Experiment_Result) GetVersionMetrics() []*Experiment_Result_VersionMetrics {
	if x != nil {
		return x.VersionMetrics
	}
	return nil
}

func (x *Experiment_Result) GetLastUpdateTime() *timestamppb.Timestamp {
	if x != nil {
		return x.LastUpdateTime
	}
	return nil
}

// A confidence interval is a range of possible values for the experiment
// objective you are trying to measure.
type Experiment_Result_ConfidenceInterval struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The confidence level used to construct the interval, i.e. there is X%
	// chance that the true value is within this interval.
	ConfidenceLevel float64 `protobuf:"fixed64,1,opt,name=confidence_level,json=confidenceLevel,proto3" json:"confidence_level,omitempty"`
	// The percent change between an experiment metric's value and the value
	// for its control.
	Ratio float64 `protobuf:"fixed64,2,opt,name=ratio,proto3" json:"ratio,omitempty"`
	// Lower bound of the interval.
	LowerBound float64 `protobuf:"fixed64,3,opt,name=lower_bound,json=lowerBound,proto3" json:"lower_bound,omitempty"`
	// Upper bound of the interval.
	UpperBound    float64 `protobuf:"fixed64,4,opt,name=upper_bound,json=upperBound,proto3" json:"upper_bound,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Experiment_Result_ConfidenceInterval) Reset() {
	*x = Experiment_Result_ConfidenceInterval{}
	mi := &file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_msgTypes[15]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Experiment_Result_ConfidenceInterval) ProtoMessage() {}

func (x *Experiment_Result_ConfidenceInterval) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_msgTypes[15]
	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 Experiment_Result_ConfidenceInterval.ProtoReflect.Descriptor instead.
func (*Experiment_Result_ConfidenceInterval) Descriptor() ([]byte, []int) {
	return file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_rawDescGZIP(), []int{0, 1, 0}
}

func (x *Experiment_Result_ConfidenceInterval) GetConfidenceLevel() float64 {
	if x != nil {
		return x.ConfidenceLevel
	}
	return 0
}

func (x *Experiment_Result_ConfidenceInterval) GetRatio() float64 {
	if x != nil {
		return x.Ratio
	}
	return 0
}

func (x *Experiment_Result_ConfidenceInterval) GetLowerBound() float64 {
	if x != nil {
		return x.LowerBound
	}
	return 0
}

func (x *Experiment_Result_ConfidenceInterval) GetUpperBound() float64 {
	if x != nil {
		return x.UpperBound
	}
	return 0
}

// Metric and corresponding confidence intervals.
type Experiment_Result_Metric struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Ratio-based metric type. Only one of type or count_type is specified in
	// each Metric.
	Type Experiment_Result_MetricType `protobuf:"varint,1,opt,name=type,proto3,enum=google.cloud.dialogflow.cx.v3beta1.Experiment_Result_MetricType" json:"type,omitempty"`
	// Count-based metric type. Only one of type or count_type is specified in
	// each Metric.
	CountType Experiment_Result_CountType `protobuf:"varint,5,opt,name=count_type,json=countType,proto3,enum=google.cloud.dialogflow.cx.v3beta1.Experiment_Result_CountType" json:"count_type,omitempty"`
	// The actual value of the metric.
	//
	// Types that are valid to be assigned to Value:
	//
	//	*Experiment_Result_Metric_Ratio
	//	*Experiment_Result_Metric_Count
	Value isExperiment_Result_Metric_Value `protobuf_oneof:"value"`
	// The probability that the treatment is better than all other treatments
	// in the experiment
	ConfidenceInterval *Experiment_Result_ConfidenceInterval `protobuf:"bytes,3,opt,name=confidence_interval,json=confidenceInterval,proto3" json:"confidence_interval,omitempty"`
	unknownFields      protoimpl.UnknownFields
	sizeCache          protoimpl.SizeCache
}

func (x *Experiment_Result_Metric) Reset() {
	*x = Experiment_Result_Metric{}
	mi := &file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_msgTypes[16]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Experiment_Result_Metric) ProtoMessage() {}

func (x *Experiment_Result_Metric) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_msgTypes[16]
	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 Experiment_Result_Metric.ProtoReflect.Descriptor instead.
func (*Experiment_Result_Metric) Descriptor() ([]byte, []int) {
	return file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_rawDescGZIP(), []int{0, 1, 1}
}

func (x *Experiment_Result_Metric) GetType() Experiment_Result_MetricType {
	if x != nil {
		return x.Type
	}
	return Experiment_Result_METRIC_UNSPECIFIED
}

func (x *Experiment_Result_Metric) GetCountType() Experiment_Result_CountType {
	if x != nil {
		return x.CountType
	}
	return Experiment_Result_COUNT_TYPE_UNSPECIFIED
}

func (x *Experiment_Result_Metric) GetValue() isExperiment_Result_Metric_Value {
	if x != nil {
		return x.Value
	}
	return nil
}

func (x *Experiment_Result_Metric) GetRatio() float64 {
	if x != nil {
		if x, ok := x.Value.(*Experiment_Result_Metric_Ratio); ok {
			return x.Ratio
		}
	}
	return 0
}

func (x *Experiment_Result_Metric) GetCount() float64 {
	if x != nil {
		if x, ok := x.Value.(*Experiment_Result_Metric_Count); ok {
			return x.Count
		}
	}
	return 0
}

func (x *Experiment_Result_Metric) GetConfidenceInterval() *Experiment_Result_ConfidenceInterval {
	if x != nil {
		return x.ConfidenceInterval
	}
	return nil
}

type isExperiment_Result_Metric_Value interface {
	isExperiment_Result_Metric_Value()
}

type Experiment_Result_Metric_Ratio struct {
	// Ratio value of a metric.
	Ratio float64 `protobuf:"fixed64,2,opt,name=ratio,proto3,oneof"`
}

type Experiment_Result_Metric_Count struct {
	// Count value of a metric.
	Count float64 `protobuf:"fixed64,4,opt,name=count,proto3,oneof"`
}

func (*Experiment_Result_Metric_Ratio) isExperiment_Result_Metric_Value() {}

func (*Experiment_Result_Metric_Count) isExperiment_Result_Metric_Value() {}

// Version variant and associated metrics.
type Experiment_Result_VersionMetrics struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The name of the flow
	// [Version][google.cloud.dialogflow.cx.v3beta1.Version]. Format:
	// `projects/<ProjectID>/locations/<LocationID>/agents/<AgentID>/flows/<FlowID>/versions/<VersionID>`.
	Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`
	// The metrics and corresponding confidence intervals in the inference
	// result.
	Metrics []*Experiment_Result_Metric `protobuf:"bytes,2,rep,name=metrics,proto3" json:"metrics,omitempty"`
	// Number of sessions that were allocated to this version.
	SessionCount  int32 `protobuf:"varint,3,opt,name=session_count,json=sessionCount,proto3" json:"session_count,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Experiment_Result_VersionMetrics) Reset() {
	*x = Experiment_Result_VersionMetrics{}
	mi := &file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_msgTypes[17]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Experiment_Result_VersionMetrics) ProtoMessage() {}

func (x *Experiment_Result_VersionMetrics) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_msgTypes[17]
	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 Experiment_Result_VersionMetrics.ProtoReflect.Descriptor instead.
func (*Experiment_Result_VersionMetrics) Descriptor() ([]byte, []int) {
	return file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_rawDescGZIP(), []int{0, 1, 2}
}

func (x *Experiment_Result_VersionMetrics) GetVersion() string {
	if x != nil {
		return x.Version
	}
	return ""
}

func (x *Experiment_Result_VersionMetrics) GetMetrics() []*Experiment_Result_Metric {
	if x != nil {
		return x.Metrics
	}
	return nil
}

func (x *Experiment_Result_VersionMetrics) GetSessionCount() int32 {
	if x != nil {
		return x.SessionCount
	}
	return 0
}

// A single flow version with specified traffic allocation.
type VersionVariants_Variant struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The name of the flow version.
	// Format:
	// `projects/<ProjectID>/locations/<LocationID>/agents/<AgentID>/flows/<FlowID>/versions/<VersionID>`.
	Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`
	// Percentage of the traffic which should be routed to this
	// version of flow. Traffic allocation for a single flow must sum up to 1.0.
	TrafficAllocation float32 `protobuf:"fixed32,2,opt,name=traffic_allocation,json=trafficAllocation,proto3" json:"traffic_allocation,omitempty"`
	// Whether the variant is for the control group.
	IsControlGroup bool `protobuf:"varint,3,opt,name=is_control_group,json=isControlGroup,proto3" json:"is_control_group,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *VersionVariants_Variant) Reset() {
	*x = VersionVariants_Variant{}
	mi := &file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_msgTypes[18]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*VersionVariants_Variant) ProtoMessage() {}

func (x *VersionVariants_Variant) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_msgTypes[18]
	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 VersionVariants_Variant.ProtoReflect.Descriptor instead.
func (*VersionVariants_Variant) Descriptor() ([]byte, []int) {
	return file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_rawDescGZIP(), []int{1, 0}
}

func (x *VersionVariants_Variant) GetVersion() string {
	if x != nil {
		return x.Version
	}
	return ""
}

func (x *VersionVariants_Variant) GetTrafficAllocation() float32 {
	if x != nil {
		return x.TrafficAllocation
	}
	return 0
}

func (x *VersionVariants_Variant) GetIsControlGroup() bool {
	if x != nil {
		return x.IsControlGroup
	}
	return false
}

// A single rollout step with specified traffic allocation.
type RolloutConfig_RolloutStep struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The name of the rollout step;
	DisplayName string `protobuf:"bytes,1,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
	// The percentage of traffic allocated to the flow version of this rollout
	// step. (0%, 100%].
	TrafficPercent int32 `protobuf:"varint,2,opt,name=traffic_percent,json=trafficPercent,proto3" json:"traffic_percent,omitempty"`
	// The minimum time that this step should last. Should be longer than 1
	// hour. If not set, the default minimum duration for each step will be 1
	// hour.
	MinDuration   *durationpb.Duration `protobuf:"bytes,3,opt,name=min_duration,json=minDuration,proto3" json:"min_duration,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RolloutConfig_RolloutStep) Reset() {
	*x = RolloutConfig_RolloutStep{}
	mi := &file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_msgTypes[19]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*RolloutConfig_RolloutStep) ProtoMessage() {}

func (x *RolloutConfig_RolloutStep) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_msgTypes[19]
	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 RolloutConfig_RolloutStep.ProtoReflect.Descriptor instead.
func (*RolloutConfig_RolloutStep) Descriptor() ([]byte, []int) {
	return file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_rawDescGZIP(), []int{2, 0}
}

func (x *RolloutConfig_RolloutStep) GetDisplayName() string {
	if x != nil {
		return x.DisplayName
	}
	return ""
}

func (x *RolloutConfig_RolloutStep) GetTrafficPercent() int32 {
	if x != nil {
		return x.TrafficPercent
	}
	return 0
}

func (x *RolloutConfig_RolloutStep) GetMinDuration() *durationpb.Duration {
	if x != nil {
		return x.MinDuration
	}
	return nil
}

var File_google_cloud_dialogflow_cx_v3beta1_experiment_proto protoreflect.FileDescriptor

const file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_rawDesc = "" +
	"\n" +
	"3google/cloud/dialogflow/cx/v3beta1/experiment.proto\x12\"google.cloud.dialogflow.cx.v3beta1\x1a\x1cgoogle/api/annotations.proto\x1a\x17google/api/client.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x19google/api/resource.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a google/protobuf/field_mask.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xb9\x14\n" +
	"\n" +
	"Experiment\x12\x12\n" +
	"\x04name\x18\x01 \x01(\tR\x04name\x12&\n" +
	"\fdisplay_name\x18\x02 \x01(\tB\x03\xe0A\x02R\vdisplayName\x12 \n" +
	"\vdescription\x18\x03 \x01(\tR\vdescription\x12J\n" +
	"\x05state\x18\x04 \x01(\x0e24.google.cloud.dialogflow.cx.v3beta1.Experiment.StateR\x05state\x12Y\n" +
	"\n" +
	"definition\x18\x05 \x01(\v29.google.cloud.dialogflow.cx.v3beta1.Experiment.DefinitionR\n" +
	"definition\x12X\n" +
	"\x0erollout_config\x18\x0e \x01(\v21.google.cloud.dialogflow.cx.v3beta1.RolloutConfigR\rrolloutConfig\x12U\n" +
	"\rrollout_state\x18\x0f \x01(\v20.google.cloud.dialogflow.cx.v3beta1.RolloutStateR\frolloutState\x124\n" +
	"\x16rollout_failure_reason\x18\x10 \x01(\tR\x14rolloutFailureReason\x12M\n" +
	"\x06result\x18\x06 \x01(\v25.google.cloud.dialogflow.cx.v3beta1.Experiment.ResultR\x06result\x12;\n" +
	"\vcreate_time\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\n" +
	"createTime\x129\n" +
	"\n" +
	"start_time\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\tstartTime\x125\n" +
	"\bend_time\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\aendTime\x12D\n" +
	"\x10last_update_time\x18\n" +
	" \x01(\v2\x1a.google.protobuf.TimestampR\x0elastUpdateTime\x12F\n" +
	"\x11experiment_length\x18\v \x01(\v2\x19.google.protobuf.DurationR\x10experimentLength\x12^\n" +
	"\x10variants_history\x18\f \x03(\v23.google.cloud.dialogflow.cx.v3beta1.VariantsHistoryR\x0fvariantsHistory\x1a\x98\x01\n" +
	"\n" +
	"Definition\x12\x1c\n" +
	"\tcondition\x18\x01 \x01(\tR\tcondition\x12`\n" +
	"\x10version_variants\x18\x02 \x01(\v23.google.cloud.dialogflow.cx.v3beta1.VersionVariantsH\x00R\x0fversionVariantsB\n" +
	"\n" +
	"\bvariants\x1a\xc8\t\n" +
	"\x06Result\x12m\n" +
	"\x0fversion_metrics\x18\x01 \x03(\v2D.google.cloud.dialogflow.cx.v3beta1.Experiment.Result.VersionMetricsR\x0eversionMetrics\x12D\n" +
	"\x10last_update_time\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\x0elastUpdateTime\x1a\x97\x01\n" +
	"\x12ConfidenceInterval\x12)\n" +
	"\x10confidence_level\x18\x01 \x01(\x01R\x0fconfidenceLevel\x12\x14\n" +
	"\x05ratio\x18\x02 \x01(\x01R\x05ratio\x12\x1f\n" +
	"\vlower_bound\x18\x03 \x01(\x01R\n" +
	"lowerBound\x12\x1f\n" +
	"\vupper_bound\x18\x04 \x01(\x01R\n" +
	"upperBound\x1a\xf2\x02\n" +
	"\x06Metric\x12T\n" +
	"\x04type\x18\x01 \x01(\x0e2@.google.cloud.dialogflow.cx.v3beta1.Experiment.Result.MetricTypeR\x04type\x12^\n" +
	"\n" +
	"count_type\x18\x05 \x01(\x0e2?.google.cloud.dialogflow.cx.v3beta1.Experiment.Result.CountTypeR\tcountType\x12\x16\n" +
	"\x05ratio\x18\x02 \x01(\x01H\x00R\x05ratio\x12\x16\n" +
	"\x05count\x18\x04 \x01(\x01H\x00R\x05count\x12y\n" +
	"\x13confidence_interval\x18\x03 \x01(\v2H.google.cloud.dialogflow.cx.v3beta1.Experiment.Result.ConfidenceIntervalR\x12confidenceIntervalB\a\n" +
	"\x05value\x1a\xcf\x01\n" +
	"\x0eVersionMetrics\x12@\n" +
	"\aversion\x18\x01 \x01(\tB&\xfaA#\n" +
	"!dialogflow.googleapis.com/VersionR\aversion\x12V\n" +
	"\ametrics\x18\x02 \x03(\v2<.google.cloud.dialogflow.cx.v3beta1.Experiment.Result.MetricR\ametrics\x12#\n" +
	"\rsession_count\x18\x03 \x01(\x05R\fsessionCount\"\xb6\x01\n" +
	"\n" +
	"MetricType\x12\x16\n" +
	"\x12METRIC_UNSPECIFIED\x10\x00\x12&\n" +
	"\"CONTAINED_SESSION_NO_CALLBACK_RATE\x10\x01\x12\x1b\n" +
	"\x17LIVE_AGENT_HANDOFF_RATE\x10\x02\x12\x19\n" +
	"\x15CALLBACK_SESSION_RATE\x10\x03\x12\x1a\n" +
	"\x16ABANDONED_SESSION_RATE\x10\x04\x12\x14\n" +
	"\x10SESSION_END_RATE\x10\x05\"o\n" +
	"\tCountType\x12\x1a\n" +
	"\x16COUNT_TYPE_UNSPECIFIED\x10\x00\x12\x18\n" +
	"\x14TOTAL_NO_MATCH_COUNT\x10\x01\x12\x14\n" +
	"\x10TOTAL_TURN_COUNT\x10\x02\x12\x16\n" +
	"\x12AVERAGE_TURN_COUNT\x10\x03\"T\n" +
	"\x05State\x12\x15\n" +
	"\x11STATE_UNSPECIFIED\x10\x00\x12\t\n" +
	"\x05DRAFT\x10\x01\x12\v\n" +
	"\aRUNNING\x10\x02\x12\b\n" +
	"\x04DONE\x10\x03\x12\x12\n" +
	"\x0eROLLOUT_FAILED\x10\x04:\x96\x01\xeaA\x92\x01\n" +
	"$dialogflow.googleapis.com/Experiment\x12jprojects/{project}/locations/{location}/agents/{agent}/environments/{environment}/experiments/{experiment}\"\xe8\x01\n" +
	"\x0fVersionVariants\x12W\n" +
	"\bvariants\x18\x01 \x03(\v2;.google.cloud.dialogflow.cx.v3beta1.VersionVariants.VariantR\bvariants\x1a|\n" +
	"\aVariant\x12\x18\n" +
	"\aversion\x18\x01 \x01(\tR\aversion\x12-\n" +
	"\x12traffic_allocation\x18\x02 \x01(\x02R\x11trafficAllocation\x12(\n" +
	"\x10is_control_group\x18\x03 \x01(\bR\x0eisControlGroup\"\xe7\x02\n" +
	"\rRolloutConfig\x12b\n" +
	"\rrollout_steps\x18\x01 \x03(\v2=.google.cloud.dialogflow.cx.v3beta1.RolloutConfig.RolloutStepR\frolloutSteps\x12+\n" +
	"\x11rollout_condition\x18\x02 \x01(\tR\x10rolloutCondition\x12+\n" +
	"\x11failure_condition\x18\x03 \x01(\tR\x10failureCondition\x1a\x97\x01\n" +
	"\vRolloutStep\x12!\n" +
	"\fdisplay_name\x18\x01 \x01(\tR\vdisplayName\x12'\n" +
	"\x0ftraffic_percent\x18\x02 \x01(\x05R\x0etrafficPercent\x12<\n" +
	"\fmin_duration\x18\x03 \x01(\v2\x19.google.protobuf.DurationR\vminDuration\"|\n" +
	"\fRolloutState\x12\x12\n" +
	"\x04step\x18\x01 \x01(\tR\x04step\x12\x1d\n" +
	"\n" +
	"step_index\x18\x03 \x01(\x05R\tstepIndex\x129\n" +
	"\n" +
	"start_time\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\tstartTime\"\xbc\x01\n" +
	"\x0fVariantsHistory\x12`\n" +
	"\x10version_variants\x18\x01 \x01(\v23.google.cloud.dialogflow.cx.v3beta1.VersionVariantsH\x00R\x0fversionVariants\x12;\n" +
	"\vupdate_time\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\n" +
	"updateTimeB\n" +
	"\n" +
	"\bvariants\"\x9a\x01\n" +
	"\x16ListExperimentsRequest\x12D\n" +
	"\x06parent\x18\x01 \x01(\tB,\xe0A\x02\xfaA&\x12$dialogflow.googleapis.com/ExperimentR\x06parent\x12\x1b\n" +
	"\tpage_size\x18\x02 \x01(\x05R\bpageSize\x12\x1d\n" +
	"\n" +
	"page_token\x18\x03 \x01(\tR\tpageToken\"\x93\x01\n" +
	"\x17ListExperimentsResponse\x12P\n" +
	"\vexperiments\x18\x01 \x03(\v2..google.cloud.dialogflow.cx.v3beta1.ExperimentR\vexperiments\x12&\n" +
	"\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\"X\n" +
	"\x14GetExperimentRequest\x12@\n" +
	"\x04name\x18\x01 \x01(\tB,\xe0A\x02\xfaA&\n" +
	"$dialogflow.googleapis.com/ExperimentR\x04name\"\xb4\x01\n" +
	"\x17CreateExperimentRequest\x12D\n" +
	"\x06parent\x18\x01 \x01(\tB,\xe0A\x02\xfaA&\x12$dialogflow.googleapis.com/ExperimentR\x06parent\x12S\n" +
	"\n" +
	"experiment\x18\x02 \x01(\v2..google.cloud.dialogflow.cx.v3beta1.ExperimentB\x03\xe0A\x02R\n" +
	"experiment\"\xb0\x01\n" +
	"\x17UpdateExperimentRequest\x12S\n" +
	"\n" +
	"experiment\x18\x01 \x01(\v2..google.cloud.dialogflow.cx.v3beta1.ExperimentB\x03\xe0A\x02R\n" +
	"experiment\x12@\n" +
	"\vupdate_mask\x18\x02 \x01(\v2\x1a.google.protobuf.FieldMaskB\x03\xe0A\x02R\n" +
	"updateMask\"[\n" +
	"\x17DeleteExperimentRequest\x12@\n" +
	"\x04name\x18\x01 \x01(\tB,\xe0A\x02\xfaA&\n" +
	"$dialogflow.googleapis.com/ExperimentR\x04name\"Z\n" +
	"\x16StartExperimentRequest\x12@\n" +
	"\x04name\x18\x01 \x01(\tB,\xe0A\x02\xfaA&\n" +
	"$dialogflow.googleapis.com/ExperimentR\x04name\"Y\n" +
	"\x15StopExperimentRequest\x12@\n" +
	"\x04name\x18\x01 \x01(\tB,\xe0A\x02\xfaA&\n" +
	"$dialogflow.googleapis.com/ExperimentR\x04name2\xdd\r\n" +
	"\vExperiments\x12\xe9\x01\n" +
	"\x0fListExperiments\x12:.google.cloud.dialogflow.cx.v3beta1.ListExperimentsRequest\x1a;.google.cloud.dialogflow.cx.v3beta1.ListExperimentsResponse\"]\xdaA\x06parent\x82\xd3\xe4\x93\x02N\x12L/v3beta1/{parent=projects/*/locations/*/agents/*/environments/*}/experiments\x12\xd6\x01\n" +
	"\rGetExperiment\x128.google.cloud.dialogflow.cx.v3beta1.GetExperimentRequest\x1a..google.cloud.dialogflow.cx.v3beta1.Experiment\"[\xdaA\x04name\x82\xd3\xe4\x93\x02N\x12L/v3beta1/{name=projects/*/locations/*/agents/*/environments/*/experiments/*}\x12\xf5\x01\n" +
	"\x10CreateExperiment\x12;.google.cloud.dialogflow.cx.v3beta1.CreateExperimentRequest\x1a..google.cloud.dialogflow.cx.v3beta1.Experiment\"t\xdaA\x11parent,experiment\x82\xd3\xe4\x93\x02Z:\n" +
	"experiment\"L/v3beta1/{parent=projects/*/locations/*/agents/*/environments/*}/experiments\x12\x86\x02\n" +
	"\x10UpdateExperiment\x12;.google.cloud.dialogflow.cx.v3beta1.UpdateExperimentRequest\x1a..google.cloud.dialogflow.cx.v3beta1.Experiment\"\x84\x01\xdaA\x16experiment,update_mask\x82\xd3\xe4\x93\x02e:\n" +
	"experiment2W/v3beta1/{experiment.name=projects/*/locations/*/agents/*/environments/*/experiments/*}\x12\xc4\x01\n" +
	"\x10DeleteExperiment\x12;.google.cloud.dialogflow.cx.v3beta1.DeleteExperimentRequest\x1a\x16.google.protobuf.Empty\"[\xdaA\x04name\x82\xd3\xe4\x93\x02N*L/v3beta1/{name=projects/*/locations/*/agents/*/environments/*/experiments/*}\x12\xe3\x01\n" +
	"\x0fStartExperiment\x12:.google.cloud.dialogflow.cx.v3beta1.StartExperimentRequest\x1a..google.cloud.dialogflow.cx.v3beta1.Experiment\"d\xdaA\x04name\x82\xd3\xe4\x93\x02W:\x01*\"R/v3beta1/{name=projects/*/locations/*/agents/*/environments/*/experiments/*}:start\x12\xe0\x01\n" +
	"\x0eStopExperiment\x129.google.cloud.dialogflow.cx.v3beta1.StopExperimentRequest\x1a..google.cloud.dialogflow.cx.v3beta1.Experiment\"c\xdaA\x04name\x82\xd3\xe4\x93\x02V:\x01*\"Q/v3beta1/{name=projects/*/locations/*/agents/*/environments/*/experiments/*}:stop\x1ax\xcaA\x19dialogflow.googleapis.com\xd2AYhttps://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/dialogflowB\xc6\x01\n" +
	"&com.google.cloud.dialogflow.cx.v3beta1B\x0fExperimentProtoP\x01Z6cloud.google.com/go/dialogflow/cx/apiv3beta1/cxpb;cxpb\xa2\x02\x02DF\xaa\x02\"Google.Cloud.Dialogflow.Cx.V3Beta1\xea\x02&Google::Cloud::Dialogflow::CX::V3beta1b\x06proto3"

var (
	file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_rawDescOnce sync.Once
	file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_rawDescData []byte
)

func file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_rawDescGZIP() []byte {
	file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_rawDescOnce.Do(func() {
		file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_rawDesc), len(file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_rawDesc)))
	})
	return file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_rawDescData
}

var file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
var file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_msgTypes = make([]protoimpl.MessageInfo, 20)
var file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_goTypes = []any{
	(Experiment_State)(0),                        // 0: google.cloud.dialogflow.cx.v3beta1.Experiment.State
	(Experiment_Result_MetricType)(0),            // 1: google.cloud.dialogflow.cx.v3beta1.Experiment.Result.MetricType
	(Experiment_Result_CountType)(0),             // 2: google.cloud.dialogflow.cx.v3beta1.Experiment.Result.CountType
	(*Experiment)(nil),                           // 3: google.cloud.dialogflow.cx.v3beta1.Experiment
	(*VersionVariants)(nil),                      // 4: google.cloud.dialogflow.cx.v3beta1.VersionVariants
	(*RolloutConfig)(nil),                        // 5: google.cloud.dialogflow.cx.v3beta1.RolloutConfig
	(*RolloutState)(nil),                         // 6: google.cloud.dialogflow.cx.v3beta1.RolloutState
	(*VariantsHistory)(nil),                      // 7: google.cloud.dialogflow.cx.v3beta1.VariantsHistory
	(*ListExperimentsRequest)(nil),               // 8: google.cloud.dialogflow.cx.v3beta1.ListExperimentsRequest
	(*ListExperimentsResponse)(nil),              // 9: google.cloud.dialogflow.cx.v3beta1.ListExperimentsResponse
	(*GetExperimentRequest)(nil),                 // 10: google.cloud.dialogflow.cx.v3beta1.GetExperimentRequest
	(*CreateExperimentRequest)(nil),              // 11: google.cloud.dialogflow.cx.v3beta1.CreateExperimentRequest
	(*UpdateExperimentRequest)(nil),              // 12: google.cloud.dialogflow.cx.v3beta1.UpdateExperimentRequest
	(*DeleteExperimentRequest)(nil),              // 13: google.cloud.dialogflow.cx.v3beta1.DeleteExperimentRequest
	(*StartExperimentRequest)(nil),               // 14: google.cloud.dialogflow.cx.v3beta1.StartExperimentRequest
	(*StopExperimentRequest)(nil),                // 15: google.cloud.dialogflow.cx.v3beta1.StopExperimentRequest
	(*Experiment_Definition)(nil),                // 16: google.cloud.dialogflow.cx.v3beta1.Experiment.Definition
	(*Experiment_Result)(nil),                    // 17: google.cloud.dialogflow.cx.v3beta1.Experiment.Result
	(*Experiment_Result_ConfidenceInterval)(nil), // 18: google.cloud.dialogflow.cx.v3beta1.Experiment.Result.ConfidenceInterval
	(*Experiment_Result_Metric)(nil),             // 19: google.cloud.dialogflow.cx.v3beta1.Experiment.Result.Metric
	(*Experiment_Result_VersionMetrics)(nil),     // 20: google.cloud.dialogflow.cx.v3beta1.Experiment.Result.VersionMetrics
	(*VersionVariants_Variant)(nil),              // 21: google.cloud.dialogflow.cx.v3beta1.VersionVariants.Variant
	(*RolloutConfig_RolloutStep)(nil),            // 22: google.cloud.dialogflow.cx.v3beta1.RolloutConfig.RolloutStep
	(*timestamppb.Timestamp)(nil),                // 23: google.protobuf.Timestamp
	(*durationpb.Duration)(nil),                  // 24: google.protobuf.Duration
	(*fieldmaskpb.FieldMask)(nil),                // 25: google.protobuf.FieldMask
	(*emptypb.Empty)(nil),                        // 26: google.protobuf.Empty
}
var file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_depIdxs = []int32{
	0,  // 0: google.cloud.dialogflow.cx.v3beta1.Experiment.state:type_name -> google.cloud.dialogflow.cx.v3beta1.Experiment.State
	16, // 1: google.cloud.dialogflow.cx.v3beta1.Experiment.definition:type_name -> google.cloud.dialogflow.cx.v3beta1.Experiment.Definition
	5,  // 2: google.cloud.dialogflow.cx.v3beta1.Experiment.rollout_config:type_name -> google.cloud.dialogflow.cx.v3beta1.RolloutConfig
	6,  // 3: google.cloud.dialogflow.cx.v3beta1.Experiment.rollout_state:type_name -> google.cloud.dialogflow.cx.v3beta1.RolloutState
	17, // 4: google.cloud.dialogflow.cx.v3beta1.Experiment.result:type_name -> google.cloud.dialogflow.cx.v3beta1.Experiment.Result
	23, // 5: google.cloud.dialogflow.cx.v3beta1.Experiment.create_time:type_name -> google.protobuf.Timestamp
	23, // 6: google.cloud.dialogflow.cx.v3beta1.Experiment.start_time:type_name -> google.protobuf.Timestamp
	23, // 7: google.cloud.dialogflow.cx.v3beta1.Experiment.end_time:type_name -> google.protobuf.Timestamp
	23, // 8: google.cloud.dialogflow.cx.v3beta1.Experiment.last_update_time:type_name -> google.protobuf.Timestamp
	24, // 9: google.cloud.dialogflow.cx.v3beta1.Experiment.experiment_length:type_name -> google.protobuf.Duration
	7,  // 10: google.cloud.dialogflow.cx.v3beta1.Experiment.variants_history:type_name -> google.cloud.dialogflow.cx.v3beta1.VariantsHistory
	21, // 11: google.cloud.dialogflow.cx.v3beta1.VersionVariants.variants:type_name -> google.cloud.dialogflow.cx.v3beta1.VersionVariants.Variant
	22, // 12: google.cloud.dialogflow.cx.v3beta1.RolloutConfig.rollout_steps:type_name -> google.cloud.dialogflow.cx.v3beta1.RolloutConfig.RolloutStep
	23, // 13: google.cloud.dialogflow.cx.v3beta1.RolloutState.start_time:type_name -> google.protobuf.Timestamp
	4,  // 14: google.cloud.dialogflow.cx.v3beta1.VariantsHistory.version_variants:type_name -> google.cloud.dialogflow.cx.v3beta1.VersionVariants
	23, // 15: google.cloud.dialogflow.cx.v3beta1.VariantsHistory.update_time:type_name -> google.protobuf.Timestamp
	3,  // 16: google.cloud.dialogflow.cx.v3beta1.ListExperimentsResponse.experiments:type_name -> google.cloud.dialogflow.cx.v3beta1.Experiment
	3,  // 17: google.cloud.dialogflow.cx.v3beta1.CreateExperimentRequest.experiment:type_name -> google.cloud.dialogflow.cx.v3beta1.Experiment
	3,  // 18: google.cloud.dialogflow.cx.v3beta1.UpdateExperimentRequest.experiment:type_name -> google.cloud.dialogflow.cx.v3beta1.Experiment
	25, // 19: google.cloud.dialogflow.cx.v3beta1.UpdateExperimentRequest.update_mask:type_name -> google.protobuf.FieldMask
	4,  // 20: google.cloud.dialogflow.cx.v3beta1.Experiment.Definition.version_variants:type_name -> google.cloud.dialogflow.cx.v3beta1.VersionVariants
	20, // 21: google.cloud.dialogflow.cx.v3beta1.Experiment.Result.version_metrics:type_name -> google.cloud.dialogflow.cx.v3beta1.Experiment.Result.VersionMetrics
	23, // 22: google.cloud.dialogflow.cx.v3beta1.Experiment.Result.last_update_time:type_name -> google.protobuf.Timestamp
	1,  // 23: google.cloud.dialogflow.cx.v3beta1.Experiment.Result.Metric.type:type_name -> google.cloud.dialogflow.cx.v3beta1.Experiment.Result.MetricType
	2,  // 24: google.cloud.dialogflow.cx.v3beta1.Experiment.Result.Metric.count_type:type_name -> google.cloud.dialogflow.cx.v3beta1.Experiment.Result.CountType
	18, // 25: google.cloud.dialogflow.cx.v3beta1.Experiment.Result.Metric.confidence_interval:type_name -> google.cloud.dialogflow.cx.v3beta1.Experiment.Result.ConfidenceInterval
	19, // 26: google.cloud.dialogflow.cx.v3beta1.Experiment.Result.VersionMetrics.metrics:type_name -> google.cloud.dialogflow.cx.v3beta1.Experiment.Result.Metric
	24, // 27: google.cloud.dialogflow.cx.v3beta1.RolloutConfig.RolloutStep.min_duration:type_name -> google.protobuf.Duration
	8,  // 28: google.cloud.dialogflow.cx.v3beta1.Experiments.ListExperiments:input_type -> google.cloud.dialogflow.cx.v3beta1.ListExperimentsRequest
	10, // 29: google.cloud.dialogflow.cx.v3beta1.Experiments.GetExperiment:input_type -> google.cloud.dialogflow.cx.v3beta1.GetExperimentRequest
	11, // 30: google.cloud.dialogflow.cx.v3beta1.Experiments.CreateExperiment:input_type -> google.cloud.dialogflow.cx.v3beta1.CreateExperimentRequest
	12, // 31: google.cloud.dialogflow.cx.v3beta1.Experiments.UpdateExperiment:input_type -> google.cloud.dialogflow.cx.v3beta1.UpdateExperimentRequest
	13, // 32: google.cloud.dialogflow.cx.v3beta1.Experiments.DeleteExperiment:input_type -> google.cloud.dialogflow.cx.v3beta1.DeleteExperimentRequest
	14, // 33: google.cloud.dialogflow.cx.v3beta1.Experiments.StartExperiment:input_type -> google.cloud.dialogflow.cx.v3beta1.StartExperimentRequest
	15, // 34: google.cloud.dialogflow.cx.v3beta1.Experiments.StopExperiment:input_type -> google.cloud.dialogflow.cx.v3beta1.StopExperimentRequest
	9,  // 35: google.cloud.dialogflow.cx.v3beta1.Experiments.ListExperiments:output_type -> google.cloud.dialogflow.cx.v3beta1.ListExperimentsResponse
	3,  // 36: google.cloud.dialogflow.cx.v3beta1.Experiments.GetExperiment:output_type -> google.cloud.dialogflow.cx.v3beta1.Experiment
	3,  // 37: google.cloud.dialogflow.cx.v3beta1.Experiments.CreateExperiment:output_type -> google.cloud.dialogflow.cx.v3beta1.Experiment
	3,  // 38: google.cloud.dialogflow.cx.v3beta1.Experiments.UpdateExperiment:output_type -> google.cloud.dialogflow.cx.v3beta1.Experiment
	26, // 39: google.cloud.dialogflow.cx.v3beta1.Experiments.DeleteExperiment:output_type -> google.protobuf.Empty
	3,  // 40: google.cloud.dialogflow.cx.v3beta1.Experiments.StartExperiment:output_type -> google.cloud.dialogflow.cx.v3beta1.Experiment
	3,  // 41: google.cloud.dialogflow.cx.v3beta1.Experiments.StopExperiment:output_type -> google.cloud.dialogflow.cx.v3beta1.Experiment
	35, // [35:42] is the sub-list for method output_type
	28, // [28:35] is the sub-list for method input_type
	28, // [28:28] is the sub-list for extension type_name
	28, // [28:28] is the sub-list for extension extendee
	0,  // [0:28] is the sub-list for field type_name
}

func init() { file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_init() }
func file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_init() {
	if File_google_cloud_dialogflow_cx_v3beta1_experiment_proto != nil {
		return
	}
	file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_msgTypes[4].OneofWrappers = []any{
		(*VariantsHistory_VersionVariants)(nil),
	}
	file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_msgTypes[13].OneofWrappers = []any{
		(*Experiment_Definition_VersionVariants)(nil),
	}
	file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_msgTypes[16].OneofWrappers = []any{
		(*Experiment_Result_Metric_Ratio)(nil),
		(*Experiment_Result_Metric_Count)(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_v3beta1_experiment_proto_rawDesc), len(file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_rawDesc)),
			NumEnums:      3,
			NumMessages:   20,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_goTypes,
		DependencyIndexes: file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_depIdxs,
		EnumInfos:         file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_enumTypes,
		MessageInfos:      file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_msgTypes,
	}.Build()
	File_google_cloud_dialogflow_cx_v3beta1_experiment_proto = out.File
	file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_goTypes = nil
	file_google_cloud_dialogflow_cx_v3beta1_experiment_proto_depIdxs = nil
}
