// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.11
// 	protoc        v7.35.0
// source: proto/room/v1/room.proto

package roomv1

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

// RequestMeta 固定承载所有命令的调用元信息。
// room-service 用它串起幂等、追踪、路由和业务操作者身份。
type RequestMeta struct {
	state       protoimpl.MessageState `protogen:"open.v1"`
	RequestId   string                 `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	CommandId   string                 `protobuf:"bytes,2,opt,name=command_id,json=commandId,proto3" json:"command_id,omitempty"`
	ActorUserId int64                  `protobuf:"varint,3,opt,name=actor_user_id,json=actorUserId,proto3" json:"actor_user_id,omitempty"`
	// room_id 是命令路由、持久化和腾讯 IM/RTC 映射共同依赖的必填字段。
	// CreateRoom 时必须满足 ^[A-Za-z0-9_-]{1,48}$。
	RoomId        string `protobuf:"bytes,4,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"`
	GatewayNodeId string `protobuf:"bytes,5,opt,name=gateway_node_id,json=gatewayNodeId,proto3" json:"gateway_node_id,omitempty"`
	SessionId     string `protobuf:"bytes,6,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"`
	SentAtMs      int64  `protobuf:"varint,7,opt,name=sent_at_ms,json=sentAtMs,proto3" json:"sent_at_ms,omitempty"`
	AppCode       string `protobuf:"bytes,8,opt,name=app_code,json=appCode,proto3" json:"app_code,omitempty"`
	// device_id 只能来自 gateway 已验签 access JWT 的同名 claim；旧 JWT 缺字段时保持空值，不得用 session_id/command_id 伪造。
	DeviceId      string `protobuf:"bytes,9,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*RequestMeta) ProtoMessage() {}

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

func (x *RequestMeta) GetRequestId() string {
	if x != nil {
		return x.RequestId
	}
	return ""
}

func (x *RequestMeta) GetCommandId() string {
	if x != nil {
		return x.CommandId
	}
	return ""
}

func (x *RequestMeta) GetActorUserId() int64 {
	if x != nil {
		return x.ActorUserId
	}
	return 0
}

func (x *RequestMeta) GetRoomId() string {
	if x != nil {
		return x.RoomId
	}
	return ""
}

func (x *RequestMeta) GetGatewayNodeId() string {
	if x != nil {
		return x.GatewayNodeId
	}
	return ""
}

func (x *RequestMeta) GetSessionId() string {
	if x != nil {
		return x.SessionId
	}
	return ""
}

func (x *RequestMeta) GetSentAtMs() int64 {
	if x != nil {
		return x.SentAtMs
	}
	return 0
}

func (x *RequestMeta) GetAppCode() string {
	if x != nil {
		return x.AppCode
	}
	return ""
}

func (x *RequestMeta) GetDeviceId() string {
	if x != nil {
		return x.DeviceId
	}
	return ""
}

// CommandResult 统一返回命令是否真正落地，以及落地后的房间版本。
type CommandResult struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Applied       bool                   `protobuf:"varint,1,opt,name=applied,proto3" json:"applied,omitempty"`
	RoomVersion   int64                  `protobuf:"varint,2,opt,name=room_version,json=roomVersion,proto3" json:"room_version,omitempty"`
	ServerTimeMs  int64                  `protobuf:"varint,3,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*CommandResult) ProtoMessage() {}

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

func (x *CommandResult) GetApplied() bool {
	if x != nil {
		return x.Applied
	}
	return false
}

func (x *CommandResult) GetRoomVersion() int64 {
	if x != nil {
		return x.RoomVersion
	}
	return 0
}

func (x *CommandResult) GetServerTimeMs() int64 {
	if x != nil {
		return x.ServerTimeMs
	}
	return 0
}

// RoomUser 只表达 room-service 需要保存的房间内轻量用户态。
type RoomUser struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	UserId        int64                  `protobuf:"varint,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
	Role          string                 `protobuf:"bytes,2,opt,name=role,proto3" json:"role,omitempty"`
	JoinedAtMs    int64                  `protobuf:"varint,3,opt,name=joined_at_ms,json=joinedAtMs,proto3" json:"joined_at_ms,omitempty"`
	LastSeenAtMs  int64                  `protobuf:"varint,4,opt,name=last_seen_at_ms,json=lastSeenAtMs,proto3" json:"last_seen_at_ms,omitempty"`
	GiftValue     int64                  `protobuf:"varint,5,opt,name=gift_value,json=giftValue,proto3" json:"gift_value,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*RoomUser) ProtoMessage() {}

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

func (x *RoomUser) GetUserId() int64 {
	if x != nil {
		return x.UserId
	}
	return 0
}

func (x *RoomUser) GetRole() string {
	if x != nil {
		return x.Role
	}
	return ""
}

func (x *RoomUser) GetJoinedAtMs() int64 {
	if x != nil {
		return x.JoinedAtMs
	}
	return 0
}

func (x *RoomUser) GetLastSeenAtMs() int64 {
	if x != nil {
		return x.LastSeenAtMs
	}
	return 0
}

func (x *RoomUser) GetGiftValue() int64 {
	if x != nil {
		return x.GiftValue
	}
	return 0
}

// RoomOnlineUser 是在线用户列表的展示读模型。
// role 保留进房 presence 语义；room_role 只表达房间管理员身份；is_owner 单独表达房主身份。
type RoomOnlineUser struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	UserId        int64                  `protobuf:"varint,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
	Role          string                 `protobuf:"bytes,2,opt,name=role,proto3" json:"role,omitempty"`
	RoomRole      string                 `protobuf:"bytes,3,opt,name=room_role,json=roomRole,proto3" json:"room_role,omitempty"`
	GiftValue     int64                  `protobuf:"varint,4,opt,name=gift_value,json=giftValue,proto3" json:"gift_value,omitempty"`
	JoinedAtMs    int64                  `protobuf:"varint,5,opt,name=joined_at_ms,json=joinedAtMs,proto3" json:"joined_at_ms,omitempty"`
	LastSeenAtMs  int64                  `protobuf:"varint,6,opt,name=last_seen_at_ms,json=lastSeenAtMs,proto3" json:"last_seen_at_ms,omitempty"`
	IsOwner       bool                   `protobuf:"varint,7,opt,name=is_owner,json=isOwner,proto3" json:"is_owner,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*RoomOnlineUser) ProtoMessage() {}

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

func (x *RoomOnlineUser) GetUserId() int64 {
	if x != nil {
		return x.UserId
	}
	return 0
}

func (x *RoomOnlineUser) GetRole() string {
	if x != nil {
		return x.Role
	}
	return ""
}

func (x *RoomOnlineUser) GetRoomRole() string {
	if x != nil {
		return x.RoomRole
	}
	return ""
}

func (x *RoomOnlineUser) GetGiftValue() int64 {
	if x != nil {
		return x.GiftValue
	}
	return 0
}

func (x *RoomOnlineUser) GetJoinedAtMs() int64 {
	if x != nil {
		return x.JoinedAtMs
	}
	return 0
}

func (x *RoomOnlineUser) GetLastSeenAtMs() int64 {
	if x != nil {
		return x.LastSeenAtMs
	}
	return 0
}

func (x *RoomOnlineUser) GetIsOwner() bool {
	if x != nil {
		return x.IsOwner
	}
	return false
}

// SeatState 表达单个麦位当前占用和 RTC 发流确认状态。
type SeatState struct {
	state  protoimpl.MessageState `protogen:"open.v1"`
	SeatNo int32                  `protobuf:"varint,1,opt,name=seat_no,json=seatNo,proto3" json:"seat_no,omitempty"`
	UserId int64                  `protobuf:"varint,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
	Locked bool                   `protobuf:"varint,3,opt,name=locked,proto3" json:"locked,omitempty"`
	// publish_state 为空表示空麦或未进入发流流程；上麦后先进入 pending_publish，确认后进入 publishing。
	PublishState string `protobuf:"bytes,4,opt,name=publish_state,json=publishState,proto3" json:"publish_state,omitempty"`
	// mic_session_id 是单次上麦发流会话 ID；所有客户端确认或 RTC webhook 必须带回它。
	MicSessionId string `protobuf:"bytes,5,opt,name=mic_session_id,json=micSessionId,proto3" json:"mic_session_id,omitempty"`
	// publish_deadline_ms 是 pending_publish 必须确认发流的截止时间。
	PublishDeadlineMs int64 `protobuf:"varint,6,opt,name=publish_deadline_ms,json=publishDeadlineMs,proto3" json:"publish_deadline_ms,omitempty"`
	// mic_session_room_version 是创建本次 mic_session 的房间版本，用于丢弃旧版本 RTC 事件。
	MicSessionRoomVersion int64 `protobuf:"varint,7,opt,name=mic_session_room_version,json=micSessionRoomVersion,proto3" json:"mic_session_room_version,omitempty"`
	// last_publish_event_time_ms 记录已接受的最新 RTC/客户端发流事件时间。
	LastPublishEventTimeMs int64 `protobuf:"varint,8,opt,name=last_publish_event_time_ms,json=lastPublishEventTimeMs,proto3" json:"last_publish_event_time_ms,omitempty"`
	// mic_muted 是服务端可见的麦克风静音状态，用于同步其他用户 UI。
	MicMuted bool `protobuf:"varint,9,opt,name=mic_muted,json=micMuted,proto3" json:"mic_muted,omitempty"`
	// seat_status 是服务端派生的展示状态：empty/locked/occupied/publishing/muted。
	SeatStatus string `protobuf:"bytes,10,opt,name=seat_status,json=seatStatus,proto3" json:"seat_status,omitempty"`
	// mic_heartbeat_at_ms 是当前 mic_session 最近一次服务端接受麦上心跳的 UTC epoch ms。
	MicHeartbeatAtMs int64 `protobuf:"varint,11,opt,name=mic_heartbeat_at_ms,json=micHeartbeatAtMs,proto3" json:"mic_heartbeat_at_ms,omitempty"`
	// gift_value 是当前房间内该麦位用户收到的礼物热度累计，用户离房后清零。
	GiftValue     int64 `protobuf:"varint,12,opt,name=gift_value,json=giftValue,proto3" json:"gift_value,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*SeatState) ProtoMessage() {}

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

func (x *SeatState) GetSeatNo() int32 {
	if x != nil {
		return x.SeatNo
	}
	return 0
}

func (x *SeatState) GetUserId() int64 {
	if x != nil {
		return x.UserId
	}
	return 0
}

func (x *SeatState) GetLocked() bool {
	if x != nil {
		return x.Locked
	}
	return false
}

func (x *SeatState) GetPublishState() string {
	if x != nil {
		return x.PublishState
	}
	return ""
}

func (x *SeatState) GetMicSessionId() string {
	if x != nil {
		return x.MicSessionId
	}
	return ""
}

func (x *SeatState) GetPublishDeadlineMs() int64 {
	if x != nil {
		return x.PublishDeadlineMs
	}
	return 0
}

func (x *SeatState) GetMicSessionRoomVersion() int64 {
	if x != nil {
		return x.MicSessionRoomVersion
	}
	return 0
}

func (x *SeatState) GetLastPublishEventTimeMs() int64 {
	if x != nil {
		return x.LastPublishEventTimeMs
	}
	return 0
}

func (x *SeatState) GetMicMuted() bool {
	if x != nil {
		return x.MicMuted
	}
	return false
}

func (x *SeatState) GetSeatStatus() string {
	if x != nil {
		return x.SeatStatus
	}
	return ""
}

func (x *SeatState) GetMicHeartbeatAtMs() int64 {
	if x != nil {
		return x.MicHeartbeatAtMs
	}
	return 0
}

func (x *SeatState) GetGiftValue() int64 {
	if x != nil {
		return x.GiftValue
	}
	return 0
}

// RankItem 表达房间内本地礼物榜项目。
type RankItem struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	UserId        int64                  `protobuf:"varint,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
	Score         int64                  `protobuf:"varint,2,opt,name=score,proto3" json:"score,omitempty"`
	GiftValue     int64                  `protobuf:"varint,3,opt,name=gift_value,json=giftValue,proto3" json:"gift_value,omitempty"`
	UpdatedAtMs   int64                  `protobuf:"varint,4,opt,name=updated_at_ms,json=updatedAtMs,proto3" json:"updated_at_ms,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*RankItem) ProtoMessage() {}

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

func (x *RankItem) GetUserId() int64 {
	if x != nil {
		return x.UserId
	}
	return 0
}

func (x *RankItem) GetScore() int64 {
	if x != nil {
		return x.Score
	}
	return 0
}

func (x *RankItem) GetGiftValue() int64 {
	if x != nil {
		return x.GiftValue
	}
	return 0
}

func (x *RankItem) GetUpdatedAtMs() int64 {
	if x != nil {
		return x.UpdatedAtMs
	}
	return 0
}

// RoomContributionRankItem 表达房间内某个周期的送礼贡献用户排行项。
type RoomContributionRankItem struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Rank          int64                  `protobuf:"varint,1,opt,name=rank,proto3" json:"rank,omitempty"`
	UserId        int64                  `protobuf:"varint,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
	Score         int64                  `protobuf:"varint,3,opt,name=score,proto3" json:"score,omitempty"`
	GiftValue     int64                  `protobuf:"varint,4,opt,name=gift_value,json=giftValue,proto3" json:"gift_value,omitempty"`
	UpdatedAtMs   int64                  `protobuf:"varint,5,opt,name=updated_at_ms,json=updatedAtMs,proto3" json:"updated_at_ms,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*RoomContributionRankItem) ProtoMessage() {}

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

func (x *RoomContributionRankItem) GetRank() int64 {
	if x != nil {
		return x.Rank
	}
	return 0
}

func (x *RoomContributionRankItem) GetUserId() int64 {
	if x != nil {
		return x.UserId
	}
	return 0
}

func (x *RoomContributionRankItem) GetScore() int64 {
	if x != nil {
		return x.Score
	}
	return 0
}

func (x *RoomContributionRankItem) GetGiftValue() int64 {
	if x != nil {
		return x.GiftValue
	}
	return 0
}

func (x *RoomContributionRankItem) GetUpdatedAtMs() int64 {
	if x != nil {
		return x.UpdatedAtMs
	}
	return 0
}

// LuckyGiftDrawResult 是 SendGift 同步返回给当前送礼用户的幸运礼物抽奖表现。
type LuckyGiftDrawResult struct {
	state                protoimpl.MessageState `protogen:"open.v1"`
	Enabled              bool                   `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"`
	DrawId               string                 `protobuf:"bytes,2,opt,name=draw_id,json=drawId,proto3" json:"draw_id,omitempty"`
	CommandId            string                 `protobuf:"bytes,3,opt,name=command_id,json=commandId,proto3" json:"command_id,omitempty"`
	PoolId               string                 `protobuf:"bytes,4,opt,name=pool_id,json=poolId,proto3" json:"pool_id,omitempty"`
	GiftId               string                 `protobuf:"bytes,5,opt,name=gift_id,json=giftId,proto3" json:"gift_id,omitempty"`
	RuleVersion          int64                  `protobuf:"varint,6,opt,name=rule_version,json=ruleVersion,proto3" json:"rule_version,omitempty"`
	ExperiencePool       string                 `protobuf:"bytes,7,opt,name=experience_pool,json=experiencePool,proto3" json:"experience_pool,omitempty"`
	SelectedTierId       string                 `protobuf:"bytes,8,opt,name=selected_tier_id,json=selectedTierId,proto3" json:"selected_tier_id,omitempty"`
	MultiplierPpm        int64                  `protobuf:"varint,9,opt,name=multiplier_ppm,json=multiplierPpm,proto3" json:"multiplier_ppm,omitempty"`
	BaseRewardCoins      int64                  `protobuf:"varint,10,opt,name=base_reward_coins,json=baseRewardCoins,proto3" json:"base_reward_coins,omitempty"`
	EffectiveRewardCoins int64                  `protobuf:"varint,11,opt,name=effective_reward_coins,json=effectiveRewardCoins,proto3" json:"effective_reward_coins,omitempty"`
	RewardStatus         string                 `protobuf:"bytes,12,opt,name=reward_status,json=rewardStatus,proto3" json:"reward_status,omitempty"`
	StageFeedback        bool                   `protobuf:"varint,13,opt,name=stage_feedback,json=stageFeedback,proto3" json:"stage_feedback,omitempty"`
	HighMultiplier       bool                   `protobuf:"varint,14,opt,name=high_multiplier,json=highMultiplier,proto3" json:"high_multiplier,omitempty"`
	CreatedAtMs          int64                  `protobuf:"varint,15,opt,name=created_at_ms,json=createdAtMs,proto3" json:"created_at_ms,omitempty"`
	WalletTransactionId  string                 `protobuf:"bytes,16,opt,name=wallet_transaction_id,json=walletTransactionId,proto3" json:"wallet_transaction_id,omitempty"`
	CoinBalanceAfter     int64                  `protobuf:"varint,17,opt,name=coin_balance_after,json=coinBalanceAfter,proto3" json:"coin_balance_after,omitempty"`
	// target_user_id 是本次幸运礼物抽奖对应的收礼用户；多目标送礼用它关联结果。
	TargetUserId int64 `protobuf:"varint,18,opt,name=target_user_id,json=targetUserId,proto3" json:"target_user_id,omitempty"`
	// hits 只包含 gift_count 微批中实际中奖的位置；旧客户端忽略该追加字段。
	Hits          []*SendGiftLuckyHit `protobuf:"bytes,19,rep,name=hits,proto3" json:"hits,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*LuckyGiftDrawResult) ProtoMessage() {}

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

func (x *LuckyGiftDrawResult) GetEnabled() bool {
	if x != nil {
		return x.Enabled
	}
	return false
}

func (x *LuckyGiftDrawResult) GetDrawId() string {
	if x != nil {
		return x.DrawId
	}
	return ""
}

func (x *LuckyGiftDrawResult) GetCommandId() string {
	if x != nil {
		return x.CommandId
	}
	return ""
}

func (x *LuckyGiftDrawResult) GetPoolId() string {
	if x != nil {
		return x.PoolId
	}
	return ""
}

func (x *LuckyGiftDrawResult) GetGiftId() string {
	if x != nil {
		return x.GiftId
	}
	return ""
}

func (x *LuckyGiftDrawResult) GetRuleVersion() int64 {
	if x != nil {
		return x.RuleVersion
	}
	return 0
}

func (x *LuckyGiftDrawResult) GetExperiencePool() string {
	if x != nil {
		return x.ExperiencePool
	}
	return ""
}

func (x *LuckyGiftDrawResult) GetSelectedTierId() string {
	if x != nil {
		return x.SelectedTierId
	}
	return ""
}

func (x *LuckyGiftDrawResult) GetMultiplierPpm() int64 {
	if x != nil {
		return x.MultiplierPpm
	}
	return 0
}

func (x *LuckyGiftDrawResult) GetBaseRewardCoins() int64 {
	if x != nil {
		return x.BaseRewardCoins
	}
	return 0
}

func (x *LuckyGiftDrawResult) GetEffectiveRewardCoins() int64 {
	if x != nil {
		return x.EffectiveRewardCoins
	}
	return 0
}

func (x *LuckyGiftDrawResult) GetRewardStatus() string {
	if x != nil {
		return x.RewardStatus
	}
	return ""
}

func (x *LuckyGiftDrawResult) GetStageFeedback() bool {
	if x != nil {
		return x.StageFeedback
	}
	return false
}

func (x *LuckyGiftDrawResult) GetHighMultiplier() bool {
	if x != nil {
		return x.HighMultiplier
	}
	return false
}

func (x *LuckyGiftDrawResult) GetCreatedAtMs() int64 {
	if x != nil {
		return x.CreatedAtMs
	}
	return 0
}

func (x *LuckyGiftDrawResult) GetWalletTransactionId() string {
	if x != nil {
		return x.WalletTransactionId
	}
	return ""
}

func (x *LuckyGiftDrawResult) GetCoinBalanceAfter() int64 {
	if x != nil {
		return x.CoinBalanceAfter
	}
	return 0
}

func (x *LuckyGiftDrawResult) GetTargetUserId() int64 {
	if x != nil {
		return x.TargetUserId
	}
	return 0
}

func (x *LuckyGiftDrawResult) GetHits() []*SendGiftLuckyHit {
	if x != nil {
		return x.Hits
	}
	return nil
}

// RoomRocketRewardItem 是后台配置给客户端展示的火箭奖励候选项。
type RoomRocketRewardItem struct {
	state           protoimpl.MessageState `protogen:"open.v1"`
	RewardItemId    string                 `protobuf:"bytes,1,opt,name=reward_item_id,json=rewardItemId,proto3" json:"reward_item_id,omitempty"`
	ResourceGroupId int64                  `protobuf:"varint,2,opt,name=resource_group_id,json=resourceGroupId,proto3" json:"resource_group_id,omitempty"`
	Weight          int64                  `protobuf:"varint,3,opt,name=weight,proto3" json:"weight,omitempty"`
	DisplayName     string                 `protobuf:"bytes,4,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
	IconUrl         string                 `protobuf:"bytes,5,opt,name=icon_url,json=iconUrl,proto3" json:"icon_url,omitempty"`
	// quantity 表示该奖项在一次火箭发射中最多发给多少个在房用户；为空或 0 时兼容旧配置按 1 份处理。
	Quantity      int64 `protobuf:"varint,6,opt,name=quantity,proto3" json:"quantity,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*RoomRocketRewardItem) ProtoMessage() {}

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

func (x *RoomRocketRewardItem) GetRewardItemId() string {
	if x != nil {
		return x.RewardItemId
	}
	return ""
}

func (x *RoomRocketRewardItem) GetResourceGroupId() int64 {
	if x != nil {
		return x.ResourceGroupId
	}
	return 0
}

func (x *RoomRocketRewardItem) GetWeight() int64 {
	if x != nil {
		return x.Weight
	}
	return 0
}

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

func (x *RoomRocketRewardItem) GetIconUrl() string {
	if x != nil {
		return x.IconUrl
	}
	return ""
}

func (x *RoomRocketRewardItem) GetQuantity() int64 {
	if x != nil {
		return x.Quantity
	}
	return 0
}

// RoomRocketLevel 暴露单个等级火箭的物料、阈值和三类奖励池。
type RoomRocketLevel struct {
	state              protoimpl.MessageState  `protogen:"open.v1"`
	Level              int32                   `protobuf:"varint,1,opt,name=level,proto3" json:"level,omitempty"`
	FuelThreshold      int64                   `protobuf:"varint,2,opt,name=fuel_threshold,json=fuelThreshold,proto3" json:"fuel_threshold,omitempty"`
	CoverUrl           string                  `protobuf:"bytes,3,opt,name=cover_url,json=coverUrl,proto3" json:"cover_url,omitempty"`
	AnimationUrl       string                  `protobuf:"bytes,4,opt,name=animation_url,json=animationUrl,proto3" json:"animation_url,omitempty"`
	LaunchAnimationUrl string                  `protobuf:"bytes,5,opt,name=launch_animation_url,json=launchAnimationUrl,proto3" json:"launch_animation_url,omitempty"`
	LaunchedImageUrl   string                  `protobuf:"bytes,6,opt,name=launched_image_url,json=launchedImageUrl,proto3" json:"launched_image_url,omitempty"`
	InRoomRewards      []*RoomRocketRewardItem `protobuf:"bytes,7,rep,name=in_room_rewards,json=inRoomRewards,proto3" json:"in_room_rewards,omitempty"`
	Top1Rewards        []*RoomRocketRewardItem `protobuf:"bytes,8,rep,name=top1_rewards,json=top1Rewards,proto3" json:"top1_rewards,omitempty"`
	IgniterRewards     []*RoomRocketRewardItem `protobuf:"bytes,9,rep,name=igniter_rewards,json=igniterRewards,proto3" json:"igniter_rewards,omitempty"`
	unknownFields      protoimpl.UnknownFields
	sizeCache          protoimpl.SizeCache
}

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

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

func (*RoomRocketLevel) ProtoMessage() {}

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

func (x *RoomRocketLevel) GetLevel() int32 {
	if x != nil {
		return x.Level
	}
	return 0
}

func (x *RoomRocketLevel) GetFuelThreshold() int64 {
	if x != nil {
		return x.FuelThreshold
	}
	return 0
}

func (x *RoomRocketLevel) GetCoverUrl() string {
	if x != nil {
		return x.CoverUrl
	}
	return ""
}

func (x *RoomRocketLevel) GetAnimationUrl() string {
	if x != nil {
		return x.AnimationUrl
	}
	return ""
}

func (x *RoomRocketLevel) GetLaunchAnimationUrl() string {
	if x != nil {
		return x.LaunchAnimationUrl
	}
	return ""
}

func (x *RoomRocketLevel) GetLaunchedImageUrl() string {
	if x != nil {
		return x.LaunchedImageUrl
	}
	return ""
}

func (x *RoomRocketLevel) GetInRoomRewards() []*RoomRocketRewardItem {
	if x != nil {
		return x.InRoomRewards
	}
	return nil
}

func (x *RoomRocketLevel) GetTop1Rewards() []*RoomRocketRewardItem {
	if x != nil {
		return x.Top1Rewards
	}
	return nil
}

func (x *RoomRocketLevel) GetIgniterRewards() []*RoomRocketRewardItem {
	if x != nil {
		return x.IgniterRewards
	}
	return nil
}

// RoomRocketRewardGrant 是一次火箭发射后给某个用户结算出的具体奖励。
type RoomRocketRewardGrant struct {
	state           protoimpl.MessageState `protogen:"open.v1"`
	RewardRole      string                 `protobuf:"bytes,1,opt,name=reward_role,json=rewardRole,proto3" json:"reward_role,omitempty"`
	UserId          int64                  `protobuf:"varint,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
	RewardItemId    string                 `protobuf:"bytes,3,opt,name=reward_item_id,json=rewardItemId,proto3" json:"reward_item_id,omitempty"`
	ResourceGroupId int64                  `protobuf:"varint,4,opt,name=resource_group_id,json=resourceGroupId,proto3" json:"resource_group_id,omitempty"`
	DisplayName     string                 `protobuf:"bytes,5,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
	IconUrl         string                 `protobuf:"bytes,6,opt,name=icon_url,json=iconUrl,proto3" json:"icon_url,omitempty"`
	GrantId         string                 `protobuf:"bytes,7,opt,name=grant_id,json=grantId,proto3" json:"grant_id,omitempty"`
	Status          string                 `protobuf:"bytes,8,opt,name=status,proto3" json:"status,omitempty"`
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

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

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

func (*RoomRocketRewardGrant) ProtoMessage() {}

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

func (x *RoomRocketRewardGrant) GetRewardRole() string {
	if x != nil {
		return x.RewardRole
	}
	return ""
}

func (x *RoomRocketRewardGrant) GetUserId() int64 {
	if x != nil {
		return x.UserId
	}
	return 0
}

func (x *RoomRocketRewardGrant) GetRewardItemId() string {
	if x != nil {
		return x.RewardItemId
	}
	return ""
}

func (x *RoomRocketRewardGrant) GetResourceGroupId() int64 {
	if x != nil {
		return x.ResourceGroupId
	}
	return 0
}

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

func (x *RoomRocketRewardGrant) GetIconUrl() string {
	if x != nil {
		return x.IconUrl
	}
	return ""
}

func (x *RoomRocketRewardGrant) GetGrantId() string {
	if x != nil {
		return x.GrantId
	}
	return ""
}

func (x *RoomRocketRewardGrant) GetStatus() string {
	if x != nil {
		return x.Status
	}
	return ""
}

// RoomRocketContribution 是当前火箭等级内的实际加燃料贡献累计。
type RoomRocketContribution struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	UserId        int64                  `protobuf:"varint,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
	Fuel          int64                  `protobuf:"varint,2,opt,name=fuel,proto3" json:"fuel,omitempty"`
	UpdatedAtMs   int64                  `protobuf:"varint,3,opt,name=updated_at_ms,json=updatedAtMs,proto3" json:"updated_at_ms,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*RoomRocketContribution) ProtoMessage() {}

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

func (x *RoomRocketContribution) GetUserId() int64 {
	if x != nil {
		return x.UserId
	}
	return 0
}

func (x *RoomRocketContribution) GetFuel() int64 {
	if x != nil {
		return x.Fuel
	}
	return 0
}

func (x *RoomRocketContribution) GetUpdatedAtMs() int64 {
	if x != nil {
		return x.UpdatedAtMs
	}
	return 0
}

// RoomRocketPendingLaunch 是已经点火、等待延迟发射的单枚火箭。
type RoomRocketPendingLaunch struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	RocketId      string                 `protobuf:"bytes,1,opt,name=rocket_id,json=rocketId,proto3" json:"rocket_id,omitempty"`
	Level         int32                  `protobuf:"varint,2,opt,name=level,proto3" json:"level,omitempty"`
	FuelThreshold int64                  `protobuf:"varint,3,opt,name=fuel_threshold,json=fuelThreshold,proto3" json:"fuel_threshold,omitempty"`
	IgnitedAtMs   int64                  `protobuf:"varint,4,opt,name=ignited_at_ms,json=ignitedAtMs,proto3" json:"ignited_at_ms,omitempty"`
	LaunchAtMs    int64                  `protobuf:"varint,5,opt,name=launch_at_ms,json=launchAtMs,proto3" json:"launch_at_ms,omitempty"`
	ResetAtMs     int64                  `protobuf:"varint,6,opt,name=reset_at_ms,json=resetAtMs,proto3" json:"reset_at_ms,omitempty"`
	Top1UserId    int64                  `protobuf:"varint,7,opt,name=top1_user_id,json=top1UserId,proto3" json:"top1_user_id,omitempty"`
	IgniterUserId int64                  `protobuf:"varint,8,opt,name=igniter_user_id,json=igniterUserId,proto3" json:"igniter_user_id,omitempty"`
	ConfigVersion int64                  `protobuf:"varint,9,opt,name=config_version,json=configVersion,proto3" json:"config_version,omitempty"`
	CoverUrl      string                 `protobuf:"bytes,10,opt,name=cover_url,json=coverUrl,proto3" json:"cover_url,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*RoomRocketPendingLaunch) ProtoMessage() {}

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

func (x *RoomRocketPendingLaunch) GetRocketId() string {
	if x != nil {
		return x.RocketId
	}
	return ""
}

func (x *RoomRocketPendingLaunch) GetLevel() int32 {
	if x != nil {
		return x.Level
	}
	return 0
}

func (x *RoomRocketPendingLaunch) GetFuelThreshold() int64 {
	if x != nil {
		return x.FuelThreshold
	}
	return 0
}

func (x *RoomRocketPendingLaunch) GetIgnitedAtMs() int64 {
	if x != nil {
		return x.IgnitedAtMs
	}
	return 0
}

func (x *RoomRocketPendingLaunch) GetLaunchAtMs() int64 {
	if x != nil {
		return x.LaunchAtMs
	}
	return 0
}

func (x *RoomRocketPendingLaunch) GetResetAtMs() int64 {
	if x != nil {
		return x.ResetAtMs
	}
	return 0
}

func (x *RoomRocketPendingLaunch) GetTop1UserId() int64 {
	if x != nil {
		return x.Top1UserId
	}
	return 0
}

func (x *RoomRocketPendingLaunch) GetIgniterUserId() int64 {
	if x != nil {
		return x.IgniterUserId
	}
	return 0
}

func (x *RoomRocketPendingLaunch) GetConfigVersion() int64 {
	if x != nil {
		return x.ConfigVersion
	}
	return 0
}

func (x *RoomRocketPendingLaunch) GetCoverUrl() string {
	if x != nil {
		return x.CoverUrl
	}
	return ""
}

// RoomRocketState 是 Room Cell 持有并随快照恢复的当前火箭状态。
type RoomRocketState struct {
	state                protoimpl.MessageState     `protogen:"open.v1"`
	CurrentLevel         int32                      `protobuf:"varint,1,opt,name=current_level,json=currentLevel,proto3" json:"current_level,omitempty"`
	CurrentFuel          int64                      `protobuf:"varint,2,opt,name=current_fuel,json=currentFuel,proto3" json:"current_fuel,omitempty"`
	FuelThreshold        int64                      `protobuf:"varint,3,opt,name=fuel_threshold,json=fuelThreshold,proto3" json:"fuel_threshold,omitempty"`
	Status               string                     `protobuf:"bytes,4,opt,name=status,proto3" json:"status,omitempty"`
	IgnitedAtMs          int64                      `protobuf:"varint,5,opt,name=ignited_at_ms,json=ignitedAtMs,proto3" json:"ignited_at_ms,omitempty"`
	LaunchAtMs           int64                      `protobuf:"varint,6,opt,name=launch_at_ms,json=launchAtMs,proto3" json:"launch_at_ms,omitempty"`
	LaunchedAtMs         int64                      `protobuf:"varint,7,opt,name=launched_at_ms,json=launchedAtMs,proto3" json:"launched_at_ms,omitempty"`
	ResetAtMs            int64                      `protobuf:"varint,8,opt,name=reset_at_ms,json=resetAtMs,proto3" json:"reset_at_ms,omitempty"`
	Top1UserId           int64                      `protobuf:"varint,9,opt,name=top1_user_id,json=top1UserId,proto3" json:"top1_user_id,omitempty"`
	IgniterUserId        int64                      `protobuf:"varint,10,opt,name=igniter_user_id,json=igniterUserId,proto3" json:"igniter_user_id,omitempty"`
	RocketId             string                     `protobuf:"bytes,11,opt,name=rocket_id,json=rocketId,proto3" json:"rocket_id,omitempty"`
	ConfigVersion        int64                      `protobuf:"varint,12,opt,name=config_version,json=configVersion,proto3" json:"config_version,omitempty"`
	LastRewards          []*RoomRocketRewardGrant   `protobuf:"bytes,13,rep,name=last_rewards,json=lastRewards,proto3" json:"last_rewards,omitempty"`
	PendingLaunches      []*RoomRocketPendingLaunch `protobuf:"bytes,14,rep,name=pending_launches,json=pendingLaunches,proto3" json:"pending_launches,omitempty"`
	CurrentContributions []*RoomRocketContribution  `protobuf:"bytes,15,rep,name=current_contributions,json=currentContributions,proto3" json:"current_contributions,omitempty"`
	unknownFields        protoimpl.UnknownFields
	sizeCache            protoimpl.SizeCache
}

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

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

func (*RoomRocketState) ProtoMessage() {}

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

func (x *RoomRocketState) GetCurrentLevel() int32 {
	if x != nil {
		return x.CurrentLevel
	}
	return 0
}

func (x *RoomRocketState) GetCurrentFuel() int64 {
	if x != nil {
		return x.CurrentFuel
	}
	return 0
}

func (x *RoomRocketState) GetFuelThreshold() int64 {
	if x != nil {
		return x.FuelThreshold
	}
	return 0
}

func (x *RoomRocketState) GetStatus() string {
	if x != nil {
		return x.Status
	}
	return ""
}

func (x *RoomRocketState) GetIgnitedAtMs() int64 {
	if x != nil {
		return x.IgnitedAtMs
	}
	return 0
}

func (x *RoomRocketState) GetLaunchAtMs() int64 {
	if x != nil {
		return x.LaunchAtMs
	}
	return 0
}

func (x *RoomRocketState) GetLaunchedAtMs() int64 {
	if x != nil {
		return x.LaunchedAtMs
	}
	return 0
}

func (x *RoomRocketState) GetResetAtMs() int64 {
	if x != nil {
		return x.ResetAtMs
	}
	return 0
}

func (x *RoomRocketState) GetTop1UserId() int64 {
	if x != nil {
		return x.Top1UserId
	}
	return 0
}

func (x *RoomRocketState) GetIgniterUserId() int64 {
	if x != nil {
		return x.IgniterUserId
	}
	return 0
}

func (x *RoomRocketState) GetRocketId() string {
	if x != nil {
		return x.RocketId
	}
	return ""
}

func (x *RoomRocketState) GetConfigVersion() int64 {
	if x != nil {
		return x.ConfigVersion
	}
	return 0
}

func (x *RoomRocketState) GetLastRewards() []*RoomRocketRewardGrant {
	if x != nil {
		return x.LastRewards
	}
	return nil
}

func (x *RoomRocketState) GetPendingLaunches() []*RoomRocketPendingLaunch {
	if x != nil {
		return x.PendingLaunches
	}
	return nil
}

func (x *RoomRocketState) GetCurrentContributions() []*RoomRocketContribution {
	if x != nil {
		return x.CurrentContributions
	}
	return nil
}

// RoomRocketInfo 是 App 初始化火箭 UI 的完整读模型。
type RoomRocketInfo struct {
	state             protoimpl.MessageState `protogen:"open.v1"`
	Enabled           bool                   `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"`
	Levels            []*RoomRocketLevel     `protobuf:"bytes,2,rep,name=levels,proto3" json:"levels,omitempty"`
	State             *RoomRocketState       `protobuf:"bytes,3,opt,name=state,proto3" json:"state,omitempty"`
	ServerTimeMs      int64                  `protobuf:"varint,4,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"`
	BroadcastScope    string                 `protobuf:"bytes,5,opt,name=broadcast_scope,json=broadcastScope,proto3" json:"broadcast_scope,omitempty"`
	LaunchDelayMs     int64                  `protobuf:"varint,6,opt,name=launch_delay_ms,json=launchDelayMs,proto3" json:"launch_delay_ms,omitempty"`
	BroadcastDelayMs  int64                  `protobuf:"varint,7,opt,name=broadcast_delay_ms,json=broadcastDelayMs,proto3" json:"broadcast_delay_ms,omitempty"`
	RewardStackPolicy string                 `protobuf:"bytes,8,opt,name=reward_stack_policy,json=rewardStackPolicy,proto3" json:"reward_stack_policy,omitempty"`
	unknownFields     protoimpl.UnknownFields
	sizeCache         protoimpl.SizeCache
}

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

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

func (*RoomRocketInfo) ProtoMessage() {}

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

func (x *RoomRocketInfo) GetEnabled() bool {
	if x != nil {
		return x.Enabled
	}
	return false
}

func (x *RoomRocketInfo) GetLevels() []*RoomRocketLevel {
	if x != nil {
		return x.Levels
	}
	return nil
}

func (x *RoomRocketInfo) GetState() *RoomRocketState {
	if x != nil {
		return x.State
	}
	return nil
}

func (x *RoomRocketInfo) GetServerTimeMs() int64 {
	if x != nil {
		return x.ServerTimeMs
	}
	return 0
}

func (x *RoomRocketInfo) GetBroadcastScope() string {
	if x != nil {
		return x.BroadcastScope
	}
	return ""
}

func (x *RoomRocketInfo) GetLaunchDelayMs() int64 {
	if x != nil {
		return x.LaunchDelayMs
	}
	return 0
}

func (x *RoomRocketInfo) GetBroadcastDelayMs() int64 {
	if x != nil {
		return x.BroadcastDelayMs
	}
	return 0
}

func (x *RoomRocketInfo) GetRewardStackPolicy() string {
	if x != nil {
		return x.RewardStackPolicy
	}
	return ""
}

// RoomRocketGiftFuelRule 是后台配置的礼物燃料覆盖规则。
type RoomRocketGiftFuelRule struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	RuleId        string                 `protobuf:"bytes,1,opt,name=rule_id,json=ruleId,proto3" json:"rule_id,omitempty"`
	GiftId        string                 `protobuf:"bytes,2,opt,name=gift_id,json=giftId,proto3" json:"gift_id,omitempty"`
	GiftTypeCode  string                 `protobuf:"bytes,3,opt,name=gift_type_code,json=giftTypeCode,proto3" json:"gift_type_code,omitempty"`
	MultiplierPpm int64                  `protobuf:"varint,4,opt,name=multiplier_ppm,json=multiplierPpm,proto3" json:"multiplier_ppm,omitempty"`
	FixedFuel     int64                  `protobuf:"varint,5,opt,name=fixed_fuel,json=fixedFuel,proto3" json:"fixed_fuel,omitempty"`
	Excluded      bool                   `protobuf:"varint,6,opt,name=excluded,proto3" json:"excluded,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*RoomRocketGiftFuelRule) ProtoMessage() {}

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

func (x *RoomRocketGiftFuelRule) GetRuleId() string {
	if x != nil {
		return x.RuleId
	}
	return ""
}

func (x *RoomRocketGiftFuelRule) GetGiftId() string {
	if x != nil {
		return x.GiftId
	}
	return ""
}

func (x *RoomRocketGiftFuelRule) GetGiftTypeCode() string {
	if x != nil {
		return x.GiftTypeCode
	}
	return ""
}

func (x *RoomRocketGiftFuelRule) GetMultiplierPpm() int64 {
	if x != nil {
		return x.MultiplierPpm
	}
	return 0
}

func (x *RoomRocketGiftFuelRule) GetFixedFuel() int64 {
	if x != nil {
		return x.FixedFuel
	}
	return 0
}

func (x *RoomRocketGiftFuelRule) GetExcluded() bool {
	if x != nil {
		return x.Excluded
	}
	return false
}

// AdminRoomRocketConfig 是后台管理读写的完整火箭配置。
type AdminRoomRocketConfig struct {
	state             protoimpl.MessageState    `protogen:"open.v1"`
	AppCode           string                    `protobuf:"bytes,1,opt,name=app_code,json=appCode,proto3" json:"app_code,omitempty"`
	Enabled           bool                      `protobuf:"varint,2,opt,name=enabled,proto3" json:"enabled,omitempty"`
	ConfigVersion     int64                     `protobuf:"varint,3,opt,name=config_version,json=configVersion,proto3" json:"config_version,omitempty"`
	FuelSource        string                    `protobuf:"bytes,4,opt,name=fuel_source,json=fuelSource,proto3" json:"fuel_source,omitempty"`
	LaunchDelayMs     int64                     `protobuf:"varint,5,opt,name=launch_delay_ms,json=launchDelayMs,proto3" json:"launch_delay_ms,omitempty"`
	BroadcastEnabled  bool                      `protobuf:"varint,6,opt,name=broadcast_enabled,json=broadcastEnabled,proto3" json:"broadcast_enabled,omitempty"`
	BroadcastScope    string                    `protobuf:"bytes,7,opt,name=broadcast_scope,json=broadcastScope,proto3" json:"broadcast_scope,omitempty"`
	BroadcastDelayMs  int64                     `protobuf:"varint,8,opt,name=broadcast_delay_ms,json=broadcastDelayMs,proto3" json:"broadcast_delay_ms,omitempty"`
	RewardStackPolicy string                    `protobuf:"bytes,9,opt,name=reward_stack_policy,json=rewardStackPolicy,proto3" json:"reward_stack_policy,omitempty"`
	Levels            []*RoomRocketLevel        `protobuf:"bytes,10,rep,name=levels,proto3" json:"levels,omitempty"`
	GiftFuelRules     []*RoomRocketGiftFuelRule `protobuf:"bytes,11,rep,name=gift_fuel_rules,json=giftFuelRules,proto3" json:"gift_fuel_rules,omitempty"`
	UpdatedByAdminId  int64                     `protobuf:"varint,12,opt,name=updated_by_admin_id,json=updatedByAdminId,proto3" json:"updated_by_admin_id,omitempty"`
	CreatedAtMs       int64                     `protobuf:"varint,13,opt,name=created_at_ms,json=createdAtMs,proto3" json:"created_at_ms,omitempty"`
	UpdatedAtMs       int64                     `protobuf:"varint,14,opt,name=updated_at_ms,json=updatedAtMs,proto3" json:"updated_at_ms,omitempty"`
	unknownFields     protoimpl.UnknownFields
	sizeCache         protoimpl.SizeCache
}

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

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

func (*AdminRoomRocketConfig) ProtoMessage() {}

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

// Deprecated: Use AdminRoomRocketConfig.ProtoReflect.Descriptor instead.
func (*AdminRoomRocketConfig) Descriptor() ([]byte, []int) {
	return file_proto_room_v1_room_proto_rawDescGZIP(), []int{16}
}

func (x *AdminRoomRocketConfig) GetAppCode() string {
	if x != nil {
		return x.AppCode
	}
	return ""
}

func (x *AdminRoomRocketConfig) GetEnabled() bool {
	if x != nil {
		return x.Enabled
	}
	return false
}

func (x *AdminRoomRocketConfig) GetConfigVersion() int64 {
	if x != nil {
		return x.ConfigVersion
	}
	return 0
}

func (x *AdminRoomRocketConfig) GetFuelSource() string {
	if x != nil {
		return x.FuelSource
	}
	return ""
}

func (x *AdminRoomRocketConfig) GetLaunchDelayMs() int64 {
	if x != nil {
		return x.LaunchDelayMs
	}
	return 0
}

func (x *AdminRoomRocketConfig) GetBroadcastEnabled() bool {
	if x != nil {
		return x.BroadcastEnabled
	}
	return false
}

func (x *AdminRoomRocketConfig) GetBroadcastScope() string {
	if x != nil {
		return x.BroadcastScope
	}
	return ""
}

func (x *AdminRoomRocketConfig) GetBroadcastDelayMs() int64 {
	if x != nil {
		return x.BroadcastDelayMs
	}
	return 0
}

func (x *AdminRoomRocketConfig) GetRewardStackPolicy() string {
	if x != nil {
		return x.RewardStackPolicy
	}
	return ""
}

func (x *AdminRoomRocketConfig) GetLevels() []*RoomRocketLevel {
	if x != nil {
		return x.Levels
	}
	return nil
}

func (x *AdminRoomRocketConfig) GetGiftFuelRules() []*RoomRocketGiftFuelRule {
	if x != nil {
		return x.GiftFuelRules
	}
	return nil
}

func (x *AdminRoomRocketConfig) GetUpdatedByAdminId() int64 {
	if x != nil {
		return x.UpdatedByAdminId
	}
	return 0
}

func (x *AdminRoomRocketConfig) GetCreatedAtMs() int64 {
	if x != nil {
		return x.CreatedAtMs
	}
	return 0
}

func (x *AdminRoomRocketConfig) GetUpdatedAtMs() int64 {
	if x != nil {
		return x.UpdatedAtMs
	}
	return 0
}

type AdminGetRoomRocketConfigRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Meta          *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*AdminGetRoomRocketConfigRequest) ProtoMessage() {}

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

// Deprecated: Use AdminGetRoomRocketConfigRequest.ProtoReflect.Descriptor instead.
func (*AdminGetRoomRocketConfigRequest) Descriptor() ([]byte, []int) {
	return file_proto_room_v1_room_proto_rawDescGZIP(), []int{17}
}

func (x *AdminGetRoomRocketConfigRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

type AdminGetRoomRocketConfigResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Config        *AdminRoomRocketConfig `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"`
	ServerTimeMs  int64                  `protobuf:"varint,2,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*AdminGetRoomRocketConfigResponse) ProtoMessage() {}

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

// Deprecated: Use AdminGetRoomRocketConfigResponse.ProtoReflect.Descriptor instead.
func (*AdminGetRoomRocketConfigResponse) Descriptor() ([]byte, []int) {
	return file_proto_room_v1_room_proto_rawDescGZIP(), []int{18}
}

func (x *AdminGetRoomRocketConfigResponse) GetConfig() *AdminRoomRocketConfig {
	if x != nil {
		return x.Config
	}
	return nil
}

func (x *AdminGetRoomRocketConfigResponse) GetServerTimeMs() int64 {
	if x != nil {
		return x.ServerTimeMs
	}
	return 0
}

type AdminUpdateRoomRocketConfigRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Meta          *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	Config        *AdminRoomRocketConfig `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"`
	AdminId       int64                  `protobuf:"varint,3,opt,name=admin_id,json=adminId,proto3" json:"admin_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*AdminUpdateRoomRocketConfigRequest) ProtoMessage() {}

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

// Deprecated: Use AdminUpdateRoomRocketConfigRequest.ProtoReflect.Descriptor instead.
func (*AdminUpdateRoomRocketConfigRequest) Descriptor() ([]byte, []int) {
	return file_proto_room_v1_room_proto_rawDescGZIP(), []int{19}
}

func (x *AdminUpdateRoomRocketConfigRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *AdminUpdateRoomRocketConfigRequest) GetConfig() *AdminRoomRocketConfig {
	if x != nil {
		return x.Config
	}
	return nil
}

func (x *AdminUpdateRoomRocketConfigRequest) GetAdminId() int64 {
	if x != nil {
		return x.AdminId
	}
	return 0
}

type AdminUpdateRoomRocketConfigResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Config        *AdminRoomRocketConfig `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"`
	ServerTimeMs  int64                  `protobuf:"varint,2,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AdminUpdateRoomRocketConfigResponse) Reset() {
	*x = AdminUpdateRoomRocketConfigResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[20]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AdminUpdateRoomRocketConfigResponse) ProtoMessage() {}

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

func (x *AdminUpdateRoomRocketConfigResponse) GetConfig() *AdminRoomRocketConfig {
	if x != nil {
		return x.Config
	}
	return nil
}

func (x *AdminUpdateRoomRocketConfigResponse) GetServerTimeMs() int64 {
	if x != nil {
		return x.ServerTimeMs
	}
	return 0
}

type AdminRoomSeatConfig struct {
	state               protoimpl.MessageState `protogen:"open.v1"`
	CandidateSeatCounts []int32                `protobuf:"varint,1,rep,packed,name=candidate_seat_counts,json=candidateSeatCounts,proto3" json:"candidate_seat_counts,omitempty"`
	AllowedSeatCounts   []int32                `protobuf:"varint,2,rep,packed,name=allowed_seat_counts,json=allowedSeatCounts,proto3" json:"allowed_seat_counts,omitempty"`
	DefaultSeatCount    int32                  `protobuf:"varint,3,opt,name=default_seat_count,json=defaultSeatCount,proto3" json:"default_seat_count,omitempty"`
	UpdatedAtMs         int64                  `protobuf:"varint,4,opt,name=updated_at_ms,json=updatedAtMs,proto3" json:"updated_at_ms,omitempty"`
	unknownFields       protoimpl.UnknownFields
	sizeCache           protoimpl.SizeCache
}

func (x *AdminRoomSeatConfig) Reset() {
	*x = AdminRoomSeatConfig{}
	mi := &file_proto_room_v1_room_proto_msgTypes[21]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AdminRoomSeatConfig) ProtoMessage() {}

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

func (x *AdminRoomSeatConfig) GetCandidateSeatCounts() []int32 {
	if x != nil {
		return x.CandidateSeatCounts
	}
	return nil
}

func (x *AdminRoomSeatConfig) GetAllowedSeatCounts() []int32 {
	if x != nil {
		return x.AllowedSeatCounts
	}
	return nil
}

func (x *AdminRoomSeatConfig) GetDefaultSeatCount() int32 {
	if x != nil {
		return x.DefaultSeatCount
	}
	return 0
}

func (x *AdminRoomSeatConfig) GetUpdatedAtMs() int64 {
	if x != nil {
		return x.UpdatedAtMs
	}
	return 0
}

type AdminGetRoomSeatConfigRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Meta          *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AdminGetRoomSeatConfigRequest) Reset() {
	*x = AdminGetRoomSeatConfigRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[22]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AdminGetRoomSeatConfigRequest) ProtoMessage() {}

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

func (x *AdminGetRoomSeatConfigRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

type AdminGetRoomSeatConfigResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Config        *AdminRoomSeatConfig   `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"`
	ServerTimeMs  int64                  `protobuf:"varint,2,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AdminGetRoomSeatConfigResponse) Reset() {
	*x = AdminGetRoomSeatConfigResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[23]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AdminGetRoomSeatConfigResponse) ProtoMessage() {}

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

func (x *AdminGetRoomSeatConfigResponse) GetConfig() *AdminRoomSeatConfig {
	if x != nil {
		return x.Config
	}
	return nil
}

func (x *AdminGetRoomSeatConfigResponse) GetServerTimeMs() int64 {
	if x != nil {
		return x.ServerTimeMs
	}
	return 0
}

type AdminUpdateRoomSeatConfigRequest struct {
	state             protoimpl.MessageState `protogen:"open.v1"`
	Meta              *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	AllowedSeatCounts []int32                `protobuf:"varint,2,rep,packed,name=allowed_seat_counts,json=allowedSeatCounts,proto3" json:"allowed_seat_counts,omitempty"`
	DefaultSeatCount  int32                  `protobuf:"varint,3,opt,name=default_seat_count,json=defaultSeatCount,proto3" json:"default_seat_count,omitempty"`
	unknownFields     protoimpl.UnknownFields
	sizeCache         protoimpl.SizeCache
}

func (x *AdminUpdateRoomSeatConfigRequest) Reset() {
	*x = AdminUpdateRoomSeatConfigRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[24]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AdminUpdateRoomSeatConfigRequest) ProtoMessage() {}

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

func (x *AdminUpdateRoomSeatConfigRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *AdminUpdateRoomSeatConfigRequest) GetAllowedSeatCounts() []int32 {
	if x != nil {
		return x.AllowedSeatCounts
	}
	return nil
}

func (x *AdminUpdateRoomSeatConfigRequest) GetDefaultSeatCount() int32 {
	if x != nil {
		return x.DefaultSeatCount
	}
	return 0
}

type AdminUpdateRoomSeatConfigResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Config        *AdminRoomSeatConfig   `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"`
	ServerTimeMs  int64                  `protobuf:"varint,2,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AdminUpdateRoomSeatConfigResponse) Reset() {
	*x = AdminUpdateRoomSeatConfigResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[25]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AdminUpdateRoomSeatConfigResponse) ProtoMessage() {}

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

func (x *AdminUpdateRoomSeatConfigResponse) GetConfig() *AdminRoomSeatConfig {
	if x != nil {
		return x.Config
	}
	return nil
}

func (x *AdminUpdateRoomSeatConfigResponse) GetServerTimeMs() int64 {
	if x != nil {
		return x.ServerTimeMs
	}
	return 0
}

type AdminHumanRoomRobotCountryPool struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	CountryCode   string                 `protobuf:"bytes,1,opt,name=country_code,json=countryCode,proto3" json:"country_code,omitempty"`
	RobotUserIds  []int64                `protobuf:"varint,2,rep,packed,name=robot_user_ids,json=robotUserIds,proto3" json:"robot_user_ids,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AdminHumanRoomRobotCountryPool) Reset() {
	*x = AdminHumanRoomRobotCountryPool{}
	mi := &file_proto_room_v1_room_proto_msgTypes[26]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AdminHumanRoomRobotCountryPool) ProtoMessage() {}

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

func (x *AdminHumanRoomRobotCountryPool) GetCountryCode() string {
	if x != nil {
		return x.CountryCode
	}
	return ""
}

func (x *AdminHumanRoomRobotCountryPool) GetRobotUserIds() []int64 {
	if x != nil {
		return x.RobotUserIds
	}
	return nil
}

type AdminHumanRoomRobotCountryRule struct {
	state        protoimpl.MessageState `protogen:"open.v1"`
	CountryCode  string                 `protobuf:"bytes,1,opt,name=country_code,json=countryCode,proto3" json:"country_code,omitempty"`
	MaxRoomCount int32                  `protobuf:"varint,2,opt,name=max_room_count,json=maxRoomCount,proto3" json:"max_room_count,omitempty"`
	// allowed_owner_ids 为空表示该国家扫描所有真人房；非空时只扫描房主展示短号/内部 owner_user_id 命中的房间。
	AllowedOwnerIds []string `protobuf:"bytes,3,rep,name=allowed_owner_ids,json=allowedOwnerIds,proto3" json:"allowed_owner_ids,omitempty"`
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

func (x *AdminHumanRoomRobotCountryRule) Reset() {
	*x = AdminHumanRoomRobotCountryRule{}
	mi := &file_proto_room_v1_room_proto_msgTypes[27]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AdminHumanRoomRobotCountryRule) ProtoMessage() {}

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

func (x *AdminHumanRoomRobotCountryRule) GetCountryCode() string {
	if x != nil {
		return x.CountryCode
	}
	return ""
}

func (x *AdminHumanRoomRobotCountryRule) GetMaxRoomCount() int32 {
	if x != nil {
		return x.MaxRoomCount
	}
	return 0
}

func (x *AdminHumanRoomRobotCountryRule) GetAllowedOwnerIds() []string {
	if x != nil {
		return x.AllowedOwnerIds
	}
	return nil
}

type AdminHumanRoomRobotConfig struct {
	state                   protoimpl.MessageState            `protogen:"open.v1"`
	AppCode                 string                            `protobuf:"bytes,1,opt,name=app_code,json=appCode,proto3" json:"app_code,omitempty"`
	Enabled                 bool                              `protobuf:"varint,2,opt,name=enabled,proto3" json:"enabled,omitempty"`
	CandidateRoomMaxOnline  int32                             `protobuf:"varint,3,opt,name=candidate_room_max_online,json=candidateRoomMaxOnline,proto3" json:"candidate_room_max_online,omitempty"`
	RoomFullStopOnline      int32                             `protobuf:"varint,4,opt,name=room_full_stop_online,json=roomFullStopOnline,proto3" json:"room_full_stop_online,omitempty"`
	RobotStayMinMs          int64                             `protobuf:"varint,5,opt,name=robot_stay_min_ms,json=robotStayMinMs,proto3" json:"robot_stay_min_ms,omitempty"`
	RobotStayMaxMs          int64                             `protobuf:"varint,6,opt,name=robot_stay_max_ms,json=robotStayMaxMs,proto3" json:"robot_stay_max_ms,omitempty"`
	RobotReplaceMinMs       int64                             `protobuf:"varint,7,opt,name=robot_replace_min_ms,json=robotReplaceMinMs,proto3" json:"robot_replace_min_ms,omitempty"`
	RobotReplaceMaxMs       int64                             `protobuf:"varint,8,opt,name=robot_replace_max_ms,json=robotReplaceMaxMs,proto3" json:"robot_replace_max_ms,omitempty"`
	NormalGiftIntervalMs    int64                             `protobuf:"varint,9,opt,name=normal_gift_interval_ms,json=normalGiftIntervalMs,proto3" json:"normal_gift_interval_ms,omitempty"`
	GiftIds                 []string                          `protobuf:"bytes,10,rep,name=gift_ids,json=giftIds,proto3" json:"gift_ids,omitempty"`
	LuckyGiftIds            []string                          `protobuf:"bytes,11,rep,name=lucky_gift_ids,json=luckyGiftIds,proto3" json:"lucky_gift_ids,omitempty"`
	SuperLuckyGiftIds       []string                          `protobuf:"bytes,12,rep,name=super_lucky_gift_ids,json=superLuckyGiftIds,proto3" json:"super_lucky_gift_ids,omitempty"`
	LuckyComboMin           int64                             `protobuf:"varint,13,opt,name=lucky_combo_min,json=luckyComboMin,proto3" json:"lucky_combo_min,omitempty"`
	LuckyComboMax           int64                             `protobuf:"varint,14,opt,name=lucky_combo_max,json=luckyComboMax,proto3" json:"lucky_combo_max,omitempty"`
	LuckyPauseMinMs         int64                             `protobuf:"varint,15,opt,name=lucky_pause_min_ms,json=luckyPauseMinMs,proto3" json:"lucky_pause_min_ms,omitempty"`
	LuckyPauseMaxMs         int64                             `protobuf:"varint,16,opt,name=lucky_pause_max_ms,json=luckyPauseMaxMs,proto3" json:"lucky_pause_max_ms,omitempty"`
	MaxGiftSenders          int64                             `protobuf:"varint,17,opt,name=max_gift_senders,json=maxGiftSenders,proto3" json:"max_gift_senders,omitempty"`
	CountryPools            []*AdminHumanRoomRobotCountryPool `protobuf:"bytes,18,rep,name=country_pools,json=countryPools,proto3" json:"country_pools,omitempty"`
	UpdatedByAdminId        uint64                            `protobuf:"varint,19,opt,name=updated_by_admin_id,json=updatedByAdminId,proto3" json:"updated_by_admin_id,omitempty"`
	CreatedAtMs             int64                             `protobuf:"varint,20,opt,name=created_at_ms,json=createdAtMs,proto3" json:"created_at_ms,omitempty"`
	UpdatedAtMs             int64                             `protobuf:"varint,21,opt,name=updated_at_ms,json=updatedAtMs,proto3" json:"updated_at_ms,omitempty"`
	NormalGiftIntervalMinMs int64                             `protobuf:"varint,22,opt,name=normal_gift_interval_min_ms,json=normalGiftIntervalMinMs,proto3" json:"normal_gift_interval_min_ms,omitempty"`
	NormalGiftIntervalMaxMs int64                             `protobuf:"varint,23,opt,name=normal_gift_interval_max_ms,json=normalGiftIntervalMaxMs,proto3" json:"normal_gift_interval_max_ms,omitempty"`
	RoomTargetMinOnline     int32                             `protobuf:"varint,24,opt,name=room_target_min_online,json=roomTargetMinOnline,proto3" json:"room_target_min_online,omitempty"`
	RoomTargetMaxOnline     int32                             `protobuf:"varint,25,opt,name=room_target_max_online,json=roomTargetMaxOnline,proto3" json:"room_target_max_online,omitempty"`
	// allowed_owner_ids 为空表示扫描所有真人房；非空时只扫描房主展示短号/内部 owner_user_id 命中的房间。
	AllowedOwnerIds []string `protobuf:"bytes,26,rep,name=allowed_owner_ids,json=allowedOwnerIds,proto3" json:"allowed_owner_ids,omitempty"`
	// country_limit_enabled 打开后只按 country_rules 中配置的国家进真人房。
	CountryLimitEnabled bool `protobuf:"varint,27,opt,name=country_limit_enabled,json=countryLimitEnabled,proto3" json:"country_limit_enabled,omitempty"`
	// country_rules 配置每个国家最多同时进入几个真人房；空集合表示不进入任何国家。
	CountryRules  []*AdminHumanRoomRobotCountryRule `protobuf:"bytes,28,rep,name=country_rules,json=countryRules,proto3" json:"country_rules,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AdminHumanRoomRobotConfig) Reset() {
	*x = AdminHumanRoomRobotConfig{}
	mi := &file_proto_room_v1_room_proto_msgTypes[28]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AdminHumanRoomRobotConfig) ProtoMessage() {}

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

func (x *AdminHumanRoomRobotConfig) GetAppCode() string {
	if x != nil {
		return x.AppCode
	}
	return ""
}

func (x *AdminHumanRoomRobotConfig) GetEnabled() bool {
	if x != nil {
		return x.Enabled
	}
	return false
}

func (x *AdminHumanRoomRobotConfig) GetCandidateRoomMaxOnline() int32 {
	if x != nil {
		return x.CandidateRoomMaxOnline
	}
	return 0
}

func (x *AdminHumanRoomRobotConfig) GetRoomFullStopOnline() int32 {
	if x != nil {
		return x.RoomFullStopOnline
	}
	return 0
}

func (x *AdminHumanRoomRobotConfig) GetRobotStayMinMs() int64 {
	if x != nil {
		return x.RobotStayMinMs
	}
	return 0
}

func (x *AdminHumanRoomRobotConfig) GetRobotStayMaxMs() int64 {
	if x != nil {
		return x.RobotStayMaxMs
	}
	return 0
}

func (x *AdminHumanRoomRobotConfig) GetRobotReplaceMinMs() int64 {
	if x != nil {
		return x.RobotReplaceMinMs
	}
	return 0
}

func (x *AdminHumanRoomRobotConfig) GetRobotReplaceMaxMs() int64 {
	if x != nil {
		return x.RobotReplaceMaxMs
	}
	return 0
}

func (x *AdminHumanRoomRobotConfig) GetNormalGiftIntervalMs() int64 {
	if x != nil {
		return x.NormalGiftIntervalMs
	}
	return 0
}

func (x *AdminHumanRoomRobotConfig) GetGiftIds() []string {
	if x != nil {
		return x.GiftIds
	}
	return nil
}

func (x *AdminHumanRoomRobotConfig) GetLuckyGiftIds() []string {
	if x != nil {
		return x.LuckyGiftIds
	}
	return nil
}

func (x *AdminHumanRoomRobotConfig) GetSuperLuckyGiftIds() []string {
	if x != nil {
		return x.SuperLuckyGiftIds
	}
	return nil
}

func (x *AdminHumanRoomRobotConfig) GetLuckyComboMin() int64 {
	if x != nil {
		return x.LuckyComboMin
	}
	return 0
}

func (x *AdminHumanRoomRobotConfig) GetLuckyComboMax() int64 {
	if x != nil {
		return x.LuckyComboMax
	}
	return 0
}

func (x *AdminHumanRoomRobotConfig) GetLuckyPauseMinMs() int64 {
	if x != nil {
		return x.LuckyPauseMinMs
	}
	return 0
}

func (x *AdminHumanRoomRobotConfig) GetLuckyPauseMaxMs() int64 {
	if x != nil {
		return x.LuckyPauseMaxMs
	}
	return 0
}

func (x *AdminHumanRoomRobotConfig) GetMaxGiftSenders() int64 {
	if x != nil {
		return x.MaxGiftSenders
	}
	return 0
}

func (x *AdminHumanRoomRobotConfig) GetCountryPools() []*AdminHumanRoomRobotCountryPool {
	if x != nil {
		return x.CountryPools
	}
	return nil
}

func (x *AdminHumanRoomRobotConfig) GetUpdatedByAdminId() uint64 {
	if x != nil {
		return x.UpdatedByAdminId
	}
	return 0
}

func (x *AdminHumanRoomRobotConfig) GetCreatedAtMs() int64 {
	if x != nil {
		return x.CreatedAtMs
	}
	return 0
}

func (x *AdminHumanRoomRobotConfig) GetUpdatedAtMs() int64 {
	if x != nil {
		return x.UpdatedAtMs
	}
	return 0
}

func (x *AdminHumanRoomRobotConfig) GetNormalGiftIntervalMinMs() int64 {
	if x != nil {
		return x.NormalGiftIntervalMinMs
	}
	return 0
}

func (x *AdminHumanRoomRobotConfig) GetNormalGiftIntervalMaxMs() int64 {
	if x != nil {
		return x.NormalGiftIntervalMaxMs
	}
	return 0
}

func (x *AdminHumanRoomRobotConfig) GetRoomTargetMinOnline() int32 {
	if x != nil {
		return x.RoomTargetMinOnline
	}
	return 0
}

func (x *AdminHumanRoomRobotConfig) GetRoomTargetMaxOnline() int32 {
	if x != nil {
		return x.RoomTargetMaxOnline
	}
	return 0
}

func (x *AdminHumanRoomRobotConfig) GetAllowedOwnerIds() []string {
	if x != nil {
		return x.AllowedOwnerIds
	}
	return nil
}

func (x *AdminHumanRoomRobotConfig) GetCountryLimitEnabled() bool {
	if x != nil {
		return x.CountryLimitEnabled
	}
	return false
}

func (x *AdminHumanRoomRobotConfig) GetCountryRules() []*AdminHumanRoomRobotCountryRule {
	if x != nil {
		return x.CountryRules
	}
	return nil
}

type AdminGetHumanRoomRobotConfigRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Meta          *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AdminGetHumanRoomRobotConfigRequest) Reset() {
	*x = AdminGetHumanRoomRobotConfigRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[29]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AdminGetHumanRoomRobotConfigRequest) ProtoMessage() {}

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

func (x *AdminGetHumanRoomRobotConfigRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

type AdminGetHumanRoomRobotConfigResponse struct {
	state         protoimpl.MessageState     `protogen:"open.v1"`
	Config        *AdminHumanRoomRobotConfig `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"`
	ServerTimeMs  int64                      `protobuf:"varint,2,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AdminGetHumanRoomRobotConfigResponse) Reset() {
	*x = AdminGetHumanRoomRobotConfigResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[30]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AdminGetHumanRoomRobotConfigResponse) ProtoMessage() {}

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

func (x *AdminGetHumanRoomRobotConfigResponse) GetConfig() *AdminHumanRoomRobotConfig {
	if x != nil {
		return x.Config
	}
	return nil
}

func (x *AdminGetHumanRoomRobotConfigResponse) GetServerTimeMs() int64 {
	if x != nil {
		return x.ServerTimeMs
	}
	return 0
}

type AdminUpdateHumanRoomRobotConfigRequest struct {
	state         protoimpl.MessageState     `protogen:"open.v1"`
	Meta          *RequestMeta               `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	Config        *AdminHumanRoomRobotConfig `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"`
	AdminId       uint64                     `protobuf:"varint,3,opt,name=admin_id,json=adminId,proto3" json:"admin_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AdminUpdateHumanRoomRobotConfigRequest) Reset() {
	*x = AdminUpdateHumanRoomRobotConfigRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[31]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AdminUpdateHumanRoomRobotConfigRequest) ProtoMessage() {}

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

func (x *AdminUpdateHumanRoomRobotConfigRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *AdminUpdateHumanRoomRobotConfigRequest) GetConfig() *AdminHumanRoomRobotConfig {
	if x != nil {
		return x.Config
	}
	return nil
}

func (x *AdminUpdateHumanRoomRobotConfigRequest) GetAdminId() uint64 {
	if x != nil {
		return x.AdminId
	}
	return 0
}

type AdminUpdateHumanRoomRobotConfigResponse struct {
	state         protoimpl.MessageState     `protogen:"open.v1"`
	Config        *AdminHumanRoomRobotConfig `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"`
	ServerTimeMs  int64                      `protobuf:"varint,2,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AdminUpdateHumanRoomRobotConfigResponse) Reset() {
	*x = AdminUpdateHumanRoomRobotConfigResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[32]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AdminUpdateHumanRoomRobotConfigResponse) ProtoMessage() {}

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

func (x *AdminUpdateHumanRoomRobotConfigResponse) GetConfig() *AdminHumanRoomRobotConfig {
	if x != nil {
		return x.Config
	}
	return nil
}

func (x *AdminUpdateHumanRoomRobotConfigResponse) GetServerTimeMs() int64 {
	if x != nil {
		return x.ServerTimeMs
	}
	return 0
}

type AdminRoomPinRoom struct {
	state           protoimpl.MessageState `protogen:"open.v1"`
	RoomId          string                 `protobuf:"bytes,1,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"`
	RoomShortId     string                 `protobuf:"bytes,2,opt,name=room_short_id,json=roomShortId,proto3" json:"room_short_id,omitempty"`
	VisibleRegionId int64                  `protobuf:"varint,3,opt,name=visible_region_id,json=visibleRegionId,proto3" json:"visible_region_id,omitempty"`
	OwnerUserId     int64                  `protobuf:"varint,4,opt,name=owner_user_id,json=ownerUserId,proto3" json:"owner_user_id,omitempty"`
	Title           string                 `protobuf:"bytes,5,opt,name=title,proto3" json:"title,omitempty"`
	CoverUrl        string                 `protobuf:"bytes,6,opt,name=cover_url,json=coverUrl,proto3" json:"cover_url,omitempty"`
	Status          string                 `protobuf:"bytes,7,opt,name=status,proto3" json:"status,omitempty"`
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

func (x *AdminRoomPinRoom) Reset() {
	*x = AdminRoomPinRoom{}
	mi := &file_proto_room_v1_room_proto_msgTypes[33]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AdminRoomPinRoom) ProtoMessage() {}

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

func (x *AdminRoomPinRoom) GetRoomId() string {
	if x != nil {
		return x.RoomId
	}
	return ""
}

func (x *AdminRoomPinRoom) GetRoomShortId() string {
	if x != nil {
		return x.RoomShortId
	}
	return ""
}

func (x *AdminRoomPinRoom) GetVisibleRegionId() int64 {
	if x != nil {
		return x.VisibleRegionId
	}
	return 0
}

func (x *AdminRoomPinRoom) GetOwnerUserId() int64 {
	if x != nil {
		return x.OwnerUserId
	}
	return 0
}

func (x *AdminRoomPinRoom) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *AdminRoomPinRoom) GetCoverUrl() string {
	if x != nil {
		return x.CoverUrl
	}
	return ""
}

func (x *AdminRoomPinRoom) GetStatus() string {
	if x != nil {
		return x.Status
	}
	return ""
}

type AdminRoomPin struct {
	state              protoimpl.MessageState `protogen:"open.v1"`
	Id                 int64                  `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
	VisibleRegionId    int64                  `protobuf:"varint,2,opt,name=visible_region_id,json=visibleRegionId,proto3" json:"visible_region_id,omitempty"`
	RoomId             string                 `protobuf:"bytes,3,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"`
	Weight             int64                  `protobuf:"varint,4,opt,name=weight,proto3" json:"weight,omitempty"`
	Status             string                 `protobuf:"bytes,5,opt,name=status,proto3" json:"status,omitempty"`
	PinnedAtMs         int64                  `protobuf:"varint,6,opt,name=pinned_at_ms,json=pinnedAtMs,proto3" json:"pinned_at_ms,omitempty"`
	ExpiresAtMs        int64                  `protobuf:"varint,7,opt,name=expires_at_ms,json=expiresAtMs,proto3" json:"expires_at_ms,omitempty"`
	CancelledAtMs      int64                  `protobuf:"varint,8,opt,name=cancelled_at_ms,json=cancelledAtMs,proto3" json:"cancelled_at_ms,omitempty"`
	CreatedByAdminId   uint64                 `protobuf:"varint,9,opt,name=created_by_admin_id,json=createdByAdminId,proto3" json:"created_by_admin_id,omitempty"`
	CancelledByAdminId uint64                 `protobuf:"varint,10,opt,name=cancelled_by_admin_id,json=cancelledByAdminId,proto3" json:"cancelled_by_admin_id,omitempty"`
	CreatedAtMs        int64                  `protobuf:"varint,11,opt,name=created_at_ms,json=createdAtMs,proto3" json:"created_at_ms,omitempty"`
	UpdatedAtMs        int64                  `protobuf:"varint,12,opt,name=updated_at_ms,json=updatedAtMs,proto3" json:"updated_at_ms,omitempty"`
	Room               *AdminRoomPinRoom      `protobuf:"bytes,13,opt,name=room,proto3" json:"room,omitempty"`
	PinType            string                 `protobuf:"bytes,14,opt,name=pin_type,json=pinType,proto3" json:"pin_type,omitempty"`
	unknownFields      protoimpl.UnknownFields
	sizeCache          protoimpl.SizeCache
}

func (x *AdminRoomPin) Reset() {
	*x = AdminRoomPin{}
	mi := &file_proto_room_v1_room_proto_msgTypes[34]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AdminRoomPin) ProtoMessage() {}

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

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

func (x *AdminRoomPin) GetVisibleRegionId() int64 {
	if x != nil {
		return x.VisibleRegionId
	}
	return 0
}

func (x *AdminRoomPin) GetRoomId() string {
	if x != nil {
		return x.RoomId
	}
	return ""
}

func (x *AdminRoomPin) GetWeight() int64 {
	if x != nil {
		return x.Weight
	}
	return 0
}

func (x *AdminRoomPin) GetStatus() string {
	if x != nil {
		return x.Status
	}
	return ""
}

func (x *AdminRoomPin) GetPinnedAtMs() int64 {
	if x != nil {
		return x.PinnedAtMs
	}
	return 0
}

func (x *AdminRoomPin) GetExpiresAtMs() int64 {
	if x != nil {
		return x.ExpiresAtMs
	}
	return 0
}

func (x *AdminRoomPin) GetCancelledAtMs() int64 {
	if x != nil {
		return x.CancelledAtMs
	}
	return 0
}

func (x *AdminRoomPin) GetCreatedByAdminId() uint64 {
	if x != nil {
		return x.CreatedByAdminId
	}
	return 0
}

func (x *AdminRoomPin) GetCancelledByAdminId() uint64 {
	if x != nil {
		return x.CancelledByAdminId
	}
	return 0
}

func (x *AdminRoomPin) GetCreatedAtMs() int64 {
	if x != nil {
		return x.CreatedAtMs
	}
	return 0
}

func (x *AdminRoomPin) GetUpdatedAtMs() int64 {
	if x != nil {
		return x.UpdatedAtMs
	}
	return 0
}

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

func (x *AdminRoomPin) GetPinType() string {
	if x != nil {
		return x.PinType
	}
	return ""
}

type AdminListRoomPinsRequest struct {
	state           protoimpl.MessageState `protogen:"open.v1"`
	Meta            *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	Page            int32                  `protobuf:"varint,2,opt,name=page,proto3" json:"page,omitempty"`
	PageSize        int32                  `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
	Keyword         string                 `protobuf:"bytes,4,opt,name=keyword,proto3" json:"keyword,omitempty"`
	Status          string                 `protobuf:"bytes,5,opt,name=status,proto3" json:"status,omitempty"`
	VisibleRegionId int64                  `protobuf:"varint,6,opt,name=visible_region_id,json=visibleRegionId,proto3" json:"visible_region_id,omitempty"`
	PinType         string                 `protobuf:"bytes,7,opt,name=pin_type,json=pinType,proto3" json:"pin_type,omitempty"`
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

func (x *AdminListRoomPinsRequest) Reset() {
	*x = AdminListRoomPinsRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[35]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AdminListRoomPinsRequest) ProtoMessage() {}

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

func (x *AdminListRoomPinsRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *AdminListRoomPinsRequest) GetPage() int32 {
	if x != nil {
		return x.Page
	}
	return 0
}

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

func (x *AdminListRoomPinsRequest) GetKeyword() string {
	if x != nil {
		return x.Keyword
	}
	return ""
}

func (x *AdminListRoomPinsRequest) GetStatus() string {
	if x != nil {
		return x.Status
	}
	return ""
}

func (x *AdminListRoomPinsRequest) GetVisibleRegionId() int64 {
	if x != nil {
		return x.VisibleRegionId
	}
	return 0
}

func (x *AdminListRoomPinsRequest) GetPinType() string {
	if x != nil {
		return x.PinType
	}
	return ""
}

type AdminListRoomPinsResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Pins          []*AdminRoomPin        `protobuf:"bytes,1,rep,name=pins,proto3" json:"pins,omitempty"`
	Total         int64                  `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"`
	ServerTimeMs  int64                  `protobuf:"varint,3,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AdminListRoomPinsResponse) Reset() {
	*x = AdminListRoomPinsResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[36]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AdminListRoomPinsResponse) ProtoMessage() {}

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

func (x *AdminListRoomPinsResponse) GetPins() []*AdminRoomPin {
	if x != nil {
		return x.Pins
	}
	return nil
}

func (x *AdminListRoomPinsResponse) GetTotal() int64 {
	if x != nil {
		return x.Total
	}
	return 0
}

func (x *AdminListRoomPinsResponse) GetServerTimeMs() int64 {
	if x != nil {
		return x.ServerTimeMs
	}
	return 0
}

type AdminCreateRoomPinRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Meta          *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	RoomId        string                 `protobuf:"bytes,2,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"`
	Weight        int64                  `protobuf:"varint,3,opt,name=weight,proto3" json:"weight,omitempty"`
	DurationDays  int64                  `protobuf:"varint,4,opt,name=duration_days,json=durationDays,proto3" json:"duration_days,omitempty"`
	AdminId       uint64                 `protobuf:"varint,5,opt,name=admin_id,json=adminId,proto3" json:"admin_id,omitempty"`
	PinnedAtMs    int64                  `protobuf:"varint,6,opt,name=pinned_at_ms,json=pinnedAtMs,proto3" json:"pinned_at_ms,omitempty"`
	ExpiresAtMs   int64                  `protobuf:"varint,7,opt,name=expires_at_ms,json=expiresAtMs,proto3" json:"expires_at_ms,omitempty"`
	PinType       string                 `protobuf:"bytes,8,opt,name=pin_type,json=pinType,proto3" json:"pin_type,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AdminCreateRoomPinRequest) Reset() {
	*x = AdminCreateRoomPinRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[37]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AdminCreateRoomPinRequest) ProtoMessage() {}

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

func (x *AdminCreateRoomPinRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *AdminCreateRoomPinRequest) GetRoomId() string {
	if x != nil {
		return x.RoomId
	}
	return ""
}

func (x *AdminCreateRoomPinRequest) GetWeight() int64 {
	if x != nil {
		return x.Weight
	}
	return 0
}

func (x *AdminCreateRoomPinRequest) GetDurationDays() int64 {
	if x != nil {
		return x.DurationDays
	}
	return 0
}

func (x *AdminCreateRoomPinRequest) GetAdminId() uint64 {
	if x != nil {
		return x.AdminId
	}
	return 0
}

func (x *AdminCreateRoomPinRequest) GetPinnedAtMs() int64 {
	if x != nil {
		return x.PinnedAtMs
	}
	return 0
}

func (x *AdminCreateRoomPinRequest) GetExpiresAtMs() int64 {
	if x != nil {
		return x.ExpiresAtMs
	}
	return 0
}

func (x *AdminCreateRoomPinRequest) GetPinType() string {
	if x != nil {
		return x.PinType
	}
	return ""
}

type AdminCreateRoomPinResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Pin           *AdminRoomPin          `protobuf:"bytes,1,opt,name=pin,proto3" json:"pin,omitempty"`
	ServerTimeMs  int64                  `protobuf:"varint,2,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AdminCreateRoomPinResponse) Reset() {
	*x = AdminCreateRoomPinResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[38]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AdminCreateRoomPinResponse) ProtoMessage() {}

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

func (x *AdminCreateRoomPinResponse) GetPin() *AdminRoomPin {
	if x != nil {
		return x.Pin
	}
	return nil
}

func (x *AdminCreateRoomPinResponse) GetServerTimeMs() int64 {
	if x != nil {
		return x.ServerTimeMs
	}
	return 0
}

type AdminCancelRoomPinRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Meta          *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	PinId         int64                  `protobuf:"varint,2,opt,name=pin_id,json=pinId,proto3" json:"pin_id,omitempty"`
	AdminId       uint64                 `protobuf:"varint,3,opt,name=admin_id,json=adminId,proto3" json:"admin_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AdminCancelRoomPinRequest) Reset() {
	*x = AdminCancelRoomPinRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[39]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AdminCancelRoomPinRequest) ProtoMessage() {}

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

func (x *AdminCancelRoomPinRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *AdminCancelRoomPinRequest) GetPinId() int64 {
	if x != nil {
		return x.PinId
	}
	return 0
}

func (x *AdminCancelRoomPinRequest) GetAdminId() uint64 {
	if x != nil {
		return x.AdminId
	}
	return 0
}

type AdminCancelRoomPinResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Pin           *AdminRoomPin          `protobuf:"bytes,1,opt,name=pin,proto3" json:"pin,omitempty"`
	ServerTimeMs  int64                  `protobuf:"varint,2,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AdminCancelRoomPinResponse) Reset() {
	*x = AdminCancelRoomPinResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[40]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AdminCancelRoomPinResponse) ProtoMessage() {}

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

func (x *AdminCancelRoomPinResponse) GetPin() *AdminRoomPin {
	if x != nil {
		return x.Pin
	}
	return nil
}

func (x *AdminCancelRoomPinResponse) GetServerTimeMs() int64 {
	if x != nil {
		return x.ServerTimeMs
	}
	return 0
}

type AdminRobotRoomGiftRule struct {
	state                protoimpl.MessageState `protogen:"open.v1"`
	GiftIds              []string               `protobuf:"bytes,1,rep,name=gift_ids,json=giftIds,proto3" json:"gift_ids,omitempty"`
	LuckyGiftIds         []string               `protobuf:"bytes,2,rep,name=lucky_gift_ids,json=luckyGiftIds,proto3" json:"lucky_gift_ids,omitempty"`
	NormalGiftIntervalMs int64                  `protobuf:"varint,3,opt,name=normal_gift_interval_ms,json=normalGiftIntervalMs,proto3" json:"normal_gift_interval_ms,omitempty"`
	LuckyComboMin        int64                  `protobuf:"varint,4,opt,name=lucky_combo_min,json=luckyComboMin,proto3" json:"lucky_combo_min,omitempty"`
	LuckyComboMax        int64                  `protobuf:"varint,5,opt,name=lucky_combo_max,json=luckyComboMax,proto3" json:"lucky_combo_max,omitempty"`
	LuckyPauseMinMs      int64                  `protobuf:"varint,6,opt,name=lucky_pause_min_ms,json=luckyPauseMinMs,proto3" json:"lucky_pause_min_ms,omitempty"`
	LuckyPauseMaxMs      int64                  `protobuf:"varint,7,opt,name=lucky_pause_max_ms,json=luckyPauseMaxMs,proto3" json:"lucky_pause_max_ms,omitempty"`
	RobotStayMinMs       int64                  `protobuf:"varint,8,opt,name=robot_stay_min_ms,json=robotStayMinMs,proto3" json:"robot_stay_min_ms,omitempty"`
	RobotStayMaxMs       int64                  `protobuf:"varint,9,opt,name=robot_stay_max_ms,json=robotStayMaxMs,proto3" json:"robot_stay_max_ms,omitempty"`
	RobotReplaceMinMs    int64                  `protobuf:"varint,10,opt,name=robot_replace_min_ms,json=robotReplaceMinMs,proto3" json:"robot_replace_min_ms,omitempty"`
	RobotReplaceMaxMs    int64                  `protobuf:"varint,11,opt,name=robot_replace_max_ms,json=robotReplaceMaxMs,proto3" json:"robot_replace_max_ms,omitempty"`
	MaxGiftSenders       int64                  `protobuf:"varint,12,opt,name=max_gift_senders,json=maxGiftSenders,proto3" json:"max_gift_senders,omitempty"`
	unknownFields        protoimpl.UnknownFields
	sizeCache            protoimpl.SizeCache
}

func (x *AdminRobotRoomGiftRule) Reset() {
	*x = AdminRobotRoomGiftRule{}
	mi := &file_proto_room_v1_room_proto_msgTypes[41]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AdminRobotRoomGiftRule) ProtoMessage() {}

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

func (x *AdminRobotRoomGiftRule) GetGiftIds() []string {
	if x != nil {
		return x.GiftIds
	}
	return nil
}

func (x *AdminRobotRoomGiftRule) GetLuckyGiftIds() []string {
	if x != nil {
		return x.LuckyGiftIds
	}
	return nil
}

func (x *AdminRobotRoomGiftRule) GetNormalGiftIntervalMs() int64 {
	if x != nil {
		return x.NormalGiftIntervalMs
	}
	return 0
}

func (x *AdminRobotRoomGiftRule) GetLuckyComboMin() int64 {
	if x != nil {
		return x.LuckyComboMin
	}
	return 0
}

func (x *AdminRobotRoomGiftRule) GetLuckyComboMax() int64 {
	if x != nil {
		return x.LuckyComboMax
	}
	return 0
}

func (x *AdminRobotRoomGiftRule) GetLuckyPauseMinMs() int64 {
	if x != nil {
		return x.LuckyPauseMinMs
	}
	return 0
}

func (x *AdminRobotRoomGiftRule) GetLuckyPauseMaxMs() int64 {
	if x != nil {
		return x.LuckyPauseMaxMs
	}
	return 0
}

func (x *AdminRobotRoomGiftRule) GetRobotStayMinMs() int64 {
	if x != nil {
		return x.RobotStayMinMs
	}
	return 0
}

func (x *AdminRobotRoomGiftRule) GetRobotStayMaxMs() int64 {
	if x != nil {
		return x.RobotStayMaxMs
	}
	return 0
}

func (x *AdminRobotRoomGiftRule) GetRobotReplaceMinMs() int64 {
	if x != nil {
		return x.RobotReplaceMinMs
	}
	return 0
}

func (x *AdminRobotRoomGiftRule) GetRobotReplaceMaxMs() int64 {
	if x != nil {
		return x.RobotReplaceMaxMs
	}
	return 0
}

func (x *AdminRobotRoomGiftRule) GetMaxGiftSenders() int64 {
	if x != nil {
		return x.MaxGiftSenders
	}
	return 0
}

type AdminRobotRoom struct {
	state            protoimpl.MessageState  `protogen:"open.v1"`
	AppCode          string                  `protobuf:"bytes,1,opt,name=app_code,json=appCode,proto3" json:"app_code,omitempty"`
	RoomId           string                  `protobuf:"bytes,2,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"`
	RoomShortId      string                  `protobuf:"bytes,3,opt,name=room_short_id,json=roomShortId,proto3" json:"room_short_id,omitempty"`
	Title            string                  `protobuf:"bytes,4,opt,name=title,proto3" json:"title,omitempty"`
	CoverUrl         string                  `protobuf:"bytes,5,opt,name=cover_url,json=coverUrl,proto3" json:"cover_url,omitempty"`
	VisibleRegionId  int64                   `protobuf:"varint,6,opt,name=visible_region_id,json=visibleRegionId,proto3" json:"visible_region_id,omitempty"`
	Status           string                  `protobuf:"bytes,7,opt,name=status,proto3" json:"status,omitempty"`
	OwnerRobotUserId int64                   `protobuf:"varint,8,opt,name=owner_robot_user_id,json=ownerRobotUserId,proto3" json:"owner_robot_user_id,omitempty"`
	RobotUserIds     []int64                 `protobuf:"varint,9,rep,packed,name=robot_user_ids,json=robotUserIds,proto3" json:"robot_user_ids,omitempty"`
	GiftRule         *AdminRobotRoomGiftRule `protobuf:"bytes,10,opt,name=gift_rule,json=giftRule,proto3" json:"gift_rule,omitempty"`
	CreatedByAdminId uint64                  `protobuf:"varint,11,opt,name=created_by_admin_id,json=createdByAdminId,proto3" json:"created_by_admin_id,omitempty"`
	CreatedAtMs      int64                   `protobuf:"varint,12,opt,name=created_at_ms,json=createdAtMs,proto3" json:"created_at_ms,omitempty"`
	UpdatedAtMs      int64                   `protobuf:"varint,13,opt,name=updated_at_ms,json=updatedAtMs,proto3" json:"updated_at_ms,omitempty"`
	ActiveRobotCount int32                   `protobuf:"varint,14,opt,name=active_robot_count,json=activeRobotCount,proto3" json:"active_robot_count,omitempty"`
	SeatCount        int32                   `protobuf:"varint,15,opt,name=seat_count,json=seatCount,proto3" json:"seat_count,omitempty"`
	unknownFields    protoimpl.UnknownFields
	sizeCache        protoimpl.SizeCache
}

func (x *AdminRobotRoom) Reset() {
	*x = AdminRobotRoom{}
	mi := &file_proto_room_v1_room_proto_msgTypes[42]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AdminRobotRoom) ProtoMessage() {}

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

func (x *AdminRobotRoom) GetAppCode() string {
	if x != nil {
		return x.AppCode
	}
	return ""
}

func (x *AdminRobotRoom) GetRoomId() string {
	if x != nil {
		return x.RoomId
	}
	return ""
}

func (x *AdminRobotRoom) GetRoomShortId() string {
	if x != nil {
		return x.RoomShortId
	}
	return ""
}

func (x *AdminRobotRoom) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *AdminRobotRoom) GetCoverUrl() string {
	if x != nil {
		return x.CoverUrl
	}
	return ""
}

func (x *AdminRobotRoom) GetVisibleRegionId() int64 {
	if x != nil {
		return x.VisibleRegionId
	}
	return 0
}

func (x *AdminRobotRoom) GetStatus() string {
	if x != nil {
		return x.Status
	}
	return ""
}

func (x *AdminRobotRoom) GetOwnerRobotUserId() int64 {
	if x != nil {
		return x.OwnerRobotUserId
	}
	return 0
}

func (x *AdminRobotRoom) GetRobotUserIds() []int64 {
	if x != nil {
		return x.RobotUserIds
	}
	return nil
}

func (x *AdminRobotRoom) GetGiftRule() *AdminRobotRoomGiftRule {
	if x != nil {
		return x.GiftRule
	}
	return nil
}

func (x *AdminRobotRoom) GetCreatedByAdminId() uint64 {
	if x != nil {
		return x.CreatedByAdminId
	}
	return 0
}

func (x *AdminRobotRoom) GetCreatedAtMs() int64 {
	if x != nil {
		return x.CreatedAtMs
	}
	return 0
}

func (x *AdminRobotRoom) GetUpdatedAtMs() int64 {
	if x != nil {
		return x.UpdatedAtMs
	}
	return 0
}

func (x *AdminRobotRoom) GetActiveRobotCount() int32 {
	if x != nil {
		return x.ActiveRobotCount
	}
	return 0
}

func (x *AdminRobotRoom) GetSeatCount() int32 {
	if x != nil {
		return x.SeatCount
	}
	return 0
}

type AdminListRobotRoomsRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Meta          *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	Page          int32                  `protobuf:"varint,2,opt,name=page,proto3" json:"page,omitempty"`
	PageSize      int32                  `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
	Status        string                 `protobuf:"bytes,4,opt,name=status,proto3" json:"status,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AdminListRobotRoomsRequest) Reset() {
	*x = AdminListRobotRoomsRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[43]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AdminListRobotRoomsRequest) ProtoMessage() {}

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

func (x *AdminListRobotRoomsRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *AdminListRobotRoomsRequest) GetPage() int32 {
	if x != nil {
		return x.Page
	}
	return 0
}

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

func (x *AdminListRobotRoomsRequest) GetStatus() string {
	if x != nil {
		return x.Status
	}
	return ""
}

type AdminListRobotRoomsResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Rooms         []*AdminRobotRoom      `protobuf:"bytes,1,rep,name=rooms,proto3" json:"rooms,omitempty"`
	Total         int64                  `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"`
	ServerTimeMs  int64                  `protobuf:"varint,3,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AdminListRobotRoomsResponse) Reset() {
	*x = AdminListRobotRoomsResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[44]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AdminListRobotRoomsResponse) ProtoMessage() {}

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

func (x *AdminListRobotRoomsResponse) GetRooms() []*AdminRobotRoom {
	if x != nil {
		return x.Rooms
	}
	return nil
}

func (x *AdminListRobotRoomsResponse) GetTotal() int64 {
	if x != nil {
		return x.Total
	}
	return 0
}

func (x *AdminListRobotRoomsResponse) GetServerTimeMs() int64 {
	if x != nil {
		return x.ServerTimeMs
	}
	return 0
}

type AdminCreateRobotRoomRequest struct {
	state                 protoimpl.MessageState  `protogen:"open.v1"`
	Meta                  *RequestMeta            `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	OwnerRobotUserId      int64                   `protobuf:"varint,2,opt,name=owner_robot_user_id,json=ownerRobotUserId,proto3" json:"owner_robot_user_id,omitempty"`
	CandidateRobotUserIds []int64                 `protobuf:"varint,3,rep,packed,name=candidate_robot_user_ids,json=candidateRobotUserIds,proto3" json:"candidate_robot_user_ids,omitempty"`
	MinRobotCount         int32                   `protobuf:"varint,4,opt,name=min_robot_count,json=minRobotCount,proto3" json:"min_robot_count,omitempty"`
	MaxRobotCount         int32                   `protobuf:"varint,5,opt,name=max_robot_count,json=maxRobotCount,proto3" json:"max_robot_count,omitempty"`
	RoomName              string                  `protobuf:"bytes,6,opt,name=room_name,json=roomName,proto3" json:"room_name,omitempty"`
	RoomAvatar            string                  `protobuf:"bytes,7,opt,name=room_avatar,json=roomAvatar,proto3" json:"room_avatar,omitempty"`
	VisibleRegionId       int64                   `protobuf:"varint,8,opt,name=visible_region_id,json=visibleRegionId,proto3" json:"visible_region_id,omitempty"`
	GiftRule              *AdminRobotRoomGiftRule `protobuf:"bytes,9,opt,name=gift_rule,json=giftRule,proto3" json:"gift_rule,omitempty"`
	AdminId               uint64                  `protobuf:"varint,10,opt,name=admin_id,json=adminId,proto3" json:"admin_id,omitempty"`
	OwnerCountryCode      string                  `protobuf:"bytes,11,opt,name=owner_country_code,json=ownerCountryCode,proto3" json:"owner_country_code,omitempty"`
	SeatCount             int32                   `protobuf:"varint,12,opt,name=seat_count,json=seatCount,proto3" json:"seat_count,omitempty"`
	unknownFields         protoimpl.UnknownFields
	sizeCache             protoimpl.SizeCache
}

func (x *AdminCreateRobotRoomRequest) Reset() {
	*x = AdminCreateRobotRoomRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[45]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AdminCreateRobotRoomRequest) ProtoMessage() {}

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

func (x *AdminCreateRobotRoomRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *AdminCreateRobotRoomRequest) GetOwnerRobotUserId() int64 {
	if x != nil {
		return x.OwnerRobotUserId
	}
	return 0
}

func (x *AdminCreateRobotRoomRequest) GetCandidateRobotUserIds() []int64 {
	if x != nil {
		return x.CandidateRobotUserIds
	}
	return nil
}

func (x *AdminCreateRobotRoomRequest) GetMinRobotCount() int32 {
	if x != nil {
		return x.MinRobotCount
	}
	return 0
}

func (x *AdminCreateRobotRoomRequest) GetMaxRobotCount() int32 {
	if x != nil {
		return x.MaxRobotCount
	}
	return 0
}

func (x *AdminCreateRobotRoomRequest) GetRoomName() string {
	if x != nil {
		return x.RoomName
	}
	return ""
}

func (x *AdminCreateRobotRoomRequest) GetRoomAvatar() string {
	if x != nil {
		return x.RoomAvatar
	}
	return ""
}

func (x *AdminCreateRobotRoomRequest) GetVisibleRegionId() int64 {
	if x != nil {
		return x.VisibleRegionId
	}
	return 0
}

func (x *AdminCreateRobotRoomRequest) GetGiftRule() *AdminRobotRoomGiftRule {
	if x != nil {
		return x.GiftRule
	}
	return nil
}

func (x *AdminCreateRobotRoomRequest) GetAdminId() uint64 {
	if x != nil {
		return x.AdminId
	}
	return 0
}

func (x *AdminCreateRobotRoomRequest) GetOwnerCountryCode() string {
	if x != nil {
		return x.OwnerCountryCode
	}
	return ""
}

func (x *AdminCreateRobotRoomRequest) GetSeatCount() int32 {
	if x != nil {
		return x.SeatCount
	}
	return 0
}

type AdminCreateRobotRoomResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Room          *AdminRobotRoom        `protobuf:"bytes,1,opt,name=room,proto3" json:"room,omitempty"`
	ServerTimeMs  int64                  `protobuf:"varint,2,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AdminCreateRobotRoomResponse) Reset() {
	*x = AdminCreateRobotRoomResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[46]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AdminCreateRobotRoomResponse) ProtoMessage() {}

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

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

func (x *AdminCreateRobotRoomResponse) GetServerTimeMs() int64 {
	if x != nil {
		return x.ServerTimeMs
	}
	return 0
}

type AdminSetRobotRoomStatusRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Meta          *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	Status        string                 `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"`
	AdminId       uint64                 `protobuf:"varint,3,opt,name=admin_id,json=adminId,proto3" json:"admin_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AdminSetRobotRoomStatusRequest) Reset() {
	*x = AdminSetRobotRoomStatusRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[47]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AdminSetRobotRoomStatusRequest) ProtoMessage() {}

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

func (x *AdminSetRobotRoomStatusRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *AdminSetRobotRoomStatusRequest) GetStatus() string {
	if x != nil {
		return x.Status
	}
	return ""
}

func (x *AdminSetRobotRoomStatusRequest) GetAdminId() uint64 {
	if x != nil {
		return x.AdminId
	}
	return 0
}

type AdminSetRobotRoomStatusResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Room          *AdminRobotRoom        `protobuf:"bytes,1,opt,name=room,proto3" json:"room,omitempty"`
	ServerTimeMs  int64                  `protobuf:"varint,2,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AdminSetRobotRoomStatusResponse) Reset() {
	*x = AdminSetRobotRoomStatusResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[48]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AdminSetRobotRoomStatusResponse) ProtoMessage() {}

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

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

func (x *AdminSetRobotRoomStatusResponse) GetServerTimeMs() int64 {
	if x != nil {
		return x.ServerTimeMs
	}
	return 0
}

type AdminRenameOwnerCountryCodeRequest struct {
	state          protoimpl.MessageState `protogen:"open.v1"`
	Meta           *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	OldCountryCode string                 `protobuf:"bytes,2,opt,name=old_country_code,json=oldCountryCode,proto3" json:"old_country_code,omitempty"`
	NewCountryCode string                 `protobuf:"bytes,3,opt,name=new_country_code,json=newCountryCode,proto3" json:"new_country_code,omitempty"`
	AdminId        uint64                 `protobuf:"varint,4,opt,name=admin_id,json=adminId,proto3" json:"admin_id,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *AdminRenameOwnerCountryCodeRequest) Reset() {
	*x = AdminRenameOwnerCountryCodeRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[49]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AdminRenameOwnerCountryCodeRequest) ProtoMessage() {}

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

func (x *AdminRenameOwnerCountryCodeRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *AdminRenameOwnerCountryCodeRequest) GetOldCountryCode() string {
	if x != nil {
		return x.OldCountryCode
	}
	return ""
}

func (x *AdminRenameOwnerCountryCodeRequest) GetNewCountryCode() string {
	if x != nil {
		return x.NewCountryCode
	}
	return ""
}

func (x *AdminRenameOwnerCountryCodeRequest) GetAdminId() uint64 {
	if x != nil {
		return x.AdminId
	}
	return 0
}

type AdminRenameOwnerCountryCodeResponse struct {
	state           protoimpl.MessageState `protogen:"open.v1"`
	RoomListEntries int64                  `protobuf:"varint,1,opt,name=room_list_entries,json=roomListEntries,proto3" json:"room_list_entries,omitempty"`
	RoomSnapshots   int64                  `protobuf:"varint,2,opt,name=room_snapshots,json=roomSnapshots,proto3" json:"room_snapshots,omitempty"`
	ServerTimeMs    int64                  `protobuf:"varint,3,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"`
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

func (x *AdminRenameOwnerCountryCodeResponse) Reset() {
	*x = AdminRenameOwnerCountryCodeResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[50]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AdminRenameOwnerCountryCodeResponse) ProtoMessage() {}

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

func (x *AdminRenameOwnerCountryCodeResponse) GetRoomListEntries() int64 {
	if x != nil {
		return x.RoomListEntries
	}
	return 0
}

func (x *AdminRenameOwnerCountryCodeResponse) GetRoomSnapshots() int64 {
	if x != nil {
		return x.RoomSnapshots
	}
	return 0
}

func (x *AdminRenameOwnerCountryCodeResponse) GetServerTimeMs() int64 {
	if x != nil {
		return x.ServerTimeMs
	}
	return 0
}

type AdminFilterAvailableRoomRobotsRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Meta          *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	UserIds       []int64                `protobuf:"varint,2,rep,packed,name=user_ids,json=userIds,proto3" json:"user_ids,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AdminFilterAvailableRoomRobotsRequest) Reset() {
	*x = AdminFilterAvailableRoomRobotsRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[51]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AdminFilterAvailableRoomRobotsRequest) ProtoMessage() {}

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

func (x *AdminFilterAvailableRoomRobotsRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *AdminFilterAvailableRoomRobotsRequest) GetUserIds() []int64 {
	if x != nil {
		return x.UserIds
	}
	return nil
}

type AdminFilterAvailableRoomRobotsResponse struct {
	state            protoimpl.MessageState `protogen:"open.v1"`
	AvailableUserIds []int64                `protobuf:"varint,1,rep,packed,name=available_user_ids,json=availableUserIds,proto3" json:"available_user_ids,omitempty"`
	OccupiedUserIds  []int64                `protobuf:"varint,2,rep,packed,name=occupied_user_ids,json=occupiedUserIds,proto3" json:"occupied_user_ids,omitempty"`
	ServerTimeMs     int64                  `protobuf:"varint,3,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"`
	unknownFields    protoimpl.UnknownFields
	sizeCache        protoimpl.SizeCache
}

func (x *AdminFilterAvailableRoomRobotsResponse) Reset() {
	*x = AdminFilterAvailableRoomRobotsResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[52]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AdminFilterAvailableRoomRobotsResponse) ProtoMessage() {}

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

func (x *AdminFilterAvailableRoomRobotsResponse) GetAvailableUserIds() []int64 {
	if x != nil {
		return x.AvailableUserIds
	}
	return nil
}

func (x *AdminFilterAvailableRoomRobotsResponse) GetOccupiedUserIds() []int64 {
	if x != nil {
		return x.OccupiedUserIds
	}
	return nil
}

func (x *AdminFilterAvailableRoomRobotsResponse) GetServerTimeMs() int64 {
	if x != nil {
		return x.ServerTimeMs
	}
	return 0
}

// RoomBanState 表达单个房间 ban 的治理状态。
type RoomBanState struct {
	state       protoimpl.MessageState `protogen:"open.v1"`
	UserId      int64                  `protobuf:"varint,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
	ActorUserId int64                  `protobuf:"varint,2,opt,name=actor_user_id,json=actorUserId,proto3" json:"actor_user_id,omitempty"`
	CreatedAtMs int64                  `protobuf:"varint,3,opt,name=created_at_ms,json=createdAtMs,proto3" json:"created_at_ms,omitempty"`
	// expires_at_ms 为 0 表示永久 ban；非 0 表示该 UTC 毫秒后可重新进房。
	ExpiresAtMs   int64 `protobuf:"varint,4,opt,name=expires_at_ms,json=expiresAtMs,proto3" json:"expires_at_ms,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RoomBanState) Reset() {
	*x = RoomBanState{}
	mi := &file_proto_room_v1_room_proto_msgTypes[53]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*RoomBanState) ProtoMessage() {}

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

func (x *RoomBanState) GetUserId() int64 {
	if x != nil {
		return x.UserId
	}
	return 0
}

func (x *RoomBanState) GetActorUserId() int64 {
	if x != nil {
		return x.ActorUserId
	}
	return 0
}

func (x *RoomBanState) GetCreatedAtMs() int64 {
	if x != nil {
		return x.CreatedAtMs
	}
	return 0
}

func (x *RoomBanState) GetExpiresAtMs() int64 {
	if x != nil {
		return x.ExpiresAtMs
	}
	return 0
}

// RoomSnapshot 把 room-service 对外需要暴露的房间投影集中返回。
type RoomSnapshot struct {
	state           protoimpl.MessageState `protogen:"open.v1"`
	RoomId          string                 `protobuf:"bytes,1,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"`
	OwnerUserId     int64                  `protobuf:"varint,2,opt,name=owner_user_id,json=ownerUserId,proto3" json:"owner_user_id,omitempty"`
	Mode            string                 `protobuf:"bytes,4,opt,name=mode,proto3" json:"mode,omitempty"`
	Status          string                 `protobuf:"bytes,5,opt,name=status,proto3" json:"status,omitempty"`
	ChatEnabled     bool                   `protobuf:"varint,6,opt,name=chat_enabled,json=chatEnabled,proto3" json:"chat_enabled,omitempty"`
	MicSeats        []*SeatState           `protobuf:"bytes,7,rep,name=mic_seats,json=micSeats,proto3" json:"mic_seats,omitempty"`
	OnlineUsers     []*RoomUser            `protobuf:"bytes,8,rep,name=online_users,json=onlineUsers,proto3" json:"online_users,omitempty"`
	AdminUserIds    []int64                `protobuf:"varint,9,rep,packed,name=admin_user_ids,json=adminUserIds,proto3" json:"admin_user_ids,omitempty"`
	BanUserIds      []int64                `protobuf:"varint,10,rep,packed,name=ban_user_ids,json=banUserIds,proto3" json:"ban_user_ids,omitempty"`
	MuteUserIds     []int64                `protobuf:"varint,11,rep,packed,name=mute_user_ids,json=muteUserIds,proto3" json:"mute_user_ids,omitempty"`
	GiftRank        []*RankItem            `protobuf:"bytes,12,rep,name=gift_rank,json=giftRank,proto3" json:"gift_rank,omitempty"`
	RoomExt         map[string]string      `protobuf:"bytes,13,rep,name=room_ext,json=roomExt,proto3" json:"room_ext,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	Heat            int64                  `protobuf:"varint,14,opt,name=heat,proto3" json:"heat,omitempty"`
	Version         int64                  `protobuf:"varint,15,opt,name=version,proto3" json:"version,omitempty"`
	AppCode         string                 `protobuf:"bytes,16,opt,name=app_code,json=appCode,proto3" json:"app_code,omitempty"`
	RoomShortId     string                 `protobuf:"bytes,17,opt,name=room_short_id,json=roomShortId,proto3" json:"room_short_id,omitempty"`
	VisibleRegionId int64                  `protobuf:"varint,18,opt,name=visible_region_id,json=visibleRegionId,proto3" json:"visible_region_id,omitempty"`
	// locked 只表达房间是否需要入房密码；具体密码哈希不对外映射到 HTTP JSON。
	Locked bool `protobuf:"varint,19,opt,name=locked,proto3" json:"locked,omitempty"`
	// rocket 是语音房火箭当前状态；配置物料通过 GetRoomRocket 单独读取，避免快照过大。
	Rocket *RoomRocketState `protobuf:"bytes,20,opt,name=rocket,proto3" json:"rocket,omitempty"`
	// ban_states 保存 ban 的过期边界；ban_user_ids 仍只服务简单集合判断。
	BanStates []*RoomBanState `protobuf:"bytes,21,rep,name=ban_states,json=banStates,proto3" json:"ban_states,omitempty"`
	// online_count 允许 lite 响应不携带 online_users 明细仍保留准确在线人数。
	OnlineCount int32 `protobuf:"varint,22,opt,name=online_count,json=onlineCount,proto3" json:"online_count,omitempty"`
	// room_border 与 room_name_style 是房间级最终装扮快照；客户端不得再按房主 VIP 等级推导样式。
	RoomBorder    *RoomDecorationResource `protobuf:"bytes,23,opt,name=room_border,json=roomBorder,proto3" json:"room_border,omitempty"`
	RoomNameStyle *RoomDecorationResource `protobuf:"bytes,24,opt,name=room_name_style,json=roomNameStyle,proto3" json:"room_name_style,omitempty"`
	// active_background 固化当前背景的真实媒体属性；room_ext.background_url 仅保留旧客户端兼容。
	ActiveBackground *RoomBackgroundImage `protobuf:"bytes,25,opt,name=active_background,json=activeBackground,proto3" json:"active_background,omitempty"`
	// room_border_url 是当前有效 room_border.asset_url 的扁平兼容字段；空字符串表示没有有效房间边框。
	RoomBorderUrl string `protobuf:"bytes,26,opt,name=room_border_url,json=roomBorderUrl,proto3" json:"room_border_url,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RoomSnapshot) Reset() {
	*x = RoomSnapshot{}
	mi := &file_proto_room_v1_room_proto_msgTypes[54]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*RoomSnapshot) ProtoMessage() {}

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

func (x *RoomSnapshot) GetRoomId() string {
	if x != nil {
		return x.RoomId
	}
	return ""
}

func (x *RoomSnapshot) GetOwnerUserId() int64 {
	if x != nil {
		return x.OwnerUserId
	}
	return 0
}

func (x *RoomSnapshot) GetMode() string {
	if x != nil {
		return x.Mode
	}
	return ""
}

func (x *RoomSnapshot) GetStatus() string {
	if x != nil {
		return x.Status
	}
	return ""
}

func (x *RoomSnapshot) GetChatEnabled() bool {
	if x != nil {
		return x.ChatEnabled
	}
	return false
}

func (x *RoomSnapshot) GetMicSeats() []*SeatState {
	if x != nil {
		return x.MicSeats
	}
	return nil
}

func (x *RoomSnapshot) GetOnlineUsers() []*RoomUser {
	if x != nil {
		return x.OnlineUsers
	}
	return nil
}

func (x *RoomSnapshot) GetAdminUserIds() []int64 {
	if x != nil {
		return x.AdminUserIds
	}
	return nil
}

func (x *RoomSnapshot) GetBanUserIds() []int64 {
	if x != nil {
		return x.BanUserIds
	}
	return nil
}

func (x *RoomSnapshot) GetMuteUserIds() []int64 {
	if x != nil {
		return x.MuteUserIds
	}
	return nil
}

func (x *RoomSnapshot) GetGiftRank() []*RankItem {
	if x != nil {
		return x.GiftRank
	}
	return nil
}

func (x *RoomSnapshot) GetRoomExt() map[string]string {
	if x != nil {
		return x.RoomExt
	}
	return nil
}

func (x *RoomSnapshot) GetHeat() int64 {
	if x != nil {
		return x.Heat
	}
	return 0
}

func (x *RoomSnapshot) GetVersion() int64 {
	if x != nil {
		return x.Version
	}
	return 0
}

func (x *RoomSnapshot) GetAppCode() string {
	if x != nil {
		return x.AppCode
	}
	return ""
}

func (x *RoomSnapshot) GetRoomShortId() string {
	if x != nil {
		return x.RoomShortId
	}
	return ""
}

func (x *RoomSnapshot) GetVisibleRegionId() int64 {
	if x != nil {
		return x.VisibleRegionId
	}
	return 0
}

func (x *RoomSnapshot) GetLocked() bool {
	if x != nil {
		return x.Locked
	}
	return false
}

func (x *RoomSnapshot) GetRocket() *RoomRocketState {
	if x != nil {
		return x.Rocket
	}
	return nil
}

func (x *RoomSnapshot) GetBanStates() []*RoomBanState {
	if x != nil {
		return x.BanStates
	}
	return nil
}

func (x *RoomSnapshot) GetOnlineCount() int32 {
	if x != nil {
		return x.OnlineCount
	}
	return 0
}

func (x *RoomSnapshot) GetRoomBorder() *RoomDecorationResource {
	if x != nil {
		return x.RoomBorder
	}
	return nil
}

func (x *RoomSnapshot) GetRoomNameStyle() *RoomDecorationResource {
	if x != nil {
		return x.RoomNameStyle
	}
	return nil
}

func (x *RoomSnapshot) GetActiveBackground() *RoomBackgroundImage {
	if x != nil {
		return x.ActiveBackground
	}
	return nil
}

func (x *RoomSnapshot) GetRoomBorderUrl() string {
	if x != nil {
		return x.RoomBorderUrl
	}
	return ""
}

// RoomMedia 是房间背景和房间图片消息共同使用的可信媒体快照。
// URL 只能由 gateway 的受信对象存储上传入口生成；room-service 会再次校验 object_key 归属和媒体边界。
type RoomMedia struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Url           string                 `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"`
	ObjectKey     string                 `protobuf:"bytes,2,opt,name=object_key,json=objectKey,proto3" json:"object_key,omitempty"`
	ContentType   string                 `protobuf:"bytes,3,opt,name=content_type,json=contentType,proto3" json:"content_type,omitempty"`
	Format        string                 `protobuf:"bytes,4,opt,name=format,proto3" json:"format,omitempty"`
	SizeBytes     int64                  `protobuf:"varint,5,opt,name=size_bytes,json=sizeBytes,proto3" json:"size_bytes,omitempty"`
	Width         int32                  `protobuf:"varint,6,opt,name=width,proto3" json:"width,omitempty"`
	Height        int32                  `protobuf:"varint,7,opt,name=height,proto3" json:"height,omitempty"`
	Animated      bool                   `protobuf:"varint,8,opt,name=animated,proto3" json:"animated,omitempty"`
	FrameCount    int32                  `protobuf:"varint,9,opt,name=frame_count,json=frameCount,proto3" json:"frame_count,omitempty"`
	DurationMs    int64                  `protobuf:"varint,10,opt,name=duration_ms,json=durationMs,proto3" json:"duration_ms,omitempty"`
	PosterUrl     string                 `protobuf:"bytes,11,opt,name=poster_url,json=posterUrl,proto3" json:"poster_url,omitempty"`
	ThumbnailUrl  string                 `protobuf:"bytes,12,opt,name=thumbnail_url,json=thumbnailUrl,proto3" json:"thumbnail_url,omitempty"`
	Sha256        string                 `protobuf:"bytes,13,opt,name=sha256,proto3" json:"sha256,omitempty"`
	Status        string                 `protobuf:"bytes,14,opt,name=status,proto3" json:"status,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RoomMedia) Reset() {
	*x = RoomMedia{}
	mi := &file_proto_room_v1_room_proto_msgTypes[55]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*RoomMedia) ProtoMessage() {}

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

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

func (x *RoomMedia) GetObjectKey() string {
	if x != nil {
		return x.ObjectKey
	}
	return ""
}

func (x *RoomMedia) GetContentType() string {
	if x != nil {
		return x.ContentType
	}
	return ""
}

func (x *RoomMedia) GetFormat() string {
	if x != nil {
		return x.Format
	}
	return ""
}

func (x *RoomMedia) GetSizeBytes() int64 {
	if x != nil {
		return x.SizeBytes
	}
	return 0
}

func (x *RoomMedia) GetWidth() int32 {
	if x != nil {
		return x.Width
	}
	return 0
}

func (x *RoomMedia) GetHeight() int32 {
	if x != nil {
		return x.Height
	}
	return 0
}

func (x *RoomMedia) GetAnimated() bool {
	if x != nil {
		return x.Animated
	}
	return false
}

func (x *RoomMedia) GetFrameCount() int32 {
	if x != nil {
		return x.FrameCount
	}
	return 0
}

func (x *RoomMedia) GetDurationMs() int64 {
	if x != nil {
		return x.DurationMs
	}
	return 0
}

func (x *RoomMedia) GetPosterUrl() string {
	if x != nil {
		return x.PosterUrl
	}
	return ""
}

func (x *RoomMedia) GetThumbnailUrl() string {
	if x != nil {
		return x.ThumbnailUrl
	}
	return ""
}

func (x *RoomMedia) GetSha256() string {
	if x != nil {
		return x.Sha256
	}
	return ""
}

func (x *RoomMedia) GetStatus() string {
	if x != nil {
		return x.Status
	}
	return ""
}

// RoomBackgroundImage 是房间维度保存过的背景图素材。
// 保存列表归属于 room-service，当前生效背景仍写入 RoomSnapshot.room_ext["background_url"]。
type RoomBackgroundImage struct {
	state           protoimpl.MessageState `protogen:"open.v1"`
	BackgroundId    int64                  `protobuf:"varint,1,opt,name=background_id,json=backgroundId,proto3" json:"background_id,omitempty"`
	RoomId          string                 `protobuf:"bytes,2,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"`
	ImageUrl        string                 `protobuf:"bytes,3,opt,name=image_url,json=imageUrl,proto3" json:"image_url,omitempty"`
	CreatedByUserId int64                  `protobuf:"varint,4,opt,name=created_by_user_id,json=createdByUserId,proto3" json:"created_by_user_id,omitempty"`
	CreatedAtMs     int64                  `protobuf:"varint,5,opt,name=created_at_ms,json=createdAtMs,proto3" json:"created_at_ms,omitempty"`
	UpdatedAtMs     int64                  `protobuf:"varint,6,opt,name=updated_at_ms,json=updatedAtMs,proto3" json:"updated_at_ms,omitempty"`
	Media           *RoomMedia             `protobuf:"bytes,7,opt,name=media,proto3" json:"media,omitempty"`
	CommandId       string                 `protobuf:"bytes,8,opt,name=command_id,json=commandId,proto3" json:"command_id,omitempty"`
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

func (x *RoomBackgroundImage) Reset() {
	*x = RoomBackgroundImage{}
	mi := &file_proto_room_v1_room_proto_msgTypes[56]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*RoomBackgroundImage) ProtoMessage() {}

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

func (x *RoomBackgroundImage) GetBackgroundId() int64 {
	if x != nil {
		return x.BackgroundId
	}
	return 0
}

func (x *RoomBackgroundImage) GetRoomId() string {
	if x != nil {
		return x.RoomId
	}
	return ""
}

func (x *RoomBackgroundImage) GetImageUrl() string {
	if x != nil {
		return x.ImageUrl
	}
	return ""
}

func (x *RoomBackgroundImage) GetCreatedByUserId() int64 {
	if x != nil {
		return x.CreatedByUserId
	}
	return 0
}

func (x *RoomBackgroundImage) GetCreatedAtMs() int64 {
	if x != nil {
		return x.CreatedAtMs
	}
	return 0
}

func (x *RoomBackgroundImage) GetUpdatedAtMs() int64 {
	if x != nil {
		return x.UpdatedAtMs
	}
	return 0
}

func (x *RoomBackgroundImage) GetMedia() *RoomMedia {
	if x != nil {
		return x.Media
	}
	return nil
}

func (x *RoomBackgroundImage) GetCommandId() string {
	if x != nil {
		return x.CommandId
	}
	return ""
}

type SaveRoomBackgroundRequest struct {
	state  protoimpl.MessageState `protogen:"open.v1"`
	Meta   *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	RoomId string                 `protobuf:"bytes,2,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"`
	// image_url 仅兼容旧内部调用；新版专用上传必须传完整 media，保存时不按 URL 后缀猜格式。
	ImageUrl      string     `protobuf:"bytes,3,opt,name=image_url,json=imageUrl,proto3" json:"image_url,omitempty"`
	Media         *RoomMedia `protobuf:"bytes,4,opt,name=media,proto3" json:"media,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SaveRoomBackgroundRequest) Reset() {
	*x = SaveRoomBackgroundRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[57]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*SaveRoomBackgroundRequest) ProtoMessage() {}

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

func (x *SaveRoomBackgroundRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *SaveRoomBackgroundRequest) GetRoomId() string {
	if x != nil {
		return x.RoomId
	}
	return ""
}

func (x *SaveRoomBackgroundRequest) GetImageUrl() string {
	if x != nil {
		return x.ImageUrl
	}
	return ""
}

func (x *SaveRoomBackgroundRequest) GetMedia() *RoomMedia {
	if x != nil {
		return x.Media
	}
	return nil
}

type SaveRoomBackgroundResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Background    *RoomBackgroundImage   `protobuf:"bytes,1,opt,name=background,proto3" json:"background,omitempty"`
	ServerTimeMs  int64                  `protobuf:"varint,2,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SaveRoomBackgroundResponse) Reset() {
	*x = SaveRoomBackgroundResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[58]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*SaveRoomBackgroundResponse) ProtoMessage() {}

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

func (x *SaveRoomBackgroundResponse) GetBackground() *RoomBackgroundImage {
	if x != nil {
		return x.Background
	}
	return nil
}

func (x *SaveRoomBackgroundResponse) GetServerTimeMs() int64 {
	if x != nil {
		return x.ServerTimeMs
	}
	return 0
}

type ListRoomBackgroundsRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Meta          *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	RoomId        string                 `protobuf:"bytes,2,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"`
	ViewerUserId  int64                  `protobuf:"varint,3,opt,name=viewer_user_id,json=viewerUserId,proto3" json:"viewer_user_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListRoomBackgroundsRequest) Reset() {
	*x = ListRoomBackgroundsRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[59]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ListRoomBackgroundsRequest) ProtoMessage() {}

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

func (x *ListRoomBackgroundsRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *ListRoomBackgroundsRequest) GetRoomId() string {
	if x != nil {
		return x.RoomId
	}
	return ""
}

func (x *ListRoomBackgroundsRequest) GetViewerUserId() int64 {
	if x != nil {
		return x.ViewerUserId
	}
	return 0
}

type ListRoomBackgroundsResponse struct {
	state                 protoimpl.MessageState `protogen:"open.v1"`
	Backgrounds           []*RoomBackgroundImage `protobuf:"bytes,1,rep,name=backgrounds,proto3" json:"backgrounds,omitempty"`
	SelectedBackgroundUrl string                 `protobuf:"bytes,2,opt,name=selected_background_url,json=selectedBackgroundUrl,proto3" json:"selected_background_url,omitempty"`
	ServerTimeMs          int64                  `protobuf:"varint,3,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"`
	SelectedBackground    *RoomBackgroundImage   `protobuf:"bytes,4,opt,name=selected_background,json=selectedBackground,proto3" json:"selected_background,omitempty"`
	unknownFields         protoimpl.UnknownFields
	sizeCache             protoimpl.SizeCache
}

func (x *ListRoomBackgroundsResponse) Reset() {
	*x = ListRoomBackgroundsResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[60]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ListRoomBackgroundsResponse) ProtoMessage() {}

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

func (x *ListRoomBackgroundsResponse) GetBackgrounds() []*RoomBackgroundImage {
	if x != nil {
		return x.Backgrounds
	}
	return nil
}

func (x *ListRoomBackgroundsResponse) GetSelectedBackgroundUrl() string {
	if x != nil {
		return x.SelectedBackgroundUrl
	}
	return ""
}

func (x *ListRoomBackgroundsResponse) GetServerTimeMs() int64 {
	if x != nil {
		return x.ServerTimeMs
	}
	return 0
}

func (x *ListRoomBackgroundsResponse) GetSelectedBackground() *RoomBackgroundImage {
	if x != nil {
		return x.SelectedBackground
	}
	return nil
}

type SetRoomBackgroundRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Meta          *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	BackgroundId  int64                  `protobuf:"varint,2,opt,name=background_id,json=backgroundId,proto3" json:"background_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SetRoomBackgroundRequest) Reset() {
	*x = SetRoomBackgroundRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[61]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*SetRoomBackgroundRequest) ProtoMessage() {}

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

func (x *SetRoomBackgroundRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *SetRoomBackgroundRequest) GetBackgroundId() int64 {
	if x != nil {
		return x.BackgroundId
	}
	return 0
}

type SetRoomBackgroundResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Result        *CommandResult         `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"`
	Room          *RoomSnapshot          `protobuf:"bytes,2,opt,name=room,proto3" json:"room,omitempty"`
	Background    *RoomBackgroundImage   `protobuf:"bytes,3,opt,name=background,proto3" json:"background,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SetRoomBackgroundResponse) Reset() {
	*x = SetRoomBackgroundResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[62]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*SetRoomBackgroundResponse) ProtoMessage() {}

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

func (x *SetRoomBackgroundResponse) GetResult() *CommandResult {
	if x != nil {
		return x.Result
	}
	return nil
}

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

func (x *SetRoomBackgroundResponse) GetBackground() *RoomBackgroundImage {
	if x != nil {
		return x.Background
	}
	return nil
}

// RoomDecorationResource 是 wallet 资源目录和有效 entitlement 在房间应用时固化的展示快照。
// 资源后续编辑、下架或 VIP 到期不会篡改历史 command log；新的读取只返回当前 Room Cell 已应用结果。
type RoomDecorationResource struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	ResourceId    int64                  `protobuf:"varint,1,opt,name=resource_id,json=resourceId,proto3" json:"resource_id,omitempty"`
	ResourceCode  string                 `protobuf:"bytes,2,opt,name=resource_code,json=resourceCode,proto3" json:"resource_code,omitempty"`
	ResourceType  string                 `protobuf:"bytes,3,opt,name=resource_type,json=resourceType,proto3" json:"resource_type,omitempty"`
	Name          string                 `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
	AssetUrl      string                 `protobuf:"bytes,5,opt,name=asset_url,json=assetUrl,proto3" json:"asset_url,omitempty"`
	PreviewUrl    string                 `protobuf:"bytes,6,opt,name=preview_url,json=previewUrl,proto3" json:"preview_url,omitempty"`
	AnimationUrl  string                 `protobuf:"bytes,7,opt,name=animation_url,json=animationUrl,proto3" json:"animation_url,omitempty"`
	Format        string                 `protobuf:"bytes,8,opt,name=format,proto3" json:"format,omitempty"`
	MetadataJson  string                 `protobuf:"bytes,9,opt,name=metadata_json,json=metadataJson,proto3" json:"metadata_json,omitempty"`
	EntitlementId string                 `protobuf:"bytes,10,opt,name=entitlement_id,json=entitlementId,proto3" json:"entitlement_id,omitempty"`
	TextColors    []string               `protobuf:"bytes,11,rep,name=text_colors,json=textColors,proto3" json:"text_colors,omitempty"`
	Stops         []float64              `protobuf:"fixed64,12,rep,packed,name=stops,proto3" json:"stops,omitempty"`
	AngleDegrees  float64                `protobuf:"fixed64,13,opt,name=angle_degrees,json=angleDegrees,proto3" json:"angle_degrees,omitempty"`
	ExpiresAtMs   int64                  `protobuf:"varint,14,opt,name=expires_at_ms,json=expiresAtMs,proto3" json:"expires_at_ms,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RoomDecorationResource) Reset() {
	*x = RoomDecorationResource{}
	mi := &file_proto_room_v1_room_proto_msgTypes[63]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*RoomDecorationResource) ProtoMessage() {}

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

func (x *RoomDecorationResource) GetResourceId() int64 {
	if x != nil {
		return x.ResourceId
	}
	return 0
}

func (x *RoomDecorationResource) GetResourceCode() string {
	if x != nil {
		return x.ResourceCode
	}
	return ""
}

func (x *RoomDecorationResource) GetResourceType() string {
	if x != nil {
		return x.ResourceType
	}
	return ""
}

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

func (x *RoomDecorationResource) GetAssetUrl() string {
	if x != nil {
		return x.AssetUrl
	}
	return ""
}

func (x *RoomDecorationResource) GetPreviewUrl() string {
	if x != nil {
		return x.PreviewUrl
	}
	return ""
}

func (x *RoomDecorationResource) GetAnimationUrl() string {
	if x != nil {
		return x.AnimationUrl
	}
	return ""
}

func (x *RoomDecorationResource) GetFormat() string {
	if x != nil {
		return x.Format
	}
	return ""
}

func (x *RoomDecorationResource) GetMetadataJson() string {
	if x != nil {
		return x.MetadataJson
	}
	return ""
}

func (x *RoomDecorationResource) GetEntitlementId() string {
	if x != nil {
		return x.EntitlementId
	}
	return ""
}

func (x *RoomDecorationResource) GetTextColors() []string {
	if x != nil {
		return x.TextColors
	}
	return nil
}

func (x *RoomDecorationResource) GetStops() []float64 {
	if x != nil {
		return x.Stops
	}
	return nil
}

func (x *RoomDecorationResource) GetAngleDegrees() float64 {
	if x != nil {
		return x.AngleDegrees
	}
	return 0
}

func (x *RoomDecorationResource) GetExpiresAtMs() int64 {
	if x != nil {
		return x.ExpiresAtMs
	}
	return 0
}

type ApplyRoomDecorationRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	Meta  *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	// decoration_type 仅接受 room_border/colored_room_name；资源类型分别固定为 room_border/room_name_style。
	DecorationType string `protobuf:"bytes,2,opt,name=decoration_type,json=decorationType,proto3" json:"decoration_type,omitempty"`
	ResourceId     int64  `protobuf:"varint,3,opt,name=resource_id,json=resourceId,proto3" json:"resource_id,omitempty"`
	EntitlementId  string `protobuf:"bytes,4,opt,name=entitlement_id,json=entitlementId,proto3" json:"entitlement_id,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *ApplyRoomDecorationRequest) Reset() {
	*x = ApplyRoomDecorationRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[64]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ApplyRoomDecorationRequest) ProtoMessage() {}

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

func (x *ApplyRoomDecorationRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *ApplyRoomDecorationRequest) GetDecorationType() string {
	if x != nil {
		return x.DecorationType
	}
	return ""
}

func (x *ApplyRoomDecorationRequest) GetResourceId() int64 {
	if x != nil {
		return x.ResourceId
	}
	return 0
}

func (x *ApplyRoomDecorationRequest) GetEntitlementId() string {
	if x != nil {
		return x.EntitlementId
	}
	return ""
}

type ApplyRoomDecorationResponse struct {
	state          protoimpl.MessageState  `protogen:"open.v1"`
	Result         *CommandResult          `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"`
	Room           *RoomSnapshot           `protobuf:"bytes,2,opt,name=room,proto3" json:"room,omitempty"`
	DecorationType string                  `protobuf:"bytes,3,opt,name=decoration_type,json=decorationType,proto3" json:"decoration_type,omitempty"`
	Resource       *RoomDecorationResource `protobuf:"bytes,4,opt,name=resource,proto3" json:"resource,omitempty"`
	ServerTimeMs   int64                   `protobuf:"varint,5,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *ApplyRoomDecorationResponse) Reset() {
	*x = ApplyRoomDecorationResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[65]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ApplyRoomDecorationResponse) ProtoMessage() {}

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

func (x *ApplyRoomDecorationResponse) GetResult() *CommandResult {
	if x != nil {
		return x.Result
	}
	return nil
}

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

func (x *ApplyRoomDecorationResponse) GetDecorationType() string {
	if x != nil {
		return x.DecorationType
	}
	return ""
}

func (x *ApplyRoomDecorationResponse) GetResource() *RoomDecorationResource {
	if x != nil {
		return x.Resource
	}
	return nil
}

func (x *ApplyRoomDecorationResponse) GetServerTimeMs() int64 {
	if x != nil {
		return x.ServerTimeMs
	}
	return 0
}

type AuthorizeRoomMediaUploadRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	Meta  *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	// purpose 接受 room_background/room_image/room_cover；授权发生在 COS PutObject 之前。
	Purpose       string     `protobuf:"bytes,2,opt,name=purpose,proto3" json:"purpose,omitempty"`
	Media         *RoomMedia `protobuf:"bytes,3,opt,name=media,proto3" json:"media,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AuthorizeRoomMediaUploadRequest) Reset() {
	*x = AuthorizeRoomMediaUploadRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[66]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AuthorizeRoomMediaUploadRequest) ProtoMessage() {}

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

func (x *AuthorizeRoomMediaUploadRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *AuthorizeRoomMediaUploadRequest) GetPurpose() string {
	if x != nil {
		return x.Purpose
	}
	return ""
}

func (x *AuthorizeRoomMediaUploadRequest) GetMedia() *RoomMedia {
	if x != nil {
		return x.Media
	}
	return nil
}

type AuthorizeRoomMediaUploadResponse struct {
	state           protoimpl.MessageState `protogen:"open.v1"`
	Allowed         bool                   `protobuf:"varint,1,opt,name=allowed,proto3" json:"allowed,omitempty"`
	ObjectKeyPrefix string                 `protobuf:"bytes,2,opt,name=object_key_prefix,json=objectKeyPrefix,proto3" json:"object_key_prefix,omitempty"`
	RoomVersion     int64                  `protobuf:"varint,3,opt,name=room_version,json=roomVersion,proto3" json:"room_version,omitempty"`
	ServerTimeMs    int64                  `protobuf:"varint,4,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"`
	// object_key 由 room owner 按首次 command_id+媒体哈希确定，gateway 不能自行换 key。
	ObjectKey string `protobuf:"bytes,5,opt,name=object_key,json=objectKey,proto3" json:"object_key,omitempty"`
	// cover_upload_id 仅 room_cover 返回；创建/更新房间必须提交该凭证，不能提交上传 URL。
	CoverUploadId string `protobuf:"bytes,6,opt,name=cover_upload_id,json=coverUploadId,proto3" json:"cover_upload_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AuthorizeRoomMediaUploadResponse) Reset() {
	*x = AuthorizeRoomMediaUploadResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[67]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AuthorizeRoomMediaUploadResponse) ProtoMessage() {}

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

func (x *AuthorizeRoomMediaUploadResponse) GetAllowed() bool {
	if x != nil {
		return x.Allowed
	}
	return false
}

func (x *AuthorizeRoomMediaUploadResponse) GetObjectKeyPrefix() string {
	if x != nil {
		return x.ObjectKeyPrefix
	}
	return ""
}

func (x *AuthorizeRoomMediaUploadResponse) GetRoomVersion() int64 {
	if x != nil {
		return x.RoomVersion
	}
	return 0
}

func (x *AuthorizeRoomMediaUploadResponse) GetServerTimeMs() int64 {
	if x != nil {
		return x.ServerTimeMs
	}
	return 0
}

func (x *AuthorizeRoomMediaUploadResponse) GetObjectKey() string {
	if x != nil {
		return x.ObjectKey
	}
	return ""
}

func (x *AuthorizeRoomMediaUploadResponse) GetCoverUploadId() string {
	if x != nil {
		return x.CoverUploadId
	}
	return ""
}

type CompleteRoomMediaUploadRequest struct {
	state   protoimpl.MessageState `protogen:"open.v1"`
	Meta    *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	Purpose string                 `protobuf:"bytes,2,opt,name=purpose,proto3" json:"purpose,omitempty"`
	// media 必须携带 PutObject 成功后的 url/object_key，并与首次 Authorize 的解析事实完全一致。
	Media         *RoomMedia `protobuf:"bytes,3,opt,name=media,proto3" json:"media,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CompleteRoomMediaUploadRequest) Reset() {
	*x = CompleteRoomMediaUploadRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[68]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*CompleteRoomMediaUploadRequest) ProtoMessage() {}

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

func (x *CompleteRoomMediaUploadRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *CompleteRoomMediaUploadRequest) GetPurpose() string {
	if x != nil {
		return x.Purpose
	}
	return ""
}

func (x *CompleteRoomMediaUploadRequest) GetMedia() *RoomMedia {
	if x != nil {
		return x.Media
	}
	return nil
}

type CompleteRoomMediaUploadResponse struct {
	state        protoimpl.MessageState `protogen:"open.v1"`
	Active       bool                   `protobuf:"varint,1,opt,name=active,proto3" json:"active,omitempty"`
	Media        *RoomMedia             `protobuf:"bytes,2,opt,name=media,proto3" json:"media,omitempty"`
	ServerTimeMs int64                  `protobuf:"varint,3,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"`
	// cover_upload_id 仅 room_cover 返回，并与 Authorize 首次生成的凭证完全一致。
	CoverUploadId string `protobuf:"bytes,4,opt,name=cover_upload_id,json=coverUploadId,proto3" json:"cover_upload_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CompleteRoomMediaUploadResponse) Reset() {
	*x = CompleteRoomMediaUploadResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[69]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*CompleteRoomMediaUploadResponse) ProtoMessage() {}

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

func (x *CompleteRoomMediaUploadResponse) GetActive() bool {
	if x != nil {
		return x.Active
	}
	return false
}

func (x *CompleteRoomMediaUploadResponse) GetMedia() *RoomMedia {
	if x != nil {
		return x.Media
	}
	return nil
}

func (x *CompleteRoomMediaUploadResponse) GetServerTimeMs() int64 {
	if x != nil {
		return x.ServerTimeMs
	}
	return 0
}

func (x *CompleteRoomMediaUploadResponse) GetCoverUploadId() string {
	if x != nil {
		return x.CoverUploadId
	}
	return ""
}

type SendRoomImageRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Meta          *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	Image         *RoomMedia             `protobuf:"bytes,2,opt,name=image,proto3" json:"image,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SendRoomImageRequest) Reset() {
	*x = SendRoomImageRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[70]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*SendRoomImageRequest) ProtoMessage() {}

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

func (x *SendRoomImageRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *SendRoomImageRequest) GetImage() *RoomMedia {
	if x != nil {
		return x.Image
	}
	return nil
}

type SendRoomImageResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Result        *CommandResult         `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"`
	Accepted      bool                   `protobuf:"varint,2,opt,name=accepted,proto3" json:"accepted,omitempty"`
	MessageId     string                 `protobuf:"bytes,3,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"`
	RoomId        string                 `protobuf:"bytes,4,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"`
	SenderUserId  int64                  `protobuf:"varint,5,opt,name=sender_user_id,json=senderUserId,proto3" json:"sender_user_id,omitempty"`
	ServerTimeMs  int64                  `protobuf:"varint,6,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"`
	Image         *RoomMedia             `protobuf:"bytes,7,opt,name=image,proto3" json:"image,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SendRoomImageResponse) Reset() {
	*x = SendRoomImageResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[71]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*SendRoomImageResponse) ProtoMessage() {}

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

func (x *SendRoomImageResponse) GetResult() *CommandResult {
	if x != nil {
		return x.Result
	}
	return nil
}

func (x *SendRoomImageResponse) GetAccepted() bool {
	if x != nil {
		return x.Accepted
	}
	return false
}

func (x *SendRoomImageResponse) GetMessageId() string {
	if x != nil {
		return x.MessageId
	}
	return ""
}

func (x *SendRoomImageResponse) GetRoomId() string {
	if x != nil {
		return x.RoomId
	}
	return ""
}

func (x *SendRoomImageResponse) GetSenderUserId() int64 {
	if x != nil {
		return x.SenderUserId
	}
	return 0
}

func (x *SendRoomImageResponse) GetServerTimeMs() int64 {
	if x != nil {
		return x.ServerTimeMs
	}
	return 0
}

func (x *SendRoomImageResponse) GetImage() *RoomMedia {
	if x != nil {
		return x.Image
	}
	return nil
}

// CreateRoomRequest 创建一个新的房间执行单元。
// 必填语义：meta.room_id、meta.command_id、meta.actor_user_id、mode、room_name 和 cover_upload_id。
// 同一个 meta.actor_user_id 只能作为 owner 创建一个房间；重复创建返回 Conflict。
type CreateRoomRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	Meta  *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	// seat_count 为空或 0 时使用后台房间配置默认值；正数必须命中后台启用座位数。
	SeatCount int32 `protobuf:"varint,2,opt,name=seat_count,json=seatCount,proto3" json:"seat_count,omitempty"`
	// mode 必须非空；当前只作为房间状态字段保存和透出。
	Mode string `protobuf:"bytes,3,opt,name=mode,proto3" json:"mode,omitempty"`
	// visible_region_id 由 gateway 按创建者 user-service region_id 填充；0 表示 GLOBAL 兜底列表桶。
	VisibleRegionId int64 `protobuf:"varint,4,opt,name=visible_region_id,json=visibleRegionId,proto3" json:"visible_region_id,omitempty"`
	// room_name 是客户端创建房间时填写的展示名称，room-service 会写入 RoomSnapshot.room_ext["title"]。
	RoomName string `protobuf:"bytes,5,opt,name=room_name,json=roomName,proto3" json:"room_name,omitempty"`
	// room_avatar 仅保留 legacy_timed App 的历史协议；权益制 App 禁止客户端直接提交 URL。
	RoomAvatar string `protobuf:"bytes,6,opt,name=room_avatar,json=roomAvatar,proto3" json:"room_avatar,omitempty"`
	// room_description 是房间简介，只作为房间扩展资料保存，不参与 Room Cell 高频状态决策。
	RoomDescription string `protobuf:"bytes,7,opt,name=room_description,json=roomDescription,proto3" json:"room_description,omitempty"`
	// room_short_id 是房间短 ID，首版直接等于创建者当前 default/current display_user_id。
	RoomShortId string `protobuf:"bytes,8,opt,name=room_short_id,json=roomShortId,proto3" json:"room_short_id,omitempty"`
	// owner_country_code 由 gateway 按创建者 user-service 当前国家填充，用于发现页国家分类筛选。
	OwnerCountryCode string `protobuf:"bytes,9,opt,name=owner_country_code,json=ownerCountryCode,proto3" json:"owner_country_code,omitempty"`
	// robot_room 只供内部机器人房间编排器设置；gateway 不接受客户端提交该字段。
	RobotRoom bool `protobuf:"varint,10,opt,name=robot_room,json=robotRoom,proto3" json:"robot_room,omitempty"`
	// robot_user_ids 是该机器人房间允许参与机器人送礼和虚拟上麦的用户集合。
	RobotUserIds []int64 `protobuf:"varint,11,rep,packed,name=robot_user_ids,json=robotUserIds,proto3" json:"robot_user_ids,omitempty"`
	// cover_upload_id 来自 POST /api/v1/rooms/covers/upload，消费后不能用于另一间房或另一次资料更新。
	CoverUploadId string `protobuf:"bytes,12,opt,name=cover_upload_id,json=coverUploadId,proto3" json:"cover_upload_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CreateRoomRequest) Reset() {
	*x = CreateRoomRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[72]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*CreateRoomRequest) ProtoMessage() {}

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

func (x *CreateRoomRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *CreateRoomRequest) GetSeatCount() int32 {
	if x != nil {
		return x.SeatCount
	}
	return 0
}

func (x *CreateRoomRequest) GetMode() string {
	if x != nil {
		return x.Mode
	}
	return ""
}

func (x *CreateRoomRequest) GetVisibleRegionId() int64 {
	if x != nil {
		return x.VisibleRegionId
	}
	return 0
}

func (x *CreateRoomRequest) GetRoomName() string {
	if x != nil {
		return x.RoomName
	}
	return ""
}

func (x *CreateRoomRequest) GetRoomAvatar() string {
	if x != nil {
		return x.RoomAvatar
	}
	return ""
}

func (x *CreateRoomRequest) GetRoomDescription() string {
	if x != nil {
		return x.RoomDescription
	}
	return ""
}

func (x *CreateRoomRequest) GetRoomShortId() string {
	if x != nil {
		return x.RoomShortId
	}
	return ""
}

func (x *CreateRoomRequest) GetOwnerCountryCode() string {
	if x != nil {
		return x.OwnerCountryCode
	}
	return ""
}

func (x *CreateRoomRequest) GetRobotRoom() bool {
	if x != nil {
		return x.RobotRoom
	}
	return false
}

func (x *CreateRoomRequest) GetRobotUserIds() []int64 {
	if x != nil {
		return x.RobotUserIds
	}
	return nil
}

func (x *CreateRoomRequest) GetCoverUploadId() string {
	if x != nil {
		return x.CoverUploadId
	}
	return ""
}

// CreateRoomResponse 返回新建后的房间快照。
type CreateRoomResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Result        *CommandResult         `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"`
	Room          *RoomSnapshot          `protobuf:"bytes,2,opt,name=room,proto3" json:"room,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CreateRoomResponse) Reset() {
	*x = CreateRoomResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[73]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*CreateRoomResponse) ProtoMessage() {}

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

func (x *CreateRoomResponse) GetResult() *CommandResult {
	if x != nil {
		return x.Result
	}
	return nil
}

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

// UpdateRoomProfileRequest 修改房间展示资料和麦位数量。
// 该命令只允许当前在房间 presence 内的 owner 执行，座位数必须命中后台启用配置。
type UpdateRoomProfileRequest struct {
	state    protoimpl.MessageState `protogen:"open.v1"`
	Meta     *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	RoomName *string                `protobuf:"bytes,2,opt,name=room_name,json=roomName,proto3,oneof" json:"room_name,omitempty"`
	// room_avatar 仅保留 legacy_timed App 的历史协议；权益制 App 使用 cover_upload_id。
	RoomAvatar      *string `protobuf:"bytes,3,opt,name=room_avatar,json=roomAvatar,proto3,oneof" json:"room_avatar,omitempty"`
	RoomDescription *string `protobuf:"bytes,4,opt,name=room_description,json=roomDescription,proto3,oneof" json:"room_description,omitempty"`
	SeatCount       *int32  `protobuf:"varint,5,opt,name=seat_count,json=seatCount,proto3,oneof" json:"seat_count,omitempty"`
	// cover_upload_id 与 room_avatar 互斥；room-service 在资料命令事务内消费该凭证。
	CoverUploadId *string `protobuf:"bytes,6,opt,name=cover_upload_id,json=coverUploadId,proto3,oneof" json:"cover_upload_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *UpdateRoomProfileRequest) Reset() {
	*x = UpdateRoomProfileRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[74]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*UpdateRoomProfileRequest) ProtoMessage() {}

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

func (x *UpdateRoomProfileRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *UpdateRoomProfileRequest) GetRoomName() string {
	if x != nil && x.RoomName != nil {
		return *x.RoomName
	}
	return ""
}

func (x *UpdateRoomProfileRequest) GetRoomAvatar() string {
	if x != nil && x.RoomAvatar != nil {
		return *x.RoomAvatar
	}
	return ""
}

func (x *UpdateRoomProfileRequest) GetRoomDescription() string {
	if x != nil && x.RoomDescription != nil {
		return *x.RoomDescription
	}
	return ""
}

func (x *UpdateRoomProfileRequest) GetSeatCount() int32 {
	if x != nil && x.SeatCount != nil {
		return *x.SeatCount
	}
	return 0
}

func (x *UpdateRoomProfileRequest) GetCoverUploadId() string {
	if x != nil && x.CoverUploadId != nil {
		return *x.CoverUploadId
	}
	return ""
}

// UpdateRoomProfileResponse 返回修改后的最新房间快照。
type UpdateRoomProfileResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Result        *CommandResult         `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"`
	Room          *RoomSnapshot          `protobuf:"bytes,2,opt,name=room,proto3" json:"room,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *UpdateRoomProfileResponse) Reset() {
	*x = UpdateRoomProfileResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[75]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*UpdateRoomProfileResponse) ProtoMessage() {}

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

func (x *UpdateRoomProfileResponse) GetResult() *CommandResult {
	if x != nil {
		return x.Result
	}
	return nil
}

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

// JoinRoomRequest 把用户 presence 接入房间业务态。
type RoomEntryVehicleSnapshot struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	ResourceId    int64                  `protobuf:"varint,1,opt,name=resource_id,json=resourceId,proto3" json:"resource_id,omitempty"`
	ResourceCode  string                 `protobuf:"bytes,2,opt,name=resource_code,json=resourceCode,proto3" json:"resource_code,omitempty"`
	Name          string                 `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
	AssetUrl      string                 `protobuf:"bytes,4,opt,name=asset_url,json=assetUrl,proto3" json:"asset_url,omitempty"`
	PreviewUrl    string                 `protobuf:"bytes,5,opt,name=preview_url,json=previewUrl,proto3" json:"preview_url,omitempty"`
	AnimationUrl  string                 `protobuf:"bytes,6,opt,name=animation_url,json=animationUrl,proto3" json:"animation_url,omitempty"`
	MetadataJson  string                 `protobuf:"bytes,7,opt,name=metadata_json,json=metadataJson,proto3" json:"metadata_json,omitempty"`
	EntitlementId string                 `protobuf:"bytes,8,opt,name=entitlement_id,json=entitlementId,proto3" json:"entitlement_id,omitempty"`
	ExpiresAtMs   int64                  `protobuf:"varint,9,opt,name=expires_at_ms,json=expiresAtMs,proto3" json:"expires_at_ms,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RoomEntryVehicleSnapshot) Reset() {
	*x = RoomEntryVehicleSnapshot{}
	mi := &file_proto_room_v1_room_proto_msgTypes[76]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*RoomEntryVehicleSnapshot) ProtoMessage() {}

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

func (x *RoomEntryVehicleSnapshot) GetResourceId() int64 {
	if x != nil {
		return x.ResourceId
	}
	return 0
}

func (x *RoomEntryVehicleSnapshot) GetResourceCode() string {
	if x != nil {
		return x.ResourceCode
	}
	return ""
}

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

func (x *RoomEntryVehicleSnapshot) GetAssetUrl() string {
	if x != nil {
		return x.AssetUrl
	}
	return ""
}

func (x *RoomEntryVehicleSnapshot) GetPreviewUrl() string {
	if x != nil {
		return x.PreviewUrl
	}
	return ""
}

func (x *RoomEntryVehicleSnapshot) GetAnimationUrl() string {
	if x != nil {
		return x.AnimationUrl
	}
	return ""
}

func (x *RoomEntryVehicleSnapshot) GetMetadataJson() string {
	if x != nil {
		return x.MetadataJson
	}
	return ""
}

func (x *RoomEntryVehicleSnapshot) GetEntitlementId() string {
	if x != nil {
		return x.EntitlementId
	}
	return ""
}

func (x *RoomEntryVehicleSnapshot) GetExpiresAtMs() int64 {
	if x != nil {
		return x.ExpiresAtMs
	}
	return 0
}

// RoomUserDisplayProfile 是 gateway 在入口固化的用户展示快照，只服务 IM/UI 兜底。
type RoomUserDisplayProfile struct {
	state               protoimpl.MessageState `protogen:"open.v1"`
	UserId              int64                  `protobuf:"varint,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
	Nickname            string                 `protobuf:"bytes,2,opt,name=nickname,proto3" json:"nickname,omitempty"`
	Avatar              string                 `protobuf:"bytes,3,opt,name=avatar,proto3" json:"avatar,omitempty"`
	DisplayUserId       string                 `protobuf:"bytes,4,opt,name=display_user_id,json=displayUserId,proto3" json:"display_user_id,omitempty"`
	PrettyDisplayUserId string                 `protobuf:"bytes,5,opt,name=pretty_display_user_id,json=prettyDisplayUserId,proto3" json:"pretty_display_user_id,omitempty"`
	unknownFields       protoimpl.UnknownFields
	sizeCache           protoimpl.SizeCache
}

func (x *RoomUserDisplayProfile) Reset() {
	*x = RoomUserDisplayProfile{}
	mi := &file_proto_room_v1_room_proto_msgTypes[77]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*RoomUserDisplayProfile) ProtoMessage() {}

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

func (x *RoomUserDisplayProfile) GetUserId() int64 {
	if x != nil {
		return x.UserId
	}
	return 0
}

func (x *RoomUserDisplayProfile) GetNickname() string {
	if x != nil {
		return x.Nickname
	}
	return ""
}

func (x *RoomUserDisplayProfile) GetAvatar() string {
	if x != nil {
		return x.Avatar
	}
	return ""
}

func (x *RoomUserDisplayProfile) GetDisplayUserId() string {
	if x != nil {
		return x.DisplayUserId
	}
	return ""
}

func (x *RoomUserDisplayProfile) GetPrettyDisplayUserId() string {
	if x != nil {
		return x.PrettyDisplayUserId
	}
	return ""
}

type JoinRoomRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	Meta  *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	Role  string                 `protobuf:"bytes,2,opt,name=role,proto3" json:"role,omitempty"`
	// password 只用于本次入房校验；room-service 不把明文写入 command log 或快照。
	Password       string                    `protobuf:"bytes,3,opt,name=password,proto3" json:"password,omitempty"`
	EntryVehicle   *RoomEntryVehicleSnapshot `protobuf:"bytes,4,opt,name=entry_vehicle,json=entryVehicle,proto3" json:"entry_vehicle,omitempty"`
	ActorCountryId int64                     `protobuf:"varint,5,opt,name=actor_country_id,json=actorCountryId,proto3" json:"actor_country_id,omitempty"`
	ActorRegionId  int64                     `protobuf:"varint,6,opt,name=actor_region_id,json=actorRegionId,proto3" json:"actor_region_id,omitempty"`
	// actor_is_robot 只由 room-service 内部机器人调度链路设置，外部 gateway 进房保持 false。
	ActorIsRobot bool `protobuf:"varint,7,opt,name=actor_is_robot,json=actorIsRobot,proto3" json:"actor_is_robot,omitempty"`
	// actor_display_profile 是进房用户展示资料快照，room-service 只透传到进房 IM/outbox，不写入 RoomState。
	ActorDisplayProfile *RoomUserDisplayProfile `protobuf:"bytes,8,opt,name=actor_display_profile,json=actorDisplayProfile,proto3" json:"actor_display_profile,omitempty"`
	// response_mode=lite 只裁剪响应快照，不改变 Room Cell 命令提交、outbox 或 IM 事件语义。
	ResponseMode string `protobuf:"bytes,9,opt,name=response_mode,json=responseMode,proto3" json:"response_mode,omitempty"`
	// presence_recovery 只用于客户端仍在房间但业务 presence 已超时清理的恢复。
	// 恢复成功只补回 Room Cell 在线状态，不发布 RoomUserJoined IM/outbox，避免重复入场表现和统计。
	PresenceRecovery bool `protobuf:"varint,10,opt,name=presence_recovery,json=presenceRecovery,proto3" json:"presence_recovery,omitempty"`
	unknownFields    protoimpl.UnknownFields
	sizeCache        protoimpl.SizeCache
}

func (x *JoinRoomRequest) Reset() {
	*x = JoinRoomRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[78]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*JoinRoomRequest) ProtoMessage() {}

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

func (x *JoinRoomRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *JoinRoomRequest) GetRole() string {
	if x != nil {
		return x.Role
	}
	return ""
}

func (x *JoinRoomRequest) GetPassword() string {
	if x != nil {
		return x.Password
	}
	return ""
}

func (x *JoinRoomRequest) GetEntryVehicle() *RoomEntryVehicleSnapshot {
	if x != nil {
		return x.EntryVehicle
	}
	return nil
}

func (x *JoinRoomRequest) GetActorCountryId() int64 {
	if x != nil {
		return x.ActorCountryId
	}
	return 0
}

func (x *JoinRoomRequest) GetActorRegionId() int64 {
	if x != nil {
		return x.ActorRegionId
	}
	return 0
}

func (x *JoinRoomRequest) GetActorIsRobot() bool {
	if x != nil {
		return x.ActorIsRobot
	}
	return false
}

func (x *JoinRoomRequest) GetActorDisplayProfile() *RoomUserDisplayProfile {
	if x != nil {
		return x.ActorDisplayProfile
	}
	return nil
}

func (x *JoinRoomRequest) GetResponseMode() string {
	if x != nil {
		return x.ResponseMode
	}
	return ""
}

func (x *JoinRoomRequest) GetPresenceRecovery() bool {
	if x != nil {
		return x.PresenceRecovery
	}
	return false
}

// RoomEffectiveVipSnapshot 是 room-service 在进房时从 wallet-service 固化的轻量 VIP 展示事实。
// 权益执行仍以后端 effective_benefits 为准，客户端不能用该快照自行声明房间权限。
type RoomEffectiveVipSnapshot struct {
	state                  protoimpl.MessageState `protogen:"open.v1"`
	ProgramType            string                 `protobuf:"bytes,1,opt,name=program_type,json=programType,proto3" json:"program_type,omitempty"`
	Level                  int32                  `protobuf:"varint,2,opt,name=level,proto3" json:"level,omitempty"`
	Name                   string                 `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
	RoomEntryNoticeEnabled bool                   `protobuf:"varint,4,opt,name=room_entry_notice_enabled,json=roomEntryNoticeEnabled,proto3" json:"room_entry_notice_enabled,omitempty"`
	unknownFields          protoimpl.UnknownFields
	sizeCache              protoimpl.SizeCache
}

func (x *RoomEffectiveVipSnapshot) Reset() {
	*x = RoomEffectiveVipSnapshot{}
	mi := &file_proto_room_v1_room_proto_msgTypes[79]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*RoomEffectiveVipSnapshot) ProtoMessage() {}

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

func (x *RoomEffectiveVipSnapshot) GetProgramType() string {
	if x != nil {
		return x.ProgramType
	}
	return ""
}

func (x *RoomEffectiveVipSnapshot) GetLevel() int32 {
	if x != nil {
		return x.Level
	}
	return 0
}

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

func (x *RoomEffectiveVipSnapshot) GetRoomEntryNoticeEnabled() bool {
	if x != nil {
		return x.RoomEntryNoticeEnabled
	}
	return false
}

// JoinRoomResponse 返回加入后的房间快照。
type JoinRoomResponse struct {
	state         protoimpl.MessageState    `protogen:"open.v1"`
	Result        *CommandResult            `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"`
	User          *RoomUser                 `protobuf:"bytes,2,opt,name=user,proto3" json:"user,omitempty"`
	Room          *RoomSnapshot             `protobuf:"bytes,3,opt,name=room,proto3" json:"room,omitempty"`
	EffectiveVip  *RoomEffectiveVipSnapshot `protobuf:"bytes,4,opt,name=effective_vip,json=effectiveVip,proto3" json:"effective_vip,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *JoinRoomResponse) Reset() {
	*x = JoinRoomResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[80]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*JoinRoomResponse) ProtoMessage() {}

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

func (x *JoinRoomResponse) GetResult() *CommandResult {
	if x != nil {
		return x.Result
	}
	return nil
}

func (x *JoinRoomResponse) GetUser() *RoomUser {
	if x != nil {
		return x.User
	}
	return nil
}

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

func (x *JoinRoomResponse) GetEffectiveVip() *RoomEffectiveVipSnapshot {
	if x != nil {
		return x.EffectiveVip
	}
	return nil
}

// RoomHeartbeatRequest 显式刷新已经存在的房间业务 presence。
// 它不能替代 JoinRoom；用户不在房间时必须拒绝，避免心跳把已离开的用户重新加入房间。
type RoomHeartbeatRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Meta          *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RoomHeartbeatRequest) Reset() {
	*x = RoomHeartbeatRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[81]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*RoomHeartbeatRequest) ProtoMessage() {}

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

func (x *RoomHeartbeatRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

// RoomHeartbeatResponse 返回刷新后的用户 presence 和房间快照。
type RoomHeartbeatResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Result        *CommandResult         `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"`
	User          *RoomUser              `protobuf:"bytes,2,opt,name=user,proto3" json:"user,omitempty"`
	Room          *RoomSnapshot          `protobuf:"bytes,3,opt,name=room,proto3" json:"room,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RoomHeartbeatResponse) Reset() {
	*x = RoomHeartbeatResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[82]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*RoomHeartbeatResponse) ProtoMessage() {}

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

func (x *RoomHeartbeatResponse) GetResult() *CommandResult {
	if x != nil {
		return x.Result
	}
	return nil
}

func (x *RoomHeartbeatResponse) GetUser() *RoomUser {
	if x != nil {
		return x.User
	}
	return nil
}

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

// LeaveRoomRequest 把用户从房间 presence 移出。
type LeaveRoomRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Meta          *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *LeaveRoomRequest) Reset() {
	*x = LeaveRoomRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[83]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*LeaveRoomRequest) ProtoMessage() {}

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

func (x *LeaveRoomRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

// LeaveRoomResponse 返回离房后的房间快照。
type LeaveRoomResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Result        *CommandResult         `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"`
	Room          *RoomSnapshot          `protobuf:"bytes,2,opt,name=room,proto3" json:"room,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *LeaveRoomResponse) Reset() {
	*x = LeaveRoomResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[84]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*LeaveRoomResponse) ProtoMessage() {}

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

func (x *LeaveRoomResponse) GetResult() *CommandResult {
	if x != nil {
		return x.Result
	}
	return nil
}

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

// CloseRoomRequest 关闭房间并清理业务 presence 和麦位。
type CloseRoomRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Meta          *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	Reason        string                 `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CloseRoomRequest) Reset() {
	*x = CloseRoomRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[85]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*CloseRoomRequest) ProtoMessage() {}

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

func (x *CloseRoomRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *CloseRoomRequest) GetReason() string {
	if x != nil {
		return x.Reason
	}
	return ""
}

// CloseRoomResponse 返回关闭后的房间快照。
type CloseRoomResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Result        *CommandResult         `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"`
	Room          *RoomSnapshot          `protobuf:"bytes,2,opt,name=room,proto3" json:"room,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CloseRoomResponse) Reset() {
	*x = CloseRoomResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[86]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*CloseRoomResponse) ProtoMessage() {}

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

func (x *CloseRoomResponse) GetResult() *CommandResult {
	if x != nil {
		return x.Result
	}
	return nil
}

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

// AdminRoomListItem 是后台房间管理卡片；它来自 room-service owner 读模型，不允许后台直连房间库。
type AdminRoomListItem struct {
	state             protoimpl.MessageState `protogen:"open.v1"`
	RoomId            string                 `protobuf:"bytes,1,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"`
	RoomShortId       string                 `protobuf:"bytes,2,opt,name=room_short_id,json=roomShortId,proto3" json:"room_short_id,omitempty"`
	VisibleRegionId   int64                  `protobuf:"varint,3,opt,name=visible_region_id,json=visibleRegionId,proto3" json:"visible_region_id,omitempty"`
	OwnerUserId       int64                  `protobuf:"varint,4,opt,name=owner_user_id,json=ownerUserId,proto3" json:"owner_user_id,omitempty"`
	Title             string                 `protobuf:"bytes,5,opt,name=title,proto3" json:"title,omitempty"`
	CoverUrl          string                 `protobuf:"bytes,6,opt,name=cover_url,json=coverUrl,proto3" json:"cover_url,omitempty"`
	Mode              string                 `protobuf:"bytes,7,opt,name=mode,proto3" json:"mode,omitempty"`
	Status            string                 `protobuf:"bytes,8,opt,name=status,proto3" json:"status,omitempty"`
	CloseReason       string                 `protobuf:"bytes,9,opt,name=close_reason,json=closeReason,proto3" json:"close_reason,omitempty"`
	ClosedByAdminId   uint64                 `protobuf:"varint,10,opt,name=closed_by_admin_id,json=closedByAdminId,proto3" json:"closed_by_admin_id,omitempty"`
	ClosedByAdminName string                 `protobuf:"bytes,11,opt,name=closed_by_admin_name,json=closedByAdminName,proto3" json:"closed_by_admin_name,omitempty"`
	ClosedAtMs        int64                  `protobuf:"varint,12,opt,name=closed_at_ms,json=closedAtMs,proto3" json:"closed_at_ms,omitempty"`
	Heat              int64                  `protobuf:"varint,13,opt,name=heat,proto3" json:"heat,omitempty"`
	OnlineCount       int32                  `protobuf:"varint,14,opt,name=online_count,json=onlineCount,proto3" json:"online_count,omitempty"`
	SeatCount         int32                  `protobuf:"varint,15,opt,name=seat_count,json=seatCount,proto3" json:"seat_count,omitempty"`
	OccupiedSeatCount int32                  `protobuf:"varint,16,opt,name=occupied_seat_count,json=occupiedSeatCount,proto3" json:"occupied_seat_count,omitempty"`
	SortScore         int64                  `protobuf:"varint,17,opt,name=sort_score,json=sortScore,proto3" json:"sort_score,omitempty"`
	CreatedAtMs       int64                  `protobuf:"varint,18,opt,name=created_at_ms,json=createdAtMs,proto3" json:"created_at_ms,omitempty"`
	UpdatedAtMs       int64                  `protobuf:"varint,19,opt,name=updated_at_ms,json=updatedAtMs,proto3" json:"updated_at_ms,omitempty"`
	// locked 只暴露是否需要入房密码，供内部展示投影生成可安全点击的房间入口。
	Locked        bool `protobuf:"varint,20,opt,name=locked,proto3" json:"locked,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AdminRoomListItem) Reset() {
	*x = AdminRoomListItem{}
	mi := &file_proto_room_v1_room_proto_msgTypes[87]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AdminRoomListItem) ProtoMessage() {}

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

func (x *AdminRoomListItem) GetRoomId() string {
	if x != nil {
		return x.RoomId
	}
	return ""
}

func (x *AdminRoomListItem) GetRoomShortId() string {
	if x != nil {
		return x.RoomShortId
	}
	return ""
}

func (x *AdminRoomListItem) GetVisibleRegionId() int64 {
	if x != nil {
		return x.VisibleRegionId
	}
	return 0
}

func (x *AdminRoomListItem) GetOwnerUserId() int64 {
	if x != nil {
		return x.OwnerUserId
	}
	return 0
}

func (x *AdminRoomListItem) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *AdminRoomListItem) GetCoverUrl() string {
	if x != nil {
		return x.CoverUrl
	}
	return ""
}

func (x *AdminRoomListItem) GetMode() string {
	if x != nil {
		return x.Mode
	}
	return ""
}

func (x *AdminRoomListItem) GetStatus() string {
	if x != nil {
		return x.Status
	}
	return ""
}

func (x *AdminRoomListItem) GetCloseReason() string {
	if x != nil {
		return x.CloseReason
	}
	return ""
}

func (x *AdminRoomListItem) GetClosedByAdminId() uint64 {
	if x != nil {
		return x.ClosedByAdminId
	}
	return 0
}

func (x *AdminRoomListItem) GetClosedByAdminName() string {
	if x != nil {
		return x.ClosedByAdminName
	}
	return ""
}

func (x *AdminRoomListItem) GetClosedAtMs() int64 {
	if x != nil {
		return x.ClosedAtMs
	}
	return 0
}

func (x *AdminRoomListItem) GetHeat() int64 {
	if x != nil {
		return x.Heat
	}
	return 0
}

func (x *AdminRoomListItem) GetOnlineCount() int32 {
	if x != nil {
		return x.OnlineCount
	}
	return 0
}

func (x *AdminRoomListItem) GetSeatCount() int32 {
	if x != nil {
		return x.SeatCount
	}
	return 0
}

func (x *AdminRoomListItem) GetOccupiedSeatCount() int32 {
	if x != nil {
		return x.OccupiedSeatCount
	}
	return 0
}

func (x *AdminRoomListItem) GetSortScore() int64 {
	if x != nil {
		return x.SortScore
	}
	return 0
}

func (x *AdminRoomListItem) GetCreatedAtMs() int64 {
	if x != nil {
		return x.CreatedAtMs
	}
	return 0
}

func (x *AdminRoomListItem) GetUpdatedAtMs() int64 {
	if x != nil {
		return x.UpdatedAtMs
	}
	return 0
}

func (x *AdminRoomListItem) GetLocked() bool {
	if x != nil {
		return x.Locked
	}
	return false
}

type AdminListRoomsRequest struct {
	state           protoimpl.MessageState `protogen:"open.v1"`
	Meta            *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	Page            int32                  `protobuf:"varint,2,opt,name=page,proto3" json:"page,omitempty"`
	PageSize        int32                  `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
	Keyword         string                 `protobuf:"bytes,4,opt,name=keyword,proto3" json:"keyword,omitempty"`
	Status          string                 `protobuf:"bytes,5,opt,name=status,proto3" json:"status,omitempty"`
	VisibleRegionId int64                  `protobuf:"varint,6,opt,name=visible_region_id,json=visibleRegionId,proto3" json:"visible_region_id,omitempty"`
	SortBy          string                 `protobuf:"bytes,7,opt,name=sort_by,json=sortBy,proto3" json:"sort_by,omitempty"`
	SortDirection   string                 `protobuf:"bytes,8,opt,name=sort_direction,json=sortDirection,proto3" json:"sort_direction,omitempty"`
	OwnerUserId     int64                  `protobuf:"varint,9,opt,name=owner_user_id,json=ownerUserId,proto3" json:"owner_user_id,omitempty"`
	// owner_user_ids 由可信后台 facade 注入，用于在 count/分页前限制到外管递归团队。
	OwnerUserIds  []int64 `protobuf:"varint,10,rep,packed,name=owner_user_ids,json=ownerUserIds,proto3" json:"owner_user_ids,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AdminListRoomsRequest) Reset() {
	*x = AdminListRoomsRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[88]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AdminListRoomsRequest) ProtoMessage() {}

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

func (x *AdminListRoomsRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *AdminListRoomsRequest) GetPage() int32 {
	if x != nil {
		return x.Page
	}
	return 0
}

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

func (x *AdminListRoomsRequest) GetKeyword() string {
	if x != nil {
		return x.Keyword
	}
	return ""
}

func (x *AdminListRoomsRequest) GetStatus() string {
	if x != nil {
		return x.Status
	}
	return ""
}

func (x *AdminListRoomsRequest) GetVisibleRegionId() int64 {
	if x != nil {
		return x.VisibleRegionId
	}
	return 0
}

func (x *AdminListRoomsRequest) GetSortBy() string {
	if x != nil {
		return x.SortBy
	}
	return ""
}

func (x *AdminListRoomsRequest) GetSortDirection() string {
	if x != nil {
		return x.SortDirection
	}
	return ""
}

func (x *AdminListRoomsRequest) GetOwnerUserId() int64 {
	if x != nil {
		return x.OwnerUserId
	}
	return 0
}

func (x *AdminListRoomsRequest) GetOwnerUserIds() []int64 {
	if x != nil {
		return x.OwnerUserIds
	}
	return nil
}

type AdminListRoomsResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Rooms         []*AdminRoomListItem   `protobuf:"bytes,1,rep,name=rooms,proto3" json:"rooms,omitempty"`
	Total         int64                  `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"`
	ServerTimeMs  int64                  `protobuf:"varint,3,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AdminListRoomsResponse) Reset() {
	*x = AdminListRoomsResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[89]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AdminListRoomsResponse) ProtoMessage() {}

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

func (x *AdminListRoomsResponse) GetRooms() []*AdminRoomListItem {
	if x != nil {
		return x.Rooms
	}
	return nil
}

func (x *AdminListRoomsResponse) GetTotal() int64 {
	if x != nil {
		return x.Total
	}
	return 0
}

func (x *AdminListRoomsResponse) GetServerTimeMs() int64 {
	if x != nil {
		return x.ServerTimeMs
	}
	return 0
}

type AdminGetRoomRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Meta          *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	RoomId        string                 `protobuf:"bytes,2,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AdminGetRoomRequest) Reset() {
	*x = AdminGetRoomRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[90]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AdminGetRoomRequest) ProtoMessage() {}

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

func (x *AdminGetRoomRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *AdminGetRoomRequest) GetRoomId() string {
	if x != nil {
		return x.RoomId
	}
	return ""
}

type AdminGetRoomResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Room          *AdminRoomListItem     `protobuf:"bytes,1,opt,name=room,proto3" json:"room,omitempty"`
	ServerTimeMs  int64                  `protobuf:"varint,2,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AdminGetRoomResponse) Reset() {
	*x = AdminGetRoomResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[91]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AdminGetRoomResponse) ProtoMessage() {}

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

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

func (x *AdminGetRoomResponse) GetServerTimeMs() int64 {
	if x != nil {
		return x.ServerTimeMs
	}
	return 0
}

type AdminUpdateRoomRequest struct {
	state           protoimpl.MessageState `protogen:"open.v1"`
	Meta            *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	Title           *string                `protobuf:"bytes,2,opt,name=title,proto3,oneof" json:"title,omitempty"`
	CoverUrl        *string                `protobuf:"bytes,3,opt,name=cover_url,json=coverUrl,proto3,oneof" json:"cover_url,omitempty"`
	Description     *string                `protobuf:"bytes,4,opt,name=description,proto3,oneof" json:"description,omitempty"`
	Mode            *string                `protobuf:"bytes,5,opt,name=mode,proto3,oneof" json:"mode,omitempty"`
	Status          *string                `protobuf:"bytes,6,opt,name=status,proto3,oneof" json:"status,omitempty"`
	VisibleRegionId *int64                 `protobuf:"varint,7,opt,name=visible_region_id,json=visibleRegionId,proto3,oneof" json:"visible_region_id,omitempty"`
	CloseReason     string                 `protobuf:"bytes,8,opt,name=close_reason,json=closeReason,proto3" json:"close_reason,omitempty"`
	AdminId         uint64                 `protobuf:"varint,9,opt,name=admin_id,json=adminId,proto3" json:"admin_id,omitempty"`
	AdminName       string                 `protobuf:"bytes,10,opt,name=admin_name,json=adminName,proto3" json:"admin_name,omitempty"`
	// owner_country_code 是内部运维/同步字段，用于通过真实 Room Cell owner 修复房主国家投影。
	OwnerCountryCode *string `protobuf:"bytes,11,opt,name=owner_country_code,json=ownerCountryCode,proto3,oneof" json:"owner_country_code,omitempty"`
	unknownFields    protoimpl.UnknownFields
	sizeCache        protoimpl.SizeCache
}

func (x *AdminUpdateRoomRequest) Reset() {
	*x = AdminUpdateRoomRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[92]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AdminUpdateRoomRequest) ProtoMessage() {}

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

func (x *AdminUpdateRoomRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *AdminUpdateRoomRequest) GetTitle() string {
	if x != nil && x.Title != nil {
		return *x.Title
	}
	return ""
}

func (x *AdminUpdateRoomRequest) GetCoverUrl() string {
	if x != nil && x.CoverUrl != nil {
		return *x.CoverUrl
	}
	return ""
}

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

func (x *AdminUpdateRoomRequest) GetMode() string {
	if x != nil && x.Mode != nil {
		return *x.Mode
	}
	return ""
}

func (x *AdminUpdateRoomRequest) GetStatus() string {
	if x != nil && x.Status != nil {
		return *x.Status
	}
	return ""
}

func (x *AdminUpdateRoomRequest) GetVisibleRegionId() int64 {
	if x != nil && x.VisibleRegionId != nil {
		return *x.VisibleRegionId
	}
	return 0
}

func (x *AdminUpdateRoomRequest) GetCloseReason() string {
	if x != nil {
		return x.CloseReason
	}
	return ""
}

func (x *AdminUpdateRoomRequest) GetAdminId() uint64 {
	if x != nil {
		return x.AdminId
	}
	return 0
}

func (x *AdminUpdateRoomRequest) GetAdminName() string {
	if x != nil {
		return x.AdminName
	}
	return ""
}

func (x *AdminUpdateRoomRequest) GetOwnerCountryCode() string {
	if x != nil && x.OwnerCountryCode != nil {
		return *x.OwnerCountryCode
	}
	return ""
}

type AdminUpdateRoomResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Result        *CommandResult         `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"`
	Room          *RoomSnapshot          `protobuf:"bytes,2,opt,name=room,proto3" json:"room,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AdminUpdateRoomResponse) Reset() {
	*x = AdminUpdateRoomResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[93]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AdminUpdateRoomResponse) ProtoMessage() {}

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

func (x *AdminUpdateRoomResponse) GetResult() *CommandResult {
	if x != nil {
		return x.Result
	}
	return nil
}

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

type AdminBanRoomRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Meta          *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	Reason        string                 `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"`
	AdminId       uint64                 `protobuf:"varint,3,opt,name=admin_id,json=adminId,proto3" json:"admin_id,omitempty"`
	AdminName     string                 `protobuf:"bytes,4,opt,name=admin_name,json=adminName,proto3" json:"admin_name,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AdminBanRoomRequest) Reset() {
	*x = AdminBanRoomRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[94]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AdminBanRoomRequest) ProtoMessage() {}

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

func (x *AdminBanRoomRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *AdminBanRoomRequest) GetReason() string {
	if x != nil {
		return x.Reason
	}
	return ""
}

func (x *AdminBanRoomRequest) GetAdminId() uint64 {
	if x != nil {
		return x.AdminId
	}
	return 0
}

func (x *AdminBanRoomRequest) GetAdminName() string {
	if x != nil {
		return x.AdminName
	}
	return ""
}

type AdminBanRoomResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Result        *CommandResult         `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"`
	Room          *RoomSnapshot          `protobuf:"bytes,2,opt,name=room,proto3" json:"room,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AdminBanRoomResponse) Reset() {
	*x = AdminBanRoomResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[95]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AdminBanRoomResponse) ProtoMessage() {}

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

func (x *AdminBanRoomResponse) GetResult() *CommandResult {
	if x != nil {
		return x.Result
	}
	return nil
}

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

type AdminUnbanRoomRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Meta          *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	Reason        string                 `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"`
	AdminId       uint64                 `protobuf:"varint,3,opt,name=admin_id,json=adminId,proto3" json:"admin_id,omitempty"`
	AdminName     string                 `protobuf:"bytes,4,opt,name=admin_name,json=adminName,proto3" json:"admin_name,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AdminUnbanRoomRequest) Reset() {
	*x = AdminUnbanRoomRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[96]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AdminUnbanRoomRequest) ProtoMessage() {}

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

func (x *AdminUnbanRoomRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *AdminUnbanRoomRequest) GetReason() string {
	if x != nil {
		return x.Reason
	}
	return ""
}

func (x *AdminUnbanRoomRequest) GetAdminId() uint64 {
	if x != nil {
		return x.AdminId
	}
	return 0
}

func (x *AdminUnbanRoomRequest) GetAdminName() string {
	if x != nil {
		return x.AdminName
	}
	return ""
}

type AdminUnbanRoomResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Result        *CommandResult         `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"`
	Room          *RoomSnapshot          `protobuf:"bytes,2,opt,name=room,proto3" json:"room,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AdminUnbanRoomResponse) Reset() {
	*x = AdminUnbanRoomResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[97]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AdminUnbanRoomResponse) ProtoMessage() {}

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

func (x *AdminUnbanRoomResponse) GetResult() *CommandResult {
	if x != nil {
		return x.Result
	}
	return nil
}

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

type AdminDeleteRoomRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Meta          *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	AdminId       uint64                 `protobuf:"varint,2,opt,name=admin_id,json=adminId,proto3" json:"admin_id,omitempty"`
	AdminName     string                 `protobuf:"bytes,3,opt,name=admin_name,json=adminName,proto3" json:"admin_name,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AdminDeleteRoomRequest) Reset() {
	*x = AdminDeleteRoomRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[98]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AdminDeleteRoomRequest) ProtoMessage() {}

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

func (x *AdminDeleteRoomRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *AdminDeleteRoomRequest) GetAdminId() uint64 {
	if x != nil {
		return x.AdminId
	}
	return 0
}

func (x *AdminDeleteRoomRequest) GetAdminName() string {
	if x != nil {
		return x.AdminName
	}
	return ""
}

type AdminDeleteRoomResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Result        *CommandResult         `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"`
	Room          *RoomSnapshot          `protobuf:"bytes,2,opt,name=room,proto3" json:"room,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AdminDeleteRoomResponse) Reset() {
	*x = AdminDeleteRoomResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[99]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AdminDeleteRoomResponse) ProtoMessage() {}

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

func (x *AdminDeleteRoomResponse) GetResult() *CommandResult {
	if x != nil {
		return x.Result
	}
	return nil
}

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

// MicUpRequest 申请把用户放到指定麦位。
type MicUpRequest struct {
	state  protoimpl.MessageState `protogen:"open.v1"`
	Meta   *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	SeatNo int32                  `protobuf:"varint,2,opt,name=seat_no,json=seatNo,proto3" json:"seat_no,omitempty"`
	// target_display_profile 是上麦用户展示快照，room-service 只透传到麦位 IM/outbox。
	TargetDisplayProfile *RoomUserDisplayProfile `protobuf:"bytes,3,opt,name=target_display_profile,json=targetDisplayProfile,proto3" json:"target_display_profile,omitempty"`
	unknownFields        protoimpl.UnknownFields
	sizeCache            protoimpl.SizeCache
}

func (x *MicUpRequest) Reset() {
	*x = MicUpRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[100]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*MicUpRequest) ProtoMessage() {}

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

func (x *MicUpRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *MicUpRequest) GetSeatNo() int32 {
	if x != nil {
		return x.SeatNo
	}
	return 0
}

func (x *MicUpRequest) GetTargetDisplayProfile() *RoomUserDisplayProfile {
	if x != nil {
		return x.TargetDisplayProfile
	}
	return nil
}

// MicUpResponse 返回最新房间快照与目标麦位。
type MicUpResponse struct {
	state             protoimpl.MessageState `protogen:"open.v1"`
	Result            *CommandResult         `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"`
	SeatNo            int32                  `protobuf:"varint,2,opt,name=seat_no,json=seatNo,proto3" json:"seat_no,omitempty"`
	Room              *RoomSnapshot          `protobuf:"bytes,3,opt,name=room,proto3" json:"room,omitempty"`
	MicSessionId      string                 `protobuf:"bytes,4,opt,name=mic_session_id,json=micSessionId,proto3" json:"mic_session_id,omitempty"`
	PublishDeadlineMs int64                  `protobuf:"varint,5,opt,name=publish_deadline_ms,json=publishDeadlineMs,proto3" json:"publish_deadline_ms,omitempty"`
	unknownFields     protoimpl.UnknownFields
	sizeCache         protoimpl.SizeCache
}

func (x *MicUpResponse) Reset() {
	*x = MicUpResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[101]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*MicUpResponse) ProtoMessage() {}

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

func (x *MicUpResponse) GetResult() *CommandResult {
	if x != nil {
		return x.Result
	}
	return nil
}

func (x *MicUpResponse) GetSeatNo() int32 {
	if x != nil {
		return x.SeatNo
	}
	return 0
}

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

func (x *MicUpResponse) GetMicSessionId() string {
	if x != nil {
		return x.MicSessionId
	}
	return ""
}

func (x *MicUpResponse) GetPublishDeadlineMs() int64 {
	if x != nil {
		return x.PublishDeadlineMs
	}
	return 0
}

// MicDownRequest 把用户从当前麦位移下。
type MicDownRequest struct {
	state        protoimpl.MessageState `protogen:"open.v1"`
	Meta         *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	TargetUserId int64                  `protobuf:"varint,2,opt,name=target_user_id,json=targetUserId,proto3" json:"target_user_id,omitempty"`
	// reason 为空表示主动下麦；系统自动释放麦位时会写入稳定原因，例如 publish_timeout。
	Reason string `protobuf:"bytes,3,opt,name=reason,proto3" json:"reason,omitempty"`
	// target_display_profile 只用于补偿 IM 展示，空值不影响下麦状态提交。
	TargetDisplayProfile *RoomUserDisplayProfile `protobuf:"bytes,4,opt,name=target_display_profile,json=targetDisplayProfile,proto3" json:"target_display_profile,omitempty"`
	unknownFields        protoimpl.UnknownFields
	sizeCache            protoimpl.SizeCache
}

func (x *MicDownRequest) Reset() {
	*x = MicDownRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[102]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*MicDownRequest) ProtoMessage() {}

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

func (x *MicDownRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *MicDownRequest) GetTargetUserId() int64 {
	if x != nil {
		return x.TargetUserId
	}
	return 0
}

func (x *MicDownRequest) GetReason() string {
	if x != nil {
		return x.Reason
	}
	return ""
}

func (x *MicDownRequest) GetTargetDisplayProfile() *RoomUserDisplayProfile {
	if x != nil {
		return x.TargetDisplayProfile
	}
	return nil
}

// MicDownResponse 返回最新房间快照与目标麦位。
type MicDownResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Result        *CommandResult         `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"`
	SeatNo        int32                  `protobuf:"varint,2,opt,name=seat_no,json=seatNo,proto3" json:"seat_no,omitempty"`
	Room          *RoomSnapshot          `protobuf:"bytes,3,opt,name=room,proto3" json:"room,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *MicDownResponse) Reset() {
	*x = MicDownResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[103]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*MicDownResponse) ProtoMessage() {}

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

func (x *MicDownResponse) GetResult() *CommandResult {
	if x != nil {
		return x.Result
	}
	return nil
}

func (x *MicDownResponse) GetSeatNo() int32 {
	if x != nil {
		return x.SeatNo
	}
	return 0
}

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

// ChangeMicSeatRequest 直接调整指定用户所在麦位。
type ChangeMicSeatRequest struct {
	state        protoimpl.MessageState `protogen:"open.v1"`
	Meta         *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	TargetUserId int64                  `protobuf:"varint,2,opt,name=target_user_id,json=targetUserId,proto3" json:"target_user_id,omitempty"`
	SeatNo       int32                  `protobuf:"varint,3,opt,name=seat_no,json=seatNo,proto3" json:"seat_no,omitempty"`
	// target_display_profile 是被换麦用户展示快照，避免客户端等待在线成员刷新。
	TargetDisplayProfile *RoomUserDisplayProfile `protobuf:"bytes,4,opt,name=target_display_profile,json=targetDisplayProfile,proto3" json:"target_display_profile,omitempty"`
	unknownFields        protoimpl.UnknownFields
	sizeCache            protoimpl.SizeCache
}

func (x *ChangeMicSeatRequest) Reset() {
	*x = ChangeMicSeatRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[104]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ChangeMicSeatRequest) ProtoMessage() {}

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

func (x *ChangeMicSeatRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *ChangeMicSeatRequest) GetTargetUserId() int64 {
	if x != nil {
		return x.TargetUserId
	}
	return 0
}

func (x *ChangeMicSeatRequest) GetSeatNo() int32 {
	if x != nil {
		return x.SeatNo
	}
	return 0
}

func (x *ChangeMicSeatRequest) GetTargetDisplayProfile() *RoomUserDisplayProfile {
	if x != nil {
		return x.TargetDisplayProfile
	}
	return nil
}

// ChangeMicSeatResponse 返回变更后的房间快照。
type ChangeMicSeatResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Result        *CommandResult         `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"`
	Room          *RoomSnapshot          `protobuf:"bytes,2,opt,name=room,proto3" json:"room,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ChangeMicSeatResponse) Reset() {
	*x = ChangeMicSeatResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[105]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ChangeMicSeatResponse) ProtoMessage() {}

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

func (x *ChangeMicSeatResponse) GetResult() *CommandResult {
	if x != nil {
		return x.Result
	}
	return nil
}

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

// ConfirmMicPublishingRequest 确认当前 mic_session 已经在 RTC 侧成功发布音频。
// 客户端 SDK 回调和后续 RTC webhook 都必须带 mic_session_id、room_version 和 event_time_ms。
type ConfirmMicPublishingRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	Meta  *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	// target_user_id 为空时默认确认 actor_user_id；RTC webhook 入口可显式指定目标用户。
	TargetUserId int64  `protobuf:"varint,2,opt,name=target_user_id,json=targetUserId,proto3" json:"target_user_id,omitempty"`
	MicSessionId string `protobuf:"bytes,3,opt,name=mic_session_id,json=micSessionId,proto3" json:"mic_session_id,omitempty"`
	RoomVersion  int64  `protobuf:"varint,4,opt,name=room_version,json=roomVersion,proto3" json:"room_version,omitempty"`
	EventTimeMs  int64  `protobuf:"varint,5,opt,name=event_time_ms,json=eventTimeMs,proto3" json:"event_time_ms,omitempty"`
	Source       string `protobuf:"bytes,6,opt,name=source,proto3" json:"source,omitempty"`
	// target_display_profile 是确认发流用户展示快照，空值不影响状态收敛。
	TargetDisplayProfile *RoomUserDisplayProfile `protobuf:"bytes,7,opt,name=target_display_profile,json=targetDisplayProfile,proto3" json:"target_display_profile,omitempty"`
	unknownFields        protoimpl.UnknownFields
	sizeCache            protoimpl.SizeCache
}

func (x *ConfirmMicPublishingRequest) Reset() {
	*x = ConfirmMicPublishingRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[106]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ConfirmMicPublishingRequest) ProtoMessage() {}

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

func (x *ConfirmMicPublishingRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *ConfirmMicPublishingRequest) GetTargetUserId() int64 {
	if x != nil {
		return x.TargetUserId
	}
	return 0
}

func (x *ConfirmMicPublishingRequest) GetMicSessionId() string {
	if x != nil {
		return x.MicSessionId
	}
	return ""
}

func (x *ConfirmMicPublishingRequest) GetRoomVersion() int64 {
	if x != nil {
		return x.RoomVersion
	}
	return 0
}

func (x *ConfirmMicPublishingRequest) GetEventTimeMs() int64 {
	if x != nil {
		return x.EventTimeMs
	}
	return 0
}

func (x *ConfirmMicPublishingRequest) GetSource() string {
	if x != nil {
		return x.Source
	}
	return ""
}

func (x *ConfirmMicPublishingRequest) GetTargetDisplayProfile() *RoomUserDisplayProfile {
	if x != nil {
		return x.TargetDisplayProfile
	}
	return nil
}

// ConfirmMicPublishingResponse 返回确认后的最新房间快照。
type ConfirmMicPublishingResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Result        *CommandResult         `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"`
	SeatNo        int32                  `protobuf:"varint,2,opt,name=seat_no,json=seatNo,proto3" json:"seat_no,omitempty"`
	Room          *RoomSnapshot          `protobuf:"bytes,3,opt,name=room,proto3" json:"room,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ConfirmMicPublishingResponse) Reset() {
	*x = ConfirmMicPublishingResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[107]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ConfirmMicPublishingResponse) ProtoMessage() {}

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

func (x *ConfirmMicPublishingResponse) GetResult() *CommandResult {
	if x != nil {
		return x.Result
	}
	return nil
}

func (x *ConfirmMicPublishingResponse) GetSeatNo() int32 {
	if x != nil {
		return x.SeatNo
	}
	return 0
}

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

// MicHeartbeatRequest 刷新当前 publishing 麦位会话的服务端麦上心跳。
type MicHeartbeatRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	Meta  *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	// target_user_id 为空时默认刷新 actor_user_id 自己的麦上会话。
	TargetUserId int64 `protobuf:"varint,2,opt,name=target_user_id,json=targetUserId,proto3" json:"target_user_id,omitempty"`
	// mic_session_id 必须匹配当前麦位上的会话，避免旧心跳续住新会话。
	MicSessionId  string `protobuf:"bytes,3,opt,name=mic_session_id,json=micSessionId,proto3" json:"mic_session_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *MicHeartbeatRequest) Reset() {
	*x = MicHeartbeatRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[108]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*MicHeartbeatRequest) ProtoMessage() {}

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

func (x *MicHeartbeatRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *MicHeartbeatRequest) GetTargetUserId() int64 {
	if x != nil {
		return x.TargetUserId
	}
	return 0
}

func (x *MicHeartbeatRequest) GetMicSessionId() string {
	if x != nil {
		return x.MicSessionId
	}
	return ""
}

// MicHeartbeatResponse 返回刷新后的麦位和房间快照。
type MicHeartbeatResponse struct {
	state            protoimpl.MessageState `protogen:"open.v1"`
	Result           *CommandResult         `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"`
	SeatNo           int32                  `protobuf:"varint,2,opt,name=seat_no,json=seatNo,proto3" json:"seat_no,omitempty"`
	Room             *RoomSnapshot          `protobuf:"bytes,3,opt,name=room,proto3" json:"room,omitempty"`
	MicHeartbeatAtMs int64                  `protobuf:"varint,4,opt,name=mic_heartbeat_at_ms,json=micHeartbeatAtMs,proto3" json:"mic_heartbeat_at_ms,omitempty"`
	unknownFields    protoimpl.UnknownFields
	sizeCache        protoimpl.SizeCache
}

func (x *MicHeartbeatResponse) Reset() {
	*x = MicHeartbeatResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[109]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*MicHeartbeatResponse) ProtoMessage() {}

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

func (x *MicHeartbeatResponse) GetResult() *CommandResult {
	if x != nil {
		return x.Result
	}
	return nil
}

func (x *MicHeartbeatResponse) GetSeatNo() int32 {
	if x != nil {
		return x.SeatNo
	}
	return 0
}

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

func (x *MicHeartbeatResponse) GetMicHeartbeatAtMs() int64 {
	if x != nil {
		return x.MicHeartbeatAtMs
	}
	return 0
}

// SetMicMuteRequest 修改麦位上的服务端可见静音态。
type SetMicMuteRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	Meta  *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	// target_user_id 为空时默认修改 actor_user_id 自己的麦克风静音态。
	TargetUserId int64 `protobuf:"varint,2,opt,name=target_user_id,json=targetUserId,proto3" json:"target_user_id,omitempty"`
	Muted        bool  `protobuf:"varint,3,opt,name=muted,proto3" json:"muted,omitempty"`
	// target_display_profile 是被静音状态变更用户展示快照，只服务 IM/UI 兜底。
	TargetDisplayProfile *RoomUserDisplayProfile `protobuf:"bytes,4,opt,name=target_display_profile,json=targetDisplayProfile,proto3" json:"target_display_profile,omitempty"`
	unknownFields        protoimpl.UnknownFields
	sizeCache            protoimpl.SizeCache
}

func (x *SetMicMuteRequest) Reset() {
	*x = SetMicMuteRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[110]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*SetMicMuteRequest) ProtoMessage() {}

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

func (x *SetMicMuteRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *SetMicMuteRequest) GetTargetUserId() int64 {
	if x != nil {
		return x.TargetUserId
	}
	return 0
}

func (x *SetMicMuteRequest) GetMuted() bool {
	if x != nil {
		return x.Muted
	}
	return false
}

func (x *SetMicMuteRequest) GetTargetDisplayProfile() *RoomUserDisplayProfile {
	if x != nil {
		return x.TargetDisplayProfile
	}
	return nil
}

// SetMicMuteResponse 返回静音态变更后的最新房间快照。
type SetMicMuteResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Result        *CommandResult         `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"`
	SeatNo        int32                  `protobuf:"varint,2,opt,name=seat_no,json=seatNo,proto3" json:"seat_no,omitempty"`
	Room          *RoomSnapshot          `protobuf:"bytes,3,opt,name=room,proto3" json:"room,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SetMicMuteResponse) Reset() {
	*x = SetMicMuteResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[111]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*SetMicMuteResponse) ProtoMessage() {}

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

func (x *SetMicMuteResponse) GetResult() *CommandResult {
	if x != nil {
		return x.Result
	}
	return nil
}

func (x *SetMicMuteResponse) GetSeatNo() int32 {
	if x != nil {
		return x.SeatNo
	}
	return 0
}

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

// ApplyRTCEventRequest 把可信 RTC 服务端回调转换成 Room Cell 命令。
// event_type 当前只接受 audio_started、audio_stopped、room_exited。
type ApplyRTCEventRequest struct {
	state           protoimpl.MessageState `protogen:"open.v1"`
	Meta            *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	TargetUserId    int64                  `protobuf:"varint,2,opt,name=target_user_id,json=targetUserId,proto3" json:"target_user_id,omitempty"`
	EventType       string                 `protobuf:"bytes,3,opt,name=event_type,json=eventType,proto3" json:"event_type,omitempty"`
	EventTimeMs     int64                  `protobuf:"varint,4,opt,name=event_time_ms,json=eventTimeMs,proto3" json:"event_time_ms,omitempty"`
	Reason          string                 `protobuf:"bytes,5,opt,name=reason,proto3" json:"reason,omitempty"`
	Source          string                 `protobuf:"bytes,6,opt,name=source,proto3" json:"source,omitempty"`
	ExternalEventId string                 `protobuf:"bytes,7,opt,name=external_event_id,json=externalEventId,proto3" json:"external_event_id,omitempty"`
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

func (x *ApplyRTCEventRequest) Reset() {
	*x = ApplyRTCEventRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[112]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ApplyRTCEventRequest) ProtoMessage() {}

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

func (x *ApplyRTCEventRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *ApplyRTCEventRequest) GetTargetUserId() int64 {
	if x != nil {
		return x.TargetUserId
	}
	return 0
}

func (x *ApplyRTCEventRequest) GetEventType() string {
	if x != nil {
		return x.EventType
	}
	return ""
}

func (x *ApplyRTCEventRequest) GetEventTimeMs() int64 {
	if x != nil {
		return x.EventTimeMs
	}
	return 0
}

func (x *ApplyRTCEventRequest) GetReason() string {
	if x != nil {
		return x.Reason
	}
	return ""
}

func (x *ApplyRTCEventRequest) GetSource() string {
	if x != nil {
		return x.Source
	}
	return ""
}

func (x *ApplyRTCEventRequest) GetExternalEventId() string {
	if x != nil {
		return x.ExternalEventId
	}
	return ""
}

// ApplyRTCEventResponse 返回 RTC 事件落房间状态后的快照。
type ApplyRTCEventResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Result        *CommandResult         `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"`
	SeatNo        int32                  `protobuf:"varint,2,opt,name=seat_no,json=seatNo,proto3" json:"seat_no,omitempty"`
	Room          *RoomSnapshot          `protobuf:"bytes,3,opt,name=room,proto3" json:"room,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ApplyRTCEventResponse) Reset() {
	*x = ApplyRTCEventResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[113]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ApplyRTCEventResponse) ProtoMessage() {}

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

func (x *ApplyRTCEventResponse) GetResult() *CommandResult {
	if x != nil {
		return x.Result
	}
	return nil
}

func (x *ApplyRTCEventResponse) GetSeatNo() int32 {
	if x != nil {
		return x.SeatNo
	}
	return 0
}

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

// SetMicSeatLockRequest 锁定或解锁指定麦位。
type SetMicSeatLockRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Meta          *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	SeatNo        int32                  `protobuf:"varint,2,opt,name=seat_no,json=seatNo,proto3" json:"seat_no,omitempty"`
	Locked        bool                   `protobuf:"varint,3,opt,name=locked,proto3" json:"locked,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SetMicSeatLockRequest) Reset() {
	*x = SetMicSeatLockRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[114]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*SetMicSeatLockRequest) ProtoMessage() {}

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

func (x *SetMicSeatLockRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *SetMicSeatLockRequest) GetSeatNo() int32 {
	if x != nil {
		return x.SeatNo
	}
	return 0
}

func (x *SetMicSeatLockRequest) GetLocked() bool {
	if x != nil {
		return x.Locked
	}
	return false
}

// SetMicSeatLockResponse 返回锁麦后的最新房间快照。
type SetMicSeatLockResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Result        *CommandResult         `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"`
	Room          *RoomSnapshot          `protobuf:"bytes,2,opt,name=room,proto3" json:"room,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SetMicSeatLockResponse) Reset() {
	*x = SetMicSeatLockResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[115]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*SetMicSeatLockResponse) ProtoMessage() {}

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

func (x *SetMicSeatLockResponse) GetResult() *CommandResult {
	if x != nil {
		return x.Result
	}
	return nil
}

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

// SetChatEnabledRequest 开启或关闭房间公屏。
type SetChatEnabledRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Meta          *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	Enabled       bool                   `protobuf:"varint,2,opt,name=enabled,proto3" json:"enabled,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SetChatEnabledRequest) Reset() {
	*x = SetChatEnabledRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[116]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*SetChatEnabledRequest) ProtoMessage() {}

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

func (x *SetChatEnabledRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *SetChatEnabledRequest) GetEnabled() bool {
	if x != nil {
		return x.Enabled
	}
	return false
}

// SetChatEnabledResponse 返回聊天开关变更后的最新房间快照。
type SetChatEnabledResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Result        *CommandResult         `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"`
	Room          *RoomSnapshot          `protobuf:"bytes,2,opt,name=room,proto3" json:"room,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SetChatEnabledResponse) Reset() {
	*x = SetChatEnabledResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[117]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*SetChatEnabledResponse) ProtoMessage() {}

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

func (x *SetChatEnabledResponse) GetResult() *CommandResult {
	if x != nil {
		return x.Result
	}
	return nil
}

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

// SetRoomPasswordRequest 设置或清空房间入房密码。
// locked=true 时 password 必须非空；locked=false 表示清空密码并解除锁房。
type SetRoomPasswordRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Meta          *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	Locked        bool                   `protobuf:"varint,2,opt,name=locked,proto3" json:"locked,omitempty"`
	Password      string                 `protobuf:"bytes,3,opt,name=password,proto3" json:"password,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SetRoomPasswordRequest) Reset() {
	*x = SetRoomPasswordRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[118]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*SetRoomPasswordRequest) ProtoMessage() {}

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

func (x *SetRoomPasswordRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *SetRoomPasswordRequest) GetLocked() bool {
	if x != nil {
		return x.Locked
	}
	return false
}

func (x *SetRoomPasswordRequest) GetPassword() string {
	if x != nil {
		return x.Password
	}
	return ""
}

// SetRoomPasswordResponse 返回锁房状态变更后的最新房间快照。
type SetRoomPasswordResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Result        *CommandResult         `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"`
	Room          *RoomSnapshot          `protobuf:"bytes,2,opt,name=room,proto3" json:"room,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SetRoomPasswordResponse) Reset() {
	*x = SetRoomPasswordResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[119]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*SetRoomPasswordResponse) ProtoMessage() {}

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

func (x *SetRoomPasswordResponse) GetResult() *CommandResult {
	if x != nil {
		return x.Result
	}
	return nil
}

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

// SetRoomAdminRequest 添加或移除房间管理员。
type SetRoomAdminRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Meta          *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	TargetUserId  int64                  `protobuf:"varint,2,opt,name=target_user_id,json=targetUserId,proto3" json:"target_user_id,omitempty"`
	Enabled       bool                   `protobuf:"varint,3,opt,name=enabled,proto3" json:"enabled,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SetRoomAdminRequest) Reset() {
	*x = SetRoomAdminRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[120]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*SetRoomAdminRequest) ProtoMessage() {}

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

func (x *SetRoomAdminRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *SetRoomAdminRequest) GetTargetUserId() int64 {
	if x != nil {
		return x.TargetUserId
	}
	return 0
}

func (x *SetRoomAdminRequest) GetEnabled() bool {
	if x != nil {
		return x.Enabled
	}
	return false
}

// SetRoomAdminResponse 返回管理员集合变更后的最新房间快照。
type SetRoomAdminResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Result        *CommandResult         `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"`
	Room          *RoomSnapshot          `protobuf:"bytes,2,opt,name=room,proto3" json:"room,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SetRoomAdminResponse) Reset() {
	*x = SetRoomAdminResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[121]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*SetRoomAdminResponse) ProtoMessage() {}

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

func (x *SetRoomAdminResponse) GetResult() *CommandResult {
	if x != nil {
		return x.Result
	}
	return nil
}

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

// MuteUserRequest 修改房间内禁言态。
type MuteUserRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Meta          *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	TargetUserId  int64                  `protobuf:"varint,2,opt,name=target_user_id,json=targetUserId,proto3" json:"target_user_id,omitempty"`
	Muted         bool                   `protobuf:"varint,3,opt,name=muted,proto3" json:"muted,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *MuteUserRequest) Reset() {
	*x = MuteUserRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[122]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*MuteUserRequest) ProtoMessage() {}

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

func (x *MuteUserRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *MuteUserRequest) GetTargetUserId() int64 {
	if x != nil {
		return x.TargetUserId
	}
	return 0
}

func (x *MuteUserRequest) GetMuted() bool {
	if x != nil {
		return x.Muted
	}
	return false
}

// MuteUserResponse 返回最新房间快照。
type MuteUserResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Result        *CommandResult         `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"`
	Room          *RoomSnapshot          `protobuf:"bytes,2,opt,name=room,proto3" json:"room,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *MuteUserResponse) Reset() {
	*x = MuteUserResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[123]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*MuteUserResponse) ProtoMessage() {}

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

func (x *MuteUserResponse) GetResult() *CommandResult {
	if x != nil {
		return x.Result
	}
	return nil
}

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

// KickUserRequest 把指定用户踢出房间。
type KickUserRequest struct {
	state        protoimpl.MessageState `protogen:"open.v1"`
	Meta         *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	TargetUserId int64                  `protobuf:"varint,2,opt,name=target_user_id,json=targetUserId,proto3" json:"target_user_id,omitempty"`
	// duration_ms 为 0 表示永久 ban；大于 0 表示从服务端当前 UTC 时间起禁止进房的时长。
	DurationMs    int64 `protobuf:"varint,3,opt,name=duration_ms,json=durationMs,proto3" json:"duration_ms,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *KickUserRequest) Reset() {
	*x = KickUserRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[124]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*KickUserRequest) ProtoMessage() {}

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

func (x *KickUserRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *KickUserRequest) GetTargetUserId() int64 {
	if x != nil {
		return x.TargetUserId
	}
	return 0
}

func (x *KickUserRequest) GetDurationMs() int64 {
	if x != nil {
		return x.DurationMs
	}
	return 0
}

// KickUserResponse 返回最新房间快照。
type KickUserResponse struct {
	state  protoimpl.MessageState `protogen:"open.v1"`
	Result *CommandResult         `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"`
	Room   *RoomSnapshot          `protobuf:"bytes,2,opt,name=room,proto3" json:"room,omitempty"`
	// rtc_kicked 表示 room-service 已通过 TRTC 服务端接口移除目标用户；失败不回滚房间踢人事实。
	RtcKicked bool `protobuf:"varint,3,opt,name=rtc_kicked,json=rtcKicked,proto3" json:"rtc_kicked,omitempty"`
	// rtc_kick_error 仅用于调用方排障和告警，客户端展示仍以统一错误码和房间状态为准。
	RtcKickError  string `protobuf:"bytes,4,opt,name=rtc_kick_error,json=rtcKickError,proto3" json:"rtc_kick_error,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *KickUserResponse) Reset() {
	*x = KickUserResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[125]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*KickUserResponse) ProtoMessage() {}

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

func (x *KickUserResponse) GetResult() *CommandResult {
	if x != nil {
		return x.Result
	}
	return nil
}

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

func (x *KickUserResponse) GetRtcKicked() bool {
	if x != nil {
		return x.RtcKicked
	}
	return false
}

func (x *KickUserResponse) GetRtcKickError() string {
	if x != nil {
		return x.RtcKickError
	}
	return ""
}

// UnbanUserRequest 解除房间内 ban，用户仍需重新 JoinRoom。
type UnbanUserRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Meta          *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	TargetUserId  int64                  `protobuf:"varint,2,opt,name=target_user_id,json=targetUserId,proto3" json:"target_user_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *UnbanUserRequest) Reset() {
	*x = UnbanUserRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[126]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*UnbanUserRequest) ProtoMessage() {}

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

func (x *UnbanUserRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *UnbanUserRequest) GetTargetUserId() int64 {
	if x != nil {
		return x.TargetUserId
	}
	return 0
}

// UnbanUserResponse 返回解封后的最新房间快照。
type UnbanUserResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Result        *CommandResult         `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"`
	Room          *RoomSnapshot          `protobuf:"bytes,2,opt,name=room,proto3" json:"room,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *UnbanUserResponse) Reset() {
	*x = UnbanUserResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[127]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*UnbanUserResponse) ProtoMessage() {}

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

func (x *UnbanUserResponse) GetResult() *CommandResult {
	if x != nil {
		return x.Result
	}
	return nil
}

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

// SystemEvictUserRequest 是平台级封禁、风控或后台治理触发的系统驱逐入口。
// 该命令仍由 Room Cell 修改房间状态；调用方不能直接写房间 presence 或麦位。
type SystemEvictUserRequest struct {
	state          protoimpl.MessageState `protogen:"open.v1"`
	Meta           *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	TargetUserId   int64                  `protobuf:"varint,2,opt,name=target_user_id,json=targetUserId,proto3" json:"target_user_id,omitempty"`
	OperatorUserId int64                  `protobuf:"varint,3,opt,name=operator_user_id,json=operatorUserId,proto3" json:"operator_user_id,omitempty"`
	Reason         string                 `protobuf:"bytes,4,opt,name=reason,proto3" json:"reason,omitempty"`
	// ban_from_room 为 true 时把用户加入当前房间 ban 集合，防止同一房间恢复入口重新进入。
	BanFromRoom   bool `protobuf:"varint,5,opt,name=ban_from_room,json=banFromRoom,proto3" json:"ban_from_room,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SystemEvictUserRequest) Reset() {
	*x = SystemEvictUserRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[128]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*SystemEvictUserRequest) ProtoMessage() {}

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

func (x *SystemEvictUserRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *SystemEvictUserRequest) GetTargetUserId() int64 {
	if x != nil {
		return x.TargetUserId
	}
	return 0
}

func (x *SystemEvictUserRequest) GetOperatorUserId() int64 {
	if x != nil {
		return x.OperatorUserId
	}
	return 0
}

func (x *SystemEvictUserRequest) GetReason() string {
	if x != nil {
		return x.Reason
	}
	return ""
}

func (x *SystemEvictUserRequest) GetBanFromRoom() bool {
	if x != nil {
		return x.BanFromRoom
	}
	return false
}

// SystemEvictUserResponse 返回系统驱逐的房间状态和外部 RTC 副作用结果。
type SystemEvictUserResponse struct {
	state          protoimpl.MessageState `protogen:"open.v1"`
	HadCurrentRoom bool                   `protobuf:"varint,1,opt,name=had_current_room,json=hadCurrentRoom,proto3" json:"had_current_room,omitempty"`
	Result         *CommandResult         `protobuf:"bytes,2,opt,name=result,proto3" json:"result,omitempty"`
	Room           *RoomSnapshot          `protobuf:"bytes,3,opt,name=room,proto3" json:"room,omitempty"`
	RoomId         string                 `protobuf:"bytes,4,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"`
	RtcKicked      bool                   `protobuf:"varint,5,opt,name=rtc_kicked,json=rtcKicked,proto3" json:"rtc_kicked,omitempty"`
	RtcKickError   string                 `protobuf:"bytes,6,opt,name=rtc_kick_error,json=rtcKickError,proto3" json:"rtc_kick_error,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *SystemEvictUserResponse) Reset() {
	*x = SystemEvictUserResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[129]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*SystemEvictUserResponse) ProtoMessage() {}

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

func (x *SystemEvictUserResponse) GetHadCurrentRoom() bool {
	if x != nil {
		return x.HadCurrentRoom
	}
	return false
}

func (x *SystemEvictUserResponse) GetResult() *CommandResult {
	if x != nil {
		return x.Result
	}
	return nil
}

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

func (x *SystemEvictUserResponse) GetRoomId() string {
	if x != nil {
		return x.RoomId
	}
	return ""
}

func (x *SystemEvictUserResponse) GetRtcKicked() bool {
	if x != nil {
		return x.RtcKicked
	}
	return false
}

func (x *SystemEvictUserResponse) GetRtcKickError() string {
	if x != nil {
		return x.RtcKickError
	}
	return ""
}

// SendGiftTargetHostScope 是 gateway 在送礼入口按每个接收方固化的主播工资入账快照。
type SendGiftTargetHostScope struct {
	state        protoimpl.MessageState `protogen:"open.v1"`
	TargetUserId int64                  `protobuf:"varint,1,opt,name=target_user_id,json=targetUserId,proto3" json:"target_user_id,omitempty"`
	// target_is_host 由 gateway 根据 user-service active host profile 注入，客户端不能直接声明。
	TargetIsHost bool `protobuf:"varint,2,opt,name=target_is_host,json=targetIsHost,proto3" json:"target_is_host,omitempty"`
	// target_host_region_id 是主播所属区域，后续结算按该区域匹配 Host & Agency 政策。
	TargetHostRegionId int64 `protobuf:"varint,3,opt,name=target_host_region_id,json=targetHostRegionId,proto3" json:"target_host_region_id,omitempty"`
	// target_agency_owner_user_id 是送礼瞬间主播上级代理收款用户；为空表示当前无代理或代理关系不可结算。
	TargetAgencyOwnerUserId int64 `protobuf:"varint,4,opt,name=target_agency_owner_user_id,json=targetAgencyOwnerUserId,proto3" json:"target_agency_owner_user_id,omitempty"`
	unknownFields           protoimpl.UnknownFields
	sizeCache               protoimpl.SizeCache
}

func (x *SendGiftTargetHostScope) Reset() {
	*x = SendGiftTargetHostScope{}
	mi := &file_proto_room_v1_room_proto_msgTypes[130]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*SendGiftTargetHostScope) ProtoMessage() {}

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

func (x *SendGiftTargetHostScope) GetTargetUserId() int64 {
	if x != nil {
		return x.TargetUserId
	}
	return 0
}

func (x *SendGiftTargetHostScope) GetTargetIsHost() bool {
	if x != nil {
		return x.TargetIsHost
	}
	return false
}

func (x *SendGiftTargetHostScope) GetTargetHostRegionId() int64 {
	if x != nil {
		return x.TargetHostRegionId
	}
	return 0
}

func (x *SendGiftTargetHostScope) GetTargetAgencyOwnerUserId() int64 {
	if x != nil {
		return x.TargetAgencyOwnerUserId
	}
	return 0
}

// SendGiftDisplayProfile 是 gateway 在送礼入口固化的轻量展示快照。
// room-service 只把它写入事件和 IM，不把用户资料扩散到 Room Cell 核心状态。
type SendGiftDisplayProfile struct {
	state               protoimpl.MessageState `protogen:"open.v1"`
	UserId              int64                  `protobuf:"varint,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
	Username            string                 `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"`
	Avatar              string                 `protobuf:"bytes,3,opt,name=avatar,proto3" json:"avatar,omitempty"`
	DisplayUserId       string                 `protobuf:"bytes,4,opt,name=display_user_id,json=displayUserId,proto3" json:"display_user_id,omitempty"`
	PrettyDisplayUserId string                 `protobuf:"bytes,5,opt,name=pretty_display_user_id,json=prettyDisplayUserId,proto3" json:"pretty_display_user_id,omitempty"`
	// effective_vip_level 是送礼入口查询到的当前生效 VIP 等级；0 表示当前无有效 VIP 或展示查询已降级。
	EffectiveVipLevel int32 `protobuf:"varint,6,opt,name=effective_vip_level,json=effectiveVipLevel,proto3" json:"effective_vip_level,omitempty"`
	// gift_broadcast_animation_url 是 wallet 已校验的有效 gift_tray_skin 动效快照；空值表示无可渲染托盘或查询降级。
	GiftBroadcastAnimationUrl string `protobuf:"bytes,7,opt,name=gift_broadcast_animation_url,json=giftBroadcastAnimationUrl,proto3" json:"gift_broadcast_animation_url,omitempty"`
	unknownFields             protoimpl.UnknownFields
	sizeCache                 protoimpl.SizeCache
}

func (x *SendGiftDisplayProfile) Reset() {
	*x = SendGiftDisplayProfile{}
	mi := &file_proto_room_v1_room_proto_msgTypes[131]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*SendGiftDisplayProfile) ProtoMessage() {}

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

func (x *SendGiftDisplayProfile) GetUserId() int64 {
	if x != nil {
		return x.UserId
	}
	return 0
}

func (x *SendGiftDisplayProfile) GetUsername() string {
	if x != nil {
		return x.Username
	}
	return ""
}

func (x *SendGiftDisplayProfile) GetAvatar() string {
	if x != nil {
		return x.Avatar
	}
	return ""
}

func (x *SendGiftDisplayProfile) GetDisplayUserId() string {
	if x != nil {
		return x.DisplayUserId
	}
	return ""
}

func (x *SendGiftDisplayProfile) GetPrettyDisplayUserId() string {
	if x != nil {
		return x.PrettyDisplayUserId
	}
	return ""
}

func (x *SendGiftDisplayProfile) GetEffectiveVipLevel() int32 {
	if x != nil {
		return x.EffectiveVipLevel
	}
	return 0
}

func (x *SendGiftDisplayProfile) GetGiftBroadcastAnimationUrl() string {
	if x != nil {
		return x.GiftBroadcastAnimationUrl
	}
	return ""
}

// SendGiftBatchTarget 是批量送礼展示响应中单个目标的结算和展示快照。
// 它只服务发送方本地即时展示，不替代逐目标 RoomGiftSent 业务事实。
type SendGiftBatchTarget struct {
	state                       protoimpl.MessageState `protogen:"open.v1"`
	TargetUserId                int64                  `protobuf:"varint,1,opt,name=target_user_id,json=targetUserId,proto3" json:"target_user_id,omitempty"`
	ReceiverNickname            string                 `protobuf:"bytes,2,opt,name=receiver_nickname,json=receiverNickname,proto3" json:"receiver_nickname,omitempty"`
	ReceiverAvatar              string                 `protobuf:"bytes,3,opt,name=receiver_avatar,json=receiverAvatar,proto3" json:"receiver_avatar,omitempty"`
	ReceiverDisplayUserId       string                 `protobuf:"bytes,4,opt,name=receiver_display_user_id,json=receiverDisplayUserId,proto3" json:"receiver_display_user_id,omitempty"`
	ReceiverPrettyDisplayUserId string                 `protobuf:"bytes,5,opt,name=receiver_pretty_display_user_id,json=receiverPrettyDisplayUserId,proto3" json:"receiver_pretty_display_user_id,omitempty"`
	GiftValue                   int64                  `protobuf:"varint,6,opt,name=gift_value,json=giftValue,proto3" json:"gift_value,omitempty"`
	TargetGiftValue             int64                  `protobuf:"varint,7,opt,name=target_gift_value,json=targetGiftValue,proto3" json:"target_gift_value,omitempty"`
	CoinSpent                   int64                  `protobuf:"varint,8,opt,name=coin_spent,json=coinSpent,proto3" json:"coin_spent,omitempty"`
	BillingReceiptId            string                 `protobuf:"bytes,9,opt,name=billing_receipt_id,json=billingReceiptId,proto3" json:"billing_receipt_id,omitempty"`
	CommandId                   string                 `protobuf:"bytes,10,opt,name=command_id,json=commandId,proto3" json:"command_id,omitempty"`
	LuckyGift                   *LuckyGiftDrawResult   `protobuf:"bytes,11,opt,name=lucky_gift,json=luckyGift,proto3" json:"lucky_gift,omitempty"`
	unknownFields               protoimpl.UnknownFields
	sizeCache                   protoimpl.SizeCache
}

func (x *SendGiftBatchTarget) Reset() {
	*x = SendGiftBatchTarget{}
	mi := &file_proto_room_v1_room_proto_msgTypes[132]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*SendGiftBatchTarget) ProtoMessage() {}

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

func (x *SendGiftBatchTarget) GetTargetUserId() int64 {
	if x != nil {
		return x.TargetUserId
	}
	return 0
}

func (x *SendGiftBatchTarget) GetReceiverNickname() string {
	if x != nil {
		return x.ReceiverNickname
	}
	return ""
}

func (x *SendGiftBatchTarget) GetReceiverAvatar() string {
	if x != nil {
		return x.ReceiverAvatar
	}
	return ""
}

func (x *SendGiftBatchTarget) GetReceiverDisplayUserId() string {
	if x != nil {
		return x.ReceiverDisplayUserId
	}
	return ""
}

func (x *SendGiftBatchTarget) GetReceiverPrettyDisplayUserId() string {
	if x != nil {
		return x.ReceiverPrettyDisplayUserId
	}
	return ""
}

func (x *SendGiftBatchTarget) GetGiftValue() int64 {
	if x != nil {
		return x.GiftValue
	}
	return 0
}

func (x *SendGiftBatchTarget) GetTargetGiftValue() int64 {
	if x != nil {
		return x.TargetGiftValue
	}
	return 0
}

func (x *SendGiftBatchTarget) GetCoinSpent() int64 {
	if x != nil {
		return x.CoinSpent
	}
	return 0
}

func (x *SendGiftBatchTarget) GetBillingReceiptId() string {
	if x != nil {
		return x.BillingReceiptId
	}
	return ""
}

func (x *SendGiftBatchTarget) GetCommandId() string {
	if x != nil {
		return x.CommandId
	}
	return ""
}

func (x *SendGiftBatchTarget) GetLuckyGift() *LuckyGiftDrawResult {
	if x != nil {
		return x.LuckyGift
	}
	return nil
}

// SendGiftBatchDisplay 是新批量送礼接口返回给发送方的本地展示协议。
// 房间广播使用同构的 RoomGiftBatchSent IM 事件；coin_balance_after 不进入该展示对象。
type SendGiftBatchDisplay struct {
	state                     protoimpl.MessageState `protogen:"open.v1"`
	EventId                   string                 `protobuf:"bytes,1,opt,name=event_id,json=eventId,proto3" json:"event_id,omitempty"`
	SenderUserId              int64                  `protobuf:"varint,2,opt,name=sender_user_id,json=senderUserId,proto3" json:"sender_user_id,omitempty"`
	SenderName                string                 `protobuf:"bytes,3,opt,name=sender_name,json=senderName,proto3" json:"sender_name,omitempty"`
	SenderAvatar              string                 `protobuf:"bytes,4,opt,name=sender_avatar,json=senderAvatar,proto3" json:"sender_avatar,omitempty"`
	SenderDisplayUserId       string                 `protobuf:"bytes,5,opt,name=sender_display_user_id,json=senderDisplayUserId,proto3" json:"sender_display_user_id,omitempty"`
	SenderPrettyDisplayUserId string                 `protobuf:"bytes,6,opt,name=sender_pretty_display_user_id,json=senderPrettyDisplayUserId,proto3" json:"sender_pretty_display_user_id,omitempty"`
	GiftId                    string                 `protobuf:"bytes,7,opt,name=gift_id,json=giftId,proto3" json:"gift_id,omitempty"`
	GiftCount                 int32                  `protobuf:"varint,8,opt,name=gift_count,json=giftCount,proto3" json:"gift_count,omitempty"`
	TotalGiftValue            int64                  `protobuf:"varint,9,opt,name=total_gift_value,json=totalGiftValue,proto3" json:"total_gift_value,omitempty"`
	TotalCoinSpent            int64                  `protobuf:"varint,10,opt,name=total_coin_spent,json=totalCoinSpent,proto3" json:"total_coin_spent,omitempty"`
	BillingReceiptId          string                 `protobuf:"bytes,11,opt,name=billing_receipt_id,json=billingReceiptId,proto3" json:"billing_receipt_id,omitempty"`
	RoomHeat                  int64                  `protobuf:"varint,12,opt,name=room_heat,json=roomHeat,proto3" json:"room_heat,omitempty"`
	PoolId                    string                 `protobuf:"bytes,13,opt,name=pool_id,json=poolId,proto3" json:"pool_id,omitempty"`
	GiftTypeCode              string                 `protobuf:"bytes,14,opt,name=gift_type_code,json=giftTypeCode,proto3" json:"gift_type_code,omitempty"`
	CpRelationType            string                 `protobuf:"bytes,15,opt,name=cp_relation_type,json=cpRelationType,proto3" json:"cp_relation_type,omitempty"`
	GiftName                  string                 `protobuf:"bytes,16,opt,name=gift_name,json=giftName,proto3" json:"gift_name,omitempty"`
	GiftIconUrl               string                 `protobuf:"bytes,17,opt,name=gift_icon_url,json=giftIconUrl,proto3" json:"gift_icon_url,omitempty"`
	GiftAnimationUrl          string                 `protobuf:"bytes,18,opt,name=gift_animation_url,json=giftAnimationUrl,proto3" json:"gift_animation_url,omitempty"`
	GiftEffectTypes           []string               `protobuf:"bytes,19,rep,name=gift_effect_types,json=giftEffectTypes,proto3" json:"gift_effect_types,omitempty"`
	TargetUserIds             []int64                `protobuf:"varint,20,rep,packed,name=target_user_ids,json=targetUserIds,proto3" json:"target_user_ids,omitempty"`
	Targets                   []*SendGiftBatchTarget `protobuf:"bytes,21,rep,name=targets,proto3" json:"targets,omitempty"`
	CommandId                 string                 `protobuf:"bytes,22,opt,name=command_id,json=commandId,proto3" json:"command_id,omitempty"`
	// sender_vip_level 与 RoomGiftBatchSent IM 使用同一份入站快照，避免发送方本地展示和房间广播不一致。
	SenderVipLevel int32 `protobuf:"varint,23,opt,name=sender_vip_level,json=senderVipLevel,proto3" json:"sender_vip_level,omitempty"`
	// sender_gift_broadcast_animation_url 与逐目标 RoomGiftSent 共用送礼入口快照，普通/幸运/超级幸运礼物保持同一托盘资源。
	SenderGiftBroadcastAnimationUrl string `protobuf:"bytes,24,opt,name=sender_gift_broadcast_animation_url,json=senderGiftBroadcastAnimationUrl,proto3" json:"sender_gift_broadcast_animation_url,omitempty"`
	unknownFields                   protoimpl.UnknownFields
	sizeCache                       protoimpl.SizeCache
}

func (x *SendGiftBatchDisplay) Reset() {
	*x = SendGiftBatchDisplay{}
	mi := &file_proto_room_v1_room_proto_msgTypes[133]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*SendGiftBatchDisplay) ProtoMessage() {}

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

func (x *SendGiftBatchDisplay) GetEventId() string {
	if x != nil {
		return x.EventId
	}
	return ""
}

func (x *SendGiftBatchDisplay) GetSenderUserId() int64 {
	if x != nil {
		return x.SenderUserId
	}
	return 0
}

func (x *SendGiftBatchDisplay) GetSenderName() string {
	if x != nil {
		return x.SenderName
	}
	return ""
}

func (x *SendGiftBatchDisplay) GetSenderAvatar() string {
	if x != nil {
		return x.SenderAvatar
	}
	return ""
}

func (x *SendGiftBatchDisplay) GetSenderDisplayUserId() string {
	if x != nil {
		return x.SenderDisplayUserId
	}
	return ""
}

func (x *SendGiftBatchDisplay) GetSenderPrettyDisplayUserId() string {
	if x != nil {
		return x.SenderPrettyDisplayUserId
	}
	return ""
}

func (x *SendGiftBatchDisplay) GetGiftId() string {
	if x != nil {
		return x.GiftId
	}
	return ""
}

func (x *SendGiftBatchDisplay) GetGiftCount() int32 {
	if x != nil {
		return x.GiftCount
	}
	return 0
}

func (x *SendGiftBatchDisplay) GetTotalGiftValue() int64 {
	if x != nil {
		return x.TotalGiftValue
	}
	return 0
}

func (x *SendGiftBatchDisplay) GetTotalCoinSpent() int64 {
	if x != nil {
		return x.TotalCoinSpent
	}
	return 0
}

func (x *SendGiftBatchDisplay) GetBillingReceiptId() string {
	if x != nil {
		return x.BillingReceiptId
	}
	return ""
}

func (x *SendGiftBatchDisplay) GetRoomHeat() int64 {
	if x != nil {
		return x.RoomHeat
	}
	return 0
}

func (x *SendGiftBatchDisplay) GetPoolId() string {
	if x != nil {
		return x.PoolId
	}
	return ""
}

func (x *SendGiftBatchDisplay) GetGiftTypeCode() string {
	if x != nil {
		return x.GiftTypeCode
	}
	return ""
}

func (x *SendGiftBatchDisplay) GetCpRelationType() string {
	if x != nil {
		return x.CpRelationType
	}
	return ""
}

func (x *SendGiftBatchDisplay) GetGiftName() string {
	if x != nil {
		return x.GiftName
	}
	return ""
}

func (x *SendGiftBatchDisplay) GetGiftIconUrl() string {
	if x != nil {
		return x.GiftIconUrl
	}
	return ""
}

func (x *SendGiftBatchDisplay) GetGiftAnimationUrl() string {
	if x != nil {
		return x.GiftAnimationUrl
	}
	return ""
}

func (x *SendGiftBatchDisplay) GetGiftEffectTypes() []string {
	if x != nil {
		return x.GiftEffectTypes
	}
	return nil
}

func (x *SendGiftBatchDisplay) GetTargetUserIds() []int64 {
	if x != nil {
		return x.TargetUserIds
	}
	return nil
}

func (x *SendGiftBatchDisplay) GetTargets() []*SendGiftBatchTarget {
	if x != nil {
		return x.Targets
	}
	return nil
}

func (x *SendGiftBatchDisplay) GetCommandId() string {
	if x != nil {
		return x.CommandId
	}
	return ""
}

func (x *SendGiftBatchDisplay) GetSenderVipLevel() int32 {
	if x != nil {
		return x.SenderVipLevel
	}
	return 0
}

func (x *SendGiftBatchDisplay) GetSenderGiftBroadcastAnimationUrl() string {
	if x != nil {
		return x.SenderGiftBroadcastAnimationUrl
	}
	return ""
}

// SendGiftRequest 是首版房间内最重要的变现命令。
type SendGiftRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	Meta  *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	// target_user_id 是兼容旧客户端的单目标字段；新客户端优先使用 target_user_ids。
	TargetUserId int64  `protobuf:"varint,2,opt,name=target_user_id,json=targetUserId,proto3" json:"target_user_id,omitempty"`
	GiftId       string `protobuf:"bytes,3,opt,name=gift_id,json=giftId,proto3" json:"gift_id,omitempty"`
	GiftCount    int32  `protobuf:"varint,4,opt,name=gift_count,json=giftCount,proto3" json:"gift_count,omitempty"`
	// target_type 当前只提交 user；后续扩展 all_mic、all_room、couple 时不再改 HTTP 契约。
	TargetType    string  `protobuf:"bytes,5,opt,name=target_type,json=targetType,proto3" json:"target_type,omitempty"`
	TargetUserIds []int64 `protobuf:"varint,6,rep,packed,name=target_user_ids,json=targetUserIds,proto3" json:"target_user_ids,omitempty"`
	PoolId        string  `protobuf:"bytes,7,opt,name=pool_id,json=poolId,proto3" json:"pool_id,omitempty"`
	// target_is_host 由 gateway 根据 user-service active host profile 注入，room-service 只透传给 wallet-service。
	TargetIsHost bool `protobuf:"varint,8,opt,name=target_is_host,json=targetIsHost,proto3" json:"target_is_host,omitempty"`
	// target_host_region_id 是主播所属区域，后续结算按该区域匹配 Host & Agency 政策。
	TargetHostRegionId int64 `protobuf:"varint,9,opt,name=target_host_region_id,json=targetHostRegionId,proto3" json:"target_host_region_id,omitempty"`
	// target_agency_owner_user_id 是送礼瞬间主播上级代理收款用户；为空表示当前无代理或代理关系不可结算。
	TargetAgencyOwnerUserId int64 `protobuf:"varint,10,opt,name=target_agency_owner_user_id,json=targetAgencyOwnerUserId,proto3" json:"target_agency_owner_user_id,omitempty"`
	// sender_region_id 是 gateway 从 user-service 当前送礼用户资料注入的区域，用于 wallet 匹配礼物钻石比例。
	SenderRegionId int64 `protobuf:"varint,11,opt,name=sender_region_id,json=senderRegionId,proto3" json:"sender_region_id,omitempty"`
	// sender_country_id 是 gateway 从 user-service 当前送礼用户资料注入的真实国家，用于统计国家维度。
	SenderCountryId int64 `protobuf:"varint,12,opt,name=sender_country_id,json=senderCountryId,proto3" json:"sender_country_id,omitempty"`
	// entitlement_id 非空表示从用户 Bag 礼物库存中消费，不走金币扣费。
	EntitlementId string `protobuf:"bytes,13,opt,name=entitlement_id,json=entitlementId,proto3" json:"entitlement_id,omitempty"`
	// source 当前支持 bag；为空按普通金币礼物兼容。
	Source string `protobuf:"bytes,14,opt,name=source,proto3" json:"source,omitempty"`
	// target_host_scopes 覆盖批量 target 的工资入账快照；单目标旧字段仍保留兼容老调用链。
	TargetHostScopes []*SendGiftTargetHostScope `protobuf:"bytes,15,rep,name=target_host_scopes,json=targetHostScopes,proto3" json:"target_host_scopes,omitempty"`
	// sender_display_profile 是 gateway 从 user-service 读取的送礼人展示快照，用于 IM 兜底展示。
	SenderDisplayProfile *SendGiftDisplayProfile `protobuf:"bytes,16,opt,name=sender_display_profile,json=senderDisplayProfile,proto3" json:"sender_display_profile,omitempty"`
	// target_display_profiles 是每个收礼目标的展示快照；多目标 IM 按 target_user_id 取对应项。
	TargetDisplayProfiles []*SendGiftDisplayProfile `protobuf:"bytes,17,rep,name=target_display_profiles,json=targetDisplayProfiles,proto3" json:"target_display_profiles,omitempty"`
	// display_mode=batch 只由新 batch-send HTTP 入口设置，用来生成单条多人展示 IM；旧 send 入口保持空值。
	DisplayMode string `protobuf:"bytes,18,opt,name=display_mode,json=displayMode,proto3" json:"display_mode,omitempty"`
	// combo_session_id + batch_seq 只描述 Flutter 微批会话，command_id 仍是跨服务唯一幂等键。
	ComboSessionId string `protobuf:"bytes,19,opt,name=combo_session_id,json=comboSessionId,proto3" json:"combo_session_id,omitempty"`
	BatchSeq       int64  `protobuf:"varint,20,opt,name=batch_seq,json=batchSeq,proto3" json:"batch_seq,omitempty"`
	// sender_registered_at_ms 是 gateway 从 user-service 读取的账号创建事实；客户端不能提交或覆盖。
	// room-service 只随首次送礼命令持久化并透传给 lucky-gift-service，不据此拥有用户主数据。
	SenderRegisteredAtMs int64 `protobuf:"varint,21,opt,name=sender_registered_at_ms,json=senderRegisteredAtMs,proto3" json:"sender_registered_at_ms,omitempty"`
	unknownFields        protoimpl.UnknownFields
	sizeCache            protoimpl.SizeCache
}

func (x *SendGiftRequest) Reset() {
	*x = SendGiftRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[134]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*SendGiftRequest) ProtoMessage() {}

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

func (x *SendGiftRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *SendGiftRequest) GetTargetUserId() int64 {
	if x != nil {
		return x.TargetUserId
	}
	return 0
}

func (x *SendGiftRequest) GetGiftId() string {
	if x != nil {
		return x.GiftId
	}
	return ""
}

func (x *SendGiftRequest) GetGiftCount() int32 {
	if x != nil {
		return x.GiftCount
	}
	return 0
}

func (x *SendGiftRequest) GetTargetType() string {
	if x != nil {
		return x.TargetType
	}
	return ""
}

func (x *SendGiftRequest) GetTargetUserIds() []int64 {
	if x != nil {
		return x.TargetUserIds
	}
	return nil
}

func (x *SendGiftRequest) GetPoolId() string {
	if x != nil {
		return x.PoolId
	}
	return ""
}

func (x *SendGiftRequest) GetTargetIsHost() bool {
	if x != nil {
		return x.TargetIsHost
	}
	return false
}

func (x *SendGiftRequest) GetTargetHostRegionId() int64 {
	if x != nil {
		return x.TargetHostRegionId
	}
	return 0
}

func (x *SendGiftRequest) GetTargetAgencyOwnerUserId() int64 {
	if x != nil {
		return x.TargetAgencyOwnerUserId
	}
	return 0
}

func (x *SendGiftRequest) GetSenderRegionId() int64 {
	if x != nil {
		return x.SenderRegionId
	}
	return 0
}

func (x *SendGiftRequest) GetSenderCountryId() int64 {
	if x != nil {
		return x.SenderCountryId
	}
	return 0
}

func (x *SendGiftRequest) GetEntitlementId() string {
	if x != nil {
		return x.EntitlementId
	}
	return ""
}

func (x *SendGiftRequest) GetSource() string {
	if x != nil {
		return x.Source
	}
	return ""
}

func (x *SendGiftRequest) GetTargetHostScopes() []*SendGiftTargetHostScope {
	if x != nil {
		return x.TargetHostScopes
	}
	return nil
}

func (x *SendGiftRequest) GetSenderDisplayProfile() *SendGiftDisplayProfile {
	if x != nil {
		return x.SenderDisplayProfile
	}
	return nil
}

func (x *SendGiftRequest) GetTargetDisplayProfiles() []*SendGiftDisplayProfile {
	if x != nil {
		return x.TargetDisplayProfiles
	}
	return nil
}

func (x *SendGiftRequest) GetDisplayMode() string {
	if x != nil {
		return x.DisplayMode
	}
	return ""
}

func (x *SendGiftRequest) GetComboSessionId() string {
	if x != nil {
		return x.ComboSessionId
	}
	return ""
}

func (x *SendGiftRequest) GetBatchSeq() int64 {
	if x != nil {
		return x.BatchSeq
	}
	return 0
}

func (x *SendGiftRequest) GetSenderRegisteredAtMs() int64 {
	if x != nil {
		return x.SenderRegisteredAtMs
	}
	return 0
}

// SendGiftResponse 返回扣费成功并落到房间后的状态结果。
type SendGiftResponse struct {
	state            protoimpl.MessageState `protogen:"open.v1"`
	Result           *CommandResult         `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"`
	BillingReceiptId string                 `protobuf:"bytes,2,opt,name=billing_receipt_id,json=billingReceiptId,proto3" json:"billing_receipt_id,omitempty"`
	RoomHeat         int64                  `protobuf:"varint,3,opt,name=room_heat,json=roomHeat,proto3" json:"room_heat,omitempty"`
	GiftRank         []*RankItem            `protobuf:"bytes,4,rep,name=gift_rank,json=giftRank,proto3" json:"gift_rank,omitempty"`
	Room             *RoomSnapshot          `protobuf:"bytes,5,opt,name=room,proto3" json:"room,omitempty"`
	Rocket           *RoomRocketState       `protobuf:"bytes,6,opt,name=rocket,proto3" json:"rocket,omitempty"`
	// lucky_gift 是本次送礼的聚合幸运礼物结果；多目标时倍率和返奖金额按所有目标累加。
	LuckyGift *LuckyGiftDrawResult `protobuf:"bytes,7,opt,name=lucky_gift,json=luckyGift,proto3" json:"lucky_gift,omitempty"`
	// lucky_gifts 是每个收礼目标的独立抽奖结果；多目标客户端用 target_user_id 对齐明细表现。
	LuckyGifts []*LuckyGiftDrawResult `protobuf:"bytes,8,rep,name=lucky_gifts,json=luckyGifts,proto3" json:"lucky_gifts,omitempty"`
	// coin_balance_after 是送礼人本次扣费和幸运礼物返奖完成后的 COIN 可用余额，只返回给送礼发起方。
	CoinBalanceAfter int64 `protobuf:"varint,9,opt,name=coin_balance_after,json=coinBalanceAfter,proto3" json:"coin_balance_after,omitempty"`
	// gift_income_balance_after 是收礼人返币后的 COIN 余额；多目标或无返币时为 0。
	GiftIncomeBalanceAfter int64 `protobuf:"varint,10,opt,name=gift_income_balance_after,json=giftIncomeBalanceAfter,proto3" json:"gift_income_balance_after,omitempty"`
	// batch_display 是新 batch-send 接口的多人展示快照；旧 send 入口保持空值。
	BatchDisplay *SendGiftBatchDisplay `protobuf:"bytes,11,opt,name=batch_display,json=batchDisplay,proto3" json:"batch_display,omitempty"`
	// v2 保存并重放首次成功的原始结算结果；追加字段不改变旧 Flutter 对顶层 V1 字段的读取。
	V2            *SendGiftResultV2 `protobuf:"bytes,12,opt,name=v2,proto3" json:"v2,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SendGiftResponse) Reset() {
	*x = SendGiftResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[135]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*SendGiftResponse) ProtoMessage() {}

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

func (x *SendGiftResponse) GetResult() *CommandResult {
	if x != nil {
		return x.Result
	}
	return nil
}

func (x *SendGiftResponse) GetBillingReceiptId() string {
	if x != nil {
		return x.BillingReceiptId
	}
	return ""
}

func (x *SendGiftResponse) GetRoomHeat() int64 {
	if x != nil {
		return x.RoomHeat
	}
	return 0
}

func (x *SendGiftResponse) GetGiftRank() []*RankItem {
	if x != nil {
		return x.GiftRank
	}
	return nil
}

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

func (x *SendGiftResponse) GetRocket() *RoomRocketState {
	if x != nil {
		return x.Rocket
	}
	return nil
}

func (x *SendGiftResponse) GetLuckyGift() *LuckyGiftDrawResult {
	if x != nil {
		return x.LuckyGift
	}
	return nil
}

func (x *SendGiftResponse) GetLuckyGifts() []*LuckyGiftDrawResult {
	if x != nil {
		return x.LuckyGifts
	}
	return nil
}

func (x *SendGiftResponse) GetCoinBalanceAfter() int64 {
	if x != nil {
		return x.CoinBalanceAfter
	}
	return 0
}

func (x *SendGiftResponse) GetGiftIncomeBalanceAfter() int64 {
	if x != nil {
		return x.GiftIncomeBalanceAfter
	}
	return 0
}

func (x *SendGiftResponse) GetBatchDisplay() *SendGiftBatchDisplay {
	if x != nil {
		return x.BatchDisplay
	}
	return nil
}

func (x *SendGiftResponse) GetV2() *SendGiftResultV2 {
	if x != nil {
		return x.V2
	}
	return nil
}

// CheckSpeakPermissionRequest 让腾讯云 IM 发言回调或 gateway 在公屏前同步问房间业务态。
type CheckSpeakPermissionRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	RoomId        string                 `protobuf:"bytes,1,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"`
	UserId        int64                  `protobuf:"varint,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
	AppCode       string                 `protobuf:"bytes,3,opt,name=app_code,json=appCode,proto3" json:"app_code,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CheckSpeakPermissionRequest) Reset() {
	*x = CheckSpeakPermissionRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[136]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*CheckSpeakPermissionRequest) ProtoMessage() {}

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

func (x *CheckSpeakPermissionRequest) GetRoomId() string {
	if x != nil {
		return x.RoomId
	}
	return ""
}

func (x *CheckSpeakPermissionRequest) GetUserId() int64 {
	if x != nil {
		return x.UserId
	}
	return 0
}

func (x *CheckSpeakPermissionRequest) GetAppCode() string {
	if x != nil {
		return x.AppCode
	}
	return ""
}

// CheckSpeakPermissionResponse 返回当前用户是否允许发言。
type CheckSpeakPermissionResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Allowed       bool                   `protobuf:"varint,1,opt,name=allowed,proto3" json:"allowed,omitempty"`
	Reason        string                 `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"`
	RoomVersion   int64                  `protobuf:"varint,3,opt,name=room_version,json=roomVersion,proto3" json:"room_version,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CheckSpeakPermissionResponse) Reset() {
	*x = CheckSpeakPermissionResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[137]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*CheckSpeakPermissionResponse) ProtoMessage() {}

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

func (x *CheckSpeakPermissionResponse) GetAllowed() bool {
	if x != nil {
		return x.Allowed
	}
	return false
}

func (x *CheckSpeakPermissionResponse) GetReason() string {
	if x != nil {
		return x.Reason
	}
	return ""
}

func (x *CheckSpeakPermissionResponse) GetRoomVersion() int64 {
	if x != nil {
		return x.RoomVersion
	}
	return 0
}

// VerifyRoomPresenceRequest 让外部 IM 入口在进群前确认用户业务上仍在房间内。
type VerifyRoomPresenceRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	RoomId        string                 `protobuf:"bytes,1,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"`
	UserId        int64                  `protobuf:"varint,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
	SessionId     string                 `protobuf:"bytes,3,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"`
	RequestId     string                 `protobuf:"bytes,4,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	AppCode       string                 `protobuf:"bytes,5,opt,name=app_code,json=appCode,proto3" json:"app_code,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *VerifyRoomPresenceRequest) Reset() {
	*x = VerifyRoomPresenceRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[138]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*VerifyRoomPresenceRequest) ProtoMessage() {}

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

func (x *VerifyRoomPresenceRequest) GetRoomId() string {
	if x != nil {
		return x.RoomId
	}
	return ""
}

func (x *VerifyRoomPresenceRequest) GetUserId() int64 {
	if x != nil {
		return x.UserId
	}
	return 0
}

func (x *VerifyRoomPresenceRequest) GetSessionId() string {
	if x != nil {
		return x.SessionId
	}
	return ""
}

func (x *VerifyRoomPresenceRequest) GetRequestId() string {
	if x != nil {
		return x.RequestId
	}
	return ""
}

func (x *VerifyRoomPresenceRequest) GetAppCode() string {
	if x != nil {
		return x.AppCode
	}
	return ""
}

// VerifyRoomPresenceResponse 返回用户是否仍然属于该房间。
type VerifyRoomPresenceResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Present       bool                   `protobuf:"varint,1,opt,name=present,proto3" json:"present,omitempty"`
	Reason        string                 `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"`
	RoomVersion   int64                  `protobuf:"varint,3,opt,name=room_version,json=roomVersion,proto3" json:"room_version,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *VerifyRoomPresenceResponse) Reset() {
	*x = VerifyRoomPresenceResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[139]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*VerifyRoomPresenceResponse) ProtoMessage() {}

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

func (x *VerifyRoomPresenceResponse) GetPresent() bool {
	if x != nil {
		return x.Present
	}
	return false
}

func (x *VerifyRoomPresenceResponse) GetReason() string {
	if x != nil {
		return x.Reason
	}
	return ""
}

func (x *VerifyRoomPresenceResponse) GetRoomVersion() int64 {
	if x != nil {
		return x.RoomVersion
	}
	return 0
}

// ResolveRoomAppCodeRequest 仅供已验签的三方回调按全局 room_id 解析租户。
// 该入口不接受客户端 app_code，避免固定 URL 参数把 Fami 事件错误路由到 Lalu。
type ResolveRoomAppCodeRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	RequestId     string                 `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	RoomId        string                 `protobuf:"bytes,2,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ResolveRoomAppCodeRequest) Reset() {
	*x = ResolveRoomAppCodeRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[140]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ResolveRoomAppCodeRequest) ProtoMessage() {}

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

func (x *ResolveRoomAppCodeRequest) GetRequestId() string {
	if x != nil {
		return x.RequestId
	}
	return ""
}

func (x *ResolveRoomAppCodeRequest) GetRoomId() string {
	if x != nil {
		return x.RoomId
	}
	return ""
}

type ResolveRoomAppCodeResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	AppCode       string                 `protobuf:"bytes,1,opt,name=app_code,json=appCode,proto3" json:"app_code,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ResolveRoomAppCodeResponse) Reset() {
	*x = ResolveRoomAppCodeResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[141]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ResolveRoomAppCodeResponse) ProtoMessage() {}

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

func (x *ResolveRoomAppCodeResponse) GetAppCode() string {
	if x != nil {
		return x.AppCode
	}
	return ""
}

// ListRoomsRequest 查询首页公共房间列表。
// visible_region_id 是 gateway 解析的实际查询区域：默认取 viewer 区域，显式筛选时取已校验的 filter_region_id。
// gateway 同时写 filter_region_id 绑定游标；客户端不能直接构造任一内部字段。
type ListRoomsRequest struct {
	state           protoimpl.MessageState `protogen:"open.v1"`
	Meta            *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	ViewerUserId    int64                  `protobuf:"varint,2,opt,name=viewer_user_id,json=viewerUserId,proto3" json:"viewer_user_id,omitempty"`
	VisibleRegionId int64                  `protobuf:"varint,3,opt,name=visible_region_id,json=visibleRegionId,proto3" json:"visible_region_id,omitempty"`
	Tab             string                 `protobuf:"bytes,4,opt,name=tab,proto3" json:"tab,omitempty"`
	Cursor          string                 `protobuf:"bytes,5,opt,name=cursor,proto3" json:"cursor,omitempty"`
	Limit           int32                  `protobuf:"varint,6,opt,name=limit,proto3" json:"limit,omitempty"`
	Query           string                 `protobuf:"bytes,7,opt,name=query,proto3" json:"query,omitempty"`
	// country_code 是可选国家筛选值；gateway 必须先确认它属于 active 区域。
	CountryCode string `protobuf:"bytes,8,opt,name=country_code,json=countryCode,proto3" json:"country_code,omitempty"`
	// viewer_country_code 是当前用户国家，用于 All/区域列表的本国家优先排序。
	ViewerCountryCode string `protobuf:"bytes,9,opt,name=viewer_country_code,json=viewerCountryCode,proto3" json:"viewer_country_code,omitempty"`
	// all_visible_regions 只能由 gateway 根据 App 策略或后台白名单注入；为 true 时列表不按 visible_region_id 过滤。
	AllVisibleRegions bool `protobuf:"varint,10,opt,name=all_visible_regions,json=allVisibleRegions,proto3" json:"all_visible_regions,omitempty"`
	// filter_region_id 是 gateway 校验过的 active 区域筛选；它与 all_visible_regions/country_code 互斥。
	FilterRegionId int64 `protobuf:"varint,11,opt,name=filter_region_id,json=filterRegionId,proto3" json:"filter_region_id,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *ListRoomsRequest) Reset() {
	*x = ListRoomsRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[142]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ListRoomsRequest) ProtoMessage() {}

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

func (x *ListRoomsRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *ListRoomsRequest) GetViewerUserId() int64 {
	if x != nil {
		return x.ViewerUserId
	}
	return 0
}

func (x *ListRoomsRequest) GetVisibleRegionId() int64 {
	if x != nil {
		return x.VisibleRegionId
	}
	return 0
}

func (x *ListRoomsRequest) GetTab() string {
	if x != nil {
		return x.Tab
	}
	return ""
}

func (x *ListRoomsRequest) GetCursor() string {
	if x != nil {
		return x.Cursor
	}
	return ""
}

func (x *ListRoomsRequest) GetLimit() int32 {
	if x != nil {
		return x.Limit
	}
	return 0
}

func (x *ListRoomsRequest) GetQuery() string {
	if x != nil {
		return x.Query
	}
	return ""
}

func (x *ListRoomsRequest) GetCountryCode() string {
	if x != nil {
		return x.CountryCode
	}
	return ""
}

func (x *ListRoomsRequest) GetViewerCountryCode() string {
	if x != nil {
		return x.ViewerCountryCode
	}
	return ""
}

func (x *ListRoomsRequest) GetAllVisibleRegions() bool {
	if x != nil {
		return x.AllVisibleRegions
	}
	return false
}

func (x *ListRoomsRequest) GetFilterRegionId() int64 {
	if x != nil {
		return x.FilterRegionId
	}
	return 0
}

// ListRoomsByOwnersRequest 查询一组房主名下 active 房间。
// owner_user_ids 必须由 gateway 根据上游业务归属注入，客户端不能直接提交任意房主集合。
type ListRoomsByOwnersRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Meta          *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	ViewerUserId  int64                  `protobuf:"varint,2,opt,name=viewer_user_id,json=viewerUserId,proto3" json:"viewer_user_id,omitempty"`
	OwnerUserIds  []int64                `protobuf:"varint,3,rep,packed,name=owner_user_ids,json=ownerUserIds,proto3" json:"owner_user_ids,omitempty"`
	Tab           string                 `protobuf:"bytes,4,opt,name=tab,proto3" json:"tab,omitempty"`
	Cursor        string                 `protobuf:"bytes,5,opt,name=cursor,proto3" json:"cursor,omitempty"`
	Limit         int32                  `protobuf:"varint,6,opt,name=limit,proto3" json:"limit,omitempty"`
	Query         string                 `protobuf:"bytes,7,opt,name=query,proto3" json:"query,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListRoomsByOwnersRequest) Reset() {
	*x = ListRoomsByOwnersRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[143]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ListRoomsByOwnersRequest) ProtoMessage() {}

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

func (x *ListRoomsByOwnersRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *ListRoomsByOwnersRequest) GetViewerUserId() int64 {
	if x != nil {
		return x.ViewerUserId
	}
	return 0
}

func (x *ListRoomsByOwnersRequest) GetOwnerUserIds() []int64 {
	if x != nil {
		return x.OwnerUserIds
	}
	return nil
}

func (x *ListRoomsByOwnersRequest) GetTab() string {
	if x != nil {
		return x.Tab
	}
	return ""
}

func (x *ListRoomsByOwnersRequest) GetCursor() string {
	if x != nil {
		return x.Cursor
	}
	return ""
}

func (x *ListRoomsByOwnersRequest) GetLimit() int32 {
	if x != nil {
		return x.Limit
	}
	return 0
}

func (x *ListRoomsByOwnersRequest) GetQuery() string {
	if x != nil {
		return x.Query
	}
	return ""
}

// ListRoomFeedsRequest 查询 Mine 页 visited/friend/following/followed 房间流。
// 它和公共房间发现列表分离，避免把用户关系流误建模成房间全集过滤。
type ListRoomFeedsRequest struct {
	state           protoimpl.MessageState `protogen:"open.v1"`
	Meta            *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	ViewerUserId    int64                  `protobuf:"varint,2,opt,name=viewer_user_id,json=viewerUserId,proto3" json:"viewer_user_id,omitempty"`
	VisibleRegionId int64                  `protobuf:"varint,3,opt,name=visible_region_id,json=visibleRegionId,proto3" json:"visible_region_id,omitempty"`
	Tab             string                 `protobuf:"bytes,4,opt,name=tab,proto3" json:"tab,omitempty"`
	Cursor          string                 `protobuf:"bytes,5,opt,name=cursor,proto3" json:"cursor,omitempty"`
	Limit           int32                  `protobuf:"varint,6,opt,name=limit,proto3" json:"limit,omitempty"`
	Query           string                 `protobuf:"bytes,7,opt,name=query,proto3" json:"query,omitempty"`
	// related_users 只用于 friend/following；关系事实由 gateway 从 user-service 读取后传入。
	RelatedUsers  []*RoomFeedRelatedUser `protobuf:"bytes,8,rep,name=related_users,json=relatedUsers,proto3" json:"related_users,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListRoomFeedsRequest) Reset() {
	*x = ListRoomFeedsRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[144]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ListRoomFeedsRequest) ProtoMessage() {}

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

func (x *ListRoomFeedsRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *ListRoomFeedsRequest) GetViewerUserId() int64 {
	if x != nil {
		return x.ViewerUserId
	}
	return 0
}

func (x *ListRoomFeedsRequest) GetVisibleRegionId() int64 {
	if x != nil {
		return x.VisibleRegionId
	}
	return 0
}

func (x *ListRoomFeedsRequest) GetTab() string {
	if x != nil {
		return x.Tab
	}
	return ""
}

func (x *ListRoomFeedsRequest) GetCursor() string {
	if x != nil {
		return x.Cursor
	}
	return ""
}

func (x *ListRoomFeedsRequest) GetLimit() int32 {
	if x != nil {
		return x.Limit
	}
	return 0
}

func (x *ListRoomFeedsRequest) GetQuery() string {
	if x != nil {
		return x.Query
	}
	return ""
}

func (x *ListRoomFeedsRequest) GetRelatedUsers() []*RoomFeedRelatedUser {
	if x != nil {
		return x.RelatedUsers
	}
	return nil
}

// ListRoomGiftLeaderboardRequest 查询当前 UTC 周期内的房间金币消耗榜。
type ListRoomGiftLeaderboardRequest struct {
	state    protoimpl.MessageState `protogen:"open.v1"`
	Meta     *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	Period   string                 `protobuf:"bytes,2,opt,name=period,proto3" json:"period,omitempty"`
	Page     int32                  `protobuf:"varint,3,opt,name=page,proto3" json:"page,omitempty"`
	PageSize int32                  `protobuf:"varint,4,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
	// region_id 由 gateway 从登录用户资料注入；Lalu/Fami 必填，客户端 query 不可信。
	RegionId      int64 `protobuf:"varint,5,opt,name=region_id,json=regionId,proto3" json:"region_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListRoomGiftLeaderboardRequest) Reset() {
	*x = ListRoomGiftLeaderboardRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[145]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ListRoomGiftLeaderboardRequest) ProtoMessage() {}

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

func (x *ListRoomGiftLeaderboardRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *ListRoomGiftLeaderboardRequest) GetPeriod() string {
	if x != nil {
		return x.Period
	}
	return ""
}

func (x *ListRoomGiftLeaderboardRequest) GetPage() int32 {
	if x != nil {
		return x.Page
	}
	return 0
}

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

func (x *ListRoomGiftLeaderboardRequest) GetRegionId() int64 {
	if x != nil {
		return x.RegionId
	}
	return 0
}

// RoomFeedRelatedUser 是 Mine 关系房间流的排序输入，不让 room-service 持有好友/关注事实。
type RoomFeedRelatedUser struct {
	state               protoimpl.MessageState `protogen:"open.v1"`
	UserId              int64                  `protobuf:"varint,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
	RelationUpdatedAtMs int64                  `protobuf:"varint,2,opt,name=relation_updated_at_ms,json=relationUpdatedAtMs,proto3" json:"relation_updated_at_ms,omitempty"`
	unknownFields       protoimpl.UnknownFields
	sizeCache           protoimpl.SizeCache
}

func (x *RoomFeedRelatedUser) Reset() {
	*x = RoomFeedRelatedUser{}
	mi := &file_proto_room_v1_room_proto_msgTypes[146]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*RoomFeedRelatedUser) ProtoMessage() {}

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

func (x *RoomFeedRelatedUser) GetUserId() int64 {
	if x != nil {
		return x.UserId
	}
	return 0
}

func (x *RoomFeedRelatedUser) GetRelationUpdatedAtMs() int64 {
	if x != nil {
		return x.RelationUpdatedAtMs
	}
	return 0
}

// RoomListItem 是房间发现页卡片读模型，不承载完整 Room Cell 状态。
type RoomListItem struct {
	state             protoimpl.MessageState  `protogen:"open.v1"`
	RoomId            string                  `protobuf:"bytes,1,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"`
	OwnerUserId       int64                   `protobuf:"varint,2,opt,name=owner_user_id,json=ownerUserId,proto3" json:"owner_user_id,omitempty"`
	Title             string                  `protobuf:"bytes,4,opt,name=title,proto3" json:"title,omitempty"`
	CoverUrl          string                  `protobuf:"bytes,5,opt,name=cover_url,json=coverUrl,proto3" json:"cover_url,omitempty"`
	Mode              string                  `protobuf:"bytes,6,opt,name=mode,proto3" json:"mode,omitempty"`
	Status            string                  `protobuf:"bytes,7,opt,name=status,proto3" json:"status,omitempty"`
	Heat              int64                   `protobuf:"varint,8,opt,name=heat,proto3" json:"heat,omitempty"`
	OnlineCount       int32                   `protobuf:"varint,9,opt,name=online_count,json=onlineCount,proto3" json:"online_count,omitempty"`
	SeatCount         int32                   `protobuf:"varint,10,opt,name=seat_count,json=seatCount,proto3" json:"seat_count,omitempty"`
	OccupiedSeatCount int32                   `protobuf:"varint,11,opt,name=occupied_seat_count,json=occupiedSeatCount,proto3" json:"occupied_seat_count,omitempty"`
	VisibleRegionId   int64                   `protobuf:"varint,12,opt,name=visible_region_id,json=visibleRegionId,proto3" json:"visible_region_id,omitempty"`
	AppCode           string                  `protobuf:"bytes,13,opt,name=app_code,json=appCode,proto3" json:"app_code,omitempty"`
	RoomShortId       string                  `protobuf:"bytes,14,opt,name=room_short_id,json=roomShortId,proto3" json:"room_short_id,omitempty"`
	Locked            bool                    `protobuf:"varint,15,opt,name=locked,proto3" json:"locked,omitempty"`
	CountryCode       string                  `protobuf:"bytes,16,opt,name=country_code,json=countryCode,proto3" json:"country_code,omitempty"`
	RoomBorder        *RoomDecorationResource `protobuf:"bytes,17,opt,name=room_border,json=roomBorder,proto3" json:"room_border,omitempty"`
	RoomNameStyle     *RoomDecorationResource `protobuf:"bytes,18,opt,name=room_name_style,json=roomNameStyle,proto3" json:"room_name_style,omitempty"`
	// owner_vip_level 是 wallet effective VIP 的异步列表投影；0 表示房主当前没有有效 VIP。
	// room-service 在创建/房主进房和 wallet outbox 变化时刷新，列表查询本身不回查 wallet。
	OwnerVipLevel int32 `protobuf:"varint,19,opt,name=owner_vip_level,json=ownerVipLevel,proto3" json:"owner_vip_level,omitempty"`
	// room_border_url 直接从同一列表投影中的 room_border.asset_url 派生，不增加列表查询或 wallet 回查。
	RoomBorderUrl string `protobuf:"bytes,20,opt,name=room_border_url,json=roomBorderUrl,proto3" json:"room_border_url,omitempty"`
	// rocket_near_completion 来自 Room Cell 火箭快照；仅 charging 且剩余燃料不超过当前档阈值 20% 时为 true。
	RocketNearCompletion bool `protobuf:"varint,21,opt,name=rocket_near_completion,json=rocketNearCompletion,proto3" json:"rocket_near_completion,omitempty"`
	// has_active_red_packet 是 wallet 红包事实经 MQ 异步投影的房间聚合，不触发列表同步 RPC 或逐房查询。
	HasActiveRedPacket bool `protobuf:"varint,22,opt,name=has_active_red_packet,json=hasActiveRedPacket,proto3" json:"has_active_red_packet,omitempty"`
	// active_red_packet_expires_at_ms 是当前仍有余量红包的最晚到期时间；客户端缓存可据此在边界后立即隐藏图标。
	ActiveRedPacketExpiresAtMs int64 `protobuf:"varint,23,opt,name=active_red_packet_expires_at_ms,json=activeRedPacketExpiresAtMs,proto3" json:"active_red_packet_expires_at_ms,omitempty"`
	unknownFields              protoimpl.UnknownFields
	sizeCache                  protoimpl.SizeCache
}

func (x *RoomListItem) Reset() {
	*x = RoomListItem{}
	mi := &file_proto_room_v1_room_proto_msgTypes[147]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*RoomListItem) ProtoMessage() {}

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

func (x *RoomListItem) GetRoomId() string {
	if x != nil {
		return x.RoomId
	}
	return ""
}

func (x *RoomListItem) GetOwnerUserId() int64 {
	if x != nil {
		return x.OwnerUserId
	}
	return 0
}

func (x *RoomListItem) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *RoomListItem) GetCoverUrl() string {
	if x != nil {
		return x.CoverUrl
	}
	return ""
}

func (x *RoomListItem) GetMode() string {
	if x != nil {
		return x.Mode
	}
	return ""
}

func (x *RoomListItem) GetStatus() string {
	if x != nil {
		return x.Status
	}
	return ""
}

func (x *RoomListItem) GetHeat() int64 {
	if x != nil {
		return x.Heat
	}
	return 0
}

func (x *RoomListItem) GetOnlineCount() int32 {
	if x != nil {
		return x.OnlineCount
	}
	return 0
}

func (x *RoomListItem) GetSeatCount() int32 {
	if x != nil {
		return x.SeatCount
	}
	return 0
}

func (x *RoomListItem) GetOccupiedSeatCount() int32 {
	if x != nil {
		return x.OccupiedSeatCount
	}
	return 0
}

func (x *RoomListItem) GetVisibleRegionId() int64 {
	if x != nil {
		return x.VisibleRegionId
	}
	return 0
}

func (x *RoomListItem) GetAppCode() string {
	if x != nil {
		return x.AppCode
	}
	return ""
}

func (x *RoomListItem) GetRoomShortId() string {
	if x != nil {
		return x.RoomShortId
	}
	return ""
}

func (x *RoomListItem) GetLocked() bool {
	if x != nil {
		return x.Locked
	}
	return false
}

func (x *RoomListItem) GetCountryCode() string {
	if x != nil {
		return x.CountryCode
	}
	return ""
}

func (x *RoomListItem) GetRoomBorder() *RoomDecorationResource {
	if x != nil {
		return x.RoomBorder
	}
	return nil
}

func (x *RoomListItem) GetRoomNameStyle() *RoomDecorationResource {
	if x != nil {
		return x.RoomNameStyle
	}
	return nil
}

func (x *RoomListItem) GetOwnerVipLevel() int32 {
	if x != nil {
		return x.OwnerVipLevel
	}
	return 0
}

func (x *RoomListItem) GetRoomBorderUrl() string {
	if x != nil {
		return x.RoomBorderUrl
	}
	return ""
}

func (x *RoomListItem) GetRocketNearCompletion() bool {
	if x != nil {
		return x.RocketNearCompletion
	}
	return false
}

func (x *RoomListItem) GetHasActiveRedPacket() bool {
	if x != nil {
		return x.HasActiveRedPacket
	}
	return false
}

func (x *RoomListItem) GetActiveRedPacketExpiresAtMs() int64 {
	if x != nil {
		return x.ActiveRedPacketExpiresAtMs
	}
	return 0
}

// ListRoomsResponse 返回一页房间卡片和下一页不透明 cursor。
type ListRoomsResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Rooms         []*RoomListItem        `protobuf:"bytes,1,rep,name=rooms,proto3" json:"rooms,omitempty"`
	NextCursor    string                 `protobuf:"bytes,2,opt,name=next_cursor,json=nextCursor,proto3" json:"next_cursor,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListRoomsResponse) Reset() {
	*x = ListRoomsResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[148]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ListRoomsResponse) ProtoMessage() {}

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

func (x *ListRoomsResponse) GetRooms() []*RoomListItem {
	if x != nil {
		return x.Rooms
	}
	return nil
}

func (x *ListRoomsResponse) GetNextCursor() string {
	if x != nil {
		return x.NextCursor
	}
	return ""
}

// RoomGiftLeaderboardItem 是跨房间金币消耗榜卡片；score 只表达该周期房间礼物金币消耗。
type RoomGiftLeaderboardItem struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Rank          int64                  `protobuf:"varint,1,opt,name=rank,proto3" json:"rank,omitempty"`
	RoomId        string                 `protobuf:"bytes,2,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"`
	CoinSpent     int64                  `protobuf:"varint,3,opt,name=coin_spent,json=coinSpent,proto3" json:"coin_spent,omitempty"`
	Room          *RoomListItem          `protobuf:"bytes,4,opt,name=room,proto3" json:"room,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RoomGiftLeaderboardItem) Reset() {
	*x = RoomGiftLeaderboardItem{}
	mi := &file_proto_room_v1_room_proto_msgTypes[149]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*RoomGiftLeaderboardItem) ProtoMessage() {}

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

func (x *RoomGiftLeaderboardItem) GetRank() int64 {
	if x != nil {
		return x.Rank
	}
	return 0
}

func (x *RoomGiftLeaderboardItem) GetRoomId() string {
	if x != nil {
		return x.RoomId
	}
	return ""
}

func (x *RoomGiftLeaderboardItem) GetCoinSpent() int64 {
	if x != nil {
		return x.CoinSpent
	}
	return 0
}

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

// ListRoomGiftLeaderboardResponse 返回当前 UTC 周期房间金币榜。
type ListRoomGiftLeaderboardResponse struct {
	state         protoimpl.MessageState     `protogen:"open.v1"`
	Items         []*RoomGiftLeaderboardItem `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
	Total         int64                      `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"`
	Period        string                     `protobuf:"bytes,3,opt,name=period,proto3" json:"period,omitempty"`
	StartAtMs     int64                      `protobuf:"varint,4,opt,name=start_at_ms,json=startAtMs,proto3" json:"start_at_ms,omitempty"`
	EndAtMs       int64                      `protobuf:"varint,5,opt,name=end_at_ms,json=endAtMs,proto3" json:"end_at_ms,omitempty"`
	ServerTimeMs  int64                      `protobuf:"varint,6,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListRoomGiftLeaderboardResponse) Reset() {
	*x = ListRoomGiftLeaderboardResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[150]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ListRoomGiftLeaderboardResponse) ProtoMessage() {}

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

func (x *ListRoomGiftLeaderboardResponse) GetItems() []*RoomGiftLeaderboardItem {
	if x != nil {
		return x.Items
	}
	return nil
}

func (x *ListRoomGiftLeaderboardResponse) GetTotal() int64 {
	if x != nil {
		return x.Total
	}
	return 0
}

func (x *ListRoomGiftLeaderboardResponse) GetPeriod() string {
	if x != nil {
		return x.Period
	}
	return ""
}

func (x *ListRoomGiftLeaderboardResponse) GetStartAtMs() int64 {
	if x != nil {
		return x.StartAtMs
	}
	return 0
}

func (x *ListRoomGiftLeaderboardResponse) GetEndAtMs() int64 {
	if x != nil {
		return x.EndAtMs
	}
	return 0
}

func (x *ListRoomGiftLeaderboardResponse) GetServerTimeMs() int64 {
	if x != nil {
		return x.ServerTimeMs
	}
	return 0
}

// ListRoomContributionRankRequest 查询单房间内用户送礼贡献周期榜。
type ListRoomContributionRankRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Meta          *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	RoomId        string                 `protobuf:"bytes,2,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"`
	Period        string                 `protobuf:"bytes,3,opt,name=period,proto3" json:"period,omitempty"`
	Limit         int32                  `protobuf:"varint,4,opt,name=limit,proto3" json:"limit,omitempty"`
	ViewerUserId  int64                  `protobuf:"varint,5,opt,name=viewer_user_id,json=viewerUserId,proto3" json:"viewer_user_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListRoomContributionRankRequest) Reset() {
	*x = ListRoomContributionRankRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[151]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ListRoomContributionRankRequest) ProtoMessage() {}

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

func (x *ListRoomContributionRankRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *ListRoomContributionRankRequest) GetRoomId() string {
	if x != nil {
		return x.RoomId
	}
	return ""
}

func (x *ListRoomContributionRankRequest) GetPeriod() string {
	if x != nil {
		return x.Period
	}
	return ""
}

func (x *ListRoomContributionRankRequest) GetLimit() int32 {
	if x != nil {
		return x.Limit
	}
	return 0
}

func (x *ListRoomContributionRankRequest) GetViewerUserId() int64 {
	if x != nil {
		return x.ViewerUserId
	}
	return 0
}

// ListRoomContributionRankResponse 返回单房间内用户送礼贡献周期榜。
type ListRoomContributionRankResponse struct {
	state         protoimpl.MessageState      `protogen:"open.v1"`
	RoomId        string                      `protobuf:"bytes,1,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"`
	Period        string                      `protobuf:"bytes,2,opt,name=period,proto3" json:"period,omitempty"`
	StartAtMs     int64                       `protobuf:"varint,3,opt,name=start_at_ms,json=startAtMs,proto3" json:"start_at_ms,omitempty"`
	EndAtMs       int64                       `protobuf:"varint,4,opt,name=end_at_ms,json=endAtMs,proto3" json:"end_at_ms,omitempty"`
	Items         []*RoomContributionRankItem `protobuf:"bytes,5,rep,name=items,proto3" json:"items,omitempty"`
	Total         int64                       `protobuf:"varint,6,opt,name=total,proto3" json:"total,omitempty"`
	ServerTimeMs  int64                       `protobuf:"varint,7,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListRoomContributionRankResponse) Reset() {
	*x = ListRoomContributionRankResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[152]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ListRoomContributionRankResponse) ProtoMessage() {}

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

func (x *ListRoomContributionRankResponse) GetRoomId() string {
	if x != nil {
		return x.RoomId
	}
	return ""
}

func (x *ListRoomContributionRankResponse) GetPeriod() string {
	if x != nil {
		return x.Period
	}
	return ""
}

func (x *ListRoomContributionRankResponse) GetStartAtMs() int64 {
	if x != nil {
		return x.StartAtMs
	}
	return 0
}

func (x *ListRoomContributionRankResponse) GetEndAtMs() int64 {
	if x != nil {
		return x.EndAtMs
	}
	return 0
}

func (x *ListRoomContributionRankResponse) GetItems() []*RoomContributionRankItem {
	if x != nil {
		return x.Items
	}
	return nil
}

func (x *ListRoomContributionRankResponse) GetTotal() int64 {
	if x != nil {
		return x.Total
	}
	return 0
}

func (x *ListRoomContributionRankResponse) GetServerTimeMs() int64 {
	if x != nil {
		return x.ServerTimeMs
	}
	return 0
}

// GetMyRoomRequest 查询当前用户自己创建的房间。
// 该查询必须由 gateway 写入鉴权后的 owner_user_id，不能从客户端接收用户 ID。
type GetMyRoomRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Meta          *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	OwnerUserId   int64                  `protobuf:"varint,2,opt,name=owner_user_id,json=ownerUserId,proto3" json:"owner_user_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetMyRoomRequest) Reset() {
	*x = GetMyRoomRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[153]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*GetMyRoomRequest) ProtoMessage() {}

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

func (x *GetMyRoomRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *GetMyRoomRequest) GetOwnerUserId() int64 {
	if x != nil {
		return x.OwnerUserId
	}
	return 0
}

// GetMyRoomResponse 返回 Mine 顶部“我的房间”权威卡片。
// 它直接读取 rooms 元数据并用 Room Cell 快照补充实时卡片字段，不依赖发现页投影是否已经写入。
type GetMyRoomResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	HasRoom       bool                   `protobuf:"varint,1,opt,name=has_room,json=hasRoom,proto3" json:"has_room,omitempty"`
	Room          *RoomListItem          `protobuf:"bytes,2,opt,name=room,proto3" json:"room,omitempty"`
	ServerTimeMs  int64                  `protobuf:"varint,3,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetMyRoomResponse) Reset() {
	*x = GetMyRoomResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[154]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*GetMyRoomResponse) ProtoMessage() {}

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

func (x *GetMyRoomResponse) GetHasRoom() bool {
	if x != nil {
		return x.HasRoom
	}
	return false
}

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

func (x *GetMyRoomResponse) GetServerTimeMs() int64 {
	if x != nil {
		return x.ServerTimeMs
	}
	return 0
}

// GetCurrentRoomRequest 查询当前用户是否仍有可恢复的房间 presence。
// 该查询必须由 gateway 写入鉴权后的 user_id，客户端不能提交 user_id。
type GetCurrentRoomRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Meta          *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	UserId        int64                  `protobuf:"varint,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetCurrentRoomRequest) Reset() {
	*x = GetCurrentRoomRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[155]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*GetCurrentRoomRequest) ProtoMessage() {}

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

func (x *GetCurrentRoomRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *GetCurrentRoomRequest) GetUserId() int64 {
	if x != nil {
		return x.UserId
	}
	return 0
}

// GetCurrentRoomResponse 是 App 启动、回前台和网络恢复时的房间恢复探测结果。
// 它只表达是否需要恢复，不会隐式 JoinRoom 或刷新 presence。
type GetCurrentRoomResponse struct {
	state           protoimpl.MessageState `protogen:"open.v1"`
	HasCurrentRoom  bool                   `protobuf:"varint,1,opt,name=has_current_room,json=hasCurrentRoom,proto3" json:"has_current_room,omitempty"`
	RoomId          string                 `protobuf:"bytes,2,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"`
	RoomVersion     int64                  `protobuf:"varint,3,opt,name=room_version,json=roomVersion,proto3" json:"room_version,omitempty"`
	Role            string                 `protobuf:"bytes,4,opt,name=role,proto3" json:"role,omitempty"`
	MicSessionId    string                 `protobuf:"bytes,5,opt,name=mic_session_id,json=micSessionId,proto3" json:"mic_session_id,omitempty"`
	PublishState    string                 `protobuf:"bytes,6,opt,name=publish_state,json=publishState,proto3" json:"publish_state,omitempty"`
	NeedJoinImGroup bool                   `protobuf:"varint,7,opt,name=need_join_im_group,json=needJoinImGroup,proto3" json:"need_join_im_group,omitempty"`
	NeedRtcToken    bool                   `protobuf:"varint,8,opt,name=need_rtc_token,json=needRtcToken,proto3" json:"need_rtc_token,omitempty"`
	ServerTimeMs    int64                  `protobuf:"varint,9,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"`
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

func (x *GetCurrentRoomResponse) Reset() {
	*x = GetCurrentRoomResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[156]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*GetCurrentRoomResponse) ProtoMessage() {}

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

func (x *GetCurrentRoomResponse) GetHasCurrentRoom() bool {
	if x != nil {
		return x.HasCurrentRoom
	}
	return false
}

func (x *GetCurrentRoomResponse) GetRoomId() string {
	if x != nil {
		return x.RoomId
	}
	return ""
}

func (x *GetCurrentRoomResponse) GetRoomVersion() int64 {
	if x != nil {
		return x.RoomVersion
	}
	return 0
}

func (x *GetCurrentRoomResponse) GetRole() string {
	if x != nil {
		return x.Role
	}
	return ""
}

func (x *GetCurrentRoomResponse) GetMicSessionId() string {
	if x != nil {
		return x.MicSessionId
	}
	return ""
}

func (x *GetCurrentRoomResponse) GetPublishState() string {
	if x != nil {
		return x.PublishState
	}
	return ""
}

func (x *GetCurrentRoomResponse) GetNeedJoinImGroup() bool {
	if x != nil {
		return x.NeedJoinImGroup
	}
	return false
}

func (x *GetCurrentRoomResponse) GetNeedRtcToken() bool {
	if x != nil {
		return x.NeedRtcToken
	}
	return false
}

func (x *GetCurrentRoomResponse) GetServerTimeMs() int64 {
	if x != nil {
		return x.ServerTimeMs
	}
	return 0
}

// BatchGetUserVoiceRoomPresencesRequest 查询一组用户当前可向 viewer 展示的上麦入口。
// user_ids 只能由 gateway 从外部查询参数解析；room-service 仍会去重并限制最多 100 个。
type BatchGetUserVoiceRoomPresencesRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Meta          *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	ViewerUserId  int64                  `protobuf:"varint,2,opt,name=viewer_user_id,json=viewerUserId,proto3" json:"viewer_user_id,omitempty"`
	UserIds       []int64                `protobuf:"varint,3,rep,packed,name=user_ids,json=userIds,proto3" json:"user_ids,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *BatchGetUserVoiceRoomPresencesRequest) Reset() {
	*x = BatchGetUserVoiceRoomPresencesRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[157]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*BatchGetUserVoiceRoomPresencesRequest) ProtoMessage() {}

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

func (x *BatchGetUserVoiceRoomPresencesRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *BatchGetUserVoiceRoomPresencesRequest) GetViewerUserId() int64 {
	if x != nil {
		return x.ViewerUserId
	}
	return 0
}

func (x *BatchGetUserVoiceRoomPresencesRequest) GetUserIds() []int64 {
	if x != nil {
		return x.UserIds
	}
	return nil
}

// UserVoiceRoomPresenceRoom 是个人资料页 Live 入口需要的最小房间投影。
// 它不携带在线用户和完整麦位集合，避免 batch 查询把 RoomSnapshot 明细扩散到用户域接口。
type UserVoiceRoomPresenceRoom struct {
	state       protoimpl.MessageState `protogen:"open.v1"`
	RoomId      string                 `protobuf:"bytes,1,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"`
	RoomShortId string                 `protobuf:"bytes,2,opt,name=room_short_id,json=roomShortId,proto3" json:"room_short_id,omitempty"`
	OwnerUserId int64                  `protobuf:"varint,3,opt,name=owner_user_id,json=ownerUserId,proto3" json:"owner_user_id,omitempty"`
	// 当前房间模型没有独立主持人字段，host_user_id 与 owner_user_id 保持一致。
	HostUserId    int64  `protobuf:"varint,4,opt,name=host_user_id,json=hostUserId,proto3" json:"host_user_id,omitempty"`
	Title         string `protobuf:"bytes,5,opt,name=title,proto3" json:"title,omitempty"`
	CoverUrl      string `protobuf:"bytes,6,opt,name=cover_url,json=coverUrl,proto3" json:"cover_url,omitempty"`
	BackgroundUrl string `protobuf:"bytes,7,opt,name=background_url,json=backgroundUrl,proto3" json:"background_url,omitempty"`
	Mode          string `protobuf:"bytes,8,opt,name=mode,proto3" json:"mode,omitempty"`
	OnlineCount   int32  `protobuf:"varint,9,opt,name=online_count,json=onlineCount,proto3" json:"online_count,omitempty"`
	SeatCount     int32  `protobuf:"varint,10,opt,name=seat_count,json=seatCount,proto3" json:"seat_count,omitempty"`
	Locked        bool   `protobuf:"varint,11,opt,name=locked,proto3" json:"locked,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *UserVoiceRoomPresenceRoom) Reset() {
	*x = UserVoiceRoomPresenceRoom{}
	mi := &file_proto_room_v1_room_proto_msgTypes[158]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*UserVoiceRoomPresenceRoom) ProtoMessage() {}

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

func (x *UserVoiceRoomPresenceRoom) GetRoomId() string {
	if x != nil {
		return x.RoomId
	}
	return ""
}

func (x *UserVoiceRoomPresenceRoom) GetRoomShortId() string {
	if x != nil {
		return x.RoomShortId
	}
	return ""
}

func (x *UserVoiceRoomPresenceRoom) GetOwnerUserId() int64 {
	if x != nil {
		return x.OwnerUserId
	}
	return 0
}

func (x *UserVoiceRoomPresenceRoom) GetHostUserId() int64 {
	if x != nil {
		return x.HostUserId
	}
	return 0
}

func (x *UserVoiceRoomPresenceRoom) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *UserVoiceRoomPresenceRoom) GetCoverUrl() string {
	if x != nil {
		return x.CoverUrl
	}
	return ""
}

func (x *UserVoiceRoomPresenceRoom) GetBackgroundUrl() string {
	if x != nil {
		return x.BackgroundUrl
	}
	return ""
}

func (x *UserVoiceRoomPresenceRoom) GetMode() string {
	if x != nil {
		return x.Mode
	}
	return ""
}

func (x *UserVoiceRoomPresenceRoom) GetOnlineCount() int32 {
	if x != nil {
		return x.OnlineCount
	}
	return 0
}

func (x *UserVoiceRoomPresenceRoom) GetSeatCount() int32 {
	if x != nil {
		return x.SeatCount
	}
	return 0
}

func (x *UserVoiceRoomPresenceRoom) GetLocked() bool {
	if x != nil {
		return x.Locked
	}
	return false
}

// UserVoiceRoomPresence 对每个去重后的请求用户返回一条稳定结果。
// 不可见、不可进入和未上麦统一返回 not_on_mic，避免通过差异状态探测房间位置。
type UserVoiceRoomPresence struct {
	state         protoimpl.MessageState     `protogen:"open.v1"`
	UserId        int64                      `protobuf:"varint,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
	State         string                     `protobuf:"bytes,2,opt,name=state,proto3" json:"state,omitempty"`
	SeatNo        int32                      `protobuf:"varint,3,opt,name=seat_no,json=seatNo,proto3" json:"seat_no,omitempty"`
	Joinable      bool                       `protobuf:"varint,4,opt,name=joinable,proto3" json:"joinable,omitempty"`
	ObservedAtMs  int64                      `protobuf:"varint,5,opt,name=observed_at_ms,json=observedAtMs,proto3" json:"observed_at_ms,omitempty"`
	Room          *UserVoiceRoomPresenceRoom `protobuf:"bytes,6,opt,name=room,proto3" json:"room,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *UserVoiceRoomPresence) Reset() {
	*x = UserVoiceRoomPresence{}
	mi := &file_proto_room_v1_room_proto_msgTypes[159]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*UserVoiceRoomPresence) ProtoMessage() {}

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

func (x *UserVoiceRoomPresence) GetUserId() int64 {
	if x != nil {
		return x.UserId
	}
	return 0
}

func (x *UserVoiceRoomPresence) GetState() string {
	if x != nil {
		return x.State
	}
	return ""
}

func (x *UserVoiceRoomPresence) GetSeatNo() int32 {
	if x != nil {
		return x.SeatNo
	}
	return 0
}

func (x *UserVoiceRoomPresence) GetJoinable() bool {
	if x != nil {
		return x.Joinable
	}
	return false
}

func (x *UserVoiceRoomPresence) GetObservedAtMs() int64 {
	if x != nil {
		return x.ObservedAtMs
	}
	return 0
}

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

type BatchGetUserVoiceRoomPresencesResponse struct {
	state         protoimpl.MessageState   `protogen:"open.v1"`
	Items         []*UserVoiceRoomPresence `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
	ServerTimeMs  int64                    `protobuf:"varint,2,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *BatchGetUserVoiceRoomPresencesResponse) Reset() {
	*x = BatchGetUserVoiceRoomPresencesResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[160]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*BatchGetUserVoiceRoomPresencesResponse) ProtoMessage() {}

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

func (x *BatchGetUserVoiceRoomPresencesResponse) GetItems() []*UserVoiceRoomPresence {
	if x != nil {
		return x.Items
	}
	return nil
}

func (x *BatchGetUserVoiceRoomPresencesResponse) GetServerTimeMs() int64 {
	if x != nil {
		return x.ServerTimeMs
	}
	return 0
}

// GetRoomSnapshotRequest 主动读取当前房间完整快照。
// 该查询必须由 gateway 写入鉴权后的 viewer_user_id，客户端不能提交 viewer_user_id。
type GetRoomSnapshotRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Meta          *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	RoomId        string                 `protobuf:"bytes,2,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"`
	ViewerUserId  int64                  `protobuf:"varint,3,opt,name=viewer_user_id,json=viewerUserId,proto3" json:"viewer_user_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetRoomSnapshotRequest) Reset() {
	*x = GetRoomSnapshotRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[161]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*GetRoomSnapshotRequest) ProtoMessage() {}

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

func (x *GetRoomSnapshotRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *GetRoomSnapshotRequest) GetRoomId() string {
	if x != nil {
		return x.RoomId
	}
	return ""
}

func (x *GetRoomSnapshotRequest) GetViewerUserId() int64 {
	if x != nil {
		return x.ViewerUserId
	}
	return 0
}

// GetRoomSnapshotResponse 返回 Room Cell 当前快照；只读，不刷新 presence。
type GetRoomSnapshotResponse struct {
	state        protoimpl.MessageState `protogen:"open.v1"`
	Room         *RoomSnapshot          `protobuf:"bytes,1,opt,name=room,proto3" json:"room,omitempty"`
	ServerTimeMs int64                  `protobuf:"varint,2,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"`
	// is_followed 表达 viewer 是否已经关注该房间；它来自 room_follows 关系表，不属于 Room Cell 核心快照。
	IsFollowed    bool `protobuf:"varint,3,opt,name=is_followed,json=isFollowed,proto3" json:"is_followed,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetRoomSnapshotResponse) Reset() {
	*x = GetRoomSnapshotResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[162]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*GetRoomSnapshotResponse) ProtoMessage() {}

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

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

func (x *GetRoomSnapshotResponse) GetServerTimeMs() int64 {
	if x != nil {
		return x.ServerTimeMs
	}
	return 0
}

func (x *GetRoomSnapshotResponse) GetIsFollowed() bool {
	if x != nil {
		return x.IsFollowed
	}
	return false
}

// GetRoomRocketRequest 主动读取当前房间火箭配置物料和进度状态。
// 该查询必须由 gateway 写入鉴权后的 viewer_user_id，客户端不能提交 viewer_user_id。
type GetRoomRocketRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Meta          *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	RoomId        string                 `protobuf:"bytes,2,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"`
	ViewerUserId  int64                  `protobuf:"varint,3,opt,name=viewer_user_id,json=viewerUserId,proto3" json:"viewer_user_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetRoomRocketRequest) Reset() {
	*x = GetRoomRocketRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[163]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*GetRoomRocketRequest) ProtoMessage() {}

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

func (x *GetRoomRocketRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *GetRoomRocketRequest) GetRoomId() string {
	if x != nil {
		return x.RoomId
	}
	return ""
}

func (x *GetRoomRocketRequest) GetViewerUserId() int64 {
	if x != nil {
		return x.ViewerUserId
	}
	return 0
}

type GetRoomRocketResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Rocket        *RoomRocketInfo        `protobuf:"bytes,1,opt,name=rocket,proto3" json:"rocket,omitempty"`
	ServerTimeMs  int64                  `protobuf:"varint,2,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetRoomRocketResponse) Reset() {
	*x = GetRoomRocketResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[164]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*GetRoomRocketResponse) ProtoMessage() {}

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

func (x *GetRoomRocketResponse) GetRocket() *RoomRocketInfo {
	if x != nil {
		return x.Rocket
	}
	return nil
}

func (x *GetRoomRocketResponse) GetServerTimeMs() int64 {
	if x != nil {
		return x.ServerTimeMs
	}
	return 0
}

// ApplyRoomRPSGiftRequest 只承载 room-rps 最终结算后真实发生的一份败者礼物。
// game-service 的预扣、平局退款和赢家本金退款都不能调用该接口。
type ApplyRoomRPSGiftRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Meta          *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	RoomId        string                 `protobuf:"bytes,2,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"`
	SenderUserId  int64                  `protobuf:"varint,3,opt,name=sender_user_id,json=senderUserId,proto3" json:"sender_user_id,omitempty"`
	TargetUserId  int64                  `protobuf:"varint,4,opt,name=target_user_id,json=targetUserId,proto3" json:"target_user_id,omitempty"`
	GiftId        string                 `protobuf:"bytes,5,opt,name=gift_id,json=giftId,proto3" json:"gift_id,omitempty"`
	HeatValue     int64                  `protobuf:"varint,6,opt,name=heat_value,json=heatValue,proto3" json:"heat_value,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ApplyRoomRPSGiftRequest) Reset() {
	*x = ApplyRoomRPSGiftRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[165]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ApplyRoomRPSGiftRequest) ProtoMessage() {}

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

func (x *ApplyRoomRPSGiftRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *ApplyRoomRPSGiftRequest) GetRoomId() string {
	if x != nil {
		return x.RoomId
	}
	return ""
}

func (x *ApplyRoomRPSGiftRequest) GetSenderUserId() int64 {
	if x != nil {
		return x.SenderUserId
	}
	return 0
}

func (x *ApplyRoomRPSGiftRequest) GetTargetUserId() int64 {
	if x != nil {
		return x.TargetUserId
	}
	return 0
}

func (x *ApplyRoomRPSGiftRequest) GetGiftId() string {
	if x != nil {
		return x.GiftId
	}
	return ""
}

func (x *ApplyRoomRPSGiftRequest) GetHeatValue() int64 {
	if x != nil {
		return x.HeatValue
	}
	return 0
}

type ApplyRoomRPSGiftResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Result        *CommandResult         `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"`
	Rocket        *RoomRocketState       `protobuf:"bytes,2,opt,name=rocket,proto3" json:"rocket,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ApplyRoomRPSGiftResponse) Reset() {
	*x = ApplyRoomRPSGiftResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[166]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ApplyRoomRPSGiftResponse) ProtoMessage() {}

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

func (x *ApplyRoomRPSGiftResponse) GetResult() *CommandResult {
	if x != nil {
		return x.Result
	}
	return nil
}

func (x *ApplyRoomRPSGiftResponse) GetRocket() *RoomRocketState {
	if x != nil {
		return x.Rocket
	}
	return nil
}

// ListRoomOnlineUsersRequest 分页查询房间在线用户，不让客户端拉完整 RoomSnapshot 做列表分页。
type ListRoomOnlineUsersRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Meta          *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	RoomId        string                 `protobuf:"bytes,2,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"`
	ViewerUserId  int64                  `protobuf:"varint,3,opt,name=viewer_user_id,json=viewerUserId,proto3" json:"viewer_user_id,omitempty"`
	Page          int32                  `protobuf:"varint,4,opt,name=page,proto3" json:"page,omitempty"`
	PageSize      int32                  `protobuf:"varint,5,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
	Sort          string                 `protobuf:"bytes,6,opt,name=sort,proto3" json:"sort,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListRoomOnlineUsersRequest) Reset() {
	*x = ListRoomOnlineUsersRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[167]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ListRoomOnlineUsersRequest) ProtoMessage() {}

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

func (x *ListRoomOnlineUsersRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *ListRoomOnlineUsersRequest) GetRoomId() string {
	if x != nil {
		return x.RoomId
	}
	return ""
}

func (x *ListRoomOnlineUsersRequest) GetViewerUserId() int64 {
	if x != nil {
		return x.ViewerUserId
	}
	return 0
}

func (x *ListRoomOnlineUsersRequest) GetPage() int32 {
	if x != nil {
		return x.Page
	}
	return 0
}

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

func (x *ListRoomOnlineUsersRequest) GetSort() string {
	if x != nil {
		return x.Sort
	}
	return ""
}

type ListRoomOnlineUsersResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Users         []*RoomUser            `protobuf:"bytes,1,rep,name=users,proto3" json:"users,omitempty"`
	Total         int64                  `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"`
	Page          int32                  `protobuf:"varint,3,opt,name=page,proto3" json:"page,omitempty"`
	PageSize      int32                  `protobuf:"varint,4,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
	ServerTimeMs  int64                  `protobuf:"varint,5,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"`
	Items         []*RoomOnlineUser      `protobuf:"bytes,6,rep,name=items,proto3" json:"items,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListRoomOnlineUsersResponse) Reset() {
	*x = ListRoomOnlineUsersResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[168]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ListRoomOnlineUsersResponse) ProtoMessage() {}

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

func (x *ListRoomOnlineUsersResponse) GetUsers() []*RoomUser {
	if x != nil {
		return x.Users
	}
	return nil
}

func (x *ListRoomOnlineUsersResponse) GetTotal() int64 {
	if x != nil {
		return x.Total
	}
	return 0
}

func (x *ListRoomOnlineUsersResponse) GetPage() int32 {
	if x != nil {
		return x.Page
	}
	return 0
}

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

func (x *ListRoomOnlineUsersResponse) GetServerTimeMs() int64 {
	if x != nil {
		return x.ServerTimeMs
	}
	return 0
}

func (x *ListRoomOnlineUsersResponse) GetItems() []*RoomOnlineUser {
	if x != nil {
		return x.Items
	}
	return nil
}

// RoomBannedUser 是房间黑名单列表的轻量治理读模型；用户展示资料由 gateway 批量补齐。
type RoomBannedUser struct {
	state       protoimpl.MessageState `protogen:"open.v1"`
	UserId      int64                  `protobuf:"varint,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
	ActorUserId int64                  `protobuf:"varint,2,opt,name=actor_user_id,json=actorUserId,proto3" json:"actor_user_id,omitempty"`
	CreatedAtMs int64                  `protobuf:"varint,3,opt,name=created_at_ms,json=createdAtMs,proto3" json:"created_at_ms,omitempty"`
	// unban_at_ms 为 0 表示永久 ban；非 0 表示该 UTC 毫秒后自动允许重新进房。
	UnbanAtMs     int64 `protobuf:"varint,4,opt,name=unban_at_ms,json=unbanAtMs,proto3" json:"unban_at_ms,omitempty"`
	RemainingMs   int64 `protobuf:"varint,5,opt,name=remaining_ms,json=remainingMs,proto3" json:"remaining_ms,omitempty"`
	Permanent     bool  `protobuf:"varint,6,opt,name=permanent,proto3" json:"permanent,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RoomBannedUser) Reset() {
	*x = RoomBannedUser{}
	mi := &file_proto_room_v1_room_proto_msgTypes[169]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*RoomBannedUser) ProtoMessage() {}

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

func (x *RoomBannedUser) GetUserId() int64 {
	if x != nil {
		return x.UserId
	}
	return 0
}

func (x *RoomBannedUser) GetActorUserId() int64 {
	if x != nil {
		return x.ActorUserId
	}
	return 0
}

func (x *RoomBannedUser) GetCreatedAtMs() int64 {
	if x != nil {
		return x.CreatedAtMs
	}
	return 0
}

func (x *RoomBannedUser) GetUnbanAtMs() int64 {
	if x != nil {
		return x.UnbanAtMs
	}
	return 0
}

func (x *RoomBannedUser) GetRemainingMs() int64 {
	if x != nil {
		return x.RemainingMs
	}
	return 0
}

func (x *RoomBannedUser) GetPermanent() bool {
	if x != nil {
		return x.Permanent
	}
	return false
}

// ListRoomBannedUsersRequest 分页查询房间当前仍有效的黑名单。
type ListRoomBannedUsersRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Meta          *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	RoomId        string                 `protobuf:"bytes,2,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"`
	ViewerUserId  int64                  `protobuf:"varint,3,opt,name=viewer_user_id,json=viewerUserId,proto3" json:"viewer_user_id,omitempty"`
	Page          int32                  `protobuf:"varint,4,opt,name=page,proto3" json:"page,omitempty"`
	PageSize      int32                  `protobuf:"varint,5,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListRoomBannedUsersRequest) Reset() {
	*x = ListRoomBannedUsersRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[170]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ListRoomBannedUsersRequest) ProtoMessage() {}

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

func (x *ListRoomBannedUsersRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *ListRoomBannedUsersRequest) GetRoomId() string {
	if x != nil {
		return x.RoomId
	}
	return ""
}

func (x *ListRoomBannedUsersRequest) GetViewerUserId() int64 {
	if x != nil {
		return x.ViewerUserId
	}
	return 0
}

func (x *ListRoomBannedUsersRequest) GetPage() int32 {
	if x != nil {
		return x.Page
	}
	return 0
}

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

type ListRoomBannedUsersResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Items         []*RoomBannedUser      `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
	Total         int64                  `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"`
	Page          int32                  `protobuf:"varint,3,opt,name=page,proto3" json:"page,omitempty"`
	PageSize      int32                  `protobuf:"varint,4,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
	ServerTimeMs  int64                  `protobuf:"varint,5,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListRoomBannedUsersResponse) Reset() {
	*x = ListRoomBannedUsersResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[171]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ListRoomBannedUsersResponse) ProtoMessage() {}

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

func (x *ListRoomBannedUsersResponse) GetItems() []*RoomBannedUser {
	if x != nil {
		return x.Items
	}
	return nil
}

func (x *ListRoomBannedUsersResponse) GetTotal() int64 {
	if x != nil {
		return x.Total
	}
	return 0
}

func (x *ListRoomBannedUsersResponse) GetPage() int32 {
	if x != nil {
		return x.Page
	}
	return 0
}

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

func (x *ListRoomBannedUsersResponse) GetServerTimeMs() int64 {
	if x != nil {
		return x.ServerTimeMs
	}
	return 0
}

// FollowRoomRequest 建立当前用户对房间的关注关系。
// 该关系是 room-service 的用户-房间低频关系事实，不进入 Room Cell command log。
type FollowRoomRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Meta          *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	RoomId        string                 `protobuf:"bytes,2,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"`
	UserId        int64                  `protobuf:"varint,3,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *FollowRoomRequest) Reset() {
	*x = FollowRoomRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[172]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*FollowRoomRequest) ProtoMessage() {}

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

func (x *FollowRoomRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *FollowRoomRequest) GetRoomId() string {
	if x != nil {
		return x.RoomId
	}
	return ""
}

func (x *FollowRoomRequest) GetUserId() int64 {
	if x != nil {
		return x.UserId
	}
	return 0
}

type FollowRoomResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	RoomId        string                 `protobuf:"bytes,1,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"`
	Followed      bool                   `protobuf:"varint,2,opt,name=followed,proto3" json:"followed,omitempty"`
	FollowedAtMs  int64                  `protobuf:"varint,3,opt,name=followed_at_ms,json=followedAtMs,proto3" json:"followed_at_ms,omitempty"`
	ServerTimeMs  int64                  `protobuf:"varint,4,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *FollowRoomResponse) Reset() {
	*x = FollowRoomResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[173]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*FollowRoomResponse) ProtoMessage() {}

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

func (x *FollowRoomResponse) GetRoomId() string {
	if x != nil {
		return x.RoomId
	}
	return ""
}

func (x *FollowRoomResponse) GetFollowed() bool {
	if x != nil {
		return x.Followed
	}
	return false
}

func (x *FollowRoomResponse) GetFollowedAtMs() int64 {
	if x != nil {
		return x.FollowedAtMs
	}
	return 0
}

func (x *FollowRoomResponse) GetServerTimeMs() int64 {
	if x != nil {
		return x.ServerTimeMs
	}
	return 0
}

// UnfollowRoomRequest 取消当前用户对房间的关注关系；未关注时按幂等成功处理。
type UnfollowRoomRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Meta          *RequestMeta           `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
	RoomId        string                 `protobuf:"bytes,2,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"`
	UserId        int64                  `protobuf:"varint,3,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *UnfollowRoomRequest) Reset() {
	*x = UnfollowRoomRequest{}
	mi := &file_proto_room_v1_room_proto_msgTypes[174]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*UnfollowRoomRequest) ProtoMessage() {}

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

func (x *UnfollowRoomRequest) GetMeta() *RequestMeta {
	if x != nil {
		return x.Meta
	}
	return nil
}

func (x *UnfollowRoomRequest) GetRoomId() string {
	if x != nil {
		return x.RoomId
	}
	return ""
}

func (x *UnfollowRoomRequest) GetUserId() int64 {
	if x != nil {
		return x.UserId
	}
	return 0
}

type UnfollowRoomResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	RoomId        string                 `protobuf:"bytes,1,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"`
	Followed      bool                   `protobuf:"varint,2,opt,name=followed,proto3" json:"followed,omitempty"`
	ServerTimeMs  int64                  `protobuf:"varint,3,opt,name=server_time_ms,json=serverTimeMs,proto3" json:"server_time_ms,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *UnfollowRoomResponse) Reset() {
	*x = UnfollowRoomResponse{}
	mi := &file_proto_room_v1_room_proto_msgTypes[175]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*UnfollowRoomResponse) ProtoMessage() {}

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

func (x *UnfollowRoomResponse) GetRoomId() string {
	if x != nil {
		return x.RoomId
	}
	return ""
}

func (x *UnfollowRoomResponse) GetFollowed() bool {
	if x != nil {
		return x.Followed
	}
	return false
}

func (x *UnfollowRoomResponse) GetServerTimeMs() int64 {
	if x != nil {
		return x.ServerTimeMs
	}
	return 0
}

// SendGiftLuckyHit 是 V2 微批中需要逐次播放的精简中奖命中。
// 声明追加在文件尾以保持既有 protobuf message index 稳定；字段可在前面的消息中正常引用。
type SendGiftLuckyHit struct {
	state          protoimpl.MessageState `protogen:"open.v1"`
	GiftIndex      int32                  `protobuf:"varint,1,opt,name=gift_index,json=giftIndex,proto3" json:"gift_index,omitempty"`
	DrawId         string                 `protobuf:"bytes,2,opt,name=draw_id,json=drawId,proto3" json:"draw_id,omitempty"`
	TargetUserId   int64                  `protobuf:"varint,3,opt,name=target_user_id,json=targetUserId,proto3" json:"target_user_id,omitempty"`
	SelectedTierId string                 `protobuf:"bytes,4,opt,name=selected_tier_id,json=selectedTierId,proto3" json:"selected_tier_id,omitempty"`
	MultiplierPpm  int64                  `protobuf:"varint,5,opt,name=multiplier_ppm,json=multiplierPpm,proto3" json:"multiplier_ppm,omitempty"`
	RewardCoins    int64                  `protobuf:"varint,6,opt,name=reward_coins,json=rewardCoins,proto3" json:"reward_coins,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *SendGiftLuckyHit) Reset() {
	*x = SendGiftLuckyHit{}
	mi := &file_proto_room_v1_room_proto_msgTypes[176]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*SendGiftLuckyHit) ProtoMessage() {}

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

func (x *SendGiftLuckyHit) GetGiftIndex() int32 {
	if x != nil {
		return x.GiftIndex
	}
	return 0
}

func (x *SendGiftLuckyHit) GetDrawId() string {
	if x != nil {
		return x.DrawId
	}
	return ""
}

func (x *SendGiftLuckyHit) GetTargetUserId() int64 {
	if x != nil {
		return x.TargetUserId
	}
	return 0
}

func (x *SendGiftLuckyHit) GetSelectedTierId() string {
	if x != nil {
		return x.SelectedTierId
	}
	return ""
}

func (x *SendGiftLuckyHit) GetMultiplierPpm() int64 {
	if x != nil {
		return x.MultiplierPpm
	}
	return 0
}

func (x *SendGiftLuckyHit) GetRewardCoins() int64 {
	if x != nil {
		return x.RewardCoins
	}
	return 0
}

// SendGiftResultV2 是可持久化、可原样重放的送礼结算结果。
// 旧客户端继续读取 SendGiftResponse 顶层 V1 字段；V2 客户端只以该对象判断幂等、
// 提交顺序和实际结算数量，避免网络重试时拿“当前房间快照”冒充原始结算结果。
type SendGiftResultV2 struct {
	state                  protoimpl.MessageState `protogen:"open.v1"`
	ApiVersion             int32                  `protobuf:"varint,1,opt,name=api_version,json=apiVersion,proto3" json:"api_version,omitempty"`
	CommandId              string                 `protobuf:"bytes,2,opt,name=command_id,json=commandId,proto3" json:"command_id,omitempty"`
	ComboSessionId         string                 `protobuf:"bytes,3,opt,name=combo_session_id,json=comboSessionId,proto3" json:"combo_session_id,omitempty"`
	BatchSeq               int64                  `protobuf:"varint,4,opt,name=batch_seq,json=batchSeq,proto3" json:"batch_seq,omitempty"`
	IdempotentReplay       bool                   `protobuf:"varint,5,opt,name=idempotent_replay,json=idempotentReplay,proto3" json:"idempotent_replay,omitempty"`
	CommittedRoomVersion   int64                  `protobuf:"varint,6,opt,name=committed_room_version,json=committedRoomVersion,proto3" json:"committed_room_version,omitempty"`
	BillingReceiptId       string                 `protobuf:"bytes,7,opt,name=billing_receipt_id,json=billingReceiptId,proto3" json:"billing_receipt_id,omitempty"`
	CoinBalanceAfter       int64                  `protobuf:"varint,8,opt,name=coin_balance_after,json=coinBalanceAfter,proto3" json:"coin_balance_after,omitempty"`
	GiftIncomeBalanceAfter int64                  `protobuf:"varint,9,opt,name=gift_income_balance_after,json=giftIncomeBalanceAfter,proto3" json:"gift_income_balance_after,omitempty"`
	SettledGiftCount       int32                  `protobuf:"varint,10,opt,name=settled_gift_count,json=settledGiftCount,proto3" json:"settled_gift_count,omitempty"`
	SettledTargetUserIds   []int64                `protobuf:"varint,11,rep,packed,name=settled_target_user_ids,json=settledTargetUserIds,proto3" json:"settled_target_user_ids,omitempty"`
	// balance_version 是 sender 被扣费资产在该批次完成后的 wallet 账户版本；幂等重放保持首次值。
	BalanceVersion int64                  `protobuf:"varint,12,opt,name=balance_version,json=balanceVersion,proto3" json:"balance_version,omitempty"`
	LuckyGift      *LuckyGiftDrawResult   `protobuf:"bytes,13,opt,name=lucky_gift,json=luckyGift,proto3" json:"lucky_gift,omitempty"`
	LuckyGifts     []*LuckyGiftDrawResult `protobuf:"bytes,14,rep,name=lucky_gifts,json=luckyGifts,proto3" json:"lucky_gifts,omitempty"`
	LuckyHits      []*SendGiftLuckyHit    `protobuf:"bytes,15,rep,name=lucky_hits,json=luckyHits,proto3" json:"lucky_hits,omitempty"`
	BatchDisplay   *SendGiftBatchDisplay  `protobuf:"bytes,16,opt,name=batch_display,json=batchDisplay,proto3" json:"batch_display,omitempty"`
	RoomHeat       int64                  `protobuf:"varint,17,opt,name=room_heat,json=roomHeat,proto3" json:"room_heat,omitempty"`
	GiftRank       []*RankItem            `protobuf:"bytes,18,rep,name=gift_rank,json=giftRank,proto3" json:"gift_rank,omitempty"`
	// operation_status 当前成功响应固定为 committed；该字段让 V2 契约可以明确区分未来的异步受理态。
	OperationStatus string `protobuf:"bytes,19,opt,name=operation_status,json=operationStatus,proto3" json:"operation_status,omitempty"`
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

func (x *SendGiftResultV2) Reset() {
	*x = SendGiftResultV2{}
	mi := &file_proto_room_v1_room_proto_msgTypes[177]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*SendGiftResultV2) ProtoMessage() {}

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

func (x *SendGiftResultV2) GetApiVersion() int32 {
	if x != nil {
		return x.ApiVersion
	}
	return 0
}

func (x *SendGiftResultV2) GetCommandId() string {
	if x != nil {
		return x.CommandId
	}
	return ""
}

func (x *SendGiftResultV2) GetComboSessionId() string {
	if x != nil {
		return x.ComboSessionId
	}
	return ""
}

func (x *SendGiftResultV2) GetBatchSeq() int64 {
	if x != nil {
		return x.BatchSeq
	}
	return 0
}

func (x *SendGiftResultV2) GetIdempotentReplay() bool {
	if x != nil {
		return x.IdempotentReplay
	}
	return false
}

func (x *SendGiftResultV2) GetCommittedRoomVersion() int64 {
	if x != nil {
		return x.CommittedRoomVersion
	}
	return 0
}

func (x *SendGiftResultV2) GetBillingReceiptId() string {
	if x != nil {
		return x.BillingReceiptId
	}
	return ""
}

func (x *SendGiftResultV2) GetCoinBalanceAfter() int64 {
	if x != nil {
		return x.CoinBalanceAfter
	}
	return 0
}

func (x *SendGiftResultV2) GetGiftIncomeBalanceAfter() int64 {
	if x != nil {
		return x.GiftIncomeBalanceAfter
	}
	return 0
}

func (x *SendGiftResultV2) GetSettledGiftCount() int32 {
	if x != nil {
		return x.SettledGiftCount
	}
	return 0
}

func (x *SendGiftResultV2) GetSettledTargetUserIds() []int64 {
	if x != nil {
		return x.SettledTargetUserIds
	}
	return nil
}

func (x *SendGiftResultV2) GetBalanceVersion() int64 {
	if x != nil {
		return x.BalanceVersion
	}
	return 0
}

func (x *SendGiftResultV2) GetLuckyGift() *LuckyGiftDrawResult {
	if x != nil {
		return x.LuckyGift
	}
	return nil
}

func (x *SendGiftResultV2) GetLuckyGifts() []*LuckyGiftDrawResult {
	if x != nil {
		return x.LuckyGifts
	}
	return nil
}

func (x *SendGiftResultV2) GetLuckyHits() []*SendGiftLuckyHit {
	if x != nil {
		return x.LuckyHits
	}
	return nil
}

func (x *SendGiftResultV2) GetBatchDisplay() *SendGiftBatchDisplay {
	if x != nil {
		return x.BatchDisplay
	}
	return nil
}

func (x *SendGiftResultV2) GetRoomHeat() int64 {
	if x != nil {
		return x.RoomHeat
	}
	return 0
}

func (x *SendGiftResultV2) GetGiftRank() []*RankItem {
	if x != nil {
		return x.GiftRank
	}
	return nil
}

func (x *SendGiftResultV2) GetOperationStatus() string {
	if x != nil {
		return x.OperationStatus
	}
	return ""
}

var File_proto_room_v1_room_proto protoreflect.FileDescriptor

const file_proto_room_v1_room_proto_rawDesc = "" +
	"\n" +
	"\x18proto/room/v1/room.proto\x12\rhyapp.room.v1\"\xa5\x02\n" +
	"\vRequestMeta\x12\x1d\n" +
	"\n" +
	"request_id\x18\x01 \x01(\tR\trequestId\x12\x1d\n" +
	"\n" +
	"command_id\x18\x02 \x01(\tR\tcommandId\x12\"\n" +
	"\ractor_user_id\x18\x03 \x01(\x03R\vactorUserId\x12\x17\n" +
	"\aroom_id\x18\x04 \x01(\tR\x06roomId\x12&\n" +
	"\x0fgateway_node_id\x18\x05 \x01(\tR\rgatewayNodeId\x12\x1d\n" +
	"\n" +
	"session_id\x18\x06 \x01(\tR\tsessionId\x12\x1c\n" +
	"\n" +
	"sent_at_ms\x18\a \x01(\x03R\bsentAtMs\x12\x19\n" +
	"\bapp_code\x18\b \x01(\tR\aappCode\x12\x1b\n" +
	"\tdevice_id\x18\t \x01(\tR\bdeviceId\"r\n" +
	"\rCommandResult\x12\x18\n" +
	"\aapplied\x18\x01 \x01(\bR\aapplied\x12!\n" +
	"\froom_version\x18\x02 \x01(\x03R\vroomVersion\x12$\n" +
	"\x0eserver_time_ms\x18\x03 \x01(\x03R\fserverTimeMs\"\x9f\x01\n" +
	"\bRoomUser\x12\x17\n" +
	"\auser_id\x18\x01 \x01(\x03R\x06userId\x12\x12\n" +
	"\x04role\x18\x02 \x01(\tR\x04role\x12 \n" +
	"\fjoined_at_ms\x18\x03 \x01(\x03R\n" +
	"joinedAtMs\x12%\n" +
	"\x0flast_seen_at_ms\x18\x04 \x01(\x03R\flastSeenAtMs\x12\x1d\n" +
	"\n" +
	"gift_value\x18\x05 \x01(\x03R\tgiftValue\"\xdd\x01\n" +
	"\x0eRoomOnlineUser\x12\x17\n" +
	"\auser_id\x18\x01 \x01(\x03R\x06userId\x12\x12\n" +
	"\x04role\x18\x02 \x01(\tR\x04role\x12\x1b\n" +
	"\troom_role\x18\x03 \x01(\tR\broomRole\x12\x1d\n" +
	"\n" +
	"gift_value\x18\x04 \x01(\x03R\tgiftValue\x12 \n" +
	"\fjoined_at_ms\x18\x05 \x01(\x03R\n" +
	"joinedAtMs\x12%\n" +
	"\x0flast_seen_at_ms\x18\x06 \x01(\x03R\flastSeenAtMs\x12\x19\n" +
	"\bis_owner\x18\a \x01(\bR\aisOwner\"\xd1\x03\n" +
	"\tSeatState\x12\x17\n" +
	"\aseat_no\x18\x01 \x01(\x05R\x06seatNo\x12\x17\n" +
	"\auser_id\x18\x02 \x01(\x03R\x06userId\x12\x16\n" +
	"\x06locked\x18\x03 \x01(\bR\x06locked\x12#\n" +
	"\rpublish_state\x18\x04 \x01(\tR\fpublishState\x12$\n" +
	"\x0emic_session_id\x18\x05 \x01(\tR\fmicSessionId\x12.\n" +
	"\x13publish_deadline_ms\x18\x06 \x01(\x03R\x11publishDeadlineMs\x127\n" +
	"\x18mic_session_room_version\x18\a \x01(\x03R\x15micSessionRoomVersion\x12:\n" +
	"\x1alast_publish_event_time_ms\x18\b \x01(\x03R\x16lastPublishEventTimeMs\x12\x1b\n" +
	"\tmic_muted\x18\t \x01(\bR\bmicMuted\x12\x1f\n" +
	"\vseat_status\x18\n" +
	" \x01(\tR\n" +
	"seatStatus\x12-\n" +
	"\x13mic_heartbeat_at_ms\x18\v \x01(\x03R\x10micHeartbeatAtMs\x12\x1d\n" +
	"\n" +
	"gift_value\x18\f \x01(\x03R\tgiftValue\"|\n" +
	"\bRankItem\x12\x17\n" +
	"\auser_id\x18\x01 \x01(\x03R\x06userId\x12\x14\n" +
	"\x05score\x18\x02 \x01(\x03R\x05score\x12\x1d\n" +
	"\n" +
	"gift_value\x18\x03 \x01(\x03R\tgiftValue\x12\"\n" +
	"\rupdated_at_ms\x18\x04 \x01(\x03R\vupdatedAtMs\"\xa0\x01\n" +
	"\x18RoomContributionRankItem\x12\x12\n" +
	"\x04rank\x18\x01 \x01(\x03R\x04rank\x12\x17\n" +
	"\auser_id\x18\x02 \x01(\x03R\x06userId\x12\x14\n" +
	"\x05score\x18\x03 \x01(\x03R\x05score\x12\x1d\n" +
	"\n" +
	"gift_value\x18\x04 \x01(\x03R\tgiftValue\x12\"\n" +
	"\rupdated_at_ms\x18\x05 \x01(\x03R\vupdatedAtMs\"\xee\x05\n" +
	"\x13LuckyGiftDrawResult\x12\x18\n" +
	"\aenabled\x18\x01 \x01(\bR\aenabled\x12\x17\n" +
	"\adraw_id\x18\x02 \x01(\tR\x06drawId\x12\x1d\n" +
	"\n" +
	"command_id\x18\x03 \x01(\tR\tcommandId\x12\x17\n" +
	"\apool_id\x18\x04 \x01(\tR\x06poolId\x12\x17\n" +
	"\agift_id\x18\x05 \x01(\tR\x06giftId\x12!\n" +
	"\frule_version\x18\x06 \x01(\x03R\vruleVersion\x12'\n" +
	"\x0fexperience_pool\x18\a \x01(\tR\x0eexperiencePool\x12(\n" +
	"\x10selected_tier_id\x18\b \x01(\tR\x0eselectedTierId\x12%\n" +
	"\x0emultiplier_ppm\x18\t \x01(\x03R\rmultiplierPpm\x12*\n" +
	"\x11base_reward_coins\x18\n" +
	" \x01(\x03R\x0fbaseRewardCoins\x124\n" +
	"\x16effective_reward_coins\x18\v \x01(\x03R\x14effectiveRewardCoins\x12#\n" +
	"\rreward_status\x18\f \x01(\tR\frewardStatus\x12%\n" +
	"\x0estage_feedback\x18\r \x01(\bR\rstageFeedback\x12'\n" +
	"\x0fhigh_multiplier\x18\x0e \x01(\bR\x0ehighMultiplier\x12\"\n" +
	"\rcreated_at_ms\x18\x0f \x01(\x03R\vcreatedAtMs\x122\n" +
	"\x15wallet_transaction_id\x18\x10 \x01(\tR\x13walletTransactionId\x12,\n" +
	"\x12coin_balance_after\x18\x11 \x01(\x03R\x10coinBalanceAfter\x12$\n" +
	"\x0etarget_user_id\x18\x12 \x01(\x03R\ftargetUserId\x123\n" +
	"\x04hits\x18\x13 \x03(\v2\x1f.hyapp.room.v1.SendGiftLuckyHitR\x04hits\"\xda\x01\n" +
	"\x14RoomRocketRewardItem\x12$\n" +
	"\x0ereward_item_id\x18\x01 \x01(\tR\frewardItemId\x12*\n" +
	"\x11resource_group_id\x18\x02 \x01(\x03R\x0fresourceGroupId\x12\x16\n" +
	"\x06weight\x18\x03 \x01(\x03R\x06weight\x12!\n" +
	"\fdisplay_name\x18\x04 \x01(\tR\vdisplayName\x12\x19\n" +
	"\bicon_url\x18\x05 \x01(\tR\aiconUrl\x12\x1a\n" +
	"\bquantity\x18\x06 \x01(\x03R\bquantity\"\xd3\x03\n" +
	"\x0fRoomRocketLevel\x12\x14\n" +
	"\x05level\x18\x01 \x01(\x05R\x05level\x12%\n" +
	"\x0efuel_threshold\x18\x02 \x01(\x03R\rfuelThreshold\x12\x1b\n" +
	"\tcover_url\x18\x03 \x01(\tR\bcoverUrl\x12#\n" +
	"\ranimation_url\x18\x04 \x01(\tR\fanimationUrl\x120\n" +
	"\x14launch_animation_url\x18\x05 \x01(\tR\x12launchAnimationUrl\x12,\n" +
	"\x12launched_image_url\x18\x06 \x01(\tR\x10launchedImageUrl\x12K\n" +
	"\x0fin_room_rewards\x18\a \x03(\v2#.hyapp.room.v1.RoomRocketRewardItemR\rinRoomRewards\x12F\n" +
	"\ftop1_rewards\x18\b \x03(\v2#.hyapp.room.v1.RoomRocketRewardItemR\vtop1Rewards\x12L\n" +
	"\x0figniter_rewards\x18\t \x03(\v2#.hyapp.room.v1.RoomRocketRewardItemR\x0eigniterRewards\"\x94\x02\n" +
	"\x15RoomRocketRewardGrant\x12\x1f\n" +
	"\vreward_role\x18\x01 \x01(\tR\n" +
	"rewardRole\x12\x17\n" +
	"\auser_id\x18\x02 \x01(\x03R\x06userId\x12$\n" +
	"\x0ereward_item_id\x18\x03 \x01(\tR\frewardItemId\x12*\n" +
	"\x11resource_group_id\x18\x04 \x01(\x03R\x0fresourceGroupId\x12!\n" +
	"\fdisplay_name\x18\x05 \x01(\tR\vdisplayName\x12\x19\n" +
	"\bicon_url\x18\x06 \x01(\tR\aiconUrl\x12\x19\n" +
	"\bgrant_id\x18\a \x01(\tR\agrantId\x12\x16\n" +
	"\x06status\x18\b \x01(\tR\x06status\"i\n" +
	"\x16RoomRocketContribution\x12\x17\n" +
	"\auser_id\x18\x01 \x01(\x03R\x06userId\x12\x12\n" +
	"\x04fuel\x18\x02 \x01(\x03R\x04fuel\x12\"\n" +
	"\rupdated_at_ms\x18\x03 \x01(\x03R\vupdatedAtMs\"\xe7\x02\n" +
	"\x17RoomRocketPendingLaunch\x12\x1b\n" +
	"\trocket_id\x18\x01 \x01(\tR\brocketId\x12\x14\n" +
	"\x05level\x18\x02 \x01(\x05R\x05level\x12%\n" +
	"\x0efuel_threshold\x18\x03 \x01(\x03R\rfuelThreshold\x12\"\n" +
	"\rignited_at_ms\x18\x04 \x01(\x03R\vignitedAtMs\x12 \n" +
	"\flaunch_at_ms\x18\x05 \x01(\x03R\n" +
	"launchAtMs\x12\x1e\n" +
	"\vreset_at_ms\x18\x06 \x01(\x03R\tresetAtMs\x12 \n" +
	"\ftop1_user_id\x18\a \x01(\x03R\n" +
	"top1UserId\x12&\n" +
	"\x0figniter_user_id\x18\b \x01(\x03R\rigniterUserId\x12%\n" +
	"\x0econfig_version\x18\t \x01(\x03R\rconfigVersion\x12\x1b\n" +
	"\tcover_url\x18\n" +
	" \x01(\tR\bcoverUrl\"\xaa\x05\n" +
	"\x0fRoomRocketState\x12#\n" +
	"\rcurrent_level\x18\x01 \x01(\x05R\fcurrentLevel\x12!\n" +
	"\fcurrent_fuel\x18\x02 \x01(\x03R\vcurrentFuel\x12%\n" +
	"\x0efuel_threshold\x18\x03 \x01(\x03R\rfuelThreshold\x12\x16\n" +
	"\x06status\x18\x04 \x01(\tR\x06status\x12\"\n" +
	"\rignited_at_ms\x18\x05 \x01(\x03R\vignitedAtMs\x12 \n" +
	"\flaunch_at_ms\x18\x06 \x01(\x03R\n" +
	"launchAtMs\x12$\n" +
	"\x0elaunched_at_ms\x18\a \x01(\x03R\flaunchedAtMs\x12\x1e\n" +
	"\vreset_at_ms\x18\b \x01(\x03R\tresetAtMs\x12 \n" +
	"\ftop1_user_id\x18\t \x01(\x03R\n" +
	"top1UserId\x12&\n" +
	"\x0figniter_user_id\x18\n" +
	" \x01(\x03R\rigniterUserId\x12\x1b\n" +
	"\trocket_id\x18\v \x01(\tR\brocketId\x12%\n" +
	"\x0econfig_version\x18\f \x01(\x03R\rconfigVersion\x12G\n" +
	"\flast_rewards\x18\r \x03(\v2$.hyapp.room.v1.RoomRocketRewardGrantR\vlastRewards\x12Q\n" +
	"\x10pending_launches\x18\x0e \x03(\v2&.hyapp.room.v1.RoomRocketPendingLaunchR\x0fpendingLaunches\x12Z\n" +
	"\x15current_contributions\x18\x0f \x03(\v2%.hyapp.room.v1.RoomRocketContributionR\x14currentContributions\"\xed\x02\n" +
	"\x0eRoomRocketInfo\x12\x18\n" +
	"\aenabled\x18\x01 \x01(\bR\aenabled\x126\n" +
	"\x06levels\x18\x02 \x03(\v2\x1e.hyapp.room.v1.RoomRocketLevelR\x06levels\x124\n" +
	"\x05state\x18\x03 \x01(\v2\x1e.hyapp.room.v1.RoomRocketStateR\x05state\x12$\n" +
	"\x0eserver_time_ms\x18\x04 \x01(\x03R\fserverTimeMs\x12'\n" +
	"\x0fbroadcast_scope\x18\x05 \x01(\tR\x0ebroadcastScope\x12&\n" +
	"\x0flaunch_delay_ms\x18\x06 \x01(\x03R\rlaunchDelayMs\x12,\n" +
	"\x12broadcast_delay_ms\x18\a \x01(\x03R\x10broadcastDelayMs\x12.\n" +
	"\x13reward_stack_policy\x18\b \x01(\tR\x11rewardStackPolicy\"\xd2\x01\n" +
	"\x16RoomRocketGiftFuelRule\x12\x17\n" +
	"\arule_id\x18\x01 \x01(\tR\x06ruleId\x12\x17\n" +
	"\agift_id\x18\x02 \x01(\tR\x06giftId\x12$\n" +
	"\x0egift_type_code\x18\x03 \x01(\tR\fgiftTypeCode\x12%\n" +
	"\x0emultiplier_ppm\x18\x04 \x01(\x03R\rmultiplierPpm\x12\x1d\n" +
	"\n" +
	"fixed_fuel\x18\x05 \x01(\x03R\tfixedFuel\x12\x1a\n" +
	"\bexcluded\x18\x06 \x01(\bR\bexcluded\"\xee\x04\n" +
	"\x15AdminRoomRocketConfig\x12\x19\n" +
	"\bapp_code\x18\x01 \x01(\tR\aappCode\x12\x18\n" +
	"\aenabled\x18\x02 \x01(\bR\aenabled\x12%\n" +
	"\x0econfig_version\x18\x03 \x01(\x03R\rconfigVersion\x12\x1f\n" +
	"\vfuel_source\x18\x04 \x01(\tR\n" +
	"fuelSource\x12&\n" +
	"\x0flaunch_delay_ms\x18\x05 \x01(\x03R\rlaunchDelayMs\x12+\n" +
	"\x11broadcast_enabled\x18\x06 \x01(\bR\x10broadcastEnabled\x12'\n" +
	"\x0fbroadcast_scope\x18\a \x01(\tR\x0ebroadcastScope\x12,\n" +
	"\x12broadcast_delay_ms\x18\b \x01(\x03R\x10broadcastDelayMs\x12.\n" +
	"\x13reward_stack_policy\x18\t \x01(\tR\x11rewardStackPolicy\x126\n" +
	"\x06levels\x18\n" +
	" \x03(\v2\x1e.hyapp.room.v1.RoomRocketLevelR\x06levels\x12M\n" +
	"\x0fgift_fuel_rules\x18\v \x03(\v2%.hyapp.room.v1.RoomRocketGiftFuelRuleR\rgiftFuelRules\x12-\n" +
	"\x13updated_by_admin_id\x18\f \x01(\x03R\x10updatedByAdminId\x12\"\n" +
	"\rcreated_at_ms\x18\r \x01(\x03R\vcreatedAtMs\x12\"\n" +
	"\rupdated_at_ms\x18\x0e \x01(\x03R\vupdatedAtMs\"Q\n" +
	"\x1fAdminGetRoomRocketConfigRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\"\x86\x01\n" +
	" AdminGetRoomRocketConfigResponse\x12<\n" +
	"\x06config\x18\x01 \x01(\v2$.hyapp.room.v1.AdminRoomRocketConfigR\x06config\x12$\n" +
	"\x0eserver_time_ms\x18\x02 \x01(\x03R\fserverTimeMs\"\xad\x01\n" +
	"\"AdminUpdateRoomRocketConfigRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12<\n" +
	"\x06config\x18\x02 \x01(\v2$.hyapp.room.v1.AdminRoomRocketConfigR\x06config\x12\x19\n" +
	"\badmin_id\x18\x03 \x01(\x03R\aadminId\"\x89\x01\n" +
	"#AdminUpdateRoomRocketConfigResponse\x12<\n" +
	"\x06config\x18\x01 \x01(\v2$.hyapp.room.v1.AdminRoomRocketConfigR\x06config\x12$\n" +
	"\x0eserver_time_ms\x18\x02 \x01(\x03R\fserverTimeMs\"\xcb\x01\n" +
	"\x13AdminRoomSeatConfig\x122\n" +
	"\x15candidate_seat_counts\x18\x01 \x03(\x05R\x13candidateSeatCounts\x12.\n" +
	"\x13allowed_seat_counts\x18\x02 \x03(\x05R\x11allowedSeatCounts\x12,\n" +
	"\x12default_seat_count\x18\x03 \x01(\x05R\x10defaultSeatCount\x12\"\n" +
	"\rupdated_at_ms\x18\x04 \x01(\x03R\vupdatedAtMs\"O\n" +
	"\x1dAdminGetRoomSeatConfigRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\"\x82\x01\n" +
	"\x1eAdminGetRoomSeatConfigResponse\x12:\n" +
	"\x06config\x18\x01 \x01(\v2\".hyapp.room.v1.AdminRoomSeatConfigR\x06config\x12$\n" +
	"\x0eserver_time_ms\x18\x02 \x01(\x03R\fserverTimeMs\"\xb0\x01\n" +
	" AdminUpdateRoomSeatConfigRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12.\n" +
	"\x13allowed_seat_counts\x18\x02 \x03(\x05R\x11allowedSeatCounts\x12,\n" +
	"\x12default_seat_count\x18\x03 \x01(\x05R\x10defaultSeatCount\"\x85\x01\n" +
	"!AdminUpdateRoomSeatConfigResponse\x12:\n" +
	"\x06config\x18\x01 \x01(\v2\".hyapp.room.v1.AdminRoomSeatConfigR\x06config\x12$\n" +
	"\x0eserver_time_ms\x18\x02 \x01(\x03R\fserverTimeMs\"i\n" +
	"\x1eAdminHumanRoomRobotCountryPool\x12!\n" +
	"\fcountry_code\x18\x01 \x01(\tR\vcountryCode\x12$\n" +
	"\x0erobot_user_ids\x18\x02 \x03(\x03R\frobotUserIds\"\x95\x01\n" +
	"\x1eAdminHumanRoomRobotCountryRule\x12!\n" +
	"\fcountry_code\x18\x01 \x01(\tR\vcountryCode\x12$\n" +
	"\x0emax_room_count\x18\x02 \x01(\x05R\fmaxRoomCount\x12*\n" +
	"\x11allowed_owner_ids\x18\x03 \x03(\tR\x0fallowedOwnerIds\"\xd8\n" +
	"\n" +
	"\x19AdminHumanRoomRobotConfig\x12\x19\n" +
	"\bapp_code\x18\x01 \x01(\tR\aappCode\x12\x18\n" +
	"\aenabled\x18\x02 \x01(\bR\aenabled\x129\n" +
	"\x19candidate_room_max_online\x18\x03 \x01(\x05R\x16candidateRoomMaxOnline\x121\n" +
	"\x15room_full_stop_online\x18\x04 \x01(\x05R\x12roomFullStopOnline\x12)\n" +
	"\x11robot_stay_min_ms\x18\x05 \x01(\x03R\x0erobotStayMinMs\x12)\n" +
	"\x11robot_stay_max_ms\x18\x06 \x01(\x03R\x0erobotStayMaxMs\x12/\n" +
	"\x14robot_replace_min_ms\x18\a \x01(\x03R\x11robotReplaceMinMs\x12/\n" +
	"\x14robot_replace_max_ms\x18\b \x01(\x03R\x11robotReplaceMaxMs\x125\n" +
	"\x17normal_gift_interval_ms\x18\t \x01(\x03R\x14normalGiftIntervalMs\x12\x19\n" +
	"\bgift_ids\x18\n" +
	" \x03(\tR\agiftIds\x12$\n" +
	"\x0elucky_gift_ids\x18\v \x03(\tR\fluckyGiftIds\x12/\n" +
	"\x14super_lucky_gift_ids\x18\f \x03(\tR\x11superLuckyGiftIds\x12&\n" +
	"\x0flucky_combo_min\x18\r \x01(\x03R\rluckyComboMin\x12&\n" +
	"\x0flucky_combo_max\x18\x0e \x01(\x03R\rluckyComboMax\x12+\n" +
	"\x12lucky_pause_min_ms\x18\x0f \x01(\x03R\x0fluckyPauseMinMs\x12+\n" +
	"\x12lucky_pause_max_ms\x18\x10 \x01(\x03R\x0fluckyPauseMaxMs\x12(\n" +
	"\x10max_gift_senders\x18\x11 \x01(\x03R\x0emaxGiftSenders\x12R\n" +
	"\rcountry_pools\x18\x12 \x03(\v2-.hyapp.room.v1.AdminHumanRoomRobotCountryPoolR\fcountryPools\x12-\n" +
	"\x13updated_by_admin_id\x18\x13 \x01(\x04R\x10updatedByAdminId\x12\"\n" +
	"\rcreated_at_ms\x18\x14 \x01(\x03R\vcreatedAtMs\x12\"\n" +
	"\rupdated_at_ms\x18\x15 \x01(\x03R\vupdatedAtMs\x12<\n" +
	"\x1bnormal_gift_interval_min_ms\x18\x16 \x01(\x03R\x17normalGiftIntervalMinMs\x12<\n" +
	"\x1bnormal_gift_interval_max_ms\x18\x17 \x01(\x03R\x17normalGiftIntervalMaxMs\x123\n" +
	"\x16room_target_min_online\x18\x18 \x01(\x05R\x13roomTargetMinOnline\x123\n" +
	"\x16room_target_max_online\x18\x19 \x01(\x05R\x13roomTargetMaxOnline\x12*\n" +
	"\x11allowed_owner_ids\x18\x1a \x03(\tR\x0fallowedOwnerIds\x122\n" +
	"\x15country_limit_enabled\x18\x1b \x01(\bR\x13countryLimitEnabled\x12R\n" +
	"\rcountry_rules\x18\x1c \x03(\v2-.hyapp.room.v1.AdminHumanRoomRobotCountryRuleR\fcountryRules\"U\n" +
	"#AdminGetHumanRoomRobotConfigRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\"\x8e\x01\n" +
	"$AdminGetHumanRoomRobotConfigResponse\x12@\n" +
	"\x06config\x18\x01 \x01(\v2(.hyapp.room.v1.AdminHumanRoomRobotConfigR\x06config\x12$\n" +
	"\x0eserver_time_ms\x18\x02 \x01(\x03R\fserverTimeMs\"\xb5\x01\n" +
	"&AdminUpdateHumanRoomRobotConfigRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12@\n" +
	"\x06config\x18\x02 \x01(\v2(.hyapp.room.v1.AdminHumanRoomRobotConfigR\x06config\x12\x19\n" +
	"\badmin_id\x18\x03 \x01(\x04R\aadminId\"\x91\x01\n" +
	"'AdminUpdateHumanRoomRobotConfigResponse\x12@\n" +
	"\x06config\x18\x01 \x01(\v2(.hyapp.room.v1.AdminHumanRoomRobotConfigR\x06config\x12$\n" +
	"\x0eserver_time_ms\x18\x02 \x01(\x03R\fserverTimeMs\"\xea\x01\n" +
	"\x10AdminRoomPinRoom\x12\x17\n" +
	"\aroom_id\x18\x01 \x01(\tR\x06roomId\x12\"\n" +
	"\rroom_short_id\x18\x02 \x01(\tR\vroomShortId\x12*\n" +
	"\x11visible_region_id\x18\x03 \x01(\x03R\x0fvisibleRegionId\x12\"\n" +
	"\rowner_user_id\x18\x04 \x01(\x03R\vownerUserId\x12\x14\n" +
	"\x05title\x18\x05 \x01(\tR\x05title\x12\x1b\n" +
	"\tcover_url\x18\x06 \x01(\tR\bcoverUrl\x12\x16\n" +
	"\x06status\x18\a \x01(\tR\x06status\"\xfb\x03\n" +
	"\fAdminRoomPin\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\x03R\x02id\x12*\n" +
	"\x11visible_region_id\x18\x02 \x01(\x03R\x0fvisibleRegionId\x12\x17\n" +
	"\aroom_id\x18\x03 \x01(\tR\x06roomId\x12\x16\n" +
	"\x06weight\x18\x04 \x01(\x03R\x06weight\x12\x16\n" +
	"\x06status\x18\x05 \x01(\tR\x06status\x12 \n" +
	"\fpinned_at_ms\x18\x06 \x01(\x03R\n" +
	"pinnedAtMs\x12\"\n" +
	"\rexpires_at_ms\x18\a \x01(\x03R\vexpiresAtMs\x12&\n" +
	"\x0fcancelled_at_ms\x18\b \x01(\x03R\rcancelledAtMs\x12-\n" +
	"\x13created_by_admin_id\x18\t \x01(\x04R\x10createdByAdminId\x121\n" +
	"\x15cancelled_by_admin_id\x18\n" +
	" \x01(\x04R\x12cancelledByAdminId\x12\"\n" +
	"\rcreated_at_ms\x18\v \x01(\x03R\vcreatedAtMs\x12\"\n" +
	"\rupdated_at_ms\x18\f \x01(\x03R\vupdatedAtMs\x123\n" +
	"\x04room\x18\r \x01(\v2\x1f.hyapp.room.v1.AdminRoomPinRoomR\x04room\x12\x19\n" +
	"\bpin_type\x18\x0e \x01(\tR\apinType\"\xf4\x01\n" +
	"\x18AdminListRoomPinsRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12\x12\n" +
	"\x04page\x18\x02 \x01(\x05R\x04page\x12\x1b\n" +
	"\tpage_size\x18\x03 \x01(\x05R\bpageSize\x12\x18\n" +
	"\akeyword\x18\x04 \x01(\tR\akeyword\x12\x16\n" +
	"\x06status\x18\x05 \x01(\tR\x06status\x12*\n" +
	"\x11visible_region_id\x18\x06 \x01(\x03R\x0fvisibleRegionId\x12\x19\n" +
	"\bpin_type\x18\a \x01(\tR\apinType\"\x88\x01\n" +
	"\x19AdminListRoomPinsResponse\x12/\n" +
	"\x04pins\x18\x01 \x03(\v2\x1b.hyapp.room.v1.AdminRoomPinR\x04pins\x12\x14\n" +
	"\x05total\x18\x02 \x01(\x03R\x05total\x12$\n" +
	"\x0eserver_time_ms\x18\x03 \x01(\x03R\fserverTimeMs\"\x9d\x02\n" +
	"\x19AdminCreateRoomPinRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12\x17\n" +
	"\aroom_id\x18\x02 \x01(\tR\x06roomId\x12\x16\n" +
	"\x06weight\x18\x03 \x01(\x03R\x06weight\x12#\n" +
	"\rduration_days\x18\x04 \x01(\x03R\fdurationDays\x12\x19\n" +
	"\badmin_id\x18\x05 \x01(\x04R\aadminId\x12 \n" +
	"\fpinned_at_ms\x18\x06 \x01(\x03R\n" +
	"pinnedAtMs\x12\"\n" +
	"\rexpires_at_ms\x18\a \x01(\x03R\vexpiresAtMs\x12\x19\n" +
	"\bpin_type\x18\b \x01(\tR\apinType\"q\n" +
	"\x1aAdminCreateRoomPinResponse\x12-\n" +
	"\x03pin\x18\x01 \x01(\v2\x1b.hyapp.room.v1.AdminRoomPinR\x03pin\x12$\n" +
	"\x0eserver_time_ms\x18\x02 \x01(\x03R\fserverTimeMs\"}\n" +
	"\x19AdminCancelRoomPinRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12\x15\n" +
	"\x06pin_id\x18\x02 \x01(\x03R\x05pinId\x12\x19\n" +
	"\badmin_id\x18\x03 \x01(\x04R\aadminId\"q\n" +
	"\x1aAdminCancelRoomPinResponse\x12-\n" +
	"\x03pin\x18\x01 \x01(\v2\x1b.hyapp.room.v1.AdminRoomPinR\x03pin\x12$\n" +
	"\x0eserver_time_ms\x18\x02 \x01(\x03R\fserverTimeMs\"\x9c\x04\n" +
	"\x16AdminRobotRoomGiftRule\x12\x19\n" +
	"\bgift_ids\x18\x01 \x03(\tR\agiftIds\x12$\n" +
	"\x0elucky_gift_ids\x18\x02 \x03(\tR\fluckyGiftIds\x125\n" +
	"\x17normal_gift_interval_ms\x18\x03 \x01(\x03R\x14normalGiftIntervalMs\x12&\n" +
	"\x0flucky_combo_min\x18\x04 \x01(\x03R\rluckyComboMin\x12&\n" +
	"\x0flucky_combo_max\x18\x05 \x01(\x03R\rluckyComboMax\x12+\n" +
	"\x12lucky_pause_min_ms\x18\x06 \x01(\x03R\x0fluckyPauseMinMs\x12+\n" +
	"\x12lucky_pause_max_ms\x18\a \x01(\x03R\x0fluckyPauseMaxMs\x12)\n" +
	"\x11robot_stay_min_ms\x18\b \x01(\x03R\x0erobotStayMinMs\x12)\n" +
	"\x11robot_stay_max_ms\x18\t \x01(\x03R\x0erobotStayMaxMs\x12/\n" +
	"\x14robot_replace_min_ms\x18\n" +
	" \x01(\x03R\x11robotReplaceMinMs\x12/\n" +
	"\x14robot_replace_max_ms\x18\v \x01(\x03R\x11robotReplaceMaxMs\x12(\n" +
	"\x10max_gift_senders\x18\f \x01(\x03R\x0emaxGiftSenders\"\xbc\x04\n" +
	"\x0eAdminRobotRoom\x12\x19\n" +
	"\bapp_code\x18\x01 \x01(\tR\aappCode\x12\x17\n" +
	"\aroom_id\x18\x02 \x01(\tR\x06roomId\x12\"\n" +
	"\rroom_short_id\x18\x03 \x01(\tR\vroomShortId\x12\x14\n" +
	"\x05title\x18\x04 \x01(\tR\x05title\x12\x1b\n" +
	"\tcover_url\x18\x05 \x01(\tR\bcoverUrl\x12*\n" +
	"\x11visible_region_id\x18\x06 \x01(\x03R\x0fvisibleRegionId\x12\x16\n" +
	"\x06status\x18\a \x01(\tR\x06status\x12-\n" +
	"\x13owner_robot_user_id\x18\b \x01(\x03R\x10ownerRobotUserId\x12$\n" +
	"\x0erobot_user_ids\x18\t \x03(\x03R\frobotUserIds\x12B\n" +
	"\tgift_rule\x18\n" +
	" \x01(\v2%.hyapp.room.v1.AdminRobotRoomGiftRuleR\bgiftRule\x12-\n" +
	"\x13created_by_admin_id\x18\v \x01(\x04R\x10createdByAdminId\x12\"\n" +
	"\rcreated_at_ms\x18\f \x01(\x03R\vcreatedAtMs\x12\"\n" +
	"\rupdated_at_ms\x18\r \x01(\x03R\vupdatedAtMs\x12,\n" +
	"\x12active_robot_count\x18\x0e \x01(\x05R\x10activeRobotCount\x12\x1d\n" +
	"\n" +
	"seat_count\x18\x0f \x01(\x05R\tseatCount\"\x95\x01\n" +
	"\x1aAdminListRobotRoomsRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12\x12\n" +
	"\x04page\x18\x02 \x01(\x05R\x04page\x12\x1b\n" +
	"\tpage_size\x18\x03 \x01(\x05R\bpageSize\x12\x16\n" +
	"\x06status\x18\x04 \x01(\tR\x06status\"\x8e\x01\n" +
	"\x1bAdminListRobotRoomsResponse\x123\n" +
	"\x05rooms\x18\x01 \x03(\v2\x1d.hyapp.room.v1.AdminRobotRoomR\x05rooms\x12\x14\n" +
	"\x05total\x18\x02 \x01(\x03R\x05total\x12$\n" +
	"\x0eserver_time_ms\x18\x03 \x01(\x03R\fserverTimeMs\"\x9b\x04\n" +
	"\x1bAdminCreateRobotRoomRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12-\n" +
	"\x13owner_robot_user_id\x18\x02 \x01(\x03R\x10ownerRobotUserId\x127\n" +
	"\x18candidate_robot_user_ids\x18\x03 \x03(\x03R\x15candidateRobotUserIds\x12&\n" +
	"\x0fmin_robot_count\x18\x04 \x01(\x05R\rminRobotCount\x12&\n" +
	"\x0fmax_robot_count\x18\x05 \x01(\x05R\rmaxRobotCount\x12\x1b\n" +
	"\troom_name\x18\x06 \x01(\tR\broomName\x12\x1f\n" +
	"\vroom_avatar\x18\a \x01(\tR\n" +
	"roomAvatar\x12*\n" +
	"\x11visible_region_id\x18\b \x01(\x03R\x0fvisibleRegionId\x12B\n" +
	"\tgift_rule\x18\t \x01(\v2%.hyapp.room.v1.AdminRobotRoomGiftRuleR\bgiftRule\x12\x19\n" +
	"\badmin_id\x18\n" +
	" \x01(\x04R\aadminId\x12,\n" +
	"\x12owner_country_code\x18\v \x01(\tR\x10ownerCountryCode\x12\x1d\n" +
	"\n" +
	"seat_count\x18\f \x01(\x05R\tseatCount\"w\n" +
	"\x1cAdminCreateRobotRoomResponse\x121\n" +
	"\x04room\x18\x01 \x01(\v2\x1d.hyapp.room.v1.AdminRobotRoomR\x04room\x12$\n" +
	"\x0eserver_time_ms\x18\x02 \x01(\x03R\fserverTimeMs\"\x83\x01\n" +
	"\x1eAdminSetRobotRoomStatusRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12\x16\n" +
	"\x06status\x18\x02 \x01(\tR\x06status\x12\x19\n" +
	"\badmin_id\x18\x03 \x01(\x04R\aadminId\"z\n" +
	"\x1fAdminSetRobotRoomStatusResponse\x121\n" +
	"\x04room\x18\x01 \x01(\v2\x1d.hyapp.room.v1.AdminRobotRoomR\x04room\x12$\n" +
	"\x0eserver_time_ms\x18\x02 \x01(\x03R\fserverTimeMs\"\xc3\x01\n" +
	"\"AdminRenameOwnerCountryCodeRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12(\n" +
	"\x10old_country_code\x18\x02 \x01(\tR\x0eoldCountryCode\x12(\n" +
	"\x10new_country_code\x18\x03 \x01(\tR\x0enewCountryCode\x12\x19\n" +
	"\badmin_id\x18\x04 \x01(\x04R\aadminId\"\x9e\x01\n" +
	"#AdminRenameOwnerCountryCodeResponse\x12*\n" +
	"\x11room_list_entries\x18\x01 \x01(\x03R\x0froomListEntries\x12%\n" +
	"\x0eroom_snapshots\x18\x02 \x01(\x03R\rroomSnapshots\x12$\n" +
	"\x0eserver_time_ms\x18\x03 \x01(\x03R\fserverTimeMs\"r\n" +
	"%AdminFilterAvailableRoomRobotsRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12\x19\n" +
	"\buser_ids\x18\x02 \x03(\x03R\auserIds\"\xa8\x01\n" +
	"&AdminFilterAvailableRoomRobotsResponse\x12,\n" +
	"\x12available_user_ids\x18\x01 \x03(\x03R\x10availableUserIds\x12*\n" +
	"\x11occupied_user_ids\x18\x02 \x03(\x03R\x0foccupiedUserIds\x12$\n" +
	"\x0eserver_time_ms\x18\x03 \x01(\x03R\fserverTimeMs\"\x93\x01\n" +
	"\fRoomBanState\x12\x17\n" +
	"\auser_id\x18\x01 \x01(\x03R\x06userId\x12\"\n" +
	"\ractor_user_id\x18\x02 \x01(\x03R\vactorUserId\x12\"\n" +
	"\rcreated_at_ms\x18\x03 \x01(\x03R\vcreatedAtMs\x12\"\n" +
	"\rexpires_at_ms\x18\x04 \x01(\x03R\vexpiresAtMs\"\x88\t\n" +
	"\fRoomSnapshot\x12\x17\n" +
	"\aroom_id\x18\x01 \x01(\tR\x06roomId\x12\"\n" +
	"\rowner_user_id\x18\x02 \x01(\x03R\vownerUserId\x12\x12\n" +
	"\x04mode\x18\x04 \x01(\tR\x04mode\x12\x16\n" +
	"\x06status\x18\x05 \x01(\tR\x06status\x12!\n" +
	"\fchat_enabled\x18\x06 \x01(\bR\vchatEnabled\x125\n" +
	"\tmic_seats\x18\a \x03(\v2\x18.hyapp.room.v1.SeatStateR\bmicSeats\x12:\n" +
	"\fonline_users\x18\b \x03(\v2\x17.hyapp.room.v1.RoomUserR\vonlineUsers\x12$\n" +
	"\x0eadmin_user_ids\x18\t \x03(\x03R\fadminUserIds\x12 \n" +
	"\fban_user_ids\x18\n" +
	" \x03(\x03R\n" +
	"banUserIds\x12\"\n" +
	"\rmute_user_ids\x18\v \x03(\x03R\vmuteUserIds\x124\n" +
	"\tgift_rank\x18\f \x03(\v2\x17.hyapp.room.v1.RankItemR\bgiftRank\x12C\n" +
	"\broom_ext\x18\r \x03(\v2(.hyapp.room.v1.RoomSnapshot.RoomExtEntryR\aroomExt\x12\x12\n" +
	"\x04heat\x18\x0e \x01(\x03R\x04heat\x12\x18\n" +
	"\aversion\x18\x0f \x01(\x03R\aversion\x12\x19\n" +
	"\bapp_code\x18\x10 \x01(\tR\aappCode\x12\"\n" +
	"\rroom_short_id\x18\x11 \x01(\tR\vroomShortId\x12*\n" +
	"\x11visible_region_id\x18\x12 \x01(\x03R\x0fvisibleRegionId\x12\x16\n" +
	"\x06locked\x18\x13 \x01(\bR\x06locked\x126\n" +
	"\x06rocket\x18\x14 \x01(\v2\x1e.hyapp.room.v1.RoomRocketStateR\x06rocket\x12:\n" +
	"\n" +
	"ban_states\x18\x15 \x03(\v2\x1b.hyapp.room.v1.RoomBanStateR\tbanStates\x12!\n" +
	"\fonline_count\x18\x16 \x01(\x05R\vonlineCount\x12F\n" +
	"\vroom_border\x18\x17 \x01(\v2%.hyapp.room.v1.RoomDecorationResourceR\n" +
	"roomBorder\x12M\n" +
	"\x0froom_name_style\x18\x18 \x01(\v2%.hyapp.room.v1.RoomDecorationResourceR\rroomNameStyle\x12O\n" +
	"\x11active_background\x18\x19 \x01(\v2\".hyapp.room.v1.RoomBackgroundImageR\x10activeBackground\x12&\n" +
	"\x0froom_border_url\x18\x1a \x01(\tR\rroomBorderUrl\x1a:\n" +
	"\fRoomExtEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\x96\x03\n" +
	"\tRoomMedia\x12\x10\n" +
	"\x03url\x18\x01 \x01(\tR\x03url\x12\x1d\n" +
	"\n" +
	"object_key\x18\x02 \x01(\tR\tobjectKey\x12!\n" +
	"\fcontent_type\x18\x03 \x01(\tR\vcontentType\x12\x16\n" +
	"\x06format\x18\x04 \x01(\tR\x06format\x12\x1d\n" +
	"\n" +
	"size_bytes\x18\x05 \x01(\x03R\tsizeBytes\x12\x14\n" +
	"\x05width\x18\x06 \x01(\x05R\x05width\x12\x16\n" +
	"\x06height\x18\a \x01(\x05R\x06height\x12\x1a\n" +
	"\banimated\x18\b \x01(\bR\banimated\x12\x1f\n" +
	"\vframe_count\x18\t \x01(\x05R\n" +
	"frameCount\x12\x1f\n" +
	"\vduration_ms\x18\n" +
	" \x01(\x03R\n" +
	"durationMs\x12\x1d\n" +
	"\n" +
	"poster_url\x18\v \x01(\tR\tposterUrl\x12#\n" +
	"\rthumbnail_url\x18\f \x01(\tR\fthumbnailUrl\x12\x16\n" +
	"\x06sha256\x18\r \x01(\tR\x06sha256\x12\x16\n" +
	"\x06status\x18\x0e \x01(\tR\x06status\"\xb4\x02\n" +
	"\x13RoomBackgroundImage\x12#\n" +
	"\rbackground_id\x18\x01 \x01(\x03R\fbackgroundId\x12\x17\n" +
	"\aroom_id\x18\x02 \x01(\tR\x06roomId\x12\x1b\n" +
	"\timage_url\x18\x03 \x01(\tR\bimageUrl\x12+\n" +
	"\x12created_by_user_id\x18\x04 \x01(\x03R\x0fcreatedByUserId\x12\"\n" +
	"\rcreated_at_ms\x18\x05 \x01(\x03R\vcreatedAtMs\x12\"\n" +
	"\rupdated_at_ms\x18\x06 \x01(\x03R\vupdatedAtMs\x12.\n" +
	"\x05media\x18\a \x01(\v2\x18.hyapp.room.v1.RoomMediaR\x05media\x12\x1d\n" +
	"\n" +
	"command_id\x18\b \x01(\tR\tcommandId\"\xb1\x01\n" +
	"\x19SaveRoomBackgroundRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12\x17\n" +
	"\aroom_id\x18\x02 \x01(\tR\x06roomId\x12\x1b\n" +
	"\timage_url\x18\x03 \x01(\tR\bimageUrl\x12.\n" +
	"\x05media\x18\x04 \x01(\v2\x18.hyapp.room.v1.RoomMediaR\x05media\"\x86\x01\n" +
	"\x1aSaveRoomBackgroundResponse\x12B\n" +
	"\n" +
	"background\x18\x01 \x01(\v2\".hyapp.room.v1.RoomBackgroundImageR\n" +
	"background\x12$\n" +
	"\x0eserver_time_ms\x18\x02 \x01(\x03R\fserverTimeMs\"\x8b\x01\n" +
	"\x1aListRoomBackgroundsRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12\x17\n" +
	"\aroom_id\x18\x02 \x01(\tR\x06roomId\x12$\n" +
	"\x0eviewer_user_id\x18\x03 \x01(\x03R\fviewerUserId\"\x96\x02\n" +
	"\x1bListRoomBackgroundsResponse\x12D\n" +
	"\vbackgrounds\x18\x01 \x03(\v2\".hyapp.room.v1.RoomBackgroundImageR\vbackgrounds\x126\n" +
	"\x17selected_background_url\x18\x02 \x01(\tR\x15selectedBackgroundUrl\x12$\n" +
	"\x0eserver_time_ms\x18\x03 \x01(\x03R\fserverTimeMs\x12S\n" +
	"\x13selected_background\x18\x04 \x01(\v2\".hyapp.room.v1.RoomBackgroundImageR\x12selectedBackground\"o\n" +
	"\x18SetRoomBackgroundRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12#\n" +
	"\rbackground_id\x18\x02 \x01(\x03R\fbackgroundId\"\xc6\x01\n" +
	"\x19SetRoomBackgroundResponse\x124\n" +
	"\x06result\x18\x01 \x01(\v2\x1c.hyapp.room.v1.CommandResultR\x06result\x12/\n" +
	"\x04room\x18\x02 \x01(\v2\x1b.hyapp.room.v1.RoomSnapshotR\x04room\x12B\n" +
	"\n" +
	"background\x18\x03 \x01(\v2\".hyapp.room.v1.RoomBackgroundImageR\n" +
	"background\"\xde\x03\n" +
	"\x16RoomDecorationResource\x12\x1f\n" +
	"\vresource_id\x18\x01 \x01(\x03R\n" +
	"resourceId\x12#\n" +
	"\rresource_code\x18\x02 \x01(\tR\fresourceCode\x12#\n" +
	"\rresource_type\x18\x03 \x01(\tR\fresourceType\x12\x12\n" +
	"\x04name\x18\x04 \x01(\tR\x04name\x12\x1b\n" +
	"\tasset_url\x18\x05 \x01(\tR\bassetUrl\x12\x1f\n" +
	"\vpreview_url\x18\x06 \x01(\tR\n" +
	"previewUrl\x12#\n" +
	"\ranimation_url\x18\a \x01(\tR\fanimationUrl\x12\x16\n" +
	"\x06format\x18\b \x01(\tR\x06format\x12#\n" +
	"\rmetadata_json\x18\t \x01(\tR\fmetadataJson\x12%\n" +
	"\x0eentitlement_id\x18\n" +
	" \x01(\tR\rentitlementId\x12\x1f\n" +
	"\vtext_colors\x18\v \x03(\tR\n" +
	"textColors\x12\x14\n" +
	"\x05stops\x18\f \x03(\x01R\x05stops\x12#\n" +
	"\rangle_degrees\x18\r \x01(\x01R\fangleDegrees\x12\"\n" +
	"\rexpires_at_ms\x18\x0e \x01(\x03R\vexpiresAtMs\"\xbd\x01\n" +
	"\x1aApplyRoomDecorationRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12'\n" +
	"\x0fdecoration_type\x18\x02 \x01(\tR\x0edecorationType\x12\x1f\n" +
	"\vresource_id\x18\x03 \x01(\x03R\n" +
	"resourceId\x12%\n" +
	"\x0eentitlement_id\x18\x04 \x01(\tR\rentitlementId\"\x96\x02\n" +
	"\x1bApplyRoomDecorationResponse\x124\n" +
	"\x06result\x18\x01 \x01(\v2\x1c.hyapp.room.v1.CommandResultR\x06result\x12/\n" +
	"\x04room\x18\x02 \x01(\v2\x1b.hyapp.room.v1.RoomSnapshotR\x04room\x12'\n" +
	"\x0fdecoration_type\x18\x03 \x01(\tR\x0edecorationType\x12A\n" +
	"\bresource\x18\x04 \x01(\v2%.hyapp.room.v1.RoomDecorationResourceR\bresource\x12$\n" +
	"\x0eserver_time_ms\x18\x05 \x01(\x03R\fserverTimeMs\"\x9b\x01\n" +
	"\x1fAuthorizeRoomMediaUploadRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12\x18\n" +
	"\apurpose\x18\x02 \x01(\tR\apurpose\x12.\n" +
	"\x05media\x18\x03 \x01(\v2\x18.hyapp.room.v1.RoomMediaR\x05media\"\xf8\x01\n" +
	" AuthorizeRoomMediaUploadResponse\x12\x18\n" +
	"\aallowed\x18\x01 \x01(\bR\aallowed\x12*\n" +
	"\x11object_key_prefix\x18\x02 \x01(\tR\x0fobjectKeyPrefix\x12!\n" +
	"\froom_version\x18\x03 \x01(\x03R\vroomVersion\x12$\n" +
	"\x0eserver_time_ms\x18\x04 \x01(\x03R\fserverTimeMs\x12\x1d\n" +
	"\n" +
	"object_key\x18\x05 \x01(\tR\tobjectKey\x12&\n" +
	"\x0fcover_upload_id\x18\x06 \x01(\tR\rcoverUploadId\"\x9a\x01\n" +
	"\x1eCompleteRoomMediaUploadRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12\x18\n" +
	"\apurpose\x18\x02 \x01(\tR\apurpose\x12.\n" +
	"\x05media\x18\x03 \x01(\v2\x18.hyapp.room.v1.RoomMediaR\x05media\"\xb7\x01\n" +
	"\x1fCompleteRoomMediaUploadResponse\x12\x16\n" +
	"\x06active\x18\x01 \x01(\bR\x06active\x12.\n" +
	"\x05media\x18\x02 \x01(\v2\x18.hyapp.room.v1.RoomMediaR\x05media\x12$\n" +
	"\x0eserver_time_ms\x18\x03 \x01(\x03R\fserverTimeMs\x12&\n" +
	"\x0fcover_upload_id\x18\x04 \x01(\tR\rcoverUploadId\"v\n" +
	"\x14SendRoomImageRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12.\n" +
	"\x05image\x18\x02 \x01(\v2\x18.hyapp.room.v1.RoomMediaR\x05image\"\x9d\x02\n" +
	"\x15SendRoomImageResponse\x124\n" +
	"\x06result\x18\x01 \x01(\v2\x1c.hyapp.room.v1.CommandResultR\x06result\x12\x1a\n" +
	"\baccepted\x18\x02 \x01(\bR\baccepted\x12\x1d\n" +
	"\n" +
	"message_id\x18\x03 \x01(\tR\tmessageId\x12\x17\n" +
	"\aroom_id\x18\x04 \x01(\tR\x06roomId\x12$\n" +
	"\x0esender_user_id\x18\x05 \x01(\x03R\fsenderUserId\x12$\n" +
	"\x0eserver_time_ms\x18\x06 \x01(\x03R\fserverTimeMs\x12.\n" +
	"\x05image\x18\a \x01(\v2\x18.hyapp.room.v1.RoomMediaR\x05image\"\xca\x03\n" +
	"\x11CreateRoomRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12\x1d\n" +
	"\n" +
	"seat_count\x18\x02 \x01(\x05R\tseatCount\x12\x12\n" +
	"\x04mode\x18\x03 \x01(\tR\x04mode\x12*\n" +
	"\x11visible_region_id\x18\x04 \x01(\x03R\x0fvisibleRegionId\x12\x1b\n" +
	"\troom_name\x18\x05 \x01(\tR\broomName\x12\x1f\n" +
	"\vroom_avatar\x18\x06 \x01(\tR\n" +
	"roomAvatar\x12)\n" +
	"\x10room_description\x18\a \x01(\tR\x0froomDescription\x12\"\n" +
	"\rroom_short_id\x18\b \x01(\tR\vroomShortId\x12,\n" +
	"\x12owner_country_code\x18\t \x01(\tR\x10ownerCountryCode\x12\x1d\n" +
	"\n" +
	"robot_room\x18\n" +
	" \x01(\bR\trobotRoom\x12$\n" +
	"\x0erobot_user_ids\x18\v \x03(\x03R\frobotUserIds\x12&\n" +
	"\x0fcover_upload_id\x18\f \x01(\tR\rcoverUploadId\"{\n" +
	"\x12CreateRoomResponse\x124\n" +
	"\x06result\x18\x01 \x01(\v2\x1c.hyapp.room.v1.CommandResultR\x06result\x12/\n" +
	"\x04room\x18\x02 \x01(\v2\x1b.hyapp.room.v1.RoomSnapshotR\x04room\"\xe9\x02\n" +
	"\x18UpdateRoomProfileRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12 \n" +
	"\troom_name\x18\x02 \x01(\tH\x00R\broomName\x88\x01\x01\x12$\n" +
	"\vroom_avatar\x18\x03 \x01(\tH\x01R\n" +
	"roomAvatar\x88\x01\x01\x12.\n" +
	"\x10room_description\x18\x04 \x01(\tH\x02R\x0froomDescription\x88\x01\x01\x12\"\n" +
	"\n" +
	"seat_count\x18\x05 \x01(\x05H\x03R\tseatCount\x88\x01\x01\x12+\n" +
	"\x0fcover_upload_id\x18\x06 \x01(\tH\x04R\rcoverUploadId\x88\x01\x01B\f\n" +
	"\n" +
	"_room_nameB\x0e\n" +
	"\f_room_avatarB\x13\n" +
	"\x11_room_descriptionB\r\n" +
	"\v_seat_countB\x12\n" +
	"\x10_cover_upload_id\"\x82\x01\n" +
	"\x19UpdateRoomProfileResponse\x124\n" +
	"\x06result\x18\x01 \x01(\v2\x1c.hyapp.room.v1.CommandResultR\x06result\x12/\n" +
	"\x04room\x18\x02 \x01(\v2\x1b.hyapp.room.v1.RoomSnapshotR\x04room\"\xc7\x02\n" +
	"\x18RoomEntryVehicleSnapshot\x12\x1f\n" +
	"\vresource_id\x18\x01 \x01(\x03R\n" +
	"resourceId\x12#\n" +
	"\rresource_code\x18\x02 \x01(\tR\fresourceCode\x12\x12\n" +
	"\x04name\x18\x03 \x01(\tR\x04name\x12\x1b\n" +
	"\tasset_url\x18\x04 \x01(\tR\bassetUrl\x12\x1f\n" +
	"\vpreview_url\x18\x05 \x01(\tR\n" +
	"previewUrl\x12#\n" +
	"\ranimation_url\x18\x06 \x01(\tR\fanimationUrl\x12#\n" +
	"\rmetadata_json\x18\a \x01(\tR\fmetadataJson\x12%\n" +
	"\x0eentitlement_id\x18\b \x01(\tR\rentitlementId\x12\"\n" +
	"\rexpires_at_ms\x18\t \x01(\x03R\vexpiresAtMs\"\xc2\x01\n" +
	"\x16RoomUserDisplayProfile\x12\x17\n" +
	"\auser_id\x18\x01 \x01(\x03R\x06userId\x12\x1a\n" +
	"\bnickname\x18\x02 \x01(\tR\bnickname\x12\x16\n" +
	"\x06avatar\x18\x03 \x01(\tR\x06avatar\x12&\n" +
	"\x0fdisplay_user_id\x18\x04 \x01(\tR\rdisplayUserId\x123\n" +
	"\x16pretty_display_user_id\x18\x05 \x01(\tR\x13prettyDisplayUserId\"\xe4\x03\n" +
	"\x0fJoinRoomRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12\x12\n" +
	"\x04role\x18\x02 \x01(\tR\x04role\x12\x1a\n" +
	"\bpassword\x18\x03 \x01(\tR\bpassword\x12L\n" +
	"\rentry_vehicle\x18\x04 \x01(\v2'.hyapp.room.v1.RoomEntryVehicleSnapshotR\fentryVehicle\x12(\n" +
	"\x10actor_country_id\x18\x05 \x01(\x03R\x0eactorCountryId\x12&\n" +
	"\x0factor_region_id\x18\x06 \x01(\x03R\ractorRegionId\x12$\n" +
	"\x0eactor_is_robot\x18\a \x01(\bR\factorIsRobot\x12Y\n" +
	"\x15actor_display_profile\x18\b \x01(\v2%.hyapp.room.v1.RoomUserDisplayProfileR\x13actorDisplayProfile\x12#\n" +
	"\rresponse_mode\x18\t \x01(\tR\fresponseMode\x12+\n" +
	"\x11presence_recovery\x18\n" +
	" \x01(\bR\x10presenceRecovery\"\xa2\x01\n" +
	"\x18RoomEffectiveVipSnapshot\x12!\n" +
	"\fprogram_type\x18\x01 \x01(\tR\vprogramType\x12\x14\n" +
	"\x05level\x18\x02 \x01(\x05R\x05level\x12\x12\n" +
	"\x04name\x18\x03 \x01(\tR\x04name\x129\n" +
	"\x19room_entry_notice_enabled\x18\x04 \x01(\bR\x16roomEntryNoticeEnabled\"\xf4\x01\n" +
	"\x10JoinRoomResponse\x124\n" +
	"\x06result\x18\x01 \x01(\v2\x1c.hyapp.room.v1.CommandResultR\x06result\x12+\n" +
	"\x04user\x18\x02 \x01(\v2\x17.hyapp.room.v1.RoomUserR\x04user\x12/\n" +
	"\x04room\x18\x03 \x01(\v2\x1b.hyapp.room.v1.RoomSnapshotR\x04room\x12L\n" +
	"\reffective_vip\x18\x04 \x01(\v2'.hyapp.room.v1.RoomEffectiveVipSnapshotR\feffectiveVip\"F\n" +
	"\x14RoomHeartbeatRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\"\xab\x01\n" +
	"\x15RoomHeartbeatResponse\x124\n" +
	"\x06result\x18\x01 \x01(\v2\x1c.hyapp.room.v1.CommandResultR\x06result\x12+\n" +
	"\x04user\x18\x02 \x01(\v2\x17.hyapp.room.v1.RoomUserR\x04user\x12/\n" +
	"\x04room\x18\x03 \x01(\v2\x1b.hyapp.room.v1.RoomSnapshotR\x04room\"B\n" +
	"\x10LeaveRoomRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\"z\n" +
	"\x11LeaveRoomResponse\x124\n" +
	"\x06result\x18\x01 \x01(\v2\x1c.hyapp.room.v1.CommandResultR\x06result\x12/\n" +
	"\x04room\x18\x02 \x01(\v2\x1b.hyapp.room.v1.RoomSnapshotR\x04room\"Z\n" +
	"\x10CloseRoomRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12\x16\n" +
	"\x06reason\x18\x02 \x01(\tR\x06reason\"z\n" +
	"\x11CloseRoomResponse\x124\n" +
	"\x06result\x18\x01 \x01(\v2\x1c.hyapp.room.v1.CommandResultR\x06result\x12/\n" +
	"\x04room\x18\x02 \x01(\v2\x1b.hyapp.room.v1.RoomSnapshotR\x04room\"\xa7\x05\n" +
	"\x11AdminRoomListItem\x12\x17\n" +
	"\aroom_id\x18\x01 \x01(\tR\x06roomId\x12\"\n" +
	"\rroom_short_id\x18\x02 \x01(\tR\vroomShortId\x12*\n" +
	"\x11visible_region_id\x18\x03 \x01(\x03R\x0fvisibleRegionId\x12\"\n" +
	"\rowner_user_id\x18\x04 \x01(\x03R\vownerUserId\x12\x14\n" +
	"\x05title\x18\x05 \x01(\tR\x05title\x12\x1b\n" +
	"\tcover_url\x18\x06 \x01(\tR\bcoverUrl\x12\x12\n" +
	"\x04mode\x18\a \x01(\tR\x04mode\x12\x16\n" +
	"\x06status\x18\b \x01(\tR\x06status\x12!\n" +
	"\fclose_reason\x18\t \x01(\tR\vcloseReason\x12+\n" +
	"\x12closed_by_admin_id\x18\n" +
	" \x01(\x04R\x0fclosedByAdminId\x12/\n" +
	"\x14closed_by_admin_name\x18\v \x01(\tR\x11closedByAdminName\x12 \n" +
	"\fclosed_at_ms\x18\f \x01(\x03R\n" +
	"closedAtMs\x12\x12\n" +
	"\x04heat\x18\r \x01(\x03R\x04heat\x12!\n" +
	"\fonline_count\x18\x0e \x01(\x05R\vonlineCount\x12\x1d\n" +
	"\n" +
	"seat_count\x18\x0f \x01(\x05R\tseatCount\x12.\n" +
	"\x13occupied_seat_count\x18\x10 \x01(\x05R\x11occupiedSeatCount\x12\x1d\n" +
	"\n" +
	"sort_score\x18\x11 \x01(\x03R\tsortScore\x12\"\n" +
	"\rcreated_at_ms\x18\x12 \x01(\x03R\vcreatedAtMs\x12\"\n" +
	"\rupdated_at_ms\x18\x13 \x01(\x03R\vupdatedAtMs\x12\x16\n" +
	"\x06locked\x18\x14 \x01(\bR\x06locked\"\xe0\x02\n" +
	"\x15AdminListRoomsRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12\x12\n" +
	"\x04page\x18\x02 \x01(\x05R\x04page\x12\x1b\n" +
	"\tpage_size\x18\x03 \x01(\x05R\bpageSize\x12\x18\n" +
	"\akeyword\x18\x04 \x01(\tR\akeyword\x12\x16\n" +
	"\x06status\x18\x05 \x01(\tR\x06status\x12*\n" +
	"\x11visible_region_id\x18\x06 \x01(\x03R\x0fvisibleRegionId\x12\x17\n" +
	"\asort_by\x18\a \x01(\tR\x06sortBy\x12%\n" +
	"\x0esort_direction\x18\b \x01(\tR\rsortDirection\x12\"\n" +
	"\rowner_user_id\x18\t \x01(\x03R\vownerUserId\x12$\n" +
	"\x0eowner_user_ids\x18\n" +
	" \x03(\x03R\fownerUserIds\"\x8c\x01\n" +
	"\x16AdminListRoomsResponse\x126\n" +
	"\x05rooms\x18\x01 \x03(\v2 .hyapp.room.v1.AdminRoomListItemR\x05rooms\x12\x14\n" +
	"\x05total\x18\x02 \x01(\x03R\x05total\x12$\n" +
	"\x0eserver_time_ms\x18\x03 \x01(\x03R\fserverTimeMs\"^\n" +
	"\x13AdminGetRoomRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12\x17\n" +
	"\aroom_id\x18\x02 \x01(\tR\x06roomId\"r\n" +
	"\x14AdminGetRoomResponse\x124\n" +
	"\x04room\x18\x01 \x01(\v2 .hyapp.room.v1.AdminRoomListItemR\x04room\x12$\n" +
	"\x0eserver_time_ms\x18\x02 \x01(\x03R\fserverTimeMs\"\x8c\x04\n" +
	"\x16AdminUpdateRoomRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12\x19\n" +
	"\x05title\x18\x02 \x01(\tH\x00R\x05title\x88\x01\x01\x12 \n" +
	"\tcover_url\x18\x03 \x01(\tH\x01R\bcoverUrl\x88\x01\x01\x12%\n" +
	"\vdescription\x18\x04 \x01(\tH\x02R\vdescription\x88\x01\x01\x12\x17\n" +
	"\x04mode\x18\x05 \x01(\tH\x03R\x04mode\x88\x01\x01\x12\x1b\n" +
	"\x06status\x18\x06 \x01(\tH\x04R\x06status\x88\x01\x01\x12/\n" +
	"\x11visible_region_id\x18\a \x01(\x03H\x05R\x0fvisibleRegionId\x88\x01\x01\x12!\n" +
	"\fclose_reason\x18\b \x01(\tR\vcloseReason\x12\x19\n" +
	"\badmin_id\x18\t \x01(\x04R\aadminId\x12\x1d\n" +
	"\n" +
	"admin_name\x18\n" +
	" \x01(\tR\tadminName\x121\n" +
	"\x12owner_country_code\x18\v \x01(\tH\x06R\x10ownerCountryCode\x88\x01\x01B\b\n" +
	"\x06_titleB\f\n" +
	"\n" +
	"_cover_urlB\x0e\n" +
	"\f_descriptionB\a\n" +
	"\x05_modeB\t\n" +
	"\a_statusB\x14\n" +
	"\x12_visible_region_idB\x15\n" +
	"\x13_owner_country_code\"\x80\x01\n" +
	"\x17AdminUpdateRoomResponse\x124\n" +
	"\x06result\x18\x01 \x01(\v2\x1c.hyapp.room.v1.CommandResultR\x06result\x12/\n" +
	"\x04room\x18\x02 \x01(\v2\x1b.hyapp.room.v1.RoomSnapshotR\x04room\"\x97\x01\n" +
	"\x13AdminBanRoomRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12\x16\n" +
	"\x06reason\x18\x02 \x01(\tR\x06reason\x12\x19\n" +
	"\badmin_id\x18\x03 \x01(\x04R\aadminId\x12\x1d\n" +
	"\n" +
	"admin_name\x18\x04 \x01(\tR\tadminName\"}\n" +
	"\x14AdminBanRoomResponse\x124\n" +
	"\x06result\x18\x01 \x01(\v2\x1c.hyapp.room.v1.CommandResultR\x06result\x12/\n" +
	"\x04room\x18\x02 \x01(\v2\x1b.hyapp.room.v1.RoomSnapshotR\x04room\"\x99\x01\n" +
	"\x15AdminUnbanRoomRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12\x16\n" +
	"\x06reason\x18\x02 \x01(\tR\x06reason\x12\x19\n" +
	"\badmin_id\x18\x03 \x01(\x04R\aadminId\x12\x1d\n" +
	"\n" +
	"admin_name\x18\x04 \x01(\tR\tadminName\"\x7f\n" +
	"\x16AdminUnbanRoomResponse\x124\n" +
	"\x06result\x18\x01 \x01(\v2\x1c.hyapp.room.v1.CommandResultR\x06result\x12/\n" +
	"\x04room\x18\x02 \x01(\v2\x1b.hyapp.room.v1.RoomSnapshotR\x04room\"\x82\x01\n" +
	"\x16AdminDeleteRoomRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12\x19\n" +
	"\badmin_id\x18\x02 \x01(\x04R\aadminId\x12\x1d\n" +
	"\n" +
	"admin_name\x18\x03 \x01(\tR\tadminName\"\x80\x01\n" +
	"\x17AdminDeleteRoomResponse\x124\n" +
	"\x06result\x18\x01 \x01(\v2\x1c.hyapp.room.v1.CommandResultR\x06result\x12/\n" +
	"\x04room\x18\x02 \x01(\v2\x1b.hyapp.room.v1.RoomSnapshotR\x04room\"\xb4\x01\n" +
	"\fMicUpRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12\x17\n" +
	"\aseat_no\x18\x02 \x01(\x05R\x06seatNo\x12[\n" +
	"\x16target_display_profile\x18\x03 \x01(\v2%.hyapp.room.v1.RoomUserDisplayProfileR\x14targetDisplayProfile\"\xe5\x01\n" +
	"\rMicUpResponse\x124\n" +
	"\x06result\x18\x01 \x01(\v2\x1c.hyapp.room.v1.CommandResultR\x06result\x12\x17\n" +
	"\aseat_no\x18\x02 \x01(\x05R\x06seatNo\x12/\n" +
	"\x04room\x18\x03 \x01(\v2\x1b.hyapp.room.v1.RoomSnapshotR\x04room\x12$\n" +
	"\x0emic_session_id\x18\x04 \x01(\tR\fmicSessionId\x12.\n" +
	"\x13publish_deadline_ms\x18\x05 \x01(\x03R\x11publishDeadlineMs\"\xdb\x01\n" +
	"\x0eMicDownRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12$\n" +
	"\x0etarget_user_id\x18\x02 \x01(\x03R\ftargetUserId\x12\x16\n" +
	"\x06reason\x18\x03 \x01(\tR\x06reason\x12[\n" +
	"\x16target_display_profile\x18\x04 \x01(\v2%.hyapp.room.v1.RoomUserDisplayProfileR\x14targetDisplayProfile\"\x91\x01\n" +
	"\x0fMicDownResponse\x124\n" +
	"\x06result\x18\x01 \x01(\v2\x1c.hyapp.room.v1.CommandResultR\x06result\x12\x17\n" +
	"\aseat_no\x18\x02 \x01(\x05R\x06seatNo\x12/\n" +
	"\x04room\x18\x03 \x01(\v2\x1b.hyapp.room.v1.RoomSnapshotR\x04room\"\xe2\x01\n" +
	"\x14ChangeMicSeatRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12$\n" +
	"\x0etarget_user_id\x18\x02 \x01(\x03R\ftargetUserId\x12\x17\n" +
	"\aseat_no\x18\x03 \x01(\x05R\x06seatNo\x12[\n" +
	"\x16target_display_profile\x18\x04 \x01(\v2%.hyapp.room.v1.RoomUserDisplayProfileR\x14targetDisplayProfile\"~\n" +
	"\x15ChangeMicSeatResponse\x124\n" +
	"\x06result\x18\x01 \x01(\v2\x1c.hyapp.room.v1.CommandResultR\x06result\x12/\n" +
	"\x04room\x18\x02 \x01(\v2\x1b.hyapp.room.v1.RoomSnapshotR\x04room\"\xd5\x02\n" +
	"\x1bConfirmMicPublishingRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12$\n" +
	"\x0etarget_user_id\x18\x02 \x01(\x03R\ftargetUserId\x12$\n" +
	"\x0emic_session_id\x18\x03 \x01(\tR\fmicSessionId\x12!\n" +
	"\froom_version\x18\x04 \x01(\x03R\vroomVersion\x12\"\n" +
	"\revent_time_ms\x18\x05 \x01(\x03R\veventTimeMs\x12\x16\n" +
	"\x06source\x18\x06 \x01(\tR\x06source\x12[\n" +
	"\x16target_display_profile\x18\a \x01(\v2%.hyapp.room.v1.RoomUserDisplayProfileR\x14targetDisplayProfile\"\x9e\x01\n" +
	"\x1cConfirmMicPublishingResponse\x124\n" +
	"\x06result\x18\x01 \x01(\v2\x1c.hyapp.room.v1.CommandResultR\x06result\x12\x17\n" +
	"\aseat_no\x18\x02 \x01(\x05R\x06seatNo\x12/\n" +
	"\x04room\x18\x03 \x01(\v2\x1b.hyapp.room.v1.RoomSnapshotR\x04room\"\x91\x01\n" +
	"\x13MicHeartbeatRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12$\n" +
	"\x0etarget_user_id\x18\x02 \x01(\x03R\ftargetUserId\x12$\n" +
	"\x0emic_session_id\x18\x03 \x01(\tR\fmicSessionId\"\xc5\x01\n" +
	"\x14MicHeartbeatResponse\x124\n" +
	"\x06result\x18\x01 \x01(\v2\x1c.hyapp.room.v1.CommandResultR\x06result\x12\x17\n" +
	"\aseat_no\x18\x02 \x01(\x05R\x06seatNo\x12/\n" +
	"\x04room\x18\x03 \x01(\v2\x1b.hyapp.room.v1.RoomSnapshotR\x04room\x12-\n" +
	"\x13mic_heartbeat_at_ms\x18\x04 \x01(\x03R\x10micHeartbeatAtMs\"\xdc\x01\n" +
	"\x11SetMicMuteRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12$\n" +
	"\x0etarget_user_id\x18\x02 \x01(\x03R\ftargetUserId\x12\x14\n" +
	"\x05muted\x18\x03 \x01(\bR\x05muted\x12[\n" +
	"\x16target_display_profile\x18\x04 \x01(\v2%.hyapp.room.v1.RoomUserDisplayProfileR\x14targetDisplayProfile\"\x94\x01\n" +
	"\x12SetMicMuteResponse\x124\n" +
	"\x06result\x18\x01 \x01(\v2\x1c.hyapp.room.v1.CommandResultR\x06result\x12\x17\n" +
	"\aseat_no\x18\x02 \x01(\x05R\x06seatNo\x12/\n" +
	"\x04room\x18\x03 \x01(\v2\x1b.hyapp.room.v1.RoomSnapshotR\x04room\"\x8b\x02\n" +
	"\x14ApplyRTCEventRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12$\n" +
	"\x0etarget_user_id\x18\x02 \x01(\x03R\ftargetUserId\x12\x1d\n" +
	"\n" +
	"event_type\x18\x03 \x01(\tR\teventType\x12\"\n" +
	"\revent_time_ms\x18\x04 \x01(\x03R\veventTimeMs\x12\x16\n" +
	"\x06reason\x18\x05 \x01(\tR\x06reason\x12\x16\n" +
	"\x06source\x18\x06 \x01(\tR\x06source\x12*\n" +
	"\x11external_event_id\x18\a \x01(\tR\x0fexternalEventId\"\x97\x01\n" +
	"\x15ApplyRTCEventResponse\x124\n" +
	"\x06result\x18\x01 \x01(\v2\x1c.hyapp.room.v1.CommandResultR\x06result\x12\x17\n" +
	"\aseat_no\x18\x02 \x01(\x05R\x06seatNo\x12/\n" +
	"\x04room\x18\x03 \x01(\v2\x1b.hyapp.room.v1.RoomSnapshotR\x04room\"x\n" +
	"\x15SetMicSeatLockRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12\x17\n" +
	"\aseat_no\x18\x02 \x01(\x05R\x06seatNo\x12\x16\n" +
	"\x06locked\x18\x03 \x01(\bR\x06locked\"\x7f\n" +
	"\x16SetMicSeatLockResponse\x124\n" +
	"\x06result\x18\x01 \x01(\v2\x1c.hyapp.room.v1.CommandResultR\x06result\x12/\n" +
	"\x04room\x18\x02 \x01(\v2\x1b.hyapp.room.v1.RoomSnapshotR\x04room\"a\n" +
	"\x15SetChatEnabledRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12\x18\n" +
	"\aenabled\x18\x02 \x01(\bR\aenabled\"\x7f\n" +
	"\x16SetChatEnabledResponse\x124\n" +
	"\x06result\x18\x01 \x01(\v2\x1c.hyapp.room.v1.CommandResultR\x06result\x12/\n" +
	"\x04room\x18\x02 \x01(\v2\x1b.hyapp.room.v1.RoomSnapshotR\x04room\"|\n" +
	"\x16SetRoomPasswordRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12\x16\n" +
	"\x06locked\x18\x02 \x01(\bR\x06locked\x12\x1a\n" +
	"\bpassword\x18\x03 \x01(\tR\bpassword\"\x80\x01\n" +
	"\x17SetRoomPasswordResponse\x124\n" +
	"\x06result\x18\x01 \x01(\v2\x1c.hyapp.room.v1.CommandResultR\x06result\x12/\n" +
	"\x04room\x18\x02 \x01(\v2\x1b.hyapp.room.v1.RoomSnapshotR\x04room\"\x85\x01\n" +
	"\x13SetRoomAdminRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12$\n" +
	"\x0etarget_user_id\x18\x02 \x01(\x03R\ftargetUserId\x12\x18\n" +
	"\aenabled\x18\x03 \x01(\bR\aenabled\"}\n" +
	"\x14SetRoomAdminResponse\x124\n" +
	"\x06result\x18\x01 \x01(\v2\x1c.hyapp.room.v1.CommandResultR\x06result\x12/\n" +
	"\x04room\x18\x02 \x01(\v2\x1b.hyapp.room.v1.RoomSnapshotR\x04room\"}\n" +
	"\x0fMuteUserRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12$\n" +
	"\x0etarget_user_id\x18\x02 \x01(\x03R\ftargetUserId\x12\x14\n" +
	"\x05muted\x18\x03 \x01(\bR\x05muted\"y\n" +
	"\x10MuteUserResponse\x124\n" +
	"\x06result\x18\x01 \x01(\v2\x1c.hyapp.room.v1.CommandResultR\x06result\x12/\n" +
	"\x04room\x18\x02 \x01(\v2\x1b.hyapp.room.v1.RoomSnapshotR\x04room\"\x88\x01\n" +
	"\x0fKickUserRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12$\n" +
	"\x0etarget_user_id\x18\x02 \x01(\x03R\ftargetUserId\x12\x1f\n" +
	"\vduration_ms\x18\x03 \x01(\x03R\n" +
	"durationMs\"\xbe\x01\n" +
	"\x10KickUserResponse\x124\n" +
	"\x06result\x18\x01 \x01(\v2\x1c.hyapp.room.v1.CommandResultR\x06result\x12/\n" +
	"\x04room\x18\x02 \x01(\v2\x1b.hyapp.room.v1.RoomSnapshotR\x04room\x12\x1d\n" +
	"\n" +
	"rtc_kicked\x18\x03 \x01(\bR\trtcKicked\x12$\n" +
	"\x0ertc_kick_error\x18\x04 \x01(\tR\frtcKickError\"h\n" +
	"\x10UnbanUserRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12$\n" +
	"\x0etarget_user_id\x18\x02 \x01(\x03R\ftargetUserId\"z\n" +
	"\x11UnbanUserResponse\x124\n" +
	"\x06result\x18\x01 \x01(\v2\x1c.hyapp.room.v1.CommandResultR\x06result\x12/\n" +
	"\x04room\x18\x02 \x01(\v2\x1b.hyapp.room.v1.RoomSnapshotR\x04room\"\xd4\x01\n" +
	"\x16SystemEvictUserRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12$\n" +
	"\x0etarget_user_id\x18\x02 \x01(\x03R\ftargetUserId\x12(\n" +
	"\x10operator_user_id\x18\x03 \x01(\x03R\x0eoperatorUserId\x12\x16\n" +
	"\x06reason\x18\x04 \x01(\tR\x06reason\x12\"\n" +
	"\rban_from_room\x18\x05 \x01(\bR\vbanFromRoom\"\x88\x02\n" +
	"\x17SystemEvictUserResponse\x12(\n" +
	"\x10had_current_room\x18\x01 \x01(\bR\x0ehadCurrentRoom\x124\n" +
	"\x06result\x18\x02 \x01(\v2\x1c.hyapp.room.v1.CommandResultR\x06result\x12/\n" +
	"\x04room\x18\x03 \x01(\v2\x1b.hyapp.room.v1.RoomSnapshotR\x04room\x12\x17\n" +
	"\aroom_id\x18\x04 \x01(\tR\x06roomId\x12\x1d\n" +
	"\n" +
	"rtc_kicked\x18\x05 \x01(\bR\trtcKicked\x12$\n" +
	"\x0ertc_kick_error\x18\x06 \x01(\tR\frtcKickError\"\xd6\x01\n" +
	"\x17SendGiftTargetHostScope\x12$\n" +
	"\x0etarget_user_id\x18\x01 \x01(\x03R\ftargetUserId\x12$\n" +
	"\x0etarget_is_host\x18\x02 \x01(\bR\ftargetIsHost\x121\n" +
	"\x15target_host_region_id\x18\x03 \x01(\x03R\x12targetHostRegionId\x12<\n" +
	"\x1btarget_agency_owner_user_id\x18\x04 \x01(\x03R\x17targetAgencyOwnerUserId\"\xb3\x02\n" +
	"\x16SendGiftDisplayProfile\x12\x17\n" +
	"\auser_id\x18\x01 \x01(\x03R\x06userId\x12\x1a\n" +
	"\busername\x18\x02 \x01(\tR\busername\x12\x16\n" +
	"\x06avatar\x18\x03 \x01(\tR\x06avatar\x12&\n" +
	"\x0fdisplay_user_id\x18\x04 \x01(\tR\rdisplayUserId\x123\n" +
	"\x16pretty_display_user_id\x18\x05 \x01(\tR\x13prettyDisplayUserId\x12.\n" +
	"\x13effective_vip_level\x18\x06 \x01(\x05R\x11effectiveVipLevel\x12?\n" +
	"\x1cgift_broadcast_animation_url\x18\a \x01(\tR\x19giftBroadcastAnimationUrl\"\x8a\x04\n" +
	"\x13SendGiftBatchTarget\x12$\n" +
	"\x0etarget_user_id\x18\x01 \x01(\x03R\ftargetUserId\x12+\n" +
	"\x11receiver_nickname\x18\x02 \x01(\tR\x10receiverNickname\x12'\n" +
	"\x0freceiver_avatar\x18\x03 \x01(\tR\x0ereceiverAvatar\x127\n" +
	"\x18receiver_display_user_id\x18\x04 \x01(\tR\x15receiverDisplayUserId\x12D\n" +
	"\x1freceiver_pretty_display_user_id\x18\x05 \x01(\tR\x1breceiverPrettyDisplayUserId\x12\x1d\n" +
	"\n" +
	"gift_value\x18\x06 \x01(\x03R\tgiftValue\x12*\n" +
	"\x11target_gift_value\x18\a \x01(\x03R\x0ftargetGiftValue\x12\x1d\n" +
	"\n" +
	"coin_spent\x18\b \x01(\x03R\tcoinSpent\x12,\n" +
	"\x12billing_receipt_id\x18\t \x01(\tR\x10billingReceiptId\x12\x1d\n" +
	"\n" +
	"command_id\x18\n" +
	" \x01(\tR\tcommandId\x12A\n" +
	"\n" +
	"lucky_gift\x18\v \x01(\v2\".hyapp.room.v1.LuckyGiftDrawResultR\tluckyGift\"\xec\a\n" +
	"\x14SendGiftBatchDisplay\x12\x19\n" +
	"\bevent_id\x18\x01 \x01(\tR\aeventId\x12$\n" +
	"\x0esender_user_id\x18\x02 \x01(\x03R\fsenderUserId\x12\x1f\n" +
	"\vsender_name\x18\x03 \x01(\tR\n" +
	"senderName\x12#\n" +
	"\rsender_avatar\x18\x04 \x01(\tR\fsenderAvatar\x123\n" +
	"\x16sender_display_user_id\x18\x05 \x01(\tR\x13senderDisplayUserId\x12@\n" +
	"\x1dsender_pretty_display_user_id\x18\x06 \x01(\tR\x19senderPrettyDisplayUserId\x12\x17\n" +
	"\agift_id\x18\a \x01(\tR\x06giftId\x12\x1d\n" +
	"\n" +
	"gift_count\x18\b \x01(\x05R\tgiftCount\x12(\n" +
	"\x10total_gift_value\x18\t \x01(\x03R\x0etotalGiftValue\x12(\n" +
	"\x10total_coin_spent\x18\n" +
	" \x01(\x03R\x0etotalCoinSpent\x12,\n" +
	"\x12billing_receipt_id\x18\v \x01(\tR\x10billingReceiptId\x12\x1b\n" +
	"\troom_heat\x18\f \x01(\x03R\broomHeat\x12\x17\n" +
	"\apool_id\x18\r \x01(\tR\x06poolId\x12$\n" +
	"\x0egift_type_code\x18\x0e \x01(\tR\fgiftTypeCode\x12(\n" +
	"\x10cp_relation_type\x18\x0f \x01(\tR\x0ecpRelationType\x12\x1b\n" +
	"\tgift_name\x18\x10 \x01(\tR\bgiftName\x12\"\n" +
	"\rgift_icon_url\x18\x11 \x01(\tR\vgiftIconUrl\x12,\n" +
	"\x12gift_animation_url\x18\x12 \x01(\tR\x10giftAnimationUrl\x12*\n" +
	"\x11gift_effect_types\x18\x13 \x03(\tR\x0fgiftEffectTypes\x12&\n" +
	"\x0ftarget_user_ids\x18\x14 \x03(\x03R\rtargetUserIds\x12<\n" +
	"\atargets\x18\x15 \x03(\v2\".hyapp.room.v1.SendGiftBatchTargetR\atargets\x12\x1d\n" +
	"\n" +
	"command_id\x18\x16 \x01(\tR\tcommandId\x12(\n" +
	"\x10sender_vip_level\x18\x17 \x01(\x05R\x0esenderVipLevel\x12L\n" +
	"#sender_gift_broadcast_animation_url\x18\x18 \x01(\tR\x1fsenderGiftBroadcastAnimationUrl\"\xe0\a\n" +
	"\x0fSendGiftRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12$\n" +
	"\x0etarget_user_id\x18\x02 \x01(\x03R\ftargetUserId\x12\x17\n" +
	"\agift_id\x18\x03 \x01(\tR\x06giftId\x12\x1d\n" +
	"\n" +
	"gift_count\x18\x04 \x01(\x05R\tgiftCount\x12\x1f\n" +
	"\vtarget_type\x18\x05 \x01(\tR\n" +
	"targetType\x12&\n" +
	"\x0ftarget_user_ids\x18\x06 \x03(\x03R\rtargetUserIds\x12\x17\n" +
	"\apool_id\x18\a \x01(\tR\x06poolId\x12$\n" +
	"\x0etarget_is_host\x18\b \x01(\bR\ftargetIsHost\x121\n" +
	"\x15target_host_region_id\x18\t \x01(\x03R\x12targetHostRegionId\x12<\n" +
	"\x1btarget_agency_owner_user_id\x18\n" +
	" \x01(\x03R\x17targetAgencyOwnerUserId\x12(\n" +
	"\x10sender_region_id\x18\v \x01(\x03R\x0esenderRegionId\x12*\n" +
	"\x11sender_country_id\x18\f \x01(\x03R\x0fsenderCountryId\x12%\n" +
	"\x0eentitlement_id\x18\r \x01(\tR\rentitlementId\x12\x16\n" +
	"\x06source\x18\x0e \x01(\tR\x06source\x12T\n" +
	"\x12target_host_scopes\x18\x0f \x03(\v2&.hyapp.room.v1.SendGiftTargetHostScopeR\x10targetHostScopes\x12[\n" +
	"\x16sender_display_profile\x18\x10 \x01(\v2%.hyapp.room.v1.SendGiftDisplayProfileR\x14senderDisplayProfile\x12]\n" +
	"\x17target_display_profiles\x18\x11 \x03(\v2%.hyapp.room.v1.SendGiftDisplayProfileR\x15targetDisplayProfiles\x12!\n" +
	"\fdisplay_mode\x18\x12 \x01(\tR\vdisplayMode\x12(\n" +
	"\x10combo_session_id\x18\x13 \x01(\tR\x0ecomboSessionId\x12\x1b\n" +
	"\tbatch_seq\x18\x14 \x01(\x03R\bbatchSeq\x125\n" +
	"\x17sender_registered_at_ms\x18\x15 \x01(\x03R\x14senderRegisteredAtMs\"\x9e\x05\n" +
	"\x10SendGiftResponse\x124\n" +
	"\x06result\x18\x01 \x01(\v2\x1c.hyapp.room.v1.CommandResultR\x06result\x12,\n" +
	"\x12billing_receipt_id\x18\x02 \x01(\tR\x10billingReceiptId\x12\x1b\n" +
	"\troom_heat\x18\x03 \x01(\x03R\broomHeat\x124\n" +
	"\tgift_rank\x18\x04 \x03(\v2\x17.hyapp.room.v1.RankItemR\bgiftRank\x12/\n" +
	"\x04room\x18\x05 \x01(\v2\x1b.hyapp.room.v1.RoomSnapshotR\x04room\x126\n" +
	"\x06rocket\x18\x06 \x01(\v2\x1e.hyapp.room.v1.RoomRocketStateR\x06rocket\x12A\n" +
	"\n" +
	"lucky_gift\x18\a \x01(\v2\".hyapp.room.v1.LuckyGiftDrawResultR\tluckyGift\x12C\n" +
	"\vlucky_gifts\x18\b \x03(\v2\".hyapp.room.v1.LuckyGiftDrawResultR\n" +
	"luckyGifts\x12,\n" +
	"\x12coin_balance_after\x18\t \x01(\x03R\x10coinBalanceAfter\x129\n" +
	"\x19gift_income_balance_after\x18\n" +
	" \x01(\x03R\x16giftIncomeBalanceAfter\x12H\n" +
	"\rbatch_display\x18\v \x01(\v2#.hyapp.room.v1.SendGiftBatchDisplayR\fbatchDisplay\x12/\n" +
	"\x02v2\x18\f \x01(\v2\x1f.hyapp.room.v1.SendGiftResultV2R\x02v2\"j\n" +
	"\x1bCheckSpeakPermissionRequest\x12\x17\n" +
	"\aroom_id\x18\x01 \x01(\tR\x06roomId\x12\x17\n" +
	"\auser_id\x18\x02 \x01(\x03R\x06userId\x12\x19\n" +
	"\bapp_code\x18\x03 \x01(\tR\aappCode\"s\n" +
	"\x1cCheckSpeakPermissionResponse\x12\x18\n" +
	"\aallowed\x18\x01 \x01(\bR\aallowed\x12\x16\n" +
	"\x06reason\x18\x02 \x01(\tR\x06reason\x12!\n" +
	"\froom_version\x18\x03 \x01(\x03R\vroomVersion\"\xa6\x01\n" +
	"\x19VerifyRoomPresenceRequest\x12\x17\n" +
	"\aroom_id\x18\x01 \x01(\tR\x06roomId\x12\x17\n" +
	"\auser_id\x18\x02 \x01(\x03R\x06userId\x12\x1d\n" +
	"\n" +
	"session_id\x18\x03 \x01(\tR\tsessionId\x12\x1d\n" +
	"\n" +
	"request_id\x18\x04 \x01(\tR\trequestId\x12\x19\n" +
	"\bapp_code\x18\x05 \x01(\tR\aappCode\"q\n" +
	"\x1aVerifyRoomPresenceResponse\x12\x18\n" +
	"\apresent\x18\x01 \x01(\bR\apresent\x12\x16\n" +
	"\x06reason\x18\x02 \x01(\tR\x06reason\x12!\n" +
	"\froom_version\x18\x03 \x01(\x03R\vroomVersion\"S\n" +
	"\x19ResolveRoomAppCodeRequest\x12\x1d\n" +
	"\n" +
	"request_id\x18\x01 \x01(\tR\trequestId\x12\x17\n" +
	"\aroom_id\x18\x02 \x01(\tR\x06roomId\"7\n" +
	"\x1aResolveRoomAppCodeResponse\x12\x19\n" +
	"\bapp_code\x18\x01 \x01(\tR\aappCode\"\x97\x03\n" +
	"\x10ListRoomsRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12$\n" +
	"\x0eviewer_user_id\x18\x02 \x01(\x03R\fviewerUserId\x12*\n" +
	"\x11visible_region_id\x18\x03 \x01(\x03R\x0fvisibleRegionId\x12\x10\n" +
	"\x03tab\x18\x04 \x01(\tR\x03tab\x12\x16\n" +
	"\x06cursor\x18\x05 \x01(\tR\x06cursor\x12\x14\n" +
	"\x05limit\x18\x06 \x01(\x05R\x05limit\x12\x14\n" +
	"\x05query\x18\a \x01(\tR\x05query\x12!\n" +
	"\fcountry_code\x18\b \x01(\tR\vcountryCode\x12.\n" +
	"\x13viewer_country_code\x18\t \x01(\tR\x11viewerCountryCode\x12.\n" +
	"\x13all_visible_regions\x18\n" +
	" \x01(\bR\x11allVisibleRegions\x12(\n" +
	"\x10filter_region_id\x18\v \x01(\x03R\x0efilterRegionId\"\xec\x01\n" +
	"\x18ListRoomsByOwnersRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12$\n" +
	"\x0eviewer_user_id\x18\x02 \x01(\x03R\fviewerUserId\x12$\n" +
	"\x0eowner_user_ids\x18\x03 \x03(\x03R\fownerUserIds\x12\x10\n" +
	"\x03tab\x18\x04 \x01(\tR\x03tab\x12\x16\n" +
	"\x06cursor\x18\x05 \x01(\tR\x06cursor\x12\x14\n" +
	"\x05limit\x18\x06 \x01(\x05R\x05limit\x12\x14\n" +
	"\x05query\x18\a \x01(\tR\x05query\"\xb7\x02\n" +
	"\x14ListRoomFeedsRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12$\n" +
	"\x0eviewer_user_id\x18\x02 \x01(\x03R\fviewerUserId\x12*\n" +
	"\x11visible_region_id\x18\x03 \x01(\x03R\x0fvisibleRegionId\x12\x10\n" +
	"\x03tab\x18\x04 \x01(\tR\x03tab\x12\x16\n" +
	"\x06cursor\x18\x05 \x01(\tR\x06cursor\x12\x14\n" +
	"\x05limit\x18\x06 \x01(\x05R\x05limit\x12\x14\n" +
	"\x05query\x18\a \x01(\tR\x05query\x12G\n" +
	"\rrelated_users\x18\b \x03(\v2\".hyapp.room.v1.RoomFeedRelatedUserR\frelatedUsers\"\xb6\x01\n" +
	"\x1eListRoomGiftLeaderboardRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12\x16\n" +
	"\x06period\x18\x02 \x01(\tR\x06period\x12\x12\n" +
	"\x04page\x18\x03 \x01(\x05R\x04page\x12\x1b\n" +
	"\tpage_size\x18\x04 \x01(\x05R\bpageSize\x12\x1b\n" +
	"\tregion_id\x18\x05 \x01(\x03R\bregionId\"c\n" +
	"\x13RoomFeedRelatedUser\x12\x17\n" +
	"\auser_id\x18\x01 \x01(\x03R\x06userId\x123\n" +
	"\x16relation_updated_at_ms\x18\x02 \x01(\x03R\x13relationUpdatedAtMs\"\xeb\x06\n" +
	"\fRoomListItem\x12\x17\n" +
	"\aroom_id\x18\x01 \x01(\tR\x06roomId\x12\"\n" +
	"\rowner_user_id\x18\x02 \x01(\x03R\vownerUserId\x12\x14\n" +
	"\x05title\x18\x04 \x01(\tR\x05title\x12\x1b\n" +
	"\tcover_url\x18\x05 \x01(\tR\bcoverUrl\x12\x12\n" +
	"\x04mode\x18\x06 \x01(\tR\x04mode\x12\x16\n" +
	"\x06status\x18\a \x01(\tR\x06status\x12\x12\n" +
	"\x04heat\x18\b \x01(\x03R\x04heat\x12!\n" +
	"\fonline_count\x18\t \x01(\x05R\vonlineCount\x12\x1d\n" +
	"\n" +
	"seat_count\x18\n" +
	" \x01(\x05R\tseatCount\x12.\n" +
	"\x13occupied_seat_count\x18\v \x01(\x05R\x11occupiedSeatCount\x12*\n" +
	"\x11visible_region_id\x18\f \x01(\x03R\x0fvisibleRegionId\x12\x19\n" +
	"\bapp_code\x18\r \x01(\tR\aappCode\x12\"\n" +
	"\rroom_short_id\x18\x0e \x01(\tR\vroomShortId\x12\x16\n" +
	"\x06locked\x18\x0f \x01(\bR\x06locked\x12!\n" +
	"\fcountry_code\x18\x10 \x01(\tR\vcountryCode\x12F\n" +
	"\vroom_border\x18\x11 \x01(\v2%.hyapp.room.v1.RoomDecorationResourceR\n" +
	"roomBorder\x12M\n" +
	"\x0froom_name_style\x18\x12 \x01(\v2%.hyapp.room.v1.RoomDecorationResourceR\rroomNameStyle\x12&\n" +
	"\x0fowner_vip_level\x18\x13 \x01(\x05R\rownerVipLevel\x12&\n" +
	"\x0froom_border_url\x18\x14 \x01(\tR\rroomBorderUrl\x124\n" +
	"\x16rocket_near_completion\x18\x15 \x01(\bR\x14rocketNearCompletion\x121\n" +
	"\x15has_active_red_packet\x18\x16 \x01(\bR\x12hasActiveRedPacket\x12C\n" +
	"\x1factive_red_packet_expires_at_ms\x18\x17 \x01(\x03R\x1aactiveRedPacketExpiresAtMs\"g\n" +
	"\x11ListRoomsResponse\x121\n" +
	"\x05rooms\x18\x01 \x03(\v2\x1b.hyapp.room.v1.RoomListItemR\x05rooms\x12\x1f\n" +
	"\vnext_cursor\x18\x02 \x01(\tR\n" +
	"nextCursor\"\x96\x01\n" +
	"\x17RoomGiftLeaderboardItem\x12\x12\n" +
	"\x04rank\x18\x01 \x01(\x03R\x04rank\x12\x17\n" +
	"\aroom_id\x18\x02 \x01(\tR\x06roomId\x12\x1d\n" +
	"\n" +
	"coin_spent\x18\x03 \x01(\x03R\tcoinSpent\x12/\n" +
	"\x04room\x18\x04 \x01(\v2\x1b.hyapp.room.v1.RoomListItemR\x04room\"\xef\x01\n" +
	"\x1fListRoomGiftLeaderboardResponse\x12<\n" +
	"\x05items\x18\x01 \x03(\v2&.hyapp.room.v1.RoomGiftLeaderboardItemR\x05items\x12\x14\n" +
	"\x05total\x18\x02 \x01(\x03R\x05total\x12\x16\n" +
	"\x06period\x18\x03 \x01(\tR\x06period\x12\x1e\n" +
	"\vstart_at_ms\x18\x04 \x01(\x03R\tstartAtMs\x12\x1a\n" +
	"\tend_at_ms\x18\x05 \x01(\x03R\aendAtMs\x12$\n" +
	"\x0eserver_time_ms\x18\x06 \x01(\x03R\fserverTimeMs\"\xbe\x01\n" +
	"\x1fListRoomContributionRankRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12\x17\n" +
	"\aroom_id\x18\x02 \x01(\tR\x06roomId\x12\x16\n" +
	"\x06period\x18\x03 \x01(\tR\x06period\x12\x14\n" +
	"\x05limit\x18\x04 \x01(\x05R\x05limit\x12$\n" +
	"\x0eviewer_user_id\x18\x05 \x01(\x03R\fviewerUserId\"\x8a\x02\n" +
	" ListRoomContributionRankResponse\x12\x17\n" +
	"\aroom_id\x18\x01 \x01(\tR\x06roomId\x12\x16\n" +
	"\x06period\x18\x02 \x01(\tR\x06period\x12\x1e\n" +
	"\vstart_at_ms\x18\x03 \x01(\x03R\tstartAtMs\x12\x1a\n" +
	"\tend_at_ms\x18\x04 \x01(\x03R\aendAtMs\x12=\n" +
	"\x05items\x18\x05 \x03(\v2'.hyapp.room.v1.RoomContributionRankItemR\x05items\x12\x14\n" +
	"\x05total\x18\x06 \x01(\x03R\x05total\x12$\n" +
	"\x0eserver_time_ms\x18\a \x01(\x03R\fserverTimeMs\"f\n" +
	"\x10GetMyRoomRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12\"\n" +
	"\rowner_user_id\x18\x02 \x01(\x03R\vownerUserId\"\x85\x01\n" +
	"\x11GetMyRoomResponse\x12\x19\n" +
	"\bhas_room\x18\x01 \x01(\bR\ahasRoom\x12/\n" +
	"\x04room\x18\x02 \x01(\v2\x1b.hyapp.room.v1.RoomListItemR\x04room\x12$\n" +
	"\x0eserver_time_ms\x18\x03 \x01(\x03R\fserverTimeMs\"`\n" +
	"\x15GetCurrentRoomRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12\x17\n" +
	"\auser_id\x18\x02 \x01(\x03R\x06userId\"\xd6\x02\n" +
	"\x16GetCurrentRoomResponse\x12(\n" +
	"\x10has_current_room\x18\x01 \x01(\bR\x0ehasCurrentRoom\x12\x17\n" +
	"\aroom_id\x18\x02 \x01(\tR\x06roomId\x12!\n" +
	"\froom_version\x18\x03 \x01(\x03R\vroomVersion\x12\x12\n" +
	"\x04role\x18\x04 \x01(\tR\x04role\x12$\n" +
	"\x0emic_session_id\x18\x05 \x01(\tR\fmicSessionId\x12#\n" +
	"\rpublish_state\x18\x06 \x01(\tR\fpublishState\x12+\n" +
	"\x12need_join_im_group\x18\a \x01(\bR\x0fneedJoinImGroup\x12$\n" +
	"\x0eneed_rtc_token\x18\b \x01(\bR\fneedRtcToken\x12$\n" +
	"\x0eserver_time_ms\x18\t \x01(\x03R\fserverTimeMs\"\x98\x01\n" +
	"%BatchGetUserVoiceRoomPresencesRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12$\n" +
	"\x0eviewer_user_id\x18\x02 \x01(\x03R\fviewerUserId\x12\x19\n" +
	"\buser_ids\x18\x03 \x03(\x03R\auserIds\"\xe6\x02\n" +
	"\x19UserVoiceRoomPresenceRoom\x12\x17\n" +
	"\aroom_id\x18\x01 \x01(\tR\x06roomId\x12\"\n" +
	"\rroom_short_id\x18\x02 \x01(\tR\vroomShortId\x12\"\n" +
	"\rowner_user_id\x18\x03 \x01(\x03R\vownerUserId\x12 \n" +
	"\fhost_user_id\x18\x04 \x01(\x03R\n" +
	"hostUserId\x12\x14\n" +
	"\x05title\x18\x05 \x01(\tR\x05title\x12\x1b\n" +
	"\tcover_url\x18\x06 \x01(\tR\bcoverUrl\x12%\n" +
	"\x0ebackground_url\x18\a \x01(\tR\rbackgroundUrl\x12\x12\n" +
	"\x04mode\x18\b \x01(\tR\x04mode\x12!\n" +
	"\fonline_count\x18\t \x01(\x05R\vonlineCount\x12\x1d\n" +
	"\n" +
	"seat_count\x18\n" +
	" \x01(\x05R\tseatCount\x12\x16\n" +
	"\x06locked\x18\v \x01(\bR\x06locked\"\xdf\x01\n" +
	"\x15UserVoiceRoomPresence\x12\x17\n" +
	"\auser_id\x18\x01 \x01(\x03R\x06userId\x12\x14\n" +
	"\x05state\x18\x02 \x01(\tR\x05state\x12\x17\n" +
	"\aseat_no\x18\x03 \x01(\x05R\x06seatNo\x12\x1a\n" +
	"\bjoinable\x18\x04 \x01(\bR\bjoinable\x12$\n" +
	"\x0eobserved_at_ms\x18\x05 \x01(\x03R\fobservedAtMs\x12<\n" +
	"\x04room\x18\x06 \x01(\v2(.hyapp.room.v1.UserVoiceRoomPresenceRoomR\x04room\"\x8a\x01\n" +
	"&BatchGetUserVoiceRoomPresencesResponse\x12:\n" +
	"\x05items\x18\x01 \x03(\v2$.hyapp.room.v1.UserVoiceRoomPresenceR\x05items\x12$\n" +
	"\x0eserver_time_ms\x18\x02 \x01(\x03R\fserverTimeMs\"\x87\x01\n" +
	"\x16GetRoomSnapshotRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12\x17\n" +
	"\aroom_id\x18\x02 \x01(\tR\x06roomId\x12$\n" +
	"\x0eviewer_user_id\x18\x03 \x01(\x03R\fviewerUserId\"\x91\x01\n" +
	"\x17GetRoomSnapshotResponse\x12/\n" +
	"\x04room\x18\x01 \x01(\v2\x1b.hyapp.room.v1.RoomSnapshotR\x04room\x12$\n" +
	"\x0eserver_time_ms\x18\x02 \x01(\x03R\fserverTimeMs\x12\x1f\n" +
	"\vis_followed\x18\x03 \x01(\bR\n" +
	"isFollowed\"\x85\x01\n" +
	"\x14GetRoomRocketRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12\x17\n" +
	"\aroom_id\x18\x02 \x01(\tR\x06roomId\x12$\n" +
	"\x0eviewer_user_id\x18\x03 \x01(\x03R\fviewerUserId\"t\n" +
	"\x15GetRoomRocketResponse\x125\n" +
	"\x06rocket\x18\x01 \x01(\v2\x1d.hyapp.room.v1.RoomRocketInfoR\x06rocket\x12$\n" +
	"\x0eserver_time_ms\x18\x02 \x01(\x03R\fserverTimeMs\"\xe6\x01\n" +
	"\x17ApplyRoomRPSGiftRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12\x17\n" +
	"\aroom_id\x18\x02 \x01(\tR\x06roomId\x12$\n" +
	"\x0esender_user_id\x18\x03 \x01(\x03R\fsenderUserId\x12$\n" +
	"\x0etarget_user_id\x18\x04 \x01(\x03R\ftargetUserId\x12\x17\n" +
	"\agift_id\x18\x05 \x01(\tR\x06giftId\x12\x1d\n" +
	"\n" +
	"heat_value\x18\x06 \x01(\x03R\theatValue\"\x88\x01\n" +
	"\x18ApplyRoomRPSGiftResponse\x124\n" +
	"\x06result\x18\x01 \x01(\v2\x1c.hyapp.room.v1.CommandResultR\x06result\x126\n" +
	"\x06rocket\x18\x02 \x01(\v2\x1e.hyapp.room.v1.RoomRocketStateR\x06rocket\"\xd0\x01\n" +
	"\x1aListRoomOnlineUsersRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12\x17\n" +
	"\aroom_id\x18\x02 \x01(\tR\x06roomId\x12$\n" +
	"\x0eviewer_user_id\x18\x03 \x01(\x03R\fviewerUserId\x12\x12\n" +
	"\x04page\x18\x04 \x01(\x05R\x04page\x12\x1b\n" +
	"\tpage_size\x18\x05 \x01(\x05R\bpageSize\x12\x12\n" +
	"\x04sort\x18\x06 \x01(\tR\x04sort\"\xee\x01\n" +
	"\x1bListRoomOnlineUsersResponse\x12-\n" +
	"\x05users\x18\x01 \x03(\v2\x17.hyapp.room.v1.RoomUserR\x05users\x12\x14\n" +
	"\x05total\x18\x02 \x01(\x03R\x05total\x12\x12\n" +
	"\x04page\x18\x03 \x01(\x05R\x04page\x12\x1b\n" +
	"\tpage_size\x18\x04 \x01(\x05R\bpageSize\x12$\n" +
	"\x0eserver_time_ms\x18\x05 \x01(\x03R\fserverTimeMs\x123\n" +
	"\x05items\x18\x06 \x03(\v2\x1d.hyapp.room.v1.RoomOnlineUserR\x05items\"\xd2\x01\n" +
	"\x0eRoomBannedUser\x12\x17\n" +
	"\auser_id\x18\x01 \x01(\x03R\x06userId\x12\"\n" +
	"\ractor_user_id\x18\x02 \x01(\x03R\vactorUserId\x12\"\n" +
	"\rcreated_at_ms\x18\x03 \x01(\x03R\vcreatedAtMs\x12\x1e\n" +
	"\vunban_at_ms\x18\x04 \x01(\x03R\tunbanAtMs\x12!\n" +
	"\fremaining_ms\x18\x05 \x01(\x03R\vremainingMs\x12\x1c\n" +
	"\tpermanent\x18\x06 \x01(\bR\tpermanent\"\xbc\x01\n" +
	"\x1aListRoomBannedUsersRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12\x17\n" +
	"\aroom_id\x18\x02 \x01(\tR\x06roomId\x12$\n" +
	"\x0eviewer_user_id\x18\x03 \x01(\x03R\fviewerUserId\x12\x12\n" +
	"\x04page\x18\x04 \x01(\x05R\x04page\x12\x1b\n" +
	"\tpage_size\x18\x05 \x01(\x05R\bpageSize\"\xbf\x01\n" +
	"\x1bListRoomBannedUsersResponse\x123\n" +
	"\x05items\x18\x01 \x03(\v2\x1d.hyapp.room.v1.RoomBannedUserR\x05items\x12\x14\n" +
	"\x05total\x18\x02 \x01(\x03R\x05total\x12\x12\n" +
	"\x04page\x18\x03 \x01(\x05R\x04page\x12\x1b\n" +
	"\tpage_size\x18\x04 \x01(\x05R\bpageSize\x12$\n" +
	"\x0eserver_time_ms\x18\x05 \x01(\x03R\fserverTimeMs\"u\n" +
	"\x11FollowRoomRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12\x17\n" +
	"\aroom_id\x18\x02 \x01(\tR\x06roomId\x12\x17\n" +
	"\auser_id\x18\x03 \x01(\x03R\x06userId\"\x95\x01\n" +
	"\x12FollowRoomResponse\x12\x17\n" +
	"\aroom_id\x18\x01 \x01(\tR\x06roomId\x12\x1a\n" +
	"\bfollowed\x18\x02 \x01(\bR\bfollowed\x12$\n" +
	"\x0efollowed_at_ms\x18\x03 \x01(\x03R\ffollowedAtMs\x12$\n" +
	"\x0eserver_time_ms\x18\x04 \x01(\x03R\fserverTimeMs\"w\n" +
	"\x13UnfollowRoomRequest\x12.\n" +
	"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.room.v1.RequestMetaR\x04meta\x12\x17\n" +
	"\aroom_id\x18\x02 \x01(\tR\x06roomId\x12\x17\n" +
	"\auser_id\x18\x03 \x01(\x03R\x06userId\"q\n" +
	"\x14UnfollowRoomResponse\x12\x17\n" +
	"\aroom_id\x18\x01 \x01(\tR\x06roomId\x12\x1a\n" +
	"\bfollowed\x18\x02 \x01(\bR\bfollowed\x12$\n" +
	"\x0eserver_time_ms\x18\x03 \x01(\x03R\fserverTimeMs\"\xe4\x01\n" +
	"\x10SendGiftLuckyHit\x12\x1d\n" +
	"\n" +
	"gift_index\x18\x01 \x01(\x05R\tgiftIndex\x12\x17\n" +
	"\adraw_id\x18\x02 \x01(\tR\x06drawId\x12$\n" +
	"\x0etarget_user_id\x18\x03 \x01(\x03R\ftargetUserId\x12(\n" +
	"\x10selected_tier_id\x18\x04 \x01(\tR\x0eselectedTierId\x12%\n" +
	"\x0emultiplier_ppm\x18\x05 \x01(\x03R\rmultiplierPpm\x12!\n" +
	"\freward_coins\x18\x06 \x01(\x03R\vrewardCoins\"\xb1\a\n" +
	"\x10SendGiftResultV2\x12\x1f\n" +
	"\vapi_version\x18\x01 \x01(\x05R\n" +
	"apiVersion\x12\x1d\n" +
	"\n" +
	"command_id\x18\x02 \x01(\tR\tcommandId\x12(\n" +
	"\x10combo_session_id\x18\x03 \x01(\tR\x0ecomboSessionId\x12\x1b\n" +
	"\tbatch_seq\x18\x04 \x01(\x03R\bbatchSeq\x12+\n" +
	"\x11idempotent_replay\x18\x05 \x01(\bR\x10idempotentReplay\x124\n" +
	"\x16committed_room_version\x18\x06 \x01(\x03R\x14committedRoomVersion\x12,\n" +
	"\x12billing_receipt_id\x18\a \x01(\tR\x10billingReceiptId\x12,\n" +
	"\x12coin_balance_after\x18\b \x01(\x03R\x10coinBalanceAfter\x129\n" +
	"\x19gift_income_balance_after\x18\t \x01(\x03R\x16giftIncomeBalanceAfter\x12,\n" +
	"\x12settled_gift_count\x18\n" +
	" \x01(\x05R\x10settledGiftCount\x125\n" +
	"\x17settled_target_user_ids\x18\v \x03(\x03R\x14settledTargetUserIds\x12'\n" +
	"\x0fbalance_version\x18\f \x01(\x03R\x0ebalanceVersion\x12A\n" +
	"\n" +
	"lucky_gift\x18\r \x01(\v2\".hyapp.room.v1.LuckyGiftDrawResultR\tluckyGift\x12C\n" +
	"\vlucky_gifts\x18\x0e \x03(\v2\".hyapp.room.v1.LuckyGiftDrawResultR\n" +
	"luckyGifts\x12>\n" +
	"\n" +
	"lucky_hits\x18\x0f \x03(\v2\x1f.hyapp.room.v1.SendGiftLuckyHitR\tluckyHits\x12H\n" +
	"\rbatch_display\x18\x10 \x01(\v2#.hyapp.room.v1.SendGiftBatchDisplayR\fbatchDisplay\x12\x1b\n" +
	"\troom_heat\x18\x11 \x01(\x03R\broomHeat\x124\n" +
	"\tgift_rank\x18\x12 \x03(\v2\x17.hyapp.room.v1.RankItemR\bgiftRank\x12)\n" +
	"\x10operation_status\x18\x13 \x01(\tR\x0foperationStatus2\x99\x1f\n" +
	"\x12RoomCommandService\x12Q\n" +
	"\n" +
	"CreateRoom\x12 .hyapp.room.v1.CreateRoomRequest\x1a!.hyapp.room.v1.CreateRoomResponse\x12f\n" +
	"\x11UpdateRoomProfile\x12'.hyapp.room.v1.UpdateRoomProfileRequest\x1a(.hyapp.room.v1.UpdateRoomProfileResponse\x12i\n" +
	"\x12SaveRoomBackground\x12(.hyapp.room.v1.SaveRoomBackgroundRequest\x1a).hyapp.room.v1.SaveRoomBackgroundResponse\x12f\n" +
	"\x11SetRoomBackground\x12'.hyapp.room.v1.SetRoomBackgroundRequest\x1a(.hyapp.room.v1.SetRoomBackgroundResponse\x12l\n" +
	"\x13ApplyRoomDecoration\x12).hyapp.room.v1.ApplyRoomDecorationRequest\x1a*.hyapp.room.v1.ApplyRoomDecorationResponse\x12Z\n" +
	"\rSendRoomImage\x12#.hyapp.room.v1.SendRoomImageRequest\x1a$.hyapp.room.v1.SendRoomImageResponse\x12K\n" +
	"\bJoinRoom\x12\x1e.hyapp.room.v1.JoinRoomRequest\x1a\x1f.hyapp.room.v1.JoinRoomResponse\x12Z\n" +
	"\rRoomHeartbeat\x12#.hyapp.room.v1.RoomHeartbeatRequest\x1a$.hyapp.room.v1.RoomHeartbeatResponse\x12N\n" +
	"\tLeaveRoom\x12\x1f.hyapp.room.v1.LeaveRoomRequest\x1a .hyapp.room.v1.LeaveRoomResponse\x12N\n" +
	"\tCloseRoom\x12\x1f.hyapp.room.v1.CloseRoomRequest\x1a .hyapp.room.v1.CloseRoomResponse\x12`\n" +
	"\x0fAdminUpdateRoom\x12%.hyapp.room.v1.AdminUpdateRoomRequest\x1a&.hyapp.room.v1.AdminUpdateRoomResponse\x12W\n" +
	"\fAdminBanRoom\x12\".hyapp.room.v1.AdminBanRoomRequest\x1a#.hyapp.room.v1.AdminBanRoomResponse\x12]\n" +
	"\x0eAdminUnbanRoom\x12$.hyapp.room.v1.AdminUnbanRoomRequest\x1a%.hyapp.room.v1.AdminUnbanRoomResponse\x12`\n" +
	"\x0fAdminDeleteRoom\x12%.hyapp.room.v1.AdminDeleteRoomRequest\x1a&.hyapp.room.v1.AdminDeleteRoomResponse\x12\x84\x01\n" +
	"\x1bAdminUpdateRoomRocketConfig\x121.hyapp.room.v1.AdminUpdateRoomRocketConfigRequest\x1a2.hyapp.room.v1.AdminUpdateRoomRocketConfigResponse\x12~\n" +
	"\x19AdminUpdateRoomSeatConfig\x12/.hyapp.room.v1.AdminUpdateRoomSeatConfigRequest\x1a0.hyapp.room.v1.AdminUpdateRoomSeatConfigResponse\x12\x90\x01\n" +
	"\x1fAdminUpdateHumanRoomRobotConfig\x125.hyapp.room.v1.AdminUpdateHumanRoomRobotConfigRequest\x1a6.hyapp.room.v1.AdminUpdateHumanRoomRobotConfigResponse\x12i\n" +
	"\x12AdminCreateRoomPin\x12(.hyapp.room.v1.AdminCreateRoomPinRequest\x1a).hyapp.room.v1.AdminCreateRoomPinResponse\x12i\n" +
	"\x12AdminCancelRoomPin\x12(.hyapp.room.v1.AdminCancelRoomPinRequest\x1a).hyapp.room.v1.AdminCancelRoomPinResponse\x12o\n" +
	"\x14AdminCreateRobotRoom\x12*.hyapp.room.v1.AdminCreateRobotRoomRequest\x1a+.hyapp.room.v1.AdminCreateRobotRoomResponse\x12x\n" +
	"\x17AdminSetRobotRoomStatus\x12-.hyapp.room.v1.AdminSetRobotRoomStatusRequest\x1a..hyapp.room.v1.AdminSetRobotRoomStatusResponse\x12\x84\x01\n" +
	"\x1bAdminRenameOwnerCountryCode\x121.hyapp.room.v1.AdminRenameOwnerCountryCodeRequest\x1a2.hyapp.room.v1.AdminRenameOwnerCountryCodeResponse\x12B\n" +
	"\x05MicUp\x12\x1b.hyapp.room.v1.MicUpRequest\x1a\x1c.hyapp.room.v1.MicUpResponse\x12H\n" +
	"\aMicDown\x12\x1d.hyapp.room.v1.MicDownRequest\x1a\x1e.hyapp.room.v1.MicDownResponse\x12Z\n" +
	"\rChangeMicSeat\x12#.hyapp.room.v1.ChangeMicSeatRequest\x1a$.hyapp.room.v1.ChangeMicSeatResponse\x12o\n" +
	"\x14ConfirmMicPublishing\x12*.hyapp.room.v1.ConfirmMicPublishingRequest\x1a+.hyapp.room.v1.ConfirmMicPublishingResponse\x12W\n" +
	"\fMicHeartbeat\x12\".hyapp.room.v1.MicHeartbeatRequest\x1a#.hyapp.room.v1.MicHeartbeatResponse\x12Q\n" +
	"\n" +
	"SetMicMute\x12 .hyapp.room.v1.SetMicMuteRequest\x1a!.hyapp.room.v1.SetMicMuteResponse\x12Z\n" +
	"\rApplyRTCEvent\x12#.hyapp.room.v1.ApplyRTCEventRequest\x1a$.hyapp.room.v1.ApplyRTCEventResponse\x12]\n" +
	"\x0eSetMicSeatLock\x12$.hyapp.room.v1.SetMicSeatLockRequest\x1a%.hyapp.room.v1.SetMicSeatLockResponse\x12]\n" +
	"\x0eSetChatEnabled\x12$.hyapp.room.v1.SetChatEnabledRequest\x1a%.hyapp.room.v1.SetChatEnabledResponse\x12`\n" +
	"\x0fSetRoomPassword\x12%.hyapp.room.v1.SetRoomPasswordRequest\x1a&.hyapp.room.v1.SetRoomPasswordResponse\x12W\n" +
	"\fSetRoomAdmin\x12\".hyapp.room.v1.SetRoomAdminRequest\x1a#.hyapp.room.v1.SetRoomAdminResponse\x12K\n" +
	"\bMuteUser\x12\x1e.hyapp.room.v1.MuteUserRequest\x1a\x1f.hyapp.room.v1.MuteUserResponse\x12K\n" +
	"\bKickUser\x12\x1e.hyapp.room.v1.KickUserRequest\x1a\x1f.hyapp.room.v1.KickUserResponse\x12N\n" +
	"\tUnbanUser\x12\x1f.hyapp.room.v1.UnbanUserRequest\x1a .hyapp.room.v1.UnbanUserResponse\x12`\n" +
	"\x0fSystemEvictUser\x12%.hyapp.room.v1.SystemEvictUserRequest\x1a&.hyapp.room.v1.SystemEvictUserResponse\x12K\n" +
	"\bSendGift\x12\x1e.hyapp.room.v1.SendGiftRequest\x1a\x1f.hyapp.room.v1.SendGiftResponse\x12c\n" +
	"\x10ApplyRoomRPSGift\x12&.hyapp.room.v1.ApplyRoomRPSGiftRequest\x1a'.hyapp.room.v1.ApplyRoomRPSGiftResponse\x12Q\n" +
	"\n" +
	"FollowRoom\x12 .hyapp.room.v1.FollowRoomRequest\x1a!.hyapp.room.v1.FollowRoomResponse\x12W\n" +
	"\fUnfollowRoom\x12\".hyapp.room.v1.UnfollowRoomRequest\x1a#.hyapp.room.v1.UnfollowRoomResponse2\xd0\x04\n" +
	"\x10RoomGuardService\x12o\n" +
	"\x14CheckSpeakPermission\x12*.hyapp.room.v1.CheckSpeakPermissionRequest\x1a+.hyapp.room.v1.CheckSpeakPermissionResponse\x12i\n" +
	"\x12VerifyRoomPresence\x12(.hyapp.room.v1.VerifyRoomPresenceRequest\x1a).hyapp.room.v1.VerifyRoomPresenceResponse\x12i\n" +
	"\x12ResolveRoomAppCode\x12(.hyapp.room.v1.ResolveRoomAppCodeRequest\x1a).hyapp.room.v1.ResolveRoomAppCodeResponse\x12{\n" +
	"\x18AuthorizeRoomMediaUpload\x12..hyapp.room.v1.AuthorizeRoomMediaUploadRequest\x1a/.hyapp.room.v1.AuthorizeRoomMediaUploadResponse\x12x\n" +
	"\x17CompleteRoomMediaUpload\x12-.hyapp.room.v1.CompleteRoomMediaUploadRequest\x1a..hyapp.room.v1.CompleteRoomMediaUploadResponse2\xf4\x11\n" +
	"\x10RoomQueryService\x12]\n" +
	"\x0eAdminListRooms\x12$.hyapp.room.v1.AdminListRoomsRequest\x1a%.hyapp.room.v1.AdminListRoomsResponse\x12W\n" +
	"\fAdminGetRoom\x12\".hyapp.room.v1.AdminGetRoomRequest\x1a#.hyapp.room.v1.AdminGetRoomResponse\x12{\n" +
	"\x18AdminGetRoomRocketConfig\x12..hyapp.room.v1.AdminGetRoomRocketConfigRequest\x1a/.hyapp.room.v1.AdminGetRoomRocketConfigResponse\x12u\n" +
	"\x16AdminGetRoomSeatConfig\x12,.hyapp.room.v1.AdminGetRoomSeatConfigRequest\x1a-.hyapp.room.v1.AdminGetRoomSeatConfigResponse\x12\x87\x01\n" +
	"\x1cAdminGetHumanRoomRobotConfig\x122.hyapp.room.v1.AdminGetHumanRoomRobotConfigRequest\x1a3.hyapp.room.v1.AdminGetHumanRoomRobotConfigResponse\x12f\n" +
	"\x11AdminListRoomPins\x12'.hyapp.room.v1.AdminListRoomPinsRequest\x1a(.hyapp.room.v1.AdminListRoomPinsResponse\x12l\n" +
	"\x13AdminListRobotRooms\x12).hyapp.room.v1.AdminListRobotRoomsRequest\x1a*.hyapp.room.v1.AdminListRobotRoomsResponse\x12\x8d\x01\n" +
	"\x1eAdminFilterAvailableRoomRobots\x124.hyapp.room.v1.AdminFilterAvailableRoomRobotsRequest\x1a5.hyapp.room.v1.AdminFilterAvailableRoomRobotsResponse\x12N\n" +
	"\tListRooms\x12\x1f.hyapp.room.v1.ListRoomsRequest\x1a .hyapp.room.v1.ListRoomsResponse\x12^\n" +
	"\x11ListRoomsByOwners\x12'.hyapp.room.v1.ListRoomsByOwnersRequest\x1a .hyapp.room.v1.ListRoomsResponse\x12V\n" +
	"\rListRoomFeeds\x12#.hyapp.room.v1.ListRoomFeedsRequest\x1a .hyapp.room.v1.ListRoomsResponse\x12x\n" +
	"\x17ListRoomGiftLeaderboard\x12-.hyapp.room.v1.ListRoomGiftLeaderboardRequest\x1a..hyapp.room.v1.ListRoomGiftLeaderboardResponse\x12{\n" +
	"\x18ListRoomContributionRank\x12..hyapp.room.v1.ListRoomContributionRankRequest\x1a/.hyapp.room.v1.ListRoomContributionRankResponse\x12N\n" +
	"\tGetMyRoom\x12\x1f.hyapp.room.v1.GetMyRoomRequest\x1a .hyapp.room.v1.GetMyRoomResponse\x12]\n" +
	"\x0eGetCurrentRoom\x12$.hyapp.room.v1.GetCurrentRoomRequest\x1a%.hyapp.room.v1.GetCurrentRoomResponse\x12\x8d\x01\n" +
	"\x1eBatchGetUserVoiceRoomPresences\x124.hyapp.room.v1.BatchGetUserVoiceRoomPresencesRequest\x1a5.hyapp.room.v1.BatchGetUserVoiceRoomPresencesResponse\x12`\n" +
	"\x0fGetRoomSnapshot\x12%.hyapp.room.v1.GetRoomSnapshotRequest\x1a&.hyapp.room.v1.GetRoomSnapshotResponse\x12l\n" +
	"\x13ListRoomBackgrounds\x12).hyapp.room.v1.ListRoomBackgroundsRequest\x1a*.hyapp.room.v1.ListRoomBackgroundsResponse\x12Z\n" +
	"\rGetRoomRocket\x12#.hyapp.room.v1.GetRoomRocketRequest\x1a$.hyapp.room.v1.GetRoomRocketResponse\x12l\n" +
	"\x13ListRoomOnlineUsers\x12).hyapp.room.v1.ListRoomOnlineUsersRequest\x1a*.hyapp.room.v1.ListRoomOnlineUsersResponse\x12l\n" +
	"\x13ListRoomBannedUsers\x12).hyapp.room.v1.ListRoomBannedUsersRequest\x1a*.hyapp.room.v1.ListRoomBannedUsersResponseB&Z$hyapp.local/api/proto/room/v1;roomv1b\x06proto3"

var (
	file_proto_room_v1_room_proto_rawDescOnce sync.Once
	file_proto_room_v1_room_proto_rawDescData []byte
)

func file_proto_room_v1_room_proto_rawDescGZIP() []byte {
	file_proto_room_v1_room_proto_rawDescOnce.Do(func() {
		file_proto_room_v1_room_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_proto_room_v1_room_proto_rawDesc), len(file_proto_room_v1_room_proto_rawDesc)))
	})
	return file_proto_room_v1_room_proto_rawDescData
}

var file_proto_room_v1_room_proto_msgTypes = make([]protoimpl.MessageInfo, 179)
var file_proto_room_v1_room_proto_goTypes = []any{
	(*RequestMeta)(nil),                             // 0: hyapp.room.v1.RequestMeta
	(*CommandResult)(nil),                           // 1: hyapp.room.v1.CommandResult
	(*RoomUser)(nil),                                // 2: hyapp.room.v1.RoomUser
	(*RoomOnlineUser)(nil),                          // 3: hyapp.room.v1.RoomOnlineUser
	(*SeatState)(nil),                               // 4: hyapp.room.v1.SeatState
	(*RankItem)(nil),                                // 5: hyapp.room.v1.RankItem
	(*RoomContributionRankItem)(nil),                // 6: hyapp.room.v1.RoomContributionRankItem
	(*LuckyGiftDrawResult)(nil),                     // 7: hyapp.room.v1.LuckyGiftDrawResult
	(*RoomRocketRewardItem)(nil),                    // 8: hyapp.room.v1.RoomRocketRewardItem
	(*RoomRocketLevel)(nil),                         // 9: hyapp.room.v1.RoomRocketLevel
	(*RoomRocketRewardGrant)(nil),                   // 10: hyapp.room.v1.RoomRocketRewardGrant
	(*RoomRocketContribution)(nil),                  // 11: hyapp.room.v1.RoomRocketContribution
	(*RoomRocketPendingLaunch)(nil),                 // 12: hyapp.room.v1.RoomRocketPendingLaunch
	(*RoomRocketState)(nil),                         // 13: hyapp.room.v1.RoomRocketState
	(*RoomRocketInfo)(nil),                          // 14: hyapp.room.v1.RoomRocketInfo
	(*RoomRocketGiftFuelRule)(nil),                  // 15: hyapp.room.v1.RoomRocketGiftFuelRule
	(*AdminRoomRocketConfig)(nil),                   // 16: hyapp.room.v1.AdminRoomRocketConfig
	(*AdminGetRoomRocketConfigRequest)(nil),         // 17: hyapp.room.v1.AdminGetRoomRocketConfigRequest
	(*AdminGetRoomRocketConfigResponse)(nil),        // 18: hyapp.room.v1.AdminGetRoomRocketConfigResponse
	(*AdminUpdateRoomRocketConfigRequest)(nil),      // 19: hyapp.room.v1.AdminUpdateRoomRocketConfigRequest
	(*AdminUpdateRoomRocketConfigResponse)(nil),     // 20: hyapp.room.v1.AdminUpdateRoomRocketConfigResponse
	(*AdminRoomSeatConfig)(nil),                     // 21: hyapp.room.v1.AdminRoomSeatConfig
	(*AdminGetRoomSeatConfigRequest)(nil),           // 22: hyapp.room.v1.AdminGetRoomSeatConfigRequest
	(*AdminGetRoomSeatConfigResponse)(nil),          // 23: hyapp.room.v1.AdminGetRoomSeatConfigResponse
	(*AdminUpdateRoomSeatConfigRequest)(nil),        // 24: hyapp.room.v1.AdminUpdateRoomSeatConfigRequest
	(*AdminUpdateRoomSeatConfigResponse)(nil),       // 25: hyapp.room.v1.AdminUpdateRoomSeatConfigResponse
	(*AdminHumanRoomRobotCountryPool)(nil),          // 26: hyapp.room.v1.AdminHumanRoomRobotCountryPool
	(*AdminHumanRoomRobotCountryRule)(nil),          // 27: hyapp.room.v1.AdminHumanRoomRobotCountryRule
	(*AdminHumanRoomRobotConfig)(nil),               // 28: hyapp.room.v1.AdminHumanRoomRobotConfig
	(*AdminGetHumanRoomRobotConfigRequest)(nil),     // 29: hyapp.room.v1.AdminGetHumanRoomRobotConfigRequest
	(*AdminGetHumanRoomRobotConfigResponse)(nil),    // 30: hyapp.room.v1.AdminGetHumanRoomRobotConfigResponse
	(*AdminUpdateHumanRoomRobotConfigRequest)(nil),  // 31: hyapp.room.v1.AdminUpdateHumanRoomRobotConfigRequest
	(*AdminUpdateHumanRoomRobotConfigResponse)(nil), // 32: hyapp.room.v1.AdminUpdateHumanRoomRobotConfigResponse
	(*AdminRoomPinRoom)(nil),                        // 33: hyapp.room.v1.AdminRoomPinRoom
	(*AdminRoomPin)(nil),                            // 34: hyapp.room.v1.AdminRoomPin
	(*AdminListRoomPinsRequest)(nil),                // 35: hyapp.room.v1.AdminListRoomPinsRequest
	(*AdminListRoomPinsResponse)(nil),               // 36: hyapp.room.v1.AdminListRoomPinsResponse
	(*AdminCreateRoomPinRequest)(nil),               // 37: hyapp.room.v1.AdminCreateRoomPinRequest
	(*AdminCreateRoomPinResponse)(nil),              // 38: hyapp.room.v1.AdminCreateRoomPinResponse
	(*AdminCancelRoomPinRequest)(nil),               // 39: hyapp.room.v1.AdminCancelRoomPinRequest
	(*AdminCancelRoomPinResponse)(nil),              // 40: hyapp.room.v1.AdminCancelRoomPinResponse
	(*AdminRobotRoomGiftRule)(nil),                  // 41: hyapp.room.v1.AdminRobotRoomGiftRule
	(*AdminRobotRoom)(nil),                          // 42: hyapp.room.v1.AdminRobotRoom
	(*AdminListRobotRoomsRequest)(nil),              // 43: hyapp.room.v1.AdminListRobotRoomsRequest
	(*AdminListRobotRoomsResponse)(nil),             // 44: hyapp.room.v1.AdminListRobotRoomsResponse
	(*AdminCreateRobotRoomRequest)(nil),             // 45: hyapp.room.v1.AdminCreateRobotRoomRequest
	(*AdminCreateRobotRoomResponse)(nil),            // 46: hyapp.room.v1.AdminCreateRobotRoomResponse
	(*AdminSetRobotRoomStatusRequest)(nil),          // 47: hyapp.room.v1.AdminSetRobotRoomStatusRequest
	(*AdminSetRobotRoomStatusResponse)(nil),         // 48: hyapp.room.v1.AdminSetRobotRoomStatusResponse
	(*AdminRenameOwnerCountryCodeRequest)(nil),      // 49: hyapp.room.v1.AdminRenameOwnerCountryCodeRequest
	(*AdminRenameOwnerCountryCodeResponse)(nil),     // 50: hyapp.room.v1.AdminRenameOwnerCountryCodeResponse
	(*AdminFilterAvailableRoomRobotsRequest)(nil),   // 51: hyapp.room.v1.AdminFilterAvailableRoomRobotsRequest
	(*AdminFilterAvailableRoomRobotsResponse)(nil),  // 52: hyapp.room.v1.AdminFilterAvailableRoomRobotsResponse
	(*RoomBanState)(nil),                            // 53: hyapp.room.v1.RoomBanState
	(*RoomSnapshot)(nil),                            // 54: hyapp.room.v1.RoomSnapshot
	(*RoomMedia)(nil),                               // 55: hyapp.room.v1.RoomMedia
	(*RoomBackgroundImage)(nil),                     // 56: hyapp.room.v1.RoomBackgroundImage
	(*SaveRoomBackgroundRequest)(nil),               // 57: hyapp.room.v1.SaveRoomBackgroundRequest
	(*SaveRoomBackgroundResponse)(nil),              // 58: hyapp.room.v1.SaveRoomBackgroundResponse
	(*ListRoomBackgroundsRequest)(nil),              // 59: hyapp.room.v1.ListRoomBackgroundsRequest
	(*ListRoomBackgroundsResponse)(nil),             // 60: hyapp.room.v1.ListRoomBackgroundsResponse
	(*SetRoomBackgroundRequest)(nil),                // 61: hyapp.room.v1.SetRoomBackgroundRequest
	(*SetRoomBackgroundResponse)(nil),               // 62: hyapp.room.v1.SetRoomBackgroundResponse
	(*RoomDecorationResource)(nil),                  // 63: hyapp.room.v1.RoomDecorationResource
	(*ApplyRoomDecorationRequest)(nil),              // 64: hyapp.room.v1.ApplyRoomDecorationRequest
	(*ApplyRoomDecorationResponse)(nil),             // 65: hyapp.room.v1.ApplyRoomDecorationResponse
	(*AuthorizeRoomMediaUploadRequest)(nil),         // 66: hyapp.room.v1.AuthorizeRoomMediaUploadRequest
	(*AuthorizeRoomMediaUploadResponse)(nil),        // 67: hyapp.room.v1.AuthorizeRoomMediaUploadResponse
	(*CompleteRoomMediaUploadRequest)(nil),          // 68: hyapp.room.v1.CompleteRoomMediaUploadRequest
	(*CompleteRoomMediaUploadResponse)(nil),         // 69: hyapp.room.v1.CompleteRoomMediaUploadResponse
	(*SendRoomImageRequest)(nil),                    // 70: hyapp.room.v1.SendRoomImageRequest
	(*SendRoomImageResponse)(nil),                   // 71: hyapp.room.v1.SendRoomImageResponse
	(*CreateRoomRequest)(nil),                       // 72: hyapp.room.v1.CreateRoomRequest
	(*CreateRoomResponse)(nil),                      // 73: hyapp.room.v1.CreateRoomResponse
	(*UpdateRoomProfileRequest)(nil),                // 74: hyapp.room.v1.UpdateRoomProfileRequest
	(*UpdateRoomProfileResponse)(nil),               // 75: hyapp.room.v1.UpdateRoomProfileResponse
	(*RoomEntryVehicleSnapshot)(nil),                // 76: hyapp.room.v1.RoomEntryVehicleSnapshot
	(*RoomUserDisplayProfile)(nil),                  // 77: hyapp.room.v1.RoomUserDisplayProfile
	(*JoinRoomRequest)(nil),                         // 78: hyapp.room.v1.JoinRoomRequest
	(*RoomEffectiveVipSnapshot)(nil),                // 79: hyapp.room.v1.RoomEffectiveVipSnapshot
	(*JoinRoomResponse)(nil),                        // 80: hyapp.room.v1.JoinRoomResponse
	(*RoomHeartbeatRequest)(nil),                    // 81: hyapp.room.v1.RoomHeartbeatRequest
	(*RoomHeartbeatResponse)(nil),                   // 82: hyapp.room.v1.RoomHeartbeatResponse
	(*LeaveRoomRequest)(nil),                        // 83: hyapp.room.v1.LeaveRoomRequest
	(*LeaveRoomResponse)(nil),                       // 84: hyapp.room.v1.LeaveRoomResponse
	(*CloseRoomRequest)(nil),                        // 85: hyapp.room.v1.CloseRoomRequest
	(*CloseRoomResponse)(nil),                       // 86: hyapp.room.v1.CloseRoomResponse
	(*AdminRoomListItem)(nil),                       // 87: hyapp.room.v1.AdminRoomListItem
	(*AdminListRoomsRequest)(nil),                   // 88: hyapp.room.v1.AdminListRoomsRequest
	(*AdminListRoomsResponse)(nil),                  // 89: hyapp.room.v1.AdminListRoomsResponse
	(*AdminGetRoomRequest)(nil),                     // 90: hyapp.room.v1.AdminGetRoomRequest
	(*AdminGetRoomResponse)(nil),                    // 91: hyapp.room.v1.AdminGetRoomResponse
	(*AdminUpdateRoomRequest)(nil),                  // 92: hyapp.room.v1.AdminUpdateRoomRequest
	(*AdminUpdateRoomResponse)(nil),                 // 93: hyapp.room.v1.AdminUpdateRoomResponse
	(*AdminBanRoomRequest)(nil),                     // 94: hyapp.room.v1.AdminBanRoomRequest
	(*AdminBanRoomResponse)(nil),                    // 95: hyapp.room.v1.AdminBanRoomResponse
	(*AdminUnbanRoomRequest)(nil),                   // 96: hyapp.room.v1.AdminUnbanRoomRequest
	(*AdminUnbanRoomResponse)(nil),                  // 97: hyapp.room.v1.AdminUnbanRoomResponse
	(*AdminDeleteRoomRequest)(nil),                  // 98: hyapp.room.v1.AdminDeleteRoomRequest
	(*AdminDeleteRoomResponse)(nil),                 // 99: hyapp.room.v1.AdminDeleteRoomResponse
	(*MicUpRequest)(nil),                            // 100: hyapp.room.v1.MicUpRequest
	(*MicUpResponse)(nil),                           // 101: hyapp.room.v1.MicUpResponse
	(*MicDownRequest)(nil),                          // 102: hyapp.room.v1.MicDownRequest
	(*MicDownResponse)(nil),                         // 103: hyapp.room.v1.MicDownResponse
	(*ChangeMicSeatRequest)(nil),                    // 104: hyapp.room.v1.ChangeMicSeatRequest
	(*ChangeMicSeatResponse)(nil),                   // 105: hyapp.room.v1.ChangeMicSeatResponse
	(*ConfirmMicPublishingRequest)(nil),             // 106: hyapp.room.v1.ConfirmMicPublishingRequest
	(*ConfirmMicPublishingResponse)(nil),            // 107: hyapp.room.v1.ConfirmMicPublishingResponse
	(*MicHeartbeatRequest)(nil),                     // 108: hyapp.room.v1.MicHeartbeatRequest
	(*MicHeartbeatResponse)(nil),                    // 109: hyapp.room.v1.MicHeartbeatResponse
	(*SetMicMuteRequest)(nil),                       // 110: hyapp.room.v1.SetMicMuteRequest
	(*SetMicMuteResponse)(nil),                      // 111: hyapp.room.v1.SetMicMuteResponse
	(*ApplyRTCEventRequest)(nil),                    // 112: hyapp.room.v1.ApplyRTCEventRequest
	(*ApplyRTCEventResponse)(nil),                   // 113: hyapp.room.v1.ApplyRTCEventResponse
	(*SetMicSeatLockRequest)(nil),                   // 114: hyapp.room.v1.SetMicSeatLockRequest
	(*SetMicSeatLockResponse)(nil),                  // 115: hyapp.room.v1.SetMicSeatLockResponse
	(*SetChatEnabledRequest)(nil),                   // 116: hyapp.room.v1.SetChatEnabledRequest
	(*SetChatEnabledResponse)(nil),                  // 117: hyapp.room.v1.SetChatEnabledResponse
	(*SetRoomPasswordRequest)(nil),                  // 118: hyapp.room.v1.SetRoomPasswordRequest
	(*SetRoomPasswordResponse)(nil),                 // 119: hyapp.room.v1.SetRoomPasswordResponse
	(*SetRoomAdminRequest)(nil),                     // 120: hyapp.room.v1.SetRoomAdminRequest
	(*SetRoomAdminResponse)(nil),                    // 121: hyapp.room.v1.SetRoomAdminResponse
	(*MuteUserRequest)(nil),                         // 122: hyapp.room.v1.MuteUserRequest
	(*MuteUserResponse)(nil),                        // 123: hyapp.room.v1.MuteUserResponse
	(*KickUserRequest)(nil),                         // 124: hyapp.room.v1.KickUserRequest
	(*KickUserResponse)(nil),                        // 125: hyapp.room.v1.KickUserResponse
	(*UnbanUserRequest)(nil),                        // 126: hyapp.room.v1.UnbanUserRequest
	(*UnbanUserResponse)(nil),                       // 127: hyapp.room.v1.UnbanUserResponse
	(*SystemEvictUserRequest)(nil),                  // 128: hyapp.room.v1.SystemEvictUserRequest
	(*SystemEvictUserResponse)(nil),                 // 129: hyapp.room.v1.SystemEvictUserResponse
	(*SendGiftTargetHostScope)(nil),                 // 130: hyapp.room.v1.SendGiftTargetHostScope
	(*SendGiftDisplayProfile)(nil),                  // 131: hyapp.room.v1.SendGiftDisplayProfile
	(*SendGiftBatchTarget)(nil),                     // 132: hyapp.room.v1.SendGiftBatchTarget
	(*SendGiftBatchDisplay)(nil),                    // 133: hyapp.room.v1.SendGiftBatchDisplay
	(*SendGiftRequest)(nil),                         // 134: hyapp.room.v1.SendGiftRequest
	(*SendGiftResponse)(nil),                        // 135: hyapp.room.v1.SendGiftResponse
	(*CheckSpeakPermissionRequest)(nil),             // 136: hyapp.room.v1.CheckSpeakPermissionRequest
	(*CheckSpeakPermissionResponse)(nil),            // 137: hyapp.room.v1.CheckSpeakPermissionResponse
	(*VerifyRoomPresenceRequest)(nil),               // 138: hyapp.room.v1.VerifyRoomPresenceRequest
	(*VerifyRoomPresenceResponse)(nil),              // 139: hyapp.room.v1.VerifyRoomPresenceResponse
	(*ResolveRoomAppCodeRequest)(nil),               // 140: hyapp.room.v1.ResolveRoomAppCodeRequest
	(*ResolveRoomAppCodeResponse)(nil),              // 141: hyapp.room.v1.ResolveRoomAppCodeResponse
	(*ListRoomsRequest)(nil),                        // 142: hyapp.room.v1.ListRoomsRequest
	(*ListRoomsByOwnersRequest)(nil),                // 143: hyapp.room.v1.ListRoomsByOwnersRequest
	(*ListRoomFeedsRequest)(nil),                    // 144: hyapp.room.v1.ListRoomFeedsRequest
	(*ListRoomGiftLeaderboardRequest)(nil),          // 145: hyapp.room.v1.ListRoomGiftLeaderboardRequest
	(*RoomFeedRelatedUser)(nil),                     // 146: hyapp.room.v1.RoomFeedRelatedUser
	(*RoomListItem)(nil),                            // 147: hyapp.room.v1.RoomListItem
	(*ListRoomsResponse)(nil),                       // 148: hyapp.room.v1.ListRoomsResponse
	(*RoomGiftLeaderboardItem)(nil),                 // 149: hyapp.room.v1.RoomGiftLeaderboardItem
	(*ListRoomGiftLeaderboardResponse)(nil),         // 150: hyapp.room.v1.ListRoomGiftLeaderboardResponse
	(*ListRoomContributionRankRequest)(nil),         // 151: hyapp.room.v1.ListRoomContributionRankRequest
	(*ListRoomContributionRankResponse)(nil),        // 152: hyapp.room.v1.ListRoomContributionRankResponse
	(*GetMyRoomRequest)(nil),                        // 153: hyapp.room.v1.GetMyRoomRequest
	(*GetMyRoomResponse)(nil),                       // 154: hyapp.room.v1.GetMyRoomResponse
	(*GetCurrentRoomRequest)(nil),                   // 155: hyapp.room.v1.GetCurrentRoomRequest
	(*GetCurrentRoomResponse)(nil),                  // 156: hyapp.room.v1.GetCurrentRoomResponse
	(*BatchGetUserVoiceRoomPresencesRequest)(nil),   // 157: hyapp.room.v1.BatchGetUserVoiceRoomPresencesRequest
	(*UserVoiceRoomPresenceRoom)(nil),               // 158: hyapp.room.v1.UserVoiceRoomPresenceRoom
	(*UserVoiceRoomPresence)(nil),                   // 159: hyapp.room.v1.UserVoiceRoomPresence
	(*BatchGetUserVoiceRoomPresencesResponse)(nil),  // 160: hyapp.room.v1.BatchGetUserVoiceRoomPresencesResponse
	(*GetRoomSnapshotRequest)(nil),                  // 161: hyapp.room.v1.GetRoomSnapshotRequest
	(*GetRoomSnapshotResponse)(nil),                 // 162: hyapp.room.v1.GetRoomSnapshotResponse
	(*GetRoomRocketRequest)(nil),                    // 163: hyapp.room.v1.GetRoomRocketRequest
	(*GetRoomRocketResponse)(nil),                   // 164: hyapp.room.v1.GetRoomRocketResponse
	(*ApplyRoomRPSGiftRequest)(nil),                 // 165: hyapp.room.v1.ApplyRoomRPSGiftRequest
	(*ApplyRoomRPSGiftResponse)(nil),                // 166: hyapp.room.v1.ApplyRoomRPSGiftResponse
	(*ListRoomOnlineUsersRequest)(nil),              // 167: hyapp.room.v1.ListRoomOnlineUsersRequest
	(*ListRoomOnlineUsersResponse)(nil),             // 168: hyapp.room.v1.ListRoomOnlineUsersResponse
	(*RoomBannedUser)(nil),                          // 169: hyapp.room.v1.RoomBannedUser
	(*ListRoomBannedUsersRequest)(nil),              // 170: hyapp.room.v1.ListRoomBannedUsersRequest
	(*ListRoomBannedUsersResponse)(nil),             // 171: hyapp.room.v1.ListRoomBannedUsersResponse
	(*FollowRoomRequest)(nil),                       // 172: hyapp.room.v1.FollowRoomRequest
	(*FollowRoomResponse)(nil),                      // 173: hyapp.room.v1.FollowRoomResponse
	(*UnfollowRoomRequest)(nil),                     // 174: hyapp.room.v1.UnfollowRoomRequest
	(*UnfollowRoomResponse)(nil),                    // 175: hyapp.room.v1.UnfollowRoomResponse
	(*SendGiftLuckyHit)(nil),                        // 176: hyapp.room.v1.SendGiftLuckyHit
	(*SendGiftResultV2)(nil),                        // 177: hyapp.room.v1.SendGiftResultV2
	nil,                                             // 178: hyapp.room.v1.RoomSnapshot.RoomExtEntry
}
var file_proto_room_v1_room_proto_depIdxs = []int32{
	176, // 0: hyapp.room.v1.LuckyGiftDrawResult.hits:type_name -> hyapp.room.v1.SendGiftLuckyHit
	8,   // 1: hyapp.room.v1.RoomRocketLevel.in_room_rewards:type_name -> hyapp.room.v1.RoomRocketRewardItem
	8,   // 2: hyapp.room.v1.RoomRocketLevel.top1_rewards:type_name -> hyapp.room.v1.RoomRocketRewardItem
	8,   // 3: hyapp.room.v1.RoomRocketLevel.igniter_rewards:type_name -> hyapp.room.v1.RoomRocketRewardItem
	10,  // 4: hyapp.room.v1.RoomRocketState.last_rewards:type_name -> hyapp.room.v1.RoomRocketRewardGrant
	12,  // 5: hyapp.room.v1.RoomRocketState.pending_launches:type_name -> hyapp.room.v1.RoomRocketPendingLaunch
	11,  // 6: hyapp.room.v1.RoomRocketState.current_contributions:type_name -> hyapp.room.v1.RoomRocketContribution
	9,   // 7: hyapp.room.v1.RoomRocketInfo.levels:type_name -> hyapp.room.v1.RoomRocketLevel
	13,  // 8: hyapp.room.v1.RoomRocketInfo.state:type_name -> hyapp.room.v1.RoomRocketState
	9,   // 9: hyapp.room.v1.AdminRoomRocketConfig.levels:type_name -> hyapp.room.v1.RoomRocketLevel
	15,  // 10: hyapp.room.v1.AdminRoomRocketConfig.gift_fuel_rules:type_name -> hyapp.room.v1.RoomRocketGiftFuelRule
	0,   // 11: hyapp.room.v1.AdminGetRoomRocketConfigRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	16,  // 12: hyapp.room.v1.AdminGetRoomRocketConfigResponse.config:type_name -> hyapp.room.v1.AdminRoomRocketConfig
	0,   // 13: hyapp.room.v1.AdminUpdateRoomRocketConfigRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	16,  // 14: hyapp.room.v1.AdminUpdateRoomRocketConfigRequest.config:type_name -> hyapp.room.v1.AdminRoomRocketConfig
	16,  // 15: hyapp.room.v1.AdminUpdateRoomRocketConfigResponse.config:type_name -> hyapp.room.v1.AdminRoomRocketConfig
	0,   // 16: hyapp.room.v1.AdminGetRoomSeatConfigRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	21,  // 17: hyapp.room.v1.AdminGetRoomSeatConfigResponse.config:type_name -> hyapp.room.v1.AdminRoomSeatConfig
	0,   // 18: hyapp.room.v1.AdminUpdateRoomSeatConfigRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	21,  // 19: hyapp.room.v1.AdminUpdateRoomSeatConfigResponse.config:type_name -> hyapp.room.v1.AdminRoomSeatConfig
	26,  // 20: hyapp.room.v1.AdminHumanRoomRobotConfig.country_pools:type_name -> hyapp.room.v1.AdminHumanRoomRobotCountryPool
	27,  // 21: hyapp.room.v1.AdminHumanRoomRobotConfig.country_rules:type_name -> hyapp.room.v1.AdminHumanRoomRobotCountryRule
	0,   // 22: hyapp.room.v1.AdminGetHumanRoomRobotConfigRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	28,  // 23: hyapp.room.v1.AdminGetHumanRoomRobotConfigResponse.config:type_name -> hyapp.room.v1.AdminHumanRoomRobotConfig
	0,   // 24: hyapp.room.v1.AdminUpdateHumanRoomRobotConfigRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	28,  // 25: hyapp.room.v1.AdminUpdateHumanRoomRobotConfigRequest.config:type_name -> hyapp.room.v1.AdminHumanRoomRobotConfig
	28,  // 26: hyapp.room.v1.AdminUpdateHumanRoomRobotConfigResponse.config:type_name -> hyapp.room.v1.AdminHumanRoomRobotConfig
	33,  // 27: hyapp.room.v1.AdminRoomPin.room:type_name -> hyapp.room.v1.AdminRoomPinRoom
	0,   // 28: hyapp.room.v1.AdminListRoomPinsRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	34,  // 29: hyapp.room.v1.AdminListRoomPinsResponse.pins:type_name -> hyapp.room.v1.AdminRoomPin
	0,   // 30: hyapp.room.v1.AdminCreateRoomPinRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	34,  // 31: hyapp.room.v1.AdminCreateRoomPinResponse.pin:type_name -> hyapp.room.v1.AdminRoomPin
	0,   // 32: hyapp.room.v1.AdminCancelRoomPinRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	34,  // 33: hyapp.room.v1.AdminCancelRoomPinResponse.pin:type_name -> hyapp.room.v1.AdminRoomPin
	41,  // 34: hyapp.room.v1.AdminRobotRoom.gift_rule:type_name -> hyapp.room.v1.AdminRobotRoomGiftRule
	0,   // 35: hyapp.room.v1.AdminListRobotRoomsRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	42,  // 36: hyapp.room.v1.AdminListRobotRoomsResponse.rooms:type_name -> hyapp.room.v1.AdminRobotRoom
	0,   // 37: hyapp.room.v1.AdminCreateRobotRoomRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	41,  // 38: hyapp.room.v1.AdminCreateRobotRoomRequest.gift_rule:type_name -> hyapp.room.v1.AdminRobotRoomGiftRule
	42,  // 39: hyapp.room.v1.AdminCreateRobotRoomResponse.room:type_name -> hyapp.room.v1.AdminRobotRoom
	0,   // 40: hyapp.room.v1.AdminSetRobotRoomStatusRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	42,  // 41: hyapp.room.v1.AdminSetRobotRoomStatusResponse.room:type_name -> hyapp.room.v1.AdminRobotRoom
	0,   // 42: hyapp.room.v1.AdminRenameOwnerCountryCodeRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	0,   // 43: hyapp.room.v1.AdminFilterAvailableRoomRobotsRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	4,   // 44: hyapp.room.v1.RoomSnapshot.mic_seats:type_name -> hyapp.room.v1.SeatState
	2,   // 45: hyapp.room.v1.RoomSnapshot.online_users:type_name -> hyapp.room.v1.RoomUser
	5,   // 46: hyapp.room.v1.RoomSnapshot.gift_rank:type_name -> hyapp.room.v1.RankItem
	178, // 47: hyapp.room.v1.RoomSnapshot.room_ext:type_name -> hyapp.room.v1.RoomSnapshot.RoomExtEntry
	13,  // 48: hyapp.room.v1.RoomSnapshot.rocket:type_name -> hyapp.room.v1.RoomRocketState
	53,  // 49: hyapp.room.v1.RoomSnapshot.ban_states:type_name -> hyapp.room.v1.RoomBanState
	63,  // 50: hyapp.room.v1.RoomSnapshot.room_border:type_name -> hyapp.room.v1.RoomDecorationResource
	63,  // 51: hyapp.room.v1.RoomSnapshot.room_name_style:type_name -> hyapp.room.v1.RoomDecorationResource
	56,  // 52: hyapp.room.v1.RoomSnapshot.active_background:type_name -> hyapp.room.v1.RoomBackgroundImage
	55,  // 53: hyapp.room.v1.RoomBackgroundImage.media:type_name -> hyapp.room.v1.RoomMedia
	0,   // 54: hyapp.room.v1.SaveRoomBackgroundRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	55,  // 55: hyapp.room.v1.SaveRoomBackgroundRequest.media:type_name -> hyapp.room.v1.RoomMedia
	56,  // 56: hyapp.room.v1.SaveRoomBackgroundResponse.background:type_name -> hyapp.room.v1.RoomBackgroundImage
	0,   // 57: hyapp.room.v1.ListRoomBackgroundsRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	56,  // 58: hyapp.room.v1.ListRoomBackgroundsResponse.backgrounds:type_name -> hyapp.room.v1.RoomBackgroundImage
	56,  // 59: hyapp.room.v1.ListRoomBackgroundsResponse.selected_background:type_name -> hyapp.room.v1.RoomBackgroundImage
	0,   // 60: hyapp.room.v1.SetRoomBackgroundRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	1,   // 61: hyapp.room.v1.SetRoomBackgroundResponse.result:type_name -> hyapp.room.v1.CommandResult
	54,  // 62: hyapp.room.v1.SetRoomBackgroundResponse.room:type_name -> hyapp.room.v1.RoomSnapshot
	56,  // 63: hyapp.room.v1.SetRoomBackgroundResponse.background:type_name -> hyapp.room.v1.RoomBackgroundImage
	0,   // 64: hyapp.room.v1.ApplyRoomDecorationRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	1,   // 65: hyapp.room.v1.ApplyRoomDecorationResponse.result:type_name -> hyapp.room.v1.CommandResult
	54,  // 66: hyapp.room.v1.ApplyRoomDecorationResponse.room:type_name -> hyapp.room.v1.RoomSnapshot
	63,  // 67: hyapp.room.v1.ApplyRoomDecorationResponse.resource:type_name -> hyapp.room.v1.RoomDecorationResource
	0,   // 68: hyapp.room.v1.AuthorizeRoomMediaUploadRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	55,  // 69: hyapp.room.v1.AuthorizeRoomMediaUploadRequest.media:type_name -> hyapp.room.v1.RoomMedia
	0,   // 70: hyapp.room.v1.CompleteRoomMediaUploadRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	55,  // 71: hyapp.room.v1.CompleteRoomMediaUploadRequest.media:type_name -> hyapp.room.v1.RoomMedia
	55,  // 72: hyapp.room.v1.CompleteRoomMediaUploadResponse.media:type_name -> hyapp.room.v1.RoomMedia
	0,   // 73: hyapp.room.v1.SendRoomImageRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	55,  // 74: hyapp.room.v1.SendRoomImageRequest.image:type_name -> hyapp.room.v1.RoomMedia
	1,   // 75: hyapp.room.v1.SendRoomImageResponse.result:type_name -> hyapp.room.v1.CommandResult
	55,  // 76: hyapp.room.v1.SendRoomImageResponse.image:type_name -> hyapp.room.v1.RoomMedia
	0,   // 77: hyapp.room.v1.CreateRoomRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	1,   // 78: hyapp.room.v1.CreateRoomResponse.result:type_name -> hyapp.room.v1.CommandResult
	54,  // 79: hyapp.room.v1.CreateRoomResponse.room:type_name -> hyapp.room.v1.RoomSnapshot
	0,   // 80: hyapp.room.v1.UpdateRoomProfileRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	1,   // 81: hyapp.room.v1.UpdateRoomProfileResponse.result:type_name -> hyapp.room.v1.CommandResult
	54,  // 82: hyapp.room.v1.UpdateRoomProfileResponse.room:type_name -> hyapp.room.v1.RoomSnapshot
	0,   // 83: hyapp.room.v1.JoinRoomRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	76,  // 84: hyapp.room.v1.JoinRoomRequest.entry_vehicle:type_name -> hyapp.room.v1.RoomEntryVehicleSnapshot
	77,  // 85: hyapp.room.v1.JoinRoomRequest.actor_display_profile:type_name -> hyapp.room.v1.RoomUserDisplayProfile
	1,   // 86: hyapp.room.v1.JoinRoomResponse.result:type_name -> hyapp.room.v1.CommandResult
	2,   // 87: hyapp.room.v1.JoinRoomResponse.user:type_name -> hyapp.room.v1.RoomUser
	54,  // 88: hyapp.room.v1.JoinRoomResponse.room:type_name -> hyapp.room.v1.RoomSnapshot
	79,  // 89: hyapp.room.v1.JoinRoomResponse.effective_vip:type_name -> hyapp.room.v1.RoomEffectiveVipSnapshot
	0,   // 90: hyapp.room.v1.RoomHeartbeatRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	1,   // 91: hyapp.room.v1.RoomHeartbeatResponse.result:type_name -> hyapp.room.v1.CommandResult
	2,   // 92: hyapp.room.v1.RoomHeartbeatResponse.user:type_name -> hyapp.room.v1.RoomUser
	54,  // 93: hyapp.room.v1.RoomHeartbeatResponse.room:type_name -> hyapp.room.v1.RoomSnapshot
	0,   // 94: hyapp.room.v1.LeaveRoomRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	1,   // 95: hyapp.room.v1.LeaveRoomResponse.result:type_name -> hyapp.room.v1.CommandResult
	54,  // 96: hyapp.room.v1.LeaveRoomResponse.room:type_name -> hyapp.room.v1.RoomSnapshot
	0,   // 97: hyapp.room.v1.CloseRoomRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	1,   // 98: hyapp.room.v1.CloseRoomResponse.result:type_name -> hyapp.room.v1.CommandResult
	54,  // 99: hyapp.room.v1.CloseRoomResponse.room:type_name -> hyapp.room.v1.RoomSnapshot
	0,   // 100: hyapp.room.v1.AdminListRoomsRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	87,  // 101: hyapp.room.v1.AdminListRoomsResponse.rooms:type_name -> hyapp.room.v1.AdminRoomListItem
	0,   // 102: hyapp.room.v1.AdminGetRoomRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	87,  // 103: hyapp.room.v1.AdminGetRoomResponse.room:type_name -> hyapp.room.v1.AdminRoomListItem
	0,   // 104: hyapp.room.v1.AdminUpdateRoomRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	1,   // 105: hyapp.room.v1.AdminUpdateRoomResponse.result:type_name -> hyapp.room.v1.CommandResult
	54,  // 106: hyapp.room.v1.AdminUpdateRoomResponse.room:type_name -> hyapp.room.v1.RoomSnapshot
	0,   // 107: hyapp.room.v1.AdminBanRoomRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	1,   // 108: hyapp.room.v1.AdminBanRoomResponse.result:type_name -> hyapp.room.v1.CommandResult
	54,  // 109: hyapp.room.v1.AdminBanRoomResponse.room:type_name -> hyapp.room.v1.RoomSnapshot
	0,   // 110: hyapp.room.v1.AdminUnbanRoomRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	1,   // 111: hyapp.room.v1.AdminUnbanRoomResponse.result:type_name -> hyapp.room.v1.CommandResult
	54,  // 112: hyapp.room.v1.AdminUnbanRoomResponse.room:type_name -> hyapp.room.v1.RoomSnapshot
	0,   // 113: hyapp.room.v1.AdminDeleteRoomRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	1,   // 114: hyapp.room.v1.AdminDeleteRoomResponse.result:type_name -> hyapp.room.v1.CommandResult
	54,  // 115: hyapp.room.v1.AdminDeleteRoomResponse.room:type_name -> hyapp.room.v1.RoomSnapshot
	0,   // 116: hyapp.room.v1.MicUpRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	77,  // 117: hyapp.room.v1.MicUpRequest.target_display_profile:type_name -> hyapp.room.v1.RoomUserDisplayProfile
	1,   // 118: hyapp.room.v1.MicUpResponse.result:type_name -> hyapp.room.v1.CommandResult
	54,  // 119: hyapp.room.v1.MicUpResponse.room:type_name -> hyapp.room.v1.RoomSnapshot
	0,   // 120: hyapp.room.v1.MicDownRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	77,  // 121: hyapp.room.v1.MicDownRequest.target_display_profile:type_name -> hyapp.room.v1.RoomUserDisplayProfile
	1,   // 122: hyapp.room.v1.MicDownResponse.result:type_name -> hyapp.room.v1.CommandResult
	54,  // 123: hyapp.room.v1.MicDownResponse.room:type_name -> hyapp.room.v1.RoomSnapshot
	0,   // 124: hyapp.room.v1.ChangeMicSeatRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	77,  // 125: hyapp.room.v1.ChangeMicSeatRequest.target_display_profile:type_name -> hyapp.room.v1.RoomUserDisplayProfile
	1,   // 126: hyapp.room.v1.ChangeMicSeatResponse.result:type_name -> hyapp.room.v1.CommandResult
	54,  // 127: hyapp.room.v1.ChangeMicSeatResponse.room:type_name -> hyapp.room.v1.RoomSnapshot
	0,   // 128: hyapp.room.v1.ConfirmMicPublishingRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	77,  // 129: hyapp.room.v1.ConfirmMicPublishingRequest.target_display_profile:type_name -> hyapp.room.v1.RoomUserDisplayProfile
	1,   // 130: hyapp.room.v1.ConfirmMicPublishingResponse.result:type_name -> hyapp.room.v1.CommandResult
	54,  // 131: hyapp.room.v1.ConfirmMicPublishingResponse.room:type_name -> hyapp.room.v1.RoomSnapshot
	0,   // 132: hyapp.room.v1.MicHeartbeatRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	1,   // 133: hyapp.room.v1.MicHeartbeatResponse.result:type_name -> hyapp.room.v1.CommandResult
	54,  // 134: hyapp.room.v1.MicHeartbeatResponse.room:type_name -> hyapp.room.v1.RoomSnapshot
	0,   // 135: hyapp.room.v1.SetMicMuteRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	77,  // 136: hyapp.room.v1.SetMicMuteRequest.target_display_profile:type_name -> hyapp.room.v1.RoomUserDisplayProfile
	1,   // 137: hyapp.room.v1.SetMicMuteResponse.result:type_name -> hyapp.room.v1.CommandResult
	54,  // 138: hyapp.room.v1.SetMicMuteResponse.room:type_name -> hyapp.room.v1.RoomSnapshot
	0,   // 139: hyapp.room.v1.ApplyRTCEventRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	1,   // 140: hyapp.room.v1.ApplyRTCEventResponse.result:type_name -> hyapp.room.v1.CommandResult
	54,  // 141: hyapp.room.v1.ApplyRTCEventResponse.room:type_name -> hyapp.room.v1.RoomSnapshot
	0,   // 142: hyapp.room.v1.SetMicSeatLockRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	1,   // 143: hyapp.room.v1.SetMicSeatLockResponse.result:type_name -> hyapp.room.v1.CommandResult
	54,  // 144: hyapp.room.v1.SetMicSeatLockResponse.room:type_name -> hyapp.room.v1.RoomSnapshot
	0,   // 145: hyapp.room.v1.SetChatEnabledRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	1,   // 146: hyapp.room.v1.SetChatEnabledResponse.result:type_name -> hyapp.room.v1.CommandResult
	54,  // 147: hyapp.room.v1.SetChatEnabledResponse.room:type_name -> hyapp.room.v1.RoomSnapshot
	0,   // 148: hyapp.room.v1.SetRoomPasswordRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	1,   // 149: hyapp.room.v1.SetRoomPasswordResponse.result:type_name -> hyapp.room.v1.CommandResult
	54,  // 150: hyapp.room.v1.SetRoomPasswordResponse.room:type_name -> hyapp.room.v1.RoomSnapshot
	0,   // 151: hyapp.room.v1.SetRoomAdminRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	1,   // 152: hyapp.room.v1.SetRoomAdminResponse.result:type_name -> hyapp.room.v1.CommandResult
	54,  // 153: hyapp.room.v1.SetRoomAdminResponse.room:type_name -> hyapp.room.v1.RoomSnapshot
	0,   // 154: hyapp.room.v1.MuteUserRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	1,   // 155: hyapp.room.v1.MuteUserResponse.result:type_name -> hyapp.room.v1.CommandResult
	54,  // 156: hyapp.room.v1.MuteUserResponse.room:type_name -> hyapp.room.v1.RoomSnapshot
	0,   // 157: hyapp.room.v1.KickUserRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	1,   // 158: hyapp.room.v1.KickUserResponse.result:type_name -> hyapp.room.v1.CommandResult
	54,  // 159: hyapp.room.v1.KickUserResponse.room:type_name -> hyapp.room.v1.RoomSnapshot
	0,   // 160: hyapp.room.v1.UnbanUserRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	1,   // 161: hyapp.room.v1.UnbanUserResponse.result:type_name -> hyapp.room.v1.CommandResult
	54,  // 162: hyapp.room.v1.UnbanUserResponse.room:type_name -> hyapp.room.v1.RoomSnapshot
	0,   // 163: hyapp.room.v1.SystemEvictUserRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	1,   // 164: hyapp.room.v1.SystemEvictUserResponse.result:type_name -> hyapp.room.v1.CommandResult
	54,  // 165: hyapp.room.v1.SystemEvictUserResponse.room:type_name -> hyapp.room.v1.RoomSnapshot
	7,   // 166: hyapp.room.v1.SendGiftBatchTarget.lucky_gift:type_name -> hyapp.room.v1.LuckyGiftDrawResult
	132, // 167: hyapp.room.v1.SendGiftBatchDisplay.targets:type_name -> hyapp.room.v1.SendGiftBatchTarget
	0,   // 168: hyapp.room.v1.SendGiftRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	130, // 169: hyapp.room.v1.SendGiftRequest.target_host_scopes:type_name -> hyapp.room.v1.SendGiftTargetHostScope
	131, // 170: hyapp.room.v1.SendGiftRequest.sender_display_profile:type_name -> hyapp.room.v1.SendGiftDisplayProfile
	131, // 171: hyapp.room.v1.SendGiftRequest.target_display_profiles:type_name -> hyapp.room.v1.SendGiftDisplayProfile
	1,   // 172: hyapp.room.v1.SendGiftResponse.result:type_name -> hyapp.room.v1.CommandResult
	5,   // 173: hyapp.room.v1.SendGiftResponse.gift_rank:type_name -> hyapp.room.v1.RankItem
	54,  // 174: hyapp.room.v1.SendGiftResponse.room:type_name -> hyapp.room.v1.RoomSnapshot
	13,  // 175: hyapp.room.v1.SendGiftResponse.rocket:type_name -> hyapp.room.v1.RoomRocketState
	7,   // 176: hyapp.room.v1.SendGiftResponse.lucky_gift:type_name -> hyapp.room.v1.LuckyGiftDrawResult
	7,   // 177: hyapp.room.v1.SendGiftResponse.lucky_gifts:type_name -> hyapp.room.v1.LuckyGiftDrawResult
	133, // 178: hyapp.room.v1.SendGiftResponse.batch_display:type_name -> hyapp.room.v1.SendGiftBatchDisplay
	177, // 179: hyapp.room.v1.SendGiftResponse.v2:type_name -> hyapp.room.v1.SendGiftResultV2
	0,   // 180: hyapp.room.v1.ListRoomsRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	0,   // 181: hyapp.room.v1.ListRoomsByOwnersRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	0,   // 182: hyapp.room.v1.ListRoomFeedsRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	146, // 183: hyapp.room.v1.ListRoomFeedsRequest.related_users:type_name -> hyapp.room.v1.RoomFeedRelatedUser
	0,   // 184: hyapp.room.v1.ListRoomGiftLeaderboardRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	63,  // 185: hyapp.room.v1.RoomListItem.room_border:type_name -> hyapp.room.v1.RoomDecorationResource
	63,  // 186: hyapp.room.v1.RoomListItem.room_name_style:type_name -> hyapp.room.v1.RoomDecorationResource
	147, // 187: hyapp.room.v1.ListRoomsResponse.rooms:type_name -> hyapp.room.v1.RoomListItem
	147, // 188: hyapp.room.v1.RoomGiftLeaderboardItem.room:type_name -> hyapp.room.v1.RoomListItem
	149, // 189: hyapp.room.v1.ListRoomGiftLeaderboardResponse.items:type_name -> hyapp.room.v1.RoomGiftLeaderboardItem
	0,   // 190: hyapp.room.v1.ListRoomContributionRankRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	6,   // 191: hyapp.room.v1.ListRoomContributionRankResponse.items:type_name -> hyapp.room.v1.RoomContributionRankItem
	0,   // 192: hyapp.room.v1.GetMyRoomRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	147, // 193: hyapp.room.v1.GetMyRoomResponse.room:type_name -> hyapp.room.v1.RoomListItem
	0,   // 194: hyapp.room.v1.GetCurrentRoomRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	0,   // 195: hyapp.room.v1.BatchGetUserVoiceRoomPresencesRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	158, // 196: hyapp.room.v1.UserVoiceRoomPresence.room:type_name -> hyapp.room.v1.UserVoiceRoomPresenceRoom
	159, // 197: hyapp.room.v1.BatchGetUserVoiceRoomPresencesResponse.items:type_name -> hyapp.room.v1.UserVoiceRoomPresence
	0,   // 198: hyapp.room.v1.GetRoomSnapshotRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	54,  // 199: hyapp.room.v1.GetRoomSnapshotResponse.room:type_name -> hyapp.room.v1.RoomSnapshot
	0,   // 200: hyapp.room.v1.GetRoomRocketRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	14,  // 201: hyapp.room.v1.GetRoomRocketResponse.rocket:type_name -> hyapp.room.v1.RoomRocketInfo
	0,   // 202: hyapp.room.v1.ApplyRoomRPSGiftRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	1,   // 203: hyapp.room.v1.ApplyRoomRPSGiftResponse.result:type_name -> hyapp.room.v1.CommandResult
	13,  // 204: hyapp.room.v1.ApplyRoomRPSGiftResponse.rocket:type_name -> hyapp.room.v1.RoomRocketState
	0,   // 205: hyapp.room.v1.ListRoomOnlineUsersRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	2,   // 206: hyapp.room.v1.ListRoomOnlineUsersResponse.users:type_name -> hyapp.room.v1.RoomUser
	3,   // 207: hyapp.room.v1.ListRoomOnlineUsersResponse.items:type_name -> hyapp.room.v1.RoomOnlineUser
	0,   // 208: hyapp.room.v1.ListRoomBannedUsersRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	169, // 209: hyapp.room.v1.ListRoomBannedUsersResponse.items:type_name -> hyapp.room.v1.RoomBannedUser
	0,   // 210: hyapp.room.v1.FollowRoomRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	0,   // 211: hyapp.room.v1.UnfollowRoomRequest.meta:type_name -> hyapp.room.v1.RequestMeta
	7,   // 212: hyapp.room.v1.SendGiftResultV2.lucky_gift:type_name -> hyapp.room.v1.LuckyGiftDrawResult
	7,   // 213: hyapp.room.v1.SendGiftResultV2.lucky_gifts:type_name -> hyapp.room.v1.LuckyGiftDrawResult
	176, // 214: hyapp.room.v1.SendGiftResultV2.lucky_hits:type_name -> hyapp.room.v1.SendGiftLuckyHit
	133, // 215: hyapp.room.v1.SendGiftResultV2.batch_display:type_name -> hyapp.room.v1.SendGiftBatchDisplay
	5,   // 216: hyapp.room.v1.SendGiftResultV2.gift_rank:type_name -> hyapp.room.v1.RankItem
	72,  // 217: hyapp.room.v1.RoomCommandService.CreateRoom:input_type -> hyapp.room.v1.CreateRoomRequest
	74,  // 218: hyapp.room.v1.RoomCommandService.UpdateRoomProfile:input_type -> hyapp.room.v1.UpdateRoomProfileRequest
	57,  // 219: hyapp.room.v1.RoomCommandService.SaveRoomBackground:input_type -> hyapp.room.v1.SaveRoomBackgroundRequest
	61,  // 220: hyapp.room.v1.RoomCommandService.SetRoomBackground:input_type -> hyapp.room.v1.SetRoomBackgroundRequest
	64,  // 221: hyapp.room.v1.RoomCommandService.ApplyRoomDecoration:input_type -> hyapp.room.v1.ApplyRoomDecorationRequest
	70,  // 222: hyapp.room.v1.RoomCommandService.SendRoomImage:input_type -> hyapp.room.v1.SendRoomImageRequest
	78,  // 223: hyapp.room.v1.RoomCommandService.JoinRoom:input_type -> hyapp.room.v1.JoinRoomRequest
	81,  // 224: hyapp.room.v1.RoomCommandService.RoomHeartbeat:input_type -> hyapp.room.v1.RoomHeartbeatRequest
	83,  // 225: hyapp.room.v1.RoomCommandService.LeaveRoom:input_type -> hyapp.room.v1.LeaveRoomRequest
	85,  // 226: hyapp.room.v1.RoomCommandService.CloseRoom:input_type -> hyapp.room.v1.CloseRoomRequest
	92,  // 227: hyapp.room.v1.RoomCommandService.AdminUpdateRoom:input_type -> hyapp.room.v1.AdminUpdateRoomRequest
	94,  // 228: hyapp.room.v1.RoomCommandService.AdminBanRoom:input_type -> hyapp.room.v1.AdminBanRoomRequest
	96,  // 229: hyapp.room.v1.RoomCommandService.AdminUnbanRoom:input_type -> hyapp.room.v1.AdminUnbanRoomRequest
	98,  // 230: hyapp.room.v1.RoomCommandService.AdminDeleteRoom:input_type -> hyapp.room.v1.AdminDeleteRoomRequest
	19,  // 231: hyapp.room.v1.RoomCommandService.AdminUpdateRoomRocketConfig:input_type -> hyapp.room.v1.AdminUpdateRoomRocketConfigRequest
	24,  // 232: hyapp.room.v1.RoomCommandService.AdminUpdateRoomSeatConfig:input_type -> hyapp.room.v1.AdminUpdateRoomSeatConfigRequest
	31,  // 233: hyapp.room.v1.RoomCommandService.AdminUpdateHumanRoomRobotConfig:input_type -> hyapp.room.v1.AdminUpdateHumanRoomRobotConfigRequest
	37,  // 234: hyapp.room.v1.RoomCommandService.AdminCreateRoomPin:input_type -> hyapp.room.v1.AdminCreateRoomPinRequest
	39,  // 235: hyapp.room.v1.RoomCommandService.AdminCancelRoomPin:input_type -> hyapp.room.v1.AdminCancelRoomPinRequest
	45,  // 236: hyapp.room.v1.RoomCommandService.AdminCreateRobotRoom:input_type -> hyapp.room.v1.AdminCreateRobotRoomRequest
	47,  // 237: hyapp.room.v1.RoomCommandService.AdminSetRobotRoomStatus:input_type -> hyapp.room.v1.AdminSetRobotRoomStatusRequest
	49,  // 238: hyapp.room.v1.RoomCommandService.AdminRenameOwnerCountryCode:input_type -> hyapp.room.v1.AdminRenameOwnerCountryCodeRequest
	100, // 239: hyapp.room.v1.RoomCommandService.MicUp:input_type -> hyapp.room.v1.MicUpRequest
	102, // 240: hyapp.room.v1.RoomCommandService.MicDown:input_type -> hyapp.room.v1.MicDownRequest
	104, // 241: hyapp.room.v1.RoomCommandService.ChangeMicSeat:input_type -> hyapp.room.v1.ChangeMicSeatRequest
	106, // 242: hyapp.room.v1.RoomCommandService.ConfirmMicPublishing:input_type -> hyapp.room.v1.ConfirmMicPublishingRequest
	108, // 243: hyapp.room.v1.RoomCommandService.MicHeartbeat:input_type -> hyapp.room.v1.MicHeartbeatRequest
	110, // 244: hyapp.room.v1.RoomCommandService.SetMicMute:input_type -> hyapp.room.v1.SetMicMuteRequest
	112, // 245: hyapp.room.v1.RoomCommandService.ApplyRTCEvent:input_type -> hyapp.room.v1.ApplyRTCEventRequest
	114, // 246: hyapp.room.v1.RoomCommandService.SetMicSeatLock:input_type -> hyapp.room.v1.SetMicSeatLockRequest
	116, // 247: hyapp.room.v1.RoomCommandService.SetChatEnabled:input_type -> hyapp.room.v1.SetChatEnabledRequest
	118, // 248: hyapp.room.v1.RoomCommandService.SetRoomPassword:input_type -> hyapp.room.v1.SetRoomPasswordRequest
	120, // 249: hyapp.room.v1.RoomCommandService.SetRoomAdmin:input_type -> hyapp.room.v1.SetRoomAdminRequest
	122, // 250: hyapp.room.v1.RoomCommandService.MuteUser:input_type -> hyapp.room.v1.MuteUserRequest
	124, // 251: hyapp.room.v1.RoomCommandService.KickUser:input_type -> hyapp.room.v1.KickUserRequest
	126, // 252: hyapp.room.v1.RoomCommandService.UnbanUser:input_type -> hyapp.room.v1.UnbanUserRequest
	128, // 253: hyapp.room.v1.RoomCommandService.SystemEvictUser:input_type -> hyapp.room.v1.SystemEvictUserRequest
	134, // 254: hyapp.room.v1.RoomCommandService.SendGift:input_type -> hyapp.room.v1.SendGiftRequest
	165, // 255: hyapp.room.v1.RoomCommandService.ApplyRoomRPSGift:input_type -> hyapp.room.v1.ApplyRoomRPSGiftRequest
	172, // 256: hyapp.room.v1.RoomCommandService.FollowRoom:input_type -> hyapp.room.v1.FollowRoomRequest
	174, // 257: hyapp.room.v1.RoomCommandService.UnfollowRoom:input_type -> hyapp.room.v1.UnfollowRoomRequest
	136, // 258: hyapp.room.v1.RoomGuardService.CheckSpeakPermission:input_type -> hyapp.room.v1.CheckSpeakPermissionRequest
	138, // 259: hyapp.room.v1.RoomGuardService.VerifyRoomPresence:input_type -> hyapp.room.v1.VerifyRoomPresenceRequest
	140, // 260: hyapp.room.v1.RoomGuardService.ResolveRoomAppCode:input_type -> hyapp.room.v1.ResolveRoomAppCodeRequest
	66,  // 261: hyapp.room.v1.RoomGuardService.AuthorizeRoomMediaUpload:input_type -> hyapp.room.v1.AuthorizeRoomMediaUploadRequest
	68,  // 262: hyapp.room.v1.RoomGuardService.CompleteRoomMediaUpload:input_type -> hyapp.room.v1.CompleteRoomMediaUploadRequest
	88,  // 263: hyapp.room.v1.RoomQueryService.AdminListRooms:input_type -> hyapp.room.v1.AdminListRoomsRequest
	90,  // 264: hyapp.room.v1.RoomQueryService.AdminGetRoom:input_type -> hyapp.room.v1.AdminGetRoomRequest
	17,  // 265: hyapp.room.v1.RoomQueryService.AdminGetRoomRocketConfig:input_type -> hyapp.room.v1.AdminGetRoomRocketConfigRequest
	22,  // 266: hyapp.room.v1.RoomQueryService.AdminGetRoomSeatConfig:input_type -> hyapp.room.v1.AdminGetRoomSeatConfigRequest
	29,  // 267: hyapp.room.v1.RoomQueryService.AdminGetHumanRoomRobotConfig:input_type -> hyapp.room.v1.AdminGetHumanRoomRobotConfigRequest
	35,  // 268: hyapp.room.v1.RoomQueryService.AdminListRoomPins:input_type -> hyapp.room.v1.AdminListRoomPinsRequest
	43,  // 269: hyapp.room.v1.RoomQueryService.AdminListRobotRooms:input_type -> hyapp.room.v1.AdminListRobotRoomsRequest
	51,  // 270: hyapp.room.v1.RoomQueryService.AdminFilterAvailableRoomRobots:input_type -> hyapp.room.v1.AdminFilterAvailableRoomRobotsRequest
	142, // 271: hyapp.room.v1.RoomQueryService.ListRooms:input_type -> hyapp.room.v1.ListRoomsRequest
	143, // 272: hyapp.room.v1.RoomQueryService.ListRoomsByOwners:input_type -> hyapp.room.v1.ListRoomsByOwnersRequest
	144, // 273: hyapp.room.v1.RoomQueryService.ListRoomFeeds:input_type -> hyapp.room.v1.ListRoomFeedsRequest
	145, // 274: hyapp.room.v1.RoomQueryService.ListRoomGiftLeaderboard:input_type -> hyapp.room.v1.ListRoomGiftLeaderboardRequest
	151, // 275: hyapp.room.v1.RoomQueryService.ListRoomContributionRank:input_type -> hyapp.room.v1.ListRoomContributionRankRequest
	153, // 276: hyapp.room.v1.RoomQueryService.GetMyRoom:input_type -> hyapp.room.v1.GetMyRoomRequest
	155, // 277: hyapp.room.v1.RoomQueryService.GetCurrentRoom:input_type -> hyapp.room.v1.GetCurrentRoomRequest
	157, // 278: hyapp.room.v1.RoomQueryService.BatchGetUserVoiceRoomPresences:input_type -> hyapp.room.v1.BatchGetUserVoiceRoomPresencesRequest
	161, // 279: hyapp.room.v1.RoomQueryService.GetRoomSnapshot:input_type -> hyapp.room.v1.GetRoomSnapshotRequest
	59,  // 280: hyapp.room.v1.RoomQueryService.ListRoomBackgrounds:input_type -> hyapp.room.v1.ListRoomBackgroundsRequest
	163, // 281: hyapp.room.v1.RoomQueryService.GetRoomRocket:input_type -> hyapp.room.v1.GetRoomRocketRequest
	167, // 282: hyapp.room.v1.RoomQueryService.ListRoomOnlineUsers:input_type -> hyapp.room.v1.ListRoomOnlineUsersRequest
	170, // 283: hyapp.room.v1.RoomQueryService.ListRoomBannedUsers:input_type -> hyapp.room.v1.ListRoomBannedUsersRequest
	73,  // 284: hyapp.room.v1.RoomCommandService.CreateRoom:output_type -> hyapp.room.v1.CreateRoomResponse
	75,  // 285: hyapp.room.v1.RoomCommandService.UpdateRoomProfile:output_type -> hyapp.room.v1.UpdateRoomProfileResponse
	58,  // 286: hyapp.room.v1.RoomCommandService.SaveRoomBackground:output_type -> hyapp.room.v1.SaveRoomBackgroundResponse
	62,  // 287: hyapp.room.v1.RoomCommandService.SetRoomBackground:output_type -> hyapp.room.v1.SetRoomBackgroundResponse
	65,  // 288: hyapp.room.v1.RoomCommandService.ApplyRoomDecoration:output_type -> hyapp.room.v1.ApplyRoomDecorationResponse
	71,  // 289: hyapp.room.v1.RoomCommandService.SendRoomImage:output_type -> hyapp.room.v1.SendRoomImageResponse
	80,  // 290: hyapp.room.v1.RoomCommandService.JoinRoom:output_type -> hyapp.room.v1.JoinRoomResponse
	82,  // 291: hyapp.room.v1.RoomCommandService.RoomHeartbeat:output_type -> hyapp.room.v1.RoomHeartbeatResponse
	84,  // 292: hyapp.room.v1.RoomCommandService.LeaveRoom:output_type -> hyapp.room.v1.LeaveRoomResponse
	86,  // 293: hyapp.room.v1.RoomCommandService.CloseRoom:output_type -> hyapp.room.v1.CloseRoomResponse
	93,  // 294: hyapp.room.v1.RoomCommandService.AdminUpdateRoom:output_type -> hyapp.room.v1.AdminUpdateRoomResponse
	95,  // 295: hyapp.room.v1.RoomCommandService.AdminBanRoom:output_type -> hyapp.room.v1.AdminBanRoomResponse
	97,  // 296: hyapp.room.v1.RoomCommandService.AdminUnbanRoom:output_type -> hyapp.room.v1.AdminUnbanRoomResponse
	99,  // 297: hyapp.room.v1.RoomCommandService.AdminDeleteRoom:output_type -> hyapp.room.v1.AdminDeleteRoomResponse
	20,  // 298: hyapp.room.v1.RoomCommandService.AdminUpdateRoomRocketConfig:output_type -> hyapp.room.v1.AdminUpdateRoomRocketConfigResponse
	25,  // 299: hyapp.room.v1.RoomCommandService.AdminUpdateRoomSeatConfig:output_type -> hyapp.room.v1.AdminUpdateRoomSeatConfigResponse
	32,  // 300: hyapp.room.v1.RoomCommandService.AdminUpdateHumanRoomRobotConfig:output_type -> hyapp.room.v1.AdminUpdateHumanRoomRobotConfigResponse
	38,  // 301: hyapp.room.v1.RoomCommandService.AdminCreateRoomPin:output_type -> hyapp.room.v1.AdminCreateRoomPinResponse
	40,  // 302: hyapp.room.v1.RoomCommandService.AdminCancelRoomPin:output_type -> hyapp.room.v1.AdminCancelRoomPinResponse
	46,  // 303: hyapp.room.v1.RoomCommandService.AdminCreateRobotRoom:output_type -> hyapp.room.v1.AdminCreateRobotRoomResponse
	48,  // 304: hyapp.room.v1.RoomCommandService.AdminSetRobotRoomStatus:output_type -> hyapp.room.v1.AdminSetRobotRoomStatusResponse
	50,  // 305: hyapp.room.v1.RoomCommandService.AdminRenameOwnerCountryCode:output_type -> hyapp.room.v1.AdminRenameOwnerCountryCodeResponse
	101, // 306: hyapp.room.v1.RoomCommandService.MicUp:output_type -> hyapp.room.v1.MicUpResponse
	103, // 307: hyapp.room.v1.RoomCommandService.MicDown:output_type -> hyapp.room.v1.MicDownResponse
	105, // 308: hyapp.room.v1.RoomCommandService.ChangeMicSeat:output_type -> hyapp.room.v1.ChangeMicSeatResponse
	107, // 309: hyapp.room.v1.RoomCommandService.ConfirmMicPublishing:output_type -> hyapp.room.v1.ConfirmMicPublishingResponse
	109, // 310: hyapp.room.v1.RoomCommandService.MicHeartbeat:output_type -> hyapp.room.v1.MicHeartbeatResponse
	111, // 311: hyapp.room.v1.RoomCommandService.SetMicMute:output_type -> hyapp.room.v1.SetMicMuteResponse
	113, // 312: hyapp.room.v1.RoomCommandService.ApplyRTCEvent:output_type -> hyapp.room.v1.ApplyRTCEventResponse
	115, // 313: hyapp.room.v1.RoomCommandService.SetMicSeatLock:output_type -> hyapp.room.v1.SetMicSeatLockResponse
	117, // 314: hyapp.room.v1.RoomCommandService.SetChatEnabled:output_type -> hyapp.room.v1.SetChatEnabledResponse
	119, // 315: hyapp.room.v1.RoomCommandService.SetRoomPassword:output_type -> hyapp.room.v1.SetRoomPasswordResponse
	121, // 316: hyapp.room.v1.RoomCommandService.SetRoomAdmin:output_type -> hyapp.room.v1.SetRoomAdminResponse
	123, // 317: hyapp.room.v1.RoomCommandService.MuteUser:output_type -> hyapp.room.v1.MuteUserResponse
	125, // 318: hyapp.room.v1.RoomCommandService.KickUser:output_type -> hyapp.room.v1.KickUserResponse
	127, // 319: hyapp.room.v1.RoomCommandService.UnbanUser:output_type -> hyapp.room.v1.UnbanUserResponse
	129, // 320: hyapp.room.v1.RoomCommandService.SystemEvictUser:output_type -> hyapp.room.v1.SystemEvictUserResponse
	135, // 321: hyapp.room.v1.RoomCommandService.SendGift:output_type -> hyapp.room.v1.SendGiftResponse
	166, // 322: hyapp.room.v1.RoomCommandService.ApplyRoomRPSGift:output_type -> hyapp.room.v1.ApplyRoomRPSGiftResponse
	173, // 323: hyapp.room.v1.RoomCommandService.FollowRoom:output_type -> hyapp.room.v1.FollowRoomResponse
	175, // 324: hyapp.room.v1.RoomCommandService.UnfollowRoom:output_type -> hyapp.room.v1.UnfollowRoomResponse
	137, // 325: hyapp.room.v1.RoomGuardService.CheckSpeakPermission:output_type -> hyapp.room.v1.CheckSpeakPermissionResponse
	139, // 326: hyapp.room.v1.RoomGuardService.VerifyRoomPresence:output_type -> hyapp.room.v1.VerifyRoomPresenceResponse
	141, // 327: hyapp.room.v1.RoomGuardService.ResolveRoomAppCode:output_type -> hyapp.room.v1.ResolveRoomAppCodeResponse
	67,  // 328: hyapp.room.v1.RoomGuardService.AuthorizeRoomMediaUpload:output_type -> hyapp.room.v1.AuthorizeRoomMediaUploadResponse
	69,  // 329: hyapp.room.v1.RoomGuardService.CompleteRoomMediaUpload:output_type -> hyapp.room.v1.CompleteRoomMediaUploadResponse
	89,  // 330: hyapp.room.v1.RoomQueryService.AdminListRooms:output_type -> hyapp.room.v1.AdminListRoomsResponse
	91,  // 331: hyapp.room.v1.RoomQueryService.AdminGetRoom:output_type -> hyapp.room.v1.AdminGetRoomResponse
	18,  // 332: hyapp.room.v1.RoomQueryService.AdminGetRoomRocketConfig:output_type -> hyapp.room.v1.AdminGetRoomRocketConfigResponse
	23,  // 333: hyapp.room.v1.RoomQueryService.AdminGetRoomSeatConfig:output_type -> hyapp.room.v1.AdminGetRoomSeatConfigResponse
	30,  // 334: hyapp.room.v1.RoomQueryService.AdminGetHumanRoomRobotConfig:output_type -> hyapp.room.v1.AdminGetHumanRoomRobotConfigResponse
	36,  // 335: hyapp.room.v1.RoomQueryService.AdminListRoomPins:output_type -> hyapp.room.v1.AdminListRoomPinsResponse
	44,  // 336: hyapp.room.v1.RoomQueryService.AdminListRobotRooms:output_type -> hyapp.room.v1.AdminListRobotRoomsResponse
	52,  // 337: hyapp.room.v1.RoomQueryService.AdminFilterAvailableRoomRobots:output_type -> hyapp.room.v1.AdminFilterAvailableRoomRobotsResponse
	148, // 338: hyapp.room.v1.RoomQueryService.ListRooms:output_type -> hyapp.room.v1.ListRoomsResponse
	148, // 339: hyapp.room.v1.RoomQueryService.ListRoomsByOwners:output_type -> hyapp.room.v1.ListRoomsResponse
	148, // 340: hyapp.room.v1.RoomQueryService.ListRoomFeeds:output_type -> hyapp.room.v1.ListRoomsResponse
	150, // 341: hyapp.room.v1.RoomQueryService.ListRoomGiftLeaderboard:output_type -> hyapp.room.v1.ListRoomGiftLeaderboardResponse
	152, // 342: hyapp.room.v1.RoomQueryService.ListRoomContributionRank:output_type -> hyapp.room.v1.ListRoomContributionRankResponse
	154, // 343: hyapp.room.v1.RoomQueryService.GetMyRoom:output_type -> hyapp.room.v1.GetMyRoomResponse
	156, // 344: hyapp.room.v1.RoomQueryService.GetCurrentRoom:output_type -> hyapp.room.v1.GetCurrentRoomResponse
	160, // 345: hyapp.room.v1.RoomQueryService.BatchGetUserVoiceRoomPresences:output_type -> hyapp.room.v1.BatchGetUserVoiceRoomPresencesResponse
	162, // 346: hyapp.room.v1.RoomQueryService.GetRoomSnapshot:output_type -> hyapp.room.v1.GetRoomSnapshotResponse
	60,  // 347: hyapp.room.v1.RoomQueryService.ListRoomBackgrounds:output_type -> hyapp.room.v1.ListRoomBackgroundsResponse
	164, // 348: hyapp.room.v1.RoomQueryService.GetRoomRocket:output_type -> hyapp.room.v1.GetRoomRocketResponse
	168, // 349: hyapp.room.v1.RoomQueryService.ListRoomOnlineUsers:output_type -> hyapp.room.v1.ListRoomOnlineUsersResponse
	171, // 350: hyapp.room.v1.RoomQueryService.ListRoomBannedUsers:output_type -> hyapp.room.v1.ListRoomBannedUsersResponse
	284, // [284:351] is the sub-list for method output_type
	217, // [217:284] is the sub-list for method input_type
	217, // [217:217] is the sub-list for extension type_name
	217, // [217:217] is the sub-list for extension extendee
	0,   // [0:217] is the sub-list for field type_name
}

func init() { file_proto_room_v1_room_proto_init() }
func file_proto_room_v1_room_proto_init() {
	if File_proto_room_v1_room_proto != nil {
		return
	}
	file_proto_room_v1_room_proto_msgTypes[74].OneofWrappers = []any{}
	file_proto_room_v1_room_proto_msgTypes[92].OneofWrappers = []any{}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_proto_room_v1_room_proto_rawDesc), len(file_proto_room_v1_room_proto_rawDesc)),
			NumEnums:      0,
			NumMessages:   179,
			NumExtensions: 0,
			NumServices:   3,
		},
		GoTypes:           file_proto_room_v1_room_proto_goTypes,
		DependencyIndexes: file_proto_room_v1_room_proto_depIdxs,
		MessageInfos:      file_proto_room_v1_room_proto_msgTypes,
	}.Build()
	File_proto_room_v1_room_proto = out.File
	file_proto_room_v1_room_proto_goTypes = nil
	file_proto_room_v1_room_proto_depIdxs = nil
}
