// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.11
// 	protoc        v3.21.12
// source: yandex/cloud/loadtesting/api/v1/report/kpi.proto

package report

import (
	common "github.com/yandex-cloud/go-genproto/yandex/cloud/loadtesting/api/v1/common"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	reflect "reflect"
	sync "sync"
	unsafe "unsafe"
)

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

// Aggregation function.
type Aggregation int32

const (
	// Unspecified.
	Aggregation_AGGREGATION_UNSPECIFIED Aggregation = 0
	// Minimum.
	Aggregation_AGGREGATION_MIN Aggregation = 1
	// Maximum.
	Aggregation_AGGREGATION_MAX Aggregation = 2
	// Average.
	Aggregation_AGGREGATION_AVG Aggregation = 4
	// Median.
	Aggregation_AGGREGATION_MEDIAN Aggregation = 5
	// Standard deviation.
	Aggregation_AGGREGATION_STD_DEV Aggregation = 6
)

// Enum value maps for Aggregation.
var (
	Aggregation_name = map[int32]string{
		0: "AGGREGATION_UNSPECIFIED",
		1: "AGGREGATION_MIN",
		2: "AGGREGATION_MAX",
		4: "AGGREGATION_AVG",
		5: "AGGREGATION_MEDIAN",
		6: "AGGREGATION_STD_DEV",
	}
	Aggregation_value = map[string]int32{
		"AGGREGATION_UNSPECIFIED": 0,
		"AGGREGATION_MIN":         1,
		"AGGREGATION_MAX":         2,
		"AGGREGATION_AVG":         4,
		"AGGREGATION_MEDIAN":      5,
		"AGGREGATION_STD_DEV":     6,
	}
)

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

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

func (Aggregation) Descriptor() protoreflect.EnumDescriptor {
	return file_yandex_cloud_loadtesting_api_v1_report_kpi_proto_enumTypes[0].Descriptor()
}

func (Aggregation) Type() protoreflect.EnumType {
	return &file_yandex_cloud_loadtesting_api_v1_report_kpi_proto_enumTypes[0]
}

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

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

// Comparison operator.
type Comparison int32

const (
	// Unspecified.
	Comparison_COMPARISON_UNSPECIFIED Comparison = 0
	// Less than the specified value.
	Comparison_COMPARISON_LT Comparison = 1
	// Less than or equal to the specified value.
	Comparison_COMPARISON_LTE Comparison = 2
	// Greater than the specified value.
	Comparison_COMPARISON_GT Comparison = 3
	// Greater than or equal to the specified value.
	Comparison_COMPARISON_GTE Comparison = 4
)

// Enum value maps for Comparison.
var (
	Comparison_name = map[int32]string{
		0: "COMPARISON_UNSPECIFIED",
		1: "COMPARISON_LT",
		2: "COMPARISON_LTE",
		3: "COMPARISON_GT",
		4: "COMPARISON_GTE",
	}
	Comparison_value = map[string]int32{
		"COMPARISON_UNSPECIFIED": 0,
		"COMPARISON_LT":          1,
		"COMPARISON_LTE":         2,
		"COMPARISON_GT":          3,
		"COMPARISON_GTE":         4,
	}
)

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

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

func (Comparison) Descriptor() protoreflect.EnumDescriptor {
	return file_yandex_cloud_loadtesting_api_v1_report_kpi_proto_enumTypes[1].Descriptor()
}

func (Comparison) Type() protoreflect.EnumType {
	return &file_yandex_cloud_loadtesting_api_v1_report_kpi_proto_enumTypes[1]
}

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

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

// KPI (Key Performance Indicator) represents some integral indicator measured during test.
type Kpi struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Kind of KPI.
	Selector *KpiSelector `protobuf:"bytes,1,opt,name=selector,proto3" json:"selector,omitempty"`
	// A condition that should be specified.
	Threshold     *KpiThreshold `protobuf:"bytes,2,opt,name=threshold,proto3" json:"threshold,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*Kpi) ProtoMessage() {}

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

func (x *Kpi) GetSelector() *KpiSelector {
	if x != nil {
		return x.Selector
	}
	return nil
}

func (x *Kpi) GetThreshold() *KpiThreshold {
	if x != nil {
		return x.Threshold
	}
	return nil
}

// KPI threshold represents a condition that an actual value of test's KPI should satisfy.
type KpiThreshold struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Value for comparison with an actual KPI value.
	Value float64 `protobuf:"fixed64,1,opt,name=value,proto3" json:"value,omitempty"`
	// Comparison operator for comparing actual with the threshold value.
	//
	// Rule: actual (</<=/>/>=) reference
	Comparison    Comparison `protobuf:"varint,2,opt,name=comparison,proto3,enum=yandex.cloud.loadtesting.api.v1.report.Comparison" json:"comparison,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*KpiThreshold) ProtoMessage() {}

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

func (x *KpiThreshold) GetValue() float64 {
	if x != nil {
		return x.Value
	}
	return 0
}

func (x *KpiThreshold) GetComparison() Comparison {
	if x != nil {
		return x.Comparison
	}
	return Comparison_COMPARISON_UNSPECIFIED
}

// KPI selector.
type KpiSelector struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to Kind:
	//
	//	*KpiSelector_ResponseTime_
	//	*KpiSelector_Instances_
	//	*KpiSelector_ImbalanceRps_
	//	*KpiSelector_ProtocolCodesAbsolute_
	//	*KpiSelector_ProtocolCodesRelative_
	//	*KpiSelector_NetworkCodesAbsolute_
	//	*KpiSelector_NetworkCodesRelative_
	Kind          isKpiSelector_Kind `protobuf_oneof:"kind"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*KpiSelector) ProtoMessage() {}

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

func (x *KpiSelector) GetKind() isKpiSelector_Kind {
	if x != nil {
		return x.Kind
	}
	return nil
}

func (x *KpiSelector) GetResponseTime() *KpiSelector_ResponseTime {
	if x != nil {
		if x, ok := x.Kind.(*KpiSelector_ResponseTime_); ok {
			return x.ResponseTime
		}
	}
	return nil
}

func (x *KpiSelector) GetInstances() *KpiSelector_Instances {
	if x != nil {
		if x, ok := x.Kind.(*KpiSelector_Instances_); ok {
			return x.Instances
		}
	}
	return nil
}

func (x *KpiSelector) GetImbalanceRps() *KpiSelector_ImbalanceRps {
	if x != nil {
		if x, ok := x.Kind.(*KpiSelector_ImbalanceRps_); ok {
			return x.ImbalanceRps
		}
	}
	return nil
}

func (x *KpiSelector) GetProtocolCodesAbsolute() *KpiSelector_ProtocolCodesAbsolute {
	if x != nil {
		if x, ok := x.Kind.(*KpiSelector_ProtocolCodesAbsolute_); ok {
			return x.ProtocolCodesAbsolute
		}
	}
	return nil
}

func (x *KpiSelector) GetProtocolCodesRelative() *KpiSelector_ProtocolCodesRelative {
	if x != nil {
		if x, ok := x.Kind.(*KpiSelector_ProtocolCodesRelative_); ok {
			return x.ProtocolCodesRelative
		}
	}
	return nil
}

func (x *KpiSelector) GetNetworkCodesAbsolute() *KpiSelector_NetworkCodesAbsolute {
	if x != nil {
		if x, ok := x.Kind.(*KpiSelector_NetworkCodesAbsolute_); ok {
			return x.NetworkCodesAbsolute
		}
	}
	return nil
}

func (x *KpiSelector) GetNetworkCodesRelative() *KpiSelector_NetworkCodesRelative {
	if x != nil {
		if x, ok := x.Kind.(*KpiSelector_NetworkCodesRelative_); ok {
			return x.NetworkCodesRelative
		}
	}
	return nil
}

type isKpiSelector_Kind interface {
	isKpiSelector_Kind()
}

type KpiSelector_ResponseTime_ struct {
	// Response time cummulative quantile (percentile).
	ResponseTime *KpiSelector_ResponseTime `protobuf:"bytes,1,opt,name=response_time,json=responseTime,proto3,oneof"`
}

type KpiSelector_Instances_ struct {
	// A number of instances throughout the test.
	Instances *KpiSelector_Instances `protobuf:"bytes,2,opt,name=instances,proto3,oneof"`
}

type KpiSelector_ImbalanceRps_ struct {
	// An RPS at the moment the test has been auto-stopped.
	ImbalanceRps *KpiSelector_ImbalanceRps `protobuf:"bytes,3,opt,name=imbalance_rps,json=imbalanceRps,proto3,oneof"`
}

type KpiSelector_ProtocolCodesAbsolute_ struct {
	// A total number of requests completed with certain protocol (HTTP, GRPC, etc.) codes.
	ProtocolCodesAbsolute *KpiSelector_ProtocolCodesAbsolute `protobuf:"bytes,4,opt,name=protocol_codes_absolute,json=protocolCodesAbsolute,proto3,oneof"`
}

type KpiSelector_ProtocolCodesRelative_ struct {
	// A percentage of requests completed with certain protocol (HTTP, GRPC, etc.) codes.
	ProtocolCodesRelative *KpiSelector_ProtocolCodesRelative `protobuf:"bytes,5,opt,name=protocol_codes_relative,json=protocolCodesRelative,proto3,oneof"`
}

type KpiSelector_NetworkCodesAbsolute_ struct {
	// A total number of requests completed with certain network codes.
	NetworkCodesAbsolute *KpiSelector_NetworkCodesAbsolute `protobuf:"bytes,6,opt,name=network_codes_absolute,json=networkCodesAbsolute,proto3,oneof"`
}

type KpiSelector_NetworkCodesRelative_ struct {
	// A percentage of requests completed with certain network codes.
	NetworkCodesRelative *KpiSelector_NetworkCodesRelative `protobuf:"bytes,7,opt,name=network_codes_relative,json=networkCodesRelative,proto3,oneof"`
}

func (*KpiSelector_ResponseTime_) isKpiSelector_Kind() {}

func (*KpiSelector_Instances_) isKpiSelector_Kind() {}

func (*KpiSelector_ImbalanceRps_) isKpiSelector_Kind() {}

func (*KpiSelector_ProtocolCodesAbsolute_) isKpiSelector_Kind() {}

func (*KpiSelector_ProtocolCodesRelative_) isKpiSelector_Kind() {}

func (*KpiSelector_NetworkCodesAbsolute_) isKpiSelector_Kind() {}

func (*KpiSelector_NetworkCodesRelative_) isKpiSelector_Kind() {}

// Response time.
type KpiSelector_ResponseTime struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Cummulative quantile (percentile).
	Quantile      common.QuantileType `protobuf:"varint,1,opt,name=quantile,proto3,enum=yandex.cloud.loadtesting.api.v1.common.QuantileType" json:"quantile,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*KpiSelector_ResponseTime) ProtoMessage() {}

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

func (x *KpiSelector_ResponseTime) GetQuantile() common.QuantileType {
	if x != nil {
		return x.Quantile
	}
	return common.QuantileType(0)
}

// Aggregated number of instances.
type KpiSelector_Instances struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Aggregation function.
	Agg           Aggregation `protobuf:"varint,1,opt,name=agg,proto3,enum=yandex.cloud.loadtesting.api.v1.report.Aggregation" json:"agg,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*KpiSelector_Instances) ProtoMessage() {}

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

func (x *KpiSelector_Instances) GetAgg() Aggregation {
	if x != nil {
		return x.Agg
	}
	return Aggregation_AGGREGATION_UNSPECIFIED
}

// Imbalance RPS.
type KpiSelector_ImbalanceRps struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*KpiSelector_ImbalanceRps) ProtoMessage() {}

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

type KpiSelector_ProtocolCodesAbsolute struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Protocol (HTTP, GRPC) code patterns to match.
	//
	// All successful HTTP responses: ['2xx', '3xx'].
	// All failed HTTP responses: ['0', '4xx', '5xx'].
	CodesPatterns []string `protobuf:"bytes,1,rep,name=codes_patterns,json=codesPatterns,proto3" json:"codes_patterns,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*KpiSelector_ProtocolCodesAbsolute) ProtoMessage() {}

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

func (x *KpiSelector_ProtocolCodesAbsolute) GetCodesPatterns() []string {
	if x != nil {
		return x.CodesPatterns
	}
	return nil
}

type KpiSelector_ProtocolCodesRelative struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Protocol (HTTP, GRPC) code patterns to match.
	//
	// All successful HTTP responses: ['2xx', '3xx'].
	// All failed HTTP responses: ['0', '4xx', '5xx'].
	CodesPatterns []string `protobuf:"bytes,1,rep,name=codes_patterns,json=codesPatterns,proto3" json:"codes_patterns,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*KpiSelector_ProtocolCodesRelative) ProtoMessage() {}

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

func (x *KpiSelector_ProtocolCodesRelative) GetCodesPatterns() []string {
	if x != nil {
		return x.CodesPatterns
	}
	return nil
}

type KpiSelector_NetworkCodesAbsolute struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Network code patterns to match.
	//
	// All successful network responses: ['0'].
	// All failed network responses: ['xx', 'xxx'].
	CodesPatterns []string `protobuf:"bytes,1,rep,name=codes_patterns,json=codesPatterns,proto3" json:"codes_patterns,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*KpiSelector_NetworkCodesAbsolute) ProtoMessage() {}

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

func (x *KpiSelector_NetworkCodesAbsolute) GetCodesPatterns() []string {
	if x != nil {
		return x.CodesPatterns
	}
	return nil
}

type KpiSelector_NetworkCodesRelative struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Network code patterns to match.
	//
	// All successful network responses: ['0'].
	// All failed network responses: ['xx', 'xxx'].
	CodesPatterns []string `protobuf:"bytes,1,rep,name=codes_patterns,json=codesPatterns,proto3" json:"codes_patterns,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*KpiSelector_NetworkCodesRelative) ProtoMessage() {}

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

func (x *KpiSelector_NetworkCodesRelative) GetCodesPatterns() []string {
	if x != nil {
		return x.CodesPatterns
	}
	return nil
}

var File_yandex_cloud_loadtesting_api_v1_report_kpi_proto protoreflect.FileDescriptor

const file_yandex_cloud_loadtesting_api_v1_report_kpi_proto_rawDesc = "" +
	"\n" +
	"0yandex/cloud/loadtesting/api/v1/report/kpi.proto\x12&yandex.cloud.loadtesting.api.v1.report\x1a6yandex/cloud/loadtesting/api/v1/common/quantiles.proto\"\xaa\x01\n" +
	"\x03Kpi\x12O\n" +
	"\bselector\x18\x01 \x01(\v23.yandex.cloud.loadtesting.api.v1.report.KpiSelectorR\bselector\x12R\n" +
	"\tthreshold\x18\x02 \x01(\v24.yandex.cloud.loadtesting.api.v1.report.KpiThresholdR\tthreshold\"x\n" +
	"\fKpiThreshold\x12\x14\n" +
	"\x05value\x18\x01 \x01(\x01R\x05value\x12R\n" +
	"\n" +
	"comparison\x18\x02 \x01(\x0e22.yandex.cloud.loadtesting.api.v1.report.ComparisonR\n" +
	"comparison\"\x9c\n" +
	"\n" +
	"\vKpiSelector\x12g\n" +
	"\rresponse_time\x18\x01 \x01(\v2@.yandex.cloud.loadtesting.api.v1.report.KpiSelector.ResponseTimeH\x00R\fresponseTime\x12]\n" +
	"\tinstances\x18\x02 \x01(\v2=.yandex.cloud.loadtesting.api.v1.report.KpiSelector.InstancesH\x00R\tinstances\x12g\n" +
	"\rimbalance_rps\x18\x03 \x01(\v2@.yandex.cloud.loadtesting.api.v1.report.KpiSelector.ImbalanceRpsH\x00R\fimbalanceRps\x12\x83\x01\n" +
	"\x17protocol_codes_absolute\x18\x04 \x01(\v2I.yandex.cloud.loadtesting.api.v1.report.KpiSelector.ProtocolCodesAbsoluteH\x00R\x15protocolCodesAbsolute\x12\x83\x01\n" +
	"\x17protocol_codes_relative\x18\x05 \x01(\v2I.yandex.cloud.loadtesting.api.v1.report.KpiSelector.ProtocolCodesRelativeH\x00R\x15protocolCodesRelative\x12\x80\x01\n" +
	"\x16network_codes_absolute\x18\x06 \x01(\v2H.yandex.cloud.loadtesting.api.v1.report.KpiSelector.NetworkCodesAbsoluteH\x00R\x14networkCodesAbsolute\x12\x80\x01\n" +
	"\x16network_codes_relative\x18\a \x01(\v2H.yandex.cloud.loadtesting.api.v1.report.KpiSelector.NetworkCodesRelativeH\x00R\x14networkCodesRelative\x1a`\n" +
	"\fResponseTime\x12P\n" +
	"\bquantile\x18\x01 \x01(\x0e24.yandex.cloud.loadtesting.api.v1.common.QuantileTypeR\bquantile\x1aR\n" +
	"\tInstances\x12E\n" +
	"\x03agg\x18\x01 \x01(\x0e23.yandex.cloud.loadtesting.api.v1.report.AggregationR\x03agg\x1a\x0e\n" +
	"\fImbalanceRps\x1a>\n" +
	"\x15ProtocolCodesAbsolute\x12%\n" +
	"\x0ecodes_patterns\x18\x01 \x03(\tR\rcodesPatterns\x1a>\n" +
	"\x15ProtocolCodesRelative\x12%\n" +
	"\x0ecodes_patterns\x18\x01 \x03(\tR\rcodesPatterns\x1a=\n" +
	"\x14NetworkCodesAbsolute\x12%\n" +
	"\x0ecodes_patterns\x18\x01 \x03(\tR\rcodesPatterns\x1a=\n" +
	"\x14NetworkCodesRelative\x12%\n" +
	"\x0ecodes_patterns\x18\x01 \x03(\tR\rcodesPatternsB\x06\n" +
	"\x04kind*\x9a\x01\n" +
	"\vAggregation\x12\x1b\n" +
	"\x17AGGREGATION_UNSPECIFIED\x10\x00\x12\x13\n" +
	"\x0fAGGREGATION_MIN\x10\x01\x12\x13\n" +
	"\x0fAGGREGATION_MAX\x10\x02\x12\x13\n" +
	"\x0fAGGREGATION_AVG\x10\x04\x12\x16\n" +
	"\x12AGGREGATION_MEDIAN\x10\x05\x12\x17\n" +
	"\x13AGGREGATION_STD_DEV\x10\x06*v\n" +
	"\n" +
	"Comparison\x12\x1a\n" +
	"\x16COMPARISON_UNSPECIFIED\x10\x00\x12\x11\n" +
	"\rCOMPARISON_LT\x10\x01\x12\x12\n" +
	"\x0eCOMPARISON_LTE\x10\x02\x12\x11\n" +
	"\rCOMPARISON_GT\x10\x03\x12\x12\n" +
	"\x0eCOMPARISON_GTE\x10\x04B\x7f\n" +
	"*yandex.cloud.api.loadtesting.api.v1.reportZQgithub.com/yandex-cloud/go-genproto/yandex/cloud/loadtesting/api/v1/report;reportb\x06proto3"

var (
	file_yandex_cloud_loadtesting_api_v1_report_kpi_proto_rawDescOnce sync.Once
	file_yandex_cloud_loadtesting_api_v1_report_kpi_proto_rawDescData []byte
)

func file_yandex_cloud_loadtesting_api_v1_report_kpi_proto_rawDescGZIP() []byte {
	file_yandex_cloud_loadtesting_api_v1_report_kpi_proto_rawDescOnce.Do(func() {
		file_yandex_cloud_loadtesting_api_v1_report_kpi_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_yandex_cloud_loadtesting_api_v1_report_kpi_proto_rawDesc), len(file_yandex_cloud_loadtesting_api_v1_report_kpi_proto_rawDesc)))
	})
	return file_yandex_cloud_loadtesting_api_v1_report_kpi_proto_rawDescData
}

var file_yandex_cloud_loadtesting_api_v1_report_kpi_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
var file_yandex_cloud_loadtesting_api_v1_report_kpi_proto_msgTypes = make([]protoimpl.MessageInfo, 10)
var file_yandex_cloud_loadtesting_api_v1_report_kpi_proto_goTypes = []any{
	(Aggregation)(0),                          // 0: yandex.cloud.loadtesting.api.v1.report.Aggregation
	(Comparison)(0),                           // 1: yandex.cloud.loadtesting.api.v1.report.Comparison
	(*Kpi)(nil),                               // 2: yandex.cloud.loadtesting.api.v1.report.Kpi
	(*KpiThreshold)(nil),                      // 3: yandex.cloud.loadtesting.api.v1.report.KpiThreshold
	(*KpiSelector)(nil),                       // 4: yandex.cloud.loadtesting.api.v1.report.KpiSelector
	(*KpiSelector_ResponseTime)(nil),          // 5: yandex.cloud.loadtesting.api.v1.report.KpiSelector.ResponseTime
	(*KpiSelector_Instances)(nil),             // 6: yandex.cloud.loadtesting.api.v1.report.KpiSelector.Instances
	(*KpiSelector_ImbalanceRps)(nil),          // 7: yandex.cloud.loadtesting.api.v1.report.KpiSelector.ImbalanceRps
	(*KpiSelector_ProtocolCodesAbsolute)(nil), // 8: yandex.cloud.loadtesting.api.v1.report.KpiSelector.ProtocolCodesAbsolute
	(*KpiSelector_ProtocolCodesRelative)(nil), // 9: yandex.cloud.loadtesting.api.v1.report.KpiSelector.ProtocolCodesRelative
	(*KpiSelector_NetworkCodesAbsolute)(nil),  // 10: yandex.cloud.loadtesting.api.v1.report.KpiSelector.NetworkCodesAbsolute
	(*KpiSelector_NetworkCodesRelative)(nil),  // 11: yandex.cloud.loadtesting.api.v1.report.KpiSelector.NetworkCodesRelative
	(common.QuantileType)(0),                  // 12: yandex.cloud.loadtesting.api.v1.common.QuantileType
}
var file_yandex_cloud_loadtesting_api_v1_report_kpi_proto_depIdxs = []int32{
	4,  // 0: yandex.cloud.loadtesting.api.v1.report.Kpi.selector:type_name -> yandex.cloud.loadtesting.api.v1.report.KpiSelector
	3,  // 1: yandex.cloud.loadtesting.api.v1.report.Kpi.threshold:type_name -> yandex.cloud.loadtesting.api.v1.report.KpiThreshold
	1,  // 2: yandex.cloud.loadtesting.api.v1.report.KpiThreshold.comparison:type_name -> yandex.cloud.loadtesting.api.v1.report.Comparison
	5,  // 3: yandex.cloud.loadtesting.api.v1.report.KpiSelector.response_time:type_name -> yandex.cloud.loadtesting.api.v1.report.KpiSelector.ResponseTime
	6,  // 4: yandex.cloud.loadtesting.api.v1.report.KpiSelector.instances:type_name -> yandex.cloud.loadtesting.api.v1.report.KpiSelector.Instances
	7,  // 5: yandex.cloud.loadtesting.api.v1.report.KpiSelector.imbalance_rps:type_name -> yandex.cloud.loadtesting.api.v1.report.KpiSelector.ImbalanceRps
	8,  // 6: yandex.cloud.loadtesting.api.v1.report.KpiSelector.protocol_codes_absolute:type_name -> yandex.cloud.loadtesting.api.v1.report.KpiSelector.ProtocolCodesAbsolute
	9,  // 7: yandex.cloud.loadtesting.api.v1.report.KpiSelector.protocol_codes_relative:type_name -> yandex.cloud.loadtesting.api.v1.report.KpiSelector.ProtocolCodesRelative
	10, // 8: yandex.cloud.loadtesting.api.v1.report.KpiSelector.network_codes_absolute:type_name -> yandex.cloud.loadtesting.api.v1.report.KpiSelector.NetworkCodesAbsolute
	11, // 9: yandex.cloud.loadtesting.api.v1.report.KpiSelector.network_codes_relative:type_name -> yandex.cloud.loadtesting.api.v1.report.KpiSelector.NetworkCodesRelative
	12, // 10: yandex.cloud.loadtesting.api.v1.report.KpiSelector.ResponseTime.quantile:type_name -> yandex.cloud.loadtesting.api.v1.common.QuantileType
	0,  // 11: yandex.cloud.loadtesting.api.v1.report.KpiSelector.Instances.agg:type_name -> yandex.cloud.loadtesting.api.v1.report.Aggregation
	12, // [12:12] is the sub-list for method output_type
	12, // [12:12] is the sub-list for method input_type
	12, // [12:12] is the sub-list for extension type_name
	12, // [12:12] is the sub-list for extension extendee
	0,  // [0:12] is the sub-list for field type_name
}

func init() { file_yandex_cloud_loadtesting_api_v1_report_kpi_proto_init() }
func file_yandex_cloud_loadtesting_api_v1_report_kpi_proto_init() {
	if File_yandex_cloud_loadtesting_api_v1_report_kpi_proto != nil {
		return
	}
	file_yandex_cloud_loadtesting_api_v1_report_kpi_proto_msgTypes[2].OneofWrappers = []any{
		(*KpiSelector_ResponseTime_)(nil),
		(*KpiSelector_Instances_)(nil),
		(*KpiSelector_ImbalanceRps_)(nil),
		(*KpiSelector_ProtocolCodesAbsolute_)(nil),
		(*KpiSelector_ProtocolCodesRelative_)(nil),
		(*KpiSelector_NetworkCodesAbsolute_)(nil),
		(*KpiSelector_NetworkCodesRelative_)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_yandex_cloud_loadtesting_api_v1_report_kpi_proto_rawDesc), len(file_yandex_cloud_loadtesting_api_v1_report_kpi_proto_rawDesc)),
			NumEnums:      2,
			NumMessages:   10,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_yandex_cloud_loadtesting_api_v1_report_kpi_proto_goTypes,
		DependencyIndexes: file_yandex_cloud_loadtesting_api_v1_report_kpi_proto_depIdxs,
		EnumInfos:         file_yandex_cloud_loadtesting_api_v1_report_kpi_proto_enumTypes,
		MessageInfos:      file_yandex_cloud_loadtesting_api_v1_report_kpi_proto_msgTypes,
	}.Build()
	File_yandex_cloud_loadtesting_api_v1_report_kpi_proto = out.File
	file_yandex_cloud_loadtesting_api_v1_report_kpi_proto_goTypes = nil
	file_yandex_cloud_loadtesting_api_v1_report_kpi_proto_depIdxs = nil
}
