// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.6
// 	protoc        v6.32.1
// source: conflict_zones.proto

package microtraffic

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

// Winner type for conflict resolution, aligned with Rust computation core `ConflictWinnerType`
// https://docs.rs/micro_traffic_sim_core/0.1.0/micro_traffic_sim_core/conflict_zones/enum.ConflictWinnerType.html
type ConflictWinnerType int32

const (
	ConflictWinnerType_CONFLICT_WINNER_UNDEFINED ConflictWinnerType = 0 // Default state
	ConflictWinnerType_CONFLICT_WINNER_EQUAL     ConflictWinnerType = 1 // Equal priority (coin flip / tie-break)
	ConflictWinnerType_CONFLICT_WINNER_FIRST     ConflictWinnerType = 2 // First direction has priority
	ConflictWinnerType_CONFLICT_WINNER_SECOND    ConflictWinnerType = 3 // Second direction has priority
)

// Enum value maps for ConflictWinnerType.
var (
	ConflictWinnerType_name = map[int32]string{
		0: "CONFLICT_WINNER_UNDEFINED",
		1: "CONFLICT_WINNER_EQUAL",
		2: "CONFLICT_WINNER_FIRST",
		3: "CONFLICT_WINNER_SECOND",
	}
	ConflictWinnerType_value = map[string]int32{
		"CONFLICT_WINNER_UNDEFINED": 0,
		"CONFLICT_WINNER_EQUAL":     1,
		"CONFLICT_WINNER_FIRST":     2,
		"CONFLICT_WINNER_SECOND":    3,
	}
)

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

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

func (ConflictWinnerType) Descriptor() protoreflect.EnumDescriptor {
	return file_conflict_zones_proto_enumTypes[0].Descriptor()
}

func (ConflictWinnerType) Type() protoreflect.EnumType {
	return &file_conflict_zones_proto_enumTypes[0]
}

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

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

// Conflict zone type (reserved for **FUTURE WORKS**), aligned with Rust computation core `ConflictZoneType`
// https://docs.rs/micro_traffic_sim_core/0.1.0/micro_traffic_sim_core/conflict_zones/enum.ConflictZoneType.html
type ConflictZoneType int32

const (
	ConflictZoneType_CONFLICT_ZONE_TYPE_UNDEFINED ConflictZoneType = 0
)

// Enum value maps for ConflictZoneType.
var (
	ConflictZoneType_name = map[int32]string{
		0: "CONFLICT_ZONE_TYPE_UNDEFINED",
	}
	ConflictZoneType_value = map[string]int32{
		"CONFLICT_ZONE_TYPE_UNDEFINED": 0,
	}
)

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

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

func (ConflictZoneType) Descriptor() protoreflect.EnumDescriptor {
	return file_conflict_zones_proto_enumTypes[1].Descriptor()
}

func (ConflictZoneType) Type() protoreflect.EnumType {
	return &file_conflict_zones_proto_enumTypes[1]
}

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

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

// Conflict zone structure
type ConflictZone struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Numeric identifier
	Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
	// Source cell from the first link
	SourceX int64 `protobuf:"varint,2,opt,name=source_x,json=sourceX,proto3" json:"source_x,omitempty"`
	// Source cell from the second link
	SourceY int64 `protobuf:"varint,3,opt,name=source_y,json=sourceY,proto3" json:"source_y,omitempty"`
	// Target cell for the first link
	TargetX int64 `protobuf:"varint,4,opt,name=target_x,json=targetX,proto3" json:"target_x,omitempty"`
	// Target cell for the second link
	TargetY int64 `protobuf:"varint,5,opt,name=target_y,json=targetY,proto3" json:"target_y,omitempty"`
	// Conflict resolution priority
	ConflictWinner ConflictWinnerType `protobuf:"varint,6,opt,name=conflict_winner,json=conflictWinner,proto3,enum=micro_traffic_sim.ConflictWinnerType" json:"conflict_winner,omitempty"`
	// Conflict type. Currently unused - **FUTURE WORKS**
	ConflictType  ConflictZoneType `protobuf:"varint,7,opt,name=conflict_type,json=conflictType,proto3,enum=micro_traffic_sim.ConflictZoneType" json:"conflict_type,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ConflictZone) ProtoMessage() {}

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

func (x *ConflictZone) GetId() int64 {
	if x != nil {
		return x.Id
	}
	return 0
}

func (x *ConflictZone) GetSourceX() int64 {
	if x != nil {
		return x.SourceX
	}
	return 0
}

func (x *ConflictZone) GetSourceY() int64 {
	if x != nil {
		return x.SourceY
	}
	return 0
}

func (x *ConflictZone) GetTargetX() int64 {
	if x != nil {
		return x.TargetX
	}
	return 0
}

func (x *ConflictZone) GetTargetY() int64 {
	if x != nil {
		return x.TargetY
	}
	return 0
}

func (x *ConflictZone) GetConflictWinner() ConflictWinnerType {
	if x != nil {
		return x.ConflictWinner
	}
	return ConflictWinnerType_CONFLICT_WINNER_UNDEFINED
}

func (x *ConflictZone) GetConflictType() ConflictZoneType {
	if x != nil {
		return x.ConflictType
	}
	return ConflictZoneType_CONFLICT_ZONE_TYPE_UNDEFINED
}

// Conflict zones payload bound to a session
type SessionConflictZones struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Session identifier (UUIDv4)
	SessionId *UUIDv4 `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"`
	// Conflict zone data. Maximum number of entities per message is 10000 (server-side limit)
	Data          []*ConflictZone `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*SessionConflictZones) ProtoMessage() {}

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

func (x *SessionConflictZones) GetSessionId() *UUIDv4 {
	if x != nil {
		return x.SessionId
	}
	return nil
}

func (x *SessionConflictZones) GetData() []*ConflictZone {
	if x != nil {
		return x.Data
	}
	return nil
}

// Server response for session conflict zones ingest
type SessionConflictZonesResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Response code (0 = OK)
	Code uint32 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
	// Human-readable message
	Text          string `protobuf:"bytes,2,opt,name=text,proto3" json:"text,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*SessionConflictZonesResponse) ProtoMessage() {}

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

func (x *SessionConflictZonesResponse) GetCode() uint32 {
	if x != nil {
		return x.Code
	}
	return 0
}

func (x *SessionConflictZonesResponse) GetText() string {
	if x != nil {
		return x.Text
	}
	return ""
}

var File_conflict_zones_proto protoreflect.FileDescriptor

const file_conflict_zones_proto_rawDesc = "" +
	"\n" +
	"\x14conflict_zones.proto\x12\x11micro_traffic_sim\x1a\n" +
	"uuid.proto\"\xa4\x02\n" +
	"\fConflictZone\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\x03R\x02id\x12\x19\n" +
	"\bsource_x\x18\x02 \x01(\x03R\asourceX\x12\x19\n" +
	"\bsource_y\x18\x03 \x01(\x03R\asourceY\x12\x19\n" +
	"\btarget_x\x18\x04 \x01(\x03R\atargetX\x12\x19\n" +
	"\btarget_y\x18\x05 \x01(\x03R\atargetY\x12N\n" +
	"\x0fconflict_winner\x18\x06 \x01(\x0e2%.micro_traffic_sim.ConflictWinnerTypeR\x0econflictWinner\x12H\n" +
	"\rconflict_type\x18\a \x01(\x0e2#.micro_traffic_sim.ConflictZoneTypeR\fconflictType\"\x85\x01\n" +
	"\x14SessionConflictZones\x128\n" +
	"\n" +
	"session_id\x18\x01 \x01(\v2\x19.micro_traffic_sim.UUIDv4R\tsessionId\x123\n" +
	"\x04data\x18\x02 \x03(\v2\x1f.micro_traffic_sim.ConflictZoneR\x04data\"F\n" +
	"\x1cSessionConflictZonesResponse\x12\x12\n" +
	"\x04code\x18\x01 \x01(\rR\x04code\x12\x12\n" +
	"\x04text\x18\x02 \x01(\tR\x04text*\x85\x01\n" +
	"\x12ConflictWinnerType\x12\x1d\n" +
	"\x19CONFLICT_WINNER_UNDEFINED\x10\x00\x12\x19\n" +
	"\x15CONFLICT_WINNER_EQUAL\x10\x01\x12\x19\n" +
	"\x15CONFLICT_WINNER_FIRST\x10\x02\x12\x1a\n" +
	"\x16CONFLICT_WINNER_SECOND\x10\x03*4\n" +
	"\x10ConflictZoneType\x12 \n" +
	"\x1cCONFLICT_ZONE_TYPE_UNDEFINED\x10\x00B@Z>github.com/LdDl/micro_traffic_sim_grpc/clients/go;microtrafficb\x06proto3"

var (
	file_conflict_zones_proto_rawDescOnce sync.Once
	file_conflict_zones_proto_rawDescData []byte
)

func file_conflict_zones_proto_rawDescGZIP() []byte {
	file_conflict_zones_proto_rawDescOnce.Do(func() {
		file_conflict_zones_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_conflict_zones_proto_rawDesc), len(file_conflict_zones_proto_rawDesc)))
	})
	return file_conflict_zones_proto_rawDescData
}

var file_conflict_zones_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
var file_conflict_zones_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
var file_conflict_zones_proto_goTypes = []any{
	(ConflictWinnerType)(0),              // 0: micro_traffic_sim.ConflictWinnerType
	(ConflictZoneType)(0),                // 1: micro_traffic_sim.ConflictZoneType
	(*ConflictZone)(nil),                 // 2: micro_traffic_sim.ConflictZone
	(*SessionConflictZones)(nil),         // 3: micro_traffic_sim.SessionConflictZones
	(*SessionConflictZonesResponse)(nil), // 4: micro_traffic_sim.SessionConflictZonesResponse
	(*UUIDv4)(nil),                       // 5: micro_traffic_sim.UUIDv4
}
var file_conflict_zones_proto_depIdxs = []int32{
	0, // 0: micro_traffic_sim.ConflictZone.conflict_winner:type_name -> micro_traffic_sim.ConflictWinnerType
	1, // 1: micro_traffic_sim.ConflictZone.conflict_type:type_name -> micro_traffic_sim.ConflictZoneType
	5, // 2: micro_traffic_sim.SessionConflictZones.session_id:type_name -> micro_traffic_sim.UUIDv4
	2, // 3: micro_traffic_sim.SessionConflictZones.data:type_name -> micro_traffic_sim.ConflictZone
	4, // [4:4] is the sub-list for method output_type
	4, // [4:4] is the sub-list for method input_type
	4, // [4:4] is the sub-list for extension type_name
	4, // [4:4] is the sub-list for extension extendee
	0, // [0:4] is the sub-list for field type_name
}

func init() { file_conflict_zones_proto_init() }
func file_conflict_zones_proto_init() {
	if File_conflict_zones_proto != nil {
		return
	}
	file_uuid_proto_init()
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_conflict_zones_proto_rawDesc), len(file_conflict_zones_proto_rawDesc)),
			NumEnums:      2,
			NumMessages:   3,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_conflict_zones_proto_goTypes,
		DependencyIndexes: file_conflict_zones_proto_depIdxs,
		EnumInfos:         file_conflict_zones_proto_enumTypes,
		MessageInfos:      file_conflict_zones_proto_msgTypes,
	}.Build()
	File_conflict_zones_proto = out.File
	file_conflict_zones_proto_goTypes = nil
	file_conflict_zones_proto_depIdxs = nil
}
