// Copyright 2023 LiveKit, Inc.
//
// 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.5
// 	protoc        v4.23.4
// source: livekit_agent.proto

package livekit

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

type JobType int32

const (
	JobType_JT_ROOM        JobType = 0
	JobType_JT_PUBLISHER   JobType = 1
	JobType_JT_PARTICIPANT JobType = 2
)

// Enum value maps for JobType.
var (
	JobType_name = map[int32]string{
		0: "JT_ROOM",
		1: "JT_PUBLISHER",
		2: "JT_PARTICIPANT",
	}
	JobType_value = map[string]int32{
		"JT_ROOM":        0,
		"JT_PUBLISHER":   1,
		"JT_PARTICIPANT": 2,
	}
)

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

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

func (JobType) Descriptor() protoreflect.EnumDescriptor {
	return file_livekit_agent_proto_enumTypes[0].Descriptor()
}

func (JobType) Type() protoreflect.EnumType {
	return &file_livekit_agent_proto_enumTypes[0]
}

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

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

type WorkerStatus int32

const (
	WorkerStatus_WS_AVAILABLE WorkerStatus = 0
	WorkerStatus_WS_FULL      WorkerStatus = 1
)

// Enum value maps for WorkerStatus.
var (
	WorkerStatus_name = map[int32]string{
		0: "WS_AVAILABLE",
		1: "WS_FULL",
	}
	WorkerStatus_value = map[string]int32{
		"WS_AVAILABLE": 0,
		"WS_FULL":      1,
	}
)

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

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

func (WorkerStatus) Descriptor() protoreflect.EnumDescriptor {
	return file_livekit_agent_proto_enumTypes[1].Descriptor()
}

func (WorkerStatus) Type() protoreflect.EnumType {
	return &file_livekit_agent_proto_enumTypes[1]
}

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

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

type JobStatus int32

const (
	JobStatus_JS_PENDING JobStatus = 0
	JobStatus_JS_RUNNING JobStatus = 1
	JobStatus_JS_SUCCESS JobStatus = 2
	JobStatus_JS_FAILED  JobStatus = 3
)

// Enum value maps for JobStatus.
var (
	JobStatus_name = map[int32]string{
		0: "JS_PENDING",
		1: "JS_RUNNING",
		2: "JS_SUCCESS",
		3: "JS_FAILED",
	}
	JobStatus_value = map[string]int32{
		"JS_PENDING": 0,
		"JS_RUNNING": 1,
		"JS_SUCCESS": 2,
		"JS_FAILED":  3,
	}
)

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

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

func (JobStatus) Descriptor() protoreflect.EnumDescriptor {
	return file_livekit_agent_proto_enumTypes[2].Descriptor()
}

func (JobStatus) Type() protoreflect.EnumType {
	return &file_livekit_agent_proto_enumTypes[2]
}

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

// Deprecated: Use JobStatus.Descriptor instead.
func (JobStatus) EnumDescriptor() ([]byte, []int) {
	return file_livekit_agent_proto_rawDescGZIP(), []int{2}
}

type Job struct {
	state       protoimpl.MessageState `protogen:"open.v1"`
	Id          string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	DispatchId  string                 `protobuf:"bytes,9,opt,name=dispatch_id,json=dispatchId,proto3" json:"dispatch_id,omitempty"`
	Type        JobType                `protobuf:"varint,2,opt,name=type,proto3,enum=livekit.JobType" json:"type,omitempty"`
	Room        *Room                  `protobuf:"bytes,3,opt,name=room,proto3" json:"room,omitempty"`
	Participant *ParticipantInfo       `protobuf:"bytes,4,opt,name=participant,proto3,oneof" json:"participant,omitempty"`
	// Deprecated: Marked as deprecated in livekit_agent.proto.
	Namespace     string    `protobuf:"bytes,5,opt,name=namespace,proto3" json:"namespace,omitempty"`
	Metadata      string    `protobuf:"bytes,6,opt,name=metadata,proto3" json:"metadata,omitempty"`
	AgentName     string    `protobuf:"bytes,7,opt,name=agent_name,json=agentName,proto3" json:"agent_name,omitempty"`
	State         *JobState `protobuf:"bytes,8,opt,name=state,proto3" json:"state,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*Job) ProtoMessage() {}

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

func (x *Job) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *Job) GetDispatchId() string {
	if x != nil {
		return x.DispatchId
	}
	return ""
}

func (x *Job) GetType() JobType {
	if x != nil {
		return x.Type
	}
	return JobType_JT_ROOM
}

func (x *Job) GetRoom() *Room {
	if x != nil {
		return x.Room
	}
	return nil
}

func (x *Job) GetParticipant() *ParticipantInfo {
	if x != nil {
		return x.Participant
	}
	return nil
}

// Deprecated: Marked as deprecated in livekit_agent.proto.
func (x *Job) GetNamespace() string {
	if x != nil {
		return x.Namespace
	}
	return ""
}

func (x *Job) GetMetadata() string {
	if x != nil {
		return x.Metadata
	}
	return ""
}

func (x *Job) GetAgentName() string {
	if x != nil {
		return x.AgentName
	}
	return ""
}

func (x *Job) GetState() *JobState {
	if x != nil {
		return x.State
	}
	return nil
}

type JobState struct {
	state               protoimpl.MessageState `protogen:"open.v1"`
	Status              JobStatus              `protobuf:"varint,1,opt,name=status,proto3,enum=livekit.JobStatus" json:"status,omitempty"`
	Error               string                 `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"`
	StartedAt           int64                  `protobuf:"varint,3,opt,name=started_at,json=startedAt,proto3" json:"started_at,omitempty"`
	EndedAt             int64                  `protobuf:"varint,4,opt,name=ended_at,json=endedAt,proto3" json:"ended_at,omitempty"`
	UpdatedAt           int64                  `protobuf:"varint,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
	ParticipantIdentity string                 `protobuf:"bytes,6,opt,name=participant_identity,json=participantIdentity,proto3" json:"participant_identity,omitempty"`
	unknownFields       protoimpl.UnknownFields
	sizeCache           protoimpl.SizeCache
}

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

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

func (*JobState) ProtoMessage() {}

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

func (x *JobState) GetStatus() JobStatus {
	if x != nil {
		return x.Status
	}
	return JobStatus_JS_PENDING
}

func (x *JobState) GetError() string {
	if x != nil {
		return x.Error
	}
	return ""
}

func (x *JobState) GetStartedAt() int64 {
	if x != nil {
		return x.StartedAt
	}
	return 0
}

func (x *JobState) GetEndedAt() int64 {
	if x != nil {
		return x.EndedAt
	}
	return 0
}

func (x *JobState) GetUpdatedAt() int64 {
	if x != nil {
		return x.UpdatedAt
	}
	return 0
}

func (x *JobState) GetParticipantIdentity() string {
	if x != nil {
		return x.ParticipantIdentity
	}
	return ""
}

// from Worker to Server
type WorkerMessage struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to Message:
	//
	//	*WorkerMessage_Register
	//	*WorkerMessage_Availability
	//	*WorkerMessage_UpdateWorker
	//	*WorkerMessage_UpdateJob
	//	*WorkerMessage_Ping
	//	*WorkerMessage_SimulateJob
	//	*WorkerMessage_MigrateJob
	Message       isWorkerMessage_Message `protobuf_oneof:"message"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*WorkerMessage) ProtoMessage() {}

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

func (x *WorkerMessage) GetMessage() isWorkerMessage_Message {
	if x != nil {
		return x.Message
	}
	return nil
}

func (x *WorkerMessage) GetRegister() *RegisterWorkerRequest {
	if x != nil {
		if x, ok := x.Message.(*WorkerMessage_Register); ok {
			return x.Register
		}
	}
	return nil
}

func (x *WorkerMessage) GetAvailability() *AvailabilityResponse {
	if x != nil {
		if x, ok := x.Message.(*WorkerMessage_Availability); ok {
			return x.Availability
		}
	}
	return nil
}

func (x *WorkerMessage) GetUpdateWorker() *UpdateWorkerStatus {
	if x != nil {
		if x, ok := x.Message.(*WorkerMessage_UpdateWorker); ok {
			return x.UpdateWorker
		}
	}
	return nil
}

func (x *WorkerMessage) GetUpdateJob() *UpdateJobStatus {
	if x != nil {
		if x, ok := x.Message.(*WorkerMessage_UpdateJob); ok {
			return x.UpdateJob
		}
	}
	return nil
}

func (x *WorkerMessage) GetPing() *WorkerPing {
	if x != nil {
		if x, ok := x.Message.(*WorkerMessage_Ping); ok {
			return x.Ping
		}
	}
	return nil
}

func (x *WorkerMessage) GetSimulateJob() *SimulateJobRequest {
	if x != nil {
		if x, ok := x.Message.(*WorkerMessage_SimulateJob); ok {
			return x.SimulateJob
		}
	}
	return nil
}

func (x *WorkerMessage) GetMigrateJob() *MigrateJobRequest {
	if x != nil {
		if x, ok := x.Message.(*WorkerMessage_MigrateJob); ok {
			return x.MigrateJob
		}
	}
	return nil
}

type isWorkerMessage_Message interface {
	isWorkerMessage_Message()
}

type WorkerMessage_Register struct {
	// agent workers need to register themselves with the server first
	Register *RegisterWorkerRequest `protobuf:"bytes,1,opt,name=register,proto3,oneof"`
}

type WorkerMessage_Availability struct {
	// worker confirms to server that it's available for a job, or declines it
	Availability *AvailabilityResponse `protobuf:"bytes,2,opt,name=availability,proto3,oneof"`
}

type WorkerMessage_UpdateWorker struct {
	// worker can update its status to the server, including taking itself out of the pool
	UpdateWorker *UpdateWorkerStatus `protobuf:"bytes,3,opt,name=update_worker,json=updateWorker,proto3,oneof"`
}

type WorkerMessage_UpdateJob struct {
	// job can send status updates to the server, useful for tracking progress
	UpdateJob *UpdateJobStatus `protobuf:"bytes,4,opt,name=update_job,json=updateJob,proto3,oneof"`
}

type WorkerMessage_Ping struct {
	Ping *WorkerPing `protobuf:"bytes,5,opt,name=ping,proto3,oneof"`
}

type WorkerMessage_SimulateJob struct {
	SimulateJob *SimulateJobRequest `protobuf:"bytes,6,opt,name=simulate_job,json=simulateJob,proto3,oneof"`
}

type WorkerMessage_MigrateJob struct {
	MigrateJob *MigrateJobRequest `protobuf:"bytes,7,opt,name=migrate_job,json=migrateJob,proto3,oneof"`
}

func (*WorkerMessage_Register) isWorkerMessage_Message() {}

func (*WorkerMessage_Availability) isWorkerMessage_Message() {}

func (*WorkerMessage_UpdateWorker) isWorkerMessage_Message() {}

func (*WorkerMessage_UpdateJob) isWorkerMessage_Message() {}

func (*WorkerMessage_Ping) isWorkerMessage_Message() {}

func (*WorkerMessage_SimulateJob) isWorkerMessage_Message() {}

func (*WorkerMessage_MigrateJob) isWorkerMessage_Message() {}

// from Server to Worker
type ServerMessage struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to Message:
	//
	//	*ServerMessage_Register
	//	*ServerMessage_Availability
	//	*ServerMessage_Assignment
	//	*ServerMessage_Termination
	//	*ServerMessage_Pong
	Message       isServerMessage_Message `protobuf_oneof:"message"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ServerMessage) ProtoMessage() {}

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

func (x *ServerMessage) GetMessage() isServerMessage_Message {
	if x != nil {
		return x.Message
	}
	return nil
}

func (x *ServerMessage) GetRegister() *RegisterWorkerResponse {
	if x != nil {
		if x, ok := x.Message.(*ServerMessage_Register); ok {
			return x.Register
		}
	}
	return nil
}

func (x *ServerMessage) GetAvailability() *AvailabilityRequest {
	if x != nil {
		if x, ok := x.Message.(*ServerMessage_Availability); ok {
			return x.Availability
		}
	}
	return nil
}

func (x *ServerMessage) GetAssignment() *JobAssignment {
	if x != nil {
		if x, ok := x.Message.(*ServerMessage_Assignment); ok {
			return x.Assignment
		}
	}
	return nil
}

func (x *ServerMessage) GetTermination() *JobTermination {
	if x != nil {
		if x, ok := x.Message.(*ServerMessage_Termination); ok {
			return x.Termination
		}
	}
	return nil
}

func (x *ServerMessage) GetPong() *WorkerPong {
	if x != nil {
		if x, ok := x.Message.(*ServerMessage_Pong); ok {
			return x.Pong
		}
	}
	return nil
}

type isServerMessage_Message interface {
	isServerMessage_Message()
}

type ServerMessage_Register struct {
	// server confirms the registration, from this moment on, the worker is considered active
	Register *RegisterWorkerResponse `protobuf:"bytes,1,opt,name=register,proto3,oneof"`
}

type ServerMessage_Availability struct {
	// server asks worker to confirm availability for a job
	Availability *AvailabilityRequest `protobuf:"bytes,2,opt,name=availability,proto3,oneof"`
}

type ServerMessage_Assignment struct {
	Assignment *JobAssignment `protobuf:"bytes,3,opt,name=assignment,proto3,oneof"`
}

type ServerMessage_Termination struct {
	Termination *JobTermination `protobuf:"bytes,5,opt,name=termination,proto3,oneof"`
}

type ServerMessage_Pong struct {
	Pong *WorkerPong `protobuf:"bytes,4,opt,name=pong,proto3,oneof"`
}

func (*ServerMessage_Register) isServerMessage_Message() {}

func (*ServerMessage_Availability) isServerMessage_Message() {}

func (*ServerMessage_Assignment) isServerMessage_Message() {}

func (*ServerMessage_Termination) isServerMessage_Message() {}

func (*ServerMessage_Pong) isServerMessage_Message() {}

type SimulateJobRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Type          JobType                `protobuf:"varint,1,opt,name=type,proto3,enum=livekit.JobType" json:"type,omitempty"`
	Room          *Room                  `protobuf:"bytes,2,opt,name=room,proto3" json:"room,omitempty"`
	Participant   *ParticipantInfo       `protobuf:"bytes,3,opt,name=participant,proto3" json:"participant,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*SimulateJobRequest) ProtoMessage() {}

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

func (x *SimulateJobRequest) GetType() JobType {
	if x != nil {
		return x.Type
	}
	return JobType_JT_ROOM
}

func (x *SimulateJobRequest) GetRoom() *Room {
	if x != nil {
		return x.Room
	}
	return nil
}

func (x *SimulateJobRequest) GetParticipant() *ParticipantInfo {
	if x != nil {
		return x.Participant
	}
	return nil
}

type WorkerPing struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Timestamp     int64                  `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*WorkerPing) ProtoMessage() {}

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

func (x *WorkerPing) GetTimestamp() int64 {
	if x != nil {
		return x.Timestamp
	}
	return 0
}

type WorkerPong struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	LastTimestamp int64                  `protobuf:"varint,1,opt,name=last_timestamp,json=lastTimestamp,proto3" json:"last_timestamp,omitempty"`
	Timestamp     int64                  `protobuf:"varint,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*WorkerPong) ProtoMessage() {}

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

func (x *WorkerPong) GetLastTimestamp() int64 {
	if x != nil {
		return x.LastTimestamp
	}
	return 0
}

func (x *WorkerPong) GetTimestamp() int64 {
	if x != nil {
		return x.Timestamp
	}
	return 0
}

type RegisterWorkerRequest struct {
	state     protoimpl.MessageState `protogen:"open.v1"`
	Type      JobType                `protobuf:"varint,1,opt,name=type,proto3,enum=livekit.JobType" json:"type,omitempty"`
	AgentName string                 `protobuf:"bytes,8,opt,name=agent_name,json=agentName,proto3" json:"agent_name,omitempty"`
	// string worker_id = 2;
	Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"`
	// string name = 4 [deprecated = true];
	PingInterval       uint32                 `protobuf:"varint,5,opt,name=ping_interval,json=pingInterval,proto3" json:"ping_interval,omitempty"`
	Namespace          *string                `protobuf:"bytes,6,opt,name=namespace,proto3,oneof" json:"namespace,omitempty"`
	AllowedPermissions *ParticipantPermission `protobuf:"bytes,7,opt,name=allowed_permissions,json=allowedPermissions,proto3" json:"allowed_permissions,omitempty"`
	unknownFields      protoimpl.UnknownFields
	sizeCache          protoimpl.SizeCache
}

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

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

func (*RegisterWorkerRequest) ProtoMessage() {}

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

func (x *RegisterWorkerRequest) GetType() JobType {
	if x != nil {
		return x.Type
	}
	return JobType_JT_ROOM
}

func (x *RegisterWorkerRequest) GetAgentName() string {
	if x != nil {
		return x.AgentName
	}
	return ""
}

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

func (x *RegisterWorkerRequest) GetPingInterval() uint32 {
	if x != nil {
		return x.PingInterval
	}
	return 0
}

func (x *RegisterWorkerRequest) GetNamespace() string {
	if x != nil && x.Namespace != nil {
		return *x.Namespace
	}
	return ""
}

func (x *RegisterWorkerRequest) GetAllowedPermissions() *ParticipantPermission {
	if x != nil {
		return x.AllowedPermissions
	}
	return nil
}

type RegisterWorkerResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	WorkerId      string                 `protobuf:"bytes,1,opt,name=worker_id,json=workerId,proto3" json:"worker_id,omitempty"`
	ServerInfo    *ServerInfo            `protobuf:"bytes,3,opt,name=server_info,json=serverInfo,proto3" json:"server_info,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*RegisterWorkerResponse) ProtoMessage() {}

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

func (x *RegisterWorkerResponse) GetWorkerId() string {
	if x != nil {
		return x.WorkerId
	}
	return ""
}

func (x *RegisterWorkerResponse) GetServerInfo() *ServerInfo {
	if x != nil {
		return x.ServerInfo
	}
	return nil
}

type MigrateJobRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// string job_id = 1 [deprecated = true];
	JobIds        []string `protobuf:"bytes,2,rep,name=job_ids,json=jobIds,proto3" json:"job_ids,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*MigrateJobRequest) ProtoMessage() {}

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

func (x *MigrateJobRequest) GetJobIds() []string {
	if x != nil {
		return x.JobIds
	}
	return nil
}

type AvailabilityRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	Job   *Job                   `protobuf:"bytes,1,opt,name=job,proto3" json:"job,omitempty"`
	// True when the job was previously assigned to another worker but has been
	// migrated due to different reasons (e.g. worker failure, job migration)
	Resuming      bool `protobuf:"varint,2,opt,name=resuming,proto3" json:"resuming,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*AvailabilityRequest) ProtoMessage() {}

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

func (x *AvailabilityRequest) GetJob() *Job {
	if x != nil {
		return x.Job
	}
	return nil
}

func (x *AvailabilityRequest) GetResuming() bool {
	if x != nil {
		return x.Resuming
	}
	return false
}

type AvailabilityResponse struct {
	state                 protoimpl.MessageState `protogen:"open.v1"`
	JobId                 string                 `protobuf:"bytes,1,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"`
	Available             bool                   `protobuf:"varint,2,opt,name=available,proto3" json:"available,omitempty"`
	SupportsResume        bool                   `protobuf:"varint,3,opt,name=supports_resume,json=supportsResume,proto3" json:"supports_resume,omitempty"`
	ParticipantName       string                 `protobuf:"bytes,4,opt,name=participant_name,json=participantName,proto3" json:"participant_name,omitempty"`
	ParticipantIdentity   string                 `protobuf:"bytes,5,opt,name=participant_identity,json=participantIdentity,proto3" json:"participant_identity,omitempty"`
	ParticipantMetadata   string                 `protobuf:"bytes,6,opt,name=participant_metadata,json=participantMetadata,proto3" json:"participant_metadata,omitempty"`
	ParticipantAttributes map[string]string      `protobuf:"bytes,7,rep,name=participant_attributes,json=participantAttributes,proto3" json:"participant_attributes,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields         protoimpl.UnknownFields
	sizeCache             protoimpl.SizeCache
}

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

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

func (*AvailabilityResponse) ProtoMessage() {}

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

func (x *AvailabilityResponse) GetJobId() string {
	if x != nil {
		return x.JobId
	}
	return ""
}

func (x *AvailabilityResponse) GetAvailable() bool {
	if x != nil {
		return x.Available
	}
	return false
}

func (x *AvailabilityResponse) GetSupportsResume() bool {
	if x != nil {
		return x.SupportsResume
	}
	return false
}

func (x *AvailabilityResponse) GetParticipantName() string {
	if x != nil {
		return x.ParticipantName
	}
	return ""
}

func (x *AvailabilityResponse) GetParticipantIdentity() string {
	if x != nil {
		return x.ParticipantIdentity
	}
	return ""
}

func (x *AvailabilityResponse) GetParticipantMetadata() string {
	if x != nil {
		return x.ParticipantMetadata
	}
	return ""
}

func (x *AvailabilityResponse) GetParticipantAttributes() map[string]string {
	if x != nil {
		return x.ParticipantAttributes
	}
	return nil
}

type UpdateJobStatus struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	JobId string                 `protobuf:"bytes,1,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"`
	// The worker can indicate the job end by either specifying SUCCESS or FAILED
	Status JobStatus `protobuf:"varint,2,opt,name=status,proto3,enum=livekit.JobStatus" json:"status,omitempty"`
	// metadata shown on the dashboard, useful for debugging
	Error         string `protobuf:"bytes,3,opt,name=error,proto3" json:"error,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*UpdateJobStatus) ProtoMessage() {}

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

func (x *UpdateJobStatus) GetJobId() string {
	if x != nil {
		return x.JobId
	}
	return ""
}

func (x *UpdateJobStatus) GetStatus() JobStatus {
	if x != nil {
		return x.Status
	}
	return JobStatus_JS_PENDING
}

func (x *UpdateJobStatus) GetError() string {
	if x != nil {
		return x.Error
	}
	return ""
}

type UpdateWorkerStatus struct {
	state  protoimpl.MessageState `protogen:"open.v1"`
	Status *WorkerStatus          `protobuf:"varint,1,opt,name=status,proto3,enum=livekit.WorkerStatus,oneof" json:"status,omitempty"`
	// optional string metadata = 2 [deprecated=true];
	Load          float32 `protobuf:"fixed32,3,opt,name=load,proto3" json:"load,omitempty"`
	JobCount      uint32  `protobuf:"varint,4,opt,name=job_count,json=jobCount,proto3" json:"job_count,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*UpdateWorkerStatus) ProtoMessage() {}

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

func (x *UpdateWorkerStatus) GetStatus() WorkerStatus {
	if x != nil && x.Status != nil {
		return *x.Status
	}
	return WorkerStatus_WS_AVAILABLE
}

func (x *UpdateWorkerStatus) GetLoad() float32 {
	if x != nil {
		return x.Load
	}
	return 0
}

func (x *UpdateWorkerStatus) GetJobCount() uint32 {
	if x != nil {
		return x.JobCount
	}
	return 0
}

type JobAssignment struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Job           *Job                   `protobuf:"bytes,1,opt,name=job,proto3" json:"job,omitempty"`
	Url           *string                `protobuf:"bytes,2,opt,name=url,proto3,oneof" json:"url,omitempty"`
	Token         string                 `protobuf:"bytes,3,opt,name=token,proto3" json:"token,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*JobAssignment) ProtoMessage() {}

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

func (x *JobAssignment) GetJob() *Job {
	if x != nil {
		return x.Job
	}
	return nil
}

func (x *JobAssignment) GetUrl() string {
	if x != nil && x.Url != nil {
		return *x.Url
	}
	return ""
}

func (x *JobAssignment) GetToken() string {
	if x != nil {
		return x.Token
	}
	return ""
}

type JobTermination struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	JobId         string                 `protobuf:"bytes,1,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*JobTermination) ProtoMessage() {}

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

func (x *JobTermination) GetJobId() string {
	if x != nil {
		return x.JobId
	}
	return ""
}

var File_livekit_agent_proto protoreflect.FileDescriptor

var file_livekit_agent_proto_rawDesc = string([]byte{
	0x0a, 0x13, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x07, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x1a, 0x14,
	0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd6, 0x02, 0x0a, 0x03, 0x4a, 0x6f, 0x62, 0x12, 0x0e, 0x0a, 0x02,
	0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x0b,
	0x64, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x0a, 0x64, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x24, 0x0a,
	0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x6c, 0x69,
	0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74,
	0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x04, 0x72, 0x6f, 0x6f, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x0d, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x52, 0x6f, 0x6f, 0x6d,
	0x52, 0x04, 0x72, 0x6f, 0x6f, 0x6d, 0x12, 0x3f, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63,
	0x69, 0x70, 0x61, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6c, 0x69,
	0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e,
	0x74, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69,
	0x70, 0x61, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73,
	0x70, 0x61, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x09,
	0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74,
	0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x74,
	0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x6e,
	0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x67, 0x65, 0x6e, 0x74,
	0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x08, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x4a, 0x6f,
	0x62, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, 0x0e, 0x0a,
	0x0c, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x22, 0xd8, 0x01,
	0x0a, 0x08, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x06, 0x73, 0x74,
	0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x6c, 0x69, 0x76,
	0x65, 0x6b, 0x69, 0x74, 0x2e, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06,
	0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x1d, 0x0a, 0x0a,
	0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x65,
	0x6e, 0x64, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65,
	0x6e, 0x64, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
	0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61,
	0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x31, 0x0a, 0x14, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69,
	0x70, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x06, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x13, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74,
	0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x22, 0xc8, 0x03, 0x0a, 0x0d, 0x57, 0x6f, 0x72,
	0x6b, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3c, 0x0a, 0x08, 0x72, 0x65,
	0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6c,
	0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x57,
	0x6f, 0x72, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x08,
	0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x43, 0x0a, 0x0c, 0x61, 0x76, 0x61, 0x69,
	0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d,
	0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62,
	0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52,
	0x0c, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x42, 0x0a,
	0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x55,
	0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75,
	0x73, 0x48, 0x00, 0x52, 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x65,
	0x72, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6a, 0x6f, 0x62, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e,
	0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x48,
	0x00, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x12, 0x29, 0x0a, 0x04,
	0x70, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6c, 0x69, 0x76,
	0x65, 0x6b, 0x69, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x50, 0x69, 0x6e, 0x67, 0x48,
	0x00, 0x52, 0x04, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x40, 0x0a, 0x0c, 0x73, 0x69, 0x6d, 0x75, 0x6c,
	0x61, 0x74, 0x65, 0x5f, 0x6a, 0x6f, 0x62, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e,
	0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65,
	0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x69,
	0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x12, 0x3d, 0x0a, 0x0b, 0x6d, 0x69, 0x67,
	0x72, 0x61, 0x74, 0x65, 0x5f, 0x6a, 0x6f, 0x62, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
	0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65,
	0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x6d, 0x69,
	0x67, 0x72, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x42, 0x09, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73,
	0x61, 0x67, 0x65, 0x22, 0xbf, 0x02, 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x65,
	0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3d, 0x0a, 0x08, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65,
	0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69,
	0x74, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72,
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x67, 0x69,
	0x73, 0x74, 0x65, 0x72, 0x12, 0x42, 0x0a, 0x0c, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69,
	0x6c, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6c, 0x69, 0x76,
	0x65, 0x6b, 0x69, 0x74, 0x2e, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74,
	0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0c, 0x61, 0x76, 0x61, 0x69,
	0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x38, 0x0a, 0x0a, 0x61, 0x73, 0x73, 0x69,
	0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6c,
	0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x4a, 0x6f, 0x62, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e,
	0x6d, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65,
	0x6e, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69,
	0x74, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x48, 0x00, 0x52, 0x0b, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12,
	0x29, 0x0a, 0x04, 0x70, 0x6f, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e,
	0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x50, 0x6f,
	0x6e, 0x67, 0x48, 0x00, 0x52, 0x04, 0x70, 0x6f, 0x6e, 0x67, 0x42, 0x09, 0x0a, 0x07, 0x6d, 0x65,
	0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x99, 0x01, 0x0a, 0x12, 0x53, 0x69, 0x6d, 0x75, 0x6c, 0x61,
	0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x04,
	0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x6c, 0x69, 0x76,
	0x65, 0x6b, 0x69, 0x74, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79,
	0x70, 0x65, 0x12, 0x21, 0x0a, 0x04, 0x72, 0x6f, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x0d, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x52,
	0x04, 0x72, 0x6f, 0x6f, 0x6d, 0x12, 0x3a, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69,
	0x70, 0x61, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6c, 0x69, 0x76,
	0x65, 0x6b, 0x69, 0x74, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74,
	0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e,
	0x74, 0x22, 0x2a, 0x0a, 0x0a, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x50, 0x69, 0x6e, 0x67, 0x12,
	0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x51, 0x0a,
	0x0a, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x50, 0x6f, 0x6e, 0x67, 0x12, 0x25, 0x0a, 0x0e, 0x6c,
	0x61, 0x73, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
	0x6d, 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
	0x22, 0x9d, 0x02, 0x0a, 0x15, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x57, 0x6f, 0x72,
	0x6b, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x04, 0x74, 0x79,
	0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b,
	0x69, 0x74, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65,
	0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12,
	0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x69, 0x6e,
	0x67, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d,
	0x52, 0x0c, 0x70, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x21,
	0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28,
	0x09, 0x48, 0x00, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x88, 0x01,
	0x01, 0x12, 0x4f, 0x0a, 0x13, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x70, 0x65, 0x72,
	0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e,
	0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69,
	0x70, 0x61, 0x6e, 0x74, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x12,
	0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f,
	0x6e, 0x73, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
	0x22, 0x6b, 0x0a, 0x16, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6b,
	0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x77, 0x6f,
	0x72, 0x6b, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77,
	0x6f, 0x72, 0x6b, 0x65, 0x72, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65,
	0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6c,
	0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x6e, 0x66,
	0x6f, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x2c, 0x0a,
	0x11, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20,
	0x03, 0x28, 0x09, 0x52, 0x06, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x73, 0x22, 0x51, 0x0a, 0x13, 0x41,
	0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x12, 0x1e, 0x0a, 0x03, 0x6a, 0x6f, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x0c, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x03, 0x6a,
	0x6f, 0x62, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x75, 0x6d, 0x69, 0x6e, 0x67, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x73, 0x75, 0x6d, 0x69, 0x6e, 0x67, 0x22, 0xc0,
	0x03, 0x0a, 0x14, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52,
	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69,
	0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x12, 0x1c,
	0x0a, 0x09, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x08, 0x52, 0x09, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x27, 0x0a, 0x0f,
	0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x52,
	0x65, 0x73, 0x75, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69,
	0x70, 0x61, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x0f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65,
	0x12, 0x31, 0x0a, 0x14, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f,
	0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13,
	0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74,
	0x69, 0x74, 0x79, 0x12, 0x31, 0x0a, 0x14, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61,
	0x6e, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x13, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x4d, 0x65,
	0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x6f, 0x0a, 0x16, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63,
	0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73,
	0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74,
	0x2e, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e,
	0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
	0x52, 0x15, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x41, 0x74, 0x74,
	0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x1a, 0x48, 0x0a, 0x1a, 0x50, 0x61, 0x72, 0x74, 0x69,
	0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73,
	0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
	0x01, 0x22, 0x6a, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x53, 0x74,
	0x61, 0x74, 0x75, 0x73, 0x12, 0x15, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x06, 0x73,
	0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x6c, 0x69,
	0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52,
	0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x84, 0x01,
	0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x53, 0x74,
	0x61, 0x74, 0x75, 0x73, 0x12, 0x32, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x57,
	0x6f, 0x72, 0x6b, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x48, 0x00, 0x52, 0x06, 0x73,
	0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x6f, 0x61, 0x64,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x04, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x1b, 0x0a, 0x09,
	0x6a, 0x6f, 0x62, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52,
	0x08, 0x6a, 0x6f, 0x62, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x74,
	0x61, 0x74, 0x75, 0x73, 0x22, 0x64, 0x0a, 0x0d, 0x4a, 0x6f, 0x62, 0x41, 0x73, 0x73, 0x69, 0x67,
	0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x03, 0x6a, 0x6f, 0x62, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x4a, 0x6f, 0x62,
	0x52, 0x03, 0x6a, 0x6f, 0x62, 0x12, 0x15, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x14, 0x0a, 0x05,
	0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b,
	0x65, 0x6e, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x75, 0x72, 0x6c, 0x22, 0x27, 0x0a, 0x0e, 0x4a, 0x6f,
	0x62, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x15, 0x0a, 0x06,
	0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6a, 0x6f,
	0x62, 0x49, 0x64, 0x2a, 0x3c, 0x0a, 0x07, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b,
	0x0a, 0x07, 0x4a, 0x54, 0x5f, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x4a,
	0x54, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x45, 0x52, 0x10, 0x01, 0x12, 0x12, 0x0a,
	0x0e, 0x4a, 0x54, 0x5f, 0x50, 0x41, 0x52, 0x54, 0x49, 0x43, 0x49, 0x50, 0x41, 0x4e, 0x54, 0x10,
	0x02, 0x2a, 0x2d, 0x0a, 0x0c, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75,
	0x73, 0x12, 0x10, 0x0a, 0x0c, 0x57, 0x53, 0x5f, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c,
	0x45, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x53, 0x5f, 0x46, 0x55, 0x4c, 0x4c, 0x10, 0x01,
	0x2a, 0x4a, 0x0a, 0x09, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0e, 0x0a,
	0x0a, 0x4a, 0x53, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x00, 0x12, 0x0e, 0x0a,
	0x0a, 0x4a, 0x53, 0x5f, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0e, 0x0a,
	0x0a, 0x4a, 0x53, 0x5f, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x02, 0x12, 0x0d, 0x0a,
	0x09, 0x4a, 0x53, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x03, 0x42, 0x46, 0x5a, 0x23,
	0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x69, 0x76, 0x65, 0x6b,
	0x69, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x6c, 0x69, 0x76, 0x65,
	0x6b, 0x69, 0x74, 0xaa, 0x02, 0x0d, 0x4c, 0x69, 0x76, 0x65, 0x4b, 0x69, 0x74, 0x2e, 0x50, 0x72,
	0x6f, 0x74, 0x6f, 0xea, 0x02, 0x0e, 0x4c, 0x69, 0x76, 0x65, 0x4b, 0x69, 0x74, 0x3a, 0x3a, 0x50,
	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
})

var (
	file_livekit_agent_proto_rawDescOnce sync.Once
	file_livekit_agent_proto_rawDescData []byte
)

func file_livekit_agent_proto_rawDescGZIP() []byte {
	file_livekit_agent_proto_rawDescOnce.Do(func() {
		file_livekit_agent_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_livekit_agent_proto_rawDesc), len(file_livekit_agent_proto_rawDesc)))
	})
	return file_livekit_agent_proto_rawDescData
}

var file_livekit_agent_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
var file_livekit_agent_proto_msgTypes = make([]protoimpl.MessageInfo, 17)
var file_livekit_agent_proto_goTypes = []any{
	(JobType)(0),                   // 0: livekit.JobType
	(WorkerStatus)(0),              // 1: livekit.WorkerStatus
	(JobStatus)(0),                 // 2: livekit.JobStatus
	(*Job)(nil),                    // 3: livekit.Job
	(*JobState)(nil),               // 4: livekit.JobState
	(*WorkerMessage)(nil),          // 5: livekit.WorkerMessage
	(*ServerMessage)(nil),          // 6: livekit.ServerMessage
	(*SimulateJobRequest)(nil),     // 7: livekit.SimulateJobRequest
	(*WorkerPing)(nil),             // 8: livekit.WorkerPing
	(*WorkerPong)(nil),             // 9: livekit.WorkerPong
	(*RegisterWorkerRequest)(nil),  // 10: livekit.RegisterWorkerRequest
	(*RegisterWorkerResponse)(nil), // 11: livekit.RegisterWorkerResponse
	(*MigrateJobRequest)(nil),      // 12: livekit.MigrateJobRequest
	(*AvailabilityRequest)(nil),    // 13: livekit.AvailabilityRequest
	(*AvailabilityResponse)(nil),   // 14: livekit.AvailabilityResponse
	(*UpdateJobStatus)(nil),        // 15: livekit.UpdateJobStatus
	(*UpdateWorkerStatus)(nil),     // 16: livekit.UpdateWorkerStatus
	(*JobAssignment)(nil),          // 17: livekit.JobAssignment
	(*JobTermination)(nil),         // 18: livekit.JobTermination
	nil,                            // 19: livekit.AvailabilityResponse.ParticipantAttributesEntry
	(*Room)(nil),                   // 20: livekit.Room
	(*ParticipantInfo)(nil),        // 21: livekit.ParticipantInfo
	(*ParticipantPermission)(nil),  // 22: livekit.ParticipantPermission
	(*ServerInfo)(nil),             // 23: livekit.ServerInfo
}
var file_livekit_agent_proto_depIdxs = []int32{
	0,  // 0: livekit.Job.type:type_name -> livekit.JobType
	20, // 1: livekit.Job.room:type_name -> livekit.Room
	21, // 2: livekit.Job.participant:type_name -> livekit.ParticipantInfo
	4,  // 3: livekit.Job.state:type_name -> livekit.JobState
	2,  // 4: livekit.JobState.status:type_name -> livekit.JobStatus
	10, // 5: livekit.WorkerMessage.register:type_name -> livekit.RegisterWorkerRequest
	14, // 6: livekit.WorkerMessage.availability:type_name -> livekit.AvailabilityResponse
	16, // 7: livekit.WorkerMessage.update_worker:type_name -> livekit.UpdateWorkerStatus
	15, // 8: livekit.WorkerMessage.update_job:type_name -> livekit.UpdateJobStatus
	8,  // 9: livekit.WorkerMessage.ping:type_name -> livekit.WorkerPing
	7,  // 10: livekit.WorkerMessage.simulate_job:type_name -> livekit.SimulateJobRequest
	12, // 11: livekit.WorkerMessage.migrate_job:type_name -> livekit.MigrateJobRequest
	11, // 12: livekit.ServerMessage.register:type_name -> livekit.RegisterWorkerResponse
	13, // 13: livekit.ServerMessage.availability:type_name -> livekit.AvailabilityRequest
	17, // 14: livekit.ServerMessage.assignment:type_name -> livekit.JobAssignment
	18, // 15: livekit.ServerMessage.termination:type_name -> livekit.JobTermination
	9,  // 16: livekit.ServerMessage.pong:type_name -> livekit.WorkerPong
	0,  // 17: livekit.SimulateJobRequest.type:type_name -> livekit.JobType
	20, // 18: livekit.SimulateJobRequest.room:type_name -> livekit.Room
	21, // 19: livekit.SimulateJobRequest.participant:type_name -> livekit.ParticipantInfo
	0,  // 20: livekit.RegisterWorkerRequest.type:type_name -> livekit.JobType
	22, // 21: livekit.RegisterWorkerRequest.allowed_permissions:type_name -> livekit.ParticipantPermission
	23, // 22: livekit.RegisterWorkerResponse.server_info:type_name -> livekit.ServerInfo
	3,  // 23: livekit.AvailabilityRequest.job:type_name -> livekit.Job
	19, // 24: livekit.AvailabilityResponse.participant_attributes:type_name -> livekit.AvailabilityResponse.ParticipantAttributesEntry
	2,  // 25: livekit.UpdateJobStatus.status:type_name -> livekit.JobStatus
	1,  // 26: livekit.UpdateWorkerStatus.status:type_name -> livekit.WorkerStatus
	3,  // 27: livekit.JobAssignment.job:type_name -> livekit.Job
	28, // [28:28] is the sub-list for method output_type
	28, // [28:28] 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_livekit_agent_proto_init() }
func file_livekit_agent_proto_init() {
	if File_livekit_agent_proto != nil {
		return
	}
	file_livekit_models_proto_init()
	file_livekit_agent_proto_msgTypes[0].OneofWrappers = []any{}
	file_livekit_agent_proto_msgTypes[2].OneofWrappers = []any{
		(*WorkerMessage_Register)(nil),
		(*WorkerMessage_Availability)(nil),
		(*WorkerMessage_UpdateWorker)(nil),
		(*WorkerMessage_UpdateJob)(nil),
		(*WorkerMessage_Ping)(nil),
		(*WorkerMessage_SimulateJob)(nil),
		(*WorkerMessage_MigrateJob)(nil),
	}
	file_livekit_agent_proto_msgTypes[3].OneofWrappers = []any{
		(*ServerMessage_Register)(nil),
		(*ServerMessage_Availability)(nil),
		(*ServerMessage_Assignment)(nil),
		(*ServerMessage_Termination)(nil),
		(*ServerMessage_Pong)(nil),
	}
	file_livekit_agent_proto_msgTypes[7].OneofWrappers = []any{}
	file_livekit_agent_proto_msgTypes[13].OneofWrappers = []any{}
	file_livekit_agent_proto_msgTypes[14].OneofWrappers = []any{}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_livekit_agent_proto_rawDesc), len(file_livekit_agent_proto_rawDesc)),
			NumEnums:      3,
			NumMessages:   17,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_livekit_agent_proto_goTypes,
		DependencyIndexes: file_livekit_agent_proto_depIdxs,
		EnumInfos:         file_livekit_agent_proto_enumTypes,
		MessageInfos:      file_livekit_agent_proto_msgTypes,
	}.Build()
	File_livekit_agent_proto = out.File
	file_livekit_agent_proto_goTypes = nil
	file_livekit_agent_proto_depIdxs = nil
}
