// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.10
// 	protoc        v6.33.1
// source: api/proto/message_router.proto

package router

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

// RouteMessageRequest routes an MPC message
type RouteMessageRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	SessionId     string                 `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"`
	FromParty     string                 `protobuf:"bytes,2,opt,name=from_party,json=fromParty,proto3" json:"from_party,omitempty"`
	ToParties     []string               `protobuf:"bytes,3,rep,name=to_parties,json=toParties,proto3" json:"to_parties,omitempty"` // Empty for broadcast
	RoundNumber   int32                  `protobuf:"varint,4,opt,name=round_number,json=roundNumber,proto3" json:"round_number,omitempty"`
	MessageType   string                 `protobuf:"bytes,5,opt,name=message_type,json=messageType,proto3" json:"message_type,omitempty"`
	Payload       []byte                 `protobuf:"bytes,6,opt,name=payload,proto3" json:"payload,omitempty"` // Encrypted MPC message
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*RouteMessageRequest) ProtoMessage() {}

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

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

func (x *RouteMessageRequest) GetFromParty() string {
	if x != nil {
		return x.FromParty
	}
	return ""
}

func (x *RouteMessageRequest) GetToParties() []string {
	if x != nil {
		return x.ToParties
	}
	return nil
}

func (x *RouteMessageRequest) GetRoundNumber() int32 {
	if x != nil {
		return x.RoundNumber
	}
	return 0
}

func (x *RouteMessageRequest) GetMessageType() string {
	if x != nil {
		return x.MessageType
	}
	return ""
}

func (x *RouteMessageRequest) GetPayload() []byte {
	if x != nil {
		return x.Payload
	}
	return nil
}

// RouteMessageResponse confirms message routing
type RouteMessageResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Success       bool                   `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
	MessageId     string                 `protobuf:"bytes,2,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*RouteMessageResponse) ProtoMessage() {}

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

func (x *RouteMessageResponse) GetSuccess() bool {
	if x != nil {
		return x.Success
	}
	return false
}

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

// SubscribeMessagesRequest subscribes to messages for a party
type SubscribeMessagesRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	SessionId     string                 `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"`
	PartyId       string                 `protobuf:"bytes,2,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*SubscribeMessagesRequest) ProtoMessage() {}

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

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

func (x *SubscribeMessagesRequest) GetPartyId() string {
	if x != nil {
		return x.PartyId
	}
	return ""
}

// MPCMessage represents an MPC protocol message
type MPCMessage struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	MessageId     string                 `protobuf:"bytes,1,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"`
	SessionId     string                 `protobuf:"bytes,2,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"`
	FromParty     string                 `protobuf:"bytes,3,opt,name=from_party,json=fromParty,proto3" json:"from_party,omitempty"`
	IsBroadcast   bool                   `protobuf:"varint,4,opt,name=is_broadcast,json=isBroadcast,proto3" json:"is_broadcast,omitempty"`
	RoundNumber   int32                  `protobuf:"varint,5,opt,name=round_number,json=roundNumber,proto3" json:"round_number,omitempty"`
	MessageType   string                 `protobuf:"bytes,6,opt,name=message_type,json=messageType,proto3" json:"message_type,omitempty"`
	Payload       []byte                 `protobuf:"bytes,7,opt,name=payload,proto3" json:"payload,omitempty"`
	CreatedAt     int64                  `protobuf:"varint,8,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` // Unix timestamp milliseconds
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*MPCMessage) ProtoMessage() {}

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

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

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

func (x *MPCMessage) GetFromParty() string {
	if x != nil {
		return x.FromParty
	}
	return ""
}

func (x *MPCMessage) GetIsBroadcast() bool {
	if x != nil {
		return x.IsBroadcast
	}
	return false
}

func (x *MPCMessage) GetRoundNumber() int32 {
	if x != nil {
		return x.RoundNumber
	}
	return 0
}

func (x *MPCMessage) GetMessageType() string {
	if x != nil {
		return x.MessageType
	}
	return ""
}

func (x *MPCMessage) GetPayload() []byte {
	if x != nil {
		return x.Payload
	}
	return nil
}

func (x *MPCMessage) GetCreatedAt() int64 {
	if x != nil {
		return x.CreatedAt
	}
	return 0
}

// GetPendingMessagesRequest retrieves pending messages
type GetPendingMessagesRequest struct {
	state          protoimpl.MessageState `protogen:"open.v1"`
	SessionId      string                 `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"`
	PartyId        string                 `protobuf:"bytes,2,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"`
	AfterTimestamp int64                  `protobuf:"varint,3,opt,name=after_timestamp,json=afterTimestamp,proto3" json:"after_timestamp,omitempty"` // Get messages after this timestamp
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

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

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

func (*GetPendingMessagesRequest) ProtoMessage() {}

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

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

func (x *GetPendingMessagesRequest) GetPartyId() string {
	if x != nil {
		return x.PartyId
	}
	return ""
}

func (x *GetPendingMessagesRequest) GetAfterTimestamp() int64 {
	if x != nil {
		return x.AfterTimestamp
	}
	return 0
}

// GetPendingMessagesResponse contains pending messages
type GetPendingMessagesResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Messages      []*MPCMessage          `protobuf:"bytes,1,rep,name=messages,proto3" json:"messages,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*GetPendingMessagesResponse) ProtoMessage() {}

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

func (x *GetPendingMessagesResponse) GetMessages() []*MPCMessage {
	if x != nil {
		return x.Messages
	}
	return nil
}

// NotificationChannel represents a notification channel for offline parties
// If a party has notification channels, it operates in offline mode (24h async)
// If no notification channels, it operates in real-time mode (Message Router push)
type NotificationChannel struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Email         string                 `protobuf:"bytes,1,opt,name=email,proto3" json:"email,omitempty"`                          // Optional: email address for notifications
	Phone         string                 `protobuf:"bytes,2,opt,name=phone,proto3" json:"phone,omitempty"`                          // Optional: phone number for SMS notifications
	PushToken     string                 `protobuf:"bytes,3,opt,name=push_token,json=pushToken,proto3" json:"push_token,omitempty"` // Optional: push notification token (FCM/APNs)
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*NotificationChannel) ProtoMessage() {}

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

func (x *NotificationChannel) GetEmail() string {
	if x != nil {
		return x.Email
	}
	return ""
}

func (x *NotificationChannel) GetPhone() string {
	if x != nil {
		return x.Phone
	}
	return ""
}

func (x *NotificationChannel) GetPushToken() string {
	if x != nil {
		return x.PushToken
	}
	return ""
}

// RegisterPartyRequest registers a party with the router
type RegisterPartyRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	PartyId       string                 `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"`       // Unique party identifier
	PartyRole     string                 `protobuf:"bytes,2,opt,name=party_role,json=partyRole,proto3" json:"party_role,omitempty"` // persistent, delegate, or temporary
	Version       string                 `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"`                      // Party software version
	Notification  *NotificationChannel   `protobuf:"bytes,4,opt,name=notification,proto3" json:"notification,omitempty"`            // Optional: notification channel for offline mode
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*RegisterPartyRequest) ProtoMessage() {}

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

func (x *RegisterPartyRequest) GetPartyId() string {
	if x != nil {
		return x.PartyId
	}
	return ""
}

func (x *RegisterPartyRequest) GetPartyRole() string {
	if x != nil {
		return x.PartyRole
	}
	return ""
}

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

func (x *RegisterPartyRequest) GetNotification() *NotificationChannel {
	if x != nil {
		return x.Notification
	}
	return nil
}

// RegisterPartyResponse confirms party registration
type RegisterPartyResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Success       bool                   `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
	Message       string                 `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
	RegisteredAt  int64                  `protobuf:"varint,3,opt,name=registered_at,json=registeredAt,proto3" json:"registered_at,omitempty"` // Unix timestamp milliseconds
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*RegisterPartyResponse) ProtoMessage() {}

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

func (x *RegisterPartyResponse) GetSuccess() bool {
	if x != nil {
		return x.Success
	}
	return false
}

func (x *RegisterPartyResponse) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

func (x *RegisterPartyResponse) GetRegisteredAt() int64 {
	if x != nil {
		return x.RegisteredAt
	}
	return 0
}

// SubscribeSessionEventsRequest subscribes to session events
type SubscribeSessionEventsRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	PartyId       string                 `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"`          // Party ID subscribing to events
	EventTypes    []string               `protobuf:"bytes,2,rep,name=event_types,json=eventTypes,proto3" json:"event_types,omitempty"` // Event types to subscribe (empty = all)
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*SubscribeSessionEventsRequest) ProtoMessage() {}

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

func (x *SubscribeSessionEventsRequest) GetPartyId() string {
	if x != nil {
		return x.PartyId
	}
	return ""
}

func (x *SubscribeSessionEventsRequest) GetEventTypes() []string {
	if x != nil {
		return x.EventTypes
	}
	return nil
}

// SessionEvent represents a session lifecycle event
type SessionEvent struct {
	state           protoimpl.MessageState `protogen:"open.v1"`
	EventId         string                 `protobuf:"bytes,1,opt,name=event_id,json=eventId,proto3" json:"event_id,omitempty"`
	EventType       string                 `protobuf:"bytes,2,opt,name=event_type,json=eventType,proto3" json:"event_type,omitempty"` // session_created, session_started, etc.
	SessionId       string                 `protobuf:"bytes,3,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"`
	ThresholdN      int32                  `protobuf:"varint,4,opt,name=threshold_n,json=thresholdN,proto3" json:"threshold_n,omitempty"`
	ThresholdT      int32                  `protobuf:"varint,5,opt,name=threshold_t,json=thresholdT,proto3" json:"threshold_t,omitempty"`
	SelectedParties []string               `protobuf:"bytes,6,rep,name=selected_parties,json=selectedParties,proto3" json:"selected_parties,omitempty"`                                                            // PartyIDs selected for this session
	JoinTokens      map[string]string      `protobuf:"bytes,7,rep,name=join_tokens,json=joinTokens,proto3" json:"join_tokens,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // PartyID -> JoinToken mapping
	MessageHash     []byte                 `protobuf:"bytes,8,opt,name=message_hash,json=messageHash,proto3" json:"message_hash,omitempty"`                                                                        // For sign sessions
	CreatedAt       int64                  `protobuf:"varint,9,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`                                                                             // Unix timestamp milliseconds
	ExpiresAt       int64                  `protobuf:"varint,10,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"`                                                                            // Unix timestamp milliseconds
	// For sign sessions with delegate party: user's share for delegate to use
	DelegateUserShare *DelegateUserShare `protobuf:"bytes,11,opt,name=delegate_user_share,json=delegateUserShare,proto3" json:"delegate_user_share,omitempty"`
	// For session_started event: complete list of participants with their indices
	// CRITICAL: Use this for TSS protocol instead of JoinSession response
	Participants  []*PartyInfo `protobuf:"bytes,12,rep,name=participants,proto3" json:"participants,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*SessionEvent) ProtoMessage() {}

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

func (x *SessionEvent) GetEventId() string {
	if x != nil {
		return x.EventId
	}
	return ""
}

func (x *SessionEvent) GetEventType() string {
	if x != nil {
		return x.EventType
	}
	return ""
}

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

func (x *SessionEvent) GetThresholdN() int32 {
	if x != nil {
		return x.ThresholdN
	}
	return 0
}

func (x *SessionEvent) GetThresholdT() int32 {
	if x != nil {
		return x.ThresholdT
	}
	return 0
}

func (x *SessionEvent) GetSelectedParties() []string {
	if x != nil {
		return x.SelectedParties
	}
	return nil
}

func (x *SessionEvent) GetJoinTokens() map[string]string {
	if x != nil {
		return x.JoinTokens
	}
	return nil
}

func (x *SessionEvent) GetMessageHash() []byte {
	if x != nil {
		return x.MessageHash
	}
	return nil
}

func (x *SessionEvent) GetCreatedAt() int64 {
	if x != nil {
		return x.CreatedAt
	}
	return 0
}

func (x *SessionEvent) GetExpiresAt() int64 {
	if x != nil {
		return x.ExpiresAt
	}
	return 0
}

func (x *SessionEvent) GetDelegateUserShare() *DelegateUserShare {
	if x != nil {
		return x.DelegateUserShare
	}
	return nil
}

func (x *SessionEvent) GetParticipants() []*PartyInfo {
	if x != nil {
		return x.Participants
	}
	return nil
}

// DelegateUserShare contains user's share for delegate party to use in signing
type DelegateUserShare struct {
	state           protoimpl.MessageState `protogen:"open.v1"`
	DelegatePartyId string                 `protobuf:"bytes,1,opt,name=delegate_party_id,json=delegatePartyId,proto3" json:"delegate_party_id,omitempty"` // The delegate party that will use this share
	EncryptedShare  []byte                 `protobuf:"bytes,2,opt,name=encrypted_share,json=encryptedShare,proto3" json:"encrypted_share,omitempty"`      // User's encrypted share
	PartyIndex      int32                  `protobuf:"varint,3,opt,name=party_index,json=partyIndex,proto3" json:"party_index,omitempty"`                 // Party index for this share
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

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

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

func (*DelegateUserShare) ProtoMessage() {}

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

func (x *DelegateUserShare) GetDelegatePartyId() string {
	if x != nil {
		return x.DelegatePartyId
	}
	return ""
}

func (x *DelegateUserShare) GetEncryptedShare() []byte {
	if x != nil {
		return x.EncryptedShare
	}
	return nil
}

func (x *DelegateUserShare) GetPartyIndex() int32 {
	if x != nil {
		return x.PartyIndex
	}
	return 0
}

// PublishSessionEventRequest publishes a session event
type PublishSessionEventRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Event         *SessionEvent          `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*PublishSessionEventRequest) ProtoMessage() {}

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

func (x *PublishSessionEventRequest) GetEvent() *SessionEvent {
	if x != nil {
		return x.Event
	}
	return nil
}

// PublishSessionEventResponse confirms event publication
type PublishSessionEventResponse struct {
	state           protoimpl.MessageState `protogen:"open.v1"`
	Success         bool                   `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
	SubscriberCount int32                  `protobuf:"varint,2,opt,name=subscriber_count,json=subscriberCount,proto3" json:"subscriber_count,omitempty"` // Number of parties that received the event
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

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

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

func (*PublishSessionEventResponse) ProtoMessage() {}

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

func (x *PublishSessionEventResponse) GetSuccess() bool {
	if x != nil {
		return x.Success
	}
	return false
}

func (x *PublishSessionEventResponse) GetSubscriberCount() int32 {
	if x != nil {
		return x.SubscriberCount
	}
	return 0
}

// GetRegisteredPartiesRequest requests registered parties list
type GetRegisteredPartiesRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	RoleFilter    string                 `protobuf:"bytes,1,opt,name=role_filter,json=roleFilter,proto3" json:"role_filter,omitempty"`  // Optional: filter by role (persistent, delegate, temporary)
	OnlyOnline    bool                   `protobuf:"varint,2,opt,name=only_online,json=onlyOnline,proto3" json:"only_online,omitempty"` // Optional: only return online parties
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*GetRegisteredPartiesRequest) ProtoMessage() {}

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

func (x *GetRegisteredPartiesRequest) GetRoleFilter() string {
	if x != nil {
		return x.RoleFilter
	}
	return ""
}

func (x *GetRegisteredPartiesRequest) GetOnlyOnline() bool {
	if x != nil {
		return x.OnlyOnline
	}
	return false
}

// RegisteredParty represents a registered party
type RegisteredParty struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	PartyId       string                 `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"`                 // Unique party identifier
	Role          string                 `protobuf:"bytes,2,opt,name=role,proto3" json:"role,omitempty"`                                      // persistent, delegate, or temporary
	Online        bool                   `protobuf:"varint,3,opt,name=online,proto3" json:"online,omitempty"`                                 // Whether party is currently connected
	RegisteredAt  int64                  `protobuf:"varint,4,opt,name=registered_at,json=registeredAt,proto3" json:"registered_at,omitempty"` // Unix timestamp milliseconds
	LastSeenAt    int64                  `protobuf:"varint,5,opt,name=last_seen_at,json=lastSeenAt,proto3" json:"last_seen_at,omitempty"`     // Unix timestamp milliseconds
	Notification  *NotificationChannel   `protobuf:"bytes,6,opt,name=notification,proto3" json:"notification,omitempty"`                      // Optional: notification channel (if set, party is offline mode)
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*RegisteredParty) ProtoMessage() {}

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

func (x *RegisteredParty) GetPartyId() string {
	if x != nil {
		return x.PartyId
	}
	return ""
}

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

func (x *RegisteredParty) GetOnline() bool {
	if x != nil {
		return x.Online
	}
	return false
}

func (x *RegisteredParty) GetRegisteredAt() int64 {
	if x != nil {
		return x.RegisteredAt
	}
	return 0
}

func (x *RegisteredParty) GetLastSeenAt() int64 {
	if x != nil {
		return x.LastSeenAt
	}
	return 0
}

func (x *RegisteredParty) GetNotification() *NotificationChannel {
	if x != nil {
		return x.Notification
	}
	return nil
}

// GetRegisteredPartiesResponse returns registered parties
type GetRegisteredPartiesResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Parties       []*RegisteredParty     `protobuf:"bytes,1,rep,name=parties,proto3" json:"parties,omitempty"`
	TotalCount    int32                  `protobuf:"varint,2,opt,name=total_count,json=totalCount,proto3" json:"total_count,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*GetRegisteredPartiesResponse) ProtoMessage() {}

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

func (x *GetRegisteredPartiesResponse) GetParties() []*RegisteredParty {
	if x != nil {
		return x.Parties
	}
	return nil
}

func (x *GetRegisteredPartiesResponse) GetTotalCount() int32 {
	if x != nil {
		return x.TotalCount
	}
	return 0
}

// AcknowledgeMessageRequest acknowledges message receipt
type AcknowledgeMessageRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	MessageId     string                 `protobuf:"bytes,1,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"`          // ID of the message being acknowledged
	PartyId       string                 `protobuf:"bytes,2,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"`                // ID of the party acknowledging
	SessionId     string                 `protobuf:"bytes,3,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"`          // Session the message belongs to
	Success       bool                   `protobuf:"varint,4,opt,name=success,proto3" json:"success,omitempty"`                              // True if message was processed successfully
	ErrorMessage  string                 `protobuf:"bytes,5,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"` // Error message if processing failed
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*AcknowledgeMessageRequest) ProtoMessage() {}

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

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

func (x *AcknowledgeMessageRequest) GetPartyId() string {
	if x != nil {
		return x.PartyId
	}
	return ""
}

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

func (x *AcknowledgeMessageRequest) GetSuccess() bool {
	if x != nil {
		return x.Success
	}
	return false
}

func (x *AcknowledgeMessageRequest) GetErrorMessage() string {
	if x != nil {
		return x.ErrorMessage
	}
	return ""
}

// AcknowledgeMessageResponse confirms acknowledgment
type AcknowledgeMessageResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Success       bool                   `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
	Message       string                 `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*AcknowledgeMessageResponse) ProtoMessage() {}

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

func (x *AcknowledgeMessageResponse) GetSuccess() bool {
	if x != nil {
		return x.Success
	}
	return false
}

func (x *AcknowledgeMessageResponse) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

// GetMessageStatusRequest requests message delivery status
type GetMessageStatusRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	MessageId     string                 `protobuf:"bytes,1,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"`
	SessionId     string                 `protobuf:"bytes,2,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*GetMessageStatusRequest) ProtoMessage() {}

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

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

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

// MessageDeliveryStatus represents delivery status to a single party
type MessageDeliveryStatus struct {
	state          protoimpl.MessageState `protogen:"open.v1"`
	PartyId        string                 `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"`
	Status         string                 `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"`                                        // pending, delivered, acknowledged, failed
	DeliveredAt    int64                  `protobuf:"varint,3,opt,name=delivered_at,json=deliveredAt,proto3" json:"delivered_at,omitempty"`          // Unix timestamp milliseconds
	AcknowledgedAt int64                  `protobuf:"varint,4,opt,name=acknowledged_at,json=acknowledgedAt,proto3" json:"acknowledged_at,omitempty"` // Unix timestamp milliseconds
	RetryCount     int32                  `protobuf:"varint,5,opt,name=retry_count,json=retryCount,proto3" json:"retry_count,omitempty"`             // Number of delivery retries
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

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

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

func (*MessageDeliveryStatus) ProtoMessage() {}

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

func (x *MessageDeliveryStatus) GetPartyId() string {
	if x != nil {
		return x.PartyId
	}
	return ""
}

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

func (x *MessageDeliveryStatus) GetDeliveredAt() int64 {
	if x != nil {
		return x.DeliveredAt
	}
	return 0
}

func (x *MessageDeliveryStatus) GetAcknowledgedAt() int64 {
	if x != nil {
		return x.AcknowledgedAt
	}
	return 0
}

func (x *MessageDeliveryStatus) GetRetryCount() int32 {
	if x != nil {
		return x.RetryCount
	}
	return 0
}

// GetMessageStatusResponse returns message delivery status
type GetMessageStatusResponse struct {
	state           protoimpl.MessageState   `protogen:"open.v1"`
	MessageId       string                   `protobuf:"bytes,1,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"`
	SessionId       string                   `protobuf:"bytes,2,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"`
	Deliveries      []*MessageDeliveryStatus `protobuf:"bytes,3,rep,name=deliveries,proto3" json:"deliveries,omitempty"`
	AllAcknowledged bool                     `protobuf:"varint,4,opt,name=all_acknowledged,json=allAcknowledged,proto3" json:"all_acknowledged,omitempty"` // True if all recipients acknowledged
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

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

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

func (*GetMessageStatusResponse) ProtoMessage() {}

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

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

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

func (x *GetMessageStatusResponse) GetDeliveries() []*MessageDeliveryStatus {
	if x != nil {
		return x.Deliveries
	}
	return nil
}

func (x *GetMessageStatusResponse) GetAllAcknowledged() bool {
	if x != nil {
		return x.AllAcknowledged
	}
	return false
}

// HeartbeatRequest sends a heartbeat to keep the party alive
type HeartbeatRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	PartyId       string                 `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"`
	Timestamp     int64                  `protobuf:"varint,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Unix timestamp milliseconds
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*HeartbeatRequest) ProtoMessage() {}

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

func (x *HeartbeatRequest) GetPartyId() string {
	if x != nil {
		return x.PartyId
	}
	return ""
}

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

// HeartbeatResponse confirms heartbeat receipt
type HeartbeatResponse struct {
	state           protoimpl.MessageState `protogen:"open.v1"`
	Success         bool                   `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
	ServerTimestamp int64                  `protobuf:"varint,2,opt,name=server_timestamp,json=serverTimestamp,proto3" json:"server_timestamp,omitempty"` // Server timestamp for clock sync
	PendingMessages int32                  `protobuf:"varint,3,opt,name=pending_messages,json=pendingMessages,proto3" json:"pending_messages,omitempty"` // Number of pending messages for this party
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

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

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

func (*HeartbeatResponse) ProtoMessage() {}

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

func (x *HeartbeatResponse) GetSuccess() bool {
	if x != nil {
		return x.Success
	}
	return false
}

func (x *HeartbeatResponse) GetServerTimestamp() int64 {
	if x != nil {
		return x.ServerTimestamp
	}
	return 0
}

func (x *HeartbeatResponse) GetPendingMessages() int32 {
	if x != nil {
		return x.PendingMessages
	}
	return 0
}

// DeviceInfo contains device information
type DeviceInfo struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	DeviceType    string                 `protobuf:"bytes,1,opt,name=device_type,json=deviceType,proto3" json:"device_type,omitempty"` // server, mobile, web
	DeviceId      string                 `protobuf:"bytes,2,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
	Platform      string                 `protobuf:"bytes,3,opt,name=platform,proto3" json:"platform,omitempty"`
	AppVersion    string                 `protobuf:"bytes,4,opt,name=app_version,json=appVersion,proto3" json:"app_version,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*DeviceInfo) ProtoMessage() {}

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

func (x *DeviceInfo) GetDeviceType() string {
	if x != nil {
		return x.DeviceType
	}
	return ""
}

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

func (x *DeviceInfo) GetPlatform() string {
	if x != nil {
		return x.Platform
	}
	return ""
}

func (x *DeviceInfo) GetAppVersion() string {
	if x != nil {
		return x.AppVersion
	}
	return ""
}

// PartyInfo contains party information
type PartyInfo struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	PartyId       string                 `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"`
	PartyIndex    int32                  `protobuf:"varint,2,opt,name=party_index,json=partyIndex,proto3" json:"party_index,omitempty"`
	DeviceInfo    *DeviceInfo            `protobuf:"bytes,3,opt,name=device_info,json=deviceInfo,proto3" json:"device_info,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*PartyInfo) ProtoMessage() {}

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

func (x *PartyInfo) GetPartyId() string {
	if x != nil {
		return x.PartyId
	}
	return ""
}

func (x *PartyInfo) GetPartyIndex() int32 {
	if x != nil {
		return x.PartyIndex
	}
	return 0
}

func (x *PartyInfo) GetDeviceInfo() *DeviceInfo {
	if x != nil {
		return x.DeviceInfo
	}
	return nil
}

// SessionInfo contains session information
type SessionInfo struct {
	state           protoimpl.MessageState `protogen:"open.v1"`
	SessionId       string                 `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"`
	SessionType     string                 `protobuf:"bytes,2,opt,name=session_type,json=sessionType,proto3" json:"session_type,omitempty"` // keygen, sign
	ThresholdN      int32                  `protobuf:"varint,3,opt,name=threshold_n,json=thresholdN,proto3" json:"threshold_n,omitempty"`
	ThresholdT      int32                  `protobuf:"varint,4,opt,name=threshold_t,json=thresholdT,proto3" json:"threshold_t,omitempty"`
	MessageHash     []byte                 `protobuf:"bytes,5,opt,name=message_hash,json=messageHash,proto3" json:"message_hash,omitempty"` // For sign sessions
	Status          string                 `protobuf:"bytes,6,opt,name=status,proto3" json:"status,omitempty"`
	KeygenSessionId string                 `protobuf:"bytes,7,opt,name=keygen_session_id,json=keygenSessionId,proto3" json:"keygen_session_id,omitempty"` // For sign sessions: which keygen session's shares to use
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

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

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

func (*SessionInfo) ProtoMessage() {}

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

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

func (x *SessionInfo) GetSessionType() string {
	if x != nil {
		return x.SessionType
	}
	return ""
}

func (x *SessionInfo) GetThresholdN() int32 {
	if x != nil {
		return x.ThresholdN
	}
	return 0
}

func (x *SessionInfo) GetThresholdT() int32 {
	if x != nil {
		return x.ThresholdT
	}
	return 0
}

func (x *SessionInfo) GetMessageHash() []byte {
	if x != nil {
		return x.MessageHash
	}
	return nil
}

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

func (x *SessionInfo) GetKeygenSessionId() string {
	if x != nil {
		return x.KeygenSessionId
	}
	return ""
}

// JoinSessionRequest joins a session
type JoinSessionRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	SessionId     string                 `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"`
	PartyId       string                 `protobuf:"bytes,2,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"`
	JoinToken     string                 `protobuf:"bytes,3,opt,name=join_token,json=joinToken,proto3" json:"join_token,omitempty"`
	DeviceInfo    *DeviceInfo            `protobuf:"bytes,4,opt,name=device_info,json=deviceInfo,proto3" json:"device_info,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*JoinSessionRequest) ProtoMessage() {}

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

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

func (x *JoinSessionRequest) GetPartyId() string {
	if x != nil {
		return x.PartyId
	}
	return ""
}

func (x *JoinSessionRequest) GetJoinToken() string {
	if x != nil {
		return x.JoinToken
	}
	return ""
}

func (x *JoinSessionRequest) GetDeviceInfo() *DeviceInfo {
	if x != nil {
		return x.DeviceInfo
	}
	return nil
}

// JoinSessionResponse returns session info after joining
type JoinSessionResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Success       bool                   `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
	SessionInfo   *SessionInfo           `protobuf:"bytes,2,opt,name=session_info,json=sessionInfo,proto3" json:"session_info,omitempty"`
	OtherParties  []*PartyInfo           `protobuf:"bytes,3,rep,name=other_parties,json=otherParties,proto3" json:"other_parties,omitempty"` // All participants in the session
	PartyIndex    int32                  `protobuf:"varint,4,opt,name=party_index,json=partyIndex,proto3" json:"party_index,omitempty"`      // This party's index
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*JoinSessionResponse) ProtoMessage() {}

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

func (x *JoinSessionResponse) GetSuccess() bool {
	if x != nil {
		return x.Success
	}
	return false
}

func (x *JoinSessionResponse) GetSessionInfo() *SessionInfo {
	if x != nil {
		return x.SessionInfo
	}
	return nil
}

func (x *JoinSessionResponse) GetOtherParties() []*PartyInfo {
	if x != nil {
		return x.OtherParties
	}
	return nil
}

func (x *JoinSessionResponse) GetPartyIndex() int32 {
	if x != nil {
		return x.PartyIndex
	}
	return 0
}

// MarkPartyReadyRequest marks a party as ready
type MarkPartyReadyRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	SessionId     string                 `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"`
	PartyId       string                 `protobuf:"bytes,2,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*MarkPartyReadyRequest) ProtoMessage() {}

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

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

func (x *MarkPartyReadyRequest) GetPartyId() string {
	if x != nil {
		return x.PartyId
	}
	return ""
}

// MarkPartyReadyResponse confirms ready status
type MarkPartyReadyResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Success       bool                   `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
	AllReady      bool                   `protobuf:"varint,2,opt,name=all_ready,json=allReady,proto3" json:"all_ready,omitempty"` // True if all parties are ready
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*MarkPartyReadyResponse) ProtoMessage() {}

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

func (x *MarkPartyReadyResponse) GetSuccess() bool {
	if x != nil {
		return x.Success
	}
	return false
}

func (x *MarkPartyReadyResponse) GetAllReady() bool {
	if x != nil {
		return x.AllReady
	}
	return false
}

// ReportCompletionRequest reports protocol completion
type ReportCompletionRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	SessionId     string                 `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"`
	PartyId       string                 `protobuf:"bytes,2,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"`
	PublicKey     []byte                 `protobuf:"bytes,3,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` // For keygen: resulting public key
	Signature     []byte                 `protobuf:"bytes,4,opt,name=signature,proto3" json:"signature,omitempty"`                  // For signing: resulting signature
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ReportCompletionRequest) ProtoMessage() {}

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

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

func (x *ReportCompletionRequest) GetPartyId() string {
	if x != nil {
		return x.PartyId
	}
	return ""
}

func (x *ReportCompletionRequest) GetPublicKey() []byte {
	if x != nil {
		return x.PublicKey
	}
	return nil
}

func (x *ReportCompletionRequest) GetSignature() []byte {
	if x != nil {
		return x.Signature
	}
	return nil
}

// ReportCompletionResponse confirms completion report
type ReportCompletionResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Success       bool                   `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
	AllCompleted  bool                   `protobuf:"varint,2,opt,name=all_completed,json=allCompleted,proto3" json:"all_completed,omitempty"` // True if all parties completed
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ReportCompletionResponse) ProtoMessage() {}

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

func (x *ReportCompletionResponse) GetSuccess() bool {
	if x != nil {
		return x.Success
	}
	return false
}

func (x *ReportCompletionResponse) GetAllCompleted() bool {
	if x != nil {
		return x.AllCompleted
	}
	return false
}

// GetSessionStatusRequest requests session status
type GetSessionStatusRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	SessionId     string                 `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*GetSessionStatusRequest) ProtoMessage() {}

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

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

// GetSessionStatusResponse returns session status
type GetSessionStatusResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	SessionId     string                 `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"`
	Status        string                 `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` // created, in_progress, completed, failed, expired
	ThresholdN    int32                  `protobuf:"varint,3,opt,name=threshold_n,json=thresholdN,proto3" json:"threshold_n,omitempty"`
	ThresholdT    int32                  `protobuf:"varint,4,opt,name=threshold_t,json=thresholdT,proto3" json:"threshold_t,omitempty"`
	Participants  []*PartyInfo           `protobuf:"bytes,5,rep,name=participants,proto3" json:"participants,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*GetSessionStatusResponse) ProtoMessage() {}

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

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

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

func (x *GetSessionStatusResponse) GetThresholdN() int32 {
	if x != nil {
		return x.ThresholdN
	}
	return 0
}

func (x *GetSessionStatusResponse) GetThresholdT() int32 {
	if x != nil {
		return x.ThresholdT
	}
	return 0
}

func (x *GetSessionStatusResponse) GetParticipants() []*PartyInfo {
	if x != nil {
		return x.Participants
	}
	return nil
}

// SubmitDelegateShareRequest submits user's share from delegate party
type SubmitDelegateShareRequest struct {
	state          protoimpl.MessageState `protogen:"open.v1"`
	SessionId      string                 `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"`
	PartyId        string                 `protobuf:"bytes,2,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"`
	EncryptedShare []byte                 `protobuf:"bytes,3,opt,name=encrypted_share,json=encryptedShare,proto3" json:"encrypted_share,omitempty"` // Encrypted share for user
	PublicKey      []byte                 `protobuf:"bytes,4,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"`                // Public key from keygen
	PartyIndex     int32                  `protobuf:"varint,5,opt,name=party_index,json=partyIndex,proto3" json:"party_index,omitempty"`            // Party's index in the session
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

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

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

func (*SubmitDelegateShareRequest) ProtoMessage() {}

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

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

func (x *SubmitDelegateShareRequest) GetPartyId() string {
	if x != nil {
		return x.PartyId
	}
	return ""
}

func (x *SubmitDelegateShareRequest) GetEncryptedShare() []byte {
	if x != nil {
		return x.EncryptedShare
	}
	return nil
}

func (x *SubmitDelegateShareRequest) GetPublicKey() []byte {
	if x != nil {
		return x.PublicKey
	}
	return nil
}

func (x *SubmitDelegateShareRequest) GetPartyIndex() int32 {
	if x != nil {
		return x.PartyIndex
	}
	return 0
}

// SubmitDelegateShareResponse contains result of share submission
type SubmitDelegateShareResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Success       bool                   `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*SubmitDelegateShareResponse) ProtoMessage() {}

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

func (x *SubmitDelegateShareResponse) GetSuccess() bool {
	if x != nil {
		return x.Success
	}
	return false
}

var File_api_proto_message_router_proto protoreflect.FileDescriptor

const file_api_proto_message_router_proto_rawDesc = "" +
	"\n" +
	"\x1eapi/proto/message_router.proto\x12\rmpc.router.v1\"\xd2\x01\n" +
	"\x13RouteMessageRequest\x12\x1d\n" +
	"\n" +
	"session_id\x18\x01 \x01(\tR\tsessionId\x12\x1d\n" +
	"\n" +
	"from_party\x18\x02 \x01(\tR\tfromParty\x12\x1d\n" +
	"\n" +
	"to_parties\x18\x03 \x03(\tR\ttoParties\x12!\n" +
	"\fround_number\x18\x04 \x01(\x05R\vroundNumber\x12!\n" +
	"\fmessage_type\x18\x05 \x01(\tR\vmessageType\x12\x18\n" +
	"\apayload\x18\x06 \x01(\fR\apayload\"O\n" +
	"\x14RouteMessageResponse\x12\x18\n" +
	"\asuccess\x18\x01 \x01(\bR\asuccess\x12\x1d\n" +
	"\n" +
	"message_id\x18\x02 \x01(\tR\tmessageId\"T\n" +
	"\x18SubscribeMessagesRequest\x12\x1d\n" +
	"\n" +
	"session_id\x18\x01 \x01(\tR\tsessionId\x12\x19\n" +
	"\bparty_id\x18\x02 \x01(\tR\apartyId\"\x8b\x02\n" +
	"\n" +
	"MPCMessage\x12\x1d\n" +
	"\n" +
	"message_id\x18\x01 \x01(\tR\tmessageId\x12\x1d\n" +
	"\n" +
	"session_id\x18\x02 \x01(\tR\tsessionId\x12\x1d\n" +
	"\n" +
	"from_party\x18\x03 \x01(\tR\tfromParty\x12!\n" +
	"\fis_broadcast\x18\x04 \x01(\bR\visBroadcast\x12!\n" +
	"\fround_number\x18\x05 \x01(\x05R\vroundNumber\x12!\n" +
	"\fmessage_type\x18\x06 \x01(\tR\vmessageType\x12\x18\n" +
	"\apayload\x18\a \x01(\fR\apayload\x12\x1d\n" +
	"\n" +
	"created_at\x18\b \x01(\x03R\tcreatedAt\"~\n" +
	"\x19GetPendingMessagesRequest\x12\x1d\n" +
	"\n" +
	"session_id\x18\x01 \x01(\tR\tsessionId\x12\x19\n" +
	"\bparty_id\x18\x02 \x01(\tR\apartyId\x12'\n" +
	"\x0fafter_timestamp\x18\x03 \x01(\x03R\x0eafterTimestamp\"S\n" +
	"\x1aGetPendingMessagesResponse\x125\n" +
	"\bmessages\x18\x01 \x03(\v2\x19.mpc.router.v1.MPCMessageR\bmessages\"`\n" +
	"\x13NotificationChannel\x12\x14\n" +
	"\x05email\x18\x01 \x01(\tR\x05email\x12\x14\n" +
	"\x05phone\x18\x02 \x01(\tR\x05phone\x12\x1d\n" +
	"\n" +
	"push_token\x18\x03 \x01(\tR\tpushToken\"\xb2\x01\n" +
	"\x14RegisterPartyRequest\x12\x19\n" +
	"\bparty_id\x18\x01 \x01(\tR\apartyId\x12\x1d\n" +
	"\n" +
	"party_role\x18\x02 \x01(\tR\tpartyRole\x12\x18\n" +
	"\aversion\x18\x03 \x01(\tR\aversion\x12F\n" +
	"\fnotification\x18\x04 \x01(\v2\".mpc.router.v1.NotificationChannelR\fnotification\"p\n" +
	"\x15RegisterPartyResponse\x12\x18\n" +
	"\asuccess\x18\x01 \x01(\bR\asuccess\x12\x18\n" +
	"\amessage\x18\x02 \x01(\tR\amessage\x12#\n" +
	"\rregistered_at\x18\x03 \x01(\x03R\fregisteredAt\"[\n" +
	"\x1dSubscribeSessionEventsRequest\x12\x19\n" +
	"\bparty_id\x18\x01 \x01(\tR\apartyId\x12\x1f\n" +
	"\vevent_types\x18\x02 \x03(\tR\n" +
	"eventTypes\"\xd2\x04\n" +
	"\fSessionEvent\x12\x19\n" +
	"\bevent_id\x18\x01 \x01(\tR\aeventId\x12\x1d\n" +
	"\n" +
	"event_type\x18\x02 \x01(\tR\teventType\x12\x1d\n" +
	"\n" +
	"session_id\x18\x03 \x01(\tR\tsessionId\x12\x1f\n" +
	"\vthreshold_n\x18\x04 \x01(\x05R\n" +
	"thresholdN\x12\x1f\n" +
	"\vthreshold_t\x18\x05 \x01(\x05R\n" +
	"thresholdT\x12)\n" +
	"\x10selected_parties\x18\x06 \x03(\tR\x0fselectedParties\x12L\n" +
	"\vjoin_tokens\x18\a \x03(\v2+.mpc.router.v1.SessionEvent.JoinTokensEntryR\n" +
	"joinTokens\x12!\n" +
	"\fmessage_hash\x18\b \x01(\fR\vmessageHash\x12\x1d\n" +
	"\n" +
	"created_at\x18\t \x01(\x03R\tcreatedAt\x12\x1d\n" +
	"\n" +
	"expires_at\x18\n" +
	" \x01(\x03R\texpiresAt\x12P\n" +
	"\x13delegate_user_share\x18\v \x01(\v2 .mpc.router.v1.DelegateUserShareR\x11delegateUserShare\x12<\n" +
	"\fparticipants\x18\f \x03(\v2\x18.mpc.router.v1.PartyInfoR\fparticipants\x1a=\n" +
	"\x0fJoinTokensEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\x89\x01\n" +
	"\x11DelegateUserShare\x12*\n" +
	"\x11delegate_party_id\x18\x01 \x01(\tR\x0fdelegatePartyId\x12'\n" +
	"\x0fencrypted_share\x18\x02 \x01(\fR\x0eencryptedShare\x12\x1f\n" +
	"\vparty_index\x18\x03 \x01(\x05R\n" +
	"partyIndex\"O\n" +
	"\x1aPublishSessionEventRequest\x121\n" +
	"\x05event\x18\x01 \x01(\v2\x1b.mpc.router.v1.SessionEventR\x05event\"b\n" +
	"\x1bPublishSessionEventResponse\x12\x18\n" +
	"\asuccess\x18\x01 \x01(\bR\asuccess\x12)\n" +
	"\x10subscriber_count\x18\x02 \x01(\x05R\x0fsubscriberCount\"_\n" +
	"\x1bGetRegisteredPartiesRequest\x12\x1f\n" +
	"\vrole_filter\x18\x01 \x01(\tR\n" +
	"roleFilter\x12\x1f\n" +
	"\vonly_online\x18\x02 \x01(\bR\n" +
	"onlyOnline\"\xe7\x01\n" +
	"\x0fRegisteredParty\x12\x19\n" +
	"\bparty_id\x18\x01 \x01(\tR\apartyId\x12\x12\n" +
	"\x04role\x18\x02 \x01(\tR\x04role\x12\x16\n" +
	"\x06online\x18\x03 \x01(\bR\x06online\x12#\n" +
	"\rregistered_at\x18\x04 \x01(\x03R\fregisteredAt\x12 \n" +
	"\flast_seen_at\x18\x05 \x01(\x03R\n" +
	"lastSeenAt\x12F\n" +
	"\fnotification\x18\x06 \x01(\v2\".mpc.router.v1.NotificationChannelR\fnotification\"y\n" +
	"\x1cGetRegisteredPartiesResponse\x128\n" +
	"\aparties\x18\x01 \x03(\v2\x1e.mpc.router.v1.RegisteredPartyR\aparties\x12\x1f\n" +
	"\vtotal_count\x18\x02 \x01(\x05R\n" +
	"totalCount\"\xb3\x01\n" +
	"\x19AcknowledgeMessageRequest\x12\x1d\n" +
	"\n" +
	"message_id\x18\x01 \x01(\tR\tmessageId\x12\x19\n" +
	"\bparty_id\x18\x02 \x01(\tR\apartyId\x12\x1d\n" +
	"\n" +
	"session_id\x18\x03 \x01(\tR\tsessionId\x12\x18\n" +
	"\asuccess\x18\x04 \x01(\bR\asuccess\x12#\n" +
	"\rerror_message\x18\x05 \x01(\tR\ferrorMessage\"P\n" +
	"\x1aAcknowledgeMessageResponse\x12\x18\n" +
	"\asuccess\x18\x01 \x01(\bR\asuccess\x12\x18\n" +
	"\amessage\x18\x02 \x01(\tR\amessage\"W\n" +
	"\x17GetMessageStatusRequest\x12\x1d\n" +
	"\n" +
	"message_id\x18\x01 \x01(\tR\tmessageId\x12\x1d\n" +
	"\n" +
	"session_id\x18\x02 \x01(\tR\tsessionId\"\xb7\x01\n" +
	"\x15MessageDeliveryStatus\x12\x19\n" +
	"\bparty_id\x18\x01 \x01(\tR\apartyId\x12\x16\n" +
	"\x06status\x18\x02 \x01(\tR\x06status\x12!\n" +
	"\fdelivered_at\x18\x03 \x01(\x03R\vdeliveredAt\x12'\n" +
	"\x0facknowledged_at\x18\x04 \x01(\x03R\x0eacknowledgedAt\x12\x1f\n" +
	"\vretry_count\x18\x05 \x01(\x05R\n" +
	"retryCount\"\xc9\x01\n" +
	"\x18GetMessageStatusResponse\x12\x1d\n" +
	"\n" +
	"message_id\x18\x01 \x01(\tR\tmessageId\x12\x1d\n" +
	"\n" +
	"session_id\x18\x02 \x01(\tR\tsessionId\x12D\n" +
	"\n" +
	"deliveries\x18\x03 \x03(\v2$.mpc.router.v1.MessageDeliveryStatusR\n" +
	"deliveries\x12)\n" +
	"\x10all_acknowledged\x18\x04 \x01(\bR\x0fallAcknowledged\"K\n" +
	"\x10HeartbeatRequest\x12\x19\n" +
	"\bparty_id\x18\x01 \x01(\tR\apartyId\x12\x1c\n" +
	"\ttimestamp\x18\x02 \x01(\x03R\ttimestamp\"\x83\x01\n" +
	"\x11HeartbeatResponse\x12\x18\n" +
	"\asuccess\x18\x01 \x01(\bR\asuccess\x12)\n" +
	"\x10server_timestamp\x18\x02 \x01(\x03R\x0fserverTimestamp\x12)\n" +
	"\x10pending_messages\x18\x03 \x01(\x05R\x0fpendingMessages\"\x87\x01\n" +
	"\n" +
	"DeviceInfo\x12\x1f\n" +
	"\vdevice_type\x18\x01 \x01(\tR\n" +
	"deviceType\x12\x1b\n" +
	"\tdevice_id\x18\x02 \x01(\tR\bdeviceId\x12\x1a\n" +
	"\bplatform\x18\x03 \x01(\tR\bplatform\x12\x1f\n" +
	"\vapp_version\x18\x04 \x01(\tR\n" +
	"appVersion\"\x83\x01\n" +
	"\tPartyInfo\x12\x19\n" +
	"\bparty_id\x18\x01 \x01(\tR\apartyId\x12\x1f\n" +
	"\vparty_index\x18\x02 \x01(\x05R\n" +
	"partyIndex\x12:\n" +
	"\vdevice_info\x18\x03 \x01(\v2\x19.mpc.router.v1.DeviceInfoR\n" +
	"deviceInfo\"\xf8\x01\n" +
	"\vSessionInfo\x12\x1d\n" +
	"\n" +
	"session_id\x18\x01 \x01(\tR\tsessionId\x12!\n" +
	"\fsession_type\x18\x02 \x01(\tR\vsessionType\x12\x1f\n" +
	"\vthreshold_n\x18\x03 \x01(\x05R\n" +
	"thresholdN\x12\x1f\n" +
	"\vthreshold_t\x18\x04 \x01(\x05R\n" +
	"thresholdT\x12!\n" +
	"\fmessage_hash\x18\x05 \x01(\fR\vmessageHash\x12\x16\n" +
	"\x06status\x18\x06 \x01(\tR\x06status\x12*\n" +
	"\x11keygen_session_id\x18\a \x01(\tR\x0fkeygenSessionId\"\xa9\x01\n" +
	"\x12JoinSessionRequest\x12\x1d\n" +
	"\n" +
	"session_id\x18\x01 \x01(\tR\tsessionId\x12\x19\n" +
	"\bparty_id\x18\x02 \x01(\tR\apartyId\x12\x1d\n" +
	"\n" +
	"join_token\x18\x03 \x01(\tR\tjoinToken\x12:\n" +
	"\vdevice_info\x18\x04 \x01(\v2\x19.mpc.router.v1.DeviceInfoR\n" +
	"deviceInfo\"\xce\x01\n" +
	"\x13JoinSessionResponse\x12\x18\n" +
	"\asuccess\x18\x01 \x01(\bR\asuccess\x12=\n" +
	"\fsession_info\x18\x02 \x01(\v2\x1a.mpc.router.v1.SessionInfoR\vsessionInfo\x12=\n" +
	"\rother_parties\x18\x03 \x03(\v2\x18.mpc.router.v1.PartyInfoR\fotherParties\x12\x1f\n" +
	"\vparty_index\x18\x04 \x01(\x05R\n" +
	"partyIndex\"Q\n" +
	"\x15MarkPartyReadyRequest\x12\x1d\n" +
	"\n" +
	"session_id\x18\x01 \x01(\tR\tsessionId\x12\x19\n" +
	"\bparty_id\x18\x02 \x01(\tR\apartyId\"O\n" +
	"\x16MarkPartyReadyResponse\x12\x18\n" +
	"\asuccess\x18\x01 \x01(\bR\asuccess\x12\x1b\n" +
	"\tall_ready\x18\x02 \x01(\bR\ballReady\"\x90\x01\n" +
	"\x17ReportCompletionRequest\x12\x1d\n" +
	"\n" +
	"session_id\x18\x01 \x01(\tR\tsessionId\x12\x19\n" +
	"\bparty_id\x18\x02 \x01(\tR\apartyId\x12\x1d\n" +
	"\n" +
	"public_key\x18\x03 \x01(\fR\tpublicKey\x12\x1c\n" +
	"\tsignature\x18\x04 \x01(\fR\tsignature\"Y\n" +
	"\x18ReportCompletionResponse\x12\x18\n" +
	"\asuccess\x18\x01 \x01(\bR\asuccess\x12#\n" +
	"\rall_completed\x18\x02 \x01(\bR\fallCompleted\"8\n" +
	"\x17GetSessionStatusRequest\x12\x1d\n" +
	"\n" +
	"session_id\x18\x01 \x01(\tR\tsessionId\"\xd1\x01\n" +
	"\x18GetSessionStatusResponse\x12\x1d\n" +
	"\n" +
	"session_id\x18\x01 \x01(\tR\tsessionId\x12\x16\n" +
	"\x06status\x18\x02 \x01(\tR\x06status\x12\x1f\n" +
	"\vthreshold_n\x18\x03 \x01(\x05R\n" +
	"thresholdN\x12\x1f\n" +
	"\vthreshold_t\x18\x04 \x01(\x05R\n" +
	"thresholdT\x12<\n" +
	"\fparticipants\x18\x05 \x03(\v2\x18.mpc.router.v1.PartyInfoR\fparticipants\"\xbf\x01\n" +
	"\x1aSubmitDelegateShareRequest\x12\x1d\n" +
	"\n" +
	"session_id\x18\x01 \x01(\tR\tsessionId\x12\x19\n" +
	"\bparty_id\x18\x02 \x01(\tR\apartyId\x12'\n" +
	"\x0fencrypted_share\x18\x03 \x01(\fR\x0eencryptedShare\x12\x1d\n" +
	"\n" +
	"public_key\x18\x04 \x01(\fR\tpublicKey\x12\x1f\n" +
	"\vparty_index\x18\x05 \x01(\x05R\n" +
	"partyIndex\"7\n" +
	"\x1bSubmitDelegateShareResponse\x12\x18\n" +
	"\asuccess\x18\x01 \x01(\bR\asuccess2\xdd\v\n" +
	"\rMessageRouter\x12W\n" +
	"\fRouteMessage\x12\".mpc.router.v1.RouteMessageRequest\x1a#.mpc.router.v1.RouteMessageResponse\x12Y\n" +
	"\x11SubscribeMessages\x12'.mpc.router.v1.SubscribeMessagesRequest\x1a\x19.mpc.router.v1.MPCMessage0\x01\x12i\n" +
	"\x12GetPendingMessages\x12(.mpc.router.v1.GetPendingMessagesRequest\x1a).mpc.router.v1.GetPendingMessagesResponse\x12i\n" +
	"\x12AcknowledgeMessage\x12(.mpc.router.v1.AcknowledgeMessageRequest\x1a).mpc.router.v1.AcknowledgeMessageResponse\x12c\n" +
	"\x10GetMessageStatus\x12&.mpc.router.v1.GetMessageStatusRequest\x1a'.mpc.router.v1.GetMessageStatusResponse\x12Z\n" +
	"\rRegisterParty\x12#.mpc.router.v1.RegisterPartyRequest\x1a$.mpc.router.v1.RegisterPartyResponse\x12N\n" +
	"\tHeartbeat\x12\x1f.mpc.router.v1.HeartbeatRequest\x1a .mpc.router.v1.HeartbeatResponse\x12e\n" +
	"\x16SubscribeSessionEvents\x12,.mpc.router.v1.SubscribeSessionEventsRequest\x1a\x1b.mpc.router.v1.SessionEvent0\x01\x12l\n" +
	"\x13PublishSessionEvent\x12).mpc.router.v1.PublishSessionEventRequest\x1a*.mpc.router.v1.PublishSessionEventResponse\x12o\n" +
	"\x14GetRegisteredParties\x12*.mpc.router.v1.GetRegisteredPartiesRequest\x1a+.mpc.router.v1.GetRegisteredPartiesResponse\x12T\n" +
	"\vJoinSession\x12!.mpc.router.v1.JoinSessionRequest\x1a\".mpc.router.v1.JoinSessionResponse\x12]\n" +
	"\x0eMarkPartyReady\x12$.mpc.router.v1.MarkPartyReadyRequest\x1a%.mpc.router.v1.MarkPartyReadyResponse\x12c\n" +
	"\x10ReportCompletion\x12&.mpc.router.v1.ReportCompletionRequest\x1a'.mpc.router.v1.ReportCompletionResponse\x12c\n" +
	"\x10GetSessionStatus\x12&.mpc.router.v1.GetSessionStatusRequest\x1a'.mpc.router.v1.GetSessionStatusResponse\x12l\n" +
	"\x13SubmitDelegateShare\x12).mpc.router.v1.SubmitDelegateShareRequest\x1a*.mpc.router.v1.SubmitDelegateShareResponseB;Z9github.com/rwadurian/mpc-system/api/grpc/router/v1;routerb\x06proto3"

var (
	file_api_proto_message_router_proto_rawDescOnce sync.Once
	file_api_proto_message_router_proto_rawDescData []byte
)

func file_api_proto_message_router_proto_rawDescGZIP() []byte {
	file_api_proto_message_router_proto_rawDescOnce.Do(func() {
		file_api_proto_message_router_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_api_proto_message_router_proto_rawDesc), len(file_api_proto_message_router_proto_rawDesc)))
	})
	return file_api_proto_message_router_proto_rawDescData
}

var file_api_proto_message_router_proto_msgTypes = make([]protoimpl.MessageInfo, 38)
var file_api_proto_message_router_proto_goTypes = []any{
	(*RouteMessageRequest)(nil),           // 0: mpc.router.v1.RouteMessageRequest
	(*RouteMessageResponse)(nil),          // 1: mpc.router.v1.RouteMessageResponse
	(*SubscribeMessagesRequest)(nil),      // 2: mpc.router.v1.SubscribeMessagesRequest
	(*MPCMessage)(nil),                    // 3: mpc.router.v1.MPCMessage
	(*GetPendingMessagesRequest)(nil),     // 4: mpc.router.v1.GetPendingMessagesRequest
	(*GetPendingMessagesResponse)(nil),    // 5: mpc.router.v1.GetPendingMessagesResponse
	(*NotificationChannel)(nil),           // 6: mpc.router.v1.NotificationChannel
	(*RegisterPartyRequest)(nil),          // 7: mpc.router.v1.RegisterPartyRequest
	(*RegisterPartyResponse)(nil),         // 8: mpc.router.v1.RegisterPartyResponse
	(*SubscribeSessionEventsRequest)(nil), // 9: mpc.router.v1.SubscribeSessionEventsRequest
	(*SessionEvent)(nil),                  // 10: mpc.router.v1.SessionEvent
	(*DelegateUserShare)(nil),             // 11: mpc.router.v1.DelegateUserShare
	(*PublishSessionEventRequest)(nil),    // 12: mpc.router.v1.PublishSessionEventRequest
	(*PublishSessionEventResponse)(nil),   // 13: mpc.router.v1.PublishSessionEventResponse
	(*GetRegisteredPartiesRequest)(nil),   // 14: mpc.router.v1.GetRegisteredPartiesRequest
	(*RegisteredParty)(nil),               // 15: mpc.router.v1.RegisteredParty
	(*GetRegisteredPartiesResponse)(nil),  // 16: mpc.router.v1.GetRegisteredPartiesResponse
	(*AcknowledgeMessageRequest)(nil),     // 17: mpc.router.v1.AcknowledgeMessageRequest
	(*AcknowledgeMessageResponse)(nil),    // 18: mpc.router.v1.AcknowledgeMessageResponse
	(*GetMessageStatusRequest)(nil),       // 19: mpc.router.v1.GetMessageStatusRequest
	(*MessageDeliveryStatus)(nil),         // 20: mpc.router.v1.MessageDeliveryStatus
	(*GetMessageStatusResponse)(nil),      // 21: mpc.router.v1.GetMessageStatusResponse
	(*HeartbeatRequest)(nil),              // 22: mpc.router.v1.HeartbeatRequest
	(*HeartbeatResponse)(nil),             // 23: mpc.router.v1.HeartbeatResponse
	(*DeviceInfo)(nil),                    // 24: mpc.router.v1.DeviceInfo
	(*PartyInfo)(nil),                     // 25: mpc.router.v1.PartyInfo
	(*SessionInfo)(nil),                   // 26: mpc.router.v1.SessionInfo
	(*JoinSessionRequest)(nil),            // 27: mpc.router.v1.JoinSessionRequest
	(*JoinSessionResponse)(nil),           // 28: mpc.router.v1.JoinSessionResponse
	(*MarkPartyReadyRequest)(nil),         // 29: mpc.router.v1.MarkPartyReadyRequest
	(*MarkPartyReadyResponse)(nil),        // 30: mpc.router.v1.MarkPartyReadyResponse
	(*ReportCompletionRequest)(nil),       // 31: mpc.router.v1.ReportCompletionRequest
	(*ReportCompletionResponse)(nil),      // 32: mpc.router.v1.ReportCompletionResponse
	(*GetSessionStatusRequest)(nil),       // 33: mpc.router.v1.GetSessionStatusRequest
	(*GetSessionStatusResponse)(nil),      // 34: mpc.router.v1.GetSessionStatusResponse
	(*SubmitDelegateShareRequest)(nil),    // 35: mpc.router.v1.SubmitDelegateShareRequest
	(*SubmitDelegateShareResponse)(nil),   // 36: mpc.router.v1.SubmitDelegateShareResponse
	nil,                                   // 37: mpc.router.v1.SessionEvent.JoinTokensEntry
}
var file_api_proto_message_router_proto_depIdxs = []int32{
	3,  // 0: mpc.router.v1.GetPendingMessagesResponse.messages:type_name -> mpc.router.v1.MPCMessage
	6,  // 1: mpc.router.v1.RegisterPartyRequest.notification:type_name -> mpc.router.v1.NotificationChannel
	37, // 2: mpc.router.v1.SessionEvent.join_tokens:type_name -> mpc.router.v1.SessionEvent.JoinTokensEntry
	11, // 3: mpc.router.v1.SessionEvent.delegate_user_share:type_name -> mpc.router.v1.DelegateUserShare
	25, // 4: mpc.router.v1.SessionEvent.participants:type_name -> mpc.router.v1.PartyInfo
	10, // 5: mpc.router.v1.PublishSessionEventRequest.event:type_name -> mpc.router.v1.SessionEvent
	6,  // 6: mpc.router.v1.RegisteredParty.notification:type_name -> mpc.router.v1.NotificationChannel
	15, // 7: mpc.router.v1.GetRegisteredPartiesResponse.parties:type_name -> mpc.router.v1.RegisteredParty
	20, // 8: mpc.router.v1.GetMessageStatusResponse.deliveries:type_name -> mpc.router.v1.MessageDeliveryStatus
	24, // 9: mpc.router.v1.PartyInfo.device_info:type_name -> mpc.router.v1.DeviceInfo
	24, // 10: mpc.router.v1.JoinSessionRequest.device_info:type_name -> mpc.router.v1.DeviceInfo
	26, // 11: mpc.router.v1.JoinSessionResponse.session_info:type_name -> mpc.router.v1.SessionInfo
	25, // 12: mpc.router.v1.JoinSessionResponse.other_parties:type_name -> mpc.router.v1.PartyInfo
	25, // 13: mpc.router.v1.GetSessionStatusResponse.participants:type_name -> mpc.router.v1.PartyInfo
	0,  // 14: mpc.router.v1.MessageRouter.RouteMessage:input_type -> mpc.router.v1.RouteMessageRequest
	2,  // 15: mpc.router.v1.MessageRouter.SubscribeMessages:input_type -> mpc.router.v1.SubscribeMessagesRequest
	4,  // 16: mpc.router.v1.MessageRouter.GetPendingMessages:input_type -> mpc.router.v1.GetPendingMessagesRequest
	17, // 17: mpc.router.v1.MessageRouter.AcknowledgeMessage:input_type -> mpc.router.v1.AcknowledgeMessageRequest
	19, // 18: mpc.router.v1.MessageRouter.GetMessageStatus:input_type -> mpc.router.v1.GetMessageStatusRequest
	7,  // 19: mpc.router.v1.MessageRouter.RegisterParty:input_type -> mpc.router.v1.RegisterPartyRequest
	22, // 20: mpc.router.v1.MessageRouter.Heartbeat:input_type -> mpc.router.v1.HeartbeatRequest
	9,  // 21: mpc.router.v1.MessageRouter.SubscribeSessionEvents:input_type -> mpc.router.v1.SubscribeSessionEventsRequest
	12, // 22: mpc.router.v1.MessageRouter.PublishSessionEvent:input_type -> mpc.router.v1.PublishSessionEventRequest
	14, // 23: mpc.router.v1.MessageRouter.GetRegisteredParties:input_type -> mpc.router.v1.GetRegisteredPartiesRequest
	27, // 24: mpc.router.v1.MessageRouter.JoinSession:input_type -> mpc.router.v1.JoinSessionRequest
	29, // 25: mpc.router.v1.MessageRouter.MarkPartyReady:input_type -> mpc.router.v1.MarkPartyReadyRequest
	31, // 26: mpc.router.v1.MessageRouter.ReportCompletion:input_type -> mpc.router.v1.ReportCompletionRequest
	33, // 27: mpc.router.v1.MessageRouter.GetSessionStatus:input_type -> mpc.router.v1.GetSessionStatusRequest
	35, // 28: mpc.router.v1.MessageRouter.SubmitDelegateShare:input_type -> mpc.router.v1.SubmitDelegateShareRequest
	1,  // 29: mpc.router.v1.MessageRouter.RouteMessage:output_type -> mpc.router.v1.RouteMessageResponse
	3,  // 30: mpc.router.v1.MessageRouter.SubscribeMessages:output_type -> mpc.router.v1.MPCMessage
	5,  // 31: mpc.router.v1.MessageRouter.GetPendingMessages:output_type -> mpc.router.v1.GetPendingMessagesResponse
	18, // 32: mpc.router.v1.MessageRouter.AcknowledgeMessage:output_type -> mpc.router.v1.AcknowledgeMessageResponse
	21, // 33: mpc.router.v1.MessageRouter.GetMessageStatus:output_type -> mpc.router.v1.GetMessageStatusResponse
	8,  // 34: mpc.router.v1.MessageRouter.RegisterParty:output_type -> mpc.router.v1.RegisterPartyResponse
	23, // 35: mpc.router.v1.MessageRouter.Heartbeat:output_type -> mpc.router.v1.HeartbeatResponse
	10, // 36: mpc.router.v1.MessageRouter.SubscribeSessionEvents:output_type -> mpc.router.v1.SessionEvent
	13, // 37: mpc.router.v1.MessageRouter.PublishSessionEvent:output_type -> mpc.router.v1.PublishSessionEventResponse
	16, // 38: mpc.router.v1.MessageRouter.GetRegisteredParties:output_type -> mpc.router.v1.GetRegisteredPartiesResponse
	28, // 39: mpc.router.v1.MessageRouter.JoinSession:output_type -> mpc.router.v1.JoinSessionResponse
	30, // 40: mpc.router.v1.MessageRouter.MarkPartyReady:output_type -> mpc.router.v1.MarkPartyReadyResponse
	32, // 41: mpc.router.v1.MessageRouter.ReportCompletion:output_type -> mpc.router.v1.ReportCompletionResponse
	34, // 42: mpc.router.v1.MessageRouter.GetSessionStatus:output_type -> mpc.router.v1.GetSessionStatusResponse
	36, // 43: mpc.router.v1.MessageRouter.SubmitDelegateShare:output_type -> mpc.router.v1.SubmitDelegateShareResponse
	29, // [29:44] is the sub-list for method output_type
	14, // [14:29] is the sub-list for method input_type
	14, // [14:14] is the sub-list for extension type_name
	14, // [14:14] is the sub-list for extension extendee
	0,  // [0:14] is the sub-list for field type_name
}

func init() { file_api_proto_message_router_proto_init() }
func file_api_proto_message_router_proto_init() {
	if File_api_proto_message_router_proto != nil {
		return
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_api_proto_message_router_proto_rawDesc), len(file_api_proto_message_router_proto_rawDesc)),
			NumEnums:      0,
			NumMessages:   38,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_api_proto_message_router_proto_goTypes,
		DependencyIndexes: file_api_proto_message_router_proto_depIdxs,
		MessageInfos:      file_api_proto_message_router_proto_msgTypes,
	}.Build()
	File_api_proto_message_router_proto = out.File
	file_api_proto_message_router_proto_goTypes = nil
	file_api_proto_message_router_proto_depIdxs = nil
}
