diff --git a/generated/go/chat/v2/chat_service.pb.go b/generated/go/chat/v2/chat_service.pb.go index b0ec389..19890c6 100644 --- a/generated/go/chat/v2/chat_service.pb.go +++ b/generated/go/chat/v2/chat_service.pb.go @@ -28,21 +28,18 @@ type ChatType int32 const ( ChatType_UNKNOWN_CHAT_TYPE ChatType = 0 - ChatType_NOTIFICATION ChatType = 1 - ChatType_TWO_WAY ChatType = 2 // GROUP = 3; + ChatType_TWO_WAY ChatType = 1 // GROUP = 3; ) // Enum value maps for ChatType. var ( ChatType_name = map[int32]string{ 0: "UNKNOWN_CHAT_TYPE", - 1: "NOTIFICATION", - 2: "TWO_WAY", + 1: "TWO_WAY", } ChatType_value = map[string]int32{ "UNKNOWN_CHAT_TYPE": 0, - "NOTIFICATION": 1, - "TWO_WAY": 2, + "TWO_WAY": 1, } ) @@ -171,6 +168,49 @@ func (PointerType) EnumDescriptor() ([]byte, []int) { return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{2} } +type StreamError_Code int32 + +const ( + StreamError_DENIED StreamError_Code = 0 +) + +// Enum value maps for StreamError_Code. +var ( + StreamError_Code_name = map[int32]string{ + 0: "DENIED", + } + StreamError_Code_value = map[string]int32{ + "DENIED": 0, + } +) + +func (x StreamError_Code) Enum() *StreamError_Code { + p := new(StreamError_Code) + *p = x + return p +} + +func (x StreamError_Code) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (StreamError_Code) Descriptor() protoreflect.EnumDescriptor { + return file_chat_v2_chat_service_proto_enumTypes[3].Descriptor() +} + +func (StreamError_Code) Type() protoreflect.EnumType { + return &file_chat_v2_chat_service_proto_enumTypes[3] +} + +func (x StreamError_Code) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use StreamError_Code.Descriptor instead. +func (StreamError_Code) EnumDescriptor() ([]byte, []int) { + return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{4, 0} +} + type GetChatsRequest_Direction int32 const ( @@ -201,11 +241,11 @@ func (x GetChatsRequest_Direction) String() string { } func (GetChatsRequest_Direction) Descriptor() protoreflect.EnumDescriptor { - return file_chat_v2_chat_service_proto_enumTypes[3].Descriptor() + return file_chat_v2_chat_service_proto_enumTypes[4].Descriptor() } func (GetChatsRequest_Direction) Type() protoreflect.EnumType { - return &file_chat_v2_chat_service_proto_enumTypes[3] + return &file_chat_v2_chat_service_proto_enumTypes[4] } func (x GetChatsRequest_Direction) Number() protoreflect.EnumNumber { @@ -214,25 +254,22 @@ func (x GetChatsRequest_Direction) Number() protoreflect.EnumNumber { // Deprecated: Use GetChatsRequest_Direction.Descriptor instead. func (GetChatsRequest_Direction) EnumDescriptor() ([]byte, []int) { - return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{0, 0} + return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{5, 0} } type GetChatsResponse_Result int32 const ( - GetChatsResponse_OK GetChatsResponse_Result = 0 - GetChatsResponse_NOT_FOUND GetChatsResponse_Result = 1 + GetChatsResponse_OK GetChatsResponse_Result = 0 ) // Enum value maps for GetChatsResponse_Result. var ( GetChatsResponse_Result_name = map[int32]string{ 0: "OK", - 1: "NOT_FOUND", } GetChatsResponse_Result_value = map[string]int32{ - "OK": 0, - "NOT_FOUND": 1, + "OK": 0, } ) @@ -247,11 +284,11 @@ func (x GetChatsResponse_Result) String() string { } func (GetChatsResponse_Result) Descriptor() protoreflect.EnumDescriptor { - return file_chat_v2_chat_service_proto_enumTypes[4].Descriptor() + return file_chat_v2_chat_service_proto_enumTypes[5].Descriptor() } func (GetChatsResponse_Result) Type() protoreflect.EnumType { - return &file_chat_v2_chat_service_proto_enumTypes[4] + return &file_chat_v2_chat_service_proto_enumTypes[5] } func (x GetChatsResponse_Result) Number() protoreflect.EnumNumber { @@ -260,7 +297,7 @@ func (x GetChatsResponse_Result) Number() protoreflect.EnumNumber { // Deprecated: Use GetChatsResponse_Result.Descriptor instead. func (GetChatsResponse_Result) EnumDescriptor() ([]byte, []int) { - return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{1, 0} + return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{6, 0} } type GetMessagesRequest_Direction int32 @@ -293,11 +330,11 @@ func (x GetMessagesRequest_Direction) String() string { } func (GetMessagesRequest_Direction) Descriptor() protoreflect.EnumDescriptor { - return file_chat_v2_chat_service_proto_enumTypes[5].Descriptor() + return file_chat_v2_chat_service_proto_enumTypes[6].Descriptor() } func (GetMessagesRequest_Direction) Type() protoreflect.EnumType { - return &file_chat_v2_chat_service_proto_enumTypes[5] + return &file_chat_v2_chat_service_proto_enumTypes[6] } func (x GetMessagesRequest_Direction) Number() protoreflect.EnumNumber { @@ -306,16 +343,14 @@ func (x GetMessagesRequest_Direction) Number() protoreflect.EnumNumber { // Deprecated: Use GetMessagesRequest_Direction.Descriptor instead. func (GetMessagesRequest_Direction) EnumDescriptor() ([]byte, []int) { - return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{2, 0} + return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{7, 0} } type GetMessagesResponse_Result int32 const ( - GetMessagesResponse_OK GetMessagesResponse_Result = 0 - GetMessagesResponse_DENIED GetMessagesResponse_Result = 1 - GetMessagesResponse_CHAT_NOT_FOUND GetMessagesResponse_Result = 2 - GetMessagesResponse_MESSAGE_NOT_FOUND GetMessagesResponse_Result = 3 + GetMessagesResponse_OK GetMessagesResponse_Result = 0 + GetMessagesResponse_DENIED GetMessagesResponse_Result = 1 ) // Enum value maps for GetMessagesResponse_Result. @@ -323,14 +358,10 @@ var ( GetMessagesResponse_Result_name = map[int32]string{ 0: "OK", 1: "DENIED", - 2: "CHAT_NOT_FOUND", - 3: "MESSAGE_NOT_FOUND", } GetMessagesResponse_Result_value = map[string]int32{ - "OK": 0, - "DENIED": 1, - "CHAT_NOT_FOUND": 2, - "MESSAGE_NOT_FOUND": 3, + "OK": 0, + "DENIED": 1, } ) @@ -345,11 +376,11 @@ func (x GetMessagesResponse_Result) String() string { } func (GetMessagesResponse_Result) Descriptor() protoreflect.EnumDescriptor { - return file_chat_v2_chat_service_proto_enumTypes[6].Descriptor() + return file_chat_v2_chat_service_proto_enumTypes[7].Descriptor() } func (GetMessagesResponse_Result) Type() protoreflect.EnumType { - return &file_chat_v2_chat_service_proto_enumTypes[6] + return &file_chat_v2_chat_service_proto_enumTypes[7] } func (x GetMessagesResponse_Result) Number() protoreflect.EnumNumber { @@ -358,61 +389,25 @@ func (x GetMessagesResponse_Result) Number() protoreflect.EnumNumber { // Deprecated: Use GetMessagesResponse_Result.Descriptor instead. func (GetMessagesResponse_Result) EnumDescriptor() ([]byte, []int) { - return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{3, 0} -} - -type ChatStreamEventError_Code int32 - -const ( - ChatStreamEventError_DENIED ChatStreamEventError_Code = 0 - ChatStreamEventError_CHAT_NOT_FOUND ChatStreamEventError_Code = 1 -) - -// Enum value maps for ChatStreamEventError_Code. -var ( - ChatStreamEventError_Code_name = map[int32]string{ - 0: "DENIED", - 1: "CHAT_NOT_FOUND", - } - ChatStreamEventError_Code_value = map[string]int32{ - "DENIED": 0, - "CHAT_NOT_FOUND": 1, - } -) - -func (x ChatStreamEventError_Code) Enum() *ChatStreamEventError_Code { - p := new(ChatStreamEventError_Code) - *p = x - return p -} - -func (x ChatStreamEventError_Code) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (ChatStreamEventError_Code) Descriptor() protoreflect.EnumDescriptor { - return file_chat_v2_chat_service_proto_enumTypes[7].Descriptor() -} - -func (ChatStreamEventError_Code) Type() protoreflect.EnumType { - return &file_chat_v2_chat_service_proto_enumTypes[7] -} - -func (x ChatStreamEventError_Code) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use ChatStreamEventError_Code.Descriptor instead. -func (ChatStreamEventError_Code) EnumDescriptor() ([]byte, []int) { - return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{7, 0} + return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{8, 0} } type StartChatResponse_Result int32 const ( - StartChatResponse_OK StartChatResponse_Result = 0 - StartChatResponse_DENIED StartChatResponse_Result = 1 + StartChatResponse_OK StartChatResponse_Result = 0 + // DENIED indicates the caller is not allowed to start/join the chat. + StartChatResponse_DENIED StartChatResponse_Result = 1 + // INVALID_PRAMETER indicates one of the parameters is invalid. StartChatResponse_INVALID_PARAMETER StartChatResponse_Result = 2 + // PENDING indicates that the payment (for chat) intent is pending confirmation + // before the service will permit the creation of the chat. This can happen in + // cases where the block chain is particularly slow (beyond our RPC timeouts). + StartChatResponse_PENDING StartChatResponse_Result = 3 + // MISSING_IDENTITY indicates that there is no identity for the user (creator). + StartChatResponse_MISSING_IDENTITY StartChatResponse_Result = 4 + // USER_NOT_FOUND indicates that (one of) the target user's was not found. + StartChatResponse_USER_NOT_FOUND StartChatResponse_Result = 5 ) // Enum value maps for StartChatResponse_Result. @@ -421,11 +416,17 @@ var ( 0: "OK", 1: "DENIED", 2: "INVALID_PARAMETER", + 3: "PENDING", + 4: "MISSING_IDENTITY", + 5: "USER_NOT_FOUND", } StartChatResponse_Result_value = map[string]int32{ "OK": 0, "DENIED": 1, "INVALID_PARAMETER": 2, + "PENDING": 3, + "MISSING_IDENTITY": 4, + "USER_NOT_FOUND": 5, } ) @@ -453,7 +454,7 @@ func (x StartChatResponse_Result) Number() protoreflect.EnumNumber { // Deprecated: Use StartChatResponse_Result.Descriptor instead. func (StartChatResponse_Result) EnumDescriptor() ([]byte, []int) { - return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{12, 0} + return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{11, 0} } type SendMessageResponse_Result int32 @@ -461,9 +462,7 @@ type SendMessageResponse_Result int32 const ( SendMessageResponse_OK SendMessageResponse_Result = 0 SendMessageResponse_DENIED SendMessageResponse_Result = 1 - SendMessageResponse_CHAT_NOT_FOUND SendMessageResponse_Result = 2 - SendMessageResponse_INVALID_CHAT_TYPE SendMessageResponse_Result = 3 - SendMessageResponse_INVALID_CONTENT_TYPE SendMessageResponse_Result = 4 + SendMessageResponse_INVALID_CONTENT_TYPE SendMessageResponse_Result = 2 ) // Enum value maps for SendMessageResponse_Result. @@ -471,16 +470,12 @@ var ( SendMessageResponse_Result_name = map[int32]string{ 0: "OK", 1: "DENIED", - 2: "CHAT_NOT_FOUND", - 3: "INVALID_CHAT_TYPE", - 4: "INVALID_CONTENT_TYPE", + 2: "INVALID_CONTENT_TYPE", } SendMessageResponse_Result_value = map[string]int32{ "OK": 0, "DENIED": 1, - "CHAT_NOT_FOUND": 2, - "INVALID_CHAT_TYPE": 3, - "INVALID_CONTENT_TYPE": 4, + "INVALID_CONTENT_TYPE": 2, } ) @@ -508,17 +503,15 @@ func (x SendMessageResponse_Result) Number() protoreflect.EnumNumber { // Deprecated: Use SendMessageResponse_Result.Descriptor instead. func (SendMessageResponse_Result) EnumDescriptor() ([]byte, []int) { - return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{14, 0} + return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{13, 0} } type AdvancePointerResponse_Result int32 const ( - AdvancePointerResponse_OK AdvancePointerResponse_Result = 0 - AdvancePointerResponse_DENIED AdvancePointerResponse_Result = 1 - AdvancePointerResponse_CHAT_NOT_FOUND AdvancePointerResponse_Result = 2 - AdvancePointerResponse_MESSAGE_NOT_FOUND AdvancePointerResponse_Result = 3 - AdvancePointerResponse_INVALID_POINTER_TYPE AdvancePointerResponse_Result = 4 + AdvancePointerResponse_OK AdvancePointerResponse_Result = 0 + AdvancePointerResponse_DENIED AdvancePointerResponse_Result = 1 + AdvancePointerResponse_MESSAGE_NOT_FOUND AdvancePointerResponse_Result = 2 ) // Enum value maps for AdvancePointerResponse_Result. @@ -526,16 +519,12 @@ var ( AdvancePointerResponse_Result_name = map[int32]string{ 0: "OK", 1: "DENIED", - 2: "CHAT_NOT_FOUND", - 3: "MESSAGE_NOT_FOUND", - 4: "INVALID_POINTER_TYPE", + 2: "MESSAGE_NOT_FOUND", } AdvancePointerResponse_Result_value = map[string]int32{ - "OK": 0, - "DENIED": 1, - "CHAT_NOT_FOUND": 2, - "MESSAGE_NOT_FOUND": 3, - "INVALID_POINTER_TYPE": 4, + "OK": 0, + "DENIED": 1, + "MESSAGE_NOT_FOUND": 2, } ) @@ -563,68 +552,15 @@ func (x AdvancePointerResponse_Result) Number() protoreflect.EnumNumber { // Deprecated: Use AdvancePointerResponse_Result.Descriptor instead. func (AdvancePointerResponse_Result) EnumDescriptor() ([]byte, []int) { - return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{16, 0} -} - -type RevealIdentityResponse_Result int32 - -const ( - RevealIdentityResponse_OK RevealIdentityResponse_Result = 0 - RevealIdentityResponse_DENIED RevealIdentityResponse_Result = 1 - RevealIdentityResponse_CHAT_NOT_FOUND RevealIdentityResponse_Result = 2 - RevealIdentityResponse_DIFFERENT_IDENTITY_REVEALED RevealIdentityResponse_Result = 3 -) - -// Enum value maps for RevealIdentityResponse_Result. -var ( - RevealIdentityResponse_Result_name = map[int32]string{ - 0: "OK", - 1: "DENIED", - 2: "CHAT_NOT_FOUND", - 3: "DIFFERENT_IDENTITY_REVEALED", - } - RevealIdentityResponse_Result_value = map[string]int32{ - "OK": 0, - "DENIED": 1, - "CHAT_NOT_FOUND": 2, - "DIFFERENT_IDENTITY_REVEALED": 3, - } -) - -func (x RevealIdentityResponse_Result) Enum() *RevealIdentityResponse_Result { - p := new(RevealIdentityResponse_Result) - *p = x - return p -} - -func (x RevealIdentityResponse_Result) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (RevealIdentityResponse_Result) Descriptor() protoreflect.EnumDescriptor { - return file_chat_v2_chat_service_proto_enumTypes[11].Descriptor() -} - -func (RevealIdentityResponse_Result) Type() protoreflect.EnumType { - return &file_chat_v2_chat_service_proto_enumTypes[11] -} - -func (x RevealIdentityResponse_Result) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use RevealIdentityResponse_Result.Descriptor instead. -func (RevealIdentityResponse_Result) EnumDescriptor() ([]byte, []int) { - return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{18, 0} + return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{15, 0} } type SetMuteStateResponse_Result int32 const ( - SetMuteStateResponse_OK SetMuteStateResponse_Result = 0 - SetMuteStateResponse_DENIED SetMuteStateResponse_Result = 1 - SetMuteStateResponse_CHAT_NOT_FOUND SetMuteStateResponse_Result = 2 - SetMuteStateResponse_CANT_MUTE SetMuteStateResponse_Result = 3 + SetMuteStateResponse_OK SetMuteStateResponse_Result = 0 + SetMuteStateResponse_DENIED SetMuteStateResponse_Result = 1 + SetMuteStateResponse_CANT_MUTE SetMuteStateResponse_Result = 2 ) // Enum value maps for SetMuteStateResponse_Result. @@ -632,14 +568,12 @@ var ( SetMuteStateResponse_Result_name = map[int32]string{ 0: "OK", 1: "DENIED", - 2: "CHAT_NOT_FOUND", - 3: "CANT_MUTE", + 2: "CANT_MUTE", } SetMuteStateResponse_Result_value = map[string]int32{ - "OK": 0, - "DENIED": 1, - "CHAT_NOT_FOUND": 2, - "CANT_MUTE": 3, + "OK": 0, + "DENIED": 1, + "CANT_MUTE": 2, } ) @@ -654,11 +588,11 @@ func (x SetMuteStateResponse_Result) String() string { } func (SetMuteStateResponse_Result) Descriptor() protoreflect.EnumDescriptor { - return file_chat_v2_chat_service_proto_enumTypes[12].Descriptor() + return file_chat_v2_chat_service_proto_enumTypes[11].Descriptor() } func (SetMuteStateResponse_Result) Type() protoreflect.EnumType { - return &file_chat_v2_chat_service_proto_enumTypes[12] + return &file_chat_v2_chat_service_proto_enumTypes[11] } func (x SetMuteStateResponse_Result) Number() protoreflect.EnumNumber { @@ -667,67 +601,14 @@ func (x SetMuteStateResponse_Result) Number() protoreflect.EnumNumber { // Deprecated: Use SetMuteStateResponse_Result.Descriptor instead. func (SetMuteStateResponse_Result) EnumDescriptor() ([]byte, []int) { - return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{20, 0} -} - -type SetSubscriptionStateResponse_Result int32 - -const ( - SetSubscriptionStateResponse_OK SetSubscriptionStateResponse_Result = 0 - SetSubscriptionStateResponse_DENIED SetSubscriptionStateResponse_Result = 1 - SetSubscriptionStateResponse_CHAT_NOT_FOUND SetSubscriptionStateResponse_Result = 2 - SetSubscriptionStateResponse_CANT_UNSUBSCRIBE SetSubscriptionStateResponse_Result = 3 -) - -// Enum value maps for SetSubscriptionStateResponse_Result. -var ( - SetSubscriptionStateResponse_Result_name = map[int32]string{ - 0: "OK", - 1: "DENIED", - 2: "CHAT_NOT_FOUND", - 3: "CANT_UNSUBSCRIBE", - } - SetSubscriptionStateResponse_Result_value = map[string]int32{ - "OK": 0, - "DENIED": 1, - "CHAT_NOT_FOUND": 2, - "CANT_UNSUBSCRIBE": 3, - } -) - -func (x SetSubscriptionStateResponse_Result) Enum() *SetSubscriptionStateResponse_Result { - p := new(SetSubscriptionStateResponse_Result) - *p = x - return p -} - -func (x SetSubscriptionStateResponse_Result) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (SetSubscriptionStateResponse_Result) Descriptor() protoreflect.EnumDescriptor { - return file_chat_v2_chat_service_proto_enumTypes[13].Descriptor() -} - -func (SetSubscriptionStateResponse_Result) Type() protoreflect.EnumType { - return &file_chat_v2_chat_service_proto_enumTypes[13] -} - -func (x SetSubscriptionStateResponse_Result) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use SetSubscriptionStateResponse_Result.Descriptor instead. -func (SetSubscriptionStateResponse_Result) EnumDescriptor() ([]byte, []int) { - return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{22, 0} + return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{17, 0} } type NotifyIsTypingResponse_Result int32 const ( - NotifyIsTypingResponse_OK NotifyIsTypingResponse_Result = 0 - NotifyIsTypingResponse_DENIED NotifyIsTypingResponse_Result = 1 - NotifyIsTypingResponse_CHAT_NOT_FOUND NotifyIsTypingResponse_Result = 2 + NotifyIsTypingResponse_OK NotifyIsTypingResponse_Result = 0 + NotifyIsTypingResponse_DENIED NotifyIsTypingResponse_Result = 1 ) // Enum value maps for NotifyIsTypingResponse_Result. @@ -735,12 +616,10 @@ var ( NotifyIsTypingResponse_Result_name = map[int32]string{ 0: "OK", 1: "DENIED", - 2: "CHAT_NOT_FOUND", } NotifyIsTypingResponse_Result_value = map[string]int32{ - "OK": 0, - "DENIED": 1, - "CHAT_NOT_FOUND": 2, + "OK": 0, + "DENIED": 1, } ) @@ -755,11 +634,11 @@ func (x NotifyIsTypingResponse_Result) String() string { } func (NotifyIsTypingResponse_Result) Descriptor() protoreflect.EnumDescriptor { - return file_chat_v2_chat_service_proto_enumTypes[14].Descriptor() + return file_chat_v2_chat_service_proto_enumTypes[12].Descriptor() } func (NotifyIsTypingResponse_Result) Type() protoreflect.EnumType { - return &file_chat_v2_chat_service_proto_enumTypes[14] + return &file_chat_v2_chat_service_proto_enumTypes[12] } func (x NotifyIsTypingResponse_Result) Number() protoreflect.EnumNumber { @@ -768,7 +647,7 @@ func (x NotifyIsTypingResponse_Result) Number() protoreflect.EnumNumber { // Deprecated: Use NotifyIsTypingResponse_Result.Descriptor instead. func (NotifyIsTypingResponse_Result) EnumDescriptor() ([]byte, []int) { - return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{24, 0} + return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{19, 0} } type ExchangeDataContent_Verb int32 @@ -831,11 +710,11 @@ func (x ExchangeDataContent_Verb) String() string { } func (ExchangeDataContent_Verb) Descriptor() protoreflect.EnumDescriptor { - return file_chat_v2_chat_service_proto_enumTypes[15].Descriptor() + return file_chat_v2_chat_service_proto_enumTypes[13].Descriptor() } func (ExchangeDataContent_Verb) Type() protoreflect.EnumType { - return &file_chat_v2_chat_service_proto_enumTypes[15] + return &file_chat_v2_chat_service_proto_enumTypes[13] } func (x ExchangeDataContent_Verb) Number() protoreflect.EnumNumber { @@ -844,23 +723,23 @@ func (x ExchangeDataContent_Verb) Number() protoreflect.EnumNumber { // Deprecated: Use ExchangeDataContent_Verb.Descriptor instead. func (ExchangeDataContent_Verb) EnumDescriptor() ([]byte, []int) { - return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{35, 0} + return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{30, 0} } -type GetChatsRequest struct { +type StreamChatEventsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Owner *v1.SolanaAccountId `protobuf:"bytes,1,opt,name=owner,proto3" json:"owner,omitempty"` - Signature *v1.Signature `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` - PageSize uint32 `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` - Cursor *Cursor `protobuf:"bytes,4,opt,name=cursor,proto3" json:"cursor,omitempty"` - Direction GetChatsRequest_Direction `protobuf:"varint,5,opt,name=direction,proto3,enum=code.chat.v2.GetChatsRequest_Direction" json:"direction,omitempty"` + // Types that are assignable to Type: + // + // *StreamChatEventsRequest_Params_ + // *StreamChatEventsRequest_Pong + Type isStreamChatEventsRequest_Type `protobuf_oneof:"type"` } -func (x *GetChatsRequest) Reset() { - *x = GetChatsRequest{} +func (x *StreamChatEventsRequest) Reset() { + *x = StreamChatEventsRequest{} if protoimpl.UnsafeEnabled { mi := &file_chat_v2_chat_service_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -868,13 +747,13 @@ func (x *GetChatsRequest) Reset() { } } -func (x *GetChatsRequest) String() string { +func (x *StreamChatEventsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetChatsRequest) ProtoMessage() {} +func (*StreamChatEventsRequest) ProtoMessage() {} -func (x *GetChatsRequest) ProtoReflect() protoreflect.Message { +func (x *StreamChatEventsRequest) ProtoReflect() protoreflect.Message { mi := &file_chat_v2_chat_service_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -886,57 +765,63 @@ func (x *GetChatsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetChatsRequest.ProtoReflect.Descriptor instead. -func (*GetChatsRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use StreamChatEventsRequest.ProtoReflect.Descriptor instead. +func (*StreamChatEventsRequest) Descriptor() ([]byte, []int) { return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{0} } -func (x *GetChatsRequest) GetOwner() *v1.SolanaAccountId { - if x != nil { - return x.Owner +func (m *StreamChatEventsRequest) GetType() isStreamChatEventsRequest_Type { + if m != nil { + return m.Type } return nil } -func (x *GetChatsRequest) GetSignature() *v1.Signature { - if x != nil { - return x.Signature +func (x *StreamChatEventsRequest) GetParams() *StreamChatEventsRequest_Params { + if x, ok := x.GetType().(*StreamChatEventsRequest_Params_); ok { + return x.Params } return nil } -func (x *GetChatsRequest) GetPageSize() uint32 { - if x != nil { - return x.PageSize +func (x *StreamChatEventsRequest) GetPong() *v1.ClientPong { + if x, ok := x.GetType().(*StreamChatEventsRequest_Pong); ok { + return x.Pong } - return 0 + return nil } -func (x *GetChatsRequest) GetCursor() *Cursor { - if x != nil { - return x.Cursor - } - return nil +type isStreamChatEventsRequest_Type interface { + isStreamChatEventsRequest_Type() } -func (x *GetChatsRequest) GetDirection() GetChatsRequest_Direction { - if x != nil { - return x.Direction - } - return GetChatsRequest_ASC +type StreamChatEventsRequest_Params_ struct { + Params *StreamChatEventsRequest_Params `protobuf:"bytes,1,opt,name=params,proto3,oneof"` } -type GetChatsResponse struct { +type StreamChatEventsRequest_Pong struct { + Pong *v1.ClientPong `protobuf:"bytes,2,opt,name=pong,proto3,oneof"` +} + +func (*StreamChatEventsRequest_Params_) isStreamChatEventsRequest_Type() {} + +func (*StreamChatEventsRequest_Pong) isStreamChatEventsRequest_Type() {} + +type StreamChatEventsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Result GetChatsResponse_Result `protobuf:"varint,1,opt,name=result,proto3,enum=code.chat.v2.GetChatsResponse_Result" json:"result,omitempty"` - Chats []*ChatMetadata `protobuf:"bytes,2,rep,name=chats,proto3" json:"chats,omitempty"` + // Types that are assignable to Type: + // + // *StreamChatEventsResponse_Ping + // *StreamChatEventsResponse_Error + // *StreamChatEventsResponse_Events + Type isStreamChatEventsResponse_Type `protobuf_oneof:"type"` } -func (x *GetChatsResponse) Reset() { - *x = GetChatsResponse{} +func (x *StreamChatEventsResponse) Reset() { + *x = StreamChatEventsResponse{} if protoimpl.UnsafeEnabled { mi := &file_chat_v2_chat_service_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -944,13 +829,13 @@ func (x *GetChatsResponse) Reset() { } } -func (x *GetChatsResponse) String() string { +func (x *StreamChatEventsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetChatsResponse) ProtoMessage() {} +func (*StreamChatEventsResponse) ProtoMessage() {} -func (x *GetChatsResponse) ProtoReflect() protoreflect.Message { +func (x *StreamChatEventsResponse) ProtoReflect() protoreflect.Message { mi := &file_chat_v2_chat_service_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -962,41 +847,75 @@ func (x *GetChatsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetChatsResponse.ProtoReflect.Descriptor instead. -func (*GetChatsResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use StreamChatEventsResponse.ProtoReflect.Descriptor instead. +func (*StreamChatEventsResponse) Descriptor() ([]byte, []int) { return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{1} } -func (x *GetChatsResponse) GetResult() GetChatsResponse_Result { - if x != nil { - return x.Result +func (m *StreamChatEventsResponse) GetType() isStreamChatEventsResponse_Type { + if m != nil { + return m.Type } - return GetChatsResponse_OK + return nil } -func (x *GetChatsResponse) GetChats() []*ChatMetadata { - if x != nil { - return x.Chats +func (x *StreamChatEventsResponse) GetPing() *v1.ServerPing { + if x, ok := x.GetType().(*StreamChatEventsResponse_Ping); ok { + return x.Ping } return nil } -type GetMessagesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ChatId *v1.ChatId `protobuf:"bytes,1,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` - MemberId *ChatMemberId `protobuf:"bytes,2,opt,name=member_id,json=memberId,proto3" json:"member_id,omitempty"` - Owner *v1.SolanaAccountId `protobuf:"bytes,3,opt,name=owner,proto3" json:"owner,omitempty"` - Signature *v1.Signature `protobuf:"bytes,4,opt,name=signature,proto3" json:"signature,omitempty"` - PageSize uint32 `protobuf:"varint,5,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` - Cursor *Cursor `protobuf:"bytes,6,opt,name=cursor,proto3" json:"cursor,omitempty"` - Direction GetMessagesRequest_Direction `protobuf:"varint,7,opt,name=direction,proto3,enum=code.chat.v2.GetMessagesRequest_Direction" json:"direction,omitempty"` -} +func (x *StreamChatEventsResponse) GetError() *StreamError { + if x, ok := x.GetType().(*StreamChatEventsResponse_Error); ok { + return x.Error + } + return nil +} -func (x *GetMessagesRequest) Reset() { - *x = GetMessagesRequest{} +func (x *StreamChatEventsResponse) GetEvents() *StreamChatEventsResponse_EventBatch { + if x, ok := x.GetType().(*StreamChatEventsResponse_Events); ok { + return x.Events + } + return nil +} + +type isStreamChatEventsResponse_Type interface { + isStreamChatEventsResponse_Type() +} + +type StreamChatEventsResponse_Ping struct { + Ping *v1.ServerPing `protobuf:"bytes,1,opt,name=ping,proto3,oneof"` +} + +type StreamChatEventsResponse_Error struct { + Error *StreamError `protobuf:"bytes,2,opt,name=error,proto3,oneof"` +} + +type StreamChatEventsResponse_Events struct { + Events *StreamChatEventsResponse_EventBatch `protobuf:"bytes,3,opt,name=events,proto3,oneof"` +} + +func (*StreamChatEventsResponse_Ping) isStreamChatEventsResponse_Type() {} + +func (*StreamChatEventsResponse_Error) isStreamChatEventsResponse_Type() {} + +func (*StreamChatEventsResponse_Events) isStreamChatEventsResponse_Type() {} + +type StreamMessagesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Type: + // + // *StreamMessagesRequest_Params_ + // *StreamMessagesRequest_Pong + Type isStreamMessagesRequest_Type `protobuf_oneof:"type"` +} + +func (x *StreamMessagesRequest) Reset() { + *x = StreamMessagesRequest{} if protoimpl.UnsafeEnabled { mi := &file_chat_v2_chat_service_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1004,13 +923,13 @@ func (x *GetMessagesRequest) Reset() { } } -func (x *GetMessagesRequest) String() string { +func (x *StreamMessagesRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetMessagesRequest) ProtoMessage() {} +func (*StreamMessagesRequest) ProtoMessage() {} -func (x *GetMessagesRequest) ProtoReflect() protoreflect.Message { +func (x *StreamMessagesRequest) ProtoReflect() protoreflect.Message { mi := &file_chat_v2_chat_service_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1022,71 +941,63 @@ func (x *GetMessagesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetMessagesRequest.ProtoReflect.Descriptor instead. -func (*GetMessagesRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use StreamMessagesRequest.ProtoReflect.Descriptor instead. +func (*StreamMessagesRequest) Descriptor() ([]byte, []int) { return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{2} } -func (x *GetMessagesRequest) GetChatId() *v1.ChatId { - if x != nil { - return x.ChatId +func (m *StreamMessagesRequest) GetType() isStreamMessagesRequest_Type { + if m != nil { + return m.Type } return nil } -func (x *GetMessagesRequest) GetMemberId() *ChatMemberId { - if x != nil { - return x.MemberId +func (x *StreamMessagesRequest) GetParams() *StreamMessagesRequest_Params { + if x, ok := x.GetType().(*StreamMessagesRequest_Params_); ok { + return x.Params } return nil } -func (x *GetMessagesRequest) GetOwner() *v1.SolanaAccountId { - if x != nil { - return x.Owner +func (x *StreamMessagesRequest) GetPong() *v1.ClientPong { + if x, ok := x.GetType().(*StreamMessagesRequest_Pong); ok { + return x.Pong } return nil } -func (x *GetMessagesRequest) GetSignature() *v1.Signature { - if x != nil { - return x.Signature - } - return nil +type isStreamMessagesRequest_Type interface { + isStreamMessagesRequest_Type() } -func (x *GetMessagesRequest) GetPageSize() uint32 { - if x != nil { - return x.PageSize - } - return 0 +type StreamMessagesRequest_Params_ struct { + Params *StreamMessagesRequest_Params `protobuf:"bytes,1,opt,name=params,proto3,oneof"` } -func (x *GetMessagesRequest) GetCursor() *Cursor { - if x != nil { - return x.Cursor - } - return nil +type StreamMessagesRequest_Pong struct { + Pong *v1.ClientPong `protobuf:"bytes,2,opt,name=pong,proto3,oneof"` } -func (x *GetMessagesRequest) GetDirection() GetMessagesRequest_Direction { - if x != nil { - return x.Direction - } - return GetMessagesRequest_ASC -} +func (*StreamMessagesRequest_Params_) isStreamMessagesRequest_Type() {} -type GetMessagesResponse struct { +func (*StreamMessagesRequest_Pong) isStreamMessagesRequest_Type() {} + +type StreamMessagesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Result GetMessagesResponse_Result `protobuf:"varint,1,opt,name=result,proto3,enum=code.chat.v2.GetMessagesResponse_Result" json:"result,omitempty"` - Messages []*ChatMessage `protobuf:"bytes,2,rep,name=messages,proto3" json:"messages,omitempty"` + // Types that are assignable to Type: + // + // *StreamMessagesResponse_Ping + // *StreamMessagesResponse_Error + // *StreamMessagesResponse_Messages + Type isStreamMessagesResponse_Type `protobuf_oneof:"type"` } -func (x *GetMessagesResponse) Reset() { - *x = GetMessagesResponse{} +func (x *StreamMessagesResponse) Reset() { + *x = StreamMessagesResponse{} if protoimpl.UnsafeEnabled { mi := &file_chat_v2_chat_service_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1094,13 +1005,13 @@ func (x *GetMessagesResponse) Reset() { } } -func (x *GetMessagesResponse) String() string { +func (x *StreamMessagesResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetMessagesResponse) ProtoMessage() {} +func (*StreamMessagesResponse) ProtoMessage() {} -func (x *GetMessagesResponse) ProtoReflect() protoreflect.Message { +func (x *StreamMessagesResponse) ProtoReflect() protoreflect.Message { mi := &file_chat_v2_chat_service_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1112,38 +1023,71 @@ func (x *GetMessagesResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetMessagesResponse.ProtoReflect.Descriptor instead. -func (*GetMessagesResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use StreamMessagesResponse.ProtoReflect.Descriptor instead. +func (*StreamMessagesResponse) Descriptor() ([]byte, []int) { return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{3} } -func (x *GetMessagesResponse) GetResult() GetMessagesResponse_Result { - if x != nil { - return x.Result +func (m *StreamMessagesResponse) GetType() isStreamMessagesResponse_Type { + if m != nil { + return m.Type } - return GetMessagesResponse_OK + return nil } -func (x *GetMessagesResponse) GetMessages() []*ChatMessage { - if x != nil { +func (x *StreamMessagesResponse) GetPing() *v1.ServerPing { + if x, ok := x.GetType().(*StreamMessagesResponse_Ping); ok { + return x.Ping + } + return nil +} + +func (x *StreamMessagesResponse) GetError() *StreamError { + if x, ok := x.GetType().(*StreamMessagesResponse_Error); ok { + return x.Error + } + return nil +} + +func (x *StreamMessagesResponse) GetMessages() *StreamMessagesResponse_MessageBatch { + if x, ok := x.GetType().(*StreamMessagesResponse_Messages); ok { return x.Messages } return nil } -type OpenChatEventStream struct { +type isStreamMessagesResponse_Type interface { + isStreamMessagesResponse_Type() +} + +type StreamMessagesResponse_Ping struct { + Ping *v1.ServerPing `protobuf:"bytes,1,opt,name=ping,proto3,oneof"` +} + +type StreamMessagesResponse_Error struct { + Error *StreamError `protobuf:"bytes,2,opt,name=error,proto3,oneof"` +} + +type StreamMessagesResponse_Messages struct { + Messages *StreamMessagesResponse_MessageBatch `protobuf:"bytes,3,opt,name=messages,proto3,oneof"` +} + +func (*StreamMessagesResponse_Ping) isStreamMessagesResponse_Type() {} + +func (*StreamMessagesResponse_Error) isStreamMessagesResponse_Type() {} + +func (*StreamMessagesResponse_Messages) isStreamMessagesResponse_Type() {} + +type StreamError struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ChatId *v1.ChatId `protobuf:"bytes,1,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` - MemberId *ChatMemberId `protobuf:"bytes,2,opt,name=member_id,json=memberId,proto3" json:"member_id,omitempty"` - Owner *v1.SolanaAccountId `protobuf:"bytes,3,opt,name=owner,proto3" json:"owner,omitempty"` - Signature *v1.Signature `protobuf:"bytes,4,opt,name=signature,proto3" json:"signature,omitempty"` + Code StreamError_Code `protobuf:"varint,1,opt,name=code,proto3,enum=code.chat.v2.StreamError_Code" json:"code,omitempty"` } -func (x *OpenChatEventStream) Reset() { - *x = OpenChatEventStream{} +func (x *StreamError) Reset() { + *x = StreamError{} if protoimpl.UnsafeEnabled { mi := &file_chat_v2_chat_service_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1151,13 +1095,13 @@ func (x *OpenChatEventStream) Reset() { } } -func (x *OpenChatEventStream) String() string { +func (x *StreamError) String() string { return protoimpl.X.MessageStringOf(x) } -func (*OpenChatEventStream) ProtoMessage() {} +func (*StreamError) ProtoMessage() {} -func (x *OpenChatEventStream) ProtoReflect() protoreflect.Message { +func (x *StreamError) ProtoReflect() protoreflect.Message { mi := &file_chat_v2_chat_service_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1169,54 +1113,32 @@ func (x *OpenChatEventStream) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use OpenChatEventStream.ProtoReflect.Descriptor instead. -func (*OpenChatEventStream) Descriptor() ([]byte, []int) { +// Deprecated: Use StreamError.ProtoReflect.Descriptor instead. +func (*StreamError) Descriptor() ([]byte, []int) { return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{4} } -func (x *OpenChatEventStream) GetChatId() *v1.ChatId { - if x != nil { - return x.ChatId - } - return nil -} - -func (x *OpenChatEventStream) GetMemberId() *ChatMemberId { +func (x *StreamError) GetCode() StreamError_Code { if x != nil { - return x.MemberId - } - return nil -} - -func (x *OpenChatEventStream) GetOwner() *v1.SolanaAccountId { - if x != nil { - return x.Owner - } - return nil -} - -func (x *OpenChatEventStream) GetSignature() *v1.Signature { - if x != nil { - return x.Signature + return x.Code } - return nil + return StreamError_DENIED } -type ChatStreamEvent struct { +type GetChatsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Types that are assignable to Type: - // - // *ChatStreamEvent_Message - // *ChatStreamEvent_Pointer - // *ChatStreamEvent_IsTyping - Type isChatStreamEvent_Type `protobuf_oneof:"type"` + Owner *v1.SolanaAccountId `protobuf:"bytes,1,opt,name=owner,proto3" json:"owner,omitempty"` + Signature *v1.Signature `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` + PageSize uint32 `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + Cursor *Cursor `protobuf:"bytes,4,opt,name=cursor,proto3" json:"cursor,omitempty"` + Direction GetChatsRequest_Direction `protobuf:"varint,5,opt,name=direction,proto3,enum=code.chat.v2.GetChatsRequest_Direction" json:"direction,omitempty"` } -func (x *ChatStreamEvent) Reset() { - *x = ChatStreamEvent{} +func (x *GetChatsRequest) Reset() { + *x = GetChatsRequest{} if protoimpl.UnsafeEnabled { mi := &file_chat_v2_chat_service_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1224,13 +1146,13 @@ func (x *ChatStreamEvent) Reset() { } } -func (x *ChatStreamEvent) String() string { +func (x *GetChatsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ChatStreamEvent) ProtoMessage() {} +func (*GetChatsRequest) ProtoMessage() {} -func (x *ChatStreamEvent) ProtoReflect() protoreflect.Message { +func (x *GetChatsRequest) ProtoReflect() protoreflect.Message { mi := &file_chat_v2_chat_service_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1242,71 +1164,57 @@ func (x *ChatStreamEvent) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ChatStreamEvent.ProtoReflect.Descriptor instead. -func (*ChatStreamEvent) Descriptor() ([]byte, []int) { +// Deprecated: Use GetChatsRequest.ProtoReflect.Descriptor instead. +func (*GetChatsRequest) Descriptor() ([]byte, []int) { return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{5} } -func (m *ChatStreamEvent) GetType() isChatStreamEvent_Type { - if m != nil { - return m.Type +func (x *GetChatsRequest) GetOwner() *v1.SolanaAccountId { + if x != nil { + return x.Owner } return nil } -func (x *ChatStreamEvent) GetMessage() *ChatMessage { - if x, ok := x.GetType().(*ChatStreamEvent_Message); ok { - return x.Message +func (x *GetChatsRequest) GetSignature() *v1.Signature { + if x != nil { + return x.Signature } return nil } -func (x *ChatStreamEvent) GetPointer() *Pointer { - if x, ok := x.GetType().(*ChatStreamEvent_Pointer); ok { - return x.Pointer +func (x *GetChatsRequest) GetPageSize() uint32 { + if x != nil { + return x.PageSize } - return nil + return 0 } -func (x *ChatStreamEvent) GetIsTyping() *IsTyping { - if x, ok := x.GetType().(*ChatStreamEvent_IsTyping); ok { - return x.IsTyping +func (x *GetChatsRequest) GetCursor() *Cursor { + if x != nil { + return x.Cursor } return nil } -type isChatStreamEvent_Type interface { - isChatStreamEvent_Type() -} - -type ChatStreamEvent_Message struct { - Message *ChatMessage `protobuf:"bytes,1,opt,name=message,proto3,oneof"` -} - -type ChatStreamEvent_Pointer struct { - Pointer *Pointer `protobuf:"bytes,2,opt,name=pointer,proto3,oneof"` -} - -type ChatStreamEvent_IsTyping struct { - IsTyping *IsTyping `protobuf:"bytes,3,opt,name=is_typing,json=isTyping,proto3,oneof"` +func (x *GetChatsRequest) GetDirection() GetChatsRequest_Direction { + if x != nil { + return x.Direction + } + return GetChatsRequest_ASC } -func (*ChatStreamEvent_Message) isChatStreamEvent_Type() {} - -func (*ChatStreamEvent_Pointer) isChatStreamEvent_Type() {} - -func (*ChatStreamEvent_IsTyping) isChatStreamEvent_Type() {} - -type ChatStreamEventBatch struct { +type GetChatsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Events []*ChatStreamEvent `protobuf:"bytes,2,rep,name=events,proto3" json:"events,omitempty"` + Result GetChatsResponse_Result `protobuf:"varint,1,opt,name=result,proto3,enum=code.chat.v2.GetChatsResponse_Result" json:"result,omitempty"` + Chats []*Metadata `protobuf:"bytes,2,rep,name=chats,proto3" json:"chats,omitempty"` } -func (x *ChatStreamEventBatch) Reset() { - *x = ChatStreamEventBatch{} +func (x *GetChatsResponse) Reset() { + *x = GetChatsResponse{} if protoimpl.UnsafeEnabled { mi := &file_chat_v2_chat_service_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1314,13 +1222,13 @@ func (x *ChatStreamEventBatch) Reset() { } } -func (x *ChatStreamEventBatch) String() string { +func (x *GetChatsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ChatStreamEventBatch) ProtoMessage() {} +func (*GetChatsResponse) ProtoMessage() {} -func (x *ChatStreamEventBatch) ProtoReflect() protoreflect.Message { +func (x *GetChatsResponse) ProtoReflect() protoreflect.Message { mi := &file_chat_v2_chat_service_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1332,28 +1240,40 @@ func (x *ChatStreamEventBatch) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ChatStreamEventBatch.ProtoReflect.Descriptor instead. -func (*ChatStreamEventBatch) Descriptor() ([]byte, []int) { +// Deprecated: Use GetChatsResponse.ProtoReflect.Descriptor instead. +func (*GetChatsResponse) Descriptor() ([]byte, []int) { return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{6} } -func (x *ChatStreamEventBatch) GetEvents() []*ChatStreamEvent { +func (x *GetChatsResponse) GetResult() GetChatsResponse_Result { if x != nil { - return x.Events + return x.Result + } + return GetChatsResponse_OK +} + +func (x *GetChatsResponse) GetChats() []*Metadata { + if x != nil { + return x.Chats } return nil } -type ChatStreamEventError struct { +type GetMessagesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Code ChatStreamEventError_Code `protobuf:"varint,1,opt,name=code,proto3,enum=code.chat.v2.ChatStreamEventError_Code" json:"code,omitempty"` + ChatId *v1.ChatId `protobuf:"bytes,1,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` + Owner *v1.SolanaAccountId `protobuf:"bytes,2,opt,name=owner,proto3" json:"owner,omitempty"` + Signature *v1.Signature `protobuf:"bytes,3,opt,name=signature,proto3" json:"signature,omitempty"` + PageSize uint32 `protobuf:"varint,4,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + Cursor *Cursor `protobuf:"bytes,5,opt,name=cursor,proto3" json:"cursor,omitempty"` + Direction GetMessagesRequest_Direction `protobuf:"varint,6,opt,name=direction,proto3,enum=code.chat.v2.GetMessagesRequest_Direction" json:"direction,omitempty"` } -func (x *ChatStreamEventError) Reset() { - *x = ChatStreamEventError{} +func (x *GetMessagesRequest) Reset() { + *x = GetMessagesRequest{} if protoimpl.UnsafeEnabled { mi := &file_chat_v2_chat_service_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1361,13 +1281,13 @@ func (x *ChatStreamEventError) Reset() { } } -func (x *ChatStreamEventError) String() string { +func (x *GetMessagesRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ChatStreamEventError) ProtoMessage() {} +func (*GetMessagesRequest) ProtoMessage() {} -func (x *ChatStreamEventError) ProtoReflect() protoreflect.Message { +func (x *GetMessagesRequest) ProtoReflect() protoreflect.Message { mi := &file_chat_v2_chat_service_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1379,129 +1299,79 @@ func (x *ChatStreamEventError) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ChatStreamEventError.ProtoReflect.Descriptor instead. -func (*ChatStreamEventError) Descriptor() ([]byte, []int) { +// Deprecated: Use GetMessagesRequest.ProtoReflect.Descriptor instead. +func (*GetMessagesRequest) Descriptor() ([]byte, []int) { return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{7} } -func (x *ChatStreamEventError) GetCode() ChatStreamEventError_Code { +func (x *GetMessagesRequest) GetChatId() *v1.ChatId { if x != nil { - return x.Code + return x.ChatId } - return ChatStreamEventError_DENIED + return nil } -type StreamChatEventsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Type: - // - // *StreamChatEventsRequest_OpenStream - // *StreamChatEventsRequest_Pong - Type isStreamChatEventsRequest_Type `protobuf_oneof:"type"` +func (x *GetMessagesRequest) GetOwner() *v1.SolanaAccountId { + if x != nil { + return x.Owner + } + return nil } -func (x *StreamChatEventsRequest) Reset() { - *x = StreamChatEventsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_chat_v2_chat_service_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *GetMessagesRequest) GetSignature() *v1.Signature { + if x != nil { + return x.Signature } + return nil } -func (x *StreamChatEventsRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *GetMessagesRequest) GetPageSize() uint32 { + if x != nil { + return x.PageSize + } + return 0 } -func (*StreamChatEventsRequest) ProtoMessage() {} - -func (x *StreamChatEventsRequest) ProtoReflect() protoreflect.Message { - mi := &file_chat_v2_chat_service_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use StreamChatEventsRequest.ProtoReflect.Descriptor instead. -func (*StreamChatEventsRequest) Descriptor() ([]byte, []int) { - return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{8} -} - -func (m *StreamChatEventsRequest) GetType() isStreamChatEventsRequest_Type { - if m != nil { - return m.Type - } - return nil -} - -func (x *StreamChatEventsRequest) GetOpenStream() *OpenChatEventStream { - if x, ok := x.GetType().(*StreamChatEventsRequest_OpenStream); ok { - return x.OpenStream +func (x *GetMessagesRequest) GetCursor() *Cursor { + if x != nil { + return x.Cursor } return nil } -func (x *StreamChatEventsRequest) GetPong() *v1.ClientPong { - if x, ok := x.GetType().(*StreamChatEventsRequest_Pong); ok { - return x.Pong +func (x *GetMessagesRequest) GetDirection() GetMessagesRequest_Direction { + if x != nil { + return x.Direction } - return nil -} - -type isStreamChatEventsRequest_Type interface { - isStreamChatEventsRequest_Type() -} - -type StreamChatEventsRequest_OpenStream struct { - OpenStream *OpenChatEventStream `protobuf:"bytes,1,opt,name=open_stream,json=openStream,proto3,oneof"` -} - -type StreamChatEventsRequest_Pong struct { - Pong *v1.ClientPong `protobuf:"bytes,2,opt,name=pong,proto3,oneof"` + return GetMessagesRequest_ASC } -func (*StreamChatEventsRequest_OpenStream) isStreamChatEventsRequest_Type() {} - -func (*StreamChatEventsRequest_Pong) isStreamChatEventsRequest_Type() {} - -type StreamChatEventsResponse struct { +type GetMessagesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Types that are assignable to Type: - // - // *StreamChatEventsResponse_Events - // *StreamChatEventsResponse_Ping - // *StreamChatEventsResponse_Error - Type isStreamChatEventsResponse_Type `protobuf_oneof:"type"` + Result GetMessagesResponse_Result `protobuf:"varint,1,opt,name=result,proto3,enum=code.chat.v2.GetMessagesResponse_Result" json:"result,omitempty"` + Messages []*Message `protobuf:"bytes,2,rep,name=messages,proto3" json:"messages,omitempty"` } -func (x *StreamChatEventsResponse) Reset() { - *x = StreamChatEventsResponse{} +func (x *GetMessagesResponse) Reset() { + *x = GetMessagesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_chat_v2_chat_service_proto_msgTypes[9] + mi := &file_chat_v2_chat_service_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *StreamChatEventsResponse) String() string { +func (x *GetMessagesResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StreamChatEventsResponse) ProtoMessage() {} +func (*GetMessagesResponse) ProtoMessage() {} -func (x *StreamChatEventsResponse) ProtoReflect() protoreflect.Message { - mi := &file_chat_v2_chat_service_proto_msgTypes[9] +func (x *GetMessagesResponse) ProtoReflect() protoreflect.Message { + mi := &file_chat_v2_chat_service_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1512,61 +1382,25 @@ func (x *StreamChatEventsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StreamChatEventsResponse.ProtoReflect.Descriptor instead. -func (*StreamChatEventsResponse) Descriptor() ([]byte, []int) { - return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{9} -} - -func (m *StreamChatEventsResponse) GetType() isStreamChatEventsResponse_Type { - if m != nil { - return m.Type - } - return nil -} - -func (x *StreamChatEventsResponse) GetEvents() *ChatStreamEventBatch { - if x, ok := x.GetType().(*StreamChatEventsResponse_Events); ok { - return x.Events - } - return nil +// Deprecated: Use GetMessagesResponse.ProtoReflect.Descriptor instead. +func (*GetMessagesResponse) Descriptor() ([]byte, []int) { + return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{8} } -func (x *StreamChatEventsResponse) GetPing() *v1.ServerPing { - if x, ok := x.GetType().(*StreamChatEventsResponse_Ping); ok { - return x.Ping +func (x *GetMessagesResponse) GetResult() GetMessagesResponse_Result { + if x != nil { + return x.Result } - return nil + return GetMessagesResponse_OK } -func (x *StreamChatEventsResponse) GetError() *ChatStreamEventError { - if x, ok := x.GetType().(*StreamChatEventsResponse_Error); ok { - return x.Error +func (x *GetMessagesResponse) GetMessages() []*Message { + if x != nil { + return x.Messages } return nil } -type isStreamChatEventsResponse_Type interface { - isStreamChatEventsResponse_Type() -} - -type StreamChatEventsResponse_Events struct { - Events *ChatStreamEventBatch `protobuf:"bytes,1,opt,name=events,proto3,oneof"` -} - -type StreamChatEventsResponse_Ping struct { - Ping *v1.ServerPing `protobuf:"bytes,2,opt,name=ping,proto3,oneof"` -} - -type StreamChatEventsResponse_Error struct { - Error *ChatStreamEventError `protobuf:"bytes,3,opt,name=error,proto3,oneof"` -} - -func (*StreamChatEventsResponse_Events) isStreamChatEventsResponse_Type() {} - -func (*StreamChatEventsResponse_Ping) isStreamChatEventsResponse_Type() {} - -func (*StreamChatEventsResponse_Error) isStreamChatEventsResponse_Type() {} - type StartChatRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1576,14 +1410,14 @@ type StartChatRequest struct { Signature *v1.Signature `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` // Types that are assignable to Parameters: // - // *StartChatRequest_TipChat + // *StartChatRequest_TwoWayChat Parameters isStartChatRequest_Parameters `protobuf_oneof:"parameters"` } func (x *StartChatRequest) Reset() { *x = StartChatRequest{} if protoimpl.UnsafeEnabled { - mi := &file_chat_v2_chat_service_proto_msgTypes[10] + mi := &file_chat_v2_chat_service_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1596,7 +1430,7 @@ func (x *StartChatRequest) String() string { func (*StartChatRequest) ProtoMessage() {} func (x *StartChatRequest) ProtoReflect() protoreflect.Message { - mi := &file_chat_v2_chat_service_proto_msgTypes[10] + mi := &file_chat_v2_chat_service_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1609,7 +1443,7 @@ func (x *StartChatRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use StartChatRequest.ProtoReflect.Descriptor instead. func (*StartChatRequest) Descriptor() ([]byte, []int) { - return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{10} + return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{9} } func (x *StartChatRequest) GetOwner() *v1.SolanaAccountId { @@ -1633,9 +1467,9 @@ func (m *StartChatRequest) GetParameters() isStartChatRequest_Parameters { return nil } -func (x *StartChatRequest) GetTipChat() *StartTipChatParameters { - if x, ok := x.GetParameters().(*StartChatRequest_TipChat); ok { - return x.TipChat +func (x *StartChatRequest) GetTwoWayChat() *StartTwoWayChatParameters { + if x, ok := x.GetParameters().(*StartChatRequest_TwoWayChat); ok { + return x.TwoWayChat } return nil } @@ -1644,356 +1478,110 @@ type isStartChatRequest_Parameters interface { isStartChatRequest_Parameters() } -type StartChatRequest_TipChat struct { - TipChat *StartTipChatParameters `protobuf:"bytes,3,opt,name=tip_chat,json=tipChat,proto3,oneof"` // GroupChatParameters group_chat = 4; -} - -func (*StartChatRequest_TipChat) isStartChatRequest_Parameters() {} - -// Starts a two-way chat between a tipper and tippee. Chat members are -// inferred from the 12 word public keys involved in the intent. Only -// the tippee can start the chat, and the tipper is anonymous if this -// is the first between the involved Code users. -type StartTipChatParameters struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The tip's intent ID, which can be extracted from the reference in - // an ExchangeDataContent message content where the verb is RECEIVED_TIP. - IntentId *v1.IntentId `protobuf:"bytes,1,opt,name=intent_id,json=intentId,proto3" json:"intent_id,omitempty"` -} - -func (x *StartTipChatParameters) Reset() { - *x = StartTipChatParameters{} - if protoimpl.UnsafeEnabled { - mi := &file_chat_v2_chat_service_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *StartTipChatParameters) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StartTipChatParameters) ProtoMessage() {} - -func (x *StartTipChatParameters) ProtoReflect() protoreflect.Message { - mi := &file_chat_v2_chat_service_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use StartTipChatParameters.ProtoReflect.Descriptor instead. -func (*StartTipChatParameters) Descriptor() ([]byte, []int) { - return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{11} -} - -func (x *StartTipChatParameters) GetIntentId() *v1.IntentId { - if x != nil { - return x.IntentId - } - return nil -} - -type StartChatResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Result StartChatResponse_Result `protobuf:"varint,1,opt,name=result,proto3,enum=code.chat.v2.StartChatResponse_Result" json:"result,omitempty"` - // The chat to use if the RPC was successful - Chat *ChatMetadata `protobuf:"bytes,2,opt,name=chat,proto3" json:"chat,omitempty"` -} - -func (x *StartChatResponse) Reset() { - *x = StartChatResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_chat_v2_chat_service_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *StartChatResponse) String() string { - return protoimpl.X.MessageStringOf(x) +type StartChatRequest_TwoWayChat struct { + TwoWayChat *StartTwoWayChatParameters `protobuf:"bytes,3,opt,name=two_way_chat,json=twoWayChat,proto3,oneof"` } -func (*StartChatResponse) ProtoMessage() {} +func (*StartChatRequest_TwoWayChat) isStartChatRequest_Parameters() {} -func (x *StartChatResponse) ProtoReflect() protoreflect.Message { - mi := &file_chat_v2_chat_service_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use StartChatResponse.ProtoReflect.Descriptor instead. -func (*StartChatResponse) Descriptor() ([]byte, []int) { - return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{12} -} - -func (x *StartChatResponse) GetResult() StartChatResponse_Result { - if x != nil { - return x.Result - } - return StartChatResponse_OK -} - -func (x *StartChatResponse) GetChat() *ChatMetadata { - if x != nil { - return x.Chat - } - return nil -} - -type SendMessageRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ChatId *v1.ChatId `protobuf:"bytes,1,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` - MemberId *ChatMemberId `protobuf:"bytes,2,opt,name=member_id,json=memberId,proto3" json:"member_id,omitempty"` - // Allowed content types that can be sent by client: - // - TextContent - // - ThankYouContent - Content []*Content `protobuf:"bytes,3,rep,name=content,proto3" json:"content,omitempty"` - Owner *v1.SolanaAccountId `protobuf:"bytes,4,opt,name=owner,proto3" json:"owner,omitempty"` - Signature *v1.Signature `protobuf:"bytes,5,opt,name=signature,proto3" json:"signature,omitempty"` -} - -func (x *SendMessageRequest) Reset() { - *x = SendMessageRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_chat_v2_chat_service_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SendMessageRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SendMessageRequest) ProtoMessage() {} - -func (x *SendMessageRequest) ProtoReflect() protoreflect.Message { - mi := &file_chat_v2_chat_service_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SendMessageRequest.ProtoReflect.Descriptor instead. -func (*SendMessageRequest) Descriptor() ([]byte, []int) { - return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{13} -} - -func (x *SendMessageRequest) GetChatId() *v1.ChatId { - if x != nil { - return x.ChatId - } - return nil -} - -func (x *SendMessageRequest) GetMemberId() *ChatMemberId { - if x != nil { - return x.MemberId - } - return nil -} - -func (x *SendMessageRequest) GetContent() []*Content { - if x != nil { - return x.Content - } - return nil -} - -func (x *SendMessageRequest) GetOwner() *v1.SolanaAccountId { - if x != nil { - return x.Owner - } - return nil -} - -func (x *SendMessageRequest) GetSignature() *v1.Signature { - if x != nil { - return x.Signature - } - return nil -} - -type SendMessageResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Result SendMessageResponse_Result `protobuf:"varint,1,opt,name=result,proto3,enum=code.chat.v2.SendMessageResponse_Result" json:"result,omitempty"` - // The chat message that was sent if the RPC was succesful, which includes - // server-side metadata like the generated message ID and official timestamp - Message *ChatMessage `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` -} - -func (x *SendMessageResponse) Reset() { - *x = SendMessageResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_chat_v2_chat_service_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SendMessageResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SendMessageResponse) ProtoMessage() {} - -func (x *SendMessageResponse) ProtoReflect() protoreflect.Message { - mi := &file_chat_v2_chat_service_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SendMessageResponse.ProtoReflect.Descriptor instead. -func (*SendMessageResponse) Descriptor() ([]byte, []int) { - return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{14} -} - -func (x *SendMessageResponse) GetResult() SendMessageResponse_Result { - if x != nil { - return x.Result - } - return SendMessageResponse_OK -} - -func (x *SendMessageResponse) GetMessage() *ChatMessage { - if x != nil { - return x.Message - } - return nil -} - -type AdvancePointerRequest struct { +// StartTwoWayChatParameters contains the parameters required to start +// or recover a two way chat between the caller and the specified 'other_user'. +// +// The 'other_user' is currently the 'tip_address', normally retrieved from +// user.Identity.GetTwitterUser(username). +type StartTwoWayChatParameters struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ChatId *v1.ChatId `protobuf:"bytes,1,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` - Pointer *Pointer `protobuf:"bytes,2,opt,name=pointer,proto3" json:"pointer,omitempty"` - Owner *v1.SolanaAccountId `protobuf:"bytes,3,opt,name=owner,proto3" json:"owner,omitempty"` - Signature *v1.Signature `protobuf:"bytes,4,opt,name=signature,proto3" json:"signature,omitempty"` + // The account id of the user the caller wishes to chat with. + // + // This will be the `tip` (or equivalent) address. + OtherUser *v1.SolanaAccountId `protobuf:"bytes,1,opt,name=other_user,json=otherUser,proto3" json:"other_user,omitempty"` + // The intent_id of the payment that initiated the chat/friendship. + // + // This field is optional. It is used as an optimization when the server has not + // yet observed the establishment of a friendship. In this case, the server will + // use the provided intent_id to verify the friendship. + // + // This is most likely to occur when initiating a chat with a user for the first + // time. + IntentId *v1.IntentId `protobuf:"bytes,2,opt,name=intent_id,json=intentId,proto3" json:"intent_id,omitempty"` } -func (x *AdvancePointerRequest) Reset() { - *x = AdvancePointerRequest{} +func (x *StartTwoWayChatParameters) Reset() { + *x = StartTwoWayChatParameters{} if protoimpl.UnsafeEnabled { - mi := &file_chat_v2_chat_service_proto_msgTypes[15] + mi := &file_chat_v2_chat_service_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *AdvancePointerRequest) String() string { +func (x *StartTwoWayChatParameters) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AdvancePointerRequest) ProtoMessage() {} +func (*StartTwoWayChatParameters) ProtoMessage() {} -func (x *AdvancePointerRequest) ProtoReflect() protoreflect.Message { - mi := &file_chat_v2_chat_service_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AdvancePointerRequest.ProtoReflect.Descriptor instead. -func (*AdvancePointerRequest) Descriptor() ([]byte, []int) { - return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{15} -} - -func (x *AdvancePointerRequest) GetChatId() *v1.ChatId { - if x != nil { - return x.ChatId +func (x *StartTwoWayChatParameters) ProtoReflect() protoreflect.Message { + mi := &file_chat_v2_chat_service_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *AdvancePointerRequest) GetPointer() *Pointer { - if x != nil { - return x.Pointer - } - return nil +// Deprecated: Use StartTwoWayChatParameters.ProtoReflect.Descriptor instead. +func (*StartTwoWayChatParameters) Descriptor() ([]byte, []int) { + return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{10} } -func (x *AdvancePointerRequest) GetOwner() *v1.SolanaAccountId { +func (x *StartTwoWayChatParameters) GetOtherUser() *v1.SolanaAccountId { if x != nil { - return x.Owner + return x.OtherUser } return nil } -func (x *AdvancePointerRequest) GetSignature() *v1.Signature { +func (x *StartTwoWayChatParameters) GetIntentId() *v1.IntentId { if x != nil { - return x.Signature + return x.IntentId } return nil } -type AdvancePointerResponse struct { +type StartChatResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Result AdvancePointerResponse_Result `protobuf:"varint,1,opt,name=result,proto3,enum=code.chat.v2.AdvancePointerResponse_Result" json:"result,omitempty"` + Result StartChatResponse_Result `protobuf:"varint,1,opt,name=result,proto3,enum=code.chat.v2.StartChatResponse_Result" json:"result,omitempty"` + // The chat to use if the RPC was successful. + Chat *Metadata `protobuf:"bytes,2,opt,name=chat,proto3" json:"chat,omitempty"` } -func (x *AdvancePointerResponse) Reset() { - *x = AdvancePointerResponse{} +func (x *StartChatResponse) Reset() { + *x = StartChatResponse{} if protoimpl.UnsafeEnabled { - mi := &file_chat_v2_chat_service_proto_msgTypes[16] + mi := &file_chat_v2_chat_service_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *AdvancePointerResponse) String() string { +func (x *StartChatResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AdvancePointerResponse) ProtoMessage() {} +func (*StartChatResponse) ProtoMessage() {} -func (x *AdvancePointerResponse) ProtoReflect() protoreflect.Message { - mi := &file_chat_v2_chat_service_proto_msgTypes[16] +func (x *StartChatResponse) ProtoReflect() protoreflect.Message { + mi := &file_chat_v2_chat_service_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2004,47 +1592,56 @@ func (x *AdvancePointerResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use AdvancePointerResponse.ProtoReflect.Descriptor instead. -func (*AdvancePointerResponse) Descriptor() ([]byte, []int) { - return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{16} +// Deprecated: Use StartChatResponse.ProtoReflect.Descriptor instead. +func (*StartChatResponse) Descriptor() ([]byte, []int) { + return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{11} } -func (x *AdvancePointerResponse) GetResult() AdvancePointerResponse_Result { +func (x *StartChatResponse) GetResult() StartChatResponse_Result { if x != nil { return x.Result } - return AdvancePointerResponse_OK + return StartChatResponse_OK +} + +func (x *StartChatResponse) GetChat() *Metadata { + if x != nil { + return x.Chat + } + return nil } -type RevealIdentityRequest struct { +type SendMessageRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ChatId *v1.ChatId `protobuf:"bytes,1,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` - MemberId *ChatMemberId `protobuf:"bytes,2,opt,name=member_id,json=memberId,proto3" json:"member_id,omitempty"` - Identity *ChatMemberIdentity `protobuf:"bytes,3,opt,name=identity,proto3" json:"identity,omitempty"` - Owner *v1.SolanaAccountId `protobuf:"bytes,4,opt,name=owner,proto3" json:"owner,omitempty"` - Signature *v1.Signature `protobuf:"bytes,5,opt,name=signature,proto3" json:"signature,omitempty"` + ChatId *v1.ChatId `protobuf:"bytes,1,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` + // Allowed content types that can be sent by client: + // - TextContent + // - ThankYouContent + Content []*Content `protobuf:"bytes,2,rep,name=content,proto3" json:"content,omitempty"` + Owner *v1.SolanaAccountId `protobuf:"bytes,3,opt,name=owner,proto3" json:"owner,omitempty"` + Signature *v1.Signature `protobuf:"bytes,4,opt,name=signature,proto3" json:"signature,omitempty"` } -func (x *RevealIdentityRequest) Reset() { - *x = RevealIdentityRequest{} +func (x *SendMessageRequest) Reset() { + *x = SendMessageRequest{} if protoimpl.UnsafeEnabled { - mi := &file_chat_v2_chat_service_proto_msgTypes[17] + mi := &file_chat_v2_chat_service_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *RevealIdentityRequest) String() string { +func (x *SendMessageRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RevealIdentityRequest) ProtoMessage() {} +func (*SendMessageRequest) ProtoMessage() {} -func (x *RevealIdentityRequest) ProtoReflect() protoreflect.Message { - mi := &file_chat_v2_chat_service_proto_msgTypes[17] +func (x *SendMessageRequest) ProtoReflect() protoreflect.Message { + mi := &file_chat_v2_chat_service_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2055,73 +1652,67 @@ func (x *RevealIdentityRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RevealIdentityRequest.ProtoReflect.Descriptor instead. -func (*RevealIdentityRequest) Descriptor() ([]byte, []int) { - return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{17} +// Deprecated: Use SendMessageRequest.ProtoReflect.Descriptor instead. +func (*SendMessageRequest) Descriptor() ([]byte, []int) { + return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{12} } -func (x *RevealIdentityRequest) GetChatId() *v1.ChatId { +func (x *SendMessageRequest) GetChatId() *v1.ChatId { if x != nil { return x.ChatId } return nil } -func (x *RevealIdentityRequest) GetMemberId() *ChatMemberId { - if x != nil { - return x.MemberId - } - return nil -} - -func (x *RevealIdentityRequest) GetIdentity() *ChatMemberIdentity { +func (x *SendMessageRequest) GetContent() []*Content { if x != nil { - return x.Identity + return x.Content } return nil } -func (x *RevealIdentityRequest) GetOwner() *v1.SolanaAccountId { +func (x *SendMessageRequest) GetOwner() *v1.SolanaAccountId { if x != nil { return x.Owner } return nil } -func (x *RevealIdentityRequest) GetSignature() *v1.Signature { +func (x *SendMessageRequest) GetSignature() *v1.Signature { if x != nil { return x.Signature } return nil } -type RevealIdentityResponse struct { +type SendMessageResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Result RevealIdentityResponse_Result `protobuf:"varint,1,opt,name=result,proto3,enum=code.chat.v2.RevealIdentityResponse_Result" json:"result,omitempty"` - // The chat message that was sent if the RPC was successful - Message *ChatMessage `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` + Result SendMessageResponse_Result `protobuf:"varint,1,opt,name=result,proto3,enum=code.chat.v2.SendMessageResponse_Result" json:"result,omitempty"` + // The chat message that was sent if the RPC was succesful, which includes + // server-side metadata like the generated message ID and official timestamp + Message *Message `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` } -func (x *RevealIdentityResponse) Reset() { - *x = RevealIdentityResponse{} +func (x *SendMessageResponse) Reset() { + *x = SendMessageResponse{} if protoimpl.UnsafeEnabled { - mi := &file_chat_v2_chat_service_proto_msgTypes[18] + mi := &file_chat_v2_chat_service_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *RevealIdentityResponse) String() string { +func (x *SendMessageResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RevealIdentityResponse) ProtoMessage() {} +func (*SendMessageResponse) ProtoMessage() {} -func (x *RevealIdentityResponse) ProtoReflect() protoreflect.Message { - mi := &file_chat_v2_chat_service_proto_msgTypes[18] +func (x *SendMessageResponse) ProtoReflect() protoreflect.Message { + mi := &file_chat_v2_chat_service_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2132,54 +1723,53 @@ func (x *RevealIdentityResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RevealIdentityResponse.ProtoReflect.Descriptor instead. -func (*RevealIdentityResponse) Descriptor() ([]byte, []int) { - return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{18} +// Deprecated: Use SendMessageResponse.ProtoReflect.Descriptor instead. +func (*SendMessageResponse) Descriptor() ([]byte, []int) { + return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{13} } -func (x *RevealIdentityResponse) GetResult() RevealIdentityResponse_Result { +func (x *SendMessageResponse) GetResult() SendMessageResponse_Result { if x != nil { return x.Result } - return RevealIdentityResponse_OK + return SendMessageResponse_OK } -func (x *RevealIdentityResponse) GetMessage() *ChatMessage { +func (x *SendMessageResponse) GetMessage() *Message { if x != nil { return x.Message } return nil } -type SetMuteStateRequest struct { +type AdvancePointerRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ChatId *v1.ChatId `protobuf:"bytes,1,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` - MemberId *ChatMemberId `protobuf:"bytes,2,opt,name=member_id,json=memberId,proto3" json:"member_id,omitempty"` - IsMuted bool `protobuf:"varint,3,opt,name=is_muted,json=isMuted,proto3" json:"is_muted,omitempty"` - Owner *v1.SolanaAccountId `protobuf:"bytes,4,opt,name=owner,proto3" json:"owner,omitempty"` - Signature *v1.Signature `protobuf:"bytes,5,opt,name=signature,proto3" json:"signature,omitempty"` + Pointer *Pointer `protobuf:"bytes,2,opt,name=pointer,proto3" json:"pointer,omitempty"` + Owner *v1.SolanaAccountId `protobuf:"bytes,3,opt,name=owner,proto3" json:"owner,omitempty"` + Signature *v1.Signature `protobuf:"bytes,4,opt,name=signature,proto3" json:"signature,omitempty"` } -func (x *SetMuteStateRequest) Reset() { - *x = SetMuteStateRequest{} +func (x *AdvancePointerRequest) Reset() { + *x = AdvancePointerRequest{} if protoimpl.UnsafeEnabled { - mi := &file_chat_v2_chat_service_proto_msgTypes[19] + mi := &file_chat_v2_chat_service_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *SetMuteStateRequest) String() string { +func (x *AdvancePointerRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SetMuteStateRequest) ProtoMessage() {} +func (*AdvancePointerRequest) ProtoMessage() {} -func (x *SetMuteStateRequest) ProtoReflect() protoreflect.Message { - mi := &file_chat_v2_chat_service_proto_msgTypes[19] +func (x *AdvancePointerRequest) ProtoReflect() protoreflect.Message { + mi := &file_chat_v2_chat_service_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2190,71 +1780,64 @@ func (x *SetMuteStateRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SetMuteStateRequest.ProtoReflect.Descriptor instead. -func (*SetMuteStateRequest) Descriptor() ([]byte, []int) { - return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{19} +// Deprecated: Use AdvancePointerRequest.ProtoReflect.Descriptor instead. +func (*AdvancePointerRequest) Descriptor() ([]byte, []int) { + return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{14} } -func (x *SetMuteStateRequest) GetChatId() *v1.ChatId { +func (x *AdvancePointerRequest) GetChatId() *v1.ChatId { if x != nil { return x.ChatId } return nil } -func (x *SetMuteStateRequest) GetMemberId() *ChatMemberId { +func (x *AdvancePointerRequest) GetPointer() *Pointer { if x != nil { - return x.MemberId + return x.Pointer } return nil } -func (x *SetMuteStateRequest) GetIsMuted() bool { - if x != nil { - return x.IsMuted - } - return false -} - -func (x *SetMuteStateRequest) GetOwner() *v1.SolanaAccountId { +func (x *AdvancePointerRequest) GetOwner() *v1.SolanaAccountId { if x != nil { return x.Owner } return nil } -func (x *SetMuteStateRequest) GetSignature() *v1.Signature { +func (x *AdvancePointerRequest) GetSignature() *v1.Signature { if x != nil { return x.Signature } return nil } -type SetMuteStateResponse struct { +type AdvancePointerResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Result SetMuteStateResponse_Result `protobuf:"varint,1,opt,name=result,proto3,enum=code.chat.v2.SetMuteStateResponse_Result" json:"result,omitempty"` + Result AdvancePointerResponse_Result `protobuf:"varint,1,opt,name=result,proto3,enum=code.chat.v2.AdvancePointerResponse_Result" json:"result,omitempty"` } -func (x *SetMuteStateResponse) Reset() { - *x = SetMuteStateResponse{} +func (x *AdvancePointerResponse) Reset() { + *x = AdvancePointerResponse{} if protoimpl.UnsafeEnabled { - mi := &file_chat_v2_chat_service_proto_msgTypes[20] + mi := &file_chat_v2_chat_service_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *SetMuteStateResponse) String() string { +func (x *AdvancePointerResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SetMuteStateResponse) ProtoMessage() {} +func (*AdvancePointerResponse) ProtoMessage() {} -func (x *SetMuteStateResponse) ProtoReflect() protoreflect.Message { - mi := &file_chat_v2_chat_service_proto_msgTypes[20] +func (x *AdvancePointerResponse) ProtoReflect() protoreflect.Message { + mi := &file_chat_v2_chat_service_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2265,47 +1848,46 @@ func (x *SetMuteStateResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SetMuteStateResponse.ProtoReflect.Descriptor instead. -func (*SetMuteStateResponse) Descriptor() ([]byte, []int) { - return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{20} +// Deprecated: Use AdvancePointerResponse.ProtoReflect.Descriptor instead. +func (*AdvancePointerResponse) Descriptor() ([]byte, []int) { + return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{15} } -func (x *SetMuteStateResponse) GetResult() SetMuteStateResponse_Result { +func (x *AdvancePointerResponse) GetResult() AdvancePointerResponse_Result { if x != nil { return x.Result } - return SetMuteStateResponse_OK + return AdvancePointerResponse_OK } -type SetSubscriptionStateRequest struct { +type SetMuteStateRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ChatId *v1.ChatId `protobuf:"bytes,1,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` - MemberId *ChatMemberId `protobuf:"bytes,2,opt,name=member_id,json=memberId,proto3" json:"member_id,omitempty"` - IsSubscribed bool `protobuf:"varint,3,opt,name=is_subscribed,json=isSubscribed,proto3" json:"is_subscribed,omitempty"` - Owner *v1.SolanaAccountId `protobuf:"bytes,4,opt,name=owner,proto3" json:"owner,omitempty"` - Signature *v1.Signature `protobuf:"bytes,5,opt,name=signature,proto3" json:"signature,omitempty"` + ChatId *v1.ChatId `protobuf:"bytes,1,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` + IsMuted bool `protobuf:"varint,2,opt,name=is_muted,json=isMuted,proto3" json:"is_muted,omitempty"` + Owner *v1.SolanaAccountId `protobuf:"bytes,3,opt,name=owner,proto3" json:"owner,omitempty"` + Signature *v1.Signature `protobuf:"bytes,4,opt,name=signature,proto3" json:"signature,omitempty"` } -func (x *SetSubscriptionStateRequest) Reset() { - *x = SetSubscriptionStateRequest{} +func (x *SetMuteStateRequest) Reset() { + *x = SetMuteStateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_chat_v2_chat_service_proto_msgTypes[21] + mi := &file_chat_v2_chat_service_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *SetSubscriptionStateRequest) String() string { +func (x *SetMuteStateRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SetSubscriptionStateRequest) ProtoMessage() {} +func (*SetMuteStateRequest) ProtoMessage() {} -func (x *SetSubscriptionStateRequest) ProtoReflect() protoreflect.Message { - mi := &file_chat_v2_chat_service_proto_msgTypes[21] +func (x *SetMuteStateRequest) ProtoReflect() protoreflect.Message { + mi := &file_chat_v2_chat_service_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2316,71 +1898,64 @@ func (x *SetSubscriptionStateRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SetSubscriptionStateRequest.ProtoReflect.Descriptor instead. -func (*SetSubscriptionStateRequest) Descriptor() ([]byte, []int) { - return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{21} +// Deprecated: Use SetMuteStateRequest.ProtoReflect.Descriptor instead. +func (*SetMuteStateRequest) Descriptor() ([]byte, []int) { + return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{16} } -func (x *SetSubscriptionStateRequest) GetChatId() *v1.ChatId { +func (x *SetMuteStateRequest) GetChatId() *v1.ChatId { if x != nil { return x.ChatId } return nil } -func (x *SetSubscriptionStateRequest) GetMemberId() *ChatMemberId { - if x != nil { - return x.MemberId - } - return nil -} - -func (x *SetSubscriptionStateRequest) GetIsSubscribed() bool { +func (x *SetMuteStateRequest) GetIsMuted() bool { if x != nil { - return x.IsSubscribed + return x.IsMuted } return false } -func (x *SetSubscriptionStateRequest) GetOwner() *v1.SolanaAccountId { +func (x *SetMuteStateRequest) GetOwner() *v1.SolanaAccountId { if x != nil { return x.Owner } return nil } -func (x *SetSubscriptionStateRequest) GetSignature() *v1.Signature { +func (x *SetMuteStateRequest) GetSignature() *v1.Signature { if x != nil { return x.Signature } return nil } -type SetSubscriptionStateResponse struct { +type SetMuteStateResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Result SetSubscriptionStateResponse_Result `protobuf:"varint,1,opt,name=result,proto3,enum=code.chat.v2.SetSubscriptionStateResponse_Result" json:"result,omitempty"` + Result SetMuteStateResponse_Result `protobuf:"varint,1,opt,name=result,proto3,enum=code.chat.v2.SetMuteStateResponse_Result" json:"result,omitempty"` } -func (x *SetSubscriptionStateResponse) Reset() { - *x = SetSubscriptionStateResponse{} +func (x *SetMuteStateResponse) Reset() { + *x = SetMuteStateResponse{} if protoimpl.UnsafeEnabled { - mi := &file_chat_v2_chat_service_proto_msgTypes[22] + mi := &file_chat_v2_chat_service_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *SetSubscriptionStateResponse) String() string { +func (x *SetMuteStateResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SetSubscriptionStateResponse) ProtoMessage() {} +func (*SetMuteStateResponse) ProtoMessage() {} -func (x *SetSubscriptionStateResponse) ProtoReflect() protoreflect.Message { - mi := &file_chat_v2_chat_service_proto_msgTypes[22] +func (x *SetMuteStateResponse) ProtoReflect() protoreflect.Message { + mi := &file_chat_v2_chat_service_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2391,16 +1966,16 @@ func (x *SetSubscriptionStateResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SetSubscriptionStateResponse.ProtoReflect.Descriptor instead. -func (*SetSubscriptionStateResponse) Descriptor() ([]byte, []int) { - return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{22} +// Deprecated: Use SetMuteStateResponse.ProtoReflect.Descriptor instead. +func (*SetMuteStateResponse) Descriptor() ([]byte, []int) { + return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{17} } -func (x *SetSubscriptionStateResponse) GetResult() SetSubscriptionStateResponse_Result { +func (x *SetMuteStateResponse) GetResult() SetMuteStateResponse_Result { if x != nil { return x.Result } - return SetSubscriptionStateResponse_OK + return SetMuteStateResponse_OK } type NotifyIsTypingRequest struct { @@ -2409,16 +1984,15 @@ type NotifyIsTypingRequest struct { unknownFields protoimpl.UnknownFields ChatId *v1.ChatId `protobuf:"bytes,1,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` - MemberId *ChatMemberId `protobuf:"bytes,2,opt,name=member_id,json=memberId,proto3" json:"member_id,omitempty"` - IsTyping bool `protobuf:"varint,3,opt,name=is_typing,json=isTyping,proto3" json:"is_typing,omitempty"` - Owner *v1.SolanaAccountId `protobuf:"bytes,4,opt,name=owner,proto3" json:"owner,omitempty"` - Signature *v1.Signature `protobuf:"bytes,5,opt,name=signature,proto3" json:"signature,omitempty"` + IsTyping bool `protobuf:"varint,2,opt,name=is_typing,json=isTyping,proto3" json:"is_typing,omitempty"` + Owner *v1.SolanaAccountId `protobuf:"bytes,3,opt,name=owner,proto3" json:"owner,omitempty"` + Signature *v1.Signature `protobuf:"bytes,4,opt,name=signature,proto3" json:"signature,omitempty"` } func (x *NotifyIsTypingRequest) Reset() { *x = NotifyIsTypingRequest{} if protoimpl.UnsafeEnabled { - mi := &file_chat_v2_chat_service_proto_msgTypes[23] + mi := &file_chat_v2_chat_service_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2431,7 +2005,7 @@ func (x *NotifyIsTypingRequest) String() string { func (*NotifyIsTypingRequest) ProtoMessage() {} func (x *NotifyIsTypingRequest) ProtoReflect() protoreflect.Message { - mi := &file_chat_v2_chat_service_proto_msgTypes[23] + mi := &file_chat_v2_chat_service_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2444,7 +2018,7 @@ func (x *NotifyIsTypingRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use NotifyIsTypingRequest.ProtoReflect.Descriptor instead. func (*NotifyIsTypingRequest) Descriptor() ([]byte, []int) { - return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{23} + return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{18} } func (x *NotifyIsTypingRequest) GetChatId() *v1.ChatId { @@ -2454,13 +2028,6 @@ func (x *NotifyIsTypingRequest) GetChatId() *v1.ChatId { return nil } -func (x *NotifyIsTypingRequest) GetMemberId() *ChatMemberId { - if x != nil { - return x.MemberId - } - return nil -} - func (x *NotifyIsTypingRequest) GetIsTyping() bool { if x != nil { return x.IsTyping @@ -2493,7 +2060,7 @@ type NotifyIsTypingResponse struct { func (x *NotifyIsTypingResponse) Reset() { *x = NotifyIsTypingResponse{} if protoimpl.UnsafeEnabled { - mi := &file_chat_v2_chat_service_proto_msgTypes[24] + mi := &file_chat_v2_chat_service_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2506,7 +2073,7 @@ func (x *NotifyIsTypingResponse) String() string { func (*NotifyIsTypingResponse) ProtoMessage() {} func (x *NotifyIsTypingResponse) ProtoReflect() protoreflect.Message { - mi := &file_chat_v2_chat_service_proto_msgTypes[24] + mi := &file_chat_v2_chat_service_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2519,7 +2086,7 @@ func (x *NotifyIsTypingResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use NotifyIsTypingResponse.ProtoReflect.Descriptor instead. func (*NotifyIsTypingResponse) Descriptor() ([]byte, []int) { - return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{24} + return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{19} } func (x *NotifyIsTypingResponse) GetResult() NotifyIsTypingResponse_Result { @@ -2529,34 +2096,33 @@ func (x *NotifyIsTypingResponse) GetResult() NotifyIsTypingResponse_Result { return NotifyIsTypingResponse_OK } -type ChatMessageId struct { +type MessageId struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Guaranteed to be a time-based UUID. This should be used to construct a - // consistently ordered message history based on time using a simple byte - // comparison. + // A lexicographically sortable ID that can be used to sort source of + // chat history. Value []byte `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` } -func (x *ChatMessageId) Reset() { - *x = ChatMessageId{} +func (x *MessageId) Reset() { + *x = MessageId{} if protoimpl.UnsafeEnabled { - mi := &file_chat_v2_chat_service_proto_msgTypes[25] + mi := &file_chat_v2_chat_service_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ChatMessageId) String() string { +func (x *MessageId) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ChatMessageId) ProtoMessage() {} +func (*MessageId) ProtoMessage() {} -func (x *ChatMessageId) ProtoReflect() protoreflect.Message { - mi := &file_chat_v2_chat_service_proto_msgTypes[25] +func (x *MessageId) ProtoReflect() protoreflect.Message { + mi := &file_chat_v2_chat_service_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2567,44 +2133,44 @@ func (x *ChatMessageId) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ChatMessageId.ProtoReflect.Descriptor instead. -func (*ChatMessageId) Descriptor() ([]byte, []int) { - return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{25} +// Deprecated: Use MessageId.ProtoReflect.Descriptor instead. +func (*MessageId) Descriptor() ([]byte, []int) { + return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{20} } -func (x *ChatMessageId) GetValue() []byte { +func (x *MessageId) GetValue() []byte { if x != nil { return x.Value } return nil } -type ChatMemberId struct { +type MemberId struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Globally random UUID + // The publically available 'deposit' address of the user. Value []byte `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` } -func (x *ChatMemberId) Reset() { - *x = ChatMemberId{} +func (x *MemberId) Reset() { + *x = MemberId{} if protoimpl.UnsafeEnabled { - mi := &file_chat_v2_chat_service_proto_msgTypes[26] + mi := &file_chat_v2_chat_service_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ChatMemberId) String() string { +func (x *MemberId) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ChatMemberId) ProtoMessage() {} +func (*MemberId) ProtoMessage() {} -func (x *ChatMemberId) ProtoReflect() protoreflect.Message { - mi := &file_chat_v2_chat_service_proto_msgTypes[26] +func (x *MemberId) ProtoReflect() protoreflect.Message { + mi := &file_chat_v2_chat_service_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2615,12 +2181,12 @@ func (x *ChatMemberId) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ChatMemberId.ProtoReflect.Descriptor instead. -func (*ChatMemberId) Descriptor() ([]byte, []int) { - return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{26} +// Deprecated: Use MemberId.ProtoReflect.Descriptor instead. +func (*MemberId) Descriptor() ([]byte, []int) { + return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{21} } -func (x *ChatMemberId) GetValue() []byte { +func (x *MemberId) GetValue() []byte { if x != nil { return x.Value } @@ -2630,52 +2196,46 @@ func (x *ChatMemberId) GetValue() []byte { // A chat // // todo: Support is_verified in a clean way -type ChatMetadata struct { +type Metadata struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Globally unique ID for this chat ChatId *v1.ChatId `protobuf:"bytes,1,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` // The type of chat Type ChatType `protobuf:"varint,2,opt,name=type,proto3,enum=code.chat.v2.ChatType" json:"type,omitempty"` - // The chat title, which will be localized by server when applicable - Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"` - // The members in this chat - // - // For NOTIFICATION chats, this list has exactly 1 item - // For TWO_WAY chats, this list has exactly 2 items - // - // todo: If we support group chats, then we'll likely return the first page - // - // or a prioritized list. The remaining members would be fetched via - // a new RPC. - Members []*ChatMember `protobuf:"bytes,4,rep,name=members,proto3" json:"members,omitempty"` - // Can the user mute this chat? - CanMute bool `protobuf:"varint,5,opt,name=can_mute,json=canMute,proto3" json:"can_mute,omitempty"` - // Can the user unsubscribe from this chat? - CanUnsubscribe bool `protobuf:"varint,6,opt,name=can_unsubscribe,json=canUnsubscribe,proto3" json:"can_unsubscribe,omitempty"` // Cursor value for this chat for reference in subsequent GetChatsRequest - Cursor *Cursor `protobuf:"bytes,7,opt,name=cursor,proto3" json:"cursor,omitempty"` + Cursor *Cursor `protobuf:"bytes,3,opt,name=cursor,proto3" json:"cursor,omitempty"` + // The chat title, which is _only_ set by server if an explicit title + // was set. Otherwise, clients should fill in an appropriate chat title. + Title string `protobuf:"bytes,4,opt,name=title,proto3" json:"title,omitempty"` + // The members in this chat. + Members []*Member `protobuf:"bytes,5,rep,name=members,proto3" json:"members,omitempty"` + // Whether or not the chat is muted (from the perspective of the caller). + IsMuted bool `protobuf:"varint,6,opt,name=is_muted,json=isMuted,proto3" json:"is_muted,omitempty"` + // Whether or not the chat is mutable (from the persective of the caller). + Muteable bool `protobuf:"varint,7,opt,name=muteable,proto3" json:"muteable,omitempty"` + // Number of (estimated) unread message (from the perspective of the caller). + NumUnread uint32 `protobuf:"varint,8,opt,name=num_unread,json=numUnread,proto3" json:"num_unread,omitempty"` } -func (x *ChatMetadata) Reset() { - *x = ChatMetadata{} +func (x *Metadata) Reset() { + *x = Metadata{} if protoimpl.UnsafeEnabled { - mi := &file_chat_v2_chat_service_proto_msgTypes[27] + mi := &file_chat_v2_chat_service_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ChatMetadata) String() string { +func (x *Metadata) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ChatMetadata) ProtoMessage() {} +func (*Metadata) ProtoMessage() {} -func (x *ChatMetadata) ProtoReflect() protoreflect.Message { - mi := &file_chat_v2_chat_service_proto_msgTypes[27] +func (x *Metadata) ProtoReflect() protoreflect.Message { + mi := &file_chat_v2_chat_service_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2686,71 +2246,78 @@ func (x *ChatMetadata) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ChatMetadata.ProtoReflect.Descriptor instead. -func (*ChatMetadata) Descriptor() ([]byte, []int) { - return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{27} +// Deprecated: Use Metadata.ProtoReflect.Descriptor instead. +func (*Metadata) Descriptor() ([]byte, []int) { + return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{22} } -func (x *ChatMetadata) GetChatId() *v1.ChatId { +func (x *Metadata) GetChatId() *v1.ChatId { if x != nil { return x.ChatId } return nil } -func (x *ChatMetadata) GetType() ChatType { +func (x *Metadata) GetType() ChatType { if x != nil { return x.Type } return ChatType_UNKNOWN_CHAT_TYPE } -func (x *ChatMetadata) GetTitle() string { +func (x *Metadata) GetCursor() *Cursor { + if x != nil { + return x.Cursor + } + return nil +} + +func (x *Metadata) GetTitle() string { if x != nil { return x.Title } return "" } -func (x *ChatMetadata) GetMembers() []*ChatMember { +func (x *Metadata) GetMembers() []*Member { if x != nil { return x.Members } return nil } -func (x *ChatMetadata) GetCanMute() bool { +func (x *Metadata) GetIsMuted() bool { if x != nil { - return x.CanMute + return x.IsMuted } return false } -func (x *ChatMetadata) GetCanUnsubscribe() bool { +func (x *Metadata) GetMuteable() bool { if x != nil { - return x.CanUnsubscribe + return x.Muteable } return false } -func (x *ChatMetadata) GetCursor() *Cursor { +func (x *Metadata) GetNumUnread() uint32 { if x != nil { - return x.Cursor + return x.NumUnread } - return nil + return 0 } // A message in a chat -type ChatMessage struct { +type Message struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Globally unique ID for this message - MessageId *ChatMessageId `protobuf:"bytes,1,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"` + MessageId *MessageId `protobuf:"bytes,1,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"` // The chat member that sent the message. For NOTIFICATION chats, this field // is omitted since the chat has exactly 1 member. - SenderId *ChatMemberId `protobuf:"bytes,2,opt,name=sender_id,json=senderId,proto3" json:"sender_id,omitempty"` + SenderId *MemberId `protobuf:"bytes,2,opt,name=sender_id,json=senderId,proto3" json:"sender_id,omitempty"` // Ordered message content. A message may have more than one piece of content. Content []*Content `protobuf:"bytes,3,rep,name=content,proto3" json:"content,omitempty"` // Timestamp this message was generated at. This value is also encoded in @@ -2760,23 +2327,23 @@ type ChatMessage struct { Cursor *Cursor `protobuf:"bytes,5,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *ChatMessage) Reset() { - *x = ChatMessage{} +func (x *Message) Reset() { + *x = Message{} if protoimpl.UnsafeEnabled { - mi := &file_chat_v2_chat_service_proto_msgTypes[28] + mi := &file_chat_v2_chat_service_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ChatMessage) String() string { +func (x *Message) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ChatMessage) ProtoMessage() {} +func (*Message) ProtoMessage() {} -func (x *ChatMessage) ProtoReflect() protoreflect.Message { - mi := &file_chat_v2_chat_service_proto_msgTypes[28] +func (x *Message) ProtoReflect() protoreflect.Message { + mi := &file_chat_v2_chat_service_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2787,40 +2354,40 @@ func (x *ChatMessage) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ChatMessage.ProtoReflect.Descriptor instead. -func (*ChatMessage) Descriptor() ([]byte, []int) { - return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{28} +// Deprecated: Use Message.ProtoReflect.Descriptor instead. +func (*Message) Descriptor() ([]byte, []int) { + return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{23} } -func (x *ChatMessage) GetMessageId() *ChatMessageId { +func (x *Message) GetMessageId() *MessageId { if x != nil { return x.MessageId } return nil } -func (x *ChatMessage) GetSenderId() *ChatMemberId { +func (x *Message) GetSenderId() *MemberId { if x != nil { return x.SenderId } return nil } -func (x *ChatMessage) GetContent() []*Content { +func (x *Message) GetContent() []*Content { if x != nil { return x.Content } return nil } -func (x *ChatMessage) GetTs() *timestamppb.Timestamp { +func (x *Message) GetTs() *timestamppb.Timestamp { if x != nil { return x.Ts } return nil } -func (x *ChatMessage) GetCursor() *Cursor { +func (x *Message) GetCursor() *Cursor { if x != nil { return x.Cursor } @@ -2828,53 +2395,47 @@ func (x *ChatMessage) GetCursor() *Cursor { } // A user in a chat -type ChatMember struct { +type Member struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Globally unique ID for this chat member - MemberId *ChatMemberId `protobuf:"bytes,1,opt,name=member_id,json=memberId,proto3" json:"member_id,omitempty"` - // Is this chat member yourself? This enables client to identify which member_id - // is themselves. - IsSelf bool `protobuf:"varint,2,opt,name=is_self,json=isSelf,proto3" json:"is_self,omitempty"` + // Public AccountId (for is self...is derived via deposit address) + MemberId *MemberId `protobuf:"bytes,1,opt,name=member_id,json=memberId,proto3" json:"member_id,omitempty"` // The chat member's identity if it has been revealed. - Identity *ChatMemberIdentity `protobuf:"bytes,3,opt,name=identity,proto3" json:"identity,omitempty"` - // Chat message state for this member. This list will have DELIVERED and READ - // pointers, if they exist. SENT pointers should be inferred by persistence - // on server. - Pointers []*Pointer `protobuf:"bytes,4,rep,name=pointers,proto3" json:"pointers,omitempty"` - // Estimated number of unread messages for the chat member in this chat // - // Only valid when is_self = true - NumUnread uint32 `protobuf:"varint,5,opt,name=num_unread,json=numUnread,proto3" json:"num_unread,omitempty"` - // Has the chat member muted this chat? + // Multiple identities here? Well really only needs twitter/other handles + // Repeated PlatformHandles (where code doesn't matter)? + Identity *MemberIdentity `protobuf:"bytes,2,opt,name=identity,proto3" json:"identity,omitempty"` + // Chat message state for this member. // - // Only valid when is_self = true - IsMuted bool `protobuf:"varint,6,opt,name=is_muted,json=isMuted,proto3" json:"is_muted,omitempty"` - // Is the chat member subscribed to this chat? + // If set, the list may contain DELIVERED and READ pointers. SENT pointers + // are only shared between the sender and server, to indicate persistence. // - // Only valid when is_self = true - IsSubscribed bool `protobuf:"varint,7,opt,name=is_subscribed,json=isSubscribed,proto3" json:"is_subscribed,omitempty"` + // The server may wish to omit all pointers in various types of group chats + // or as relief valves. + Pointers []*Pointer `protobuf:"bytes,3,rep,name=pointers,proto3" json:"pointers,omitempty"` + // If the member is the caller (where applicable), will be set to true. + IsSelf bool `protobuf:"varint,4,opt,name=is_self,json=isSelf,proto3" json:"is_self,omitempty"` } -func (x *ChatMember) Reset() { - *x = ChatMember{} +func (x *Member) Reset() { + *x = Member{} if protoimpl.UnsafeEnabled { - mi := &file_chat_v2_chat_service_proto_msgTypes[29] + mi := &file_chat_v2_chat_service_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ChatMember) String() string { +func (x *Member) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ChatMember) ProtoMessage() {} +func (*Member) ProtoMessage() {} -func (x *ChatMember) ProtoReflect() protoreflect.Message { - mi := &file_chat_v2_chat_service_proto_msgTypes[29] +func (x *Member) ProtoReflect() protoreflect.Message { + mi := &file_chat_v2_chat_service_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2885,91 +2446,72 @@ func (x *ChatMember) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ChatMember.ProtoReflect.Descriptor instead. -func (*ChatMember) Descriptor() ([]byte, []int) { - return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{29} +// Deprecated: Use Member.ProtoReflect.Descriptor instead. +func (*Member) Descriptor() ([]byte, []int) { + return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{24} } -func (x *ChatMember) GetMemberId() *ChatMemberId { +func (x *Member) GetMemberId() *MemberId { if x != nil { return x.MemberId } return nil } -func (x *ChatMember) GetIsSelf() bool { - if x != nil { - return x.IsSelf - } - return false -} - -func (x *ChatMember) GetIdentity() *ChatMemberIdentity { +func (x *Member) GetIdentity() *MemberIdentity { if x != nil { return x.Identity } return nil } -func (x *ChatMember) GetPointers() []*Pointer { +func (x *Member) GetPointers() []*Pointer { if x != nil { return x.Pointers } return nil } -func (x *ChatMember) GetNumUnread() uint32 { - if x != nil { - return x.NumUnread - } - return 0 -} - -func (x *ChatMember) GetIsMuted() bool { - if x != nil { - return x.IsMuted - } - return false -} - -func (x *ChatMember) GetIsSubscribed() bool { +func (x *Member) GetIsSelf() bool { if x != nil { - return x.IsSubscribed + return x.IsSelf } return false } // Identity to an external social platform that can be linked to a Code account -type ChatMemberIdentity struct { +type MemberIdentity struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The external social platform linked to this chat member Platform Platform `protobuf:"varint,1,opt,name=platform,proto3,enum=code.chat.v2.Platform" json:"platform,omitempty"` - // The chat member's username on the external social platform + // The chat member's username on the external social platform. Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` + // If present, the display name of the user. + DisplayName string `protobuf:"bytes,3,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` // If present, the URL of the users profile pic. - ProfilePicUrl string `protobuf:"bytes,3,opt,name=profile_pic_url,json=profilePicUrl,proto3" json:"profile_pic_url,omitempty"` + ProfilePicUrl string `protobuf:"bytes,4,opt,name=profile_pic_url,json=profilePicUrl,proto3" json:"profile_pic_url,omitempty"` } -func (x *ChatMemberIdentity) Reset() { - *x = ChatMemberIdentity{} +func (x *MemberIdentity) Reset() { + *x = MemberIdentity{} if protoimpl.UnsafeEnabled { - mi := &file_chat_v2_chat_service_proto_msgTypes[30] + mi := &file_chat_v2_chat_service_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ChatMemberIdentity) String() string { +func (x *MemberIdentity) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ChatMemberIdentity) ProtoMessage() {} +func (*MemberIdentity) ProtoMessage() {} -func (x *ChatMemberIdentity) ProtoReflect() protoreflect.Message { - mi := &file_chat_v2_chat_service_proto_msgTypes[30] +func (x *MemberIdentity) ProtoReflect() protoreflect.Message { + mi := &file_chat_v2_chat_service_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2980,26 +2522,33 @@ func (x *ChatMemberIdentity) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ChatMemberIdentity.ProtoReflect.Descriptor instead. -func (*ChatMemberIdentity) Descriptor() ([]byte, []int) { - return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{30} +// Deprecated: Use MemberIdentity.ProtoReflect.Descriptor instead. +func (*MemberIdentity) Descriptor() ([]byte, []int) { + return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{25} } -func (x *ChatMemberIdentity) GetPlatform() Platform { +func (x *MemberIdentity) GetPlatform() Platform { if x != nil { return x.Platform } return Platform_UNKNOWN_PLATFORM } -func (x *ChatMemberIdentity) GetUsername() string { +func (x *MemberIdentity) GetUsername() string { if x != nil { return x.Username } return "" } -func (x *ChatMemberIdentity) GetProfilePicUrl() string { +func (x *MemberIdentity) GetDisplayName() string { + if x != nil { + return x.DisplayName + } + return "" +} + +func (x *MemberIdentity) GetProfilePicUrl() string { if x != nil { return x.ProfilePicUrl } @@ -3019,15 +2568,15 @@ type Pointer struct { Type PointerType `protobuf:"varint,1,opt,name=type,proto3,enum=code.chat.v2.PointerType" json:"type,omitempty"` // Everything at or before this message ID is considered to have the state // inferred by the type of pointer. - Value *ChatMessageId `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + Value *MessageId `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` // The chat member associated with this pointer state - MemberId *ChatMemberId `protobuf:"bytes,3,opt,name=member_id,json=memberId,proto3" json:"member_id,omitempty"` + MemberId *MemberId `protobuf:"bytes,3,opt,name=member_id,json=memberId,proto3" json:"member_id,omitempty"` } func (x *Pointer) Reset() { *x = Pointer{} if protoimpl.UnsafeEnabled { - mi := &file_chat_v2_chat_service_proto_msgTypes[31] + mi := &file_chat_v2_chat_service_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3040,7 +2589,7 @@ func (x *Pointer) String() string { func (*Pointer) ProtoMessage() {} func (x *Pointer) ProtoReflect() protoreflect.Message { - mi := &file_chat_v2_chat_service_proto_msgTypes[31] + mi := &file_chat_v2_chat_service_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3053,7 +2602,7 @@ func (x *Pointer) ProtoReflect() protoreflect.Message { // Deprecated: Use Pointer.ProtoReflect.Descriptor instead. func (*Pointer) Descriptor() ([]byte, []int) { - return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{31} + return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{26} } func (x *Pointer) GetType() PointerType { @@ -3063,14 +2612,14 @@ func (x *Pointer) GetType() PointerType { return PointerType_UNKNOWN_POINTER_TYPE } -func (x *Pointer) GetValue() *ChatMessageId { +func (x *Pointer) GetValue() *MessageId { if x != nil { return x.Value } return nil } -func (x *Pointer) GetMemberId() *ChatMemberId { +func (x *Pointer) GetMemberId() *MemberId { if x != nil { return x.MemberId } @@ -3089,15 +2638,13 @@ type Content struct { // *Content_Localized // *Content_ExchangeData // *Content_NaclBox - // *Content_ThankYou - // *Content_IdentityRevealed Type isContent_Type `protobuf_oneof:"type"` } func (x *Content) Reset() { *x = Content{} if protoimpl.UnsafeEnabled { - mi := &file_chat_v2_chat_service_proto_msgTypes[32] + mi := &file_chat_v2_chat_service_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3110,7 +2657,7 @@ func (x *Content) String() string { func (*Content) ProtoMessage() {} func (x *Content) ProtoReflect() protoreflect.Message { - mi := &file_chat_v2_chat_service_proto_msgTypes[32] + mi := &file_chat_v2_chat_service_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3123,7 +2670,7 @@ func (x *Content) ProtoReflect() protoreflect.Message { // Deprecated: Use Content.ProtoReflect.Descriptor instead. func (*Content) Descriptor() ([]byte, []int) { - return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{32} + return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{27} } func (m *Content) GetType() isContent_Type { @@ -3161,20 +2708,6 @@ func (x *Content) GetNaclBox() *NaclBoxEncryptedContent { return nil } -func (x *Content) GetThankYou() *ThankYouContent { - if x, ok := x.GetType().(*Content_ThankYou); ok { - return x.ThankYou - } - return nil -} - -func (x *Content) GetIdentityRevealed() *IdentityRevealedContent { - if x, ok := x.GetType().(*Content_IdentityRevealed); ok { - return x.IdentityRevealed - } - return nil -} - type isContent_Type interface { isContent_Type() } @@ -3195,14 +2728,6 @@ type Content_NaclBox struct { NaclBox *NaclBoxEncryptedContent `protobuf:"bytes,4,opt,name=nacl_box,json=naclBox,proto3,oneof"` } -type Content_ThankYou struct { - ThankYou *ThankYouContent `protobuf:"bytes,5,opt,name=thank_you,json=thankYou,proto3,oneof"` -} - -type Content_IdentityRevealed struct { - IdentityRevealed *IdentityRevealedContent `protobuf:"bytes,6,opt,name=identity_revealed,json=identityRevealed,proto3,oneof"` -} - func (*Content_Text) isContent_Type() {} func (*Content_Localized) isContent_Type() {} @@ -3211,10 +2736,6 @@ func (*Content_ExchangeData) isContent_Type() {} func (*Content_NaclBox) isContent_Type() {} -func (*Content_ThankYou) isContent_Type() {} - -func (*Content_IdentityRevealed) isContent_Type() {} - // Raw text content type TextContent struct { state protoimpl.MessageState @@ -3227,7 +2748,7 @@ type TextContent struct { func (x *TextContent) Reset() { *x = TextContent{} if protoimpl.UnsafeEnabled { - mi := &file_chat_v2_chat_service_proto_msgTypes[33] + mi := &file_chat_v2_chat_service_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3240,7 +2761,7 @@ func (x *TextContent) String() string { func (*TextContent) ProtoMessage() {} func (x *TextContent) ProtoReflect() protoreflect.Message { - mi := &file_chat_v2_chat_service_proto_msgTypes[33] + mi := &file_chat_v2_chat_service_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3253,7 +2774,7 @@ func (x *TextContent) ProtoReflect() protoreflect.Message { // Deprecated: Use TextContent.ProtoReflect.Descriptor instead. func (*TextContent) Descriptor() ([]byte, []int) { - return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{33} + return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{28} } func (x *TextContent) GetText() string { @@ -3276,7 +2797,7 @@ type LocalizedContent struct { func (x *LocalizedContent) Reset() { *x = LocalizedContent{} if protoimpl.UnsafeEnabled { - mi := &file_chat_v2_chat_service_proto_msgTypes[34] + mi := &file_chat_v2_chat_service_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3289,7 +2810,7 @@ func (x *LocalizedContent) String() string { func (*LocalizedContent) ProtoMessage() {} func (x *LocalizedContent) ProtoReflect() protoreflect.Message { - mi := &file_chat_v2_chat_service_proto_msgTypes[34] + mi := &file_chat_v2_chat_service_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3302,7 +2823,7 @@ func (x *LocalizedContent) ProtoReflect() protoreflect.Message { // Deprecated: Use LocalizedContent.ProtoReflect.Descriptor instead. func (*LocalizedContent) Descriptor() ([]byte, []int) { - return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{34} + return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{29} } func (x *LocalizedContent) GetKeyOrText() string { @@ -3344,7 +2865,7 @@ type ExchangeDataContent struct { func (x *ExchangeDataContent) Reset() { *x = ExchangeDataContent{} if protoimpl.UnsafeEnabled { - mi := &file_chat_v2_chat_service_proto_msgTypes[35] + mi := &file_chat_v2_chat_service_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3357,7 +2878,7 @@ func (x *ExchangeDataContent) String() string { func (*ExchangeDataContent) ProtoMessage() {} func (x *ExchangeDataContent) ProtoReflect() protoreflect.Message { - mi := &file_chat_v2_chat_service_proto_msgTypes[35] + mi := &file_chat_v2_chat_service_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3370,7 +2891,7 @@ func (x *ExchangeDataContent) ProtoReflect() protoreflect.Message { // Deprecated: Use ExchangeDataContent.ProtoReflect.Descriptor instead. func (*ExchangeDataContent) Descriptor() ([]byte, []int) { - return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{35} + return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{30} } func (x *ExchangeDataContent) GetVerb() ExchangeDataContent_Verb { @@ -3472,7 +2993,7 @@ type NaclBoxEncryptedContent struct { func (x *NaclBoxEncryptedContent) Reset() { *x = NaclBoxEncryptedContent{} if protoimpl.UnsafeEnabled { - mi := &file_chat_v2_chat_service_proto_msgTypes[36] + mi := &file_chat_v2_chat_service_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3485,7 +3006,7 @@ func (x *NaclBoxEncryptedContent) String() string { func (*NaclBoxEncryptedContent) ProtoMessage() {} func (x *NaclBoxEncryptedContent) ProtoReflect() protoreflect.Message { - mi := &file_chat_v2_chat_service_proto_msgTypes[36] + mi := &file_chat_v2_chat_service_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3498,7 +3019,7 @@ func (x *NaclBoxEncryptedContent) ProtoReflect() protoreflect.Message { // Deprecated: Use NaclBoxEncryptedContent.ProtoReflect.Descriptor instead. func (*NaclBoxEncryptedContent) Descriptor() ([]byte, []int) { - return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{36} + return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{31} } func (x *NaclBoxEncryptedContent) GetPeerPublicKey() *v1.SolanaAccountId { @@ -3517,38 +3038,198 @@ func (x *NaclBoxEncryptedContent) GetNonce() []byte { func (x *NaclBoxEncryptedContent) GetEncryptedPayload() []byte { if x != nil { - return x.EncryptedPayload + return x.EncryptedPayload + } + return nil +} + +// Opaque cursor used across paged APIs. Underlying bytes may change as paging +// strategies evolve. Expected length value will vary based on the RPC being +// executed. +type Cursor struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Value []byte `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` +} + +func (x *Cursor) Reset() { + *x = Cursor{} + if protoimpl.UnsafeEnabled { + mi := &file_chat_v2_chat_service_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Cursor) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Cursor) ProtoMessage() {} + +func (x *Cursor) ProtoReflect() protoreflect.Message { + mi := &file_chat_v2_chat_service_proto_msgTypes[32] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Cursor.ProtoReflect.Descriptor instead. +func (*Cursor) Descriptor() ([]byte, []int) { + return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{32} +} + +func (x *Cursor) GetValue() []byte { + if x != nil { + return x.Value + } + return nil +} + +type IsTyping struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MemberId *MemberId `protobuf:"bytes,1,opt,name=member_id,json=memberId,proto3" json:"member_id,omitempty"` + // is_typing indicates whether or not the user is typing. + // If false, the user has explicitly stopped typing. + IsTyping bool `protobuf:"varint,2,opt,name=is_typing,json=isTyping,proto3" json:"is_typing,omitempty"` +} + +func (x *IsTyping) Reset() { + *x = IsTyping{} + if protoimpl.UnsafeEnabled { + mi := &file_chat_v2_chat_service_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *IsTyping) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*IsTyping) ProtoMessage() {} + +func (x *IsTyping) ProtoReflect() protoreflect.Message { + mi := &file_chat_v2_chat_service_proto_msgTypes[33] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use IsTyping.ProtoReflect.Descriptor instead. +func (*IsTyping) Descriptor() ([]byte, []int) { + return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{33} +} + +func (x *IsTyping) GetMemberId() *MemberId { + if x != nil { + return x.MemberId + } + return nil +} + +func (x *IsTyping) GetIsTyping() bool { + if x != nil { + return x.IsTyping + } + return false +} + +type StreamChatEventsRequest_Params struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Owner *v1.SolanaAccountId `protobuf:"bytes,1,opt,name=owner,proto3" json:"owner,omitempty"` + Signature *v1.Signature `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` +} + +func (x *StreamChatEventsRequest_Params) Reset() { + *x = StreamChatEventsRequest_Params{} + if protoimpl.UnsafeEnabled { + mi := &file_chat_v2_chat_service_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StreamChatEventsRequest_Params) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StreamChatEventsRequest_Params) ProtoMessage() {} + +func (x *StreamChatEventsRequest_Params) ProtoReflect() protoreflect.Message { + mi := &file_chat_v2_chat_service_proto_msgTypes[34] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StreamChatEventsRequest_Params.ProtoReflect.Descriptor instead. +func (*StreamChatEventsRequest_Params) Descriptor() ([]byte, []int) { + return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{0, 0} +} + +func (x *StreamChatEventsRequest_Params) GetOwner() *v1.SolanaAccountId { + if x != nil { + return x.Owner + } + return nil +} + +func (x *StreamChatEventsRequest_Params) GetSignature() *v1.Signature { + if x != nil { + return x.Signature } return nil } -// Thank you content that is used to thank Code users for tips -type ThankYouContent struct { +type StreamChatEventsResponse_EventBatch struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The tip intent that is being thanked. - TipIntent *v1.IntentId `protobuf:"bytes,1,opt,name=tip_intent,json=tipIntent,proto3" json:"tip_intent,omitempty"` + Updates []*StreamChatEventsResponse_ChatUpdate `protobuf:"bytes,1,rep,name=updates,proto3" json:"updates,omitempty"` } -func (x *ThankYouContent) Reset() { - *x = ThankYouContent{} +func (x *StreamChatEventsResponse_EventBatch) Reset() { + *x = StreamChatEventsResponse_EventBatch{} if protoimpl.UnsafeEnabled { - mi := &file_chat_v2_chat_service_proto_msgTypes[37] + mi := &file_chat_v2_chat_service_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ThankYouContent) String() string { +func (x *StreamChatEventsResponse_EventBatch) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ThankYouContent) ProtoMessage() {} +func (*StreamChatEventsResponse_EventBatch) ProtoMessage() {} -func (x *ThankYouContent) ProtoReflect() protoreflect.Message { - mi := &file_chat_v2_chat_service_proto_msgTypes[37] +func (x *StreamChatEventsResponse_EventBatch) ProtoReflect() protoreflect.Message { + mi := &file_chat_v2_chat_service_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3559,48 +3240,57 @@ func (x *ThankYouContent) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ThankYouContent.ProtoReflect.Descriptor instead. -func (*ThankYouContent) Descriptor() ([]byte, []int) { - return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{37} +// Deprecated: Use StreamChatEventsResponse_EventBatch.ProtoReflect.Descriptor instead. +func (*StreamChatEventsResponse_EventBatch) Descriptor() ([]byte, []int) { + return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{1, 0} } -func (x *ThankYouContent) GetTipIntent() *v1.IntentId { +func (x *StreamChatEventsResponse_EventBatch) GetUpdates() []*StreamChatEventsResponse_ChatUpdate { if x != nil { - return x.TipIntent + return x.Updates } return nil } -// Identity revealed content that is inserted into chat whenever a chat member -// reveals their identity -type IdentityRevealedContent struct { +// ChatUpdate contains a set of updates for a given chat id. +// +// Only the relevant fields will be set on update. On initial +// stream open, all fields will be set, however. +type StreamChatEventsResponse_ChatUpdate struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The chat member who revealed their identity - MemberId *ChatMemberId `protobuf:"bytes,1,opt,name=member_id,json=memberId,proto3" json:"member_id,omitempty"` - // The identity that was revealed - Identity *ChatMemberIdentity `protobuf:"bytes,2,opt,name=identity,proto3" json:"identity,omitempty"` -} - -func (x *IdentityRevealedContent) Reset() { - *x = IdentityRevealedContent{} + ChatId *v1.ChatId `protobuf:"bytes,1,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` + // metadata contains the latest (full) metadata of the chat. + Metadata *Metadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` + // Message contains the last known message of the chat. + LastMessage *Message `protobuf:"bytes,3,opt,name=last_message,json=lastMessage,proto3" json:"last_message,omitempty"` + // Pointer contians the last known relevant pointer of the chat. + // where 'relevant' means "relevant to UI updates". For example, + // when a user has read the latest message. + Pointer *Pointer `protobuf:"bytes,4,opt,name=pointer,proto3" json:"pointer,omitempty"` + // IsTyping indicates whether or not someone is typing in the group. + IsTyping *IsTyping `protobuf:"bytes,5,opt,name=is_typing,json=isTyping,proto3" json:"is_typing,omitempty"` +} + +func (x *StreamChatEventsResponse_ChatUpdate) Reset() { + *x = StreamChatEventsResponse_ChatUpdate{} if protoimpl.UnsafeEnabled { - mi := &file_chat_v2_chat_service_proto_msgTypes[38] + mi := &file_chat_v2_chat_service_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IdentityRevealedContent) String() string { +func (x *StreamChatEventsResponse_ChatUpdate) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IdentityRevealedContent) ProtoMessage() {} +func (*StreamChatEventsResponse_ChatUpdate) ProtoMessage() {} -func (x *IdentityRevealedContent) ProtoReflect() protoreflect.Message { - mi := &file_chat_v2_chat_service_proto_msgTypes[38] +func (x *StreamChatEventsResponse_ChatUpdate) ProtoReflect() protoreflect.Message { + mi := &file_chat_v2_chat_service_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3611,53 +3301,80 @@ func (x *IdentityRevealedContent) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IdentityRevealedContent.ProtoReflect.Descriptor instead. -func (*IdentityRevealedContent) Descriptor() ([]byte, []int) { - return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{38} +// Deprecated: Use StreamChatEventsResponse_ChatUpdate.ProtoReflect.Descriptor instead. +func (*StreamChatEventsResponse_ChatUpdate) Descriptor() ([]byte, []int) { + return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{1, 1} } -func (x *IdentityRevealedContent) GetMemberId() *ChatMemberId { +func (x *StreamChatEventsResponse_ChatUpdate) GetChatId() *v1.ChatId { if x != nil { - return x.MemberId + return x.ChatId } return nil } -func (x *IdentityRevealedContent) GetIdentity() *ChatMemberIdentity { +func (x *StreamChatEventsResponse_ChatUpdate) GetMetadata() *Metadata { if x != nil { - return x.Identity + return x.Metadata } return nil } -// Opaque cursor used across paged APIs. Underlying bytes may change as paging -// strategies evolve. Expected length value will vary based on the RPC being -// executed. -type Cursor struct { +func (x *StreamChatEventsResponse_ChatUpdate) GetLastMessage() *Message { + if x != nil { + return x.LastMessage + } + return nil +} + +func (x *StreamChatEventsResponse_ChatUpdate) GetPointer() *Pointer { + if x != nil { + return x.Pointer + } + return nil +} + +func (x *StreamChatEventsResponse_ChatUpdate) GetIsTyping() *IsTyping { + if x != nil { + return x.IsTyping + } + return nil +} + +type StreamMessagesRequest_Params struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Value []byte `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` + Owner *v1.SolanaAccountId `protobuf:"bytes,1,opt,name=owner,proto3" json:"owner,omitempty"` + Signature *v1.Signature `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` + ChatId *v1.ChatId `protobuf:"bytes,3,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` + // Callers may optionally specify a resume mode other than last delivery pointer. + // + // Types that are assignable to Resume: + // + // *StreamMessagesRequest_Params_LastKnownMessageId + // *StreamMessagesRequest_Params_LatestOnly + Resume isStreamMessagesRequest_Params_Resume `protobuf_oneof:"resume"` } -func (x *Cursor) Reset() { - *x = Cursor{} +func (x *StreamMessagesRequest_Params) Reset() { + *x = StreamMessagesRequest_Params{} if protoimpl.UnsafeEnabled { - mi := &file_chat_v2_chat_service_proto_msgTypes[39] + mi := &file_chat_v2_chat_service_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Cursor) String() string { +func (x *StreamMessagesRequest_Params) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Cursor) ProtoMessage() {} +func (*StreamMessagesRequest_Params) ProtoMessage() {} -func (x *Cursor) ProtoReflect() protoreflect.Message { - mi := &file_chat_v2_chat_service_proto_msgTypes[39] +func (x *StreamMessagesRequest_Params) ProtoReflect() protoreflect.Message { + mi := &file_chat_v2_chat_service_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3668,46 +3385,96 @@ func (x *Cursor) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Cursor.ProtoReflect.Descriptor instead. -func (*Cursor) Descriptor() ([]byte, []int) { - return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{39} +// Deprecated: Use StreamMessagesRequest_Params.ProtoReflect.Descriptor instead. +func (*StreamMessagesRequest_Params) Descriptor() ([]byte, []int) { + return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{2, 0} } -func (x *Cursor) GetValue() []byte { +func (x *StreamMessagesRequest_Params) GetOwner() *v1.SolanaAccountId { if x != nil { - return x.Value + return x.Owner } return nil } -type IsTyping struct { +func (x *StreamMessagesRequest_Params) GetSignature() *v1.Signature { + if x != nil { + return x.Signature + } + return nil +} + +func (x *StreamMessagesRequest_Params) GetChatId() *v1.ChatId { + if x != nil { + return x.ChatId + } + return nil +} + +func (m *StreamMessagesRequest_Params) GetResume() isStreamMessagesRequest_Params_Resume { + if m != nil { + return m.Resume + } + return nil +} + +func (x *StreamMessagesRequest_Params) GetLastKnownMessageId() *MessageId { + if x, ok := x.GetResume().(*StreamMessagesRequest_Params_LastKnownMessageId); ok { + return x.LastKnownMessageId + } + return nil +} + +func (x *StreamMessagesRequest_Params) GetLatestOnly() bool { + if x, ok := x.GetResume().(*StreamMessagesRequest_Params_LatestOnly); ok { + return x.LatestOnly + } + return false +} + +type isStreamMessagesRequest_Params_Resume interface { + isStreamMessagesRequest_Params_Resume() +} + +type StreamMessagesRequest_Params_LastKnownMessageId struct { + // Server will return all messages newer than this message id. + LastKnownMessageId *MessageId `protobuf:"bytes,4,opt,name=last_known_message_id,json=lastKnownMessageId,proto3,oneof"` +} + +type StreamMessagesRequest_Params_LatestOnly struct { + // Server will not load any previous messages. + LatestOnly bool `protobuf:"varint,5,opt,name=latest_only,json=latestOnly,proto3,oneof"` +} + +func (*StreamMessagesRequest_Params_LastKnownMessageId) isStreamMessagesRequest_Params_Resume() {} + +func (*StreamMessagesRequest_Params_LatestOnly) isStreamMessagesRequest_Params_Resume() {} + +type StreamMessagesResponse_MessageBatch struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - MemberId *ChatMemberId `protobuf:"bytes,1,opt,name=member_id,json=memberId,proto3" json:"member_id,omitempty"` - // is_typing indicates whether or not the user is typing. - // If false, the user has explicitly stopped typing. - IsTyping bool `protobuf:"varint,2,opt,name=is_typing,json=isTyping,proto3" json:"is_typing,omitempty"` + Messages []*Message `protobuf:"bytes,1,rep,name=messages,proto3" json:"messages,omitempty"` } -func (x *IsTyping) Reset() { - *x = IsTyping{} +func (x *StreamMessagesResponse_MessageBatch) Reset() { + *x = StreamMessagesResponse_MessageBatch{} if protoimpl.UnsafeEnabled { - mi := &file_chat_v2_chat_service_proto_msgTypes[40] + mi := &file_chat_v2_chat_service_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IsTyping) String() string { +func (x *StreamMessagesResponse_MessageBatch) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IsTyping) ProtoMessage() {} +func (*StreamMessagesResponse_MessageBatch) ProtoMessage() {} -func (x *IsTyping) ProtoReflect() protoreflect.Message { - mi := &file_chat_v2_chat_service_proto_msgTypes[40] +func (x *StreamMessagesResponse_MessageBatch) ProtoReflect() protoreflect.Message { + mi := &file_chat_v2_chat_service_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3718,25 +3485,18 @@ func (x *IsTyping) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IsTyping.ProtoReflect.Descriptor instead. -func (*IsTyping) Descriptor() ([]byte, []int) { - return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{40} +// Deprecated: Use StreamMessagesResponse_MessageBatch.ProtoReflect.Descriptor instead. +func (*StreamMessagesResponse_MessageBatch) Descriptor() ([]byte, []int) { + return file_chat_v2_chat_service_proto_rawDescGZIP(), []int{3, 0} } -func (x *IsTyping) GetMemberId() *ChatMemberId { +func (x *StreamMessagesResponse_MessageBatch) GetMessages() []*Message { if x != nil { - return x.MemberId + return x.Messages } return nil } -func (x *IsTyping) GetIsTyping() bool { - if x != nil { - return x.IsTyping - } - return false -} - var File_chat_v2_chat_service_proto protoreflect.FileDescriptor var file_chat_v2_chat_service_proto_rawDesc = []byte{ @@ -3750,231 +3510,239 @@ var file_chat_v2_chat_service_proto_rawDesc = []byte{ 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd6, 0x02, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, - 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x05, 0x6f, 0x77, 0x6e, - 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb5, 0x02, 0x0a, 0x17, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x43, 0x68, 0x61, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x46, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2c, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, + 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, 0x68, 0x61, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, + 0x00, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x30, 0x0a, 0x04, 0x70, 0x6f, 0x6e, + 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, + 0x6f, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x04, 0x70, 0x6f, 0x6e, 0x67, 0x1a, 0x90, 0x01, 0x0a, 0x06, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x41, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, + 0x10, 0x01, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x43, 0x0a, 0x09, 0x73, 0x69, 0x67, + 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, + 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x69, + 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, + 0x02, 0x10, 0x01, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x42, 0x0d, + 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x05, 0xb8, 0xe9, 0xc0, 0x03, 0x01, 0x22, 0xe5, 0x04, + 0x0a, 0x18, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, 0x68, 0x61, 0x74, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x04, 0x70, 0x69, + 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, + 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x50, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x04, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x31, 0x0a, 0x05, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, + 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, + 0x4b, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x31, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x53, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, 0x68, 0x61, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x61, 0x74, + 0x63, 0x68, 0x48, 0x00, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x68, 0x0a, 0x0a, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x5a, 0x0a, 0x07, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x63, 0x6f, + 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x43, 0x68, 0x61, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x0d, + 0xba, 0xe9, 0xc0, 0x03, 0x08, 0x92, 0x01, 0x05, 0x08, 0x01, 0x10, 0x80, 0x08, 0x52, 0x07, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x1a, 0x9d, 0x02, 0x0a, 0x0a, 0x43, 0x68, 0x61, 0x74, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x3b, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x49, 0x64, 0x42, 0x0a, + 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, + 0x49, 0x64, 0x12, 0x32, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, + 0x2e, 0x76, 0x32, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x38, 0x0a, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, + 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x12, 0x2f, 0x0a, 0x07, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, + 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x07, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x12, 0x33, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x69, 0x6e, 0x67, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, + 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x73, 0x54, 0x79, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x69, 0x73, + 0x54, 0x79, 0x70, 0x69, 0x6e, 0x67, 0x42, 0x0d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x05, + 0xb8, 0xe9, 0xc0, 0x03, 0x01, 0x22, 0xe9, 0x03, 0x0a, 0x15, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x44, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2a, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x53, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x06, 0x70, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x30, 0x0a, 0x04, 0x70, 0x6f, 0x6e, 0x67, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x6f, 0x6e, 0x67, 0x48, + 0x00, 0x52, 0x04, 0x70, 0x6f, 0x6e, 0x67, 0x1a, 0xc8, 0x02, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x12, 0x41, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, + 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x49, 0x64, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, + 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x43, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, + 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, + 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x3b, 0x0a, 0x07, 0x63, 0x68, + 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6f, + 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, + 0x74, 0x49, 0x64, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, + 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x12, 0x4c, 0x0a, 0x15, 0x6c, 0x61, 0x73, 0x74, 0x5f, + 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, + 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x48, + 0x00, 0x52, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0b, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, + 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0a, 0x6c, 0x61, + 0x74, 0x65, 0x73, 0x74, 0x4f, 0x6e, 0x6c, 0x79, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, + 0x6d, 0x65, 0x42, 0x0d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x05, 0xb8, 0xe9, 0xc0, 0x03, + 0x01, 0x22, 0xaf, 0x02, 0x0a, 0x16, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x04, + 0x70, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x6f, 0x64, + 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x50, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x04, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x31, + 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x12, 0x4f, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, + 0x76, 0x32, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x48, 0x00, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x73, 0x1a, 0x50, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x61, 0x74, + 0x63, 0x68, 0x12, 0x40, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, + 0x2e, 0x76, 0x32, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x0d, 0xba, 0xe9, 0xc0, + 0x03, 0x08, 0x92, 0x01, 0x05, 0x08, 0x01, 0x10, 0x80, 0x08, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x73, 0x42, 0x0d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x05, 0xb8, 0xe9, + 0xc0, 0x03, 0x01, 0x22, 0x55, 0x0a, 0x0b, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x72, 0x72, + 0x6f, 0x72, 0x12, 0x32, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x1e, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, + 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x43, 0x6f, 0x64, 0x65, + 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0a, + 0x0a, 0x06, 0x44, 0x45, 0x4e, 0x49, 0x45, 0x44, 0x10, 0x00, 0x22, 0xd6, 0x02, 0x0a, 0x0f, 0x47, + 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, + 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, + 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, + 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x42, 0x0a, + 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, + 0x72, 0x12, 0x43, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x42, + 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x73, 0x69, 0x67, + 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x26, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, + 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x09, 0xba, 0xe9, 0xc0, 0x03, 0x04, + 0x2a, 0x02, 0x18, 0x64, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x2c, + 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x75, + 0x72, 0x73, 0x6f, 0x72, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x12, 0x45, 0x0a, 0x09, + 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x27, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x47, + 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, + 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x22, 0x1e, 0x0a, 0x09, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x07, 0x0a, 0x03, 0x41, 0x53, 0x43, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x45, 0x53, + 0x43, 0x10, 0x01, 0x22, 0x9f, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, + 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, + 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x3a, 0x0a, 0x05, 0x63, 0x68, 0x61, 0x74, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, + 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x0c, + 0xba, 0xe9, 0xc0, 0x03, 0x07, 0x92, 0x01, 0x04, 0x08, 0x00, 0x10, 0x64, 0x52, 0x05, 0x63, 0x68, + 0x61, 0x74, 0x73, 0x22, 0x10, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x06, 0x0a, + 0x02, 0x4f, 0x4b, 0x10, 0x00, 0x22, 0x99, 0x03, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x07, + 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, + 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x68, 0x61, 0x74, 0x49, 0x64, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, + 0x01, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x12, 0x41, 0x0a, 0x05, 0x6f, 0x77, 0x6e, + 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x43, 0x0a, 0x09, - 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x12, 0x26, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, + 0x65, 0x12, 0x26, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x09, 0xba, 0xe9, 0xc0, 0x03, 0x04, 0x2a, 0x02, 0x18, 0x64, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x75, 0x72, - 0x73, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63, 0x6f, 0x64, 0x65, + 0x73, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x52, - 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x12, 0x45, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x63, 0x6f, 0x64, - 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, - 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x1e, - 0x0a, 0x09, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x07, 0x0a, 0x03, 0x41, - 0x53, 0x43, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x45, 0x53, 0x43, 0x10, 0x01, 0x22, 0xb2, - 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, - 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x12, 0x3e, 0x0a, 0x05, 0x63, 0x68, 0x61, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, - 0x2e, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x0c, 0xba, - 0xe9, 0xc0, 0x03, 0x07, 0x92, 0x01, 0x04, 0x08, 0x00, 0x10, 0x64, 0x52, 0x05, 0x63, 0x68, 0x61, - 0x74, 0x73, 0x22, 0x1f, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x06, 0x0a, 0x02, - 0x4f, 0x4b, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, - 0x44, 0x10, 0x01, 0x22, 0xde, 0x03, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x07, 0x63, 0x68, - 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6f, - 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, - 0x74, 0x49, 0x64, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, - 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x12, 0x43, 0x0a, 0x09, 0x6d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x6f, 0x64, - 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x49, 0x64, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, - 0x10, 0x01, 0x52, 0x08, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x64, 0x12, 0x41, 0x0a, 0x05, - 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x6f, + 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x12, 0x48, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x63, 0x6f, 0x64, + 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0x1e, 0x0a, 0x09, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x07, + 0x0a, 0x03, 0x41, 0x53, 0x43, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x45, 0x53, 0x43, 0x10, + 0x01, 0x22, 0xb6, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x06, 0x72, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x63, 0x6f, 0x64, 0x65, + 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x3f, 0x0a, 0x08, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, + 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x42, 0x0c, 0xba, 0xe9, 0xc0, 0x03, 0x07, 0x92, 0x01, 0x04, 0x08, 0x00, + 0x10, 0x64, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x22, 0x1c, 0x0a, 0x06, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x4b, 0x10, 0x00, 0x12, 0x0a, + 0x0a, 0x06, 0x44, 0x45, 0x4e, 0x49, 0x45, 0x44, 0x10, 0x01, 0x22, 0xfc, 0x01, 0x0a, 0x10, 0x53, + 0x74, 0x61, 0x72, 0x74, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x41, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, + 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, + 0x53, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x42, + 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x6f, 0x77, 0x6e, + 0x65, 0x72, 0x12, 0x43, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, + 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x73, 0x69, + 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x4b, 0x0a, 0x0c, 0x74, 0x77, 0x6f, 0x5f, 0x77, + 0x61, 0x79, 0x5f, 0x63, 0x68, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, + 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, + 0x72, 0x74, 0x54, 0x77, 0x6f, 0x57, 0x61, 0x79, 0x43, 0x68, 0x61, 0x74, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x0a, 0x74, 0x77, 0x6f, 0x57, 0x61, 0x79, + 0x43, 0x68, 0x61, 0x74, 0x42, 0x13, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, + 0x72, 0x73, 0x12, 0x05, 0xb8, 0xe9, 0xc0, 0x03, 0x01, 0x22, 0x9e, 0x01, 0x0a, 0x19, 0x53, 0x74, + 0x61, 0x72, 0x74, 0x54, 0x77, 0x6f, 0x57, 0x61, 0x79, 0x43, 0x68, 0x61, 0x74, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x4a, 0x0a, 0x0a, 0x6f, 0x74, 0x68, 0x65, 0x72, + 0x5f, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x42, 0x0a, 0xba, 0xe9, - 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, - 0x43, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x42, 0x0a, 0xba, - 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x12, 0x26, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, - 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x09, 0xba, 0xe9, 0xc0, 0x03, 0x04, 0x2a, 0x02, - 0x18, 0x64, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x2c, 0x0a, 0x06, - 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63, - 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x75, 0x72, 0x73, - 0x6f, 0x72, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x12, 0x48, 0x0a, 0x09, 0x64, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, - 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, - 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x1e, 0x0a, 0x09, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x53, 0x43, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x45, - 0x53, 0x43, 0x10, 0x01, 0x22, 0xe5, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x06, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x63, - 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x43, - 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, - 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x0c, 0xba, 0xe9, 0xc0, - 0x03, 0x07, 0x92, 0x01, 0x04, 0x08, 0x00, 0x10, 0x64, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x73, 0x22, 0x47, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x06, 0x0a, - 0x02, 0x4f, 0x4b, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x45, 0x4e, 0x49, 0x45, 0x44, 0x10, - 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, - 0x55, 0x4e, 0x44, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, - 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x03, 0x22, 0x9f, 0x02, 0x0a, - 0x13, 0x4f, 0x70, 0x65, 0x6e, 0x43, 0x68, 0x61, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x12, 0x3b, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x49, 0x64, 0x42, 0x0a, 0xba, - 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, - 0x64, 0x12, 0x43, 0x0a, 0x09, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, - 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x64, - 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x6d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x49, 0x64, 0x12, 0x41, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, - 0x10, 0x01, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x43, 0x0a, 0x09, 0x73, 0x69, 0x67, - 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, - 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x69, - 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, - 0x02, 0x10, 0x01, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0xc1, - 0x01, 0x0a, 0x0f, 0x43, 0x68, 0x61, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x12, 0x35, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, - 0x76, 0x32, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, - 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x31, 0x0a, 0x07, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x6f, 0x64, - 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x48, 0x00, 0x52, 0x07, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x35, 0x0a, 0x09, - 0x69, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x16, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x49, - 0x73, 0x54, 0x79, 0x70, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x08, 0x69, 0x73, 0x54, 0x79, 0x70, - 0x69, 0x6e, 0x67, 0x42, 0x0d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x05, 0xb8, 0xe9, 0xc0, - 0x03, 0x01, 0x22, 0x5c, 0x0a, 0x14, 0x43, 0x68, 0x61, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x44, 0x0a, 0x06, 0x65, 0x76, - 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x6f, 0x64, - 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x53, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x0d, 0xba, 0xe9, 0xc0, 0x03, 0x08, - 0x92, 0x01, 0x05, 0x08, 0x01, 0x10, 0x80, 0x08, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, - 0x22, 0x7b, 0x0a, 0x14, 0x43, 0x68, 0x61, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x3b, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, - 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x52, - 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0a, 0x0a, - 0x06, 0x44, 0x45, 0x4e, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x48, 0x41, - 0x54, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x01, 0x22, 0xa0, 0x01, - 0x0a, 0x17, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, 0x68, 0x61, 0x74, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x0b, 0x6f, 0x70, 0x65, - 0x6e, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, - 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x70, - 0x65, 0x6e, 0x43, 0x68, 0x61, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x48, 0x00, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, - 0x30, 0x0a, 0x04, 0x70, 0x6f, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x6f, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x04, 0x70, 0x6f, 0x6e, - 0x67, 0x42, 0x0d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x05, 0xb8, 0xe9, 0xc0, 0x03, 0x01, - 0x22, 0xd5, 0x01, 0x0a, 0x18, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, 0x68, 0x61, 0x74, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, - 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, - 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x68, 0x61, - 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x61, 0x74, 0x63, - 0x68, 0x48, 0x00, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x30, 0x0a, 0x04, 0x70, - 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x6f, 0x64, 0x65, - 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x50, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x04, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x3a, 0x0a, - 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, - 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x68, 0x61, 0x74, - 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, - 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x0d, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x12, 0x05, 0xb8, 0xe9, 0xc0, 0x03, 0x01, 0x22, 0xf2, 0x01, 0x0a, 0x10, 0x53, 0x74, 0x61, - 0x72, 0x74, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, - 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, - 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, - 0x6c, 0x61, 0x6e, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x42, 0x0a, 0xba, - 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, - 0x12, 0x43, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x42, 0x0a, - 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x41, 0x0a, 0x08, 0x74, 0x69, 0x70, 0x5f, 0x63, 0x68, 0x61, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, - 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x70, 0x43, - 0x68, 0x61, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, - 0x07, 0x74, 0x69, 0x70, 0x43, 0x68, 0x61, 0x74, 0x42, 0x13, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, - 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x05, 0xb8, 0xe9, 0xc0, 0x03, 0x01, 0x22, 0x5b, 0x0a, - 0x16, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x70, 0x43, 0x68, 0x61, 0x74, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x41, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x6e, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6f, 0x64, - 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x74, 0x65, - 0x6e, 0x74, 0x49, 0x64, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, - 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0xb8, 0x01, 0x0a, 0x11, 0x53, + 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x55, + 0x73, 0x65, 0x72, 0x12, 0x35, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x49, 0x64, + 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0xeb, 0x01, 0x0a, 0x11, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x12, 0x2e, 0x0a, 0x04, 0x63, 0x68, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x68, - 0x61, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x04, 0x63, 0x68, 0x61, 0x74, - 0x22, 0x33, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x4b, - 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x45, 0x4e, 0x49, 0x45, 0x44, 0x10, 0x01, 0x12, 0x15, - 0x0a, 0x11, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x50, 0x41, 0x52, 0x41, 0x4d, 0x45, - 0x54, 0x45, 0x52, 0x10, 0x02, 0x22, 0xdd, 0x02, 0x0a, 0x12, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x07, - 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, - 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, - 0x68, 0x61, 0x74, 0x49, 0x64, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, - 0x01, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x12, 0x43, 0x0a, 0x09, 0x6d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, - 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x68, 0x61, 0x74, - 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x64, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, - 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x64, 0x12, 0x3d, - 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x15, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x43, - 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x42, 0x0c, 0xba, 0xe9, 0xc0, 0x03, 0x07, 0x92, 0x01, 0x04, - 0x08, 0x01, 0x10, 0x01, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x41, 0x0a, - 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, - 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, - 0x6c, 0x61, 0x6e, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x42, 0x0a, 0xba, - 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, - 0x12, 0x43, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x42, 0x0a, - 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0xef, 0x01, 0x0a, 0x13, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, - 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, - 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x65, 0x6e, - 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, - 0x33, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, - 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x07, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x22, 0x61, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x06, - 0x0a, 0x02, 0x4f, 0x4b, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x45, 0x4e, 0x49, 0x45, 0x44, - 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, - 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, - 0x44, 0x5f, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x03, 0x12, 0x18, 0x0a, - 0x14, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x4e, 0x54, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x04, 0x22, 0x99, 0x02, 0x0a, 0x15, 0x41, 0x64, 0x76, 0x61, - 0x6e, 0x63, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x3b, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x49, 0x64, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, - 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x12, 0x3b, - 0x0a, 0x07, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x15, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x50, - 0x6f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, - 0x10, 0x01, 0x52, 0x07, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x41, 0x0a, 0x05, 0x6f, + 0x12, 0x2a, 0x0a, 0x04, 0x63, 0x68, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, + 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x04, 0x63, 0x68, 0x61, 0x74, 0x22, 0x6a, 0x0a, 0x06, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x4b, 0x10, 0x00, 0x12, 0x0a, + 0x0a, 0x06, 0x44, 0x45, 0x4e, 0x49, 0x45, 0x44, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x49, 0x4e, + 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x50, 0x41, 0x52, 0x41, 0x4d, 0x45, 0x54, 0x45, 0x52, 0x10, + 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x14, + 0x0a, 0x10, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4e, 0x47, 0x5f, 0x49, 0x44, 0x45, 0x4e, 0x54, 0x49, + 0x54, 0x59, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x4e, 0x4f, 0x54, + 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x05, 0x22, 0x98, 0x02, 0x0a, 0x12, 0x53, 0x65, 0x6e, + 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x3b, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x49, 0x64, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, + 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x12, 0x3d, 0x0a, 0x07, + 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, + 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x42, 0x0c, 0xba, 0xe9, 0xc0, 0x03, 0x07, 0x92, 0x01, 0x04, 0x08, 0x01, + 0x10, 0x01, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x41, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x42, 0x0a, 0xba, 0xe9, 0xc0, @@ -3983,360 +3751,286 @@ var file_chat_v2_chat_service_proto_rawDesc = []byte{ 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x22, 0xc0, 0x01, 0x0a, 0x16, 0x41, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x50, - 0x6f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, - 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, - 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x64, - 0x76, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x22, 0x61, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x06, 0x0a, - 0x02, 0x4f, 0x4b, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x45, 0x4e, 0x49, 0x45, 0x44, 0x10, - 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, - 0x55, 0x4e, 0x44, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, - 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x03, 0x12, 0x18, 0x0a, 0x14, - 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x10, 0x04, 0x22, 0xeb, 0x02, 0x0a, 0x15, 0x52, 0x65, 0x76, 0x65, 0x61, - 0x6c, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x75, 0x72, 0x65, 0x22, 0xc0, 0x01, 0x0a, 0x13, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x06, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x63, 0x6f, + 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2f, 0x0a, + 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, + 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x36, + 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x4b, 0x10, 0x00, + 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x45, 0x4e, 0x49, 0x45, 0x44, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, + 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x4e, 0x54, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x10, 0x02, 0x22, 0x99, 0x02, 0x0a, 0x15, 0x41, 0x64, 0x76, 0x61, 0x6e, + 0x63, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x49, 0x64, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, - 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x12, 0x43, 0x0a, - 0x09, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, - 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x64, 0x42, 0x0a, 0xba, 0xe9, - 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x49, 0x64, 0x12, 0x48, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, - 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, - 0x10, 0x01, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x41, 0x0a, 0x05, - 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x6f, + 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x12, 0x3b, 0x0a, + 0x07, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, + 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x6f, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, + 0x01, 0x52, 0x07, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x41, 0x0a, 0x05, 0x6f, 0x77, + 0x6e, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x6f, 0x64, 0x65, + 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x6c, 0x61, 0x6e, + 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, + 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x43, 0x0a, + 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x42, 0x0a, 0xba, 0xe9, 0xc0, + 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x22, 0x92, 0x01, 0x0a, 0x16, 0x41, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x6f, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, + 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, + 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x64, 0x76, + 0x61, 0x6e, 0x63, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x22, 0x33, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x06, 0x0a, 0x02, + 0x4f, 0x4b, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x45, 0x4e, 0x49, 0x45, 0x44, 0x10, 0x01, + 0x12, 0x15, 0x0a, 0x11, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, + 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x02, 0x22, 0xf5, 0x01, 0x0a, 0x13, 0x53, 0x65, 0x74, 0x4d, + 0x75, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x3b, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x49, 0x64, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, + 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, + 0x69, 0x73, 0x5f, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, + 0x69, 0x73, 0x4d, 0x75, 0x74, 0x65, 0x64, 0x12, 0x41, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, + 0x02, 0x10, 0x01, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x43, 0x0a, 0x09, 0x73, 0x69, + 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, + 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, + 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, + 0x86, 0x01, 0x0a, 0x14, 0x53, 0x65, 0x74, 0x4d, 0x75, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, + 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x65, 0x74, 0x4d, 0x75, 0x74, 0x65, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x2b, 0x0a, 0x06, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x4b, 0x10, 0x00, 0x12, 0x0a, 0x0a, + 0x06, 0x44, 0x45, 0x4e, 0x49, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x41, 0x4e, + 0x54, 0x5f, 0x4d, 0x55, 0x54, 0x45, 0x10, 0x02, 0x22, 0xf9, 0x01, 0x0a, 0x15, 0x4e, 0x6f, 0x74, + 0x69, 0x66, 0x79, 0x49, 0x73, 0x54, 0x79, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x49, 0x64, 0x42, 0x0a, 0xba, 0xe9, 0xc0, + 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x12, + 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x54, 0x79, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x41, 0x0a, 0x05, + 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, - 0x43, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x43, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x22, 0xe5, 0x01, 0x0a, 0x16, 0x52, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x49, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x43, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x2b, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x52, - 0x65, 0x76, 0x65, 0x61, 0x6c, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x12, 0x33, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, - 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x51, 0x0a, 0x06, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x4b, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x44, - 0x45, 0x4e, 0x49, 0x45, 0x44, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x48, 0x41, 0x54, 0x5f, - 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x02, 0x12, 0x1f, 0x0a, 0x1b, 0x44, - 0x49, 0x46, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x54, - 0x59, 0x5f, 0x52, 0x45, 0x56, 0x45, 0x41, 0x4c, 0x45, 0x44, 0x10, 0x03, 0x22, 0xba, 0x02, 0x0a, - 0x13, 0x53, 0x65, 0x74, 0x4d, 0x75, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x49, 0x64, 0x42, 0x0a, 0xba, - 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, - 0x64, 0x12, 0x43, 0x0a, 0x09, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, - 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x64, - 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x6d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x6d, 0x75, 0x74, - 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x4d, 0x75, 0x74, 0x65, - 0x64, 0x12, 0x41, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1f, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x53, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, - 0x64, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x6f, - 0x77, 0x6e, 0x65, 0x72, 0x12, 0x43, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, - 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x9a, 0x01, 0x0a, 0x14, 0x53, 0x65, - 0x74, 0x4d, 0x75, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x41, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, - 0x32, 0x2e, 0x53, 0x65, 0x74, 0x4d, 0x75, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x3f, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, - 0x06, 0x0a, 0x02, 0x4f, 0x4b, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x45, 0x4e, 0x49, 0x45, - 0x44, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, - 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x41, 0x4e, 0x54, 0x5f, - 0x4d, 0x55, 0x54, 0x45, 0x10, 0x03, 0x22, 0xcc, 0x02, 0x0a, 0x1b, 0x53, 0x65, 0x74, 0x53, 0x75, - 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x49, 0x64, 0x42, - 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x63, 0x68, 0x61, - 0x74, 0x49, 0x64, 0x12, 0x43, 0x0a, 0x09, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, - 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x49, 0x64, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, - 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x73, 0x5f, 0x73, - 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0c, 0x69, 0x73, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x64, 0x12, 0x41, 0x0a, - 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, - 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, - 0x6c, 0x61, 0x6e, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x42, 0x0a, 0xba, - 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, - 0x12, 0x43, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x42, 0x0a, - 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0xb1, 0x01, 0x0a, 0x1c, 0x53, 0x65, 0x74, 0x53, 0x75, 0x62, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, - 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x22, 0x46, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x06, 0x0a, 0x02, 0x4f, - 0x4b, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x45, 0x4e, 0x49, 0x45, 0x44, 0x10, 0x01, 0x12, - 0x12, 0x0a, 0x0e, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, - 0x44, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x41, 0x4e, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x55, - 0x42, 0x53, 0x43, 0x52, 0x49, 0x42, 0x45, 0x10, 0x03, 0x22, 0xbe, 0x02, 0x0a, 0x15, 0x4e, 0x6f, - 0x74, 0x69, 0x66, 0x79, 0x49, 0x73, 0x54, 0x79, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x49, 0x64, 0x42, 0x0a, 0xba, 0xe9, - 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, - 0x12, 0x43, 0x0a, 0x09, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, - 0x76, 0x32, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x64, 0x42, - 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x6d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x69, - 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x54, 0x79, 0x70, 0x69, - 0x6e, 0x67, 0x12, 0x41, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x49, 0x64, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, - 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x43, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, - 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x8f, 0x01, 0x0a, 0x16, 0x4e, - 0x6f, 0x74, 0x69, 0x66, 0x79, 0x49, 0x73, 0x54, 0x79, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, - 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x49, 0x73, 0x54, 0x79, 0x70, - 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x30, 0x0a, 0x06, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x4b, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, - 0x44, 0x45, 0x4e, 0x49, 0x45, 0x44, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x48, 0x41, 0x54, - 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x02, 0x22, 0x32, 0x0a, 0x0d, - 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x21, 0x0a, + 0x74, 0x75, 0x72, 0x65, 0x22, 0x7b, 0x0a, 0x16, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x49, 0x73, + 0x54, 0x79, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, + 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, + 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x6f, + 0x74, 0x69, 0x66, 0x79, 0x49, 0x73, 0x54, 0x79, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x22, 0x1c, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x06, 0x0a, + 0x02, 0x4f, 0x4b, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x45, 0x4e, 0x49, 0x45, 0x44, 0x10, + 0x01, 0x22, 0x2e, 0x0a, 0x09, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x21, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x0b, 0xba, + 0xe9, 0xc0, 0x03, 0x06, 0x7a, 0x04, 0x10, 0x10, 0x18, 0x10, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x22, 0x2d, 0x0a, 0x08, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x0b, 0xba, 0xe9, - 0xc0, 0x03, 0x06, 0x7a, 0x04, 0x10, 0x10, 0x18, 0x10, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x22, 0x31, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x64, - 0x12, 0x21, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, - 0x0b, 0xba, 0xe9, 0xc0, 0x03, 0x06, 0x7a, 0x04, 0x10, 0x10, 0x18, 0x10, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x22, 0xdb, 0x02, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x49, 0x64, 0x42, 0x0a, 0xba, - 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, - 0x64, 0x12, 0x36, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x16, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x43, - 0x68, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x82, 0x01, - 0x02, 0x20, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x05, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0c, 0xba, 0xe9, 0xc0, 0x03, 0x07, 0x72, - 0x05, 0x10, 0x01, 0x18, 0x80, 0x08, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x40, 0x0a, - 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, - 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x68, - 0x61, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x42, 0x0c, 0xba, 0xe9, 0xc0, 0x03, 0x07, 0x92, - 0x01, 0x04, 0x08, 0x01, 0x10, 0x02, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, - 0x19, 0x0a, 0x08, 0x63, 0x61, 0x6e, 0x5f, 0x6d, 0x75, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x07, 0x63, 0x61, 0x6e, 0x4d, 0x75, 0x74, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x61, - 0x6e, 0x5f, 0x75, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0e, 0x63, 0x61, 0x6e, 0x55, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, - 0x69, 0x62, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, - 0x76, 0x32, 0x2e, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, - 0x72, 0x22, 0xb3, 0x02, 0x0a, 0x0b, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x12, 0x46, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, - 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x49, 0x64, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x37, 0x0a, 0x09, 0x73, 0x65, 0x6e, - 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, - 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x68, 0x61, 0x74, - 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x64, 0x52, 0x08, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, - 0x49, 0x64, 0x12, 0x3d, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, - 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x42, 0x0c, 0xba, 0xe9, 0xc0, 0x03, - 0x07, 0x92, 0x01, 0x04, 0x08, 0x01, 0x10, 0x02, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, - 0x74, 0x12, 0x36, 0x0a, 0x02, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, - 0xb2, 0x01, 0x02, 0x08, 0x01, 0x52, 0x02, 0x74, 0x73, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x75, 0x72, - 0x73, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63, 0x6f, 0x64, 0x65, - 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x52, - 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0xc8, 0x02, 0x0a, 0x0a, 0x43, 0x68, 0x61, 0x74, - 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x43, 0x0a, 0x09, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x6f, 0x64, 0x65, - 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x49, 0x64, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, - 0x01, 0x52, 0x08, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x69, - 0x73, 0x5f, 0x73, 0x65, 0x6c, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x73, - 0x53, 0x65, 0x6c, 0x66, 0x12, 0x3c, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, - 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x74, 0x79, 0x12, 0x3f, 0x0a, 0x08, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, - 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x42, 0x0c, 0xba, 0xe9, 0xc0, - 0x03, 0x07, 0x92, 0x01, 0x04, 0x08, 0x00, 0x10, 0x02, 0x52, 0x08, 0x70, 0x6f, 0x69, 0x6e, 0x74, - 0x65, 0x72, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x75, 0x6d, 0x5f, 0x75, 0x6e, 0x72, 0x65, 0x61, - 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x6e, 0x75, 0x6d, 0x55, 0x6e, 0x72, 0x65, - 0x61, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x4d, 0x75, 0x74, 0x65, 0x64, 0x12, 0x23, 0x0a, - 0x0d, 0x69, 0x73, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x64, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x73, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, - 0x65, 0x64, 0x22, 0xb3, 0x01, 0x0a, 0x12, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x3e, 0x0a, 0x08, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x63, 0x6f, - 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x82, 0x01, 0x02, 0x18, 0x01, 0x52, - 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x27, 0x0a, 0x08, 0x75, 0x73, 0x65, - 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xba, 0xe9, 0xc0, - 0x03, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x0f, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x69, - 0x63, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0c, 0xba, 0xe9, 0xc0, - 0x03, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x66, 0x69, - 0x6c, 0x65, 0x50, 0x69, 0x63, 0x55, 0x72, 0x6c, 0x22, 0xc8, 0x01, 0x0a, 0x07, 0x50, 0x6f, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x12, 0x39, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, - 0x32, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x42, 0x0a, 0xba, - 0xe9, 0xc0, 0x03, 0x05, 0x82, 0x01, 0x02, 0x20, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, - 0x3d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, - 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x68, - 0x61, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x42, 0x0a, 0xba, 0xe9, 0xc0, - 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x43, - 0x0a, 0x09, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, - 0x2e, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x64, 0x42, 0x0a, 0xba, - 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x6d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x49, 0x64, 0x22, 0xab, 0x03, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, - 0x2f, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x65, 0x78, - 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, - 0x12, 0x3e, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, - 0x76, 0x32, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, - 0x12, 0x48, 0x0a, 0x0d, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, + 0xc0, 0x03, 0x06, 0x7a, 0x04, 0x10, 0x20, 0x18, 0x20, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x22, 0xe5, 0x02, 0x0a, 0x08, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, + 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, + 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, + 0x43, 0x68, 0x61, 0x74, 0x49, 0x64, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, + 0x10, 0x01, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, + 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, + 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x82, 0x01, 0x02, 0x20, 0x00, 0x52, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, + 0x32, 0x2e, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, + 0x12, 0x22, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x0c, 0xba, 0xe9, 0xc0, 0x03, 0x07, 0x72, 0x05, 0x10, 0x00, 0x18, 0x80, 0x08, 0x52, 0x05, 0x74, + 0x69, 0x74, 0x6c, 0x65, 0x12, 0x3c, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, + 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x42, 0x0c, 0xba, 0xe9, 0xc0, + 0x03, 0x07, 0x92, 0x01, 0x04, 0x08, 0x01, 0x10, 0x02, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x4d, 0x75, 0x74, 0x65, 0x64, 0x12, 0x1a, 0x0a, + 0x08, 0x6d, 0x75, 0x74, 0x65, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x08, 0x6d, 0x75, 0x74, 0x65, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x75, 0x6d, + 0x5f, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x6e, + 0x75, 0x6d, 0x55, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x22, 0xa7, 0x02, 0x0a, 0x07, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x12, 0x42, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, + 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, + 0x64, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x09, 0x73, 0x65, 0x6e, 0x64, + 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6f, + 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x49, 0x64, 0x52, 0x08, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x3d, 0x0a, + 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, + 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x42, 0x0c, 0xba, 0xe9, 0xc0, 0x03, 0x07, 0x92, 0x01, 0x04, 0x08, + 0x01, 0x10, 0x02, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x36, 0x0a, 0x02, + 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0xb2, 0x01, 0x02, 0x08, 0x01, + 0x52, 0x02, 0x74, 0x73, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, + 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, + 0x6f, 0x72, 0x22, 0xdd, 0x01, 0x0a, 0x06, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x3f, 0x0a, + 0x09, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x64, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, + 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x64, 0x12, 0x38, + 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x08, + 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x3f, 0x0a, 0x08, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x6f, 0x64, + 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x42, 0x0c, 0xba, 0xe9, 0xc0, 0x03, 0x07, 0x92, 0x01, 0x04, 0x08, 0x00, 0x10, 0x02, 0x52, + 0x08, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x73, 0x5f, + 0x73, 0x65, 0x6c, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x73, 0x53, 0x65, + 0x6c, 0x66, 0x22, 0xdc, 0x01, 0x0a, 0x0e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x3e, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, + 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x42, + 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x82, 0x01, 0x02, 0x18, 0x01, 0x52, 0x08, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x27, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xba, 0xe9, 0xc0, 0x03, 0x06, 0x72, 0x04, + 0x10, 0x01, 0x18, 0x0f, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2d, + 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x72, 0x03, 0x18, 0xff, 0x01, + 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x32, 0x0a, + 0x0f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x69, 0x63, 0x5f, 0x75, 0x72, 0x6c, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x72, 0x03, 0x18, + 0xff, 0x01, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x69, 0x63, 0x55, 0x72, + 0x6c, 0x22, 0xc0, 0x01, 0x0a, 0x07, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x39, 0x0a, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x63, 0x6f, + 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x82, 0x01, 0x02, + 0x20, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, + 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, + 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x12, 0x3f, 0x0a, 0x09, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x69, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, + 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x64, 0x42, 0x0a, + 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x6d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x49, 0x64, 0x22, 0x97, 0x02, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x12, 0x2f, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x65, + 0x78, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x04, 0x74, 0x65, 0x78, + 0x74, 0x12, 0x3e, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, + 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x43, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, + 0x64, 0x12, 0x48, 0x0a, 0x0d, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, + 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0c, 0x65, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x42, 0x0a, 0x08, 0x6e, + 0x61, 0x63, 0x6c, 0x5f, 0x62, 0x6f, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, + 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x61, 0x63, + 0x6c, 0x42, 0x6f, 0x78, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x07, 0x6e, 0x61, 0x63, 0x6c, 0x42, 0x6f, 0x78, 0x42, + 0x0d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x05, 0xb8, 0xe9, 0xc0, 0x03, 0x01, 0x22, 0x2f, + 0x0a, 0x0b, 0x54, 0x65, 0x78, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a, + 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0c, 0xba, 0xe9, 0xc0, + 0x03, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0x80, 0x08, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x22, + 0x40, 0x0a, 0x10, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x0b, 0x6b, 0x65, 0x79, 0x5f, 0x6f, 0x72, 0x5f, 0x74, 0x65, + 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0c, 0xba, 0xe9, 0xc0, 0x03, 0x07, 0x72, + 0x05, 0x10, 0x01, 0x18, 0x80, 0x08, 0x52, 0x09, 0x6b, 0x65, 0x79, 0x4f, 0x72, 0x54, 0x65, 0x78, + 0x74, 0x22, 0xa4, 0x04, 0x0a, 0x13, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x61, + 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x46, 0x0a, 0x04, 0x76, 0x65, 0x72, + 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, - 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0c, 0x65, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x42, 0x0a, 0x08, 0x6e, 0x61, - 0x63, 0x6c, 0x5f, 0x62, 0x6f, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x63, - 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x61, 0x63, 0x6c, - 0x42, 0x6f, 0x78, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x07, 0x6e, 0x61, 0x63, 0x6c, 0x42, 0x6f, 0x78, 0x12, 0x3c, - 0x0a, 0x09, 0x74, 0x68, 0x61, 0x6e, 0x6b, 0x5f, 0x79, 0x6f, 0x75, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, - 0x2e, 0x54, 0x68, 0x61, 0x6e, 0x6b, 0x59, 0x6f, 0x75, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x48, 0x00, 0x52, 0x08, 0x74, 0x68, 0x61, 0x6e, 0x6b, 0x59, 0x6f, 0x75, 0x12, 0x54, 0x0a, 0x11, - 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x65, - 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, - 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, - 0x65, 0x76, 0x65, 0x61, 0x6c, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x00, - 0x52, 0x10, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x76, 0x65, 0x61, 0x6c, - 0x65, 0x64, 0x42, 0x0d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x05, 0xb8, 0xe9, 0xc0, 0x03, - 0x01, 0x22, 0x2f, 0x0a, 0x0b, 0x54, 0x65, 0x78, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x12, 0x20, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0c, - 0xba, 0xe9, 0xc0, 0x03, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0x80, 0x08, 0x52, 0x04, 0x74, 0x65, - 0x78, 0x74, 0x22, 0x40, 0x0a, 0x10, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x43, - 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x0b, 0x6b, 0x65, 0x79, 0x5f, 0x6f, 0x72, - 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0c, 0xba, 0xe9, 0xc0, - 0x03, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0x80, 0x08, 0x52, 0x09, 0x6b, 0x65, 0x79, 0x4f, 0x72, - 0x54, 0x65, 0x78, 0x74, 0x22, 0xa4, 0x04, 0x0a, 0x13, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x46, 0x0a, 0x04, - 0x76, 0x65, 0x72, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x63, 0x6f, 0x64, - 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x56, 0x65, - 0x72, 0x62, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x82, 0x01, 0x02, 0x20, 0x00, 0x52, 0x04, - 0x76, 0x65, 0x72, 0x62, 0x12, 0x39, 0x0a, 0x05, 0x65, 0x78, 0x61, 0x63, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x05, 0x65, 0x78, 0x61, 0x63, 0x74, 0x12, - 0x48, 0x0a, 0x07, 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2c, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, + 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x56, 0x65, 0x72, 0x62, 0x42, + 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x82, 0x01, 0x02, 0x20, 0x00, 0x52, 0x04, 0x76, 0x65, 0x72, + 0x62, 0x12, 0x39, 0x0a, 0x05, 0x65, 0x78, 0x61, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, - 0x61, 0x74, 0x61, 0x57, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x52, 0x61, 0x74, 0x65, 0x48, 0x00, - 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x32, 0x0a, 0x06, 0x69, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6f, 0x64, 0x65, - 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x6e, - 0x74, 0x49, 0x64, 0x48, 0x01, 0x52, 0x06, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x39, 0x0a, - 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x48, 0x01, 0x52, 0x09, 0x73, - 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0xa4, 0x01, 0x0a, 0x04, 0x56, 0x65, 0x72, - 0x62, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, - 0x0a, 0x04, 0x47, 0x41, 0x56, 0x45, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x45, 0x43, 0x45, - 0x49, 0x56, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x57, 0x49, 0x54, 0x48, 0x44, 0x52, - 0x45, 0x57, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x45, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x45, - 0x44, 0x10, 0x04, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x45, 0x4e, 0x54, 0x10, 0x05, 0x12, 0x0c, 0x0a, - 0x08, 0x52, 0x45, 0x54, 0x55, 0x52, 0x4e, 0x45, 0x44, 0x10, 0x06, 0x12, 0x09, 0x0a, 0x05, 0x53, - 0x50, 0x45, 0x4e, 0x54, 0x10, 0x07, 0x12, 0x08, 0x0a, 0x04, 0x50, 0x41, 0x49, 0x44, 0x10, 0x08, - 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x55, 0x52, 0x43, 0x48, 0x41, 0x53, 0x45, 0x44, 0x10, 0x09, 0x12, - 0x10, 0x0a, 0x0c, 0x52, 0x45, 0x43, 0x45, 0x49, 0x56, 0x45, 0x44, 0x5f, 0x54, 0x49, 0x50, 0x10, - 0x0a, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x49, 0x50, 0x10, 0x0b, 0x42, - 0x16, 0x0a, 0x0d, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, - 0x12, 0x05, 0xb8, 0xe9, 0xc0, 0x03, 0x01, 0x42, 0x12, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, - 0x65, 0x6e, 0x63, 0x65, 0x12, 0x05, 0xb8, 0xe9, 0xc0, 0x03, 0x01, 0x22, 0xcc, 0x01, 0x0a, 0x17, - 0x4e, 0x61, 0x63, 0x6c, 0x42, 0x6f, 0x78, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, - 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x53, 0x0a, 0x0f, 0x70, 0x65, 0x65, 0x72, 0x5f, - 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1f, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x53, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, - 0x64, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0d, 0x70, - 0x65, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x21, 0x0a, 0x05, - 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x0b, 0xba, 0xe9, 0xc0, - 0x03, 0x06, 0x7a, 0x04, 0x10, 0x18, 0x18, 0x18, 0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x12, - 0x39, 0x0a, 0x11, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x79, - 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x0c, 0xba, 0xe9, 0xc0, 0x03, - 0x07, 0x7a, 0x05, 0x10, 0x01, 0x18, 0x80, 0x08, 0x52, 0x10, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, - 0x74, 0x65, 0x64, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x62, 0x0a, 0x0f, 0x54, 0x68, - 0x61, 0x6e, 0x6b, 0x59, 0x6f, 0x75, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x43, 0x0a, - 0x0a, 0x74, 0x69, 0x70, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x42, 0x0a, 0xba, 0xe9, 0xc0, - 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x74, 0x69, 0x70, 0x49, 0x6e, 0x74, 0x65, - 0x6e, 0x74, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0xa8, - 0x01, 0x0a, 0x17, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x76, 0x65, 0x61, - 0x6c, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x09, 0x6d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x68, 0x61, - 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x64, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, - 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x64, 0x12, - 0x48, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x20, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, - 0x2e, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x74, 0x79, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, - 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x22, 0x2b, 0x0a, 0x06, 0x43, 0x75, 0x72, - 0x73, 0x6f, 0x72, 0x12, 0x21, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0c, 0x42, 0x0b, 0xba, 0xe9, 0xc0, 0x03, 0x06, 0x7a, 0x04, 0x10, 0x08, 0x18, 0x20, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x6c, 0x0a, 0x08, 0x49, 0x73, 0x54, 0x79, 0x70, 0x69, - 0x6e, 0x67, 0x12, 0x43, 0x0a, 0x09, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, - 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, - 0x64, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x6d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x74, 0x79, - 0x70, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x54, 0x79, - 0x70, 0x69, 0x6e, 0x67, 0x2a, 0x40, 0x0a, 0x08, 0x43, 0x68, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x15, 0x0a, 0x11, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x43, 0x48, 0x41, 0x54, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x4e, 0x4f, 0x54, 0x49, 0x46, - 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x57, 0x4f, - 0x5f, 0x57, 0x41, 0x59, 0x10, 0x02, 0x2a, 0x2d, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x12, 0x14, 0x0a, 0x10, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x50, 0x4c, - 0x41, 0x54, 0x46, 0x4f, 0x52, 0x4d, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x57, 0x49, 0x54, - 0x54, 0x45, 0x52, 0x10, 0x01, 0x2a, 0x4a, 0x0a, 0x0b, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x14, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, - 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x00, 0x12, 0x08, - 0x0a, 0x04, 0x53, 0x45, 0x4e, 0x54, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x45, 0x4c, 0x49, - 0x56, 0x45, 0x52, 0x45, 0x44, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x52, 0x45, 0x41, 0x44, 0x10, - 0x03, 0x32, 0x8b, 0x07, 0x0a, 0x04, 0x43, 0x68, 0x61, 0x74, 0x12, 0x49, 0x0a, 0x08, 0x47, 0x65, + 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x05, 0x65, 0x78, 0x61, 0x63, 0x74, 0x12, 0x48, 0x0a, 0x07, + 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, + 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, + 0x57, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x52, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x07, 0x70, + 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x32, 0x0a, 0x06, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x49, 0x64, + 0x48, 0x01, 0x52, 0x06, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x09, 0x73, 0x69, + 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, + 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x48, 0x01, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0xa4, 0x01, 0x0a, 0x04, 0x56, 0x65, 0x72, 0x62, 0x12, 0x0b, + 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x47, + 0x41, 0x56, 0x45, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x45, 0x43, 0x45, 0x49, 0x56, 0x45, + 0x44, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x57, 0x49, 0x54, 0x48, 0x44, 0x52, 0x45, 0x57, 0x10, + 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x45, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x45, 0x44, 0x10, 0x04, + 0x12, 0x08, 0x0a, 0x04, 0x53, 0x45, 0x4e, 0x54, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x45, + 0x54, 0x55, 0x52, 0x4e, 0x45, 0x44, 0x10, 0x06, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x50, 0x45, 0x4e, + 0x54, 0x10, 0x07, 0x12, 0x08, 0x0a, 0x04, 0x50, 0x41, 0x49, 0x44, 0x10, 0x08, 0x12, 0x0d, 0x0a, + 0x09, 0x50, 0x55, 0x52, 0x43, 0x48, 0x41, 0x53, 0x45, 0x44, 0x10, 0x09, 0x12, 0x10, 0x0a, 0x0c, + 0x52, 0x45, 0x43, 0x45, 0x49, 0x56, 0x45, 0x44, 0x5f, 0x54, 0x49, 0x50, 0x10, 0x0a, 0x12, 0x0c, + 0x0a, 0x08, 0x53, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x49, 0x50, 0x10, 0x0b, 0x42, 0x16, 0x0a, 0x0d, + 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x12, 0x05, 0xb8, + 0xe9, 0xc0, 0x03, 0x01, 0x42, 0x12, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x12, 0x05, 0xb8, 0xe9, 0xc0, 0x03, 0x01, 0x22, 0xcc, 0x01, 0x0a, 0x17, 0x4e, 0x61, 0x63, + 0x6c, 0x42, 0x6f, 0x78, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x12, 0x53, 0x0a, 0x0f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x70, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, + 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, + 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x42, 0x0a, + 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0d, 0x70, 0x65, 0x65, 0x72, + 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x21, 0x0a, 0x05, 0x6e, 0x6f, 0x6e, + 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x0b, 0xba, 0xe9, 0xc0, 0x03, 0x06, 0x7a, + 0x04, 0x10, 0x18, 0x18, 0x18, 0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x39, 0x0a, 0x11, + 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x0c, 0xba, 0xe9, 0xc0, 0x03, 0x07, 0x7a, 0x05, + 0x10, 0x01, 0x18, 0x80, 0x08, 0x52, 0x10, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, + 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x2b, 0x0a, 0x06, 0x43, 0x75, 0x72, 0x73, 0x6f, + 0x72, 0x12, 0x21, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, + 0x42, 0x0b, 0xba, 0xe9, 0xc0, 0x03, 0x06, 0x7a, 0x04, 0x10, 0x08, 0x18, 0x20, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x22, 0x68, 0x0a, 0x08, 0x49, 0x73, 0x54, 0x79, 0x70, 0x69, 0x6e, 0x67, + 0x12, 0x3f, 0x0a, 0x09, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, + 0x76, 0x32, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x64, 0x42, 0x0a, 0xba, 0xe9, 0xc0, + 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, + 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x69, 0x6e, 0x67, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x54, 0x79, 0x70, 0x69, 0x6e, 0x67, 0x2a, 0x2e, + 0x0a, 0x08, 0x43, 0x68, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x55, 0x4e, + 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, + 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x57, 0x4f, 0x5f, 0x57, 0x41, 0x59, 0x10, 0x01, 0x2a, 0x2d, + 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x14, 0x0a, 0x10, 0x55, 0x4e, + 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x50, 0x4c, 0x41, 0x54, 0x46, 0x4f, 0x52, 0x4d, 0x10, 0x00, + 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x57, 0x49, 0x54, 0x54, 0x45, 0x52, 0x10, 0x01, 0x2a, 0x4a, 0x0a, + 0x0b, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x14, + 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x45, 0x4e, 0x54, 0x10, 0x01, + 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x45, 0x4c, 0x49, 0x56, 0x45, 0x52, 0x45, 0x44, 0x10, 0x02, 0x12, + 0x08, 0x0a, 0x04, 0x52, 0x45, 0x41, 0x44, 0x10, 0x03, 0x32, 0xa0, 0x06, 0x0a, 0x04, 0x43, 0x68, + 0x61, 0x74, 0x12, 0x65, 0x0a, 0x10, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, 0x68, 0x61, 0x74, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x25, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, + 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, 0x68, 0x61, 0x74, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, + 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x43, 0x68, 0x61, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x12, 0x5f, 0x0a, 0x0e, 0x53, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x23, 0x2e, 0x63, 0x6f, + 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x24, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, + 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x12, 0x49, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x73, 0x12, 0x1d, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, @@ -4346,61 +4040,42 @@ var file_chat_v2_chat_service_proto_rawDesc = []byte{ 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x65, 0x0a, 0x10, 0x53, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x43, 0x68, 0x61, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x25, 0x2e, - 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x43, 0x68, 0x61, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, - 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, 0x68, 0x61, 0x74, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, - 0x12, 0x4c, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x68, 0x61, 0x74, 0x12, 0x1e, 0x2e, - 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, - 0x72, 0x74, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, - 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, - 0x72, 0x74, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52, - 0x0a, 0x0b, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x20, 0x2e, - 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x65, 0x6e, - 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x21, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x53, - 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x5b, 0x0a, 0x0e, 0x41, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x6f, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x12, 0x23, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, - 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, - 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x63, 0x6f, 0x64, 0x65, - 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, - 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x5b, 0x0a, 0x0e, 0x52, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, - 0x79, 0x12, 0x23, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, - 0x2e, 0x52, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4c, 0x0a, 0x09, 0x53, 0x74, 0x61, + 0x72, 0x74, 0x43, 0x68, 0x61, 0x74, 0x12, 0x1e, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, + 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x68, 0x61, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, + 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x68, 0x61, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52, 0x0a, 0x0b, 0x53, 0x65, 0x6e, 0x64, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x20, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, + 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, + 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5b, 0x0a, 0x0e, 0x41, + 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x23, 0x2e, + 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x64, 0x76, + 0x61, 0x6e, 0x63, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, + 0x32, 0x2e, 0x41, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x55, 0x0a, 0x0c, 0x53, 0x65, 0x74, 0x4d, + 0x75, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x21, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, + 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x65, 0x74, 0x4d, 0x75, 0x74, 0x65, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x63, 0x6f, + 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x65, 0x74, 0x4d, 0x75, + 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x5b, 0x0a, 0x0e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x49, 0x73, 0x54, 0x79, 0x70, 0x69, 0x6e, + 0x67, 0x12, 0x23, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, + 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x49, 0x73, 0x54, 0x79, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, - 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x49, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x55, 0x0a, 0x0c, - 0x53, 0x65, 0x74, 0x4d, 0x75, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x21, 0x2e, 0x63, - 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x65, 0x74, 0x4d, - 0x75, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x22, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x53, - 0x65, 0x74, 0x4d, 0x75, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x6d, 0x0a, 0x14, 0x53, 0x65, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x29, 0x2e, 0x63, 0x6f, - 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x75, - 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, - 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x5b, 0x0a, 0x0e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x49, 0x73, 0x54, 0x79, - 0x70, 0x69, 0x6e, 0x67, 0x12, 0x23, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x74, - 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x49, 0x73, 0x54, 0x79, 0x70, 0x69, - 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x63, 0x6f, 0x64, 0x65, - 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x49, - 0x73, 0x54, 0x79, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, - 0x6b, 0x0a, 0x17, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x69, 0x6e, 0x63, 0x2e, 0x67, - 0x65, 0x6e, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x5a, 0x44, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x64, 0x65, 0x2d, 0x70, 0x61, 0x79, 0x6d, - 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x63, 0x6f, 0x64, 0x65, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x2f, 0x67, 0x6f, 0x2f, 0x63, 0x68, 0x61, 0x74, 0x2f, 0x76, 0x32, 0x3b, 0x63, 0x68, 0x61, 0x74, - 0xa2, 0x02, 0x09, 0x43, 0x50, 0x42, 0x43, 0x68, 0x61, 0x74, 0x56, 0x32, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x61, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x49, 0x73, 0x54, 0x79, + 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x6b, 0x0a, 0x17, + 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x69, 0x6e, 0x63, 0x2e, 0x67, 0x65, 0x6e, 0x2e, + 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x32, 0x5a, 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x64, 0x65, 0x2d, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, + 0x73, 0x2f, 0x63, 0x6f, 0x64, 0x65, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2d, + 0x61, 0x70, 0x69, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2f, 0x67, 0x6f, + 0x2f, 0x63, 0x68, 0x61, 0x74, 0x2f, 0x76, 0x32, 0x3b, 0x63, 0x68, 0x61, 0x74, 0xa2, 0x02, 0x09, + 0x43, 0x50, 0x42, 0x43, 0x68, 0x61, 0x74, 0x56, 0x32, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } var ( @@ -4415,202 +4090,186 @@ func file_chat_v2_chat_service_proto_rawDescGZIP() []byte { return file_chat_v2_chat_service_proto_rawDescData } -var file_chat_v2_chat_service_proto_enumTypes = make([]protoimpl.EnumInfo, 16) -var file_chat_v2_chat_service_proto_msgTypes = make([]protoimpl.MessageInfo, 41) +var file_chat_v2_chat_service_proto_enumTypes = make([]protoimpl.EnumInfo, 14) +var file_chat_v2_chat_service_proto_msgTypes = make([]protoimpl.MessageInfo, 39) var file_chat_v2_chat_service_proto_goTypes = []interface{}{ - (ChatType)(0), // 0: code.chat.v2.ChatType - (Platform)(0), // 1: code.chat.v2.Platform - (PointerType)(0), // 2: code.chat.v2.PointerType - (GetChatsRequest_Direction)(0), // 3: code.chat.v2.GetChatsRequest.Direction - (GetChatsResponse_Result)(0), // 4: code.chat.v2.GetChatsResponse.Result - (GetMessagesRequest_Direction)(0), // 5: code.chat.v2.GetMessagesRequest.Direction - (GetMessagesResponse_Result)(0), // 6: code.chat.v2.GetMessagesResponse.Result - (ChatStreamEventError_Code)(0), // 7: code.chat.v2.ChatStreamEventError.Code - (StartChatResponse_Result)(0), // 8: code.chat.v2.StartChatResponse.Result - (SendMessageResponse_Result)(0), // 9: code.chat.v2.SendMessageResponse.Result - (AdvancePointerResponse_Result)(0), // 10: code.chat.v2.AdvancePointerResponse.Result - (RevealIdentityResponse_Result)(0), // 11: code.chat.v2.RevealIdentityResponse.Result - (SetMuteStateResponse_Result)(0), // 12: code.chat.v2.SetMuteStateResponse.Result - (SetSubscriptionStateResponse_Result)(0), // 13: code.chat.v2.SetSubscriptionStateResponse.Result - (NotifyIsTypingResponse_Result)(0), // 14: code.chat.v2.NotifyIsTypingResponse.Result - (ExchangeDataContent_Verb)(0), // 15: code.chat.v2.ExchangeDataContent.Verb - (*GetChatsRequest)(nil), // 16: code.chat.v2.GetChatsRequest - (*GetChatsResponse)(nil), // 17: code.chat.v2.GetChatsResponse - (*GetMessagesRequest)(nil), // 18: code.chat.v2.GetMessagesRequest - (*GetMessagesResponse)(nil), // 19: code.chat.v2.GetMessagesResponse - (*OpenChatEventStream)(nil), // 20: code.chat.v2.OpenChatEventStream - (*ChatStreamEvent)(nil), // 21: code.chat.v2.ChatStreamEvent - (*ChatStreamEventBatch)(nil), // 22: code.chat.v2.ChatStreamEventBatch - (*ChatStreamEventError)(nil), // 23: code.chat.v2.ChatStreamEventError - (*StreamChatEventsRequest)(nil), // 24: code.chat.v2.StreamChatEventsRequest - (*StreamChatEventsResponse)(nil), // 25: code.chat.v2.StreamChatEventsResponse - (*StartChatRequest)(nil), // 26: code.chat.v2.StartChatRequest - (*StartTipChatParameters)(nil), // 27: code.chat.v2.StartTipChatParameters - (*StartChatResponse)(nil), // 28: code.chat.v2.StartChatResponse - (*SendMessageRequest)(nil), // 29: code.chat.v2.SendMessageRequest - (*SendMessageResponse)(nil), // 30: code.chat.v2.SendMessageResponse - (*AdvancePointerRequest)(nil), // 31: code.chat.v2.AdvancePointerRequest - (*AdvancePointerResponse)(nil), // 32: code.chat.v2.AdvancePointerResponse - (*RevealIdentityRequest)(nil), // 33: code.chat.v2.RevealIdentityRequest - (*RevealIdentityResponse)(nil), // 34: code.chat.v2.RevealIdentityResponse - (*SetMuteStateRequest)(nil), // 35: code.chat.v2.SetMuteStateRequest - (*SetMuteStateResponse)(nil), // 36: code.chat.v2.SetMuteStateResponse - (*SetSubscriptionStateRequest)(nil), // 37: code.chat.v2.SetSubscriptionStateRequest - (*SetSubscriptionStateResponse)(nil), // 38: code.chat.v2.SetSubscriptionStateResponse - (*NotifyIsTypingRequest)(nil), // 39: code.chat.v2.NotifyIsTypingRequest - (*NotifyIsTypingResponse)(nil), // 40: code.chat.v2.NotifyIsTypingResponse - (*ChatMessageId)(nil), // 41: code.chat.v2.ChatMessageId - (*ChatMemberId)(nil), // 42: code.chat.v2.ChatMemberId - (*ChatMetadata)(nil), // 43: code.chat.v2.ChatMetadata - (*ChatMessage)(nil), // 44: code.chat.v2.ChatMessage - (*ChatMember)(nil), // 45: code.chat.v2.ChatMember - (*ChatMemberIdentity)(nil), // 46: code.chat.v2.ChatMemberIdentity - (*Pointer)(nil), // 47: code.chat.v2.Pointer - (*Content)(nil), // 48: code.chat.v2.Content - (*TextContent)(nil), // 49: code.chat.v2.TextContent - (*LocalizedContent)(nil), // 50: code.chat.v2.LocalizedContent - (*ExchangeDataContent)(nil), // 51: code.chat.v2.ExchangeDataContent - (*NaclBoxEncryptedContent)(nil), // 52: code.chat.v2.NaclBoxEncryptedContent - (*ThankYouContent)(nil), // 53: code.chat.v2.ThankYouContent - (*IdentityRevealedContent)(nil), // 54: code.chat.v2.IdentityRevealedContent - (*Cursor)(nil), // 55: code.chat.v2.Cursor - (*IsTyping)(nil), // 56: code.chat.v2.IsTyping - (*v1.SolanaAccountId)(nil), // 57: code.common.v1.SolanaAccountId - (*v1.Signature)(nil), // 58: code.common.v1.Signature - (*v1.ChatId)(nil), // 59: code.common.v1.ChatId - (*v1.ClientPong)(nil), // 60: code.common.v1.ClientPong - (*v1.ServerPing)(nil), // 61: code.common.v1.ServerPing - (*v1.IntentId)(nil), // 62: code.common.v1.IntentId - (*timestamppb.Timestamp)(nil), // 63: google.protobuf.Timestamp - (*v2.ExchangeData)(nil), // 64: code.transaction.v2.ExchangeData - (*v2.ExchangeDataWithoutRate)(nil), // 65: code.transaction.v2.ExchangeDataWithoutRate + (ChatType)(0), // 0: code.chat.v2.ChatType + (Platform)(0), // 1: code.chat.v2.Platform + (PointerType)(0), // 2: code.chat.v2.PointerType + (StreamError_Code)(0), // 3: code.chat.v2.StreamError.Code + (GetChatsRequest_Direction)(0), // 4: code.chat.v2.GetChatsRequest.Direction + (GetChatsResponse_Result)(0), // 5: code.chat.v2.GetChatsResponse.Result + (GetMessagesRequest_Direction)(0), // 6: code.chat.v2.GetMessagesRequest.Direction + (GetMessagesResponse_Result)(0), // 7: code.chat.v2.GetMessagesResponse.Result + (StartChatResponse_Result)(0), // 8: code.chat.v2.StartChatResponse.Result + (SendMessageResponse_Result)(0), // 9: code.chat.v2.SendMessageResponse.Result + (AdvancePointerResponse_Result)(0), // 10: code.chat.v2.AdvancePointerResponse.Result + (SetMuteStateResponse_Result)(0), // 11: code.chat.v2.SetMuteStateResponse.Result + (NotifyIsTypingResponse_Result)(0), // 12: code.chat.v2.NotifyIsTypingResponse.Result + (ExchangeDataContent_Verb)(0), // 13: code.chat.v2.ExchangeDataContent.Verb + (*StreamChatEventsRequest)(nil), // 14: code.chat.v2.StreamChatEventsRequest + (*StreamChatEventsResponse)(nil), // 15: code.chat.v2.StreamChatEventsResponse + (*StreamMessagesRequest)(nil), // 16: code.chat.v2.StreamMessagesRequest + (*StreamMessagesResponse)(nil), // 17: code.chat.v2.StreamMessagesResponse + (*StreamError)(nil), // 18: code.chat.v2.StreamError + (*GetChatsRequest)(nil), // 19: code.chat.v2.GetChatsRequest + (*GetChatsResponse)(nil), // 20: code.chat.v2.GetChatsResponse + (*GetMessagesRequest)(nil), // 21: code.chat.v2.GetMessagesRequest + (*GetMessagesResponse)(nil), // 22: code.chat.v2.GetMessagesResponse + (*StartChatRequest)(nil), // 23: code.chat.v2.StartChatRequest + (*StartTwoWayChatParameters)(nil), // 24: code.chat.v2.StartTwoWayChatParameters + (*StartChatResponse)(nil), // 25: code.chat.v2.StartChatResponse + (*SendMessageRequest)(nil), // 26: code.chat.v2.SendMessageRequest + (*SendMessageResponse)(nil), // 27: code.chat.v2.SendMessageResponse + (*AdvancePointerRequest)(nil), // 28: code.chat.v2.AdvancePointerRequest + (*AdvancePointerResponse)(nil), // 29: code.chat.v2.AdvancePointerResponse + (*SetMuteStateRequest)(nil), // 30: code.chat.v2.SetMuteStateRequest + (*SetMuteStateResponse)(nil), // 31: code.chat.v2.SetMuteStateResponse + (*NotifyIsTypingRequest)(nil), // 32: code.chat.v2.NotifyIsTypingRequest + (*NotifyIsTypingResponse)(nil), // 33: code.chat.v2.NotifyIsTypingResponse + (*MessageId)(nil), // 34: code.chat.v2.MessageId + (*MemberId)(nil), // 35: code.chat.v2.MemberId + (*Metadata)(nil), // 36: code.chat.v2.Metadata + (*Message)(nil), // 37: code.chat.v2.Message + (*Member)(nil), // 38: code.chat.v2.Member + (*MemberIdentity)(nil), // 39: code.chat.v2.MemberIdentity + (*Pointer)(nil), // 40: code.chat.v2.Pointer + (*Content)(nil), // 41: code.chat.v2.Content + (*TextContent)(nil), // 42: code.chat.v2.TextContent + (*LocalizedContent)(nil), // 43: code.chat.v2.LocalizedContent + (*ExchangeDataContent)(nil), // 44: code.chat.v2.ExchangeDataContent + (*NaclBoxEncryptedContent)(nil), // 45: code.chat.v2.NaclBoxEncryptedContent + (*Cursor)(nil), // 46: code.chat.v2.Cursor + (*IsTyping)(nil), // 47: code.chat.v2.IsTyping + (*StreamChatEventsRequest_Params)(nil), // 48: code.chat.v2.StreamChatEventsRequest.Params + (*StreamChatEventsResponse_EventBatch)(nil), // 49: code.chat.v2.StreamChatEventsResponse.EventBatch + (*StreamChatEventsResponse_ChatUpdate)(nil), // 50: code.chat.v2.StreamChatEventsResponse.ChatUpdate + (*StreamMessagesRequest_Params)(nil), // 51: code.chat.v2.StreamMessagesRequest.Params + (*StreamMessagesResponse_MessageBatch)(nil), // 52: code.chat.v2.StreamMessagesResponse.MessageBatch + (*v1.ClientPong)(nil), // 53: code.common.v1.ClientPong + (*v1.ServerPing)(nil), // 54: code.common.v1.ServerPing + (*v1.SolanaAccountId)(nil), // 55: code.common.v1.SolanaAccountId + (*v1.Signature)(nil), // 56: code.common.v1.Signature + (*v1.ChatId)(nil), // 57: code.common.v1.ChatId + (*v1.IntentId)(nil), // 58: code.common.v1.IntentId + (*timestamppb.Timestamp)(nil), // 59: google.protobuf.Timestamp + (*v2.ExchangeData)(nil), // 60: code.transaction.v2.ExchangeData + (*v2.ExchangeDataWithoutRate)(nil), // 61: code.transaction.v2.ExchangeDataWithoutRate } var file_chat_v2_chat_service_proto_depIdxs = []int32{ - 57, // 0: code.chat.v2.GetChatsRequest.owner:type_name -> code.common.v1.SolanaAccountId - 58, // 1: code.chat.v2.GetChatsRequest.signature:type_name -> code.common.v1.Signature - 55, // 2: code.chat.v2.GetChatsRequest.cursor:type_name -> code.chat.v2.Cursor - 3, // 3: code.chat.v2.GetChatsRequest.direction:type_name -> code.chat.v2.GetChatsRequest.Direction - 4, // 4: code.chat.v2.GetChatsResponse.result:type_name -> code.chat.v2.GetChatsResponse.Result - 43, // 5: code.chat.v2.GetChatsResponse.chats:type_name -> code.chat.v2.ChatMetadata - 59, // 6: code.chat.v2.GetMessagesRequest.chat_id:type_name -> code.common.v1.ChatId - 42, // 7: code.chat.v2.GetMessagesRequest.member_id:type_name -> code.chat.v2.ChatMemberId - 57, // 8: code.chat.v2.GetMessagesRequest.owner:type_name -> code.common.v1.SolanaAccountId - 58, // 9: code.chat.v2.GetMessagesRequest.signature:type_name -> code.common.v1.Signature - 55, // 10: code.chat.v2.GetMessagesRequest.cursor:type_name -> code.chat.v2.Cursor - 5, // 11: code.chat.v2.GetMessagesRequest.direction:type_name -> code.chat.v2.GetMessagesRequest.Direction - 6, // 12: code.chat.v2.GetMessagesResponse.result:type_name -> code.chat.v2.GetMessagesResponse.Result - 44, // 13: code.chat.v2.GetMessagesResponse.messages:type_name -> code.chat.v2.ChatMessage - 59, // 14: code.chat.v2.OpenChatEventStream.chat_id:type_name -> code.common.v1.ChatId - 42, // 15: code.chat.v2.OpenChatEventStream.member_id:type_name -> code.chat.v2.ChatMemberId - 57, // 16: code.chat.v2.OpenChatEventStream.owner:type_name -> code.common.v1.SolanaAccountId - 58, // 17: code.chat.v2.OpenChatEventStream.signature:type_name -> code.common.v1.Signature - 44, // 18: code.chat.v2.ChatStreamEvent.message:type_name -> code.chat.v2.ChatMessage - 47, // 19: code.chat.v2.ChatStreamEvent.pointer:type_name -> code.chat.v2.Pointer - 56, // 20: code.chat.v2.ChatStreamEvent.is_typing:type_name -> code.chat.v2.IsTyping - 21, // 21: code.chat.v2.ChatStreamEventBatch.events:type_name -> code.chat.v2.ChatStreamEvent - 7, // 22: code.chat.v2.ChatStreamEventError.code:type_name -> code.chat.v2.ChatStreamEventError.Code - 20, // 23: code.chat.v2.StreamChatEventsRequest.open_stream:type_name -> code.chat.v2.OpenChatEventStream - 60, // 24: code.chat.v2.StreamChatEventsRequest.pong:type_name -> code.common.v1.ClientPong - 22, // 25: code.chat.v2.StreamChatEventsResponse.events:type_name -> code.chat.v2.ChatStreamEventBatch - 61, // 26: code.chat.v2.StreamChatEventsResponse.ping:type_name -> code.common.v1.ServerPing - 23, // 27: code.chat.v2.StreamChatEventsResponse.error:type_name -> code.chat.v2.ChatStreamEventError - 57, // 28: code.chat.v2.StartChatRequest.owner:type_name -> code.common.v1.SolanaAccountId - 58, // 29: code.chat.v2.StartChatRequest.signature:type_name -> code.common.v1.Signature - 27, // 30: code.chat.v2.StartChatRequest.tip_chat:type_name -> code.chat.v2.StartTipChatParameters - 62, // 31: code.chat.v2.StartTipChatParameters.intent_id:type_name -> code.common.v1.IntentId - 8, // 32: code.chat.v2.StartChatResponse.result:type_name -> code.chat.v2.StartChatResponse.Result - 43, // 33: code.chat.v2.StartChatResponse.chat:type_name -> code.chat.v2.ChatMetadata - 59, // 34: code.chat.v2.SendMessageRequest.chat_id:type_name -> code.common.v1.ChatId - 42, // 35: code.chat.v2.SendMessageRequest.member_id:type_name -> code.chat.v2.ChatMemberId - 48, // 36: code.chat.v2.SendMessageRequest.content:type_name -> code.chat.v2.Content - 57, // 37: code.chat.v2.SendMessageRequest.owner:type_name -> code.common.v1.SolanaAccountId - 58, // 38: code.chat.v2.SendMessageRequest.signature:type_name -> code.common.v1.Signature - 9, // 39: code.chat.v2.SendMessageResponse.result:type_name -> code.chat.v2.SendMessageResponse.Result - 44, // 40: code.chat.v2.SendMessageResponse.message:type_name -> code.chat.v2.ChatMessage - 59, // 41: code.chat.v2.AdvancePointerRequest.chat_id:type_name -> code.common.v1.ChatId - 47, // 42: code.chat.v2.AdvancePointerRequest.pointer:type_name -> code.chat.v2.Pointer - 57, // 43: code.chat.v2.AdvancePointerRequest.owner:type_name -> code.common.v1.SolanaAccountId - 58, // 44: code.chat.v2.AdvancePointerRequest.signature:type_name -> code.common.v1.Signature - 10, // 45: code.chat.v2.AdvancePointerResponse.result:type_name -> code.chat.v2.AdvancePointerResponse.Result - 59, // 46: code.chat.v2.RevealIdentityRequest.chat_id:type_name -> code.common.v1.ChatId - 42, // 47: code.chat.v2.RevealIdentityRequest.member_id:type_name -> code.chat.v2.ChatMemberId - 46, // 48: code.chat.v2.RevealIdentityRequest.identity:type_name -> code.chat.v2.ChatMemberIdentity - 57, // 49: code.chat.v2.RevealIdentityRequest.owner:type_name -> code.common.v1.SolanaAccountId - 58, // 50: code.chat.v2.RevealIdentityRequest.signature:type_name -> code.common.v1.Signature - 11, // 51: code.chat.v2.RevealIdentityResponse.result:type_name -> code.chat.v2.RevealIdentityResponse.Result - 44, // 52: code.chat.v2.RevealIdentityResponse.message:type_name -> code.chat.v2.ChatMessage - 59, // 53: code.chat.v2.SetMuteStateRequest.chat_id:type_name -> code.common.v1.ChatId - 42, // 54: code.chat.v2.SetMuteStateRequest.member_id:type_name -> code.chat.v2.ChatMemberId - 57, // 55: code.chat.v2.SetMuteStateRequest.owner:type_name -> code.common.v1.SolanaAccountId - 58, // 56: code.chat.v2.SetMuteStateRequest.signature:type_name -> code.common.v1.Signature - 12, // 57: code.chat.v2.SetMuteStateResponse.result:type_name -> code.chat.v2.SetMuteStateResponse.Result - 59, // 58: code.chat.v2.SetSubscriptionStateRequest.chat_id:type_name -> code.common.v1.ChatId - 42, // 59: code.chat.v2.SetSubscriptionStateRequest.member_id:type_name -> code.chat.v2.ChatMemberId - 57, // 60: code.chat.v2.SetSubscriptionStateRequest.owner:type_name -> code.common.v1.SolanaAccountId - 58, // 61: code.chat.v2.SetSubscriptionStateRequest.signature:type_name -> code.common.v1.Signature - 13, // 62: code.chat.v2.SetSubscriptionStateResponse.result:type_name -> code.chat.v2.SetSubscriptionStateResponse.Result - 59, // 63: code.chat.v2.NotifyIsTypingRequest.chat_id:type_name -> code.common.v1.ChatId - 42, // 64: code.chat.v2.NotifyIsTypingRequest.member_id:type_name -> code.chat.v2.ChatMemberId - 57, // 65: code.chat.v2.NotifyIsTypingRequest.owner:type_name -> code.common.v1.SolanaAccountId - 58, // 66: code.chat.v2.NotifyIsTypingRequest.signature:type_name -> code.common.v1.Signature - 14, // 67: code.chat.v2.NotifyIsTypingResponse.result:type_name -> code.chat.v2.NotifyIsTypingResponse.Result - 59, // 68: code.chat.v2.ChatMetadata.chat_id:type_name -> code.common.v1.ChatId - 0, // 69: code.chat.v2.ChatMetadata.type:type_name -> code.chat.v2.ChatType - 45, // 70: code.chat.v2.ChatMetadata.members:type_name -> code.chat.v2.ChatMember - 55, // 71: code.chat.v2.ChatMetadata.cursor:type_name -> code.chat.v2.Cursor - 41, // 72: code.chat.v2.ChatMessage.message_id:type_name -> code.chat.v2.ChatMessageId - 42, // 73: code.chat.v2.ChatMessage.sender_id:type_name -> code.chat.v2.ChatMemberId - 48, // 74: code.chat.v2.ChatMessage.content:type_name -> code.chat.v2.Content - 63, // 75: code.chat.v2.ChatMessage.ts:type_name -> google.protobuf.Timestamp - 55, // 76: code.chat.v2.ChatMessage.cursor:type_name -> code.chat.v2.Cursor - 42, // 77: code.chat.v2.ChatMember.member_id:type_name -> code.chat.v2.ChatMemberId - 46, // 78: code.chat.v2.ChatMember.identity:type_name -> code.chat.v2.ChatMemberIdentity - 47, // 79: code.chat.v2.ChatMember.pointers:type_name -> code.chat.v2.Pointer - 1, // 80: code.chat.v2.ChatMemberIdentity.platform:type_name -> code.chat.v2.Platform - 2, // 81: code.chat.v2.Pointer.type:type_name -> code.chat.v2.PointerType - 41, // 82: code.chat.v2.Pointer.value:type_name -> code.chat.v2.ChatMessageId - 42, // 83: code.chat.v2.Pointer.member_id:type_name -> code.chat.v2.ChatMemberId - 49, // 84: code.chat.v2.Content.text:type_name -> code.chat.v2.TextContent - 50, // 85: code.chat.v2.Content.localized:type_name -> code.chat.v2.LocalizedContent - 51, // 86: code.chat.v2.Content.exchange_data:type_name -> code.chat.v2.ExchangeDataContent - 52, // 87: code.chat.v2.Content.nacl_box:type_name -> code.chat.v2.NaclBoxEncryptedContent - 53, // 88: code.chat.v2.Content.thank_you:type_name -> code.chat.v2.ThankYouContent - 54, // 89: code.chat.v2.Content.identity_revealed:type_name -> code.chat.v2.IdentityRevealedContent - 15, // 90: code.chat.v2.ExchangeDataContent.verb:type_name -> code.chat.v2.ExchangeDataContent.Verb - 64, // 91: code.chat.v2.ExchangeDataContent.exact:type_name -> code.transaction.v2.ExchangeData - 65, // 92: code.chat.v2.ExchangeDataContent.partial:type_name -> code.transaction.v2.ExchangeDataWithoutRate - 62, // 93: code.chat.v2.ExchangeDataContent.intent:type_name -> code.common.v1.IntentId - 58, // 94: code.chat.v2.ExchangeDataContent.signature:type_name -> code.common.v1.Signature - 57, // 95: code.chat.v2.NaclBoxEncryptedContent.peer_public_key:type_name -> code.common.v1.SolanaAccountId - 62, // 96: code.chat.v2.ThankYouContent.tip_intent:type_name -> code.common.v1.IntentId - 42, // 97: code.chat.v2.IdentityRevealedContent.member_id:type_name -> code.chat.v2.ChatMemberId - 46, // 98: code.chat.v2.IdentityRevealedContent.identity:type_name -> code.chat.v2.ChatMemberIdentity - 42, // 99: code.chat.v2.IsTyping.member_id:type_name -> code.chat.v2.ChatMemberId - 16, // 100: code.chat.v2.Chat.GetChats:input_type -> code.chat.v2.GetChatsRequest - 18, // 101: code.chat.v2.Chat.GetMessages:input_type -> code.chat.v2.GetMessagesRequest - 24, // 102: code.chat.v2.Chat.StreamChatEvents:input_type -> code.chat.v2.StreamChatEventsRequest - 26, // 103: code.chat.v2.Chat.StartChat:input_type -> code.chat.v2.StartChatRequest - 29, // 104: code.chat.v2.Chat.SendMessage:input_type -> code.chat.v2.SendMessageRequest - 31, // 105: code.chat.v2.Chat.AdvancePointer:input_type -> code.chat.v2.AdvancePointerRequest - 33, // 106: code.chat.v2.Chat.RevealIdentity:input_type -> code.chat.v2.RevealIdentityRequest - 35, // 107: code.chat.v2.Chat.SetMuteState:input_type -> code.chat.v2.SetMuteStateRequest - 37, // 108: code.chat.v2.Chat.SetSubscriptionState:input_type -> code.chat.v2.SetSubscriptionStateRequest - 39, // 109: code.chat.v2.Chat.NotifyIsTyping:input_type -> code.chat.v2.NotifyIsTypingRequest - 17, // 110: code.chat.v2.Chat.GetChats:output_type -> code.chat.v2.GetChatsResponse - 19, // 111: code.chat.v2.Chat.GetMessages:output_type -> code.chat.v2.GetMessagesResponse - 25, // 112: code.chat.v2.Chat.StreamChatEvents:output_type -> code.chat.v2.StreamChatEventsResponse - 28, // 113: code.chat.v2.Chat.StartChat:output_type -> code.chat.v2.StartChatResponse - 30, // 114: code.chat.v2.Chat.SendMessage:output_type -> code.chat.v2.SendMessageResponse - 32, // 115: code.chat.v2.Chat.AdvancePointer:output_type -> code.chat.v2.AdvancePointerResponse - 34, // 116: code.chat.v2.Chat.RevealIdentity:output_type -> code.chat.v2.RevealIdentityResponse - 36, // 117: code.chat.v2.Chat.SetMuteState:output_type -> code.chat.v2.SetMuteStateResponse - 38, // 118: code.chat.v2.Chat.SetSubscriptionState:output_type -> code.chat.v2.SetSubscriptionStateResponse - 40, // 119: code.chat.v2.Chat.NotifyIsTyping:output_type -> code.chat.v2.NotifyIsTypingResponse - 110, // [110:120] is the sub-list for method output_type - 100, // [100:110] is the sub-list for method input_type - 100, // [100:100] is the sub-list for extension type_name - 100, // [100:100] is the sub-list for extension extendee - 0, // [0:100] is the sub-list for field type_name + 48, // 0: code.chat.v2.StreamChatEventsRequest.params:type_name -> code.chat.v2.StreamChatEventsRequest.Params + 53, // 1: code.chat.v2.StreamChatEventsRequest.pong:type_name -> code.common.v1.ClientPong + 54, // 2: code.chat.v2.StreamChatEventsResponse.ping:type_name -> code.common.v1.ServerPing + 18, // 3: code.chat.v2.StreamChatEventsResponse.error:type_name -> code.chat.v2.StreamError + 49, // 4: code.chat.v2.StreamChatEventsResponse.events:type_name -> code.chat.v2.StreamChatEventsResponse.EventBatch + 51, // 5: code.chat.v2.StreamMessagesRequest.params:type_name -> code.chat.v2.StreamMessagesRequest.Params + 53, // 6: code.chat.v2.StreamMessagesRequest.pong:type_name -> code.common.v1.ClientPong + 54, // 7: code.chat.v2.StreamMessagesResponse.ping:type_name -> code.common.v1.ServerPing + 18, // 8: code.chat.v2.StreamMessagesResponse.error:type_name -> code.chat.v2.StreamError + 52, // 9: code.chat.v2.StreamMessagesResponse.messages:type_name -> code.chat.v2.StreamMessagesResponse.MessageBatch + 3, // 10: code.chat.v2.StreamError.code:type_name -> code.chat.v2.StreamError.Code + 55, // 11: code.chat.v2.GetChatsRequest.owner:type_name -> code.common.v1.SolanaAccountId + 56, // 12: code.chat.v2.GetChatsRequest.signature:type_name -> code.common.v1.Signature + 46, // 13: code.chat.v2.GetChatsRequest.cursor:type_name -> code.chat.v2.Cursor + 4, // 14: code.chat.v2.GetChatsRequest.direction:type_name -> code.chat.v2.GetChatsRequest.Direction + 5, // 15: code.chat.v2.GetChatsResponse.result:type_name -> code.chat.v2.GetChatsResponse.Result + 36, // 16: code.chat.v2.GetChatsResponse.chats:type_name -> code.chat.v2.Metadata + 57, // 17: code.chat.v2.GetMessagesRequest.chat_id:type_name -> code.common.v1.ChatId + 55, // 18: code.chat.v2.GetMessagesRequest.owner:type_name -> code.common.v1.SolanaAccountId + 56, // 19: code.chat.v2.GetMessagesRequest.signature:type_name -> code.common.v1.Signature + 46, // 20: code.chat.v2.GetMessagesRequest.cursor:type_name -> code.chat.v2.Cursor + 6, // 21: code.chat.v2.GetMessagesRequest.direction:type_name -> code.chat.v2.GetMessagesRequest.Direction + 7, // 22: code.chat.v2.GetMessagesResponse.result:type_name -> code.chat.v2.GetMessagesResponse.Result + 37, // 23: code.chat.v2.GetMessagesResponse.messages:type_name -> code.chat.v2.Message + 55, // 24: code.chat.v2.StartChatRequest.owner:type_name -> code.common.v1.SolanaAccountId + 56, // 25: code.chat.v2.StartChatRequest.signature:type_name -> code.common.v1.Signature + 24, // 26: code.chat.v2.StartChatRequest.two_way_chat:type_name -> code.chat.v2.StartTwoWayChatParameters + 55, // 27: code.chat.v2.StartTwoWayChatParameters.other_user:type_name -> code.common.v1.SolanaAccountId + 58, // 28: code.chat.v2.StartTwoWayChatParameters.intent_id:type_name -> code.common.v1.IntentId + 8, // 29: code.chat.v2.StartChatResponse.result:type_name -> code.chat.v2.StartChatResponse.Result + 36, // 30: code.chat.v2.StartChatResponse.chat:type_name -> code.chat.v2.Metadata + 57, // 31: code.chat.v2.SendMessageRequest.chat_id:type_name -> code.common.v1.ChatId + 41, // 32: code.chat.v2.SendMessageRequest.content:type_name -> code.chat.v2.Content + 55, // 33: code.chat.v2.SendMessageRequest.owner:type_name -> code.common.v1.SolanaAccountId + 56, // 34: code.chat.v2.SendMessageRequest.signature:type_name -> code.common.v1.Signature + 9, // 35: code.chat.v2.SendMessageResponse.result:type_name -> code.chat.v2.SendMessageResponse.Result + 37, // 36: code.chat.v2.SendMessageResponse.message:type_name -> code.chat.v2.Message + 57, // 37: code.chat.v2.AdvancePointerRequest.chat_id:type_name -> code.common.v1.ChatId + 40, // 38: code.chat.v2.AdvancePointerRequest.pointer:type_name -> code.chat.v2.Pointer + 55, // 39: code.chat.v2.AdvancePointerRequest.owner:type_name -> code.common.v1.SolanaAccountId + 56, // 40: code.chat.v2.AdvancePointerRequest.signature:type_name -> code.common.v1.Signature + 10, // 41: code.chat.v2.AdvancePointerResponse.result:type_name -> code.chat.v2.AdvancePointerResponse.Result + 57, // 42: code.chat.v2.SetMuteStateRequest.chat_id:type_name -> code.common.v1.ChatId + 55, // 43: code.chat.v2.SetMuteStateRequest.owner:type_name -> code.common.v1.SolanaAccountId + 56, // 44: code.chat.v2.SetMuteStateRequest.signature:type_name -> code.common.v1.Signature + 11, // 45: code.chat.v2.SetMuteStateResponse.result:type_name -> code.chat.v2.SetMuteStateResponse.Result + 57, // 46: code.chat.v2.NotifyIsTypingRequest.chat_id:type_name -> code.common.v1.ChatId + 55, // 47: code.chat.v2.NotifyIsTypingRequest.owner:type_name -> code.common.v1.SolanaAccountId + 56, // 48: code.chat.v2.NotifyIsTypingRequest.signature:type_name -> code.common.v1.Signature + 12, // 49: code.chat.v2.NotifyIsTypingResponse.result:type_name -> code.chat.v2.NotifyIsTypingResponse.Result + 57, // 50: code.chat.v2.Metadata.chat_id:type_name -> code.common.v1.ChatId + 0, // 51: code.chat.v2.Metadata.type:type_name -> code.chat.v2.ChatType + 46, // 52: code.chat.v2.Metadata.cursor:type_name -> code.chat.v2.Cursor + 38, // 53: code.chat.v2.Metadata.members:type_name -> code.chat.v2.Member + 34, // 54: code.chat.v2.Message.message_id:type_name -> code.chat.v2.MessageId + 35, // 55: code.chat.v2.Message.sender_id:type_name -> code.chat.v2.MemberId + 41, // 56: code.chat.v2.Message.content:type_name -> code.chat.v2.Content + 59, // 57: code.chat.v2.Message.ts:type_name -> google.protobuf.Timestamp + 46, // 58: code.chat.v2.Message.cursor:type_name -> code.chat.v2.Cursor + 35, // 59: code.chat.v2.Member.member_id:type_name -> code.chat.v2.MemberId + 39, // 60: code.chat.v2.Member.identity:type_name -> code.chat.v2.MemberIdentity + 40, // 61: code.chat.v2.Member.pointers:type_name -> code.chat.v2.Pointer + 1, // 62: code.chat.v2.MemberIdentity.platform:type_name -> code.chat.v2.Platform + 2, // 63: code.chat.v2.Pointer.type:type_name -> code.chat.v2.PointerType + 34, // 64: code.chat.v2.Pointer.value:type_name -> code.chat.v2.MessageId + 35, // 65: code.chat.v2.Pointer.member_id:type_name -> code.chat.v2.MemberId + 42, // 66: code.chat.v2.Content.text:type_name -> code.chat.v2.TextContent + 43, // 67: code.chat.v2.Content.localized:type_name -> code.chat.v2.LocalizedContent + 44, // 68: code.chat.v2.Content.exchange_data:type_name -> code.chat.v2.ExchangeDataContent + 45, // 69: code.chat.v2.Content.nacl_box:type_name -> code.chat.v2.NaclBoxEncryptedContent + 13, // 70: code.chat.v2.ExchangeDataContent.verb:type_name -> code.chat.v2.ExchangeDataContent.Verb + 60, // 71: code.chat.v2.ExchangeDataContent.exact:type_name -> code.transaction.v2.ExchangeData + 61, // 72: code.chat.v2.ExchangeDataContent.partial:type_name -> code.transaction.v2.ExchangeDataWithoutRate + 58, // 73: code.chat.v2.ExchangeDataContent.intent:type_name -> code.common.v1.IntentId + 56, // 74: code.chat.v2.ExchangeDataContent.signature:type_name -> code.common.v1.Signature + 55, // 75: code.chat.v2.NaclBoxEncryptedContent.peer_public_key:type_name -> code.common.v1.SolanaAccountId + 35, // 76: code.chat.v2.IsTyping.member_id:type_name -> code.chat.v2.MemberId + 55, // 77: code.chat.v2.StreamChatEventsRequest.Params.owner:type_name -> code.common.v1.SolanaAccountId + 56, // 78: code.chat.v2.StreamChatEventsRequest.Params.signature:type_name -> code.common.v1.Signature + 50, // 79: code.chat.v2.StreamChatEventsResponse.EventBatch.updates:type_name -> code.chat.v2.StreamChatEventsResponse.ChatUpdate + 57, // 80: code.chat.v2.StreamChatEventsResponse.ChatUpdate.chat_id:type_name -> code.common.v1.ChatId + 36, // 81: code.chat.v2.StreamChatEventsResponse.ChatUpdate.metadata:type_name -> code.chat.v2.Metadata + 37, // 82: code.chat.v2.StreamChatEventsResponse.ChatUpdate.last_message:type_name -> code.chat.v2.Message + 40, // 83: code.chat.v2.StreamChatEventsResponse.ChatUpdate.pointer:type_name -> code.chat.v2.Pointer + 47, // 84: code.chat.v2.StreamChatEventsResponse.ChatUpdate.is_typing:type_name -> code.chat.v2.IsTyping + 55, // 85: code.chat.v2.StreamMessagesRequest.Params.owner:type_name -> code.common.v1.SolanaAccountId + 56, // 86: code.chat.v2.StreamMessagesRequest.Params.signature:type_name -> code.common.v1.Signature + 57, // 87: code.chat.v2.StreamMessagesRequest.Params.chat_id:type_name -> code.common.v1.ChatId + 34, // 88: code.chat.v2.StreamMessagesRequest.Params.last_known_message_id:type_name -> code.chat.v2.MessageId + 37, // 89: code.chat.v2.StreamMessagesResponse.MessageBatch.messages:type_name -> code.chat.v2.Message + 14, // 90: code.chat.v2.Chat.StreamChatEvents:input_type -> code.chat.v2.StreamChatEventsRequest + 16, // 91: code.chat.v2.Chat.StreamMessages:input_type -> code.chat.v2.StreamMessagesRequest + 19, // 92: code.chat.v2.Chat.GetChats:input_type -> code.chat.v2.GetChatsRequest + 21, // 93: code.chat.v2.Chat.GetMessages:input_type -> code.chat.v2.GetMessagesRequest + 23, // 94: code.chat.v2.Chat.StartChat:input_type -> code.chat.v2.StartChatRequest + 26, // 95: code.chat.v2.Chat.SendMessage:input_type -> code.chat.v2.SendMessageRequest + 28, // 96: code.chat.v2.Chat.AdvancePointer:input_type -> code.chat.v2.AdvancePointerRequest + 30, // 97: code.chat.v2.Chat.SetMuteState:input_type -> code.chat.v2.SetMuteStateRequest + 32, // 98: code.chat.v2.Chat.NotifyIsTyping:input_type -> code.chat.v2.NotifyIsTypingRequest + 15, // 99: code.chat.v2.Chat.StreamChatEvents:output_type -> code.chat.v2.StreamChatEventsResponse + 17, // 100: code.chat.v2.Chat.StreamMessages:output_type -> code.chat.v2.StreamMessagesResponse + 20, // 101: code.chat.v2.Chat.GetChats:output_type -> code.chat.v2.GetChatsResponse + 22, // 102: code.chat.v2.Chat.GetMessages:output_type -> code.chat.v2.GetMessagesResponse + 25, // 103: code.chat.v2.Chat.StartChat:output_type -> code.chat.v2.StartChatResponse + 27, // 104: code.chat.v2.Chat.SendMessage:output_type -> code.chat.v2.SendMessageResponse + 29, // 105: code.chat.v2.Chat.AdvancePointer:output_type -> code.chat.v2.AdvancePointerResponse + 31, // 106: code.chat.v2.Chat.SetMuteState:output_type -> code.chat.v2.SetMuteStateResponse + 33, // 107: code.chat.v2.Chat.NotifyIsTyping:output_type -> code.chat.v2.NotifyIsTypingResponse + 99, // [99:108] is the sub-list for method output_type + 90, // [90:99] is the sub-list for method input_type + 90, // [90:90] is the sub-list for extension type_name + 90, // [90:90] is the sub-list for extension extendee + 0, // [0:90] is the sub-list for field type_name } func init() { file_chat_v2_chat_service_proto_init() } @@ -4620,7 +4279,7 @@ func file_chat_v2_chat_service_proto_init() { } if !protoimpl.UnsafeEnabled { file_chat_v2_chat_service_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetChatsRequest); i { + switch v := v.(*StreamChatEventsRequest); i { case 0: return &v.state case 1: @@ -4632,7 +4291,7 @@ func file_chat_v2_chat_service_proto_init() { } } file_chat_v2_chat_service_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetChatsResponse); i { + switch v := v.(*StreamChatEventsResponse); i { case 0: return &v.state case 1: @@ -4644,7 +4303,7 @@ func file_chat_v2_chat_service_proto_init() { } } file_chat_v2_chat_service_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetMessagesRequest); i { + switch v := v.(*StreamMessagesRequest); i { case 0: return &v.state case 1: @@ -4656,7 +4315,7 @@ func file_chat_v2_chat_service_proto_init() { } } file_chat_v2_chat_service_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetMessagesResponse); i { + switch v := v.(*StreamMessagesResponse); i { case 0: return &v.state case 1: @@ -4668,7 +4327,7 @@ func file_chat_v2_chat_service_proto_init() { } } file_chat_v2_chat_service_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OpenChatEventStream); i { + switch v := v.(*StreamError); i { case 0: return &v.state case 1: @@ -4680,7 +4339,7 @@ func file_chat_v2_chat_service_proto_init() { } } file_chat_v2_chat_service_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChatStreamEvent); i { + switch v := v.(*GetChatsRequest); i { case 0: return &v.state case 1: @@ -4692,7 +4351,7 @@ func file_chat_v2_chat_service_proto_init() { } } file_chat_v2_chat_service_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChatStreamEventBatch); i { + switch v := v.(*GetChatsResponse); i { case 0: return &v.state case 1: @@ -4704,7 +4363,7 @@ func file_chat_v2_chat_service_proto_init() { } } file_chat_v2_chat_service_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChatStreamEventError); i { + switch v := v.(*GetMessagesRequest); i { case 0: return &v.state case 1: @@ -4716,7 +4375,7 @@ func file_chat_v2_chat_service_proto_init() { } } file_chat_v2_chat_service_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StreamChatEventsRequest); i { + switch v := v.(*GetMessagesResponse); i { case 0: return &v.state case 1: @@ -4728,7 +4387,7 @@ func file_chat_v2_chat_service_proto_init() { } } file_chat_v2_chat_service_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StreamChatEventsResponse); i { + switch v := v.(*StartChatRequest); i { case 0: return &v.state case 1: @@ -4740,7 +4399,7 @@ func file_chat_v2_chat_service_proto_init() { } } file_chat_v2_chat_service_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StartChatRequest); i { + switch v := v.(*StartTwoWayChatParameters); i { case 0: return &v.state case 1: @@ -4752,7 +4411,7 @@ func file_chat_v2_chat_service_proto_init() { } } file_chat_v2_chat_service_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StartTipChatParameters); i { + switch v := v.(*StartChatResponse); i { case 0: return &v.state case 1: @@ -4764,7 +4423,7 @@ func file_chat_v2_chat_service_proto_init() { } } file_chat_v2_chat_service_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StartChatResponse); i { + switch v := v.(*SendMessageRequest); i { case 0: return &v.state case 1: @@ -4776,7 +4435,7 @@ func file_chat_v2_chat_service_proto_init() { } } file_chat_v2_chat_service_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SendMessageRequest); i { + switch v := v.(*SendMessageResponse); i { case 0: return &v.state case 1: @@ -4788,7 +4447,7 @@ func file_chat_v2_chat_service_proto_init() { } } file_chat_v2_chat_service_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SendMessageResponse); i { + switch v := v.(*AdvancePointerRequest); i { case 0: return &v.state case 1: @@ -4800,7 +4459,7 @@ func file_chat_v2_chat_service_proto_init() { } } file_chat_v2_chat_service_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AdvancePointerRequest); i { + switch v := v.(*AdvancePointerResponse); i { case 0: return &v.state case 1: @@ -4812,7 +4471,7 @@ func file_chat_v2_chat_service_proto_init() { } } file_chat_v2_chat_service_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AdvancePointerResponse); i { + switch v := v.(*SetMuteStateRequest); i { case 0: return &v.state case 1: @@ -4824,7 +4483,7 @@ func file_chat_v2_chat_service_proto_init() { } } file_chat_v2_chat_service_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RevealIdentityRequest); i { + switch v := v.(*SetMuteStateResponse); i { case 0: return &v.state case 1: @@ -4836,7 +4495,7 @@ func file_chat_v2_chat_service_proto_init() { } } file_chat_v2_chat_service_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RevealIdentityResponse); i { + switch v := v.(*NotifyIsTypingRequest); i { case 0: return &v.state case 1: @@ -4848,7 +4507,7 @@ func file_chat_v2_chat_service_proto_init() { } } file_chat_v2_chat_service_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetMuteStateRequest); i { + switch v := v.(*NotifyIsTypingResponse); i { case 0: return &v.state case 1: @@ -4860,7 +4519,7 @@ func file_chat_v2_chat_service_proto_init() { } } file_chat_v2_chat_service_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetMuteStateResponse); i { + switch v := v.(*MessageId); i { case 0: return &v.state case 1: @@ -4872,7 +4531,7 @@ func file_chat_v2_chat_service_proto_init() { } } file_chat_v2_chat_service_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetSubscriptionStateRequest); i { + switch v := v.(*MemberId); i { case 0: return &v.state case 1: @@ -4884,7 +4543,7 @@ func file_chat_v2_chat_service_proto_init() { } } file_chat_v2_chat_service_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetSubscriptionStateResponse); i { + switch v := v.(*Metadata); i { case 0: return &v.state case 1: @@ -4896,7 +4555,7 @@ func file_chat_v2_chat_service_proto_init() { } } file_chat_v2_chat_service_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NotifyIsTypingRequest); i { + switch v := v.(*Message); i { case 0: return &v.state case 1: @@ -4908,7 +4567,7 @@ func file_chat_v2_chat_service_proto_init() { } } file_chat_v2_chat_service_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NotifyIsTypingResponse); i { + switch v := v.(*Member); i { case 0: return &v.state case 1: @@ -4920,7 +4579,7 @@ func file_chat_v2_chat_service_proto_init() { } } file_chat_v2_chat_service_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChatMessageId); i { + switch v := v.(*MemberIdentity); i { case 0: return &v.state case 1: @@ -4932,7 +4591,7 @@ func file_chat_v2_chat_service_proto_init() { } } file_chat_v2_chat_service_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChatMemberId); i { + switch v := v.(*Pointer); i { case 0: return &v.state case 1: @@ -4944,7 +4603,7 @@ func file_chat_v2_chat_service_proto_init() { } } file_chat_v2_chat_service_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChatMetadata); i { + switch v := v.(*Content); i { case 0: return &v.state case 1: @@ -4956,7 +4615,7 @@ func file_chat_v2_chat_service_proto_init() { } } file_chat_v2_chat_service_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChatMessage); i { + switch v := v.(*TextContent); i { case 0: return &v.state case 1: @@ -4968,7 +4627,7 @@ func file_chat_v2_chat_service_proto_init() { } } file_chat_v2_chat_service_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChatMember); i { + switch v := v.(*LocalizedContent); i { case 0: return &v.state case 1: @@ -4980,7 +4639,7 @@ func file_chat_v2_chat_service_proto_init() { } } file_chat_v2_chat_service_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChatMemberIdentity); i { + switch v := v.(*ExchangeDataContent); i { case 0: return &v.state case 1: @@ -4992,7 +4651,7 @@ func file_chat_v2_chat_service_proto_init() { } } file_chat_v2_chat_service_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Pointer); i { + switch v := v.(*NaclBoxEncryptedContent); i { case 0: return &v.state case 1: @@ -5004,7 +4663,7 @@ func file_chat_v2_chat_service_proto_init() { } } file_chat_v2_chat_service_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Content); i { + switch v := v.(*Cursor); i { case 0: return &v.state case 1: @@ -5016,7 +4675,7 @@ func file_chat_v2_chat_service_proto_init() { } } file_chat_v2_chat_service_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TextContent); i { + switch v := v.(*IsTyping); i { case 0: return &v.state case 1: @@ -5028,7 +4687,7 @@ func file_chat_v2_chat_service_proto_init() { } } file_chat_v2_chat_service_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LocalizedContent); i { + switch v := v.(*StreamChatEventsRequest_Params); i { case 0: return &v.state case 1: @@ -5040,7 +4699,7 @@ func file_chat_v2_chat_service_proto_init() { } } file_chat_v2_chat_service_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExchangeDataContent); i { + switch v := v.(*StreamChatEventsResponse_EventBatch); i { case 0: return &v.state case 1: @@ -5052,7 +4711,7 @@ func file_chat_v2_chat_service_proto_init() { } } file_chat_v2_chat_service_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NaclBoxEncryptedContent); i { + switch v := v.(*StreamChatEventsResponse_ChatUpdate); i { case 0: return &v.state case 1: @@ -5064,7 +4723,7 @@ func file_chat_v2_chat_service_proto_init() { } } file_chat_v2_chat_service_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ThankYouContent); i { + switch v := v.(*StreamMessagesRequest_Params); i { case 0: return &v.state case 1: @@ -5076,31 +4735,7 @@ func file_chat_v2_chat_service_proto_init() { } } file_chat_v2_chat_service_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IdentityRevealedContent); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_chat_v2_chat_service_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Cursor); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_chat_v2_chat_service_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsTyping); i { + switch v := v.(*StreamMessagesResponse_MessageBatch); i { case 0: return &v.state case 1: @@ -5112,44 +4747,50 @@ func file_chat_v2_chat_service_proto_init() { } } } - file_chat_v2_chat_service_proto_msgTypes[5].OneofWrappers = []interface{}{ - (*ChatStreamEvent_Message)(nil), - (*ChatStreamEvent_Pointer)(nil), - (*ChatStreamEvent_IsTyping)(nil), - } - file_chat_v2_chat_service_proto_msgTypes[8].OneofWrappers = []interface{}{ - (*StreamChatEventsRequest_OpenStream)(nil), + file_chat_v2_chat_service_proto_msgTypes[0].OneofWrappers = []interface{}{ + (*StreamChatEventsRequest_Params_)(nil), (*StreamChatEventsRequest_Pong)(nil), } - file_chat_v2_chat_service_proto_msgTypes[9].OneofWrappers = []interface{}{ - (*StreamChatEventsResponse_Events)(nil), + file_chat_v2_chat_service_proto_msgTypes[1].OneofWrappers = []interface{}{ (*StreamChatEventsResponse_Ping)(nil), (*StreamChatEventsResponse_Error)(nil), + (*StreamChatEventsResponse_Events)(nil), } - file_chat_v2_chat_service_proto_msgTypes[10].OneofWrappers = []interface{}{ - (*StartChatRequest_TipChat)(nil), + file_chat_v2_chat_service_proto_msgTypes[2].OneofWrappers = []interface{}{ + (*StreamMessagesRequest_Params_)(nil), + (*StreamMessagesRequest_Pong)(nil), } - file_chat_v2_chat_service_proto_msgTypes[32].OneofWrappers = []interface{}{ + file_chat_v2_chat_service_proto_msgTypes[3].OneofWrappers = []interface{}{ + (*StreamMessagesResponse_Ping)(nil), + (*StreamMessagesResponse_Error)(nil), + (*StreamMessagesResponse_Messages)(nil), + } + file_chat_v2_chat_service_proto_msgTypes[9].OneofWrappers = []interface{}{ + (*StartChatRequest_TwoWayChat)(nil), + } + file_chat_v2_chat_service_proto_msgTypes[27].OneofWrappers = []interface{}{ (*Content_Text)(nil), (*Content_Localized)(nil), (*Content_ExchangeData)(nil), (*Content_NaclBox)(nil), - (*Content_ThankYou)(nil), - (*Content_IdentityRevealed)(nil), } - file_chat_v2_chat_service_proto_msgTypes[35].OneofWrappers = []interface{}{ + file_chat_v2_chat_service_proto_msgTypes[30].OneofWrappers = []interface{}{ (*ExchangeDataContent_Exact)(nil), (*ExchangeDataContent_Partial)(nil), (*ExchangeDataContent_Intent)(nil), (*ExchangeDataContent_Signature)(nil), } + file_chat_v2_chat_service_proto_msgTypes[37].OneofWrappers = []interface{}{ + (*StreamMessagesRequest_Params_LastKnownMessageId)(nil), + (*StreamMessagesRequest_Params_LatestOnly)(nil), + } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_chat_v2_chat_service_proto_rawDesc, - NumEnums: 16, - NumMessages: 41, + NumEnums: 14, + NumMessages: 39, NumExtensions: 0, NumServices: 1, }, diff --git a/generated/go/chat/v2/chat_service.pb.validate.go b/generated/go/chat/v2/chat_service.pb.validate.go index 6382685..67525f4 100644 --- a/generated/go/chat/v2/chat_service.pb.validate.go +++ b/generated/go/chat/v2/chat_service.pb.validate.go @@ -33,740 +33,54 @@ var ( _ = ptypes.DynamicAny{} ) -// Validate checks the field values on GetChatsRequest with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. -func (m *GetChatsRequest) Validate() error { - if m == nil { - return nil - } - - if m.GetOwner() == nil { - return GetChatsRequestValidationError{ - field: "Owner", - reason: "value is required", - } - } - - if v, ok := interface{}(m.GetOwner()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return GetChatsRequestValidationError{ - field: "Owner", - reason: "embedded message failed validation", - cause: err, - } - } - } - - if m.GetSignature() == nil { - return GetChatsRequestValidationError{ - field: "Signature", - reason: "value is required", - } - } - - if v, ok := interface{}(m.GetSignature()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return GetChatsRequestValidationError{ - field: "Signature", - reason: "embedded message failed validation", - cause: err, - } - } - } - - if m.GetPageSize() > 100 { - return GetChatsRequestValidationError{ - field: "PageSize", - reason: "value must be less than or equal to 100", - } - } - - if v, ok := interface{}(m.GetCursor()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return GetChatsRequestValidationError{ - field: "Cursor", - reason: "embedded message failed validation", - cause: err, - } - } - } - - // no validation rules for Direction - - return nil -} - -// GetChatsRequestValidationError is the validation error returned by -// GetChatsRequest.Validate if the designated constraints aren't met. -type GetChatsRequestValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e GetChatsRequestValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e GetChatsRequestValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e GetChatsRequestValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e GetChatsRequestValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e GetChatsRequestValidationError) ErrorName() string { return "GetChatsRequestValidationError" } - -// Error satisfies the builtin error interface -func (e GetChatsRequestValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sGetChatsRequest.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = GetChatsRequestValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = GetChatsRequestValidationError{} - -// Validate checks the field values on GetChatsResponse with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. -func (m *GetChatsResponse) Validate() error { - if m == nil { - return nil - } - - // no validation rules for Result - - if len(m.GetChats()) > 100 { - return GetChatsResponseValidationError{ - field: "Chats", - reason: "value must contain no more than 100 item(s)", - } - } - - for idx, item := range m.GetChats() { - _, _ = idx, item - - if v, ok := interface{}(item).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return GetChatsResponseValidationError{ - field: fmt.Sprintf("Chats[%v]", idx), - reason: "embedded message failed validation", - cause: err, - } - } - } - - } - - return nil -} - -// GetChatsResponseValidationError is the validation error returned by -// GetChatsResponse.Validate if the designated constraints aren't met. -type GetChatsResponseValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e GetChatsResponseValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e GetChatsResponseValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e GetChatsResponseValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e GetChatsResponseValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e GetChatsResponseValidationError) ErrorName() string { return "GetChatsResponseValidationError" } - -// Error satisfies the builtin error interface -func (e GetChatsResponseValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sGetChatsResponse.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = GetChatsResponseValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = GetChatsResponseValidationError{} - -// Validate checks the field values on GetMessagesRequest with the rules -// defined in the proto definition for this message. If any rules are -// violated, an error is returned. -func (m *GetMessagesRequest) Validate() error { - if m == nil { - return nil - } - - if m.GetChatId() == nil { - return GetMessagesRequestValidationError{ - field: "ChatId", - reason: "value is required", - } - } - - if v, ok := interface{}(m.GetChatId()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return GetMessagesRequestValidationError{ - field: "ChatId", - reason: "embedded message failed validation", - cause: err, - } - } - } - - if m.GetMemberId() == nil { - return GetMessagesRequestValidationError{ - field: "MemberId", - reason: "value is required", - } - } - - if v, ok := interface{}(m.GetMemberId()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return GetMessagesRequestValidationError{ - field: "MemberId", - reason: "embedded message failed validation", - cause: err, - } - } - } - - if m.GetOwner() == nil { - return GetMessagesRequestValidationError{ - field: "Owner", - reason: "value is required", - } - } - - if v, ok := interface{}(m.GetOwner()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return GetMessagesRequestValidationError{ - field: "Owner", - reason: "embedded message failed validation", - cause: err, - } - } - } - - if m.GetSignature() == nil { - return GetMessagesRequestValidationError{ - field: "Signature", - reason: "value is required", - } - } - - if v, ok := interface{}(m.GetSignature()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return GetMessagesRequestValidationError{ - field: "Signature", - reason: "embedded message failed validation", - cause: err, - } - } - } - - if m.GetPageSize() > 100 { - return GetMessagesRequestValidationError{ - field: "PageSize", - reason: "value must be less than or equal to 100", - } - } - - if v, ok := interface{}(m.GetCursor()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return GetMessagesRequestValidationError{ - field: "Cursor", - reason: "embedded message failed validation", - cause: err, - } - } - } - - // no validation rules for Direction - - return nil -} - -// GetMessagesRequestValidationError is the validation error returned by -// GetMessagesRequest.Validate if the designated constraints aren't met. -type GetMessagesRequestValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e GetMessagesRequestValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e GetMessagesRequestValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e GetMessagesRequestValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e GetMessagesRequestValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e GetMessagesRequestValidationError) ErrorName() string { - return "GetMessagesRequestValidationError" -} - -// Error satisfies the builtin error interface -func (e GetMessagesRequestValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sGetMessagesRequest.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = GetMessagesRequestValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = GetMessagesRequestValidationError{} - -// Validate checks the field values on GetMessagesResponse with the rules -// defined in the proto definition for this message. If any rules are -// violated, an error is returned. -func (m *GetMessagesResponse) Validate() error { - if m == nil { - return nil - } - - // no validation rules for Result - - if len(m.GetMessages()) > 100 { - return GetMessagesResponseValidationError{ - field: "Messages", - reason: "value must contain no more than 100 item(s)", - } - } - - for idx, item := range m.GetMessages() { - _, _ = idx, item - - if v, ok := interface{}(item).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return GetMessagesResponseValidationError{ - field: fmt.Sprintf("Messages[%v]", idx), - reason: "embedded message failed validation", - cause: err, - } - } - } - - } - - return nil -} - -// GetMessagesResponseValidationError is the validation error returned by -// GetMessagesResponse.Validate if the designated constraints aren't met. -type GetMessagesResponseValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e GetMessagesResponseValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e GetMessagesResponseValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e GetMessagesResponseValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e GetMessagesResponseValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e GetMessagesResponseValidationError) ErrorName() string { - return "GetMessagesResponseValidationError" -} - -// Error satisfies the builtin error interface -func (e GetMessagesResponseValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sGetMessagesResponse.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = GetMessagesResponseValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = GetMessagesResponseValidationError{} - -// Validate checks the field values on OpenChatEventStream with the rules -// defined in the proto definition for this message. If any rules are -// violated, an error is returned. -func (m *OpenChatEventStream) Validate() error { - if m == nil { - return nil - } - - if m.GetChatId() == nil { - return OpenChatEventStreamValidationError{ - field: "ChatId", - reason: "value is required", - } - } - - if v, ok := interface{}(m.GetChatId()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return OpenChatEventStreamValidationError{ - field: "ChatId", - reason: "embedded message failed validation", - cause: err, - } - } - } - - if m.GetMemberId() == nil { - return OpenChatEventStreamValidationError{ - field: "MemberId", - reason: "value is required", - } - } - - if v, ok := interface{}(m.GetMemberId()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return OpenChatEventStreamValidationError{ - field: "MemberId", - reason: "embedded message failed validation", - cause: err, - } - } - } - - if m.GetOwner() == nil { - return OpenChatEventStreamValidationError{ - field: "Owner", - reason: "value is required", - } - } - - if v, ok := interface{}(m.GetOwner()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return OpenChatEventStreamValidationError{ - field: "Owner", - reason: "embedded message failed validation", - cause: err, - } - } - } - - if m.GetSignature() == nil { - return OpenChatEventStreamValidationError{ - field: "Signature", - reason: "value is required", - } - } - - if v, ok := interface{}(m.GetSignature()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return OpenChatEventStreamValidationError{ - field: "Signature", - reason: "embedded message failed validation", - cause: err, - } - } - } - - return nil -} - -// OpenChatEventStreamValidationError is the validation error returned by -// OpenChatEventStream.Validate if the designated constraints aren't met. -type OpenChatEventStreamValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e OpenChatEventStreamValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e OpenChatEventStreamValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e OpenChatEventStreamValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e OpenChatEventStreamValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e OpenChatEventStreamValidationError) ErrorName() string { - return "OpenChatEventStreamValidationError" -} - -// Error satisfies the builtin error interface -func (e OpenChatEventStreamValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sOpenChatEventStream.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = OpenChatEventStreamValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = OpenChatEventStreamValidationError{} - -// Validate checks the field values on ChatStreamEvent with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. -func (m *ChatStreamEvent) Validate() error { - if m == nil { - return nil - } - - switch m.Type.(type) { - - case *ChatStreamEvent_Message: - - if v, ok := interface{}(m.GetMessage()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return ChatStreamEventValidationError{ - field: "Message", - reason: "embedded message failed validation", - cause: err, - } - } - } - - case *ChatStreamEvent_Pointer: - - if v, ok := interface{}(m.GetPointer()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return ChatStreamEventValidationError{ - field: "Pointer", - reason: "embedded message failed validation", - cause: err, - } - } - } - - case *ChatStreamEvent_IsTyping: - - if v, ok := interface{}(m.GetIsTyping()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return ChatStreamEventValidationError{ - field: "IsTyping", - reason: "embedded message failed validation", - cause: err, - } - } - } - - default: - return ChatStreamEventValidationError{ - field: "Type", - reason: "value is required", - } - - } - - return nil -} - -// ChatStreamEventValidationError is the validation error returned by -// ChatStreamEvent.Validate if the designated constraints aren't met. -type ChatStreamEventValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e ChatStreamEventValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e ChatStreamEventValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e ChatStreamEventValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e ChatStreamEventValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e ChatStreamEventValidationError) ErrorName() string { return "ChatStreamEventValidationError" } - -// Error satisfies the builtin error interface -func (e ChatStreamEventValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sChatStreamEvent.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = ChatStreamEventValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = ChatStreamEventValidationError{} - -// Validate checks the field values on ChatStreamEventBatch with the rules +// Validate checks the field values on StreamChatEventsRequest with the rules // defined in the proto definition for this message. If any rules are // violated, an error is returned. -func (m *ChatStreamEventBatch) Validate() error { +func (m *StreamChatEventsRequest) Validate() error { if m == nil { return nil } - if l := len(m.GetEvents()); l < 1 || l > 1024 { - return ChatStreamEventBatchValidationError{ - field: "Events", - reason: "value must contain between 1 and 1024 items, inclusive", + switch m.Type.(type) { + + case *StreamChatEventsRequest_Params_: + + if v, ok := interface{}(m.GetParams()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return StreamChatEventsRequestValidationError{ + field: "Params", + reason: "embedded message failed validation", + cause: err, + } + } } - } - for idx, item := range m.GetEvents() { - _, _ = idx, item + case *StreamChatEventsRequest_Pong: - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetPong()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - return ChatStreamEventBatchValidationError{ - field: fmt.Sprintf("Events[%v]", idx), + return StreamChatEventsRequestValidationError{ + field: "Pong", reason: "embedded message failed validation", cause: err, } } } + default: + return StreamChatEventsRequestValidationError{ + field: "Type", + reason: "value is required", + } + } return nil } -// ChatStreamEventBatchValidationError is the validation error returned by -// ChatStreamEventBatch.Validate if the designated constraints aren't met. -type ChatStreamEventBatchValidationError struct { +// StreamChatEventsRequestValidationError is the validation error returned by +// StreamChatEventsRequest.Validate if the designated constraints aren't met. +type StreamChatEventsRequestValidationError struct { field string reason string cause error @@ -774,24 +88,24 @@ type ChatStreamEventBatchValidationError struct { } // Field function returns field value. -func (e ChatStreamEventBatchValidationError) Field() string { return e.field } +func (e StreamChatEventsRequestValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e ChatStreamEventBatchValidationError) Reason() string { return e.reason } +func (e StreamChatEventsRequestValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e ChatStreamEventBatchValidationError) Cause() error { return e.cause } +func (e StreamChatEventsRequestValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e ChatStreamEventBatchValidationError) Key() bool { return e.key } +func (e StreamChatEventsRequestValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e ChatStreamEventBatchValidationError) ErrorName() string { - return "ChatStreamEventBatchValidationError" +func (e StreamChatEventsRequestValidationError) ErrorName() string { + return "StreamChatEventsRequestValidationError" } // Error satisfies the builtin error interface -func (e ChatStreamEventBatchValidationError) Error() string { +func (e StreamChatEventsRequestValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -803,14 +117,14 @@ func (e ChatStreamEventBatchValidationError) Error() string { } return fmt.Sprintf( - "invalid %sChatStreamEventBatch.%s: %s%s", + "invalid %sStreamChatEventsRequest.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = ChatStreamEventBatchValidationError{} +var _ error = StreamChatEventsRequestValidationError{} var _ interface { Field() string @@ -818,24 +132,68 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = ChatStreamEventBatchValidationError{} +} = StreamChatEventsRequestValidationError{} -// Validate checks the field values on ChatStreamEventError with the rules +// Validate checks the field values on StreamChatEventsResponse with the rules // defined in the proto definition for this message. If any rules are // violated, an error is returned. -func (m *ChatStreamEventError) Validate() error { +func (m *StreamChatEventsResponse) Validate() error { if m == nil { return nil } - // no validation rules for Code + switch m.Type.(type) { + + case *StreamChatEventsResponse_Ping: + + if v, ok := interface{}(m.GetPing()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return StreamChatEventsResponseValidationError{ + field: "Ping", + reason: "embedded message failed validation", + cause: err, + } + } + } + + case *StreamChatEventsResponse_Error: + + if v, ok := interface{}(m.GetError()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return StreamChatEventsResponseValidationError{ + field: "Error", + reason: "embedded message failed validation", + cause: err, + } + } + } + + case *StreamChatEventsResponse_Events: + + if v, ok := interface{}(m.GetEvents()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return StreamChatEventsResponseValidationError{ + field: "Events", + reason: "embedded message failed validation", + cause: err, + } + } + } + + default: + return StreamChatEventsResponseValidationError{ + field: "Type", + reason: "value is required", + } + + } return nil } -// ChatStreamEventErrorValidationError is the validation error returned by -// ChatStreamEventError.Validate if the designated constraints aren't met. -type ChatStreamEventErrorValidationError struct { +// StreamChatEventsResponseValidationError is the validation error returned by +// StreamChatEventsResponse.Validate if the designated constraints aren't met. +type StreamChatEventsResponseValidationError struct { field string reason string cause error @@ -843,24 +201,24 @@ type ChatStreamEventErrorValidationError struct { } // Field function returns field value. -func (e ChatStreamEventErrorValidationError) Field() string { return e.field } +func (e StreamChatEventsResponseValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e ChatStreamEventErrorValidationError) Reason() string { return e.reason } +func (e StreamChatEventsResponseValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e ChatStreamEventErrorValidationError) Cause() error { return e.cause } +func (e StreamChatEventsResponseValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e ChatStreamEventErrorValidationError) Key() bool { return e.key } +func (e StreamChatEventsResponseValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e ChatStreamEventErrorValidationError) ErrorName() string { - return "ChatStreamEventErrorValidationError" +func (e StreamChatEventsResponseValidationError) ErrorName() string { + return "StreamChatEventsResponseValidationError" } // Error satisfies the builtin error interface -func (e ChatStreamEventErrorValidationError) Error() string { +func (e StreamChatEventsResponseValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -872,14 +230,14 @@ func (e ChatStreamEventErrorValidationError) Error() string { } return fmt.Sprintf( - "invalid %sChatStreamEventError.%s: %s%s", + "invalid %sStreamChatEventsResponse.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = ChatStreamEventErrorValidationError{} +var _ error = StreamChatEventsResponseValidationError{} var _ interface { Field() string @@ -887,35 +245,35 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = ChatStreamEventErrorValidationError{} +} = StreamChatEventsResponseValidationError{} -// Validate checks the field values on StreamChatEventsRequest with the rules +// Validate checks the field values on StreamMessagesRequest with the rules // defined in the proto definition for this message. If any rules are // violated, an error is returned. -func (m *StreamChatEventsRequest) Validate() error { +func (m *StreamMessagesRequest) Validate() error { if m == nil { return nil } switch m.Type.(type) { - case *StreamChatEventsRequest_OpenStream: + case *StreamMessagesRequest_Params_: - if v, ok := interface{}(m.GetOpenStream()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetParams()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - return StreamChatEventsRequestValidationError{ - field: "OpenStream", + return StreamMessagesRequestValidationError{ + field: "Params", reason: "embedded message failed validation", cause: err, } } } - case *StreamChatEventsRequest_Pong: + case *StreamMessagesRequest_Pong: if v, ok := interface{}(m.GetPong()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - return StreamChatEventsRequestValidationError{ + return StreamMessagesRequestValidationError{ field: "Pong", reason: "embedded message failed validation", cause: err, @@ -924,7 +282,7 @@ func (m *StreamChatEventsRequest) Validate() error { } default: - return StreamChatEventsRequestValidationError{ + return StreamMessagesRequestValidationError{ field: "Type", reason: "value is required", } @@ -934,9 +292,9 @@ func (m *StreamChatEventsRequest) Validate() error { return nil } -// StreamChatEventsRequestValidationError is the validation error returned by -// StreamChatEventsRequest.Validate if the designated constraints aren't met. -type StreamChatEventsRequestValidationError struct { +// StreamMessagesRequestValidationError is the validation error returned by +// StreamMessagesRequest.Validate if the designated constraints aren't met. +type StreamMessagesRequestValidationError struct { field string reason string cause error @@ -944,24 +302,24 @@ type StreamChatEventsRequestValidationError struct { } // Field function returns field value. -func (e StreamChatEventsRequestValidationError) Field() string { return e.field } +func (e StreamMessagesRequestValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e StreamChatEventsRequestValidationError) Reason() string { return e.reason } +func (e StreamMessagesRequestValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e StreamChatEventsRequestValidationError) Cause() error { return e.cause } +func (e StreamMessagesRequestValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e StreamChatEventsRequestValidationError) Key() bool { return e.key } +func (e StreamMessagesRequestValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e StreamChatEventsRequestValidationError) ErrorName() string { - return "StreamChatEventsRequestValidationError" +func (e StreamMessagesRequestValidationError) ErrorName() string { + return "StreamMessagesRequestValidationError" } // Error satisfies the builtin error interface -func (e StreamChatEventsRequestValidationError) Error() string { +func (e StreamMessagesRequestValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -973,14 +331,14 @@ func (e StreamChatEventsRequestValidationError) Error() string { } return fmt.Sprintf( - "invalid %sStreamChatEventsRequest.%s: %s%s", + "invalid %sStreamMessagesRequest.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = StreamChatEventsRequestValidationError{} +var _ error = StreamMessagesRequestValidationError{} var _ interface { Field() string @@ -988,48 +346,48 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = StreamChatEventsRequestValidationError{} +} = StreamMessagesRequestValidationError{} -// Validate checks the field values on StreamChatEventsResponse with the rules +// Validate checks the field values on StreamMessagesResponse with the rules // defined in the proto definition for this message. If any rules are // violated, an error is returned. -func (m *StreamChatEventsResponse) Validate() error { +func (m *StreamMessagesResponse) Validate() error { if m == nil { return nil } switch m.Type.(type) { - case *StreamChatEventsResponse_Events: + case *StreamMessagesResponse_Ping: - if v, ok := interface{}(m.GetEvents()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetPing()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - return StreamChatEventsResponseValidationError{ - field: "Events", + return StreamMessagesResponseValidationError{ + field: "Ping", reason: "embedded message failed validation", cause: err, } } } - case *StreamChatEventsResponse_Ping: + case *StreamMessagesResponse_Error: - if v, ok := interface{}(m.GetPing()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetError()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - return StreamChatEventsResponseValidationError{ - field: "Ping", + return StreamMessagesResponseValidationError{ + field: "Error", reason: "embedded message failed validation", cause: err, } } } - case *StreamChatEventsResponse_Error: + case *StreamMessagesResponse_Messages: - if v, ok := interface{}(m.GetError()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetMessages()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - return StreamChatEventsResponseValidationError{ - field: "Error", + return StreamMessagesResponseValidationError{ + field: "Messages", reason: "embedded message failed validation", cause: err, } @@ -1037,7 +395,7 @@ func (m *StreamChatEventsResponse) Validate() error { } default: - return StreamChatEventsResponseValidationError{ + return StreamMessagesResponseValidationError{ field: "Type", reason: "value is required", } @@ -1047,9 +405,9 @@ func (m *StreamChatEventsResponse) Validate() error { return nil } -// StreamChatEventsResponseValidationError is the validation error returned by -// StreamChatEventsResponse.Validate if the designated constraints aren't met. -type StreamChatEventsResponseValidationError struct { +// StreamMessagesResponseValidationError is the validation error returned by +// StreamMessagesResponse.Validate if the designated constraints aren't met. +type StreamMessagesResponseValidationError struct { field string reason string cause error @@ -1057,24 +415,24 @@ type StreamChatEventsResponseValidationError struct { } // Field function returns field value. -func (e StreamChatEventsResponseValidationError) Field() string { return e.field } +func (e StreamMessagesResponseValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e StreamChatEventsResponseValidationError) Reason() string { return e.reason } +func (e StreamMessagesResponseValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e StreamChatEventsResponseValidationError) Cause() error { return e.cause } +func (e StreamMessagesResponseValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e StreamChatEventsResponseValidationError) Key() bool { return e.key } +func (e StreamMessagesResponseValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e StreamChatEventsResponseValidationError) ErrorName() string { - return "StreamChatEventsResponseValidationError" +func (e StreamMessagesResponseValidationError) ErrorName() string { + return "StreamMessagesResponseValidationError" } // Error satisfies the builtin error interface -func (e StreamChatEventsResponseValidationError) Error() string { +func (e StreamMessagesResponseValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -1086,14 +444,14 @@ func (e StreamChatEventsResponseValidationError) Error() string { } return fmt.Sprintf( - "invalid %sStreamChatEventsResponse.%s: %s%s", + "invalid %sStreamMessagesResponse.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = StreamChatEventsResponseValidationError{} +var _ error = StreamMessagesResponseValidationError{} var _ interface { Field() string @@ -1101,78 +459,24 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = StreamChatEventsResponseValidationError{} +} = StreamMessagesResponseValidationError{} -// Validate checks the field values on StartChatRequest with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. -func (m *StartChatRequest) Validate() error { +// Validate checks the field values on StreamError with the rules defined in +// the proto definition for this message. If any rules are violated, an error +// is returned. +func (m *StreamError) Validate() error { if m == nil { return nil } - if m.GetOwner() == nil { - return StartChatRequestValidationError{ - field: "Owner", - reason: "value is required", - } - } - - if v, ok := interface{}(m.GetOwner()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return StartChatRequestValidationError{ - field: "Owner", - reason: "embedded message failed validation", - cause: err, - } - } - } - - if m.GetSignature() == nil { - return StartChatRequestValidationError{ - field: "Signature", - reason: "value is required", - } - } - - if v, ok := interface{}(m.GetSignature()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return StartChatRequestValidationError{ - field: "Signature", - reason: "embedded message failed validation", - cause: err, - } - } - } - - switch m.Parameters.(type) { - - case *StartChatRequest_TipChat: - - if v, ok := interface{}(m.GetTipChat()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return StartChatRequestValidationError{ - field: "TipChat", - reason: "embedded message failed validation", - cause: err, - } - } - } - - default: - return StartChatRequestValidationError{ - field: "Parameters", - reason: "value is required", - } - - } + // no validation rules for Code return nil } -// StartChatRequestValidationError is the validation error returned by -// StartChatRequest.Validate if the designated constraints aren't met. -type StartChatRequestValidationError struct { +// StreamErrorValidationError is the validation error returned by +// StreamError.Validate if the designated constraints aren't met. +type StreamErrorValidationError struct { field string reason string cause error @@ -1180,22 +484,22 @@ type StartChatRequestValidationError struct { } // Field function returns field value. -func (e StartChatRequestValidationError) Field() string { return e.field } +func (e StreamErrorValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e StartChatRequestValidationError) Reason() string { return e.reason } +func (e StreamErrorValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e StartChatRequestValidationError) Cause() error { return e.cause } +func (e StreamErrorValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e StartChatRequestValidationError) Key() bool { return e.key } +func (e StreamErrorValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e StartChatRequestValidationError) ErrorName() string { return "StartChatRequestValidationError" } +func (e StreamErrorValidationError) ErrorName() string { return "StreamErrorValidationError" } // Error satisfies the builtin error interface -func (e StartChatRequestValidationError) Error() string { +func (e StreamErrorValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -1207,14 +511,14 @@ func (e StartChatRequestValidationError) Error() string { } return fmt.Sprintf( - "invalid %sStartChatRequest.%s: %s%s", + "invalid %sStreamError.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = StartChatRequestValidationError{} +var _ error = StreamErrorValidationError{} var _ interface { Field() string @@ -1222,39 +526,75 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = StartChatRequestValidationError{} +} = StreamErrorValidationError{} -// Validate checks the field values on StartTipChatParameters with the rules -// defined in the proto definition for this message. If any rules are -// violated, an error is returned. -func (m *StartTipChatParameters) Validate() error { +// Validate checks the field values on GetChatsRequest with the rules defined +// in the proto definition for this message. If any rules are violated, an +// error is returned. +func (m *GetChatsRequest) Validate() error { if m == nil { return nil } - if m.GetIntentId() == nil { - return StartTipChatParametersValidationError{ - field: "IntentId", - reason: "value is required", + if m.GetOwner() == nil { + return GetChatsRequestValidationError{ + field: "Owner", + reason: "value is required", + } + } + + if v, ok := interface{}(m.GetOwner()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return GetChatsRequestValidationError{ + field: "Owner", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if m.GetSignature() == nil { + return GetChatsRequestValidationError{ + field: "Signature", + reason: "value is required", + } + } + + if v, ok := interface{}(m.GetSignature()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return GetChatsRequestValidationError{ + field: "Signature", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if m.GetPageSize() > 100 { + return GetChatsRequestValidationError{ + field: "PageSize", + reason: "value must be less than or equal to 100", } } - if v, ok := interface{}(m.GetIntentId()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetCursor()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - return StartTipChatParametersValidationError{ - field: "IntentId", + return GetChatsRequestValidationError{ + field: "Cursor", reason: "embedded message failed validation", cause: err, } } } + // no validation rules for Direction + return nil } -// StartTipChatParametersValidationError is the validation error returned by -// StartTipChatParameters.Validate if the designated constraints aren't met. -type StartTipChatParametersValidationError struct { +// GetChatsRequestValidationError is the validation error returned by +// GetChatsRequest.Validate if the designated constraints aren't met. +type GetChatsRequestValidationError struct { field string reason string cause error @@ -1262,24 +602,22 @@ type StartTipChatParametersValidationError struct { } // Field function returns field value. -func (e StartTipChatParametersValidationError) Field() string { return e.field } +func (e GetChatsRequestValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e StartTipChatParametersValidationError) Reason() string { return e.reason } +func (e GetChatsRequestValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e StartTipChatParametersValidationError) Cause() error { return e.cause } +func (e GetChatsRequestValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e StartTipChatParametersValidationError) Key() bool { return e.key } +func (e GetChatsRequestValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e StartTipChatParametersValidationError) ErrorName() string { - return "StartTipChatParametersValidationError" -} +func (e GetChatsRequestValidationError) ErrorName() string { return "GetChatsRequestValidationError" } // Error satisfies the builtin error interface -func (e StartTipChatParametersValidationError) Error() string { +func (e GetChatsRequestValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -1291,14 +629,14 @@ func (e StartTipChatParametersValidationError) Error() string { } return fmt.Sprintf( - "invalid %sStartTipChatParameters.%s: %s%s", + "invalid %sGetChatsRequest.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = StartTipChatParametersValidationError{} +var _ error = GetChatsRequestValidationError{} var _ interface { Field() string @@ -1306,34 +644,46 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = StartTipChatParametersValidationError{} +} = GetChatsRequestValidationError{} -// Validate checks the field values on StartChatResponse with the rules defined +// Validate checks the field values on GetChatsResponse with the rules defined // in the proto definition for this message. If any rules are violated, an // error is returned. -func (m *StartChatResponse) Validate() error { +func (m *GetChatsResponse) Validate() error { if m == nil { return nil } // no validation rules for Result - if v, ok := interface{}(m.GetChat()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return StartChatResponseValidationError{ - field: "Chat", - reason: "embedded message failed validation", - cause: err, + if len(m.GetChats()) > 100 { + return GetChatsResponseValidationError{ + field: "Chats", + reason: "value must contain no more than 100 item(s)", + } + } + + for idx, item := range m.GetChats() { + _, _ = idx, item + + if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return GetChatsResponseValidationError{ + field: fmt.Sprintf("Chats[%v]", idx), + reason: "embedded message failed validation", + cause: err, + } } } + } return nil } -// StartChatResponseValidationError is the validation error returned by -// StartChatResponse.Validate if the designated constraints aren't met. -type StartChatResponseValidationError struct { +// GetChatsResponseValidationError is the validation error returned by +// GetChatsResponse.Validate if the designated constraints aren't met. +type GetChatsResponseValidationError struct { field string reason string cause error @@ -1341,24 +691,22 @@ type StartChatResponseValidationError struct { } // Field function returns field value. -func (e StartChatResponseValidationError) Field() string { return e.field } +func (e GetChatsResponseValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e StartChatResponseValidationError) Reason() string { return e.reason } +func (e GetChatsResponseValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e StartChatResponseValidationError) Cause() error { return e.cause } +func (e GetChatsResponseValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e StartChatResponseValidationError) Key() bool { return e.key } +func (e GetChatsResponseValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e StartChatResponseValidationError) ErrorName() string { - return "StartChatResponseValidationError" -} +func (e GetChatsResponseValidationError) ErrorName() string { return "GetChatsResponseValidationError" } // Error satisfies the builtin error interface -func (e StartChatResponseValidationError) Error() string { +func (e GetChatsResponseValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -1370,14 +718,14 @@ func (e StartChatResponseValidationError) Error() string { } return fmt.Sprintf( - "invalid %sStartChatResponse.%s: %s%s", + "invalid %sGetChatsResponse.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = StartChatResponseValidationError{} +var _ error = GetChatsResponseValidationError{} var _ interface { Field() string @@ -1385,18 +733,18 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = StartChatResponseValidationError{} +} = GetChatsResponseValidationError{} -// Validate checks the field values on SendMessageRequest with the rules +// Validate checks the field values on GetMessagesRequest with the rules // defined in the proto definition for this message. If any rules are // violated, an error is returned. -func (m *SendMessageRequest) Validate() error { +func (m *GetMessagesRequest) Validate() error { if m == nil { return nil } if m.GetChatId() == nil { - return SendMessageRequestValidationError{ + return GetMessagesRequestValidationError{ field: "ChatId", reason: "value is required", } @@ -1404,7 +752,7 @@ func (m *SendMessageRequest) Validate() error { if v, ok := interface{}(m.GetChatId()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - return SendMessageRequestValidationError{ + return GetMessagesRequestValidationError{ field: "ChatId", reason: "embedded message failed validation", cause: err, @@ -1412,85 +760,156 @@ func (m *SendMessageRequest) Validate() error { } } - if m.GetMemberId() == nil { - return SendMessageRequestValidationError{ - field: "MemberId", + if m.GetOwner() == nil { + return GetMessagesRequestValidationError{ + field: "Owner", reason: "value is required", } } - if v, ok := interface{}(m.GetMemberId()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetOwner()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - return SendMessageRequestValidationError{ - field: "MemberId", + return GetMessagesRequestValidationError{ + field: "Owner", reason: "embedded message failed validation", cause: err, } } } - if len(m.GetContent()) != 1 { - return SendMessageRequestValidationError{ - field: "Content", - reason: "value must contain exactly 1 item(s)", + if m.GetSignature() == nil { + return GetMessagesRequestValidationError{ + field: "Signature", + reason: "value is required", } } - for idx, item := range m.GetContent() { - _, _ = idx, item - - if v, ok := interface{}(item).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return SendMessageRequestValidationError{ - field: fmt.Sprintf("Content[%v]", idx), - reason: "embedded message failed validation", - cause: err, - } + if v, ok := interface{}(m.GetSignature()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return GetMessagesRequestValidationError{ + field: "Signature", + reason: "embedded message failed validation", + cause: err, } } - } - if m.GetOwner() == nil { - return SendMessageRequestValidationError{ - field: "Owner", - reason: "value is required", + if m.GetPageSize() > 100 { + return GetMessagesRequestValidationError{ + field: "PageSize", + reason: "value must be less than or equal to 100", } } - if v, ok := interface{}(m.GetOwner()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetCursor()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - return SendMessageRequestValidationError{ - field: "Owner", + return GetMessagesRequestValidationError{ + field: "Cursor", reason: "embedded message failed validation", cause: err, } } } - if m.GetSignature() == nil { - return SendMessageRequestValidationError{ - field: "Signature", - reason: "value is required", + // no validation rules for Direction + + return nil +} + +// GetMessagesRequestValidationError is the validation error returned by +// GetMessagesRequest.Validate if the designated constraints aren't met. +type GetMessagesRequestValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e GetMessagesRequestValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e GetMessagesRequestValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e GetMessagesRequestValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e GetMessagesRequestValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e GetMessagesRequestValidationError) ErrorName() string { + return "GetMessagesRequestValidationError" +} + +// Error satisfies the builtin error interface +func (e GetMessagesRequestValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sGetMessagesRequest.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = GetMessagesRequestValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = GetMessagesRequestValidationError{} + +// Validate checks the field values on GetMessagesResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, an error is returned. +func (m *GetMessagesResponse) Validate() error { + if m == nil { + return nil + } + + // no validation rules for Result + + if len(m.GetMessages()) > 100 { + return GetMessagesResponseValidationError{ + field: "Messages", + reason: "value must contain no more than 100 item(s)", } } - if v, ok := interface{}(m.GetSignature()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return SendMessageRequestValidationError{ - field: "Signature", - reason: "embedded message failed validation", - cause: err, + for idx, item := range m.GetMessages() { + _, _ = idx, item + + if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return GetMessagesResponseValidationError{ + field: fmt.Sprintf("Messages[%v]", idx), + reason: "embedded message failed validation", + cause: err, + } } } + } return nil } -// SendMessageRequestValidationError is the validation error returned by -// SendMessageRequest.Validate if the designated constraints aren't met. -type SendMessageRequestValidationError struct { +// GetMessagesResponseValidationError is the validation error returned by +// GetMessagesResponse.Validate if the designated constraints aren't met. +type GetMessagesResponseValidationError struct { field string reason string cause error @@ -1498,24 +917,24 @@ type SendMessageRequestValidationError struct { } // Field function returns field value. -func (e SendMessageRequestValidationError) Field() string { return e.field } +func (e GetMessagesResponseValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e SendMessageRequestValidationError) Reason() string { return e.reason } +func (e GetMessagesResponseValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e SendMessageRequestValidationError) Cause() error { return e.cause } +func (e GetMessagesResponseValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e SendMessageRequestValidationError) Key() bool { return e.key } +func (e GetMessagesResponseValidationError) Key() bool { return e.key } -// ErrorName returns error name. -func (e SendMessageRequestValidationError) ErrorName() string { - return "SendMessageRequestValidationError" +// ErrorName returns error name. +func (e GetMessagesResponseValidationError) ErrorName() string { + return "GetMessagesResponseValidationError" } // Error satisfies the builtin error interface -func (e SendMessageRequestValidationError) Error() string { +func (e GetMessagesResponseValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -1527,14 +946,14 @@ func (e SendMessageRequestValidationError) Error() string { } return fmt.Sprintf( - "invalid %sSendMessageRequest.%s: %s%s", + "invalid %sGetMessagesResponse.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = SendMessageRequestValidationError{} +var _ error = GetMessagesResponseValidationError{} var _ interface { Field() string @@ -1542,34 +961,78 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = SendMessageRequestValidationError{} +} = GetMessagesResponseValidationError{} -// Validate checks the field values on SendMessageResponse with the rules -// defined in the proto definition for this message. If any rules are -// violated, an error is returned. -func (m *SendMessageResponse) Validate() error { +// Validate checks the field values on StartChatRequest with the rules defined +// in the proto definition for this message. If any rules are violated, an +// error is returned. +func (m *StartChatRequest) Validate() error { if m == nil { return nil } - // no validation rules for Result + if m.GetOwner() == nil { + return StartChatRequestValidationError{ + field: "Owner", + reason: "value is required", + } + } - if v, ok := interface{}(m.GetMessage()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetOwner()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - return SendMessageResponseValidationError{ - field: "Message", + return StartChatRequestValidationError{ + field: "Owner", reason: "embedded message failed validation", cause: err, } } } + if m.GetSignature() == nil { + return StartChatRequestValidationError{ + field: "Signature", + reason: "value is required", + } + } + + if v, ok := interface{}(m.GetSignature()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return StartChatRequestValidationError{ + field: "Signature", + reason: "embedded message failed validation", + cause: err, + } + } + } + + switch m.Parameters.(type) { + + case *StartChatRequest_TwoWayChat: + + if v, ok := interface{}(m.GetTwoWayChat()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return StartChatRequestValidationError{ + field: "TwoWayChat", + reason: "embedded message failed validation", + cause: err, + } + } + } + + default: + return StartChatRequestValidationError{ + field: "Parameters", + reason: "value is required", + } + + } + return nil } -// SendMessageResponseValidationError is the validation error returned by -// SendMessageResponse.Validate if the designated constraints aren't met. -type SendMessageResponseValidationError struct { +// StartChatRequestValidationError is the validation error returned by +// StartChatRequest.Validate if the designated constraints aren't met. +type StartChatRequestValidationError struct { field string reason string cause error @@ -1577,24 +1040,22 @@ type SendMessageResponseValidationError struct { } // Field function returns field value. -func (e SendMessageResponseValidationError) Field() string { return e.field } +func (e StartChatRequestValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e SendMessageResponseValidationError) Reason() string { return e.reason } +func (e StartChatRequestValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e SendMessageResponseValidationError) Cause() error { return e.cause } +func (e StartChatRequestValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e SendMessageResponseValidationError) Key() bool { return e.key } +func (e StartChatRequestValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e SendMessageResponseValidationError) ErrorName() string { - return "SendMessageResponseValidationError" -} +func (e StartChatRequestValidationError) ErrorName() string { return "StartChatRequestValidationError" } // Error satisfies the builtin error interface -func (e SendMessageResponseValidationError) Error() string { +func (e StartChatRequestValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -1606,14 +1067,14 @@ func (e SendMessageResponseValidationError) Error() string { } return fmt.Sprintf( - "invalid %sSendMessageResponse.%s: %s%s", + "invalid %sStartChatRequest.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = SendMessageResponseValidationError{} +var _ error = StartChatRequestValidationError{} var _ interface { Field() string @@ -1621,78 +1082,37 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = SendMessageResponseValidationError{} +} = StartChatRequestValidationError{} -// Validate checks the field values on AdvancePointerRequest with the rules +// Validate checks the field values on StartTwoWayChatParameters with the rules // defined in the proto definition for this message. If any rules are // violated, an error is returned. -func (m *AdvancePointerRequest) Validate() error { +func (m *StartTwoWayChatParameters) Validate() error { if m == nil { return nil } - if m.GetChatId() == nil { - return AdvancePointerRequestValidationError{ - field: "ChatId", - reason: "value is required", - } - } - - if v, ok := interface{}(m.GetChatId()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return AdvancePointerRequestValidationError{ - field: "ChatId", - reason: "embedded message failed validation", - cause: err, - } - } - } - - if m.GetPointer() == nil { - return AdvancePointerRequestValidationError{ - field: "Pointer", - reason: "value is required", - } - } - - if v, ok := interface{}(m.GetPointer()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return AdvancePointerRequestValidationError{ - field: "Pointer", - reason: "embedded message failed validation", - cause: err, - } - } - } - - if m.GetOwner() == nil { - return AdvancePointerRequestValidationError{ - field: "Owner", + if m.GetOtherUser() == nil { + return StartTwoWayChatParametersValidationError{ + field: "OtherUser", reason: "value is required", } } - if v, ok := interface{}(m.GetOwner()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetOtherUser()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - return AdvancePointerRequestValidationError{ - field: "Owner", + return StartTwoWayChatParametersValidationError{ + field: "OtherUser", reason: "embedded message failed validation", cause: err, } } } - if m.GetSignature() == nil { - return AdvancePointerRequestValidationError{ - field: "Signature", - reason: "value is required", - } - } - - if v, ok := interface{}(m.GetSignature()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetIntentId()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - return AdvancePointerRequestValidationError{ - field: "Signature", + return StartTwoWayChatParametersValidationError{ + field: "IntentId", reason: "embedded message failed validation", cause: err, } @@ -1702,9 +1122,9 @@ func (m *AdvancePointerRequest) Validate() error { return nil } -// AdvancePointerRequestValidationError is the validation error returned by -// AdvancePointerRequest.Validate if the designated constraints aren't met. -type AdvancePointerRequestValidationError struct { +// StartTwoWayChatParametersValidationError is the validation error returned by +// StartTwoWayChatParameters.Validate if the designated constraints aren't met. +type StartTwoWayChatParametersValidationError struct { field string reason string cause error @@ -1712,24 +1132,24 @@ type AdvancePointerRequestValidationError struct { } // Field function returns field value. -func (e AdvancePointerRequestValidationError) Field() string { return e.field } +func (e StartTwoWayChatParametersValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e AdvancePointerRequestValidationError) Reason() string { return e.reason } +func (e StartTwoWayChatParametersValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e AdvancePointerRequestValidationError) Cause() error { return e.cause } +func (e StartTwoWayChatParametersValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e AdvancePointerRequestValidationError) Key() bool { return e.key } +func (e StartTwoWayChatParametersValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e AdvancePointerRequestValidationError) ErrorName() string { - return "AdvancePointerRequestValidationError" +func (e StartTwoWayChatParametersValidationError) ErrorName() string { + return "StartTwoWayChatParametersValidationError" } // Error satisfies the builtin error interface -func (e AdvancePointerRequestValidationError) Error() string { +func (e StartTwoWayChatParametersValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -1741,14 +1161,14 @@ func (e AdvancePointerRequestValidationError) Error() string { } return fmt.Sprintf( - "invalid %sAdvancePointerRequest.%s: %s%s", + "invalid %sStartTwoWayChatParameters.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = AdvancePointerRequestValidationError{} +var _ error = StartTwoWayChatParametersValidationError{} var _ interface { Field() string @@ -1756,24 +1176,34 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = AdvancePointerRequestValidationError{} +} = StartTwoWayChatParametersValidationError{} -// Validate checks the field values on AdvancePointerResponse with the rules -// defined in the proto definition for this message. If any rules are -// violated, an error is returned. -func (m *AdvancePointerResponse) Validate() error { +// Validate checks the field values on StartChatResponse with the rules defined +// in the proto definition for this message. If any rules are violated, an +// error is returned. +func (m *StartChatResponse) Validate() error { if m == nil { return nil } // no validation rules for Result + if v, ok := interface{}(m.GetChat()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return StartChatResponseValidationError{ + field: "Chat", + reason: "embedded message failed validation", + cause: err, + } + } + } + return nil } -// AdvancePointerResponseValidationError is the validation error returned by -// AdvancePointerResponse.Validate if the designated constraints aren't met. -type AdvancePointerResponseValidationError struct { +// StartChatResponseValidationError is the validation error returned by +// StartChatResponse.Validate if the designated constraints aren't met. +type StartChatResponseValidationError struct { field string reason string cause error @@ -1781,24 +1211,24 @@ type AdvancePointerResponseValidationError struct { } // Field function returns field value. -func (e AdvancePointerResponseValidationError) Field() string { return e.field } +func (e StartChatResponseValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e AdvancePointerResponseValidationError) Reason() string { return e.reason } +func (e StartChatResponseValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e AdvancePointerResponseValidationError) Cause() error { return e.cause } +func (e StartChatResponseValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e AdvancePointerResponseValidationError) Key() bool { return e.key } +func (e StartChatResponseValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e AdvancePointerResponseValidationError) ErrorName() string { - return "AdvancePointerResponseValidationError" +func (e StartChatResponseValidationError) ErrorName() string { + return "StartChatResponseValidationError" } // Error satisfies the builtin error interface -func (e AdvancePointerResponseValidationError) Error() string { +func (e StartChatResponseValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -1810,14 +1240,14 @@ func (e AdvancePointerResponseValidationError) Error() string { } return fmt.Sprintf( - "invalid %sAdvancePointerResponse.%s: %s%s", + "invalid %sStartChatResponse.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = AdvancePointerResponseValidationError{} +var _ error = StartChatResponseValidationError{} var _ interface { Field() string @@ -1825,18 +1255,18 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = AdvancePointerResponseValidationError{} +} = StartChatResponseValidationError{} -// Validate checks the field values on RevealIdentityRequest with the rules +// Validate checks the field values on SendMessageRequest with the rules // defined in the proto definition for this message. If any rules are // violated, an error is returned. -func (m *RevealIdentityRequest) Validate() error { +func (m *SendMessageRequest) Validate() error { if m == nil { return nil } if m.GetChatId() == nil { - return RevealIdentityRequestValidationError{ + return SendMessageRequestValidationError{ field: "ChatId", reason: "value is required", } @@ -1844,7 +1274,7 @@ func (m *RevealIdentityRequest) Validate() error { if v, ok := interface{}(m.GetChatId()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - return RevealIdentityRequestValidationError{ + return SendMessageRequestValidationError{ field: "ChatId", reason: "embedded message failed validation", cause: err, @@ -1852,42 +1282,30 @@ func (m *RevealIdentityRequest) Validate() error { } } - if m.GetMemberId() == nil { - return RevealIdentityRequestValidationError{ - field: "MemberId", - reason: "value is required", - } - } - - if v, ok := interface{}(m.GetMemberId()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return RevealIdentityRequestValidationError{ - field: "MemberId", - reason: "embedded message failed validation", - cause: err, - } + if len(m.GetContent()) != 1 { + return SendMessageRequestValidationError{ + field: "Content", + reason: "value must contain exactly 1 item(s)", } } - if m.GetIdentity() == nil { - return RevealIdentityRequestValidationError{ - field: "Identity", - reason: "value is required", - } - } + for idx, item := range m.GetContent() { + _, _ = idx, item - if v, ok := interface{}(m.GetIdentity()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return RevealIdentityRequestValidationError{ - field: "Identity", - reason: "embedded message failed validation", - cause: err, + if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return SendMessageRequestValidationError{ + field: fmt.Sprintf("Content[%v]", idx), + reason: "embedded message failed validation", + cause: err, + } } } + } if m.GetOwner() == nil { - return RevealIdentityRequestValidationError{ + return SendMessageRequestValidationError{ field: "Owner", reason: "value is required", } @@ -1895,7 +1313,7 @@ func (m *RevealIdentityRequest) Validate() error { if v, ok := interface{}(m.GetOwner()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - return RevealIdentityRequestValidationError{ + return SendMessageRequestValidationError{ field: "Owner", reason: "embedded message failed validation", cause: err, @@ -1904,7 +1322,7 @@ func (m *RevealIdentityRequest) Validate() error { } if m.GetSignature() == nil { - return RevealIdentityRequestValidationError{ + return SendMessageRequestValidationError{ field: "Signature", reason: "value is required", } @@ -1912,7 +1330,7 @@ func (m *RevealIdentityRequest) Validate() error { if v, ok := interface{}(m.GetSignature()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - return RevealIdentityRequestValidationError{ + return SendMessageRequestValidationError{ field: "Signature", reason: "embedded message failed validation", cause: err, @@ -1923,9 +1341,9 @@ func (m *RevealIdentityRequest) Validate() error { return nil } -// RevealIdentityRequestValidationError is the validation error returned by -// RevealIdentityRequest.Validate if the designated constraints aren't met. -type RevealIdentityRequestValidationError struct { +// SendMessageRequestValidationError is the validation error returned by +// SendMessageRequest.Validate if the designated constraints aren't met. +type SendMessageRequestValidationError struct { field string reason string cause error @@ -1933,24 +1351,24 @@ type RevealIdentityRequestValidationError struct { } // Field function returns field value. -func (e RevealIdentityRequestValidationError) Field() string { return e.field } +func (e SendMessageRequestValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e RevealIdentityRequestValidationError) Reason() string { return e.reason } +func (e SendMessageRequestValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e RevealIdentityRequestValidationError) Cause() error { return e.cause } +func (e SendMessageRequestValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e RevealIdentityRequestValidationError) Key() bool { return e.key } +func (e SendMessageRequestValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e RevealIdentityRequestValidationError) ErrorName() string { - return "RevealIdentityRequestValidationError" +func (e SendMessageRequestValidationError) ErrorName() string { + return "SendMessageRequestValidationError" } // Error satisfies the builtin error interface -func (e RevealIdentityRequestValidationError) Error() string { +func (e SendMessageRequestValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -1962,14 +1380,14 @@ func (e RevealIdentityRequestValidationError) Error() string { } return fmt.Sprintf( - "invalid %sRevealIdentityRequest.%s: %s%s", + "invalid %sSendMessageRequest.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = RevealIdentityRequestValidationError{} +var _ error = SendMessageRequestValidationError{} var _ interface { Field() string @@ -1977,12 +1395,12 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = RevealIdentityRequestValidationError{} +} = SendMessageRequestValidationError{} -// Validate checks the field values on RevealIdentityResponse with the rules +// Validate checks the field values on SendMessageResponse with the rules // defined in the proto definition for this message. If any rules are // violated, an error is returned. -func (m *RevealIdentityResponse) Validate() error { +func (m *SendMessageResponse) Validate() error { if m == nil { return nil } @@ -1991,7 +1409,7 @@ func (m *RevealIdentityResponse) Validate() error { if v, ok := interface{}(m.GetMessage()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - return RevealIdentityResponseValidationError{ + return SendMessageResponseValidationError{ field: "Message", reason: "embedded message failed validation", cause: err, @@ -2002,9 +1420,9 @@ func (m *RevealIdentityResponse) Validate() error { return nil } -// RevealIdentityResponseValidationError is the validation error returned by -// RevealIdentityResponse.Validate if the designated constraints aren't met. -type RevealIdentityResponseValidationError struct { +// SendMessageResponseValidationError is the validation error returned by +// SendMessageResponse.Validate if the designated constraints aren't met. +type SendMessageResponseValidationError struct { field string reason string cause error @@ -2012,24 +1430,24 @@ type RevealIdentityResponseValidationError struct { } // Field function returns field value. -func (e RevealIdentityResponseValidationError) Field() string { return e.field } +func (e SendMessageResponseValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e RevealIdentityResponseValidationError) Reason() string { return e.reason } +func (e SendMessageResponseValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e RevealIdentityResponseValidationError) Cause() error { return e.cause } +func (e SendMessageResponseValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e RevealIdentityResponseValidationError) Key() bool { return e.key } +func (e SendMessageResponseValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e RevealIdentityResponseValidationError) ErrorName() string { - return "RevealIdentityResponseValidationError" +func (e SendMessageResponseValidationError) ErrorName() string { + return "SendMessageResponseValidationError" } // Error satisfies the builtin error interface -func (e RevealIdentityResponseValidationError) Error() string { +func (e SendMessageResponseValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -2041,14 +1459,14 @@ func (e RevealIdentityResponseValidationError) Error() string { } return fmt.Sprintf( - "invalid %sRevealIdentityResponse.%s: %s%s", + "invalid %sSendMessageResponse.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = RevealIdentityResponseValidationError{} +var _ error = SendMessageResponseValidationError{} var _ interface { Field() string @@ -2056,18 +1474,18 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = RevealIdentityResponseValidationError{} +} = SendMessageResponseValidationError{} -// Validate checks the field values on SetMuteStateRequest with the rules +// Validate checks the field values on AdvancePointerRequest with the rules // defined in the proto definition for this message. If any rules are // violated, an error is returned. -func (m *SetMuteStateRequest) Validate() error { +func (m *AdvancePointerRequest) Validate() error { if m == nil { return nil } if m.GetChatId() == nil { - return SetMuteStateRequestValidationError{ + return AdvancePointerRequestValidationError{ field: "ChatId", reason: "value is required", } @@ -2075,7 +1493,7 @@ func (m *SetMuteStateRequest) Validate() error { if v, ok := interface{}(m.GetChatId()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - return SetMuteStateRequestValidationError{ + return AdvancePointerRequestValidationError{ field: "ChatId", reason: "embedded message failed validation", cause: err, @@ -2083,27 +1501,25 @@ func (m *SetMuteStateRequest) Validate() error { } } - if m.GetMemberId() == nil { - return SetMuteStateRequestValidationError{ - field: "MemberId", + if m.GetPointer() == nil { + return AdvancePointerRequestValidationError{ + field: "Pointer", reason: "value is required", } } - if v, ok := interface{}(m.GetMemberId()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetPointer()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - return SetMuteStateRequestValidationError{ - field: "MemberId", + return AdvancePointerRequestValidationError{ + field: "Pointer", reason: "embedded message failed validation", cause: err, } } } - // no validation rules for IsMuted - if m.GetOwner() == nil { - return SetMuteStateRequestValidationError{ + return AdvancePointerRequestValidationError{ field: "Owner", reason: "value is required", } @@ -2111,7 +1527,7 @@ func (m *SetMuteStateRequest) Validate() error { if v, ok := interface{}(m.GetOwner()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - return SetMuteStateRequestValidationError{ + return AdvancePointerRequestValidationError{ field: "Owner", reason: "embedded message failed validation", cause: err, @@ -2120,7 +1536,7 @@ func (m *SetMuteStateRequest) Validate() error { } if m.GetSignature() == nil { - return SetMuteStateRequestValidationError{ + return AdvancePointerRequestValidationError{ field: "Signature", reason: "value is required", } @@ -2128,7 +1544,7 @@ func (m *SetMuteStateRequest) Validate() error { if v, ok := interface{}(m.GetSignature()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - return SetMuteStateRequestValidationError{ + return AdvancePointerRequestValidationError{ field: "Signature", reason: "embedded message failed validation", cause: err, @@ -2139,9 +1555,9 @@ func (m *SetMuteStateRequest) Validate() error { return nil } -// SetMuteStateRequestValidationError is the validation error returned by -// SetMuteStateRequest.Validate if the designated constraints aren't met. -type SetMuteStateRequestValidationError struct { +// AdvancePointerRequestValidationError is the validation error returned by +// AdvancePointerRequest.Validate if the designated constraints aren't met. +type AdvancePointerRequestValidationError struct { field string reason string cause error @@ -2149,24 +1565,24 @@ type SetMuteStateRequestValidationError struct { } // Field function returns field value. -func (e SetMuteStateRequestValidationError) Field() string { return e.field } +func (e AdvancePointerRequestValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e SetMuteStateRequestValidationError) Reason() string { return e.reason } +func (e AdvancePointerRequestValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e SetMuteStateRequestValidationError) Cause() error { return e.cause } +func (e AdvancePointerRequestValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e SetMuteStateRequestValidationError) Key() bool { return e.key } +func (e AdvancePointerRequestValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e SetMuteStateRequestValidationError) ErrorName() string { - return "SetMuteStateRequestValidationError" +func (e AdvancePointerRequestValidationError) ErrorName() string { + return "AdvancePointerRequestValidationError" } // Error satisfies the builtin error interface -func (e SetMuteStateRequestValidationError) Error() string { +func (e AdvancePointerRequestValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -2178,14 +1594,14 @@ func (e SetMuteStateRequestValidationError) Error() string { } return fmt.Sprintf( - "invalid %sSetMuteStateRequest.%s: %s%s", + "invalid %sAdvancePointerRequest.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = SetMuteStateRequestValidationError{} +var _ error = AdvancePointerRequestValidationError{} var _ interface { Field() string @@ -2193,12 +1609,12 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = SetMuteStateRequestValidationError{} +} = AdvancePointerRequestValidationError{} -// Validate checks the field values on SetMuteStateResponse with the rules +// Validate checks the field values on AdvancePointerResponse with the rules // defined in the proto definition for this message. If any rules are // violated, an error is returned. -func (m *SetMuteStateResponse) Validate() error { +func (m *AdvancePointerResponse) Validate() error { if m == nil { return nil } @@ -2208,9 +1624,9 @@ func (m *SetMuteStateResponse) Validate() error { return nil } -// SetMuteStateResponseValidationError is the validation error returned by -// SetMuteStateResponse.Validate if the designated constraints aren't met. -type SetMuteStateResponseValidationError struct { +// AdvancePointerResponseValidationError is the validation error returned by +// AdvancePointerResponse.Validate if the designated constraints aren't met. +type AdvancePointerResponseValidationError struct { field string reason string cause error @@ -2218,24 +1634,24 @@ type SetMuteStateResponseValidationError struct { } // Field function returns field value. -func (e SetMuteStateResponseValidationError) Field() string { return e.field } +func (e AdvancePointerResponseValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e SetMuteStateResponseValidationError) Reason() string { return e.reason } +func (e AdvancePointerResponseValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e SetMuteStateResponseValidationError) Cause() error { return e.cause } +func (e AdvancePointerResponseValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e SetMuteStateResponseValidationError) Key() bool { return e.key } +func (e AdvancePointerResponseValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e SetMuteStateResponseValidationError) ErrorName() string { - return "SetMuteStateResponseValidationError" +func (e AdvancePointerResponseValidationError) ErrorName() string { + return "AdvancePointerResponseValidationError" } // Error satisfies the builtin error interface -func (e SetMuteStateResponseValidationError) Error() string { +func (e AdvancePointerResponseValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -2247,14 +1663,14 @@ func (e SetMuteStateResponseValidationError) Error() string { } return fmt.Sprintf( - "invalid %sSetMuteStateResponse.%s: %s%s", + "invalid %sAdvancePointerResponse.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = SetMuteStateResponseValidationError{} +var _ error = AdvancePointerResponseValidationError{} var _ interface { Field() string @@ -2262,18 +1678,18 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = SetMuteStateResponseValidationError{} +} = AdvancePointerResponseValidationError{} -// Validate checks the field values on SetSubscriptionStateRequest with the -// rules defined in the proto definition for this message. If any rules are +// Validate checks the field values on SetMuteStateRequest with the rules +// defined in the proto definition for this message. If any rules are // violated, an error is returned. -func (m *SetSubscriptionStateRequest) Validate() error { +func (m *SetMuteStateRequest) Validate() error { if m == nil { return nil } if m.GetChatId() == nil { - return SetSubscriptionStateRequestValidationError{ + return SetMuteStateRequestValidationError{ field: "ChatId", reason: "value is required", } @@ -2281,7 +1697,7 @@ func (m *SetSubscriptionStateRequest) Validate() error { if v, ok := interface{}(m.GetChatId()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - return SetSubscriptionStateRequestValidationError{ + return SetMuteStateRequestValidationError{ field: "ChatId", reason: "embedded message failed validation", cause: err, @@ -2289,27 +1705,10 @@ func (m *SetSubscriptionStateRequest) Validate() error { } } - if m.GetMemberId() == nil { - return SetSubscriptionStateRequestValidationError{ - field: "MemberId", - reason: "value is required", - } - } - - if v, ok := interface{}(m.GetMemberId()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return SetSubscriptionStateRequestValidationError{ - field: "MemberId", - reason: "embedded message failed validation", - cause: err, - } - } - } - - // no validation rules for IsSubscribed + // no validation rules for IsMuted if m.GetOwner() == nil { - return SetSubscriptionStateRequestValidationError{ + return SetMuteStateRequestValidationError{ field: "Owner", reason: "value is required", } @@ -2317,7 +1716,7 @@ func (m *SetSubscriptionStateRequest) Validate() error { if v, ok := interface{}(m.GetOwner()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - return SetSubscriptionStateRequestValidationError{ + return SetMuteStateRequestValidationError{ field: "Owner", reason: "embedded message failed validation", cause: err, @@ -2326,7 +1725,7 @@ func (m *SetSubscriptionStateRequest) Validate() error { } if m.GetSignature() == nil { - return SetSubscriptionStateRequestValidationError{ + return SetMuteStateRequestValidationError{ field: "Signature", reason: "value is required", } @@ -2334,7 +1733,7 @@ func (m *SetSubscriptionStateRequest) Validate() error { if v, ok := interface{}(m.GetSignature()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - return SetSubscriptionStateRequestValidationError{ + return SetMuteStateRequestValidationError{ field: "Signature", reason: "embedded message failed validation", cause: err, @@ -2345,10 +1744,9 @@ func (m *SetSubscriptionStateRequest) Validate() error { return nil } -// SetSubscriptionStateRequestValidationError is the validation error returned -// by SetSubscriptionStateRequest.Validate if the designated constraints -// aren't met. -type SetSubscriptionStateRequestValidationError struct { +// SetMuteStateRequestValidationError is the validation error returned by +// SetMuteStateRequest.Validate if the designated constraints aren't met. +type SetMuteStateRequestValidationError struct { field string reason string cause error @@ -2356,24 +1754,24 @@ type SetSubscriptionStateRequestValidationError struct { } // Field function returns field value. -func (e SetSubscriptionStateRequestValidationError) Field() string { return e.field } +func (e SetMuteStateRequestValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e SetSubscriptionStateRequestValidationError) Reason() string { return e.reason } +func (e SetMuteStateRequestValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e SetSubscriptionStateRequestValidationError) Cause() error { return e.cause } +func (e SetMuteStateRequestValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e SetSubscriptionStateRequestValidationError) Key() bool { return e.key } +func (e SetMuteStateRequestValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e SetSubscriptionStateRequestValidationError) ErrorName() string { - return "SetSubscriptionStateRequestValidationError" +func (e SetMuteStateRequestValidationError) ErrorName() string { + return "SetMuteStateRequestValidationError" } // Error satisfies the builtin error interface -func (e SetSubscriptionStateRequestValidationError) Error() string { +func (e SetMuteStateRequestValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -2385,14 +1783,14 @@ func (e SetSubscriptionStateRequestValidationError) Error() string { } return fmt.Sprintf( - "invalid %sSetSubscriptionStateRequest.%s: %s%s", + "invalid %sSetMuteStateRequest.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = SetSubscriptionStateRequestValidationError{} +var _ error = SetMuteStateRequestValidationError{} var _ interface { Field() string @@ -2400,12 +1798,12 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = SetSubscriptionStateRequestValidationError{} +} = SetMuteStateRequestValidationError{} -// Validate checks the field values on SetSubscriptionStateResponse with the -// rules defined in the proto definition for this message. If any rules are +// Validate checks the field values on SetMuteStateResponse with the rules +// defined in the proto definition for this message. If any rules are // violated, an error is returned. -func (m *SetSubscriptionStateResponse) Validate() error { +func (m *SetMuteStateResponse) Validate() error { if m == nil { return nil } @@ -2415,10 +1813,9 @@ func (m *SetSubscriptionStateResponse) Validate() error { return nil } -// SetSubscriptionStateResponseValidationError is the validation error returned -// by SetSubscriptionStateResponse.Validate if the designated constraints -// aren't met. -type SetSubscriptionStateResponseValidationError struct { +// SetMuteStateResponseValidationError is the validation error returned by +// SetMuteStateResponse.Validate if the designated constraints aren't met. +type SetMuteStateResponseValidationError struct { field string reason string cause error @@ -2426,24 +1823,24 @@ type SetSubscriptionStateResponseValidationError struct { } // Field function returns field value. -func (e SetSubscriptionStateResponseValidationError) Field() string { return e.field } +func (e SetMuteStateResponseValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e SetSubscriptionStateResponseValidationError) Reason() string { return e.reason } +func (e SetMuteStateResponseValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e SetSubscriptionStateResponseValidationError) Cause() error { return e.cause } +func (e SetMuteStateResponseValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e SetSubscriptionStateResponseValidationError) Key() bool { return e.key } +func (e SetMuteStateResponseValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e SetSubscriptionStateResponseValidationError) ErrorName() string { - return "SetSubscriptionStateResponseValidationError" +func (e SetMuteStateResponseValidationError) ErrorName() string { + return "SetMuteStateResponseValidationError" } // Error satisfies the builtin error interface -func (e SetSubscriptionStateResponseValidationError) Error() string { +func (e SetMuteStateResponseValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -2455,14 +1852,14 @@ func (e SetSubscriptionStateResponseValidationError) Error() string { } return fmt.Sprintf( - "invalid %sSetSubscriptionStateResponse.%s: %s%s", + "invalid %sSetMuteStateResponse.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = SetSubscriptionStateResponseValidationError{} +var _ error = SetMuteStateResponseValidationError{} var _ interface { Field() string @@ -2470,7 +1867,7 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = SetSubscriptionStateResponseValidationError{} +} = SetMuteStateResponseValidationError{} // Validate checks the field values on NotifyIsTypingRequest with the rules // defined in the proto definition for this message. If any rules are @@ -2497,23 +1894,6 @@ func (m *NotifyIsTypingRequest) Validate() error { } } - if m.GetMemberId() == nil { - return NotifyIsTypingRequestValidationError{ - field: "MemberId", - reason: "value is required", - } - } - - if v, ok := interface{}(m.GetMemberId()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return NotifyIsTypingRequestValidationError{ - field: "MemberId", - reason: "embedded message failed validation", - cause: err, - } - } - } - // no validation rules for IsTyping if m.GetOwner() == nil { @@ -2678,16 +2058,15 @@ var _ interface { ErrorName() string } = NotifyIsTypingResponseValidationError{} -// Validate checks the field values on ChatMessageId with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. -func (m *ChatMessageId) Validate() error { +// Validate checks the field values on MessageId with the rules defined in the +// proto definition for this message. If any rules are violated, an error is returned. +func (m *MessageId) Validate() error { if m == nil { return nil } if len(m.GetValue()) != 16 { - return ChatMessageIdValidationError{ + return MessageIdValidationError{ field: "Value", reason: "value length must be 16 bytes", } @@ -2696,9 +2075,9 @@ func (m *ChatMessageId) Validate() error { return nil } -// ChatMessageIdValidationError is the validation error returned by -// ChatMessageId.Validate if the designated constraints aren't met. -type ChatMessageIdValidationError struct { +// MessageIdValidationError is the validation error returned by +// MessageId.Validate if the designated constraints aren't met. +type MessageIdValidationError struct { field string reason string cause error @@ -2706,22 +2085,22 @@ type ChatMessageIdValidationError struct { } // Field function returns field value. -func (e ChatMessageIdValidationError) Field() string { return e.field } +func (e MessageIdValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e ChatMessageIdValidationError) Reason() string { return e.reason } +func (e MessageIdValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e ChatMessageIdValidationError) Cause() error { return e.cause } +func (e MessageIdValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e ChatMessageIdValidationError) Key() bool { return e.key } +func (e MessageIdValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e ChatMessageIdValidationError) ErrorName() string { return "ChatMessageIdValidationError" } +func (e MessageIdValidationError) ErrorName() string { return "MessageIdValidationError" } // Error satisfies the builtin error interface -func (e ChatMessageIdValidationError) Error() string { +func (e MessageIdValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -2733,14 +2112,14 @@ func (e ChatMessageIdValidationError) Error() string { } return fmt.Sprintf( - "invalid %sChatMessageId.%s: %s%s", + "invalid %sMessageId.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = ChatMessageIdValidationError{} +var _ error = MessageIdValidationError{} var _ interface { Field() string @@ -2748,29 +2127,28 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = ChatMessageIdValidationError{} +} = MessageIdValidationError{} -// Validate checks the field values on ChatMemberId with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. -func (m *ChatMemberId) Validate() error { +// Validate checks the field values on MemberId with the rules defined in the +// proto definition for this message. If any rules are violated, an error is returned. +func (m *MemberId) Validate() error { if m == nil { return nil } - if len(m.GetValue()) != 16 { - return ChatMemberIdValidationError{ + if len(m.GetValue()) != 32 { + return MemberIdValidationError{ field: "Value", - reason: "value length must be 16 bytes", + reason: "value length must be 32 bytes", } } return nil } -// ChatMemberIdValidationError is the validation error returned by -// ChatMemberId.Validate if the designated constraints aren't met. -type ChatMemberIdValidationError struct { +// MemberIdValidationError is the validation error returned by +// MemberId.Validate if the designated constraints aren't met. +type MemberIdValidationError struct { field string reason string cause error @@ -2778,22 +2156,22 @@ type ChatMemberIdValidationError struct { } // Field function returns field value. -func (e ChatMemberIdValidationError) Field() string { return e.field } +func (e MemberIdValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e ChatMemberIdValidationError) Reason() string { return e.reason } +func (e MemberIdValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e ChatMemberIdValidationError) Cause() error { return e.cause } +func (e MemberIdValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e ChatMemberIdValidationError) Key() bool { return e.key } +func (e MemberIdValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e ChatMemberIdValidationError) ErrorName() string { return "ChatMemberIdValidationError" } +func (e MemberIdValidationError) ErrorName() string { return "MemberIdValidationError" } // Error satisfies the builtin error interface -func (e ChatMemberIdValidationError) Error() string { +func (e MemberIdValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -2805,14 +2183,14 @@ func (e ChatMemberIdValidationError) Error() string { } return fmt.Sprintf( - "invalid %sChatMemberId.%s: %s%s", + "invalid %sMemberId.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = ChatMemberIdValidationError{} +var _ error = MemberIdValidationError{} var _ interface { Field() string @@ -2820,18 +2198,17 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = ChatMemberIdValidationError{} +} = MemberIdValidationError{} -// Validate checks the field values on ChatMetadata with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. -func (m *ChatMetadata) Validate() error { +// Validate checks the field values on Metadata with the rules defined in the +// proto definition for this message. If any rules are violated, an error is returned. +func (m *Metadata) Validate() error { if m == nil { return nil } if m.GetChatId() == nil { - return ChatMetadataValidationError{ + return MetadataValidationError{ field: "ChatId", reason: "value is required", } @@ -2839,7 +2216,7 @@ func (m *ChatMetadata) Validate() error { if v, ok := interface{}(m.GetChatId()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - return ChatMetadataValidationError{ + return MetadataValidationError{ field: "ChatId", reason: "embedded message failed validation", cause: err, @@ -2847,22 +2224,32 @@ func (m *ChatMetadata) Validate() error { } } - if _, ok := _ChatMetadata_Type_NotInLookup[m.GetType()]; ok { - return ChatMetadataValidationError{ + if _, ok := _Metadata_Type_NotInLookup[m.GetType()]; ok { + return MetadataValidationError{ field: "Type", reason: "value must not be in list [0]", } } - if l := utf8.RuneCountInString(m.GetTitle()); l < 1 || l > 1024 { - return ChatMetadataValidationError{ + if v, ok := interface{}(m.GetCursor()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return MetadataValidationError{ + field: "Cursor", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if l := utf8.RuneCountInString(m.GetTitle()); l < 0 || l > 1024 { + return MetadataValidationError{ field: "Title", - reason: "value length must be between 1 and 1024 runes, inclusive", + reason: "value length must be between 0 and 1024 runes, inclusive", } } if l := len(m.GetMembers()); l < 1 || l > 2 { - return ChatMetadataValidationError{ + return MetadataValidationError{ field: "Members", reason: "value must contain between 1 and 2 items, inclusive", } @@ -2873,7 +2260,7 @@ func (m *ChatMetadata) Validate() error { if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - return ChatMetadataValidationError{ + return MetadataValidationError{ field: fmt.Sprintf("Members[%v]", idx), reason: "embedded message failed validation", cause: err, @@ -2883,26 +2270,18 @@ func (m *ChatMetadata) Validate() error { } - // no validation rules for CanMute + // no validation rules for IsMuted - // no validation rules for CanUnsubscribe + // no validation rules for Muteable - if v, ok := interface{}(m.GetCursor()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return ChatMetadataValidationError{ - field: "Cursor", - reason: "embedded message failed validation", - cause: err, - } - } - } + // no validation rules for NumUnread return nil } -// ChatMetadataValidationError is the validation error returned by -// ChatMetadata.Validate if the designated constraints aren't met. -type ChatMetadataValidationError struct { +// MetadataValidationError is the validation error returned by +// Metadata.Validate if the designated constraints aren't met. +type MetadataValidationError struct { field string reason string cause error @@ -2910,22 +2289,22 @@ type ChatMetadataValidationError struct { } // Field function returns field value. -func (e ChatMetadataValidationError) Field() string { return e.field } +func (e MetadataValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e ChatMetadataValidationError) Reason() string { return e.reason } +func (e MetadataValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e ChatMetadataValidationError) Cause() error { return e.cause } +func (e MetadataValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e ChatMetadataValidationError) Key() bool { return e.key } +func (e MetadataValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e ChatMetadataValidationError) ErrorName() string { return "ChatMetadataValidationError" } +func (e MetadataValidationError) ErrorName() string { return "MetadataValidationError" } // Error satisfies the builtin error interface -func (e ChatMetadataValidationError) Error() string { +func (e MetadataValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -2937,14 +2316,14 @@ func (e ChatMetadataValidationError) Error() string { } return fmt.Sprintf( - "invalid %sChatMetadata.%s: %s%s", + "invalid %sMetadata.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = ChatMetadataValidationError{} +var _ error = MetadataValidationError{} var _ interface { Field() string @@ -2952,22 +2331,21 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = ChatMetadataValidationError{} +} = MetadataValidationError{} -var _ChatMetadata_Type_NotInLookup = map[ChatType]struct{}{ +var _Metadata_Type_NotInLookup = map[ChatType]struct{}{ 0: {}, } -// Validate checks the field values on ChatMessage with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. -func (m *ChatMessage) Validate() error { +// Validate checks the field values on Message with the rules defined in the +// proto definition for this message. If any rules are violated, an error is returned. +func (m *Message) Validate() error { if m == nil { return nil } if m.GetMessageId() == nil { - return ChatMessageValidationError{ + return MessageValidationError{ field: "MessageId", reason: "value is required", } @@ -2975,7 +2353,7 @@ func (m *ChatMessage) Validate() error { if v, ok := interface{}(m.GetMessageId()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - return ChatMessageValidationError{ + return MessageValidationError{ field: "MessageId", reason: "embedded message failed validation", cause: err, @@ -2985,7 +2363,7 @@ func (m *ChatMessage) Validate() error { if v, ok := interface{}(m.GetSenderId()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - return ChatMessageValidationError{ + return MessageValidationError{ field: "SenderId", reason: "embedded message failed validation", cause: err, @@ -2994,7 +2372,7 @@ func (m *ChatMessage) Validate() error { } if l := len(m.GetContent()); l < 1 || l > 2 { - return ChatMessageValidationError{ + return MessageValidationError{ field: "Content", reason: "value must contain between 1 and 2 items, inclusive", } @@ -3005,7 +2383,7 @@ func (m *ChatMessage) Validate() error { if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - return ChatMessageValidationError{ + return MessageValidationError{ field: fmt.Sprintf("Content[%v]", idx), reason: "embedded message failed validation", cause: err, @@ -3016,7 +2394,7 @@ func (m *ChatMessage) Validate() error { } if m.GetTs() == nil { - return ChatMessageValidationError{ + return MessageValidationError{ field: "Ts", reason: "value is required", } @@ -3024,7 +2402,7 @@ func (m *ChatMessage) Validate() error { if v, ok := interface{}(m.GetCursor()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - return ChatMessageValidationError{ + return MessageValidationError{ field: "Cursor", reason: "embedded message failed validation", cause: err, @@ -3035,9 +2413,9 @@ func (m *ChatMessage) Validate() error { return nil } -// ChatMessageValidationError is the validation error returned by -// ChatMessage.Validate if the designated constraints aren't met. -type ChatMessageValidationError struct { +// MessageValidationError is the validation error returned by Message.Validate +// if the designated constraints aren't met. +type MessageValidationError struct { field string reason string cause error @@ -3045,22 +2423,22 @@ type ChatMessageValidationError struct { } // Field function returns field value. -func (e ChatMessageValidationError) Field() string { return e.field } +func (e MessageValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e ChatMessageValidationError) Reason() string { return e.reason } +func (e MessageValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e ChatMessageValidationError) Cause() error { return e.cause } +func (e MessageValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e ChatMessageValidationError) Key() bool { return e.key } +func (e MessageValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e ChatMessageValidationError) ErrorName() string { return "ChatMessageValidationError" } +func (e MessageValidationError) ErrorName() string { return "MessageValidationError" } // Error satisfies the builtin error interface -func (e ChatMessageValidationError) Error() string { +func (e MessageValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -3072,14 +2450,14 @@ func (e ChatMessageValidationError) Error() string { } return fmt.Sprintf( - "invalid %sChatMessage.%s: %s%s", + "invalid %sMessage.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = ChatMessageValidationError{} +var _ error = MessageValidationError{} var _ interface { Field() string @@ -3087,17 +2465,17 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = ChatMessageValidationError{} +} = MessageValidationError{} -// Validate checks the field values on ChatMember with the rules defined in the +// Validate checks the field values on Member with the rules defined in the // proto definition for this message. If any rules are violated, an error is returned. -func (m *ChatMember) Validate() error { +func (m *Member) Validate() error { if m == nil { return nil } if m.GetMemberId() == nil { - return ChatMemberValidationError{ + return MemberValidationError{ field: "MemberId", reason: "value is required", } @@ -3105,7 +2483,7 @@ func (m *ChatMember) Validate() error { if v, ok := interface{}(m.GetMemberId()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - return ChatMemberValidationError{ + return MemberValidationError{ field: "MemberId", reason: "embedded message failed validation", cause: err, @@ -3113,11 +2491,9 @@ func (m *ChatMember) Validate() error { } } - // no validation rules for IsSelf - if v, ok := interface{}(m.GetIdentity()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - return ChatMemberValidationError{ + return MemberValidationError{ field: "Identity", reason: "embedded message failed validation", cause: err, @@ -3126,7 +2502,7 @@ func (m *ChatMember) Validate() error { } if len(m.GetPointers()) > 2 { - return ChatMemberValidationError{ + return MemberValidationError{ field: "Pointers", reason: "value must contain no more than 2 item(s)", } @@ -3137,7 +2513,7 @@ func (m *ChatMember) Validate() error { if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - return ChatMemberValidationError{ + return MemberValidationError{ field: fmt.Sprintf("Pointers[%v]", idx), reason: "embedded message failed validation", cause: err, @@ -3147,18 +2523,14 @@ func (m *ChatMember) Validate() error { } - // no validation rules for NumUnread - - // no validation rules for IsMuted - - // no validation rules for IsSubscribed + // no validation rules for IsSelf return nil } -// ChatMemberValidationError is the validation error returned by -// ChatMember.Validate if the designated constraints aren't met. -type ChatMemberValidationError struct { +// MemberValidationError is the validation error returned by Member.Validate if +// the designated constraints aren't met. +type MemberValidationError struct { field string reason string cause error @@ -3166,22 +2538,22 @@ type ChatMemberValidationError struct { } // Field function returns field value. -func (e ChatMemberValidationError) Field() string { return e.field } +func (e MemberValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e ChatMemberValidationError) Reason() string { return e.reason } +func (e MemberValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e ChatMemberValidationError) Cause() error { return e.cause } +func (e MemberValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e ChatMemberValidationError) Key() bool { return e.key } +func (e MemberValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e ChatMemberValidationError) ErrorName() string { return "ChatMemberValidationError" } +func (e MemberValidationError) ErrorName() string { return "MemberValidationError" } // Error satisfies the builtin error interface -func (e ChatMemberValidationError) Error() string { +func (e MemberValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -3193,14 +2565,14 @@ func (e ChatMemberValidationError) Error() string { } return fmt.Sprintf( - "invalid %sChatMember.%s: %s%s", + "invalid %sMember.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = ChatMemberValidationError{} +var _ error = MemberValidationError{} var _ interface { Field() string @@ -3208,43 +2580,50 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = ChatMemberValidationError{} +} = MemberValidationError{} -// Validate checks the field values on ChatMemberIdentity with the rules -// defined in the proto definition for this message. If any rules are -// violated, an error is returned. -func (m *ChatMemberIdentity) Validate() error { +// Validate checks the field values on MemberIdentity with the rules defined in +// the proto definition for this message. If any rules are violated, an error +// is returned. +func (m *MemberIdentity) Validate() error { if m == nil { return nil } - if _, ok := _ChatMemberIdentity_Platform_InLookup[m.GetPlatform()]; !ok { - return ChatMemberIdentityValidationError{ + if _, ok := _MemberIdentity_Platform_InLookup[m.GetPlatform()]; !ok { + return MemberIdentityValidationError{ field: "Platform", reason: "value must be in list [1]", } } if l := utf8.RuneCountInString(m.GetUsername()); l < 1 || l > 15 { - return ChatMemberIdentityValidationError{ + return MemberIdentityValidationError{ field: "Username", reason: "value length must be between 1 and 15 runes, inclusive", } } - if l := utf8.RuneCountInString(m.GetProfilePicUrl()); l < 1 || l > 255 { - return ChatMemberIdentityValidationError{ + if utf8.RuneCountInString(m.GetDisplayName()) > 255 { + return MemberIdentityValidationError{ + field: "DisplayName", + reason: "value length must be at most 255 runes", + } + } + + if utf8.RuneCountInString(m.GetProfilePicUrl()) > 255 { + return MemberIdentityValidationError{ field: "ProfilePicUrl", - reason: "value length must be between 1 and 255 runes, inclusive", + reason: "value length must be at most 255 runes", } } return nil } -// ChatMemberIdentityValidationError is the validation error returned by -// ChatMemberIdentity.Validate if the designated constraints aren't met. -type ChatMemberIdentityValidationError struct { +// MemberIdentityValidationError is the validation error returned by +// MemberIdentity.Validate if the designated constraints aren't met. +type MemberIdentityValidationError struct { field string reason string cause error @@ -3252,24 +2631,22 @@ type ChatMemberIdentityValidationError struct { } // Field function returns field value. -func (e ChatMemberIdentityValidationError) Field() string { return e.field } +func (e MemberIdentityValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e ChatMemberIdentityValidationError) Reason() string { return e.reason } +func (e MemberIdentityValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e ChatMemberIdentityValidationError) Cause() error { return e.cause } +func (e MemberIdentityValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e ChatMemberIdentityValidationError) Key() bool { return e.key } +func (e MemberIdentityValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e ChatMemberIdentityValidationError) ErrorName() string { - return "ChatMemberIdentityValidationError" -} +func (e MemberIdentityValidationError) ErrorName() string { return "MemberIdentityValidationError" } // Error satisfies the builtin error interface -func (e ChatMemberIdentityValidationError) Error() string { +func (e MemberIdentityValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -3281,14 +2658,14 @@ func (e ChatMemberIdentityValidationError) Error() string { } return fmt.Sprintf( - "invalid %sChatMemberIdentity.%s: %s%s", + "invalid %sMemberIdentity.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = ChatMemberIdentityValidationError{} +var _ error = MemberIdentityValidationError{} var _ interface { Field() string @@ -3296,9 +2673,9 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = ChatMemberIdentityValidationError{} +} = MemberIdentityValidationError{} -var _ChatMemberIdentity_Platform_InLookup = map[Platform]struct{}{ +var _MemberIdentity_Platform_InLookup = map[Platform]struct{}{ 1: {}, } @@ -3425,67 +2802,43 @@ func (m *Content) Validate() error { if v, ok := interface{}(m.GetText()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ContentValidationError{ - field: "Text", - reason: "embedded message failed validation", - cause: err, - } - } - } - - case *Content_Localized: - - if v, ok := interface{}(m.GetLocalized()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return ContentValidationError{ - field: "Localized", - reason: "embedded message failed validation", - cause: err, - } - } - } - - case *Content_ExchangeData: - - if v, ok := interface{}(m.GetExchangeData()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return ContentValidationError{ - field: "ExchangeData", + field: "Text", reason: "embedded message failed validation", cause: err, } } } - case *Content_NaclBox: + case *Content_Localized: - if v, ok := interface{}(m.GetNaclBox()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetLocalized()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ContentValidationError{ - field: "NaclBox", + field: "Localized", reason: "embedded message failed validation", cause: err, } } } - case *Content_ThankYou: + case *Content_ExchangeData: - if v, ok := interface{}(m.GetThankYou()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetExchangeData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ContentValidationError{ - field: "ThankYou", + field: "ExchangeData", reason: "embedded message failed validation", cause: err, } } } - case *Content_IdentityRevealed: + case *Content_NaclBox: - if v, ok := interface{}(m.GetIdentityRevealed()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetNaclBox()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ContentValidationError{ - field: "IdentityRevealed", + field: "NaclBox", reason: "embedded message failed validation", cause: err, } @@ -3787,9 +3140,267 @@ func (m *ExchangeDataContent) Validate() error { return nil } -// ExchangeDataContentValidationError is the validation error returned by -// ExchangeDataContent.Validate if the designated constraints aren't met. -type ExchangeDataContentValidationError struct { +// ExchangeDataContentValidationError is the validation error returned by +// ExchangeDataContent.Validate if the designated constraints aren't met. +type ExchangeDataContentValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e ExchangeDataContentValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e ExchangeDataContentValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e ExchangeDataContentValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e ExchangeDataContentValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e ExchangeDataContentValidationError) ErrorName() string { + return "ExchangeDataContentValidationError" +} + +// Error satisfies the builtin error interface +func (e ExchangeDataContentValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sExchangeDataContent.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = ExchangeDataContentValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = ExchangeDataContentValidationError{} + +var _ExchangeDataContent_Verb_NotInLookup = map[ExchangeDataContent_Verb]struct{}{ + 0: {}, +} + +// Validate checks the field values on NaclBoxEncryptedContent with the rules +// defined in the proto definition for this message. If any rules are +// violated, an error is returned. +func (m *NaclBoxEncryptedContent) Validate() error { + if m == nil { + return nil + } + + if m.GetPeerPublicKey() == nil { + return NaclBoxEncryptedContentValidationError{ + field: "PeerPublicKey", + reason: "value is required", + } + } + + if v, ok := interface{}(m.GetPeerPublicKey()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return NaclBoxEncryptedContentValidationError{ + field: "PeerPublicKey", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if len(m.GetNonce()) != 24 { + return NaclBoxEncryptedContentValidationError{ + field: "Nonce", + reason: "value length must be 24 bytes", + } + } + + if l := len(m.GetEncryptedPayload()); l < 1 || l > 1024 { + return NaclBoxEncryptedContentValidationError{ + field: "EncryptedPayload", + reason: "value length must be between 1 and 1024 bytes, inclusive", + } + } + + return nil +} + +// NaclBoxEncryptedContentValidationError is the validation error returned by +// NaclBoxEncryptedContent.Validate if the designated constraints aren't met. +type NaclBoxEncryptedContentValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e NaclBoxEncryptedContentValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e NaclBoxEncryptedContentValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e NaclBoxEncryptedContentValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e NaclBoxEncryptedContentValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e NaclBoxEncryptedContentValidationError) ErrorName() string { + return "NaclBoxEncryptedContentValidationError" +} + +// Error satisfies the builtin error interface +func (e NaclBoxEncryptedContentValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sNaclBoxEncryptedContent.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = NaclBoxEncryptedContentValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = NaclBoxEncryptedContentValidationError{} + +// Validate checks the field values on Cursor with the rules defined in the +// proto definition for this message. If any rules are violated, an error is returned. +func (m *Cursor) Validate() error { + if m == nil { + return nil + } + + if l := len(m.GetValue()); l < 8 || l > 32 { + return CursorValidationError{ + field: "Value", + reason: "value length must be between 8 and 32 bytes, inclusive", + } + } + + return nil +} + +// CursorValidationError is the validation error returned by Cursor.Validate if +// the designated constraints aren't met. +type CursorValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e CursorValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e CursorValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e CursorValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e CursorValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e CursorValidationError) ErrorName() string { return "CursorValidationError" } + +// Error satisfies the builtin error interface +func (e CursorValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sCursor.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = CursorValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = CursorValidationError{} + +// Validate checks the field values on IsTyping with the rules defined in the +// proto definition for this message. If any rules are violated, an error is returned. +func (m *IsTyping) Validate() error { + if m == nil { + return nil + } + + if m.GetMemberId() == nil { + return IsTypingValidationError{ + field: "MemberId", + reason: "value is required", + } + } + + if v, ok := interface{}(m.GetMemberId()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return IsTypingValidationError{ + field: "MemberId", + reason: "embedded message failed validation", + cause: err, + } + } + } + + // no validation rules for IsTyping + + return nil +} + +// IsTypingValidationError is the validation error returned by +// IsTyping.Validate if the designated constraints aren't met. +type IsTypingValidationError struct { field string reason string cause error @@ -3797,24 +3408,22 @@ type ExchangeDataContentValidationError struct { } // Field function returns field value. -func (e ExchangeDataContentValidationError) Field() string { return e.field } +func (e IsTypingValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e ExchangeDataContentValidationError) Reason() string { return e.reason } +func (e IsTypingValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e ExchangeDataContentValidationError) Cause() error { return e.cause } +func (e IsTypingValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e ExchangeDataContentValidationError) Key() bool { return e.key } +func (e IsTypingValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e ExchangeDataContentValidationError) ErrorName() string { - return "ExchangeDataContentValidationError" -} +func (e IsTypingValidationError) ErrorName() string { return "IsTypingValidationError" } // Error satisfies the builtin error interface -func (e ExchangeDataContentValidationError) Error() string { +func (e IsTypingValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -3826,14 +3435,14 @@ func (e ExchangeDataContentValidationError) Error() string { } return fmt.Sprintf( - "invalid %sExchangeDataContent.%s: %s%s", + "invalid %sIsTyping.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = ExchangeDataContentValidationError{} +var _ error = IsTypingValidationError{} var _ interface { Field() string @@ -3841,57 +3450,57 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = ExchangeDataContentValidationError{} - -var _ExchangeDataContent_Verb_NotInLookup = map[ExchangeDataContent_Verb]struct{}{ - 0: {}, -} +} = IsTypingValidationError{} -// Validate checks the field values on NaclBoxEncryptedContent with the rules -// defined in the proto definition for this message. If any rules are +// Validate checks the field values on StreamChatEventsRequest_Params with the +// rules defined in the proto definition for this message. If any rules are // violated, an error is returned. -func (m *NaclBoxEncryptedContent) Validate() error { +func (m *StreamChatEventsRequest_Params) Validate() error { if m == nil { return nil } - if m.GetPeerPublicKey() == nil { - return NaclBoxEncryptedContentValidationError{ - field: "PeerPublicKey", + if m.GetOwner() == nil { + return StreamChatEventsRequest_ParamsValidationError{ + field: "Owner", reason: "value is required", } } - if v, ok := interface{}(m.GetPeerPublicKey()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetOwner()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - return NaclBoxEncryptedContentValidationError{ - field: "PeerPublicKey", + return StreamChatEventsRequest_ParamsValidationError{ + field: "Owner", reason: "embedded message failed validation", cause: err, } } } - if len(m.GetNonce()) != 24 { - return NaclBoxEncryptedContentValidationError{ - field: "Nonce", - reason: "value length must be 24 bytes", + if m.GetSignature() == nil { + return StreamChatEventsRequest_ParamsValidationError{ + field: "Signature", + reason: "value is required", } } - if l := len(m.GetEncryptedPayload()); l < 1 || l > 1024 { - return NaclBoxEncryptedContentValidationError{ - field: "EncryptedPayload", - reason: "value length must be between 1 and 1024 bytes, inclusive", + if v, ok := interface{}(m.GetSignature()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return StreamChatEventsRequest_ParamsValidationError{ + field: "Signature", + reason: "embedded message failed validation", + cause: err, + } } } return nil } -// NaclBoxEncryptedContentValidationError is the validation error returned by -// NaclBoxEncryptedContent.Validate if the designated constraints aren't met. -type NaclBoxEncryptedContentValidationError struct { +// StreamChatEventsRequest_ParamsValidationError is the validation error +// returned by StreamChatEventsRequest_Params.Validate if the designated +// constraints aren't met. +type StreamChatEventsRequest_ParamsValidationError struct { field string reason string cause error @@ -3899,24 +3508,24 @@ type NaclBoxEncryptedContentValidationError struct { } // Field function returns field value. -func (e NaclBoxEncryptedContentValidationError) Field() string { return e.field } +func (e StreamChatEventsRequest_ParamsValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e NaclBoxEncryptedContentValidationError) Reason() string { return e.reason } +func (e StreamChatEventsRequest_ParamsValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e NaclBoxEncryptedContentValidationError) Cause() error { return e.cause } +func (e StreamChatEventsRequest_ParamsValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e NaclBoxEncryptedContentValidationError) Key() bool { return e.key } +func (e StreamChatEventsRequest_ParamsValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e NaclBoxEncryptedContentValidationError) ErrorName() string { - return "NaclBoxEncryptedContentValidationError" +func (e StreamChatEventsRequest_ParamsValidationError) ErrorName() string { + return "StreamChatEventsRequest_ParamsValidationError" } // Error satisfies the builtin error interface -func (e NaclBoxEncryptedContentValidationError) Error() string { +func (e StreamChatEventsRequest_ParamsValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -3928,14 +3537,14 @@ func (e NaclBoxEncryptedContentValidationError) Error() string { } return fmt.Sprintf( - "invalid %sNaclBoxEncryptedContent.%s: %s%s", + "invalid %sStreamChatEventsRequest_Params.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = NaclBoxEncryptedContentValidationError{} +var _ error = StreamChatEventsRequest_ParamsValidationError{} var _ interface { Field() string @@ -3943,39 +3552,45 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = NaclBoxEncryptedContentValidationError{} +} = StreamChatEventsRequest_ParamsValidationError{} -// Validate checks the field values on ThankYouContent with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. -func (m *ThankYouContent) Validate() error { +// Validate checks the field values on StreamChatEventsResponse_EventBatch with +// the rules defined in the proto definition for this message. If any rules +// are violated, an error is returned. +func (m *StreamChatEventsResponse_EventBatch) Validate() error { if m == nil { return nil } - if m.GetTipIntent() == nil { - return ThankYouContentValidationError{ - field: "TipIntent", - reason: "value is required", + if l := len(m.GetUpdates()); l < 1 || l > 1024 { + return StreamChatEventsResponse_EventBatchValidationError{ + field: "Updates", + reason: "value must contain between 1 and 1024 items, inclusive", } } - if v, ok := interface{}(m.GetTipIntent()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return ThankYouContentValidationError{ - field: "TipIntent", - reason: "embedded message failed validation", - cause: err, + for idx, item := range m.GetUpdates() { + _, _ = idx, item + + if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return StreamChatEventsResponse_EventBatchValidationError{ + field: fmt.Sprintf("Updates[%v]", idx), + reason: "embedded message failed validation", + cause: err, + } } } + } return nil } -// ThankYouContentValidationError is the validation error returned by -// ThankYouContent.Validate if the designated constraints aren't met. -type ThankYouContentValidationError struct { +// StreamChatEventsResponse_EventBatchValidationError is the validation error +// returned by StreamChatEventsResponse_EventBatch.Validate if the designated +// constraints aren't met. +type StreamChatEventsResponse_EventBatchValidationError struct { field string reason string cause error @@ -3983,22 +3598,24 @@ type ThankYouContentValidationError struct { } // Field function returns field value. -func (e ThankYouContentValidationError) Field() string { return e.field } +func (e StreamChatEventsResponse_EventBatchValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e ThankYouContentValidationError) Reason() string { return e.reason } +func (e StreamChatEventsResponse_EventBatchValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e ThankYouContentValidationError) Cause() error { return e.cause } +func (e StreamChatEventsResponse_EventBatchValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e ThankYouContentValidationError) Key() bool { return e.key } +func (e StreamChatEventsResponse_EventBatchValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e ThankYouContentValidationError) ErrorName() string { return "ThankYouContentValidationError" } +func (e StreamChatEventsResponse_EventBatchValidationError) ErrorName() string { + return "StreamChatEventsResponse_EventBatchValidationError" +} // Error satisfies the builtin error interface -func (e ThankYouContentValidationError) Error() string { +func (e StreamChatEventsResponse_EventBatchValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -4010,14 +3627,14 @@ func (e ThankYouContentValidationError) Error() string { } return fmt.Sprintf( - "invalid %sThankYouContent.%s: %s%s", + "invalid %sStreamChatEventsResponse_EventBatch.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = ThankYouContentValidationError{} +var _ error = StreamChatEventsResponse_EventBatchValidationError{} var _ interface { Field() string @@ -4025,44 +3642,67 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = ThankYouContentValidationError{} +} = StreamChatEventsResponse_EventBatchValidationError{} -// Validate checks the field values on IdentityRevealedContent with the rules -// defined in the proto definition for this message. If any rules are -// violated, an error is returned. -func (m *IdentityRevealedContent) Validate() error { +// Validate checks the field values on StreamChatEventsResponse_ChatUpdate with +// the rules defined in the proto definition for this message. If any rules +// are violated, an error is returned. +func (m *StreamChatEventsResponse_ChatUpdate) Validate() error { if m == nil { return nil } - if m.GetMemberId() == nil { - return IdentityRevealedContentValidationError{ - field: "MemberId", + if m.GetChatId() == nil { + return StreamChatEventsResponse_ChatUpdateValidationError{ + field: "ChatId", reason: "value is required", } } - if v, ok := interface{}(m.GetMemberId()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetChatId()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - return IdentityRevealedContentValidationError{ - field: "MemberId", + return StreamChatEventsResponse_ChatUpdateValidationError{ + field: "ChatId", reason: "embedded message failed validation", cause: err, } } } - if m.GetIdentity() == nil { - return IdentityRevealedContentValidationError{ - field: "Identity", - reason: "value is required", + if v, ok := interface{}(m.GetMetadata()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return StreamChatEventsResponse_ChatUpdateValidationError{ + field: "Metadata", + reason: "embedded message failed validation", + cause: err, + } } } - if v, ok := interface{}(m.GetIdentity()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetLastMessage()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - return IdentityRevealedContentValidationError{ - field: "Identity", + return StreamChatEventsResponse_ChatUpdateValidationError{ + field: "LastMessage", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if v, ok := interface{}(m.GetPointer()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return StreamChatEventsResponse_ChatUpdateValidationError{ + field: "Pointer", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if v, ok := interface{}(m.GetIsTyping()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return StreamChatEventsResponse_ChatUpdateValidationError{ + field: "IsTyping", reason: "embedded message failed validation", cause: err, } @@ -4072,9 +3712,10 @@ func (m *IdentityRevealedContent) Validate() error { return nil } -// IdentityRevealedContentValidationError is the validation error returned by -// IdentityRevealedContent.Validate if the designated constraints aren't met. -type IdentityRevealedContentValidationError struct { +// StreamChatEventsResponse_ChatUpdateValidationError is the validation error +// returned by StreamChatEventsResponse_ChatUpdate.Validate if the designated +// constraints aren't met. +type StreamChatEventsResponse_ChatUpdateValidationError struct { field string reason string cause error @@ -4082,24 +3723,24 @@ type IdentityRevealedContentValidationError struct { } // Field function returns field value. -func (e IdentityRevealedContentValidationError) Field() string { return e.field } +func (e StreamChatEventsResponse_ChatUpdateValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e IdentityRevealedContentValidationError) Reason() string { return e.reason } +func (e StreamChatEventsResponse_ChatUpdateValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e IdentityRevealedContentValidationError) Cause() error { return e.cause } +func (e StreamChatEventsResponse_ChatUpdateValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e IdentityRevealedContentValidationError) Key() bool { return e.key } +func (e StreamChatEventsResponse_ChatUpdateValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e IdentityRevealedContentValidationError) ErrorName() string { - return "IdentityRevealedContentValidationError" +func (e StreamChatEventsResponse_ChatUpdateValidationError) ErrorName() string { + return "StreamChatEventsResponse_ChatUpdateValidationError" } // Error satisfies the builtin error interface -func (e IdentityRevealedContentValidationError) Error() string { +func (e StreamChatEventsResponse_ChatUpdateValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -4111,14 +3752,14 @@ func (e IdentityRevealedContentValidationError) Error() string { } return fmt.Sprintf( - "invalid %sIdentityRevealedContent.%s: %s%s", + "invalid %sStreamChatEventsResponse_ChatUpdate.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = IdentityRevealedContentValidationError{} +var _ error = StreamChatEventsResponse_ChatUpdateValidationError{} var _ interface { Field() string @@ -4126,28 +3767,93 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = IdentityRevealedContentValidationError{} +} = StreamChatEventsResponse_ChatUpdateValidationError{} -// Validate checks the field values on Cursor with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. -func (m *Cursor) Validate() error { +// Validate checks the field values on StreamMessagesRequest_Params with the +// rules defined in the proto definition for this message. If any rules are +// violated, an error is returned. +func (m *StreamMessagesRequest_Params) Validate() error { if m == nil { return nil } - if l := len(m.GetValue()); l < 8 || l > 32 { - return CursorValidationError{ - field: "Value", - reason: "value length must be between 8 and 32 bytes, inclusive", + if m.GetOwner() == nil { + return StreamMessagesRequest_ParamsValidationError{ + field: "Owner", + reason: "value is required", + } + } + + if v, ok := interface{}(m.GetOwner()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return StreamMessagesRequest_ParamsValidationError{ + field: "Owner", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if m.GetSignature() == nil { + return StreamMessagesRequest_ParamsValidationError{ + field: "Signature", + reason: "value is required", + } + } + + if v, ok := interface{}(m.GetSignature()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return StreamMessagesRequest_ParamsValidationError{ + field: "Signature", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if m.GetChatId() == nil { + return StreamMessagesRequest_ParamsValidationError{ + field: "ChatId", + reason: "value is required", + } + } + + if v, ok := interface{}(m.GetChatId()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return StreamMessagesRequest_ParamsValidationError{ + field: "ChatId", + reason: "embedded message failed validation", + cause: err, + } + } + } + + switch m.Resume.(type) { + + case *StreamMessagesRequest_Params_LastKnownMessageId: + + if v, ok := interface{}(m.GetLastKnownMessageId()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return StreamMessagesRequest_ParamsValidationError{ + field: "LastKnownMessageId", + reason: "embedded message failed validation", + cause: err, + } + } } + + case *StreamMessagesRequest_Params_LatestOnly: + // no validation rules for LatestOnly + } return nil } -// CursorValidationError is the validation error returned by Cursor.Validate if -// the designated constraints aren't met. -type CursorValidationError struct { +// StreamMessagesRequest_ParamsValidationError is the validation error returned +// by StreamMessagesRequest_Params.Validate if the designated constraints +// aren't met. +type StreamMessagesRequest_ParamsValidationError struct { field string reason string cause error @@ -4155,22 +3861,24 @@ type CursorValidationError struct { } // Field function returns field value. -func (e CursorValidationError) Field() string { return e.field } +func (e StreamMessagesRequest_ParamsValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e CursorValidationError) Reason() string { return e.reason } +func (e StreamMessagesRequest_ParamsValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e CursorValidationError) Cause() error { return e.cause } +func (e StreamMessagesRequest_ParamsValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e CursorValidationError) Key() bool { return e.key } +func (e StreamMessagesRequest_ParamsValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e CursorValidationError) ErrorName() string { return "CursorValidationError" } +func (e StreamMessagesRequest_ParamsValidationError) ErrorName() string { + return "StreamMessagesRequest_ParamsValidationError" +} // Error satisfies the builtin error interface -func (e CursorValidationError) Error() string { +func (e StreamMessagesRequest_ParamsValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -4182,14 +3890,14 @@ func (e CursorValidationError) Error() string { } return fmt.Sprintf( - "invalid %sCursor.%s: %s%s", + "invalid %sStreamMessagesRequest_Params.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = CursorValidationError{} +var _ error = StreamMessagesRequest_ParamsValidationError{} var _ interface { Field() string @@ -4197,40 +3905,45 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = CursorValidationError{} +} = StreamMessagesRequest_ParamsValidationError{} -// Validate checks the field values on IsTyping with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. -func (m *IsTyping) Validate() error { +// Validate checks the field values on StreamMessagesResponse_MessageBatch with +// the rules defined in the proto definition for this message. If any rules +// are violated, an error is returned. +func (m *StreamMessagesResponse_MessageBatch) Validate() error { if m == nil { return nil } - if m.GetMemberId() == nil { - return IsTypingValidationError{ - field: "MemberId", - reason: "value is required", + if l := len(m.GetMessages()); l < 1 || l > 1024 { + return StreamMessagesResponse_MessageBatchValidationError{ + field: "Messages", + reason: "value must contain between 1 and 1024 items, inclusive", } } - if v, ok := interface{}(m.GetMemberId()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return IsTypingValidationError{ - field: "MemberId", - reason: "embedded message failed validation", - cause: err, + for idx, item := range m.GetMessages() { + _, _ = idx, item + + if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return StreamMessagesResponse_MessageBatchValidationError{ + field: fmt.Sprintf("Messages[%v]", idx), + reason: "embedded message failed validation", + cause: err, + } } } - } - // no validation rules for IsTyping + } return nil } -// IsTypingValidationError is the validation error returned by -// IsTyping.Validate if the designated constraints aren't met. -type IsTypingValidationError struct { +// StreamMessagesResponse_MessageBatchValidationError is the validation error +// returned by StreamMessagesResponse_MessageBatch.Validate if the designated +// constraints aren't met. +type StreamMessagesResponse_MessageBatchValidationError struct { field string reason string cause error @@ -4238,22 +3951,24 @@ type IsTypingValidationError struct { } // Field function returns field value. -func (e IsTypingValidationError) Field() string { return e.field } +func (e StreamMessagesResponse_MessageBatchValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e IsTypingValidationError) Reason() string { return e.reason } +func (e StreamMessagesResponse_MessageBatchValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e IsTypingValidationError) Cause() error { return e.cause } +func (e StreamMessagesResponse_MessageBatchValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e IsTypingValidationError) Key() bool { return e.key } +func (e StreamMessagesResponse_MessageBatchValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e IsTypingValidationError) ErrorName() string { return "IsTypingValidationError" } +func (e StreamMessagesResponse_MessageBatchValidationError) ErrorName() string { + return "StreamMessagesResponse_MessageBatchValidationError" +} // Error satisfies the builtin error interface -func (e IsTypingValidationError) Error() string { +func (e StreamMessagesResponse_MessageBatchValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -4265,14 +3980,14 @@ func (e IsTypingValidationError) Error() string { } return fmt.Sprintf( - "invalid %sIsTyping.%s: %s%s", + "invalid %sStreamMessagesResponse_MessageBatch.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = IsTypingValidationError{} +var _ error = StreamMessagesResponse_MessageBatchValidationError{} var _ interface { Field() string @@ -4280,4 +3995,4 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = IsTypingValidationError{} +} = StreamMessagesResponse_MessageBatchValidationError{} diff --git a/generated/go/chat/v2/chat_service_grpc.pb.go b/generated/go/chat/v2/chat_service_grpc.pb.go index 6c2f871..4206d86 100644 --- a/generated/go/chat/v2/chat_service_grpc.pb.go +++ b/generated/go/chat/v2/chat_service_grpc.pb.go @@ -22,56 +22,42 @@ const _ = grpc.SupportPackageIsVersion7 // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type ChatClient interface { + // StreamChatEvents streams all chat events for the requesting user. + // + // Chat events will include any update to a chat, including: + // 1. Metadata changes. + // 2. Membership changes. + // 3. Latest messages. + // + // The server will optionally filter out some events depending on load + // and chat type. For example, Broadcast chats will not receive latest + // messages. + // + // Clients should use GetMessages to backfill in any historical messages + // for a chat. It should be sufficient to rely on ChatEvents for some types + // of chats, but using StreamMessages provides a guarentee of message events + // for all chats. + StreamChatEvents(ctx context.Context, opts ...grpc.CallOption) (Chat_StreamChatEventsClient, error) + // StreamMessages streams all messages/message states for the requested chat. + // + // By default, streams will resume messages from the last acknowledged delivery + // pointer of the caller. This can be overridden by setting 'last_message', + // 'latest_only'. + StreamMessages(ctx context.Context, opts ...grpc.CallOption) (Chat_StreamMessagesClient, error) // GetChats gets the set of chats for an owner account using a paged API. // This RPC is aware of all identities tied to the owner account. GetChats(ctx context.Context, in *GetChatsRequest, opts ...grpc.CallOption) (*GetChatsResponse, error) // GetMessages gets the set of messages for a chat member using a paged API GetMessages(ctx context.Context, in *GetMessagesRequest, opts ...grpc.CallOption) (*GetMessagesResponse, error) - // StreamChatEvents streams chat events in real-time. Chat events include - // messages, pointer updates, etc. - // - // The streaming protocol is follows: - // 1. Client initiates a stream by sending an OpenChatEventStream message. - // 2. If an error is encoutered, a ChatStreamEventError message will be - // returned by server and the stream will be closed. - // 3. Server will immediately flush initial chat state. - // 4. New chat events will be pushed to the stream in real time as they - // are received. - // - // This RPC supports a keepalive protocol as follows: - // 1. Client initiates a stream by sending an OpenChatEventStream message. - // 2. Upon stream initialization, server begins the keepalive protocol. - // 3. Server sends a ping to the client. - // 4. Client responds with a pong as fast as possible, making note of - // the delay for when to expect the next ping. - // 5. Steps 3 and 4 are repeated until the stream is explicitly terminated - // or is deemed to be unhealthy. - // - // Client notes: - // - Client should be careful to process events async, so any responses to pings are - // not delayed. - // - Clients should implement a reasonable backoff strategy upon continued timeout - // failures. - // - Clients that abuse pong messages may have their streams terminated by server. - // - // At any point in the stream, server will respond with events in real time as - // they are observed. Events sent over the stream should not affect the ping/pong - // protocol timings. - StreamChatEvents(ctx context.Context, opts ...grpc.CallOption) (Chat_StreamChatEventsClient, error) // StartChat starts a chat. The RPC call is idempotent and will use existing // chats whenever applicable within the context of message routing. StartChat(ctx context.Context, in *StartChatRequest, opts ...grpc.CallOption) (*StartChatResponse, error) - // SendMessage sends a message to a chat + // SendMessage sends a message to a chat. SendMessage(ctx context.Context, in *SendMessageRequest, opts ...grpc.CallOption) (*SendMessageResponse, error) - // AdvancePointer advances a pointer in message history for a chat member + // AdvancePointer advances a pointer in message history for a chat member. AdvancePointer(ctx context.Context, in *AdvancePointerRequest, opts ...grpc.CallOption) (*AdvancePointerResponse, error) - // RevealIdentity reveals a chat member's identity if it is anonymous. A chat - // message will be inserted on success. - RevealIdentity(ctx context.Context, in *RevealIdentityRequest, opts ...grpc.CallOption) (*RevealIdentityResponse, error) - // SetMuteState configures a chat member's mute state + // SetMuteState configures a chat member's mute state. SetMuteState(ctx context.Context, in *SetMuteStateRequest, opts ...grpc.CallOption) (*SetMuteStateResponse, error) - // SetSubscriptionState configures a chat member's susbscription state - SetSubscriptionState(ctx context.Context, in *SetSubscriptionStateRequest, opts ...grpc.CallOption) (*SetSubscriptionStateResponse, error) // NotifyIsTypingRequest notifies a chat that the sending member is typing. // // These requests are transient, and may be dropped at any point. @@ -86,24 +72,6 @@ func NewChatClient(cc grpc.ClientConnInterface) ChatClient { return &chatClient{cc} } -func (c *chatClient) GetChats(ctx context.Context, in *GetChatsRequest, opts ...grpc.CallOption) (*GetChatsResponse, error) { - out := new(GetChatsResponse) - err := c.cc.Invoke(ctx, "/code.chat.v2.Chat/GetChats", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *chatClient) GetMessages(ctx context.Context, in *GetMessagesRequest, opts ...grpc.CallOption) (*GetMessagesResponse, error) { - out := new(GetMessagesResponse) - err := c.cc.Invoke(ctx, "/code.chat.v2.Chat/GetMessages", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *chatClient) StreamChatEvents(ctx context.Context, opts ...grpc.CallOption) (Chat_StreamChatEventsClient, error) { stream, err := c.cc.NewStream(ctx, &Chat_ServiceDesc.Streams[0], "/code.chat.v2.Chat/StreamChatEvents", opts...) if err != nil { @@ -135,54 +103,85 @@ func (x *chatStreamChatEventsClient) Recv() (*StreamChatEventsResponse, error) { return m, nil } -func (c *chatClient) StartChat(ctx context.Context, in *StartChatRequest, opts ...grpc.CallOption) (*StartChatResponse, error) { - out := new(StartChatResponse) - err := c.cc.Invoke(ctx, "/code.chat.v2.Chat/StartChat", in, out, opts...) +func (c *chatClient) StreamMessages(ctx context.Context, opts ...grpc.CallOption) (Chat_StreamMessagesClient, error) { + stream, err := c.cc.NewStream(ctx, &Chat_ServiceDesc.Streams[1], "/code.chat.v2.Chat/StreamMessages", opts...) + if err != nil { + return nil, err + } + x := &chatStreamMessagesClient{stream} + return x, nil +} + +type Chat_StreamMessagesClient interface { + Send(*StreamMessagesRequest) error + Recv() (*StreamMessagesResponse, error) + grpc.ClientStream +} + +type chatStreamMessagesClient struct { + grpc.ClientStream +} + +func (x *chatStreamMessagesClient) Send(m *StreamMessagesRequest) error { + return x.ClientStream.SendMsg(m) +} + +func (x *chatStreamMessagesClient) Recv() (*StreamMessagesResponse, error) { + m := new(StreamMessagesResponse) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func (c *chatClient) GetChats(ctx context.Context, in *GetChatsRequest, opts ...grpc.CallOption) (*GetChatsResponse, error) { + out := new(GetChatsResponse) + err := c.cc.Invoke(ctx, "/code.chat.v2.Chat/GetChats", in, out, opts...) if err != nil { return nil, err } return out, nil } -func (c *chatClient) SendMessage(ctx context.Context, in *SendMessageRequest, opts ...grpc.CallOption) (*SendMessageResponse, error) { - out := new(SendMessageResponse) - err := c.cc.Invoke(ctx, "/code.chat.v2.Chat/SendMessage", in, out, opts...) +func (c *chatClient) GetMessages(ctx context.Context, in *GetMessagesRequest, opts ...grpc.CallOption) (*GetMessagesResponse, error) { + out := new(GetMessagesResponse) + err := c.cc.Invoke(ctx, "/code.chat.v2.Chat/GetMessages", in, out, opts...) if err != nil { return nil, err } return out, nil } -func (c *chatClient) AdvancePointer(ctx context.Context, in *AdvancePointerRequest, opts ...grpc.CallOption) (*AdvancePointerResponse, error) { - out := new(AdvancePointerResponse) - err := c.cc.Invoke(ctx, "/code.chat.v2.Chat/AdvancePointer", in, out, opts...) +func (c *chatClient) StartChat(ctx context.Context, in *StartChatRequest, opts ...grpc.CallOption) (*StartChatResponse, error) { + out := new(StartChatResponse) + err := c.cc.Invoke(ctx, "/code.chat.v2.Chat/StartChat", in, out, opts...) if err != nil { return nil, err } return out, nil } -func (c *chatClient) RevealIdentity(ctx context.Context, in *RevealIdentityRequest, opts ...grpc.CallOption) (*RevealIdentityResponse, error) { - out := new(RevealIdentityResponse) - err := c.cc.Invoke(ctx, "/code.chat.v2.Chat/RevealIdentity", in, out, opts...) +func (c *chatClient) SendMessage(ctx context.Context, in *SendMessageRequest, opts ...grpc.CallOption) (*SendMessageResponse, error) { + out := new(SendMessageResponse) + err := c.cc.Invoke(ctx, "/code.chat.v2.Chat/SendMessage", in, out, opts...) if err != nil { return nil, err } return out, nil } -func (c *chatClient) SetMuteState(ctx context.Context, in *SetMuteStateRequest, opts ...grpc.CallOption) (*SetMuteStateResponse, error) { - out := new(SetMuteStateResponse) - err := c.cc.Invoke(ctx, "/code.chat.v2.Chat/SetMuteState", in, out, opts...) +func (c *chatClient) AdvancePointer(ctx context.Context, in *AdvancePointerRequest, opts ...grpc.CallOption) (*AdvancePointerResponse, error) { + out := new(AdvancePointerResponse) + err := c.cc.Invoke(ctx, "/code.chat.v2.Chat/AdvancePointer", in, out, opts...) if err != nil { return nil, err } return out, nil } -func (c *chatClient) SetSubscriptionState(ctx context.Context, in *SetSubscriptionStateRequest, opts ...grpc.CallOption) (*SetSubscriptionStateResponse, error) { - out := new(SetSubscriptionStateResponse) - err := c.cc.Invoke(ctx, "/code.chat.v2.Chat/SetSubscriptionState", in, out, opts...) +func (c *chatClient) SetMuteState(ctx context.Context, in *SetMuteStateRequest, opts ...grpc.CallOption) (*SetMuteStateResponse, error) { + out := new(SetMuteStateResponse) + err := c.cc.Invoke(ctx, "/code.chat.v2.Chat/SetMuteState", in, out, opts...) if err != nil { return nil, err } @@ -202,56 +201,42 @@ func (c *chatClient) NotifyIsTyping(ctx context.Context, in *NotifyIsTypingReque // All implementations must embed UnimplementedChatServer // for forward compatibility type ChatServer interface { + // StreamChatEvents streams all chat events for the requesting user. + // + // Chat events will include any update to a chat, including: + // 1. Metadata changes. + // 2. Membership changes. + // 3. Latest messages. + // + // The server will optionally filter out some events depending on load + // and chat type. For example, Broadcast chats will not receive latest + // messages. + // + // Clients should use GetMessages to backfill in any historical messages + // for a chat. It should be sufficient to rely on ChatEvents for some types + // of chats, but using StreamMessages provides a guarentee of message events + // for all chats. + StreamChatEvents(Chat_StreamChatEventsServer) error + // StreamMessages streams all messages/message states for the requested chat. + // + // By default, streams will resume messages from the last acknowledged delivery + // pointer of the caller. This can be overridden by setting 'last_message', + // 'latest_only'. + StreamMessages(Chat_StreamMessagesServer) error // GetChats gets the set of chats for an owner account using a paged API. // This RPC is aware of all identities tied to the owner account. GetChats(context.Context, *GetChatsRequest) (*GetChatsResponse, error) // GetMessages gets the set of messages for a chat member using a paged API GetMessages(context.Context, *GetMessagesRequest) (*GetMessagesResponse, error) - // StreamChatEvents streams chat events in real-time. Chat events include - // messages, pointer updates, etc. - // - // The streaming protocol is follows: - // 1. Client initiates a stream by sending an OpenChatEventStream message. - // 2. If an error is encoutered, a ChatStreamEventError message will be - // returned by server and the stream will be closed. - // 3. Server will immediately flush initial chat state. - // 4. New chat events will be pushed to the stream in real time as they - // are received. - // - // This RPC supports a keepalive protocol as follows: - // 1. Client initiates a stream by sending an OpenChatEventStream message. - // 2. Upon stream initialization, server begins the keepalive protocol. - // 3. Server sends a ping to the client. - // 4. Client responds with a pong as fast as possible, making note of - // the delay for when to expect the next ping. - // 5. Steps 3 and 4 are repeated until the stream is explicitly terminated - // or is deemed to be unhealthy. - // - // Client notes: - // - Client should be careful to process events async, so any responses to pings are - // not delayed. - // - Clients should implement a reasonable backoff strategy upon continued timeout - // failures. - // - Clients that abuse pong messages may have their streams terminated by server. - // - // At any point in the stream, server will respond with events in real time as - // they are observed. Events sent over the stream should not affect the ping/pong - // protocol timings. - StreamChatEvents(Chat_StreamChatEventsServer) error // StartChat starts a chat. The RPC call is idempotent and will use existing // chats whenever applicable within the context of message routing. StartChat(context.Context, *StartChatRequest) (*StartChatResponse, error) - // SendMessage sends a message to a chat + // SendMessage sends a message to a chat. SendMessage(context.Context, *SendMessageRequest) (*SendMessageResponse, error) - // AdvancePointer advances a pointer in message history for a chat member + // AdvancePointer advances a pointer in message history for a chat member. AdvancePointer(context.Context, *AdvancePointerRequest) (*AdvancePointerResponse, error) - // RevealIdentity reveals a chat member's identity if it is anonymous. A chat - // message will be inserted on success. - RevealIdentity(context.Context, *RevealIdentityRequest) (*RevealIdentityResponse, error) - // SetMuteState configures a chat member's mute state + // SetMuteState configures a chat member's mute state. SetMuteState(context.Context, *SetMuteStateRequest) (*SetMuteStateResponse, error) - // SetSubscriptionState configures a chat member's susbscription state - SetSubscriptionState(context.Context, *SetSubscriptionStateRequest) (*SetSubscriptionStateResponse, error) // NotifyIsTypingRequest notifies a chat that the sending member is typing. // // These requests are transient, and may be dropped at any point. @@ -263,15 +248,18 @@ type ChatServer interface { type UnimplementedChatServer struct { } +func (UnimplementedChatServer) StreamChatEvents(Chat_StreamChatEventsServer) error { + return status.Errorf(codes.Unimplemented, "method StreamChatEvents not implemented") +} +func (UnimplementedChatServer) StreamMessages(Chat_StreamMessagesServer) error { + return status.Errorf(codes.Unimplemented, "method StreamMessages not implemented") +} func (UnimplementedChatServer) GetChats(context.Context, *GetChatsRequest) (*GetChatsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetChats not implemented") } func (UnimplementedChatServer) GetMessages(context.Context, *GetMessagesRequest) (*GetMessagesResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetMessages not implemented") } -func (UnimplementedChatServer) StreamChatEvents(Chat_StreamChatEventsServer) error { - return status.Errorf(codes.Unimplemented, "method StreamChatEvents not implemented") -} func (UnimplementedChatServer) StartChat(context.Context, *StartChatRequest) (*StartChatResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method StartChat not implemented") } @@ -281,15 +269,9 @@ func (UnimplementedChatServer) SendMessage(context.Context, *SendMessageRequest) func (UnimplementedChatServer) AdvancePointer(context.Context, *AdvancePointerRequest) (*AdvancePointerResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method AdvancePointer not implemented") } -func (UnimplementedChatServer) RevealIdentity(context.Context, *RevealIdentityRequest) (*RevealIdentityResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method RevealIdentity not implemented") -} func (UnimplementedChatServer) SetMuteState(context.Context, *SetMuteStateRequest) (*SetMuteStateResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method SetMuteState not implemented") } -func (UnimplementedChatServer) SetSubscriptionState(context.Context, *SetSubscriptionStateRequest) (*SetSubscriptionStateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method SetSubscriptionState not implemented") -} func (UnimplementedChatServer) NotifyIsTyping(context.Context, *NotifyIsTypingRequest) (*NotifyIsTypingResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method NotifyIsTyping not implemented") } @@ -306,6 +288,58 @@ func RegisterChatServer(s grpc.ServiceRegistrar, srv ChatServer) { s.RegisterService(&Chat_ServiceDesc, srv) } +func _Chat_StreamChatEvents_Handler(srv interface{}, stream grpc.ServerStream) error { + return srv.(ChatServer).StreamChatEvents(&chatStreamChatEventsServer{stream}) +} + +type Chat_StreamChatEventsServer interface { + Send(*StreamChatEventsResponse) error + Recv() (*StreamChatEventsRequest, error) + grpc.ServerStream +} + +type chatStreamChatEventsServer struct { + grpc.ServerStream +} + +func (x *chatStreamChatEventsServer) Send(m *StreamChatEventsResponse) error { + return x.ServerStream.SendMsg(m) +} + +func (x *chatStreamChatEventsServer) Recv() (*StreamChatEventsRequest, error) { + m := new(StreamChatEventsRequest) + if err := x.ServerStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func _Chat_StreamMessages_Handler(srv interface{}, stream grpc.ServerStream) error { + return srv.(ChatServer).StreamMessages(&chatStreamMessagesServer{stream}) +} + +type Chat_StreamMessagesServer interface { + Send(*StreamMessagesResponse) error + Recv() (*StreamMessagesRequest, error) + grpc.ServerStream +} + +type chatStreamMessagesServer struct { + grpc.ServerStream +} + +func (x *chatStreamMessagesServer) Send(m *StreamMessagesResponse) error { + return x.ServerStream.SendMsg(m) +} + +func (x *chatStreamMessagesServer) Recv() (*StreamMessagesRequest, error) { + m := new(StreamMessagesRequest) + if err := x.ServerStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + func _Chat_GetChats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetChatsRequest) if err := dec(in); err != nil { @@ -342,32 +376,6 @@ func _Chat_GetMessages_Handler(srv interface{}, ctx context.Context, dec func(in return interceptor(ctx, in, info, handler) } -func _Chat_StreamChatEvents_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(ChatServer).StreamChatEvents(&chatStreamChatEventsServer{stream}) -} - -type Chat_StreamChatEventsServer interface { - Send(*StreamChatEventsResponse) error - Recv() (*StreamChatEventsRequest, error) - grpc.ServerStream -} - -type chatStreamChatEventsServer struct { - grpc.ServerStream -} - -func (x *chatStreamChatEventsServer) Send(m *StreamChatEventsResponse) error { - return x.ServerStream.SendMsg(m) -} - -func (x *chatStreamChatEventsServer) Recv() (*StreamChatEventsRequest, error) { - m := new(StreamChatEventsRequest) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - func _Chat_StartChat_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(StartChatRequest) if err := dec(in); err != nil { @@ -422,24 +430,6 @@ func _Chat_AdvancePointer_Handler(srv interface{}, ctx context.Context, dec func return interceptor(ctx, in, info, handler) } -func _Chat_RevealIdentity_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(RevealIdentityRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ChatServer).RevealIdentity(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/code.chat.v2.Chat/RevealIdentity", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ChatServer).RevealIdentity(ctx, req.(*RevealIdentityRequest)) - } - return interceptor(ctx, in, info, handler) -} - func _Chat_SetMuteState_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(SetMuteStateRequest) if err := dec(in); err != nil { @@ -458,24 +448,6 @@ func _Chat_SetMuteState_Handler(srv interface{}, ctx context.Context, dec func(i return interceptor(ctx, in, info, handler) } -func _Chat_SetSubscriptionState_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetSubscriptionStateRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ChatServer).SetSubscriptionState(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/code.chat.v2.Chat/SetSubscriptionState", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ChatServer).SetSubscriptionState(ctx, req.(*SetSubscriptionStateRequest)) - } - return interceptor(ctx, in, info, handler) -} - func _Chat_NotifyIsTyping_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(NotifyIsTypingRequest) if err := dec(in); err != nil { @@ -521,18 +493,10 @@ var Chat_ServiceDesc = grpc.ServiceDesc{ MethodName: "AdvancePointer", Handler: _Chat_AdvancePointer_Handler, }, - { - MethodName: "RevealIdentity", - Handler: _Chat_RevealIdentity_Handler, - }, { MethodName: "SetMuteState", Handler: _Chat_SetMuteState_Handler, }, - { - MethodName: "SetSubscriptionState", - Handler: _Chat_SetSubscriptionState_Handler, - }, { MethodName: "NotifyIsTyping", Handler: _Chat_NotifyIsTyping_Handler, @@ -545,6 +509,12 @@ var Chat_ServiceDesc = grpc.ServiceDesc{ ServerStreams: true, ClientStreams: true, }, + { + StreamName: "StreamMessages", + Handler: _Chat_StreamMessages_Handler, + ServerStreams: true, + ClientStreams: true, + }, }, Metadata: "chat/v2/chat_service.proto", } diff --git a/generated/go/common/v1/model.pb.go b/generated/go/common/v1/model.pb.go index 0aa8014..d34c748 100644 --- a/generated/go/common/v1/model.pb.go +++ b/generated/go/common/v1/model.pb.go @@ -1303,7 +1303,7 @@ var file_common_v1_model_proto_rawDesc = []byte{ 0xba, 0xe9, 0xc0, 0x03, 0x06, 0x7a, 0x04, 0x10, 0x10, 0x18, 0x10, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x2b, 0x0a, 0x06, 0x43, 0x68, 0x61, 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x0b, 0xba, 0xe9, 0xc0, - 0x03, 0x06, 0x7a, 0x04, 0x10, 0x20, 0x18, 0x20, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, + 0x03, 0x06, 0x7a, 0x04, 0x10, 0x10, 0x18, 0x20, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x34, 0x0a, 0x0f, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x0b, 0xba, 0xe9, 0xc0, 0x03, 0x06, 0x7a, 0x04, 0x10, 0x10, 0x18, 0x10, 0x52, 0x05, diff --git a/generated/go/common/v1/model.pb.validate.go b/generated/go/common/v1/model.pb.validate.go index d1200b7..489c7c5 100644 --- a/generated/go/common/v1/model.pb.validate.go +++ b/generated/go/common/v1/model.pb.validate.go @@ -556,10 +556,10 @@ func (m *ChatId) Validate() error { return nil } - if len(m.GetValue()) != 32 { + if l := len(m.GetValue()); l < 16 || l > 32 { return ChatIdValidationError{ field: "Value", - reason: "value length must be 32 bytes", + reason: "value length must be between 16 and 32 bytes, inclusive", } } diff --git a/generated/go/transaction/v2/transaction_service.pb.go b/generated/go/transaction/v2/transaction_service.pb.go index 3845d46..e756a8e 100644 --- a/generated/go/transaction/v2/transaction_service.pb.go +++ b/generated/go/transaction/v2/transaction_service.pb.go @@ -980,6 +980,52 @@ func (TippedUser_Platform) EnumDescriptor() ([]byte, []int) { return file_transaction_v2_transaction_service_proto_rawDescGZIP(), []int{63, 0} } +type FriendedUser_Platform int32 + +const ( + FriendedUser_UNKNOWN FriendedUser_Platform = 0 + FriendedUser_TWITTER FriendedUser_Platform = 1 +) + +// Enum value maps for FriendedUser_Platform. +var ( + FriendedUser_Platform_name = map[int32]string{ + 0: "UNKNOWN", + 1: "TWITTER", + } + FriendedUser_Platform_value = map[string]int32{ + "UNKNOWN": 0, + "TWITTER": 1, + } +) + +func (x FriendedUser_Platform) Enum() *FriendedUser_Platform { + p := new(FriendedUser_Platform) + *p = x + return p +} + +func (x FriendedUser_Platform) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (FriendedUser_Platform) Descriptor() protoreflect.EnumDescriptor { + return file_transaction_v2_transaction_service_proto_enumTypes[19].Descriptor() +} + +func (FriendedUser_Platform) Type() protoreflect.EnumType { + return &file_transaction_v2_transaction_service_proto_enumTypes[19] +} + +func (x FriendedUser_Platform) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use FriendedUser_Platform.Descriptor instead. +func (FriendedUser_Platform) EnumDescriptor() ([]byte, []int) { + return file_transaction_v2_transaction_service_proto_rawDescGZIP(), []int{64, 0} +} + type SubmitIntentRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -5847,6 +5893,61 @@ func (x *TippedUser) GetUsername() string { return "" } +type FriendedUser struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Platform FriendedUser_Platform `protobuf:"varint,1,opt,name=platform,proto3,enum=code.transaction.v2.FriendedUser_Platform" json:"platform,omitempty"` + Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` +} + +func (x *FriendedUser) Reset() { + *x = FriendedUser{} + if protoimpl.UnsafeEnabled { + mi := &file_transaction_v2_transaction_service_proto_msgTypes[64] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FriendedUser) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FriendedUser) ProtoMessage() {} + +func (x *FriendedUser) ProtoReflect() protoreflect.Message { + mi := &file_transaction_v2_transaction_service_proto_msgTypes[64] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FriendedUser.ProtoReflect.Descriptor instead. +func (*FriendedUser) Descriptor() ([]byte, []int) { + return file_transaction_v2_transaction_service_proto_rawDescGZIP(), []int{64} +} + +func (x *FriendedUser) GetPlatform() FriendedUser_Platform { + if x != nil { + return x.Platform + } + return FriendedUser_UNKNOWN +} + +func (x *FriendedUser) GetUsername() string { + if x != nil { + return x.Username + } + return "" +} + type Cursor struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -5858,7 +5959,7 @@ type Cursor struct { func (x *Cursor) Reset() { *x = Cursor{} if protoimpl.UnsafeEnabled { - mi := &file_transaction_v2_transaction_service_proto_msgTypes[64] + mi := &file_transaction_v2_transaction_service_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5871,7 +5972,7 @@ func (x *Cursor) String() string { func (*Cursor) ProtoMessage() {} func (x *Cursor) ProtoReflect() protoreflect.Message { - mi := &file_transaction_v2_transaction_service_proto_msgTypes[64] + mi := &file_transaction_v2_transaction_service_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5884,7 +5985,7 @@ func (x *Cursor) ProtoReflect() protoreflect.Message { // Deprecated: Use Cursor.ProtoReflect.Descriptor instead. func (*Cursor) Descriptor() ([]byte, []int) { - return file_transaction_v2_transaction_service_proto_rawDescGZIP(), []int{64} + return file_transaction_v2_transaction_service_proto_rawDescGZIP(), []int{65} } func (x *Cursor) GetValue() []byte { @@ -5919,7 +6020,7 @@ type SubmitIntentRequest_SubmitActions struct { func (x *SubmitIntentRequest_SubmitActions) Reset() { *x = SubmitIntentRequest_SubmitActions{} if protoimpl.UnsafeEnabled { - mi := &file_transaction_v2_transaction_service_proto_msgTypes[65] + mi := &file_transaction_v2_transaction_service_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5932,7 +6033,7 @@ func (x *SubmitIntentRequest_SubmitActions) String() string { func (*SubmitIntentRequest_SubmitActions) ProtoMessage() {} func (x *SubmitIntentRequest_SubmitActions) ProtoReflect() protoreflect.Message { - mi := &file_transaction_v2_transaction_service_proto_msgTypes[65] + mi := &file_transaction_v2_transaction_service_proto_msgTypes[66] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6003,7 +6104,7 @@ type SubmitIntentRequest_SubmitSignatures struct { func (x *SubmitIntentRequest_SubmitSignatures) Reset() { *x = SubmitIntentRequest_SubmitSignatures{} if protoimpl.UnsafeEnabled { - mi := &file_transaction_v2_transaction_service_proto_msgTypes[66] + mi := &file_transaction_v2_transaction_service_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6016,7 +6117,7 @@ func (x *SubmitIntentRequest_SubmitSignatures) String() string { func (*SubmitIntentRequest_SubmitSignatures) ProtoMessage() {} func (x *SubmitIntentRequest_SubmitSignatures) ProtoReflect() protoreflect.Message { - mi := &file_transaction_v2_transaction_service_proto_msgTypes[66] + mi := &file_transaction_v2_transaction_service_proto_msgTypes[67] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6053,7 +6154,7 @@ type SubmitIntentResponse_ServerParameters struct { func (x *SubmitIntentResponse_ServerParameters) Reset() { *x = SubmitIntentResponse_ServerParameters{} if protoimpl.UnsafeEnabled { - mi := &file_transaction_v2_transaction_service_proto_msgTypes[67] + mi := &file_transaction_v2_transaction_service_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6066,7 +6167,7 @@ func (x *SubmitIntentResponse_ServerParameters) String() string { func (*SubmitIntentResponse_ServerParameters) ProtoMessage() {} func (x *SubmitIntentResponse_ServerParameters) ProtoReflect() protoreflect.Message { - mi := &file_transaction_v2_transaction_service_proto_msgTypes[67] + mi := &file_transaction_v2_transaction_service_proto_msgTypes[68] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6100,7 +6201,7 @@ type SubmitIntentResponse_Success struct { func (x *SubmitIntentResponse_Success) Reset() { *x = SubmitIntentResponse_Success{} if protoimpl.UnsafeEnabled { - mi := &file_transaction_v2_transaction_service_proto_msgTypes[68] + mi := &file_transaction_v2_transaction_service_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6113,7 +6214,7 @@ func (x *SubmitIntentResponse_Success) String() string { func (*SubmitIntentResponse_Success) ProtoMessage() {} func (x *SubmitIntentResponse_Success) ProtoReflect() protoreflect.Message { - mi := &file_transaction_v2_transaction_service_proto_msgTypes[68] + mi := &file_transaction_v2_transaction_service_proto_msgTypes[69] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6148,7 +6249,7 @@ type SubmitIntentResponse_Error struct { func (x *SubmitIntentResponse_Error) Reset() { *x = SubmitIntentResponse_Error{} if protoimpl.UnsafeEnabled { - mi := &file_transaction_v2_transaction_service_proto_msgTypes[69] + mi := &file_transaction_v2_transaction_service_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6161,7 +6262,7 @@ func (x *SubmitIntentResponse_Error) String() string { func (*SubmitIntentResponse_Error) ProtoMessage() {} func (x *SubmitIntentResponse_Error) ProtoReflect() protoreflect.Message { - mi := &file_transaction_v2_transaction_service_proto_msgTypes[69] + mi := &file_transaction_v2_transaction_service_proto_msgTypes[70] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6218,7 +6319,7 @@ type SwapRequest_Initiate struct { func (x *SwapRequest_Initiate) Reset() { *x = SwapRequest_Initiate{} if protoimpl.UnsafeEnabled { - mi := &file_transaction_v2_transaction_service_proto_msgTypes[73] + mi := &file_transaction_v2_transaction_service_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6231,7 +6332,7 @@ func (x *SwapRequest_Initiate) String() string { func (*SwapRequest_Initiate) ProtoMessage() {} func (x *SwapRequest_Initiate) ProtoReflect() protoreflect.Message { - mi := &file_transaction_v2_transaction_service_proto_msgTypes[73] + mi := &file_transaction_v2_transaction_service_proto_msgTypes[74] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6294,7 +6395,7 @@ type SwapRequest_SubmitSignature struct { func (x *SwapRequest_SubmitSignature) Reset() { *x = SwapRequest_SubmitSignature{} if protoimpl.UnsafeEnabled { - mi := &file_transaction_v2_transaction_service_proto_msgTypes[74] + mi := &file_transaction_v2_transaction_service_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6307,7 +6408,7 @@ func (x *SwapRequest_SubmitSignature) String() string { func (*SwapRequest_SubmitSignature) ProtoMessage() {} func (x *SwapRequest_SubmitSignature) ProtoReflect() protoreflect.Message { - mi := &file_transaction_v2_transaction_service_proto_msgTypes[74] + mi := &file_transaction_v2_transaction_service_proto_msgTypes[75] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6366,7 +6467,7 @@ type SwapResponse_ServerParameters struct { func (x *SwapResponse_ServerParameters) Reset() { *x = SwapResponse_ServerParameters{} if protoimpl.UnsafeEnabled { - mi := &file_transaction_v2_transaction_service_proto_msgTypes[75] + mi := &file_transaction_v2_transaction_service_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6379,7 +6480,7 @@ func (x *SwapResponse_ServerParameters) String() string { func (*SwapResponse_ServerParameters) ProtoMessage() {} func (x *SwapResponse_ServerParameters) ProtoReflect() protoreflect.Message { - mi := &file_transaction_v2_transaction_service_proto_msgTypes[75] + mi := &file_transaction_v2_transaction_service_proto_msgTypes[76] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6476,7 +6577,7 @@ type SwapResponse_Success struct { func (x *SwapResponse_Success) Reset() { *x = SwapResponse_Success{} if protoimpl.UnsafeEnabled { - mi := &file_transaction_v2_transaction_service_proto_msgTypes[76] + mi := &file_transaction_v2_transaction_service_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6489,7 +6590,7 @@ func (x *SwapResponse_Success) String() string { func (*SwapResponse_Success) ProtoMessage() {} func (x *SwapResponse_Success) ProtoReflect() protoreflect.Message { - mi := &file_transaction_v2_transaction_service_proto_msgTypes[76] + mi := &file_transaction_v2_transaction_service_proto_msgTypes[77] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6524,7 +6625,7 @@ type SwapResponse_Error struct { func (x *SwapResponse_Error) Reset() { *x = SwapResponse_Error{} if protoimpl.UnsafeEnabled { - mi := &file_transaction_v2_transaction_service_proto_msgTypes[77] + mi := &file_transaction_v2_transaction_service_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6537,7 +6638,7 @@ func (x *SwapResponse_Error) String() string { func (*SwapResponse_Error) ProtoMessage() {} func (x *SwapResponse_Error) ProtoReflect() protoreflect.Message { - mi := &file_transaction_v2_transaction_service_proto_msgTypes[77] + mi := &file_transaction_v2_transaction_service_proto_msgTypes[78] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6599,7 +6700,7 @@ type UpgradeableIntent_UpgradeablePrivateAction struct { func (x *UpgradeableIntent_UpgradeablePrivateAction) Reset() { *x = UpgradeableIntent_UpgradeablePrivateAction{} if protoimpl.UnsafeEnabled { - mi := &file_transaction_v2_transaction_service_proto_msgTypes[78] + mi := &file_transaction_v2_transaction_service_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6612,7 +6713,7 @@ func (x *UpgradeableIntent_UpgradeablePrivateAction) String() string { func (*UpgradeableIntent_UpgradeablePrivateAction) ProtoMessage() {} func (x *UpgradeableIntent_UpgradeablePrivateAction) ProtoReflect() protoreflect.Message { - mi := &file_transaction_v2_transaction_service_proto_msgTypes[78] + mi := &file_transaction_v2_transaction_service_proto_msgTypes[79] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7945,99 +8046,110 @@ var file_transaction_v2_transaction_service_proto_rawDesc = []byte{ 0x0f, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x24, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x57, 0x49, 0x54, 0x54, 0x45, 0x52, 0x10, - 0x01, 0x22, 0x2b, 0x0a, 0x06, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x12, 0x21, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x0b, 0xba, 0xe9, 0xc0, 0x03, - 0x06, 0x7a, 0x04, 0x10, 0x08, 0x18, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x2a, 0x41, - 0x0a, 0x0b, 0x41, 0x69, 0x72, 0x64, 0x72, 0x6f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, - 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x47, 0x49, - 0x56, 0x45, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x10, 0x01, 0x12, 0x11, - 0x0a, 0x0d, 0x47, 0x45, 0x54, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x5f, 0x4b, 0x49, 0x4e, 0x10, - 0x02, 0x32, 0xbb, 0x09, 0x0a, 0x0b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x67, 0x0a, 0x0c, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x6e, - 0x74, 0x12, 0x28, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x49, 0x6e, - 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x63, 0x6f, - 0x64, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, - 0x32, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x12, 0x72, 0x0a, 0x11, 0x47, 0x65, - 0x74, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, - 0x2d, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, + 0x01, 0x22, 0xb1, 0x01, 0x0a, 0x0c, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x55, 0x73, + 0x65, 0x72, 0x12, 0x52, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x72, 0x69, 0x65, 0x6e, + 0x64, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x82, 0x01, 0x02, 0x18, 0x01, 0x52, 0x08, 0x70, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x27, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xba, 0xe9, 0xc0, 0x03, 0x06, 0x72, + 0x04, 0x10, 0x01, 0x18, 0x0f, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, + 0x24, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0b, 0x0a, 0x07, 0x55, + 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x57, 0x49, 0x54, + 0x54, 0x45, 0x52, 0x10, 0x01, 0x22, 0x2b, 0x0a, 0x06, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x12, + 0x21, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x0b, + 0xba, 0xe9, 0xc0, 0x03, 0x06, 0x7a, 0x04, 0x10, 0x08, 0x18, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x2a, 0x41, 0x0a, 0x0b, 0x41, 0x69, 0x72, 0x64, 0x72, 0x6f, 0x70, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x12, + 0x0a, 0x0e, 0x47, 0x49, 0x56, 0x45, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x5f, 0x4b, 0x49, 0x4e, + 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x47, 0x45, 0x54, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x5f, + 0x4b, 0x49, 0x4e, 0x10, 0x02, 0x32, 0xbb, 0x09, 0x0a, 0x0b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x67, 0x0a, 0x0c, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x49, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x28, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x75, 0x62, 0x6d, + 0x69, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x29, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x12, 0x72, + 0x0a, 0x11, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x12, 0x2d, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x84, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, + 0x79, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x33, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x84, - 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x55, 0x70, 0x67, - 0x72, 0x61, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x33, 0x2e, 0x63, 0x6f, 0x64, - 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x32, - 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x55, 0x70, 0x67, 0x72, 0x61, - 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x34, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, - 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xb1, 0x01, 0x0a, 0x26, 0x47, 0x65, 0x74, 0x50, 0x72, 0x69, - 0x6f, 0x72, 0x69, 0x74, 0x69, 0x7a, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x46, - 0x6f, 0x72, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, - 0x12, 0x42, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, - 0x74, 0x69, 0x7a, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x50, - 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x43, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, + 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x55, + 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x69, + 0x76, 0x61, 0x63, 0x79, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xb1, 0x01, 0x0a, 0x26, 0x47, 0x65, + 0x74, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x7a, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x55, 0x70, 0x67, + 0x72, 0x61, 0x64, 0x65, 0x12, 0x42, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x7a, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x09, 0x47, 0x65, 0x74, - 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x25, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, - 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x43, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x47, + 0x65, 0x74, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x7a, 0x65, 0x64, 0x49, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x55, 0x70, + 0x67, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, + 0x09, 0x47, 0x65, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x25, 0x2e, 0x63, 0x6f, 0x64, + 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x32, + 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x26, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x72, 0x0a, 0x11, 0x47, 0x65, 0x74, + 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x2d, + 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x48, + 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x72, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x50, 0x61, 0x79, 0x6d, - 0x65, 0x6e, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x2d, 0x2e, 0x63, 0x6f, 0x64, + 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x48, 0x69, + 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7b, 0x0a, + 0x14, 0x43, 0x61, 0x6e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x54, 0x6f, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x30, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x61, 0x6e, 0x57, + 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x54, 0x6f, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x61, + 0x6e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x54, 0x6f, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x07, 0x41, 0x69, + 0x72, 0x64, 0x72, 0x6f, 0x70, 0x12, 0x23, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x69, 0x72, 0x64, + 0x72, 0x6f, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x32, - 0x2e, 0x47, 0x65, 0x74, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, - 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x63, 0x6f, 0x64, 0x65, - 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, - 0x47, 0x65, 0x74, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, - 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7b, 0x0a, 0x14, 0x43, 0x61, 0x6e, - 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x54, 0x6f, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x30, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x61, 0x6e, 0x57, 0x69, 0x74, 0x68, 0x64, - 0x72, 0x61, 0x77, 0x54, 0x6f, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x61, 0x6e, 0x57, 0x69, 0x74, - 0x68, 0x64, 0x72, 0x61, 0x77, 0x54, 0x6f, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x07, 0x41, 0x69, 0x72, 0x64, 0x72, 0x6f, - 0x70, 0x12, 0x23, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x69, 0x72, 0x64, 0x72, 0x6f, 0x70, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x69, 0x72, - 0x64, 0x72, 0x6f, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x04, - 0x53, 0x77, 0x61, 0x70, 0x12, 0x20, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x77, 0x61, 0x70, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x77, 0x61, - 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x12, 0x9f, 0x01, - 0x0a, 0x20, 0x44, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x65, 0x46, 0x69, 0x61, 0x74, 0x4f, 0x6e, 0x72, - 0x61, 0x6d, 0x70, 0x50, 0x75, 0x72, 0x63, 0x68, 0x61, 0x73, 0x65, 0x41, 0x74, 0x74, 0x65, 0x6d, - 0x70, 0x74, 0x12, 0x3c, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x65, - 0x46, 0x69, 0x61, 0x74, 0x4f, 0x6e, 0x72, 0x61, 0x6d, 0x70, 0x50, 0x75, 0x72, 0x63, 0x68, 0x61, - 0x73, 0x65, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x3d, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x65, 0x46, 0x69, - 0x61, 0x74, 0x4f, 0x6e, 0x72, 0x61, 0x6d, 0x70, 0x50, 0x75, 0x72, 0x63, 0x68, 0x61, 0x73, 0x65, - 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, - 0x87, 0x01, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x69, 0x6e, 0x63, 0x2e, - 0x67, 0x65, 0x6e, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x76, 0x32, 0x5a, 0x52, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, - 0x6f, 0x64, 0x65, 0x2d, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x63, 0x6f, 0x64, - 0x65, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x67, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2f, 0x67, 0x6f, 0x2f, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x32, 0x3b, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0xa2, 0x02, 0x10, 0x41, 0x50, 0x42, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0x2e, 0x41, 0x69, 0x72, 0x64, 0x72, 0x6f, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x4f, 0x0a, 0x04, 0x53, 0x77, 0x61, 0x70, 0x12, 0x20, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x53, + 0x77, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x6f, 0x64, + 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x32, + 0x2e, 0x53, 0x77, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, + 0x01, 0x12, 0x9f, 0x01, 0x0a, 0x20, 0x44, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x65, 0x46, 0x69, 0x61, + 0x74, 0x4f, 0x6e, 0x72, 0x61, 0x6d, 0x70, 0x50, 0x75, 0x72, 0x63, 0x68, 0x61, 0x73, 0x65, 0x41, + 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x12, 0x3c, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x63, + 0x6c, 0x61, 0x72, 0x65, 0x46, 0x69, 0x61, 0x74, 0x4f, 0x6e, 0x72, 0x61, 0x6d, 0x70, 0x50, 0x75, + 0x72, 0x63, 0x68, 0x61, 0x73, 0x65, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x63, 0x6c, 0x61, + 0x72, 0x65, 0x46, 0x69, 0x61, 0x74, 0x4f, 0x6e, 0x72, 0x61, 0x6d, 0x70, 0x50, 0x75, 0x72, 0x63, + 0x68, 0x61, 0x73, 0x65, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x42, 0x87, 0x01, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x64, 0x65, + 0x69, 0x6e, 0x63, 0x2e, 0x67, 0x65, 0x6e, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x5a, 0x52, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x64, 0x65, 0x2d, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, + 0x2f, 0x63, 0x6f, 0x64, 0x65, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2d, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2f, 0x67, 0x6f, 0x2f, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x32, 0x3b, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0xa2, 0x02, 0x10, 0x41, 0x50, 0x42, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -8052,8 +8164,8 @@ func file_transaction_v2_transaction_service_proto_rawDescGZIP() []byte { return file_transaction_v2_transaction_service_proto_rawDescData } -var file_transaction_v2_transaction_service_proto_enumTypes = make([]protoimpl.EnumInfo, 19) -var file_transaction_v2_transaction_service_proto_msgTypes = make([]protoimpl.MessageInfo, 79) +var file_transaction_v2_transaction_service_proto_enumTypes = make([]protoimpl.EnumInfo, 20) +var file_transaction_v2_transaction_service_proto_msgTypes = make([]protoimpl.MessageInfo, 80) var file_transaction_v2_transaction_service_proto_goTypes = []interface{}{ (AirdropType)(0), // 0: code.transaction.v2.AirdropType (SubmitIntentResponse_Success_Code)(0), // 1: code.transaction.v2.SubmitIntentResponse.Success.Code @@ -8074,299 +8186,302 @@ var file_transaction_v2_transaction_service_proto_goTypes = []interface{}{ (DeniedErrorDetails_Code)(0), // 16: code.transaction.v2.DeniedErrorDetails.Code (PaymentHistoryItem_PaymentType)(0), // 17: code.transaction.v2.PaymentHistoryItem.PaymentType (TippedUser_Platform)(0), // 18: code.transaction.v2.TippedUser.Platform - (*SubmitIntentRequest)(nil), // 19: code.transaction.v2.SubmitIntentRequest - (*SubmitIntentResponse)(nil), // 20: code.transaction.v2.SubmitIntentResponse - (*GetIntentMetadataRequest)(nil), // 21: code.transaction.v2.GetIntentMetadataRequest - (*GetIntentMetadataResponse)(nil), // 22: code.transaction.v2.GetIntentMetadataResponse - (*GetPrivacyUpgradeStatusRequest)(nil), // 23: code.transaction.v2.GetPrivacyUpgradeStatusRequest - (*GetPrivacyUpgradeStatusResponse)(nil), // 24: code.transaction.v2.GetPrivacyUpgradeStatusResponse - (*GetPrioritizedIntentsForPrivacyUpgradeRequest)(nil), // 25: code.transaction.v2.GetPrioritizedIntentsForPrivacyUpgradeRequest - (*GetPrioritizedIntentsForPrivacyUpgradeResponse)(nil), // 26: code.transaction.v2.GetPrioritizedIntentsForPrivacyUpgradeResponse - (*GetLimitsRequest)(nil), // 27: code.transaction.v2.GetLimitsRequest - (*GetLimitsResponse)(nil), // 28: code.transaction.v2.GetLimitsResponse - (*GetPaymentHistoryRequest)(nil), // 29: code.transaction.v2.GetPaymentHistoryRequest - (*GetPaymentHistoryResponse)(nil), // 30: code.transaction.v2.GetPaymentHistoryResponse - (*CanWithdrawToAccountRequest)(nil), // 31: code.transaction.v2.CanWithdrawToAccountRequest - (*CanWithdrawToAccountResponse)(nil), // 32: code.transaction.v2.CanWithdrawToAccountResponse - (*AirdropRequest)(nil), // 33: code.transaction.v2.AirdropRequest - (*AirdropResponse)(nil), // 34: code.transaction.v2.AirdropResponse - (*SwapRequest)(nil), // 35: code.transaction.v2.SwapRequest - (*SwapResponse)(nil), // 36: code.transaction.v2.SwapResponse - (*DeclareFiatOnrampPurchaseAttemptRequest)(nil), // 37: code.transaction.v2.DeclareFiatOnrampPurchaseAttemptRequest - (*DeclareFiatOnrampPurchaseAttemptResponse)(nil), // 38: code.transaction.v2.DeclareFiatOnrampPurchaseAttemptResponse - (*Metadata)(nil), // 39: code.transaction.v2.Metadata - (*OpenAccountsMetadata)(nil), // 40: code.transaction.v2.OpenAccountsMetadata - (*SendPrivatePaymentMetadata)(nil), // 41: code.transaction.v2.SendPrivatePaymentMetadata - (*SendPublicPaymentMetadata)(nil), // 42: code.transaction.v2.SendPublicPaymentMetadata - (*ReceivePaymentsPrivatelyMetadata)(nil), // 43: code.transaction.v2.ReceivePaymentsPrivatelyMetadata - (*ReceivePaymentsPubliclyMetadata)(nil), // 44: code.transaction.v2.ReceivePaymentsPubliclyMetadata - (*UpgradePrivacyMetadata)(nil), // 45: code.transaction.v2.UpgradePrivacyMetadata - (*MigrateToPrivacy2022Metadata)(nil), // 46: code.transaction.v2.MigrateToPrivacy2022Metadata - (*EstablishRelationshipMetadata)(nil), // 47: code.transaction.v2.EstablishRelationshipMetadata - (*Action)(nil), // 48: code.transaction.v2.Action - (*OpenAccountAction)(nil), // 49: code.transaction.v2.OpenAccountAction - (*CloseEmptyAccountAction)(nil), // 50: code.transaction.v2.CloseEmptyAccountAction - (*CloseDormantAccountAction)(nil), // 51: code.transaction.v2.CloseDormantAccountAction - (*NoPrivacyTransferAction)(nil), // 52: code.transaction.v2.NoPrivacyTransferAction - (*NoPrivacyWithdrawAction)(nil), // 53: code.transaction.v2.NoPrivacyWithdrawAction - (*TemporaryPrivacyTransferAction)(nil), // 54: code.transaction.v2.TemporaryPrivacyTransferAction - (*TemporaryPrivacyExchangeAction)(nil), // 55: code.transaction.v2.TemporaryPrivacyExchangeAction - (*PermanentPrivacyUpgradeAction)(nil), // 56: code.transaction.v2.PermanentPrivacyUpgradeAction - (*FeePaymentAction)(nil), // 57: code.transaction.v2.FeePaymentAction - (*ServerParameter)(nil), // 58: code.transaction.v2.ServerParameter - (*NoncedTransactionMetadata)(nil), // 59: code.transaction.v2.NoncedTransactionMetadata - (*OpenAccountServerParameter)(nil), // 60: code.transaction.v2.OpenAccountServerParameter - (*CloseEmptyAccountServerParameter)(nil), // 61: code.transaction.v2.CloseEmptyAccountServerParameter - (*CloseDormantAccountServerParameter)(nil), // 62: code.transaction.v2.CloseDormantAccountServerParameter - (*NoPrivacyTransferServerParameter)(nil), // 63: code.transaction.v2.NoPrivacyTransferServerParameter - (*NoPrivacyWithdrawServerParameter)(nil), // 64: code.transaction.v2.NoPrivacyWithdrawServerParameter - (*TemporaryPrivacyTransferServerParameter)(nil), // 65: code.transaction.v2.TemporaryPrivacyTransferServerParameter - (*TemporaryPrivacyExchangeServerParameter)(nil), // 66: code.transaction.v2.TemporaryPrivacyExchangeServerParameter - (*PermanentPrivacyUpgradeServerParameter)(nil), // 67: code.transaction.v2.PermanentPrivacyUpgradeServerParameter - (*FeePaymentServerParameter)(nil), // 68: code.transaction.v2.FeePaymentServerParameter - (*ErrorDetails)(nil), // 69: code.transaction.v2.ErrorDetails - (*ReasonStringErrorDetails)(nil), // 70: code.transaction.v2.ReasonStringErrorDetails - (*InvalidSignatureErrorDetails)(nil), // 71: code.transaction.v2.InvalidSignatureErrorDetails - (*DeniedErrorDetails)(nil), // 72: code.transaction.v2.DeniedErrorDetails - (*UpgradeableIntent)(nil), // 73: code.transaction.v2.UpgradeableIntent - (*PaymentHistoryItem)(nil), // 74: code.transaction.v2.PaymentHistoryItem - (*ExchangeData)(nil), // 75: code.transaction.v2.ExchangeData - (*ExchangeDataWithoutRate)(nil), // 76: code.transaction.v2.ExchangeDataWithoutRate - (*AdditionalFeePayment)(nil), // 77: code.transaction.v2.AdditionalFeePayment - (*SendLimit)(nil), // 78: code.transaction.v2.SendLimit - (*DepositLimit)(nil), // 79: code.transaction.v2.DepositLimit - (*MicroPaymentLimit)(nil), // 80: code.transaction.v2.MicroPaymentLimit - (*BuyModuleLimit)(nil), // 81: code.transaction.v2.BuyModuleLimit - (*TippedUser)(nil), // 82: code.transaction.v2.TippedUser - (*Cursor)(nil), // 83: code.transaction.v2.Cursor - (*SubmitIntentRequest_SubmitActions)(nil), // 84: code.transaction.v2.SubmitIntentRequest.SubmitActions - (*SubmitIntentRequest_SubmitSignatures)(nil), // 85: code.transaction.v2.SubmitIntentRequest.SubmitSignatures - (*SubmitIntentResponse_ServerParameters)(nil), // 86: code.transaction.v2.SubmitIntentResponse.ServerParameters - (*SubmitIntentResponse_Success)(nil), // 87: code.transaction.v2.SubmitIntentResponse.Success - (*SubmitIntentResponse_Error)(nil), // 88: code.transaction.v2.SubmitIntentResponse.Error - nil, // 89: code.transaction.v2.GetLimitsResponse.SendLimitsByCurrencyEntry - nil, // 90: code.transaction.v2.GetLimitsResponse.MicroPaymentLimitsByCurrencyEntry - nil, // 91: code.transaction.v2.GetLimitsResponse.BuyModuleLimitsByCurrencyEntry - (*SwapRequest_Initiate)(nil), // 92: code.transaction.v2.SwapRequest.Initiate - (*SwapRequest_SubmitSignature)(nil), // 93: code.transaction.v2.SwapRequest.SubmitSignature - (*SwapResponse_ServerParameters)(nil), // 94: code.transaction.v2.SwapResponse.ServerParameters - (*SwapResponse_Success)(nil), // 95: code.transaction.v2.SwapResponse.Success - (*SwapResponse_Error)(nil), // 96: code.transaction.v2.SwapResponse.Error - (*UpgradeableIntent_UpgradeablePrivateAction)(nil), // 97: code.transaction.v2.UpgradeableIntent.UpgradeablePrivateAction - (*v1.IntentId)(nil), // 98: code.common.v1.IntentId - (*v1.SolanaAccountId)(nil), // 99: code.common.v1.SolanaAccountId - (*v1.Signature)(nil), // 100: code.common.v1.Signature - (*timestamppb.Timestamp)(nil), // 101: google.protobuf.Timestamp - (*v1.UUID)(nil), // 102: code.common.v1.UUID - (*v1.ChatId)(nil), // 103: code.common.v1.ChatId - (*v1.Relationship)(nil), // 104: code.common.v1.Relationship - (v1.AccountType)(0), // 105: code.common.v1.AccountType - (*v1.Blockhash)(nil), // 106: code.common.v1.Blockhash - (*v1.Hash)(nil), // 107: code.common.v1.Hash - (*v1.Transaction)(nil), // 108: code.common.v1.Transaction - (*v1.DeviceToken)(nil), // 109: code.common.v1.DeviceToken - (*v1.InstructionAccount)(nil), // 110: code.common.v1.InstructionAccount + (FriendedUser_Platform)(0), // 19: code.transaction.v2.FriendedUser.Platform + (*SubmitIntentRequest)(nil), // 20: code.transaction.v2.SubmitIntentRequest + (*SubmitIntentResponse)(nil), // 21: code.transaction.v2.SubmitIntentResponse + (*GetIntentMetadataRequest)(nil), // 22: code.transaction.v2.GetIntentMetadataRequest + (*GetIntentMetadataResponse)(nil), // 23: code.transaction.v2.GetIntentMetadataResponse + (*GetPrivacyUpgradeStatusRequest)(nil), // 24: code.transaction.v2.GetPrivacyUpgradeStatusRequest + (*GetPrivacyUpgradeStatusResponse)(nil), // 25: code.transaction.v2.GetPrivacyUpgradeStatusResponse + (*GetPrioritizedIntentsForPrivacyUpgradeRequest)(nil), // 26: code.transaction.v2.GetPrioritizedIntentsForPrivacyUpgradeRequest + (*GetPrioritizedIntentsForPrivacyUpgradeResponse)(nil), // 27: code.transaction.v2.GetPrioritizedIntentsForPrivacyUpgradeResponse + (*GetLimitsRequest)(nil), // 28: code.transaction.v2.GetLimitsRequest + (*GetLimitsResponse)(nil), // 29: code.transaction.v2.GetLimitsResponse + (*GetPaymentHistoryRequest)(nil), // 30: code.transaction.v2.GetPaymentHistoryRequest + (*GetPaymentHistoryResponse)(nil), // 31: code.transaction.v2.GetPaymentHistoryResponse + (*CanWithdrawToAccountRequest)(nil), // 32: code.transaction.v2.CanWithdrawToAccountRequest + (*CanWithdrawToAccountResponse)(nil), // 33: code.transaction.v2.CanWithdrawToAccountResponse + (*AirdropRequest)(nil), // 34: code.transaction.v2.AirdropRequest + (*AirdropResponse)(nil), // 35: code.transaction.v2.AirdropResponse + (*SwapRequest)(nil), // 36: code.transaction.v2.SwapRequest + (*SwapResponse)(nil), // 37: code.transaction.v2.SwapResponse + (*DeclareFiatOnrampPurchaseAttemptRequest)(nil), // 38: code.transaction.v2.DeclareFiatOnrampPurchaseAttemptRequest + (*DeclareFiatOnrampPurchaseAttemptResponse)(nil), // 39: code.transaction.v2.DeclareFiatOnrampPurchaseAttemptResponse + (*Metadata)(nil), // 40: code.transaction.v2.Metadata + (*OpenAccountsMetadata)(nil), // 41: code.transaction.v2.OpenAccountsMetadata + (*SendPrivatePaymentMetadata)(nil), // 42: code.transaction.v2.SendPrivatePaymentMetadata + (*SendPublicPaymentMetadata)(nil), // 43: code.transaction.v2.SendPublicPaymentMetadata + (*ReceivePaymentsPrivatelyMetadata)(nil), // 44: code.transaction.v2.ReceivePaymentsPrivatelyMetadata + (*ReceivePaymentsPubliclyMetadata)(nil), // 45: code.transaction.v2.ReceivePaymentsPubliclyMetadata + (*UpgradePrivacyMetadata)(nil), // 46: code.transaction.v2.UpgradePrivacyMetadata + (*MigrateToPrivacy2022Metadata)(nil), // 47: code.transaction.v2.MigrateToPrivacy2022Metadata + (*EstablishRelationshipMetadata)(nil), // 48: code.transaction.v2.EstablishRelationshipMetadata + (*Action)(nil), // 49: code.transaction.v2.Action + (*OpenAccountAction)(nil), // 50: code.transaction.v2.OpenAccountAction + (*CloseEmptyAccountAction)(nil), // 51: code.transaction.v2.CloseEmptyAccountAction + (*CloseDormantAccountAction)(nil), // 52: code.transaction.v2.CloseDormantAccountAction + (*NoPrivacyTransferAction)(nil), // 53: code.transaction.v2.NoPrivacyTransferAction + (*NoPrivacyWithdrawAction)(nil), // 54: code.transaction.v2.NoPrivacyWithdrawAction + (*TemporaryPrivacyTransferAction)(nil), // 55: code.transaction.v2.TemporaryPrivacyTransferAction + (*TemporaryPrivacyExchangeAction)(nil), // 56: code.transaction.v2.TemporaryPrivacyExchangeAction + (*PermanentPrivacyUpgradeAction)(nil), // 57: code.transaction.v2.PermanentPrivacyUpgradeAction + (*FeePaymentAction)(nil), // 58: code.transaction.v2.FeePaymentAction + (*ServerParameter)(nil), // 59: code.transaction.v2.ServerParameter + (*NoncedTransactionMetadata)(nil), // 60: code.transaction.v2.NoncedTransactionMetadata + (*OpenAccountServerParameter)(nil), // 61: code.transaction.v2.OpenAccountServerParameter + (*CloseEmptyAccountServerParameter)(nil), // 62: code.transaction.v2.CloseEmptyAccountServerParameter + (*CloseDormantAccountServerParameter)(nil), // 63: code.transaction.v2.CloseDormantAccountServerParameter + (*NoPrivacyTransferServerParameter)(nil), // 64: code.transaction.v2.NoPrivacyTransferServerParameter + (*NoPrivacyWithdrawServerParameter)(nil), // 65: code.transaction.v2.NoPrivacyWithdrawServerParameter + (*TemporaryPrivacyTransferServerParameter)(nil), // 66: code.transaction.v2.TemporaryPrivacyTransferServerParameter + (*TemporaryPrivacyExchangeServerParameter)(nil), // 67: code.transaction.v2.TemporaryPrivacyExchangeServerParameter + (*PermanentPrivacyUpgradeServerParameter)(nil), // 68: code.transaction.v2.PermanentPrivacyUpgradeServerParameter + (*FeePaymentServerParameter)(nil), // 69: code.transaction.v2.FeePaymentServerParameter + (*ErrorDetails)(nil), // 70: code.transaction.v2.ErrorDetails + (*ReasonStringErrorDetails)(nil), // 71: code.transaction.v2.ReasonStringErrorDetails + (*InvalidSignatureErrorDetails)(nil), // 72: code.transaction.v2.InvalidSignatureErrorDetails + (*DeniedErrorDetails)(nil), // 73: code.transaction.v2.DeniedErrorDetails + (*UpgradeableIntent)(nil), // 74: code.transaction.v2.UpgradeableIntent + (*PaymentHistoryItem)(nil), // 75: code.transaction.v2.PaymentHistoryItem + (*ExchangeData)(nil), // 76: code.transaction.v2.ExchangeData + (*ExchangeDataWithoutRate)(nil), // 77: code.transaction.v2.ExchangeDataWithoutRate + (*AdditionalFeePayment)(nil), // 78: code.transaction.v2.AdditionalFeePayment + (*SendLimit)(nil), // 79: code.transaction.v2.SendLimit + (*DepositLimit)(nil), // 80: code.transaction.v2.DepositLimit + (*MicroPaymentLimit)(nil), // 81: code.transaction.v2.MicroPaymentLimit + (*BuyModuleLimit)(nil), // 82: code.transaction.v2.BuyModuleLimit + (*TippedUser)(nil), // 83: code.transaction.v2.TippedUser + (*FriendedUser)(nil), // 84: code.transaction.v2.FriendedUser + (*Cursor)(nil), // 85: code.transaction.v2.Cursor + (*SubmitIntentRequest_SubmitActions)(nil), // 86: code.transaction.v2.SubmitIntentRequest.SubmitActions + (*SubmitIntentRequest_SubmitSignatures)(nil), // 87: code.transaction.v2.SubmitIntentRequest.SubmitSignatures + (*SubmitIntentResponse_ServerParameters)(nil), // 88: code.transaction.v2.SubmitIntentResponse.ServerParameters + (*SubmitIntentResponse_Success)(nil), // 89: code.transaction.v2.SubmitIntentResponse.Success + (*SubmitIntentResponse_Error)(nil), // 90: code.transaction.v2.SubmitIntentResponse.Error + nil, // 91: code.transaction.v2.GetLimitsResponse.SendLimitsByCurrencyEntry + nil, // 92: code.transaction.v2.GetLimitsResponse.MicroPaymentLimitsByCurrencyEntry + nil, // 93: code.transaction.v2.GetLimitsResponse.BuyModuleLimitsByCurrencyEntry + (*SwapRequest_Initiate)(nil), // 94: code.transaction.v2.SwapRequest.Initiate + (*SwapRequest_SubmitSignature)(nil), // 95: code.transaction.v2.SwapRequest.SubmitSignature + (*SwapResponse_ServerParameters)(nil), // 96: code.transaction.v2.SwapResponse.ServerParameters + (*SwapResponse_Success)(nil), // 97: code.transaction.v2.SwapResponse.Success + (*SwapResponse_Error)(nil), // 98: code.transaction.v2.SwapResponse.Error + (*UpgradeableIntent_UpgradeablePrivateAction)(nil), // 99: code.transaction.v2.UpgradeableIntent.UpgradeablePrivateAction + (*v1.IntentId)(nil), // 100: code.common.v1.IntentId + (*v1.SolanaAccountId)(nil), // 101: code.common.v1.SolanaAccountId + (*v1.Signature)(nil), // 102: code.common.v1.Signature + (*timestamppb.Timestamp)(nil), // 103: google.protobuf.Timestamp + (*v1.UUID)(nil), // 104: code.common.v1.UUID + (*v1.ChatId)(nil), // 105: code.common.v1.ChatId + (*v1.Relationship)(nil), // 106: code.common.v1.Relationship + (v1.AccountType)(0), // 107: code.common.v1.AccountType + (*v1.Blockhash)(nil), // 108: code.common.v1.Blockhash + (*v1.Hash)(nil), // 109: code.common.v1.Hash + (*v1.Transaction)(nil), // 110: code.common.v1.Transaction + (*v1.DeviceToken)(nil), // 111: code.common.v1.DeviceToken + (*v1.InstructionAccount)(nil), // 112: code.common.v1.InstructionAccount } var file_transaction_v2_transaction_service_proto_depIdxs = []int32{ - 84, // 0: code.transaction.v2.SubmitIntentRequest.submit_actions:type_name -> code.transaction.v2.SubmitIntentRequest.SubmitActions - 85, // 1: code.transaction.v2.SubmitIntentRequest.submit_signatures:type_name -> code.transaction.v2.SubmitIntentRequest.SubmitSignatures - 86, // 2: code.transaction.v2.SubmitIntentResponse.server_parameters:type_name -> code.transaction.v2.SubmitIntentResponse.ServerParameters - 87, // 3: code.transaction.v2.SubmitIntentResponse.success:type_name -> code.transaction.v2.SubmitIntentResponse.Success - 88, // 4: code.transaction.v2.SubmitIntentResponse.error:type_name -> code.transaction.v2.SubmitIntentResponse.Error - 98, // 5: code.transaction.v2.GetIntentMetadataRequest.intent_id:type_name -> code.common.v1.IntentId - 99, // 6: code.transaction.v2.GetIntentMetadataRequest.owner:type_name -> code.common.v1.SolanaAccountId - 100, // 7: code.transaction.v2.GetIntentMetadataRequest.signature:type_name -> code.common.v1.Signature + 86, // 0: code.transaction.v2.SubmitIntentRequest.submit_actions:type_name -> code.transaction.v2.SubmitIntentRequest.SubmitActions + 87, // 1: code.transaction.v2.SubmitIntentRequest.submit_signatures:type_name -> code.transaction.v2.SubmitIntentRequest.SubmitSignatures + 88, // 2: code.transaction.v2.SubmitIntentResponse.server_parameters:type_name -> code.transaction.v2.SubmitIntentResponse.ServerParameters + 89, // 3: code.transaction.v2.SubmitIntentResponse.success:type_name -> code.transaction.v2.SubmitIntentResponse.Success + 90, // 4: code.transaction.v2.SubmitIntentResponse.error:type_name -> code.transaction.v2.SubmitIntentResponse.Error + 100, // 5: code.transaction.v2.GetIntentMetadataRequest.intent_id:type_name -> code.common.v1.IntentId + 101, // 6: code.transaction.v2.GetIntentMetadataRequest.owner:type_name -> code.common.v1.SolanaAccountId + 102, // 7: code.transaction.v2.GetIntentMetadataRequest.signature:type_name -> code.common.v1.Signature 3, // 8: code.transaction.v2.GetIntentMetadataResponse.result:type_name -> code.transaction.v2.GetIntentMetadataResponse.Result - 39, // 9: code.transaction.v2.GetIntentMetadataResponse.metadata:type_name -> code.transaction.v2.Metadata - 98, // 10: code.transaction.v2.GetPrivacyUpgradeStatusRequest.intent_id:type_name -> code.common.v1.IntentId + 40, // 9: code.transaction.v2.GetIntentMetadataResponse.metadata:type_name -> code.transaction.v2.Metadata + 100, // 10: code.transaction.v2.GetPrivacyUpgradeStatusRequest.intent_id:type_name -> code.common.v1.IntentId 4, // 11: code.transaction.v2.GetPrivacyUpgradeStatusResponse.result:type_name -> code.transaction.v2.GetPrivacyUpgradeStatusResponse.Result 5, // 12: code.transaction.v2.GetPrivacyUpgradeStatusResponse.status:type_name -> code.transaction.v2.GetPrivacyUpgradeStatusResponse.Status - 99, // 13: code.transaction.v2.GetPrioritizedIntentsForPrivacyUpgradeRequest.owner:type_name -> code.common.v1.SolanaAccountId - 100, // 14: code.transaction.v2.GetPrioritizedIntentsForPrivacyUpgradeRequest.signature:type_name -> code.common.v1.Signature + 101, // 13: code.transaction.v2.GetPrioritizedIntentsForPrivacyUpgradeRequest.owner:type_name -> code.common.v1.SolanaAccountId + 102, // 14: code.transaction.v2.GetPrioritizedIntentsForPrivacyUpgradeRequest.signature:type_name -> code.common.v1.Signature 6, // 15: code.transaction.v2.GetPrioritizedIntentsForPrivacyUpgradeResponse.result:type_name -> code.transaction.v2.GetPrioritizedIntentsForPrivacyUpgradeResponse.Result - 73, // 16: code.transaction.v2.GetPrioritizedIntentsForPrivacyUpgradeResponse.items:type_name -> code.transaction.v2.UpgradeableIntent - 99, // 17: code.transaction.v2.GetLimitsRequest.owner:type_name -> code.common.v1.SolanaAccountId - 100, // 18: code.transaction.v2.GetLimitsRequest.signature:type_name -> code.common.v1.Signature - 101, // 19: code.transaction.v2.GetLimitsRequest.consumed_since:type_name -> google.protobuf.Timestamp + 74, // 16: code.transaction.v2.GetPrioritizedIntentsForPrivacyUpgradeResponse.items:type_name -> code.transaction.v2.UpgradeableIntent + 101, // 17: code.transaction.v2.GetLimitsRequest.owner:type_name -> code.common.v1.SolanaAccountId + 102, // 18: code.transaction.v2.GetLimitsRequest.signature:type_name -> code.common.v1.Signature + 103, // 19: code.transaction.v2.GetLimitsRequest.consumed_since:type_name -> google.protobuf.Timestamp 7, // 20: code.transaction.v2.GetLimitsResponse.result:type_name -> code.transaction.v2.GetLimitsResponse.Result - 89, // 21: code.transaction.v2.GetLimitsResponse.send_limits_by_currency:type_name -> code.transaction.v2.GetLimitsResponse.SendLimitsByCurrencyEntry - 79, // 22: code.transaction.v2.GetLimitsResponse.deposit_limit:type_name -> code.transaction.v2.DepositLimit - 90, // 23: code.transaction.v2.GetLimitsResponse.micro_payment_limits_by_currency:type_name -> code.transaction.v2.GetLimitsResponse.MicroPaymentLimitsByCurrencyEntry - 91, // 24: code.transaction.v2.GetLimitsResponse.buy_module_limits_by_currency:type_name -> code.transaction.v2.GetLimitsResponse.BuyModuleLimitsByCurrencyEntry - 99, // 25: code.transaction.v2.GetPaymentHistoryRequest.owner:type_name -> code.common.v1.SolanaAccountId - 83, // 26: code.transaction.v2.GetPaymentHistoryRequest.cursor:type_name -> code.transaction.v2.Cursor + 91, // 21: code.transaction.v2.GetLimitsResponse.send_limits_by_currency:type_name -> code.transaction.v2.GetLimitsResponse.SendLimitsByCurrencyEntry + 80, // 22: code.transaction.v2.GetLimitsResponse.deposit_limit:type_name -> code.transaction.v2.DepositLimit + 92, // 23: code.transaction.v2.GetLimitsResponse.micro_payment_limits_by_currency:type_name -> code.transaction.v2.GetLimitsResponse.MicroPaymentLimitsByCurrencyEntry + 93, // 24: code.transaction.v2.GetLimitsResponse.buy_module_limits_by_currency:type_name -> code.transaction.v2.GetLimitsResponse.BuyModuleLimitsByCurrencyEntry + 101, // 25: code.transaction.v2.GetPaymentHistoryRequest.owner:type_name -> code.common.v1.SolanaAccountId + 85, // 26: code.transaction.v2.GetPaymentHistoryRequest.cursor:type_name -> code.transaction.v2.Cursor 8, // 27: code.transaction.v2.GetPaymentHistoryRequest.direction:type_name -> code.transaction.v2.GetPaymentHistoryRequest.Direction - 100, // 28: code.transaction.v2.GetPaymentHistoryRequest.signature:type_name -> code.common.v1.Signature + 102, // 28: code.transaction.v2.GetPaymentHistoryRequest.signature:type_name -> code.common.v1.Signature 9, // 29: code.transaction.v2.GetPaymentHistoryResponse.result:type_name -> code.transaction.v2.GetPaymentHistoryResponse.Result - 74, // 30: code.transaction.v2.GetPaymentHistoryResponse.items:type_name -> code.transaction.v2.PaymentHistoryItem - 99, // 31: code.transaction.v2.CanWithdrawToAccountRequest.account:type_name -> code.common.v1.SolanaAccountId + 75, // 30: code.transaction.v2.GetPaymentHistoryResponse.items:type_name -> code.transaction.v2.PaymentHistoryItem + 101, // 31: code.transaction.v2.CanWithdrawToAccountRequest.account:type_name -> code.common.v1.SolanaAccountId 10, // 32: code.transaction.v2.CanWithdrawToAccountResponse.account_type:type_name -> code.transaction.v2.CanWithdrawToAccountResponse.AccountType 0, // 33: code.transaction.v2.AirdropRequest.airdrop_type:type_name -> code.transaction.v2.AirdropType - 99, // 34: code.transaction.v2.AirdropRequest.owner:type_name -> code.common.v1.SolanaAccountId - 100, // 35: code.transaction.v2.AirdropRequest.signature:type_name -> code.common.v1.Signature + 101, // 34: code.transaction.v2.AirdropRequest.owner:type_name -> code.common.v1.SolanaAccountId + 102, // 35: code.transaction.v2.AirdropRequest.signature:type_name -> code.common.v1.Signature 11, // 36: code.transaction.v2.AirdropResponse.result:type_name -> code.transaction.v2.AirdropResponse.Result - 75, // 37: code.transaction.v2.AirdropResponse.exchange_data:type_name -> code.transaction.v2.ExchangeData - 92, // 38: code.transaction.v2.SwapRequest.initiate:type_name -> code.transaction.v2.SwapRequest.Initiate - 93, // 39: code.transaction.v2.SwapRequest.submit_signature:type_name -> code.transaction.v2.SwapRequest.SubmitSignature - 94, // 40: code.transaction.v2.SwapResponse.server_parameters:type_name -> code.transaction.v2.SwapResponse.ServerParameters - 95, // 41: code.transaction.v2.SwapResponse.success:type_name -> code.transaction.v2.SwapResponse.Success - 96, // 42: code.transaction.v2.SwapResponse.error:type_name -> code.transaction.v2.SwapResponse.Error - 99, // 43: code.transaction.v2.DeclareFiatOnrampPurchaseAttemptRequest.owner:type_name -> code.common.v1.SolanaAccountId - 76, // 44: code.transaction.v2.DeclareFiatOnrampPurchaseAttemptRequest.purchase_amount:type_name -> code.transaction.v2.ExchangeDataWithoutRate - 102, // 45: code.transaction.v2.DeclareFiatOnrampPurchaseAttemptRequest.nonce:type_name -> code.common.v1.UUID - 100, // 46: code.transaction.v2.DeclareFiatOnrampPurchaseAttemptRequest.signature:type_name -> code.common.v1.Signature + 76, // 37: code.transaction.v2.AirdropResponse.exchange_data:type_name -> code.transaction.v2.ExchangeData + 94, // 38: code.transaction.v2.SwapRequest.initiate:type_name -> code.transaction.v2.SwapRequest.Initiate + 95, // 39: code.transaction.v2.SwapRequest.submit_signature:type_name -> code.transaction.v2.SwapRequest.SubmitSignature + 96, // 40: code.transaction.v2.SwapResponse.server_parameters:type_name -> code.transaction.v2.SwapResponse.ServerParameters + 97, // 41: code.transaction.v2.SwapResponse.success:type_name -> code.transaction.v2.SwapResponse.Success + 98, // 42: code.transaction.v2.SwapResponse.error:type_name -> code.transaction.v2.SwapResponse.Error + 101, // 43: code.transaction.v2.DeclareFiatOnrampPurchaseAttemptRequest.owner:type_name -> code.common.v1.SolanaAccountId + 77, // 44: code.transaction.v2.DeclareFiatOnrampPurchaseAttemptRequest.purchase_amount:type_name -> code.transaction.v2.ExchangeDataWithoutRate + 104, // 45: code.transaction.v2.DeclareFiatOnrampPurchaseAttemptRequest.nonce:type_name -> code.common.v1.UUID + 102, // 46: code.transaction.v2.DeclareFiatOnrampPurchaseAttemptRequest.signature:type_name -> code.common.v1.Signature 14, // 47: code.transaction.v2.DeclareFiatOnrampPurchaseAttemptResponse.result:type_name -> code.transaction.v2.DeclareFiatOnrampPurchaseAttemptResponse.Result - 40, // 48: code.transaction.v2.Metadata.open_accounts:type_name -> code.transaction.v2.OpenAccountsMetadata - 41, // 49: code.transaction.v2.Metadata.send_private_payment:type_name -> code.transaction.v2.SendPrivatePaymentMetadata - 43, // 50: code.transaction.v2.Metadata.receive_payments_privately:type_name -> code.transaction.v2.ReceivePaymentsPrivatelyMetadata - 45, // 51: code.transaction.v2.Metadata.upgrade_privacy:type_name -> code.transaction.v2.UpgradePrivacyMetadata - 46, // 52: code.transaction.v2.Metadata.migrate_to_privacy_2022:type_name -> code.transaction.v2.MigrateToPrivacy2022Metadata - 42, // 53: code.transaction.v2.Metadata.send_public_payment:type_name -> code.transaction.v2.SendPublicPaymentMetadata - 44, // 54: code.transaction.v2.Metadata.receive_payments_publicly:type_name -> code.transaction.v2.ReceivePaymentsPubliclyMetadata - 47, // 55: code.transaction.v2.Metadata.establish_relationship:type_name -> code.transaction.v2.EstablishRelationshipMetadata - 99, // 56: code.transaction.v2.SendPrivatePaymentMetadata.destination:type_name -> code.common.v1.SolanaAccountId - 75, // 57: code.transaction.v2.SendPrivatePaymentMetadata.exchange_data:type_name -> code.transaction.v2.ExchangeData - 82, // 58: code.transaction.v2.SendPrivatePaymentMetadata.tipped_user:type_name -> code.transaction.v2.TippedUser - 103, // 59: code.transaction.v2.SendPrivatePaymentMetadata.chat_id:type_name -> code.common.v1.ChatId - 99, // 60: code.transaction.v2.SendPublicPaymentMetadata.source:type_name -> code.common.v1.SolanaAccountId - 99, // 61: code.transaction.v2.SendPublicPaymentMetadata.destination:type_name -> code.common.v1.SolanaAccountId - 75, // 62: code.transaction.v2.SendPublicPaymentMetadata.exchange_data:type_name -> code.transaction.v2.ExchangeData - 99, // 63: code.transaction.v2.ReceivePaymentsPrivatelyMetadata.source:type_name -> code.common.v1.SolanaAccountId - 99, // 64: code.transaction.v2.ReceivePaymentsPubliclyMetadata.source:type_name -> code.common.v1.SolanaAccountId - 75, // 65: code.transaction.v2.ReceivePaymentsPubliclyMetadata.exchange_data:type_name -> code.transaction.v2.ExchangeData - 104, // 66: code.transaction.v2.EstablishRelationshipMetadata.relationship:type_name -> code.common.v1.Relationship - 49, // 67: code.transaction.v2.Action.open_account:type_name -> code.transaction.v2.OpenAccountAction - 50, // 68: code.transaction.v2.Action.close_empty_account:type_name -> code.transaction.v2.CloseEmptyAccountAction - 51, // 69: code.transaction.v2.Action.close_dormant_account:type_name -> code.transaction.v2.CloseDormantAccountAction - 52, // 70: code.transaction.v2.Action.no_privacy_transfer:type_name -> code.transaction.v2.NoPrivacyTransferAction - 53, // 71: code.transaction.v2.Action.no_privacy_withdraw:type_name -> code.transaction.v2.NoPrivacyWithdrawAction - 54, // 72: code.transaction.v2.Action.temporary_privacy_transfer:type_name -> code.transaction.v2.TemporaryPrivacyTransferAction - 55, // 73: code.transaction.v2.Action.temporary_privacy_exchange:type_name -> code.transaction.v2.TemporaryPrivacyExchangeAction - 56, // 74: code.transaction.v2.Action.permanent_privacy_upgrade:type_name -> code.transaction.v2.PermanentPrivacyUpgradeAction - 57, // 75: code.transaction.v2.Action.fee_payment:type_name -> code.transaction.v2.FeePaymentAction - 105, // 76: code.transaction.v2.OpenAccountAction.account_type:type_name -> code.common.v1.AccountType - 99, // 77: code.transaction.v2.OpenAccountAction.owner:type_name -> code.common.v1.SolanaAccountId - 99, // 78: code.transaction.v2.OpenAccountAction.authority:type_name -> code.common.v1.SolanaAccountId - 99, // 79: code.transaction.v2.OpenAccountAction.token:type_name -> code.common.v1.SolanaAccountId - 100, // 80: code.transaction.v2.OpenAccountAction.authority_signature:type_name -> code.common.v1.Signature - 105, // 81: code.transaction.v2.CloseEmptyAccountAction.account_type:type_name -> code.common.v1.AccountType - 99, // 82: code.transaction.v2.CloseEmptyAccountAction.authority:type_name -> code.common.v1.SolanaAccountId - 99, // 83: code.transaction.v2.CloseEmptyAccountAction.token:type_name -> code.common.v1.SolanaAccountId - 105, // 84: code.transaction.v2.CloseDormantAccountAction.account_type:type_name -> code.common.v1.AccountType - 99, // 85: code.transaction.v2.CloseDormantAccountAction.authority:type_name -> code.common.v1.SolanaAccountId - 99, // 86: code.transaction.v2.CloseDormantAccountAction.token:type_name -> code.common.v1.SolanaAccountId - 99, // 87: code.transaction.v2.CloseDormantAccountAction.destination:type_name -> code.common.v1.SolanaAccountId - 99, // 88: code.transaction.v2.NoPrivacyTransferAction.authority:type_name -> code.common.v1.SolanaAccountId - 99, // 89: code.transaction.v2.NoPrivacyTransferAction.source:type_name -> code.common.v1.SolanaAccountId - 99, // 90: code.transaction.v2.NoPrivacyTransferAction.destination:type_name -> code.common.v1.SolanaAccountId - 99, // 91: code.transaction.v2.NoPrivacyWithdrawAction.authority:type_name -> code.common.v1.SolanaAccountId - 99, // 92: code.transaction.v2.NoPrivacyWithdrawAction.source:type_name -> code.common.v1.SolanaAccountId - 99, // 93: code.transaction.v2.NoPrivacyWithdrawAction.destination:type_name -> code.common.v1.SolanaAccountId - 99, // 94: code.transaction.v2.TemporaryPrivacyTransferAction.authority:type_name -> code.common.v1.SolanaAccountId - 99, // 95: code.transaction.v2.TemporaryPrivacyTransferAction.source:type_name -> code.common.v1.SolanaAccountId - 99, // 96: code.transaction.v2.TemporaryPrivacyTransferAction.destination:type_name -> code.common.v1.SolanaAccountId - 99, // 97: code.transaction.v2.TemporaryPrivacyExchangeAction.authority:type_name -> code.common.v1.SolanaAccountId - 99, // 98: code.transaction.v2.TemporaryPrivacyExchangeAction.source:type_name -> code.common.v1.SolanaAccountId - 99, // 99: code.transaction.v2.TemporaryPrivacyExchangeAction.destination:type_name -> code.common.v1.SolanaAccountId + 41, // 48: code.transaction.v2.Metadata.open_accounts:type_name -> code.transaction.v2.OpenAccountsMetadata + 42, // 49: code.transaction.v2.Metadata.send_private_payment:type_name -> code.transaction.v2.SendPrivatePaymentMetadata + 44, // 50: code.transaction.v2.Metadata.receive_payments_privately:type_name -> code.transaction.v2.ReceivePaymentsPrivatelyMetadata + 46, // 51: code.transaction.v2.Metadata.upgrade_privacy:type_name -> code.transaction.v2.UpgradePrivacyMetadata + 47, // 52: code.transaction.v2.Metadata.migrate_to_privacy_2022:type_name -> code.transaction.v2.MigrateToPrivacy2022Metadata + 43, // 53: code.transaction.v2.Metadata.send_public_payment:type_name -> code.transaction.v2.SendPublicPaymentMetadata + 45, // 54: code.transaction.v2.Metadata.receive_payments_publicly:type_name -> code.transaction.v2.ReceivePaymentsPubliclyMetadata + 48, // 55: code.transaction.v2.Metadata.establish_relationship:type_name -> code.transaction.v2.EstablishRelationshipMetadata + 101, // 56: code.transaction.v2.SendPrivatePaymentMetadata.destination:type_name -> code.common.v1.SolanaAccountId + 76, // 57: code.transaction.v2.SendPrivatePaymentMetadata.exchange_data:type_name -> code.transaction.v2.ExchangeData + 83, // 58: code.transaction.v2.SendPrivatePaymentMetadata.tipped_user:type_name -> code.transaction.v2.TippedUser + 105, // 59: code.transaction.v2.SendPrivatePaymentMetadata.chat_id:type_name -> code.common.v1.ChatId + 101, // 60: code.transaction.v2.SendPublicPaymentMetadata.source:type_name -> code.common.v1.SolanaAccountId + 101, // 61: code.transaction.v2.SendPublicPaymentMetadata.destination:type_name -> code.common.v1.SolanaAccountId + 76, // 62: code.transaction.v2.SendPublicPaymentMetadata.exchange_data:type_name -> code.transaction.v2.ExchangeData + 101, // 63: code.transaction.v2.ReceivePaymentsPrivatelyMetadata.source:type_name -> code.common.v1.SolanaAccountId + 101, // 64: code.transaction.v2.ReceivePaymentsPubliclyMetadata.source:type_name -> code.common.v1.SolanaAccountId + 76, // 65: code.transaction.v2.ReceivePaymentsPubliclyMetadata.exchange_data:type_name -> code.transaction.v2.ExchangeData + 106, // 66: code.transaction.v2.EstablishRelationshipMetadata.relationship:type_name -> code.common.v1.Relationship + 50, // 67: code.transaction.v2.Action.open_account:type_name -> code.transaction.v2.OpenAccountAction + 51, // 68: code.transaction.v2.Action.close_empty_account:type_name -> code.transaction.v2.CloseEmptyAccountAction + 52, // 69: code.transaction.v2.Action.close_dormant_account:type_name -> code.transaction.v2.CloseDormantAccountAction + 53, // 70: code.transaction.v2.Action.no_privacy_transfer:type_name -> code.transaction.v2.NoPrivacyTransferAction + 54, // 71: code.transaction.v2.Action.no_privacy_withdraw:type_name -> code.transaction.v2.NoPrivacyWithdrawAction + 55, // 72: code.transaction.v2.Action.temporary_privacy_transfer:type_name -> code.transaction.v2.TemporaryPrivacyTransferAction + 56, // 73: code.transaction.v2.Action.temporary_privacy_exchange:type_name -> code.transaction.v2.TemporaryPrivacyExchangeAction + 57, // 74: code.transaction.v2.Action.permanent_privacy_upgrade:type_name -> code.transaction.v2.PermanentPrivacyUpgradeAction + 58, // 75: code.transaction.v2.Action.fee_payment:type_name -> code.transaction.v2.FeePaymentAction + 107, // 76: code.transaction.v2.OpenAccountAction.account_type:type_name -> code.common.v1.AccountType + 101, // 77: code.transaction.v2.OpenAccountAction.owner:type_name -> code.common.v1.SolanaAccountId + 101, // 78: code.transaction.v2.OpenAccountAction.authority:type_name -> code.common.v1.SolanaAccountId + 101, // 79: code.transaction.v2.OpenAccountAction.token:type_name -> code.common.v1.SolanaAccountId + 102, // 80: code.transaction.v2.OpenAccountAction.authority_signature:type_name -> code.common.v1.Signature + 107, // 81: code.transaction.v2.CloseEmptyAccountAction.account_type:type_name -> code.common.v1.AccountType + 101, // 82: code.transaction.v2.CloseEmptyAccountAction.authority:type_name -> code.common.v1.SolanaAccountId + 101, // 83: code.transaction.v2.CloseEmptyAccountAction.token:type_name -> code.common.v1.SolanaAccountId + 107, // 84: code.transaction.v2.CloseDormantAccountAction.account_type:type_name -> code.common.v1.AccountType + 101, // 85: code.transaction.v2.CloseDormantAccountAction.authority:type_name -> code.common.v1.SolanaAccountId + 101, // 86: code.transaction.v2.CloseDormantAccountAction.token:type_name -> code.common.v1.SolanaAccountId + 101, // 87: code.transaction.v2.CloseDormantAccountAction.destination:type_name -> code.common.v1.SolanaAccountId + 101, // 88: code.transaction.v2.NoPrivacyTransferAction.authority:type_name -> code.common.v1.SolanaAccountId + 101, // 89: code.transaction.v2.NoPrivacyTransferAction.source:type_name -> code.common.v1.SolanaAccountId + 101, // 90: code.transaction.v2.NoPrivacyTransferAction.destination:type_name -> code.common.v1.SolanaAccountId + 101, // 91: code.transaction.v2.NoPrivacyWithdrawAction.authority:type_name -> code.common.v1.SolanaAccountId + 101, // 92: code.transaction.v2.NoPrivacyWithdrawAction.source:type_name -> code.common.v1.SolanaAccountId + 101, // 93: code.transaction.v2.NoPrivacyWithdrawAction.destination:type_name -> code.common.v1.SolanaAccountId + 101, // 94: code.transaction.v2.TemporaryPrivacyTransferAction.authority:type_name -> code.common.v1.SolanaAccountId + 101, // 95: code.transaction.v2.TemporaryPrivacyTransferAction.source:type_name -> code.common.v1.SolanaAccountId + 101, // 96: code.transaction.v2.TemporaryPrivacyTransferAction.destination:type_name -> code.common.v1.SolanaAccountId + 101, // 97: code.transaction.v2.TemporaryPrivacyExchangeAction.authority:type_name -> code.common.v1.SolanaAccountId + 101, // 98: code.transaction.v2.TemporaryPrivacyExchangeAction.source:type_name -> code.common.v1.SolanaAccountId + 101, // 99: code.transaction.v2.TemporaryPrivacyExchangeAction.destination:type_name -> code.common.v1.SolanaAccountId 15, // 100: code.transaction.v2.FeePaymentAction.type:type_name -> code.transaction.v2.FeePaymentAction.FeeType - 99, // 101: code.transaction.v2.FeePaymentAction.authority:type_name -> code.common.v1.SolanaAccountId - 99, // 102: code.transaction.v2.FeePaymentAction.source:type_name -> code.common.v1.SolanaAccountId - 99, // 103: code.transaction.v2.FeePaymentAction.destination:type_name -> code.common.v1.SolanaAccountId - 59, // 104: code.transaction.v2.ServerParameter.nonces:type_name -> code.transaction.v2.NoncedTransactionMetadata - 60, // 105: code.transaction.v2.ServerParameter.open_account:type_name -> code.transaction.v2.OpenAccountServerParameter - 61, // 106: code.transaction.v2.ServerParameter.close_empty_account:type_name -> code.transaction.v2.CloseEmptyAccountServerParameter - 62, // 107: code.transaction.v2.ServerParameter.close_dormant_account:type_name -> code.transaction.v2.CloseDormantAccountServerParameter - 63, // 108: code.transaction.v2.ServerParameter.no_privacy_transfer:type_name -> code.transaction.v2.NoPrivacyTransferServerParameter - 64, // 109: code.transaction.v2.ServerParameter.no_privacy_withdraw:type_name -> code.transaction.v2.NoPrivacyWithdrawServerParameter - 65, // 110: code.transaction.v2.ServerParameter.temporary_privacy_transfer:type_name -> code.transaction.v2.TemporaryPrivacyTransferServerParameter - 66, // 111: code.transaction.v2.ServerParameter.temporary_privacy_exchange:type_name -> code.transaction.v2.TemporaryPrivacyExchangeServerParameter - 67, // 112: code.transaction.v2.ServerParameter.permanent_privacy_upgrade:type_name -> code.transaction.v2.PermanentPrivacyUpgradeServerParameter - 68, // 113: code.transaction.v2.ServerParameter.fee_payment:type_name -> code.transaction.v2.FeePaymentServerParameter - 99, // 114: code.transaction.v2.NoncedTransactionMetadata.nonce:type_name -> code.common.v1.SolanaAccountId - 106, // 115: code.transaction.v2.NoncedTransactionMetadata.blockhash:type_name -> code.common.v1.Blockhash - 99, // 116: code.transaction.v2.TemporaryPrivacyTransferServerParameter.treasury:type_name -> code.common.v1.SolanaAccountId - 107, // 117: code.transaction.v2.TemporaryPrivacyTransferServerParameter.recent_root:type_name -> code.common.v1.Hash - 99, // 118: code.transaction.v2.TemporaryPrivacyExchangeServerParameter.treasury:type_name -> code.common.v1.SolanaAccountId - 107, // 119: code.transaction.v2.TemporaryPrivacyExchangeServerParameter.recent_root:type_name -> code.common.v1.Hash - 99, // 120: code.transaction.v2.PermanentPrivacyUpgradeServerParameter.new_commitment:type_name -> code.common.v1.SolanaAccountId - 107, // 121: code.transaction.v2.PermanentPrivacyUpgradeServerParameter.new_commitment_transcript:type_name -> code.common.v1.Hash - 99, // 122: code.transaction.v2.PermanentPrivacyUpgradeServerParameter.new_commitment_destination:type_name -> code.common.v1.SolanaAccountId - 107, // 123: code.transaction.v2.PermanentPrivacyUpgradeServerParameter.merkle_root:type_name -> code.common.v1.Hash - 107, // 124: code.transaction.v2.PermanentPrivacyUpgradeServerParameter.merkle_proof:type_name -> code.common.v1.Hash - 99, // 125: code.transaction.v2.FeePaymentServerParameter.code_destination:type_name -> code.common.v1.SolanaAccountId - 70, // 126: code.transaction.v2.ErrorDetails.reason_string:type_name -> code.transaction.v2.ReasonStringErrorDetails - 71, // 127: code.transaction.v2.ErrorDetails.invalid_signature:type_name -> code.transaction.v2.InvalidSignatureErrorDetails - 72, // 128: code.transaction.v2.ErrorDetails.denied:type_name -> code.transaction.v2.DeniedErrorDetails - 108, // 129: code.transaction.v2.InvalidSignatureErrorDetails.expected_transaction:type_name -> code.common.v1.Transaction - 100, // 130: code.transaction.v2.InvalidSignatureErrorDetails.provided_signature:type_name -> code.common.v1.Signature + 101, // 101: code.transaction.v2.FeePaymentAction.authority:type_name -> code.common.v1.SolanaAccountId + 101, // 102: code.transaction.v2.FeePaymentAction.source:type_name -> code.common.v1.SolanaAccountId + 101, // 103: code.transaction.v2.FeePaymentAction.destination:type_name -> code.common.v1.SolanaAccountId + 60, // 104: code.transaction.v2.ServerParameter.nonces:type_name -> code.transaction.v2.NoncedTransactionMetadata + 61, // 105: code.transaction.v2.ServerParameter.open_account:type_name -> code.transaction.v2.OpenAccountServerParameter + 62, // 106: code.transaction.v2.ServerParameter.close_empty_account:type_name -> code.transaction.v2.CloseEmptyAccountServerParameter + 63, // 107: code.transaction.v2.ServerParameter.close_dormant_account:type_name -> code.transaction.v2.CloseDormantAccountServerParameter + 64, // 108: code.transaction.v2.ServerParameter.no_privacy_transfer:type_name -> code.transaction.v2.NoPrivacyTransferServerParameter + 65, // 109: code.transaction.v2.ServerParameter.no_privacy_withdraw:type_name -> code.transaction.v2.NoPrivacyWithdrawServerParameter + 66, // 110: code.transaction.v2.ServerParameter.temporary_privacy_transfer:type_name -> code.transaction.v2.TemporaryPrivacyTransferServerParameter + 67, // 111: code.transaction.v2.ServerParameter.temporary_privacy_exchange:type_name -> code.transaction.v2.TemporaryPrivacyExchangeServerParameter + 68, // 112: code.transaction.v2.ServerParameter.permanent_privacy_upgrade:type_name -> code.transaction.v2.PermanentPrivacyUpgradeServerParameter + 69, // 113: code.transaction.v2.ServerParameter.fee_payment:type_name -> code.transaction.v2.FeePaymentServerParameter + 101, // 114: code.transaction.v2.NoncedTransactionMetadata.nonce:type_name -> code.common.v1.SolanaAccountId + 108, // 115: code.transaction.v2.NoncedTransactionMetadata.blockhash:type_name -> code.common.v1.Blockhash + 101, // 116: code.transaction.v2.TemporaryPrivacyTransferServerParameter.treasury:type_name -> code.common.v1.SolanaAccountId + 109, // 117: code.transaction.v2.TemporaryPrivacyTransferServerParameter.recent_root:type_name -> code.common.v1.Hash + 101, // 118: code.transaction.v2.TemporaryPrivacyExchangeServerParameter.treasury:type_name -> code.common.v1.SolanaAccountId + 109, // 119: code.transaction.v2.TemporaryPrivacyExchangeServerParameter.recent_root:type_name -> code.common.v1.Hash + 101, // 120: code.transaction.v2.PermanentPrivacyUpgradeServerParameter.new_commitment:type_name -> code.common.v1.SolanaAccountId + 109, // 121: code.transaction.v2.PermanentPrivacyUpgradeServerParameter.new_commitment_transcript:type_name -> code.common.v1.Hash + 101, // 122: code.transaction.v2.PermanentPrivacyUpgradeServerParameter.new_commitment_destination:type_name -> code.common.v1.SolanaAccountId + 109, // 123: code.transaction.v2.PermanentPrivacyUpgradeServerParameter.merkle_root:type_name -> code.common.v1.Hash + 109, // 124: code.transaction.v2.PermanentPrivacyUpgradeServerParameter.merkle_proof:type_name -> code.common.v1.Hash + 101, // 125: code.transaction.v2.FeePaymentServerParameter.code_destination:type_name -> code.common.v1.SolanaAccountId + 71, // 126: code.transaction.v2.ErrorDetails.reason_string:type_name -> code.transaction.v2.ReasonStringErrorDetails + 72, // 127: code.transaction.v2.ErrorDetails.invalid_signature:type_name -> code.transaction.v2.InvalidSignatureErrorDetails + 73, // 128: code.transaction.v2.ErrorDetails.denied:type_name -> code.transaction.v2.DeniedErrorDetails + 110, // 129: code.transaction.v2.InvalidSignatureErrorDetails.expected_transaction:type_name -> code.common.v1.Transaction + 102, // 130: code.transaction.v2.InvalidSignatureErrorDetails.provided_signature:type_name -> code.common.v1.Signature 16, // 131: code.transaction.v2.DeniedErrorDetails.code:type_name -> code.transaction.v2.DeniedErrorDetails.Code - 98, // 132: code.transaction.v2.UpgradeableIntent.id:type_name -> code.common.v1.IntentId - 97, // 133: code.transaction.v2.UpgradeableIntent.actions:type_name -> code.transaction.v2.UpgradeableIntent.UpgradeablePrivateAction - 83, // 134: code.transaction.v2.PaymentHistoryItem.cursor:type_name -> code.transaction.v2.Cursor - 75, // 135: code.transaction.v2.PaymentHistoryItem.exchange_data:type_name -> code.transaction.v2.ExchangeData + 100, // 132: code.transaction.v2.UpgradeableIntent.id:type_name -> code.common.v1.IntentId + 99, // 133: code.transaction.v2.UpgradeableIntent.actions:type_name -> code.transaction.v2.UpgradeableIntent.UpgradeablePrivateAction + 85, // 134: code.transaction.v2.PaymentHistoryItem.cursor:type_name -> code.transaction.v2.Cursor + 76, // 135: code.transaction.v2.PaymentHistoryItem.exchange_data:type_name -> code.transaction.v2.ExchangeData 17, // 136: code.transaction.v2.PaymentHistoryItem.payment_type:type_name -> code.transaction.v2.PaymentHistoryItem.PaymentType - 101, // 137: code.transaction.v2.PaymentHistoryItem.timestamp:type_name -> google.protobuf.Timestamp + 103, // 137: code.transaction.v2.PaymentHistoryItem.timestamp:type_name -> google.protobuf.Timestamp 0, // 138: code.transaction.v2.PaymentHistoryItem.airdrop_type:type_name -> code.transaction.v2.AirdropType - 98, // 139: code.transaction.v2.PaymentHistoryItem.intent_id:type_name -> code.common.v1.IntentId - 99, // 140: code.transaction.v2.AdditionalFeePayment.destination:type_name -> code.common.v1.SolanaAccountId + 100, // 139: code.transaction.v2.PaymentHistoryItem.intent_id:type_name -> code.common.v1.IntentId + 101, // 140: code.transaction.v2.AdditionalFeePayment.destination:type_name -> code.common.v1.SolanaAccountId 18, // 141: code.transaction.v2.TippedUser.platform:type_name -> code.transaction.v2.TippedUser.Platform - 98, // 142: code.transaction.v2.SubmitIntentRequest.SubmitActions.id:type_name -> code.common.v1.IntentId - 99, // 143: code.transaction.v2.SubmitIntentRequest.SubmitActions.owner:type_name -> code.common.v1.SolanaAccountId - 39, // 144: code.transaction.v2.SubmitIntentRequest.SubmitActions.metadata:type_name -> code.transaction.v2.Metadata - 48, // 145: code.transaction.v2.SubmitIntentRequest.SubmitActions.actions:type_name -> code.transaction.v2.Action - 100, // 146: code.transaction.v2.SubmitIntentRequest.SubmitActions.signature:type_name -> code.common.v1.Signature - 109, // 147: code.transaction.v2.SubmitIntentRequest.SubmitActions.device_token:type_name -> code.common.v1.DeviceToken - 100, // 148: code.transaction.v2.SubmitIntentRequest.SubmitSignatures.signatures:type_name -> code.common.v1.Signature - 58, // 149: code.transaction.v2.SubmitIntentResponse.ServerParameters.server_parameters:type_name -> code.transaction.v2.ServerParameter - 1, // 150: code.transaction.v2.SubmitIntentResponse.Success.code:type_name -> code.transaction.v2.SubmitIntentResponse.Success.Code - 2, // 151: code.transaction.v2.SubmitIntentResponse.Error.code:type_name -> code.transaction.v2.SubmitIntentResponse.Error.Code - 69, // 152: code.transaction.v2.SubmitIntentResponse.Error.error_details:type_name -> code.transaction.v2.ErrorDetails - 78, // 153: code.transaction.v2.GetLimitsResponse.SendLimitsByCurrencyEntry.value:type_name -> code.transaction.v2.SendLimit - 80, // 154: code.transaction.v2.GetLimitsResponse.MicroPaymentLimitsByCurrencyEntry.value:type_name -> code.transaction.v2.MicroPaymentLimit - 81, // 155: code.transaction.v2.GetLimitsResponse.BuyModuleLimitsByCurrencyEntry.value:type_name -> code.transaction.v2.BuyModuleLimit - 99, // 156: code.transaction.v2.SwapRequest.Initiate.owner:type_name -> code.common.v1.SolanaAccountId - 99, // 157: code.transaction.v2.SwapRequest.Initiate.swap_authority:type_name -> code.common.v1.SolanaAccountId - 100, // 158: code.transaction.v2.SwapRequest.Initiate.signature:type_name -> code.common.v1.Signature - 100, // 159: code.transaction.v2.SwapRequest.SubmitSignature.signature:type_name -> code.common.v1.Signature - 99, // 160: code.transaction.v2.SwapResponse.ServerParameters.payer:type_name -> code.common.v1.SolanaAccountId - 106, // 161: code.transaction.v2.SwapResponse.ServerParameters.recent_blockhash:type_name -> code.common.v1.Blockhash - 99, // 162: code.transaction.v2.SwapResponse.ServerParameters.swap_program:type_name -> code.common.v1.SolanaAccountId - 110, // 163: code.transaction.v2.SwapResponse.ServerParameters.swap_ixn_accounts:type_name -> code.common.v1.InstructionAccount - 99, // 164: code.transaction.v2.SwapResponse.ServerParameters.nonce:type_name -> code.common.v1.SolanaAccountId - 12, // 165: code.transaction.v2.SwapResponse.Success.code:type_name -> code.transaction.v2.SwapResponse.Success.Code - 13, // 166: code.transaction.v2.SwapResponse.Error.code:type_name -> code.transaction.v2.SwapResponse.Error.Code - 69, // 167: code.transaction.v2.SwapResponse.Error.error_details:type_name -> code.transaction.v2.ErrorDetails - 108, // 168: code.transaction.v2.UpgradeableIntent.UpgradeablePrivateAction.transaction_blob:type_name -> code.common.v1.Transaction - 100, // 169: code.transaction.v2.UpgradeableIntent.UpgradeablePrivateAction.client_signature:type_name -> code.common.v1.Signature - 105, // 170: code.transaction.v2.UpgradeableIntent.UpgradeablePrivateAction.source_account_type:type_name -> code.common.v1.AccountType - 99, // 171: code.transaction.v2.UpgradeableIntent.UpgradeablePrivateAction.original_destination:type_name -> code.common.v1.SolanaAccountId - 99, // 172: code.transaction.v2.UpgradeableIntent.UpgradeablePrivateAction.treasury:type_name -> code.common.v1.SolanaAccountId - 107, // 173: code.transaction.v2.UpgradeableIntent.UpgradeablePrivateAction.recent_root:type_name -> code.common.v1.Hash - 19, // 174: code.transaction.v2.Transaction.SubmitIntent:input_type -> code.transaction.v2.SubmitIntentRequest - 21, // 175: code.transaction.v2.Transaction.GetIntentMetadata:input_type -> code.transaction.v2.GetIntentMetadataRequest - 23, // 176: code.transaction.v2.Transaction.GetPrivacyUpgradeStatus:input_type -> code.transaction.v2.GetPrivacyUpgradeStatusRequest - 25, // 177: code.transaction.v2.Transaction.GetPrioritizedIntentsForPrivacyUpgrade:input_type -> code.transaction.v2.GetPrioritizedIntentsForPrivacyUpgradeRequest - 27, // 178: code.transaction.v2.Transaction.GetLimits:input_type -> code.transaction.v2.GetLimitsRequest - 29, // 179: code.transaction.v2.Transaction.GetPaymentHistory:input_type -> code.transaction.v2.GetPaymentHistoryRequest - 31, // 180: code.transaction.v2.Transaction.CanWithdrawToAccount:input_type -> code.transaction.v2.CanWithdrawToAccountRequest - 33, // 181: code.transaction.v2.Transaction.Airdrop:input_type -> code.transaction.v2.AirdropRequest - 35, // 182: code.transaction.v2.Transaction.Swap:input_type -> code.transaction.v2.SwapRequest - 37, // 183: code.transaction.v2.Transaction.DeclareFiatOnrampPurchaseAttempt:input_type -> code.transaction.v2.DeclareFiatOnrampPurchaseAttemptRequest - 20, // 184: code.transaction.v2.Transaction.SubmitIntent:output_type -> code.transaction.v2.SubmitIntentResponse - 22, // 185: code.transaction.v2.Transaction.GetIntentMetadata:output_type -> code.transaction.v2.GetIntentMetadataResponse - 24, // 186: code.transaction.v2.Transaction.GetPrivacyUpgradeStatus:output_type -> code.transaction.v2.GetPrivacyUpgradeStatusResponse - 26, // 187: code.transaction.v2.Transaction.GetPrioritizedIntentsForPrivacyUpgrade:output_type -> code.transaction.v2.GetPrioritizedIntentsForPrivacyUpgradeResponse - 28, // 188: code.transaction.v2.Transaction.GetLimits:output_type -> code.transaction.v2.GetLimitsResponse - 30, // 189: code.transaction.v2.Transaction.GetPaymentHistory:output_type -> code.transaction.v2.GetPaymentHistoryResponse - 32, // 190: code.transaction.v2.Transaction.CanWithdrawToAccount:output_type -> code.transaction.v2.CanWithdrawToAccountResponse - 34, // 191: code.transaction.v2.Transaction.Airdrop:output_type -> code.transaction.v2.AirdropResponse - 36, // 192: code.transaction.v2.Transaction.Swap:output_type -> code.transaction.v2.SwapResponse - 38, // 193: code.transaction.v2.Transaction.DeclareFiatOnrampPurchaseAttempt:output_type -> code.transaction.v2.DeclareFiatOnrampPurchaseAttemptResponse - 184, // [184:194] is the sub-list for method output_type - 174, // [174:184] is the sub-list for method input_type - 174, // [174:174] is the sub-list for extension type_name - 174, // [174:174] is the sub-list for extension extendee - 0, // [0:174] is the sub-list for field type_name + 19, // 142: code.transaction.v2.FriendedUser.platform:type_name -> code.transaction.v2.FriendedUser.Platform + 100, // 143: code.transaction.v2.SubmitIntentRequest.SubmitActions.id:type_name -> code.common.v1.IntentId + 101, // 144: code.transaction.v2.SubmitIntentRequest.SubmitActions.owner:type_name -> code.common.v1.SolanaAccountId + 40, // 145: code.transaction.v2.SubmitIntentRequest.SubmitActions.metadata:type_name -> code.transaction.v2.Metadata + 49, // 146: code.transaction.v2.SubmitIntentRequest.SubmitActions.actions:type_name -> code.transaction.v2.Action + 102, // 147: code.transaction.v2.SubmitIntentRequest.SubmitActions.signature:type_name -> code.common.v1.Signature + 111, // 148: code.transaction.v2.SubmitIntentRequest.SubmitActions.device_token:type_name -> code.common.v1.DeviceToken + 102, // 149: code.transaction.v2.SubmitIntentRequest.SubmitSignatures.signatures:type_name -> code.common.v1.Signature + 59, // 150: code.transaction.v2.SubmitIntentResponse.ServerParameters.server_parameters:type_name -> code.transaction.v2.ServerParameter + 1, // 151: code.transaction.v2.SubmitIntentResponse.Success.code:type_name -> code.transaction.v2.SubmitIntentResponse.Success.Code + 2, // 152: code.transaction.v2.SubmitIntentResponse.Error.code:type_name -> code.transaction.v2.SubmitIntentResponse.Error.Code + 70, // 153: code.transaction.v2.SubmitIntentResponse.Error.error_details:type_name -> code.transaction.v2.ErrorDetails + 79, // 154: code.transaction.v2.GetLimitsResponse.SendLimitsByCurrencyEntry.value:type_name -> code.transaction.v2.SendLimit + 81, // 155: code.transaction.v2.GetLimitsResponse.MicroPaymentLimitsByCurrencyEntry.value:type_name -> code.transaction.v2.MicroPaymentLimit + 82, // 156: code.transaction.v2.GetLimitsResponse.BuyModuleLimitsByCurrencyEntry.value:type_name -> code.transaction.v2.BuyModuleLimit + 101, // 157: code.transaction.v2.SwapRequest.Initiate.owner:type_name -> code.common.v1.SolanaAccountId + 101, // 158: code.transaction.v2.SwapRequest.Initiate.swap_authority:type_name -> code.common.v1.SolanaAccountId + 102, // 159: code.transaction.v2.SwapRequest.Initiate.signature:type_name -> code.common.v1.Signature + 102, // 160: code.transaction.v2.SwapRequest.SubmitSignature.signature:type_name -> code.common.v1.Signature + 101, // 161: code.transaction.v2.SwapResponse.ServerParameters.payer:type_name -> code.common.v1.SolanaAccountId + 108, // 162: code.transaction.v2.SwapResponse.ServerParameters.recent_blockhash:type_name -> code.common.v1.Blockhash + 101, // 163: code.transaction.v2.SwapResponse.ServerParameters.swap_program:type_name -> code.common.v1.SolanaAccountId + 112, // 164: code.transaction.v2.SwapResponse.ServerParameters.swap_ixn_accounts:type_name -> code.common.v1.InstructionAccount + 101, // 165: code.transaction.v2.SwapResponse.ServerParameters.nonce:type_name -> code.common.v1.SolanaAccountId + 12, // 166: code.transaction.v2.SwapResponse.Success.code:type_name -> code.transaction.v2.SwapResponse.Success.Code + 13, // 167: code.transaction.v2.SwapResponse.Error.code:type_name -> code.transaction.v2.SwapResponse.Error.Code + 70, // 168: code.transaction.v2.SwapResponse.Error.error_details:type_name -> code.transaction.v2.ErrorDetails + 110, // 169: code.transaction.v2.UpgradeableIntent.UpgradeablePrivateAction.transaction_blob:type_name -> code.common.v1.Transaction + 102, // 170: code.transaction.v2.UpgradeableIntent.UpgradeablePrivateAction.client_signature:type_name -> code.common.v1.Signature + 107, // 171: code.transaction.v2.UpgradeableIntent.UpgradeablePrivateAction.source_account_type:type_name -> code.common.v1.AccountType + 101, // 172: code.transaction.v2.UpgradeableIntent.UpgradeablePrivateAction.original_destination:type_name -> code.common.v1.SolanaAccountId + 101, // 173: code.transaction.v2.UpgradeableIntent.UpgradeablePrivateAction.treasury:type_name -> code.common.v1.SolanaAccountId + 109, // 174: code.transaction.v2.UpgradeableIntent.UpgradeablePrivateAction.recent_root:type_name -> code.common.v1.Hash + 20, // 175: code.transaction.v2.Transaction.SubmitIntent:input_type -> code.transaction.v2.SubmitIntentRequest + 22, // 176: code.transaction.v2.Transaction.GetIntentMetadata:input_type -> code.transaction.v2.GetIntentMetadataRequest + 24, // 177: code.transaction.v2.Transaction.GetPrivacyUpgradeStatus:input_type -> code.transaction.v2.GetPrivacyUpgradeStatusRequest + 26, // 178: code.transaction.v2.Transaction.GetPrioritizedIntentsForPrivacyUpgrade:input_type -> code.transaction.v2.GetPrioritizedIntentsForPrivacyUpgradeRequest + 28, // 179: code.transaction.v2.Transaction.GetLimits:input_type -> code.transaction.v2.GetLimitsRequest + 30, // 180: code.transaction.v2.Transaction.GetPaymentHistory:input_type -> code.transaction.v2.GetPaymentHistoryRequest + 32, // 181: code.transaction.v2.Transaction.CanWithdrawToAccount:input_type -> code.transaction.v2.CanWithdrawToAccountRequest + 34, // 182: code.transaction.v2.Transaction.Airdrop:input_type -> code.transaction.v2.AirdropRequest + 36, // 183: code.transaction.v2.Transaction.Swap:input_type -> code.transaction.v2.SwapRequest + 38, // 184: code.transaction.v2.Transaction.DeclareFiatOnrampPurchaseAttempt:input_type -> code.transaction.v2.DeclareFiatOnrampPurchaseAttemptRequest + 21, // 185: code.transaction.v2.Transaction.SubmitIntent:output_type -> code.transaction.v2.SubmitIntentResponse + 23, // 186: code.transaction.v2.Transaction.GetIntentMetadata:output_type -> code.transaction.v2.GetIntentMetadataResponse + 25, // 187: code.transaction.v2.Transaction.GetPrivacyUpgradeStatus:output_type -> code.transaction.v2.GetPrivacyUpgradeStatusResponse + 27, // 188: code.transaction.v2.Transaction.GetPrioritizedIntentsForPrivacyUpgrade:output_type -> code.transaction.v2.GetPrioritizedIntentsForPrivacyUpgradeResponse + 29, // 189: code.transaction.v2.Transaction.GetLimits:output_type -> code.transaction.v2.GetLimitsResponse + 31, // 190: code.transaction.v2.Transaction.GetPaymentHistory:output_type -> code.transaction.v2.GetPaymentHistoryResponse + 33, // 191: code.transaction.v2.Transaction.CanWithdrawToAccount:output_type -> code.transaction.v2.CanWithdrawToAccountResponse + 35, // 192: code.transaction.v2.Transaction.Airdrop:output_type -> code.transaction.v2.AirdropResponse + 37, // 193: code.transaction.v2.Transaction.Swap:output_type -> code.transaction.v2.SwapResponse + 39, // 194: code.transaction.v2.Transaction.DeclareFiatOnrampPurchaseAttempt:output_type -> code.transaction.v2.DeclareFiatOnrampPurchaseAttemptResponse + 185, // [185:195] is the sub-list for method output_type + 175, // [175:185] is the sub-list for method input_type + 175, // [175:175] is the sub-list for extension type_name + 175, // [175:175] is the sub-list for extension extendee + 0, // [0:175] is the sub-list for field type_name } func init() { file_transaction_v2_transaction_service_proto_init() } @@ -9144,7 +9259,7 @@ func file_transaction_v2_transaction_service_proto_init() { } } file_transaction_v2_transaction_service_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Cursor); i { + switch v := v.(*FriendedUser); i { case 0: return &v.state case 1: @@ -9156,7 +9271,7 @@ func file_transaction_v2_transaction_service_proto_init() { } } file_transaction_v2_transaction_service_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubmitIntentRequest_SubmitActions); i { + switch v := v.(*Cursor); i { case 0: return &v.state case 1: @@ -9168,7 +9283,7 @@ func file_transaction_v2_transaction_service_proto_init() { } } file_transaction_v2_transaction_service_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubmitIntentRequest_SubmitSignatures); i { + switch v := v.(*SubmitIntentRequest_SubmitActions); i { case 0: return &v.state case 1: @@ -9180,7 +9295,7 @@ func file_transaction_v2_transaction_service_proto_init() { } } file_transaction_v2_transaction_service_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubmitIntentResponse_ServerParameters); i { + switch v := v.(*SubmitIntentRequest_SubmitSignatures); i { case 0: return &v.state case 1: @@ -9192,7 +9307,7 @@ func file_transaction_v2_transaction_service_proto_init() { } } file_transaction_v2_transaction_service_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubmitIntentResponse_Success); i { + switch v := v.(*SubmitIntentResponse_ServerParameters); i { case 0: return &v.state case 1: @@ -9204,6 +9319,18 @@ func file_transaction_v2_transaction_service_proto_init() { } } file_transaction_v2_transaction_service_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SubmitIntentResponse_Success); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_transaction_v2_transaction_service_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SubmitIntentResponse_Error); i { case 0: return &v.state @@ -9215,7 +9342,7 @@ func file_transaction_v2_transaction_service_proto_init() { return nil } } - file_transaction_v2_transaction_service_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { + file_transaction_v2_transaction_service_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SwapRequest_Initiate); i { case 0: return &v.state @@ -9227,7 +9354,7 @@ func file_transaction_v2_transaction_service_proto_init() { return nil } } - file_transaction_v2_transaction_service_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { + file_transaction_v2_transaction_service_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SwapRequest_SubmitSignature); i { case 0: return &v.state @@ -9239,7 +9366,7 @@ func file_transaction_v2_transaction_service_proto_init() { return nil } } - file_transaction_v2_transaction_service_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { + file_transaction_v2_transaction_service_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SwapResponse_ServerParameters); i { case 0: return &v.state @@ -9251,7 +9378,7 @@ func file_transaction_v2_transaction_service_proto_init() { return nil } } - file_transaction_v2_transaction_service_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { + file_transaction_v2_transaction_service_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SwapResponse_Success); i { case 0: return &v.state @@ -9263,7 +9390,7 @@ func file_transaction_v2_transaction_service_proto_init() { return nil } } - file_transaction_v2_transaction_service_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { + file_transaction_v2_transaction_service_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SwapResponse_Error); i { case 0: return &v.state @@ -9275,7 +9402,7 @@ func file_transaction_v2_transaction_service_proto_init() { return nil } } - file_transaction_v2_transaction_service_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { + file_transaction_v2_transaction_service_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpgradeableIntent_UpgradeablePrivateAction); i { case 0: return &v.state @@ -9348,8 +9475,8 @@ func file_transaction_v2_transaction_service_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_transaction_v2_transaction_service_proto_rawDesc, - NumEnums: 19, - NumMessages: 79, + NumEnums: 20, + NumMessages: 80, NumExtensions: 0, NumServices: 1, }, diff --git a/generated/go/transaction/v2/transaction_service.pb.validate.go b/generated/go/transaction/v2/transaction_service.pb.validate.go index 9f1caeb..49c1d24 100644 --- a/generated/go/transaction/v2/transaction_service.pb.validate.go +++ b/generated/go/transaction/v2/transaction_service.pb.validate.go @@ -6502,6 +6502,89 @@ var _TippedUser_Platform_InLookup = map[TippedUser_Platform]struct{}{ 1: {}, } +// Validate checks the field values on FriendedUser with the rules defined in +// the proto definition for this message. If any rules are violated, an error +// is returned. +func (m *FriendedUser) Validate() error { + if m == nil { + return nil + } + + if _, ok := _FriendedUser_Platform_InLookup[m.GetPlatform()]; !ok { + return FriendedUserValidationError{ + field: "Platform", + reason: "value must be in list [1]", + } + } + + if l := utf8.RuneCountInString(m.GetUsername()); l < 1 || l > 15 { + return FriendedUserValidationError{ + field: "Username", + reason: "value length must be between 1 and 15 runes, inclusive", + } + } + + return nil +} + +// FriendedUserValidationError is the validation error returned by +// FriendedUser.Validate if the designated constraints aren't met. +type FriendedUserValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e FriendedUserValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e FriendedUserValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e FriendedUserValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e FriendedUserValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e FriendedUserValidationError) ErrorName() string { return "FriendedUserValidationError" } + +// Error satisfies the builtin error interface +func (e FriendedUserValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sFriendedUser.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = FriendedUserValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = FriendedUserValidationError{} + +var _FriendedUser_Platform_InLookup = map[FriendedUser_Platform]struct{}{ + 1: {}, +} + // Validate checks the field values on Cursor with the rules defined in the // proto definition for this message. If any rules are violated, an error is returned. func (m *Cursor) Validate() error { diff --git a/generated/go/user/v1/identity_service.pb.go b/generated/go/user/v1/identity_service.pb.go index 8c4b7f3..6c0b831 100644 --- a/generated/go/user/v1/identity_service.pb.go +++ b/generated/go/user/v1/identity_service.pb.go @@ -1360,6 +1360,10 @@ type GetTwitterUserRequest struct { // *GetTwitterUserRequest_Username // *GetTwitterUserRequest_TipAddress Query isGetTwitterUserRequest_Query `protobuf_oneof:"query"` + // An optional set of authentication information that allows for more + // information to be returned in the request. + Requestor *v1.SolanaAccountId `protobuf:"bytes,10,opt,name=requestor,proto3" json:"requestor,omitempty"` + Signature *v1.Signature `protobuf:"bytes,11,opt,name=signature,proto3" json:"signature,omitempty"` } func (x *GetTwitterUserRequest) Reset() { @@ -1415,6 +1419,20 @@ func (x *GetTwitterUserRequest) GetTipAddress() *v1.SolanaAccountId { return nil } +func (x *GetTwitterUserRequest) GetRequestor() *v1.SolanaAccountId { + if x != nil { + return x.Requestor + } + return nil +} + +func (x *GetTwitterUserRequest) GetSignature() *v1.Signature { + if x != nil { + return x.Signature + } + return nil +} + type isGetTwitterUserRequest_Query interface { isGetTwitterUserRequest_Query() } @@ -1659,6 +1677,8 @@ type TwitterUser struct { unknownFields protoimpl.UnknownFields // Public key for a token account where tips are routed + // + // TODO(tip_rename): Candidate for renaming to something more generic. TipAddress *v1.SolanaAccountId `protobuf:"bytes,1,opt,name=tip_address,json=tipAddress,proto3" json:"tip_address,omitempty"` // The user's username on Twitter Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` @@ -1670,6 +1690,19 @@ type TwitterUser struct { VerifiedType TwitterUser_VerifiedType `protobuf:"varint,5,opt,name=verified_type,json=verifiedType,proto3,enum=code.user.v1.TwitterUser_VerifiedType" json:"verified_type,omitempty"` // The number of followers the user has on Twitter FollowerCount uint32 `protobuf:"varint,6,opt,name=follower_count,json=followerCount,proto3" json:"follower_count,omitempty"` + // The cost of establishing the friendship (regardless if caller is a friend). + // + // This should not be cached for an extended period, as exchange rate / value + // may change at any time. + FriendshipCost *v2.ExchangeDataWithoutRate `protobuf:"bytes,7,opt,name=friendship_cost,json=friendshipCost,proto3" json:"friendship_cost,omitempty"` + // Indicates the user is a friend of the caller. + IsFriend bool `protobuf:"varint,10,opt,name=is_friend,json=isFriend,proto3" json:"is_friend,omitempty"` + // The ChatId used to communicate with this friend. + // + // This will always be set for authenticated users. + // If is_friend=false, this ChatId should be used when crafting + // the intent. + FriendChatId *v1.ChatId `protobuf:"bytes,11,opt,name=friend_chat_id,json=friendChatId,proto3" json:"friend_chat_id,omitempty"` } func (x *TwitterUser) Reset() { @@ -1746,6 +1779,27 @@ func (x *TwitterUser) GetFollowerCount() uint32 { return 0 } +func (x *TwitterUser) GetFriendshipCost() *v2.ExchangeDataWithoutRate { + if x != nil { + return x.FriendshipCost + } + return nil +} + +func (x *TwitterUser) GetIsFriend() bool { + if x != nil { + return x.IsFriend + } + return false +} + +func (x *TwitterUser) GetFriendChatId() *v1.ChatId { + if x != nil { + return x.FriendChatId + } + return nil +} + var File_user_v1_identity_service_proto protoreflect.FileDescriptor var file_user_v1_identity_service_proto_rawDesc = []byte{ @@ -1965,7 +2019,7 @@ var file_user_v1_identity_service_proto_rawDesc = []byte{ 0x54, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x4c, 0x4f, 0x47, 0x49, 0x4e, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x4e, 0x4f, 0x5f, 0x55, 0x53, 0x45, - 0x52, 0x5f, 0x4c, 0x4f, 0x47, 0x47, 0x45, 0x44, 0x5f, 0x49, 0x4e, 0x10, 0x03, 0x22, 0x94, 0x01, + 0x52, 0x5f, 0x4c, 0x4f, 0x47, 0x47, 0x45, 0x44, 0x5f, 0x49, 0x4e, 0x10, 0x03, 0x22, 0x8c, 0x02, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x54, 0x77, 0x69, 0x74, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xba, 0xe9, 0xc0, 0x03, 0x04, @@ -1974,110 +2028,129 @@ var file_user_v1_identity_service_proto_rawDesc = []byte{ 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x48, 0x00, 0x52, 0x0a, 0x74, 0x69, 0x70, 0x41, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x42, 0x0e, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x05, 0xb8, - 0xe9, 0xc0, 0x03, 0x01, 0x22, 0xbc, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x54, 0x77, 0x69, 0x74, - 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x43, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x2b, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x54, 0x77, 0x69, 0x74, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x12, 0x3c, 0x0a, 0x0c, 0x74, 0x77, 0x69, 0x74, 0x74, 0x65, 0x72, 0x5f, - 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x64, - 0x65, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x77, 0x69, 0x74, 0x74, 0x65, - 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x0b, 0x74, 0x77, 0x69, 0x74, 0x74, 0x65, 0x72, 0x55, 0x73, - 0x65, 0x72, 0x22, 0x1f, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x06, 0x0a, 0x02, - 0x4f, 0x4b, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, - 0x44, 0x10, 0x01, 0x22, 0x6e, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x42, - 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x32, 0x0a, 0x04, 0x76, 0x69, 0x65, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, - 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x69, 0x65, - 0x77, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x76, - 0x69, 0x65, 0x77, 0x22, 0x52, 0x0a, 0x04, 0x56, 0x69, 0x65, 0x77, 0x12, 0x4a, 0x0a, 0x0c, 0x70, - 0x68, 0x6f, 0x6e, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x42, 0x0a, - 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0b, 0x70, 0x68, 0x6f, 0x6e, - 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x2c, 0x0a, 0x0d, 0x50, 0x68, 0x6f, 0x6e, 0x65, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x6c, - 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x4c, - 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x22, 0x92, 0x03, 0x0a, 0x0b, 0x54, 0x77, 0x69, 0x74, 0x74, 0x65, - 0x72, 0x55, 0x73, 0x65, 0x72, 0x12, 0x4c, 0x0a, 0x0b, 0x74, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x6f, 0x64, - 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x6c, 0x61, - 0x6e, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x42, 0x0a, 0xba, 0xe9, 0xc0, - 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x74, 0x69, 0x70, 0x41, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x12, 0x27, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xba, 0xe9, 0xc0, 0x03, 0x06, 0x72, 0x04, 0x10, 0x01, - 0x18, 0x0f, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0c, 0xba, 0xe9, 0xc0, 0x03, - 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0x80, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x34, - 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x69, 0x63, 0x5f, 0x75, 0x72, - 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0c, 0xba, 0xe9, 0xc0, 0x03, 0x07, 0x72, 0x05, - 0x10, 0x01, 0x18, 0x80, 0x10, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x69, - 0x63, 0x55, 0x72, 0x6c, 0x12, 0x4b, 0x0a, 0x0d, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x63, 0x6f, - 0x64, 0x65, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x77, 0x69, 0x74, 0x74, - 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x54, - 0x79, 0x70, 0x65, 0x52, 0x0c, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, - 0x77, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x40, 0x0a, 0x0c, 0x56, 0x65, 0x72, 0x69, - 0x66, 0x69, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, - 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x42, 0x4c, 0x55, 0x45, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, - 0x42, 0x55, 0x53, 0x49, 0x4e, 0x45, 0x53, 0x53, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x47, 0x4f, - 0x56, 0x45, 0x52, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x03, 0x32, 0xad, 0x05, 0x0a, 0x08, 0x49, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x52, 0x0a, 0x0b, 0x4c, 0x69, 0x6e, 0x6b, 0x41, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x75, 0x73, - 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, - 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x41, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x58, 0x0a, 0x0d, 0x55, - 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x22, 0x2e, 0x63, - 0x6f, 0x64, 0x65, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x6c, 0x69, - 0x6e, 0x6b, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x23, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, - 0x55, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, - 0x12, 0x1c, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, - 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x64, 0x0a, - 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, - 0x65, 0x73, 0x12, 0x26, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, - 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, - 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x63, 0x6f, 0x64, - 0x65, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x6d, 0x0a, 0x14, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x54, 0x6f, 0x54, 0x68, - 0x69, 0x72, 0x64, 0x50, 0x61, 0x72, 0x74, 0x79, 0x41, 0x70, 0x70, 0x12, 0x29, 0x2e, 0x63, 0x6f, - 0x64, 0x65, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, - 0x54, 0x6f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x61, 0x72, 0x74, 0x79, 0x41, 0x70, 0x70, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x75, 0x73, - 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x54, 0x6f, 0x54, 0x68, 0x69, - 0x72, 0x64, 0x50, 0x61, 0x72, 0x74, 0x79, 0x41, 0x70, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x79, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x46, 0x6f, - 0x72, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x61, 0x72, 0x74, 0x79, 0x41, 0x70, 0x70, 0x12, 0x2d, + 0x72, 0x65, 0x73, 0x73, 0x12, 0x3d, 0x0a, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x6f, + 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x6f, 0x72, 0x12, 0x37, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, + 0x65, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x42, 0x0e, 0x0a, 0x05, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x05, 0xb8, 0xe9, 0xc0, 0x03, 0x01, 0x22, 0xbc, 0x01, 0x0a, + 0x16, 0x47, 0x65, 0x74, 0x54, 0x77, 0x69, 0x74, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x75, + 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x77, 0x69, 0x74, 0x74, 0x65, + 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x3c, 0x0a, 0x0c, + 0x74, 0x77, 0x69, 0x74, 0x74, 0x65, 0x72, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, + 0x31, 0x2e, 0x54, 0x77, 0x69, 0x74, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x0b, 0x74, + 0x77, 0x69, 0x74, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x22, 0x1f, 0x0a, 0x06, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x4b, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, + 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x01, 0x22, 0x6e, 0x0a, 0x04, 0x55, + 0x73, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, + 0x02, 0x10, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x32, 0x0a, 0x04, 0x76, 0x69, 0x65, 0x77, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x75, 0x73, 0x65, + 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x69, 0x65, 0x77, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, + 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x76, 0x69, 0x65, 0x77, 0x22, 0x52, 0x0a, 0x04, 0x56, + 0x69, 0x65, 0x77, 0x12, 0x4a, 0x0a, 0x0c, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x5f, 0x6e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x6f, 0x64, 0x65, + 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x68, 0x6f, 0x6e, 0x65, + 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, + 0x10, 0x01, 0x52, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, + 0x2c, 0x0a, 0x0d, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x4c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x22, 0xc4, 0x04, + 0x0a, 0x0b, 0x54, 0x77, 0x69, 0x74, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x12, 0x4c, 0x0a, + 0x0b, 0x74, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x49, 0x64, 0x42, 0x0a, 0xba, 0xe9, 0xc0, 0x03, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, + 0x0a, 0x74, 0x69, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x27, 0x0a, 0x08, 0x75, + 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xba, + 0xe9, 0xc0, 0x03, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x0f, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x0c, 0xba, 0xe9, 0xc0, 0x03, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0x80, 0x02, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x5f, 0x70, 0x69, 0x63, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x0c, 0xba, 0xe9, 0xc0, 0x03, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0x80, 0x10, 0x52, 0x0d, 0x70, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x69, 0x63, 0x55, 0x72, 0x6c, 0x12, 0x4b, 0x0a, 0x0d, + 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, + 0x76, 0x31, 0x2e, 0x54, 0x77, 0x69, 0x74, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x56, + 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x76, 0x65, 0x72, + 0x69, 0x66, 0x69, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x66, 0x6f, 0x6c, + 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x0d, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x55, 0x0a, 0x0f, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x68, 0x69, 0x70, 0x5f, 0x63, + 0x6f, 0x73, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x63, 0x6f, 0x64, 0x65, + 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, + 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x57, 0x69, 0x74, 0x68, + 0x6f, 0x75, 0x74, 0x52, 0x61, 0x74, 0x65, 0x52, 0x0e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, + 0x68, 0x69, 0x70, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x66, 0x72, + 0x69, 0x65, 0x6e, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x46, 0x72, + 0x69, 0x65, 0x6e, 0x64, 0x12, 0x3c, 0x0a, 0x0e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5f, 0x63, + 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, + 0x6f, 0x64, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, + 0x61, 0x74, 0x49, 0x64, 0x52, 0x0c, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x43, 0x68, 0x61, 0x74, + 0x49, 0x64, 0x22, 0x40, 0x0a, 0x0c, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, + 0x42, 0x4c, 0x55, 0x45, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x42, 0x55, 0x53, 0x49, 0x4e, 0x45, + 0x53, 0x53, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x47, 0x4f, 0x56, 0x45, 0x52, 0x4e, 0x4d, 0x45, + 0x4e, 0x54, 0x10, 0x03, 0x32, 0xad, 0x05, 0x0a, 0x08, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, + 0x79, 0x12, 0x52, 0x0a, 0x0b, 0x4c, 0x69, 0x6e, 0x6b, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x20, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, + 0x4c, 0x69, 0x6e, 0x6b, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, + 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x58, 0x0a, 0x0d, 0x55, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x22, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x75, 0x73, + 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x63, 0x6f, 0x64, + 0x65, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x46, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1c, 0x2e, 0x63, 0x6f, 0x64, + 0x65, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, + 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, + 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x64, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x26, 0x2e, 0x63, + 0x6f, 0x64, 0x65, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x75, 0x73, 0x65, 0x72, + 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, + 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6d, 0x0a, + 0x14, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x54, 0x6f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x61, 0x72, + 0x74, 0x79, 0x41, 0x70, 0x70, 0x12, 0x29, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x75, 0x73, 0x65, + 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x54, 0x6f, 0x54, 0x68, 0x69, 0x72, + 0x64, 0x50, 0x61, 0x72, 0x74, 0x79, 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x2a, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, + 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x54, 0x6f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x61, 0x72, 0x74, + 0x79, 0x41, 0x70, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x79, 0x0a, 0x18, + 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x46, 0x6f, 0x72, 0x54, 0x68, 0x69, 0x72, 0x64, + 0x50, 0x61, 0x72, 0x74, 0x79, 0x41, 0x70, 0x70, 0x12, 0x2d, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, + 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, + 0x46, 0x6f, 0x72, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x61, 0x72, 0x74, 0x79, 0x41, 0x70, 0x70, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x75, + 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x46, + 0x6f, 0x72, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x61, 0x72, 0x74, 0x79, 0x41, 0x70, 0x70, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5b, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x54, 0x77, + 0x69, 0x74, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x12, 0x23, 0x2e, 0x63, 0x6f, 0x64, 0x65, + 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x77, 0x69, 0x74, + 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x46, 0x6f, 0x72, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x61, - 0x72, 0x74, 0x79, 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, - 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x46, 0x6f, 0x72, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x61, 0x72, - 0x74, 0x79, 0x41, 0x70, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5b, 0x0a, - 0x0e, 0x47, 0x65, 0x74, 0x54, 0x77, 0x69, 0x74, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x12, - 0x23, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x54, 0x77, 0x69, 0x74, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x75, 0x73, 0x65, 0x72, - 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x77, 0x69, 0x74, 0x74, 0x65, 0x72, 0x55, 0x73, - 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x6b, 0x0a, 0x17, 0x63, 0x6f, - 0x6d, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x69, 0x6e, 0x63, 0x2e, 0x67, 0x65, 0x6e, 0x2e, 0x75, 0x73, - 0x65, 0x72, 0x2e, 0x76, 0x31, 0x5a, 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x63, 0x6f, 0x64, 0x65, 0x2d, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, - 0x63, 0x6f, 0x64, 0x65, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2d, 0x61, 0x70, - 0x69, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2f, 0x67, 0x6f, 0x2f, 0x75, - 0x73, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x3b, 0x75, 0x73, 0x65, 0x72, 0xa2, 0x02, 0x09, 0x43, 0x50, - 0x42, 0x55, 0x73, 0x65, 0x72, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x54, 0x77, 0x69, 0x74, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x6b, 0x0a, 0x17, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x64, 0x65, + 0x69, 0x6e, 0x63, 0x2e, 0x67, 0x65, 0x6e, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x5a, + 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x64, 0x65, + 0x2d, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x63, 0x6f, 0x64, 0x65, 0x2d, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x65, 0x64, 0x2f, 0x67, 0x6f, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x76, 0x31, + 0x3b, 0x75, 0x73, 0x65, 0x72, 0xa2, 0x02, 0x09, 0x43, 0x50, 0x42, 0x55, 0x73, 0x65, 0x72, 0x56, + 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2130,6 +2203,8 @@ var file_user_v1_identity_service_proto_goTypes = []interface{}{ (*v1.Locale)(nil), // 32: code.common.v1.Locale (*v1.IntentId)(nil), // 33: code.common.v1.IntentId (*v1.UserId)(nil), // 34: code.common.v1.UserId + (*v2.ExchangeDataWithoutRate)(nil), // 35: code.transaction.v2.ExchangeDataWithoutRate + (*v1.ChatId)(nil), // 36: code.common.v1.ChatId } var file_user_v1_identity_service_proto_depIdxs = []int32{ 26, // 0: code.user.v1.LinkAccountRequest.owner_account_id:type_name -> code.common.v1.SolanaAccountId @@ -2166,32 +2241,36 @@ var file_user_v1_identity_service_proto_depIdxs = []int32{ 5, // 31: code.user.v1.GetLoginForThirdPartyAppResponse.result:type_name -> code.user.v1.GetLoginForThirdPartyAppResponse.Result 26, // 32: code.user.v1.GetLoginForThirdPartyAppResponse.user_id:type_name -> code.common.v1.SolanaAccountId 26, // 33: code.user.v1.GetTwitterUserRequest.tip_address:type_name -> code.common.v1.SolanaAccountId - 6, // 34: code.user.v1.GetTwitterUserResponse.result:type_name -> code.user.v1.GetTwitterUserResponse.Result - 25, // 35: code.user.v1.GetTwitterUserResponse.twitter_user:type_name -> code.user.v1.TwitterUser - 34, // 36: code.user.v1.User.id:type_name -> code.common.v1.UserId - 23, // 37: code.user.v1.User.view:type_name -> code.user.v1.View - 30, // 38: code.user.v1.View.phone_number:type_name -> code.common.v1.PhoneNumber - 26, // 39: code.user.v1.TwitterUser.tip_address:type_name -> code.common.v1.SolanaAccountId - 7, // 40: code.user.v1.TwitterUser.verified_type:type_name -> code.user.v1.TwitterUser.VerifiedType - 8, // 41: code.user.v1.Identity.LinkAccount:input_type -> code.user.v1.LinkAccountRequest - 10, // 42: code.user.v1.Identity.UnlinkAccount:input_type -> code.user.v1.UnlinkAccountRequest - 12, // 43: code.user.v1.Identity.GetUser:input_type -> code.user.v1.GetUserRequest - 14, // 44: code.user.v1.Identity.UpdatePreferences:input_type -> code.user.v1.UpdatePreferencesRequest - 16, // 45: code.user.v1.Identity.LoginToThirdPartyApp:input_type -> code.user.v1.LoginToThirdPartyAppRequest - 18, // 46: code.user.v1.Identity.GetLoginForThirdPartyApp:input_type -> code.user.v1.GetLoginForThirdPartyAppRequest - 20, // 47: code.user.v1.Identity.GetTwitterUser:input_type -> code.user.v1.GetTwitterUserRequest - 9, // 48: code.user.v1.Identity.LinkAccount:output_type -> code.user.v1.LinkAccountResponse - 11, // 49: code.user.v1.Identity.UnlinkAccount:output_type -> code.user.v1.UnlinkAccountResponse - 13, // 50: code.user.v1.Identity.GetUser:output_type -> code.user.v1.GetUserResponse - 15, // 51: code.user.v1.Identity.UpdatePreferences:output_type -> code.user.v1.UpdatePreferencesResponse - 17, // 52: code.user.v1.Identity.LoginToThirdPartyApp:output_type -> code.user.v1.LoginToThirdPartyAppResponse - 19, // 53: code.user.v1.Identity.GetLoginForThirdPartyApp:output_type -> code.user.v1.GetLoginForThirdPartyAppResponse - 21, // 54: code.user.v1.Identity.GetTwitterUser:output_type -> code.user.v1.GetTwitterUserResponse - 48, // [48:55] is the sub-list for method output_type - 41, // [41:48] is the sub-list for method input_type - 41, // [41:41] is the sub-list for extension type_name - 41, // [41:41] is the sub-list for extension extendee - 0, // [0:41] is the sub-list for field type_name + 26, // 34: code.user.v1.GetTwitterUserRequest.requestor:type_name -> code.common.v1.SolanaAccountId + 27, // 35: code.user.v1.GetTwitterUserRequest.signature:type_name -> code.common.v1.Signature + 6, // 36: code.user.v1.GetTwitterUserResponse.result:type_name -> code.user.v1.GetTwitterUserResponse.Result + 25, // 37: code.user.v1.GetTwitterUserResponse.twitter_user:type_name -> code.user.v1.TwitterUser + 34, // 38: code.user.v1.User.id:type_name -> code.common.v1.UserId + 23, // 39: code.user.v1.User.view:type_name -> code.user.v1.View + 30, // 40: code.user.v1.View.phone_number:type_name -> code.common.v1.PhoneNumber + 26, // 41: code.user.v1.TwitterUser.tip_address:type_name -> code.common.v1.SolanaAccountId + 7, // 42: code.user.v1.TwitterUser.verified_type:type_name -> code.user.v1.TwitterUser.VerifiedType + 35, // 43: code.user.v1.TwitterUser.friendship_cost:type_name -> code.transaction.v2.ExchangeDataWithoutRate + 36, // 44: code.user.v1.TwitterUser.friend_chat_id:type_name -> code.common.v1.ChatId + 8, // 45: code.user.v1.Identity.LinkAccount:input_type -> code.user.v1.LinkAccountRequest + 10, // 46: code.user.v1.Identity.UnlinkAccount:input_type -> code.user.v1.UnlinkAccountRequest + 12, // 47: code.user.v1.Identity.GetUser:input_type -> code.user.v1.GetUserRequest + 14, // 48: code.user.v1.Identity.UpdatePreferences:input_type -> code.user.v1.UpdatePreferencesRequest + 16, // 49: code.user.v1.Identity.LoginToThirdPartyApp:input_type -> code.user.v1.LoginToThirdPartyAppRequest + 18, // 50: code.user.v1.Identity.GetLoginForThirdPartyApp:input_type -> code.user.v1.GetLoginForThirdPartyAppRequest + 20, // 51: code.user.v1.Identity.GetTwitterUser:input_type -> code.user.v1.GetTwitterUserRequest + 9, // 52: code.user.v1.Identity.LinkAccount:output_type -> code.user.v1.LinkAccountResponse + 11, // 53: code.user.v1.Identity.UnlinkAccount:output_type -> code.user.v1.UnlinkAccountResponse + 13, // 54: code.user.v1.Identity.GetUser:output_type -> code.user.v1.GetUserResponse + 15, // 55: code.user.v1.Identity.UpdatePreferences:output_type -> code.user.v1.UpdatePreferencesResponse + 17, // 56: code.user.v1.Identity.LoginToThirdPartyApp:output_type -> code.user.v1.LoginToThirdPartyAppResponse + 19, // 57: code.user.v1.Identity.GetLoginForThirdPartyApp:output_type -> code.user.v1.GetLoginForThirdPartyAppResponse + 21, // 58: code.user.v1.Identity.GetTwitterUser:output_type -> code.user.v1.GetTwitterUserResponse + 52, // [52:59] is the sub-list for method output_type + 45, // [45:52] is the sub-list for method input_type + 45, // [45:45] is the sub-list for extension type_name + 45, // [45:45] is the sub-list for extension extendee + 0, // [0:45] is the sub-list for field type_name } func init() { file_user_v1_identity_service_proto_init() } diff --git a/generated/go/user/v1/identity_service.pb.validate.go b/generated/go/user/v1/identity_service.pb.validate.go index ffa1bf2..4c9cf9d 100644 --- a/generated/go/user/v1/identity_service.pb.validate.go +++ b/generated/go/user/v1/identity_service.pb.validate.go @@ -1298,6 +1298,26 @@ func (m *GetTwitterUserRequest) Validate() error { return nil } + if v, ok := interface{}(m.GetRequestor()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return GetTwitterUserRequestValidationError{ + field: "Requestor", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if v, ok := interface{}(m.GetSignature()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return GetTwitterUserRequestValidationError{ + field: "Signature", + reason: "embedded message failed validation", + cause: err, + } + } + } + switch m.Query.(type) { case *GetTwitterUserRequest_Username: @@ -1763,6 +1783,28 @@ func (m *TwitterUser) Validate() error { // no validation rules for FollowerCount + if v, ok := interface{}(m.GetFriendshipCost()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return TwitterUserValidationError{ + field: "FriendshipCost", + reason: "embedded message failed validation", + cause: err, + } + } + } + + // no validation rules for IsFriend + + if v, ok := interface{}(m.GetFriendChatId()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return TwitterUserValidationError{ + field: "FriendChatId", + reason: "embedded message failed validation", + cause: err, + } + } + } + return nil } diff --git a/generated/protobuf-es/badge/v1/index.ts b/generated/protobuf-es/badge/v1/index.ts index 1c507b5..754a733 100644 --- a/generated/protobuf-es/badge/v1/index.ts +++ b/generated/protobuf-es/badge/v1/index.ts @@ -1,2 +1,2 @@ -export * from './badge_service_connect'; export * from './badge_service_pb'; +export * from './badge_service_connect'; diff --git a/generated/protobuf-es/chat/v1/index.ts b/generated/protobuf-es/chat/v1/index.ts index d60d4f9..5f226a8 100644 --- a/generated/protobuf-es/chat/v1/index.ts +++ b/generated/protobuf-es/chat/v1/index.ts @@ -1,2 +1,2 @@ -export * from './chat_service_connect'; export * from './chat_service_pb'; +export * from './chat_service_connect'; diff --git a/generated/protobuf-es/chat/v2/chat_service_connect.ts b/generated/protobuf-es/chat/v2/chat_service_connect.ts index f37bc0c..1d918e7 100644 --- a/generated/protobuf-es/chat/v2/chat_service_connect.ts +++ b/generated/protobuf-es/chat/v2/chat_service_connect.ts @@ -3,7 +3,7 @@ /* eslint-disable */ // @ts-nocheck -import { AdvancePointerRequest, AdvancePointerResponse, GetChatsRequest, GetChatsResponse, GetMessagesRequest, GetMessagesResponse, NotifyIsTypingRequest, NotifyIsTypingResponse, RevealIdentityRequest, RevealIdentityResponse, SendMessageRequest, SendMessageResponse, SetMuteStateRequest, SetMuteStateResponse, SetSubscriptionStateRequest, SetSubscriptionStateResponse, StartChatRequest, StartChatResponse, StreamChatEventsRequest, StreamChatEventsResponse } from "./chat_service_pb"; +import { AdvancePointerRequest, AdvancePointerResponse, GetChatsRequest, GetChatsResponse, GetMessagesRequest, GetMessagesResponse, NotifyIsTypingRequest, NotifyIsTypingResponse, SendMessageRequest, SendMessageResponse, SetMuteStateRequest, SetMuteStateResponse, StartChatRequest, StartChatResponse, StreamChatEventsRequest, StreamChatEventsResponse, StreamMessagesRequest, StreamMessagesResponse } from "./chat_service_pb"; import { MethodKind } from "@bufbuild/protobuf"; /** @@ -12,6 +12,46 @@ import { MethodKind } from "@bufbuild/protobuf"; export const Chat = { typeName: "code.chat.v2.Chat", methods: { + /** + * StreamChatEvents streams all chat events for the requesting user. + * + * Chat events will include any update to a chat, including: + * 1. Metadata changes. + * 2. Membership changes. + * 3. Latest messages. + * + * The server will optionally filter out some events depending on load + * and chat type. For example, Broadcast chats will not receive latest + * messages. + * + * Clients should use GetMessages to backfill in any historical messages + * for a chat. It should be sufficient to rely on ChatEvents for some types + * of chats, but using StreamMessages provides a guarentee of message events + * for all chats. + * + * @generated from rpc code.chat.v2.Chat.StreamChatEvents + */ + streamChatEvents: { + name: "StreamChatEvents", + I: StreamChatEventsRequest, + O: StreamChatEventsResponse, + kind: MethodKind.BiDiStreaming, + }, + /** + * StreamMessages streams all messages/message states for the requested chat. + * + * By default, streams will resume messages from the last acknowledged delivery + * pointer of the caller. This can be overridden by setting 'last_message', + * 'latest_only'. + * + * @generated from rpc code.chat.v2.Chat.StreamMessages + */ + streamMessages: { + name: "StreamMessages", + I: StreamMessagesRequest, + O: StreamMessagesResponse, + kind: MethodKind.BiDiStreaming, + }, /** * GetChats gets the set of chats for an owner account using a paged API. * This RPC is aware of all identities tied to the owner account. @@ -35,46 +75,6 @@ export const Chat = { O: GetMessagesResponse, kind: MethodKind.Unary, }, - /** - * StreamChatEvents streams chat events in real-time. Chat events include - * messages, pointer updates, etc. - * - * The streaming protocol is follows: - * 1. Client initiates a stream by sending an OpenChatEventStream message. - * 2. If an error is encoutered, a ChatStreamEventError message will be - * returned by server and the stream will be closed. - * 3. Server will immediately flush initial chat state. - * 4. New chat events will be pushed to the stream in real time as they - * are received. - * - * This RPC supports a keepalive protocol as follows: - * 1. Client initiates a stream by sending an OpenChatEventStream message. - * 2. Upon stream initialization, server begins the keepalive protocol. - * 3. Server sends a ping to the client. - * 4. Client responds with a pong as fast as possible, making note of - * the delay for when to expect the next ping. - * 5. Steps 3 and 4 are repeated until the stream is explicitly terminated - * or is deemed to be unhealthy. - * - * Client notes: - * * Client should be careful to process events async, so any responses to pings are - * not delayed. - * * Clients should implement a reasonable backoff strategy upon continued timeout - * failures. - * * Clients that abuse pong messages may have their streams terminated by server. - * - * At any point in the stream, server will respond with events in real time as - * they are observed. Events sent over the stream should not affect the ping/pong - * protocol timings. - * - * @generated from rpc code.chat.v2.Chat.StreamChatEvents - */ - streamChatEvents: { - name: "StreamChatEvents", - I: StreamChatEventsRequest, - O: StreamChatEventsResponse, - kind: MethodKind.BiDiStreaming, - }, /** * StartChat starts a chat. The RPC call is idempotent and will use existing * chats whenever applicable within the context of message routing. @@ -88,7 +88,7 @@ export const Chat = { kind: MethodKind.Unary, }, /** - * SendMessage sends a message to a chat + * SendMessage sends a message to a chat. * * @generated from rpc code.chat.v2.Chat.SendMessage */ @@ -99,7 +99,7 @@ export const Chat = { kind: MethodKind.Unary, }, /** - * AdvancePointer advances a pointer in message history for a chat member + * AdvancePointer advances a pointer in message history for a chat member. * * @generated from rpc code.chat.v2.Chat.AdvancePointer */ @@ -110,19 +110,7 @@ export const Chat = { kind: MethodKind.Unary, }, /** - * RevealIdentity reveals a chat member's identity if it is anonymous. A chat - * message will be inserted on success. - * - * @generated from rpc code.chat.v2.Chat.RevealIdentity - */ - revealIdentity: { - name: "RevealIdentity", - I: RevealIdentityRequest, - O: RevealIdentityResponse, - kind: MethodKind.Unary, - }, - /** - * SetMuteState configures a chat member's mute state + * SetMuteState configures a chat member's mute state. * * @generated from rpc code.chat.v2.Chat.SetMuteState */ @@ -132,17 +120,6 @@ export const Chat = { O: SetMuteStateResponse, kind: MethodKind.Unary, }, - /** - * SetSubscriptionState configures a chat member's susbscription state - * - * @generated from rpc code.chat.v2.Chat.SetSubscriptionState - */ - setSubscriptionState: { - name: "SetSubscriptionState", - I: SetSubscriptionStateRequest, - O: SetSubscriptionStateResponse, - kind: MethodKind.Unary, - }, /** * NotifyIsTypingRequest notifies a chat that the sending member is typing. * diff --git a/generated/protobuf-es/chat/v2/chat_service_pb.ts b/generated/protobuf-es/chat/v2/chat_service_pb.ts index b8407f8..e56fe65 100644 --- a/generated/protobuf-es/chat/v2/chat_service_pb.ts +++ b/generated/protobuf-es/chat/v2/chat_service_pb.ts @@ -4,7 +4,7 @@ // @ts-nocheck import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; -import { Message, proto3, Timestamp } from "@bufbuild/protobuf"; +import { Message as Message$1, proto3, Timestamp } from "@bufbuild/protobuf"; import { ChatId, ClientPong, IntentId, ServerPing, Signature, SolanaAccountId } from "../../common/v1/model_pb"; import { ExchangeData, ExchangeDataWithoutRate } from "../../transaction/v2/transaction_service_pb"; @@ -17,23 +17,17 @@ export enum ChatType { */ UNKNOWN_CHAT_TYPE = 0, - /** - * @generated from enum value: NOTIFICATION = 1; - */ - NOTIFICATION = 1, - /** * GROUP = 3; * - * @generated from enum value: TWO_WAY = 2; + * @generated from enum value: TWO_WAY = 1; */ - TWO_WAY = 2, + TWO_WAY = 1, } // Retrieve enum metadata with: proto3.getEnumType(ChatType) proto3.util.setEnumType(ChatType, "code.chat.v2.ChatType", [ { no: 0, name: "UNKNOWN_CHAT_TYPE" }, - { no: 1, name: "NOTIFICATION" }, - { no: 2, name: "TWO_WAY" }, + { no: 1, name: "TWO_WAY" }, ]); /** @@ -91,918 +85,809 @@ proto3.util.setEnumType(PointerType, "code.chat.v2.PointerType", [ ]); /** - * @generated from message code.chat.v2.GetChatsRequest + * @generated from message code.chat.v2.StreamChatEventsRequest */ -export class GetChatsRequest extends Message { +export class StreamChatEventsRequest extends Message$1 { /** - * @generated from field: code.common.v1.SolanaAccountId owner = 1; + * @generated from oneof code.chat.v2.StreamChatEventsRequest.type */ - owner?: SolanaAccountId; + type: { + /** + * @generated from field: code.chat.v2.StreamChatEventsRequest.Params params = 1; + */ + value: StreamChatEventsRequest_Params; + case: "params"; + } | { + /** + * @generated from field: code.common.v1.ClientPong pong = 2; + */ + value: ClientPong; + case: "pong"; + } | { case: undefined; value?: undefined } = { case: undefined }; - /** - * @generated from field: code.common.v1.Signature signature = 2; - */ - signature?: Signature; + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } - /** - * @generated from field: uint32 page_size = 3; - */ - pageSize = 0; + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "code.chat.v2.StreamChatEventsRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "params", kind: "message", T: StreamChatEventsRequest_Params, oneof: "type" }, + { no: 2, name: "pong", kind: "message", T: ClientPong, oneof: "type" }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): StreamChatEventsRequest { + return new StreamChatEventsRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): StreamChatEventsRequest { + return new StreamChatEventsRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): StreamChatEventsRequest { + return new StreamChatEventsRequest().fromJsonString(jsonString, options); + } + + static equals(a: StreamChatEventsRequest | PlainMessage | undefined, b: StreamChatEventsRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(StreamChatEventsRequest, a, b); + } +} +/** + * @generated from message code.chat.v2.StreamChatEventsRequest.Params + */ +export class StreamChatEventsRequest_Params extends Message$1 { /** - * @generated from field: code.chat.v2.Cursor cursor = 4; + * @generated from field: code.common.v1.SolanaAccountId owner = 1; */ - cursor?: Cursor; + owner?: SolanaAccountId; /** - * @generated from field: code.chat.v2.GetChatsRequest.Direction direction = 5; + * @generated from field: code.common.v1.Signature signature = 2; */ - direction = GetChatsRequest_Direction.ASC; + signature?: Signature; - constructor(data?: PartialMessage) { + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "code.chat.v2.GetChatsRequest"; + static readonly typeName = "code.chat.v2.StreamChatEventsRequest.Params"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "owner", kind: "message", T: SolanaAccountId }, { no: 2, name: "signature", kind: "message", T: Signature }, - { no: 3, name: "page_size", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, - { no: 4, name: "cursor", kind: "message", T: Cursor }, - { no: 5, name: "direction", kind: "enum", T: proto3.getEnumType(GetChatsRequest_Direction) }, ]); - static fromBinary(bytes: Uint8Array, options?: Partial): GetChatsRequest { - return new GetChatsRequest().fromBinary(bytes, options); + static fromBinary(bytes: Uint8Array, options?: Partial): StreamChatEventsRequest_Params { + return new StreamChatEventsRequest_Params().fromBinary(bytes, options); } - static fromJson(jsonValue: JsonValue, options?: Partial): GetChatsRequest { - return new GetChatsRequest().fromJson(jsonValue, options); + static fromJson(jsonValue: JsonValue, options?: Partial): StreamChatEventsRequest_Params { + return new StreamChatEventsRequest_Params().fromJson(jsonValue, options); } - static fromJsonString(jsonString: string, options?: Partial): GetChatsRequest { - return new GetChatsRequest().fromJsonString(jsonString, options); + static fromJsonString(jsonString: string, options?: Partial): StreamChatEventsRequest_Params { + return new StreamChatEventsRequest_Params().fromJsonString(jsonString, options); } - static equals(a: GetChatsRequest | PlainMessage | undefined, b: GetChatsRequest | PlainMessage | undefined): boolean { - return proto3.util.equals(GetChatsRequest, a, b); + static equals(a: StreamChatEventsRequest_Params | PlainMessage | undefined, b: StreamChatEventsRequest_Params | PlainMessage | undefined): boolean { + return proto3.util.equals(StreamChatEventsRequest_Params, a, b); } } /** - * @generated from enum code.chat.v2.GetChatsRequest.Direction - */ -export enum GetChatsRequest_Direction { - /** - * @generated from enum value: ASC = 0; - */ - ASC = 0, - - /** - * @generated from enum value: DESC = 1; - */ - DESC = 1, -} -// Retrieve enum metadata with: proto3.getEnumType(GetChatsRequest_Direction) -proto3.util.setEnumType(GetChatsRequest_Direction, "code.chat.v2.GetChatsRequest.Direction", [ - { no: 0, name: "ASC" }, - { no: 1, name: "DESC" }, -]); - -/** - * @generated from message code.chat.v2.GetChatsResponse + * @generated from message code.chat.v2.StreamChatEventsResponse */ -export class GetChatsResponse extends Message { - /** - * @generated from field: code.chat.v2.GetChatsResponse.Result result = 1; - */ - result = GetChatsResponse_Result.OK; - +export class StreamChatEventsResponse extends Message$1 { /** - * @generated from field: repeated code.chat.v2.ChatMetadata chats = 2; + * @generated from oneof code.chat.v2.StreamChatEventsResponse.type */ - chats: ChatMetadata[] = []; + type: { + /** + * @generated from field: code.common.v1.ServerPing ping = 1; + */ + value: ServerPing; + case: "ping"; + } | { + /** + * @generated from field: code.chat.v2.StreamError error = 2; + */ + value: StreamError; + case: "error"; + } | { + /** + * @generated from field: code.chat.v2.StreamChatEventsResponse.EventBatch events = 3; + */ + value: StreamChatEventsResponse_EventBatch; + case: "events"; + } | { case: undefined; value?: undefined } = { case: undefined }; - constructor(data?: PartialMessage) { + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "code.chat.v2.GetChatsResponse"; + static readonly typeName = "code.chat.v2.StreamChatEventsResponse"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "result", kind: "enum", T: proto3.getEnumType(GetChatsResponse_Result) }, - { no: 2, name: "chats", kind: "message", T: ChatMetadata, repeated: true }, + { no: 1, name: "ping", kind: "message", T: ServerPing, oneof: "type" }, + { no: 2, name: "error", kind: "message", T: StreamError, oneof: "type" }, + { no: 3, name: "events", kind: "message", T: StreamChatEventsResponse_EventBatch, oneof: "type" }, ]); - static fromBinary(bytes: Uint8Array, options?: Partial): GetChatsResponse { - return new GetChatsResponse().fromBinary(bytes, options); + static fromBinary(bytes: Uint8Array, options?: Partial): StreamChatEventsResponse { + return new StreamChatEventsResponse().fromBinary(bytes, options); } - static fromJson(jsonValue: JsonValue, options?: Partial): GetChatsResponse { - return new GetChatsResponse().fromJson(jsonValue, options); + static fromJson(jsonValue: JsonValue, options?: Partial): StreamChatEventsResponse { + return new StreamChatEventsResponse().fromJson(jsonValue, options); } - static fromJsonString(jsonString: string, options?: Partial): GetChatsResponse { - return new GetChatsResponse().fromJsonString(jsonString, options); + static fromJsonString(jsonString: string, options?: Partial): StreamChatEventsResponse { + return new StreamChatEventsResponse().fromJsonString(jsonString, options); } - static equals(a: GetChatsResponse | PlainMessage | undefined, b: GetChatsResponse | PlainMessage | undefined): boolean { - return proto3.util.equals(GetChatsResponse, a, b); + static equals(a: StreamChatEventsResponse | PlainMessage | undefined, b: StreamChatEventsResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(StreamChatEventsResponse, a, b); } } /** - * @generated from enum code.chat.v2.GetChatsResponse.Result + * @generated from message code.chat.v2.StreamChatEventsResponse.EventBatch */ -export enum GetChatsResponse_Result { +export class StreamChatEventsResponse_EventBatch extends Message$1 { /** - * @generated from enum value: OK = 0; + * @generated from field: repeated code.chat.v2.StreamChatEventsResponse.ChatUpdate updates = 1; */ - OK = 0, + updates: StreamChatEventsResponse_ChatUpdate[] = []; - /** - * @generated from enum value: NOT_FOUND = 1; - */ - NOT_FOUND = 1, + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "code.chat.v2.StreamChatEventsResponse.EventBatch"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "updates", kind: "message", T: StreamChatEventsResponse_ChatUpdate, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): StreamChatEventsResponse_EventBatch { + return new StreamChatEventsResponse_EventBatch().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): StreamChatEventsResponse_EventBatch { + return new StreamChatEventsResponse_EventBatch().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): StreamChatEventsResponse_EventBatch { + return new StreamChatEventsResponse_EventBatch().fromJsonString(jsonString, options); + } + + static equals(a: StreamChatEventsResponse_EventBatch | PlainMessage | undefined, b: StreamChatEventsResponse_EventBatch | PlainMessage | undefined): boolean { + return proto3.util.equals(StreamChatEventsResponse_EventBatch, a, b); + } } -// Retrieve enum metadata with: proto3.getEnumType(GetChatsResponse_Result) -proto3.util.setEnumType(GetChatsResponse_Result, "code.chat.v2.GetChatsResponse.Result", [ - { no: 0, name: "OK" }, - { no: 1, name: "NOT_FOUND" }, -]); /** - * @generated from message code.chat.v2.GetMessagesRequest + * ChatUpdate contains a set of updates for a given chat id. + * + * Only the relevant fields will be set on update. On initial + * stream open, all fields will be set, however. + * + * @generated from message code.chat.v2.StreamChatEventsResponse.ChatUpdate */ -export class GetMessagesRequest extends Message { +export class StreamChatEventsResponse_ChatUpdate extends Message$1 { /** * @generated from field: code.common.v1.ChatId chat_id = 1; */ chatId?: ChatId; /** - * @generated from field: code.chat.v2.ChatMemberId member_id = 2; - */ - memberId?: ChatMemberId; - - /** - * @generated from field: code.common.v1.SolanaAccountId owner = 3; - */ - owner?: SolanaAccountId; - - /** - * @generated from field: code.common.v1.Signature signature = 4; + * metadata contains the latest (full) metadata of the chat. + * + * @generated from field: code.chat.v2.Metadata metadata = 2; */ - signature?: Signature; + metadata?: Metadata; /** - * @generated from field: uint32 page_size = 5; + * Message contains the last known message of the chat. + * + * @generated from field: code.chat.v2.Message last_message = 3; */ - pageSize = 0; + lastMessage?: Message; /** - * @generated from field: code.chat.v2.Cursor cursor = 6; + * Pointer contians the last known relevant pointer of the chat. + * where 'relevant' means "relevant to UI updates". For example, + * when a user has read the latest message. + * + * @generated from field: code.chat.v2.Pointer pointer = 4; */ - cursor?: Cursor; + pointer?: Pointer; /** - * @generated from field: code.chat.v2.GetMessagesRequest.Direction direction = 7; + * IsTyping indicates whether or not someone is typing in the group. + * + * @generated from field: code.chat.v2.IsTyping is_typing = 5; */ - direction = GetMessagesRequest_Direction.ASC; + isTyping?: IsTyping; - constructor(data?: PartialMessage) { + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "code.chat.v2.GetMessagesRequest"; + static readonly typeName = "code.chat.v2.StreamChatEventsResponse.ChatUpdate"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "chat_id", kind: "message", T: ChatId }, - { no: 2, name: "member_id", kind: "message", T: ChatMemberId }, - { no: 3, name: "owner", kind: "message", T: SolanaAccountId }, - { no: 4, name: "signature", kind: "message", T: Signature }, - { no: 5, name: "page_size", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, - { no: 6, name: "cursor", kind: "message", T: Cursor }, - { no: 7, name: "direction", kind: "enum", T: proto3.getEnumType(GetMessagesRequest_Direction) }, + { no: 2, name: "metadata", kind: "message", T: Metadata }, + { no: 3, name: "last_message", kind: "message", T: Message }, + { no: 4, name: "pointer", kind: "message", T: Pointer }, + { no: 5, name: "is_typing", kind: "message", T: IsTyping }, ]); - static fromBinary(bytes: Uint8Array, options?: Partial): GetMessagesRequest { - return new GetMessagesRequest().fromBinary(bytes, options); + static fromBinary(bytes: Uint8Array, options?: Partial): StreamChatEventsResponse_ChatUpdate { + return new StreamChatEventsResponse_ChatUpdate().fromBinary(bytes, options); } - static fromJson(jsonValue: JsonValue, options?: Partial): GetMessagesRequest { - return new GetMessagesRequest().fromJson(jsonValue, options); + static fromJson(jsonValue: JsonValue, options?: Partial): StreamChatEventsResponse_ChatUpdate { + return new StreamChatEventsResponse_ChatUpdate().fromJson(jsonValue, options); } - static fromJsonString(jsonString: string, options?: Partial): GetMessagesRequest { - return new GetMessagesRequest().fromJsonString(jsonString, options); + static fromJsonString(jsonString: string, options?: Partial): StreamChatEventsResponse_ChatUpdate { + return new StreamChatEventsResponse_ChatUpdate().fromJsonString(jsonString, options); } - static equals(a: GetMessagesRequest | PlainMessage | undefined, b: GetMessagesRequest | PlainMessage | undefined): boolean { - return proto3.util.equals(GetMessagesRequest, a, b); + static equals(a: StreamChatEventsResponse_ChatUpdate | PlainMessage | undefined, b: StreamChatEventsResponse_ChatUpdate | PlainMessage | undefined): boolean { + return proto3.util.equals(StreamChatEventsResponse_ChatUpdate, a, b); } } /** - * @generated from enum code.chat.v2.GetMessagesRequest.Direction - */ -export enum GetMessagesRequest_Direction { - /** - * @generated from enum value: ASC = 0; - */ - ASC = 0, - - /** - * @generated from enum value: DESC = 1; - */ - DESC = 1, -} -// Retrieve enum metadata with: proto3.getEnumType(GetMessagesRequest_Direction) -proto3.util.setEnumType(GetMessagesRequest_Direction, "code.chat.v2.GetMessagesRequest.Direction", [ - { no: 0, name: "ASC" }, - { no: 1, name: "DESC" }, -]); - -/** - * @generated from message code.chat.v2.GetMessagesResponse + * @generated from message code.chat.v2.StreamMessagesRequest */ -export class GetMessagesResponse extends Message { - /** - * @generated from field: code.chat.v2.GetMessagesResponse.Result result = 1; - */ - result = GetMessagesResponse_Result.OK; - +export class StreamMessagesRequest extends Message$1 { /** - * @generated from field: repeated code.chat.v2.ChatMessage messages = 2; + * @generated from oneof code.chat.v2.StreamMessagesRequest.type */ - messages: ChatMessage[] = []; + type: { + /** + * @generated from field: code.chat.v2.StreamMessagesRequest.Params params = 1; + */ + value: StreamMessagesRequest_Params; + case: "params"; + } | { + /** + * @generated from field: code.common.v1.ClientPong pong = 2; + */ + value: ClientPong; + case: "pong"; + } | { case: undefined; value?: undefined } = { case: undefined }; - constructor(data?: PartialMessage) { + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "code.chat.v2.GetMessagesResponse"; + static readonly typeName = "code.chat.v2.StreamMessagesRequest"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "result", kind: "enum", T: proto3.getEnumType(GetMessagesResponse_Result) }, - { no: 2, name: "messages", kind: "message", T: ChatMessage, repeated: true }, + { no: 1, name: "params", kind: "message", T: StreamMessagesRequest_Params, oneof: "type" }, + { no: 2, name: "pong", kind: "message", T: ClientPong, oneof: "type" }, ]); - static fromBinary(bytes: Uint8Array, options?: Partial): GetMessagesResponse { - return new GetMessagesResponse().fromBinary(bytes, options); + static fromBinary(bytes: Uint8Array, options?: Partial): StreamMessagesRequest { + return new StreamMessagesRequest().fromBinary(bytes, options); } - static fromJson(jsonValue: JsonValue, options?: Partial): GetMessagesResponse { - return new GetMessagesResponse().fromJson(jsonValue, options); + static fromJson(jsonValue: JsonValue, options?: Partial): StreamMessagesRequest { + return new StreamMessagesRequest().fromJson(jsonValue, options); } - static fromJsonString(jsonString: string, options?: Partial): GetMessagesResponse { - return new GetMessagesResponse().fromJsonString(jsonString, options); + static fromJsonString(jsonString: string, options?: Partial): StreamMessagesRequest { + return new StreamMessagesRequest().fromJsonString(jsonString, options); } - static equals(a: GetMessagesResponse | PlainMessage | undefined, b: GetMessagesResponse | PlainMessage | undefined): boolean { - return proto3.util.equals(GetMessagesResponse, a, b); + static equals(a: StreamMessagesRequest | PlainMessage | undefined, b: StreamMessagesRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(StreamMessagesRequest, a, b); } } /** - * @generated from enum code.chat.v2.GetMessagesResponse.Result + * @generated from message code.chat.v2.StreamMessagesRequest.Params */ -export enum GetMessagesResponse_Result { +export class StreamMessagesRequest_Params extends Message$1 { /** - * @generated from enum value: OK = 0; + * @generated from field: code.common.v1.SolanaAccountId owner = 1; */ - OK = 0, + owner?: SolanaAccountId; /** - * @generated from enum value: DENIED = 1; + * @generated from field: code.common.v1.Signature signature = 2; */ - DENIED = 1, + signature?: Signature; /** - * @generated from enum value: CHAT_NOT_FOUND = 2; + * @generated from field: code.common.v1.ChatId chat_id = 3; */ - CHAT_NOT_FOUND = 2, + chatId?: ChatId; /** - * @generated from enum value: MESSAGE_NOT_FOUND = 3; + * Callers may optionally specify a resume mode other than last delivery pointer. + * + * @generated from oneof code.chat.v2.StreamMessagesRequest.Params.resume */ - MESSAGE_NOT_FOUND = 3, -} -// Retrieve enum metadata with: proto3.getEnumType(GetMessagesResponse_Result) -proto3.util.setEnumType(GetMessagesResponse_Result, "code.chat.v2.GetMessagesResponse.Result", [ - { no: 0, name: "OK" }, - { no: 1, name: "DENIED" }, - { no: 2, name: "CHAT_NOT_FOUND" }, - { no: 3, name: "MESSAGE_NOT_FOUND" }, -]); - -/** - * @generated from message code.chat.v2.OpenChatEventStream - */ -export class OpenChatEventStream extends Message { - /** - * @generated from field: code.common.v1.ChatId chat_id = 1; - */ - chatId?: ChatId; - - /** - * @generated from field: code.chat.v2.ChatMemberId member_id = 2; - */ - memberId?: ChatMemberId; - - /** - * @generated from field: code.common.v1.SolanaAccountId owner = 3; - */ - owner?: SolanaAccountId; - - /** - * @generated from field: code.common.v1.Signature signature = 4; - */ - signature?: Signature; + resume: { + /** + * Server will return all messages newer than this message id. + * + * @generated from field: code.chat.v2.MessageId last_known_message_id = 4; + */ + value: MessageId; + case: "lastKnownMessageId"; + } | { + /** + * Server will not load any previous messages. + * + * @generated from field: bool latest_only = 5; + */ + value: boolean; + case: "latestOnly"; + } | { case: undefined; value?: undefined } = { case: undefined }; - constructor(data?: PartialMessage) { + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "code.chat.v2.OpenChatEventStream"; + static readonly typeName = "code.chat.v2.StreamMessagesRequest.Params"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "chat_id", kind: "message", T: ChatId }, - { no: 2, name: "member_id", kind: "message", T: ChatMemberId }, - { no: 3, name: "owner", kind: "message", T: SolanaAccountId }, - { no: 4, name: "signature", kind: "message", T: Signature }, + { no: 1, name: "owner", kind: "message", T: SolanaAccountId }, + { no: 2, name: "signature", kind: "message", T: Signature }, + { no: 3, name: "chat_id", kind: "message", T: ChatId }, + { no: 4, name: "last_known_message_id", kind: "message", T: MessageId, oneof: "resume" }, + { no: 5, name: "latest_only", kind: "scalar", T: 8 /* ScalarType.BOOL */, oneof: "resume" }, ]); - static fromBinary(bytes: Uint8Array, options?: Partial): OpenChatEventStream { - return new OpenChatEventStream().fromBinary(bytes, options); + static fromBinary(bytes: Uint8Array, options?: Partial): StreamMessagesRequest_Params { + return new StreamMessagesRequest_Params().fromBinary(bytes, options); } - static fromJson(jsonValue: JsonValue, options?: Partial): OpenChatEventStream { - return new OpenChatEventStream().fromJson(jsonValue, options); + static fromJson(jsonValue: JsonValue, options?: Partial): StreamMessagesRequest_Params { + return new StreamMessagesRequest_Params().fromJson(jsonValue, options); } - static fromJsonString(jsonString: string, options?: Partial): OpenChatEventStream { - return new OpenChatEventStream().fromJsonString(jsonString, options); + static fromJsonString(jsonString: string, options?: Partial): StreamMessagesRequest_Params { + return new StreamMessagesRequest_Params().fromJsonString(jsonString, options); } - static equals(a: OpenChatEventStream | PlainMessage | undefined, b: OpenChatEventStream | PlainMessage | undefined): boolean { - return proto3.util.equals(OpenChatEventStream, a, b); + static equals(a: StreamMessagesRequest_Params | PlainMessage | undefined, b: StreamMessagesRequest_Params | PlainMessage | undefined): boolean { + return proto3.util.equals(StreamMessagesRequest_Params, a, b); } } /** - * @generated from message code.chat.v2.ChatStreamEvent + * @generated from message code.chat.v2.StreamMessagesResponse */ -export class ChatStreamEvent extends Message { +export class StreamMessagesResponse extends Message$1 { /** - * @generated from oneof code.chat.v2.ChatStreamEvent.type + * @generated from oneof code.chat.v2.StreamMessagesResponse.type */ type: { /** - * @generated from field: code.chat.v2.ChatMessage message = 1; + * @generated from field: code.common.v1.ServerPing ping = 1; */ - value: ChatMessage; - case: "message"; + value: ServerPing; + case: "ping"; } | { /** - * @generated from field: code.chat.v2.Pointer pointer = 2; + * @generated from field: code.chat.v2.StreamError error = 2; */ - value: Pointer; - case: "pointer"; + value: StreamError; + case: "error"; } | { /** - * @generated from field: code.chat.v2.IsTyping is_typing = 3; + * @generated from field: code.chat.v2.StreamMessagesResponse.MessageBatch messages = 3; */ - value: IsTyping; - case: "isTyping"; + value: StreamMessagesResponse_MessageBatch; + case: "messages"; } | { case: undefined; value?: undefined } = { case: undefined }; - constructor(data?: PartialMessage) { + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "code.chat.v2.ChatStreamEvent"; + static readonly typeName = "code.chat.v2.StreamMessagesResponse"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "message", kind: "message", T: ChatMessage, oneof: "type" }, - { no: 2, name: "pointer", kind: "message", T: Pointer, oneof: "type" }, - { no: 3, name: "is_typing", kind: "message", T: IsTyping, oneof: "type" }, + { no: 1, name: "ping", kind: "message", T: ServerPing, oneof: "type" }, + { no: 2, name: "error", kind: "message", T: StreamError, oneof: "type" }, + { no: 3, name: "messages", kind: "message", T: StreamMessagesResponse_MessageBatch, oneof: "type" }, ]); - static fromBinary(bytes: Uint8Array, options?: Partial): ChatStreamEvent { - return new ChatStreamEvent().fromBinary(bytes, options); + static fromBinary(bytes: Uint8Array, options?: Partial): StreamMessagesResponse { + return new StreamMessagesResponse().fromBinary(bytes, options); } - static fromJson(jsonValue: JsonValue, options?: Partial): ChatStreamEvent { - return new ChatStreamEvent().fromJson(jsonValue, options); + static fromJson(jsonValue: JsonValue, options?: Partial): StreamMessagesResponse { + return new StreamMessagesResponse().fromJson(jsonValue, options); } - static fromJsonString(jsonString: string, options?: Partial): ChatStreamEvent { - return new ChatStreamEvent().fromJsonString(jsonString, options); + static fromJsonString(jsonString: string, options?: Partial): StreamMessagesResponse { + return new StreamMessagesResponse().fromJsonString(jsonString, options); } - static equals(a: ChatStreamEvent | PlainMessage | undefined, b: ChatStreamEvent | PlainMessage | undefined): boolean { - return proto3.util.equals(ChatStreamEvent, a, b); + static equals(a: StreamMessagesResponse | PlainMessage | undefined, b: StreamMessagesResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(StreamMessagesResponse, a, b); } } /** - * @generated from message code.chat.v2.ChatStreamEventBatch + * @generated from message code.chat.v2.StreamMessagesResponse.MessageBatch */ -export class ChatStreamEventBatch extends Message { +export class StreamMessagesResponse_MessageBatch extends Message$1 { /** - * @generated from field: repeated code.chat.v2.ChatStreamEvent events = 2; + * @generated from field: repeated code.chat.v2.Message messages = 1; */ - events: ChatStreamEvent[] = []; + messages: Message[] = []; - constructor(data?: PartialMessage) { + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "code.chat.v2.ChatStreamEventBatch"; + static readonly typeName = "code.chat.v2.StreamMessagesResponse.MessageBatch"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 2, name: "events", kind: "message", T: ChatStreamEvent, repeated: true }, + { no: 1, name: "messages", kind: "message", T: Message, repeated: true }, ]); - static fromBinary(bytes: Uint8Array, options?: Partial): ChatStreamEventBatch { - return new ChatStreamEventBatch().fromBinary(bytes, options); + static fromBinary(bytes: Uint8Array, options?: Partial): StreamMessagesResponse_MessageBatch { + return new StreamMessagesResponse_MessageBatch().fromBinary(bytes, options); } - static fromJson(jsonValue: JsonValue, options?: Partial): ChatStreamEventBatch { - return new ChatStreamEventBatch().fromJson(jsonValue, options); + static fromJson(jsonValue: JsonValue, options?: Partial): StreamMessagesResponse_MessageBatch { + return new StreamMessagesResponse_MessageBatch().fromJson(jsonValue, options); } - static fromJsonString(jsonString: string, options?: Partial): ChatStreamEventBatch { - return new ChatStreamEventBatch().fromJsonString(jsonString, options); + static fromJsonString(jsonString: string, options?: Partial): StreamMessagesResponse_MessageBatch { + return new StreamMessagesResponse_MessageBatch().fromJsonString(jsonString, options); } - static equals(a: ChatStreamEventBatch | PlainMessage | undefined, b: ChatStreamEventBatch | PlainMessage | undefined): boolean { - return proto3.util.equals(ChatStreamEventBatch, a, b); + static equals(a: StreamMessagesResponse_MessageBatch | PlainMessage | undefined, b: StreamMessagesResponse_MessageBatch | PlainMessage | undefined): boolean { + return proto3.util.equals(StreamMessagesResponse_MessageBatch, a, b); } } /** - * @generated from message code.chat.v2.ChatStreamEventError + * @generated from message code.chat.v2.StreamError */ -export class ChatStreamEventError extends Message { +export class StreamError extends Message$1 { /** - * @generated from field: code.chat.v2.ChatStreamEventError.Code code = 1; + * @generated from field: code.chat.v2.StreamError.Code code = 1; */ - code = ChatStreamEventError_Code.DENIED; + code = StreamError_Code.DENIED; - constructor(data?: PartialMessage) { + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "code.chat.v2.ChatStreamEventError"; + static readonly typeName = "code.chat.v2.StreamError"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "code", kind: "enum", T: proto3.getEnumType(ChatStreamEventError_Code) }, + { no: 1, name: "code", kind: "enum", T: proto3.getEnumType(StreamError_Code) }, ]); - static fromBinary(bytes: Uint8Array, options?: Partial): ChatStreamEventError { - return new ChatStreamEventError().fromBinary(bytes, options); + static fromBinary(bytes: Uint8Array, options?: Partial): StreamError { + return new StreamError().fromBinary(bytes, options); } - static fromJson(jsonValue: JsonValue, options?: Partial): ChatStreamEventError { - return new ChatStreamEventError().fromJson(jsonValue, options); + static fromJson(jsonValue: JsonValue, options?: Partial): StreamError { + return new StreamError().fromJson(jsonValue, options); } - static fromJsonString(jsonString: string, options?: Partial): ChatStreamEventError { - return new ChatStreamEventError().fromJsonString(jsonString, options); + static fromJsonString(jsonString: string, options?: Partial): StreamError { + return new StreamError().fromJsonString(jsonString, options); } - static equals(a: ChatStreamEventError | PlainMessage | undefined, b: ChatStreamEventError | PlainMessage | undefined): boolean { - return proto3.util.equals(ChatStreamEventError, a, b); + static equals(a: StreamError | PlainMessage | undefined, b: StreamError | PlainMessage | undefined): boolean { + return proto3.util.equals(StreamError, a, b); } } /** - * @generated from enum code.chat.v2.ChatStreamEventError.Code + * @generated from enum code.chat.v2.StreamError.Code */ -export enum ChatStreamEventError_Code { +export enum StreamError_Code { /** * @generated from enum value: DENIED = 0; */ DENIED = 0, - - /** - * @generated from enum value: CHAT_NOT_FOUND = 1; - */ - CHAT_NOT_FOUND = 1, } -// Retrieve enum metadata with: proto3.getEnumType(ChatStreamEventError_Code) -proto3.util.setEnumType(ChatStreamEventError_Code, "code.chat.v2.ChatStreamEventError.Code", [ +// Retrieve enum metadata with: proto3.getEnumType(StreamError_Code) +proto3.util.setEnumType(StreamError_Code, "code.chat.v2.StreamError.Code", [ { no: 0, name: "DENIED" }, - { no: 1, name: "CHAT_NOT_FOUND" }, ]); /** - * @generated from message code.chat.v2.StreamChatEventsRequest + * @generated from message code.chat.v2.GetChatsRequest */ -export class StreamChatEventsRequest extends Message { +export class GetChatsRequest extends Message$1 { /** - * @generated from oneof code.chat.v2.StreamChatEventsRequest.type + * @generated from field: code.common.v1.SolanaAccountId owner = 1; */ - type: { - /** - * @generated from field: code.chat.v2.OpenChatEventStream open_stream = 1; - */ - value: OpenChatEventStream; - case: "openStream"; - } | { - /** - * @generated from field: code.common.v1.ClientPong pong = 2; - */ - value: ClientPong; - case: "pong"; - } | { case: undefined; value?: undefined } = { case: undefined }; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "code.chat.v2.StreamChatEventsRequest"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "open_stream", kind: "message", T: OpenChatEventStream, oneof: "type" }, - { no: 2, name: "pong", kind: "message", T: ClientPong, oneof: "type" }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): StreamChatEventsRequest { - return new StreamChatEventsRequest().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): StreamChatEventsRequest { - return new StreamChatEventsRequest().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): StreamChatEventsRequest { - return new StreamChatEventsRequest().fromJsonString(jsonString, options); - } - - static equals(a: StreamChatEventsRequest | PlainMessage | undefined, b: StreamChatEventsRequest | PlainMessage | undefined): boolean { - return proto3.util.equals(StreamChatEventsRequest, a, b); - } -} + owner?: SolanaAccountId; -/** - * @generated from message code.chat.v2.StreamChatEventsResponse - */ -export class StreamChatEventsResponse extends Message { /** - * @generated from oneof code.chat.v2.StreamChatEventsResponse.type + * @generated from field: code.common.v1.Signature signature = 2; */ - type: { - /** - * @generated from field: code.chat.v2.ChatStreamEventBatch events = 1; - */ - value: ChatStreamEventBatch; - case: "events"; - } | { - /** - * @generated from field: code.common.v1.ServerPing ping = 2; - */ - value: ServerPing; - case: "ping"; - } | { - /** - * @generated from field: code.chat.v2.ChatStreamEventError error = 3; - */ - value: ChatStreamEventError; - case: "error"; - } | { case: undefined; value?: undefined } = { case: undefined }; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "code.chat.v2.StreamChatEventsResponse"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "events", kind: "message", T: ChatStreamEventBatch, oneof: "type" }, - { no: 2, name: "ping", kind: "message", T: ServerPing, oneof: "type" }, - { no: 3, name: "error", kind: "message", T: ChatStreamEventError, oneof: "type" }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): StreamChatEventsResponse { - return new StreamChatEventsResponse().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): StreamChatEventsResponse { - return new StreamChatEventsResponse().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): StreamChatEventsResponse { - return new StreamChatEventsResponse().fromJsonString(jsonString, options); - } - - static equals(a: StreamChatEventsResponse | PlainMessage | undefined, b: StreamChatEventsResponse | PlainMessage | undefined): boolean { - return proto3.util.equals(StreamChatEventsResponse, a, b); - } -} + signature?: Signature; -/** - * @generated from message code.chat.v2.StartChatRequest - */ -export class StartChatRequest extends Message { /** - * @generated from field: code.common.v1.SolanaAccountId owner = 1; + * @generated from field: uint32 page_size = 3; */ - owner?: SolanaAccountId; + pageSize = 0; /** - * @generated from field: code.common.v1.Signature signature = 2; + * @generated from field: code.chat.v2.Cursor cursor = 4; */ - signature?: Signature; + cursor?: Cursor; /** - * @generated from oneof code.chat.v2.StartChatRequest.parameters + * @generated from field: code.chat.v2.GetChatsRequest.Direction direction = 5; */ - parameters: { - /** - * GroupChatParameters group_chat = 4; - * - * @generated from field: code.chat.v2.StartTipChatParameters tip_chat = 3; - */ - value: StartTipChatParameters; - case: "tipChat"; - } | { case: undefined; value?: undefined } = { case: undefined }; + direction = GetChatsRequest_Direction.ASC; - constructor(data?: PartialMessage) { + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "code.chat.v2.StartChatRequest"; + static readonly typeName = "code.chat.v2.GetChatsRequest"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "owner", kind: "message", T: SolanaAccountId }, { no: 2, name: "signature", kind: "message", T: Signature }, - { no: 3, name: "tip_chat", kind: "message", T: StartTipChatParameters, oneof: "parameters" }, + { no: 3, name: "page_size", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + { no: 4, name: "cursor", kind: "message", T: Cursor }, + { no: 5, name: "direction", kind: "enum", T: proto3.getEnumType(GetChatsRequest_Direction) }, ]); - static fromBinary(bytes: Uint8Array, options?: Partial): StartChatRequest { - return new StartChatRequest().fromBinary(bytes, options); + static fromBinary(bytes: Uint8Array, options?: Partial): GetChatsRequest { + return new GetChatsRequest().fromBinary(bytes, options); } - static fromJson(jsonValue: JsonValue, options?: Partial): StartChatRequest { - return new StartChatRequest().fromJson(jsonValue, options); + static fromJson(jsonValue: JsonValue, options?: Partial): GetChatsRequest { + return new GetChatsRequest().fromJson(jsonValue, options); } - static fromJsonString(jsonString: string, options?: Partial): StartChatRequest { - return new StartChatRequest().fromJsonString(jsonString, options); + static fromJsonString(jsonString: string, options?: Partial): GetChatsRequest { + return new GetChatsRequest().fromJsonString(jsonString, options); } - static equals(a: StartChatRequest | PlainMessage | undefined, b: StartChatRequest | PlainMessage | undefined): boolean { - return proto3.util.equals(StartChatRequest, a, b); + static equals(a: GetChatsRequest | PlainMessage | undefined, b: GetChatsRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(GetChatsRequest, a, b); } } /** - * Starts a two-way chat between a tipper and tippee. Chat members are - * inferred from the 12 word public keys involved in the intent. Only - * the tippee can start the chat, and the tipper is anonymous if this - * is the first between the involved Code users. - * - * @generated from message code.chat.v2.StartTipChatParameters + * @generated from enum code.chat.v2.GetChatsRequest.Direction */ -export class StartTipChatParameters extends Message { +export enum GetChatsRequest_Direction { /** - * The tip's intent ID, which can be extracted from the reference in - * an ExchangeDataContent message content where the verb is RECEIVED_TIP. - * - * @generated from field: code.common.v1.IntentId intent_id = 1; + * @generated from enum value: ASC = 0; */ - intentId?: IntentId; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "code.chat.v2.StartTipChatParameters"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "intent_id", kind: "message", T: IntentId }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): StartTipChatParameters { - return new StartTipChatParameters().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): StartTipChatParameters { - return new StartTipChatParameters().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): StartTipChatParameters { - return new StartTipChatParameters().fromJsonString(jsonString, options); - } + ASC = 0, - static equals(a: StartTipChatParameters | PlainMessage | undefined, b: StartTipChatParameters | PlainMessage | undefined): boolean { - return proto3.util.equals(StartTipChatParameters, a, b); - } + /** + * @generated from enum value: DESC = 1; + */ + DESC = 1, } +// Retrieve enum metadata with: proto3.getEnumType(GetChatsRequest_Direction) +proto3.util.setEnumType(GetChatsRequest_Direction, "code.chat.v2.GetChatsRequest.Direction", [ + { no: 0, name: "ASC" }, + { no: 1, name: "DESC" }, +]); /** - * @generated from message code.chat.v2.StartChatResponse + * @generated from message code.chat.v2.GetChatsResponse */ -export class StartChatResponse extends Message { +export class GetChatsResponse extends Message$1 { /** - * @generated from field: code.chat.v2.StartChatResponse.Result result = 1; + * @generated from field: code.chat.v2.GetChatsResponse.Result result = 1; */ - result = StartChatResponse_Result.OK; + result = GetChatsResponse_Result.OK; /** - * The chat to use if the RPC was successful - * - * @generated from field: code.chat.v2.ChatMetadata chat = 2; + * @generated from field: repeated code.chat.v2.Metadata chats = 2; */ - chat?: ChatMetadata; + chats: Metadata[] = []; - constructor(data?: PartialMessage) { + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "code.chat.v2.StartChatResponse"; + static readonly typeName = "code.chat.v2.GetChatsResponse"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "result", kind: "enum", T: proto3.getEnumType(StartChatResponse_Result) }, - { no: 2, name: "chat", kind: "message", T: ChatMetadata }, + { no: 1, name: "result", kind: "enum", T: proto3.getEnumType(GetChatsResponse_Result) }, + { no: 2, name: "chats", kind: "message", T: Metadata, repeated: true }, ]); - static fromBinary(bytes: Uint8Array, options?: Partial): StartChatResponse { - return new StartChatResponse().fromBinary(bytes, options); + static fromBinary(bytes: Uint8Array, options?: Partial): GetChatsResponse { + return new GetChatsResponse().fromBinary(bytes, options); } - static fromJson(jsonValue: JsonValue, options?: Partial): StartChatResponse { - return new StartChatResponse().fromJson(jsonValue, options); + static fromJson(jsonValue: JsonValue, options?: Partial): GetChatsResponse { + return new GetChatsResponse().fromJson(jsonValue, options); } - static fromJsonString(jsonString: string, options?: Partial): StartChatResponse { - return new StartChatResponse().fromJsonString(jsonString, options); + static fromJsonString(jsonString: string, options?: Partial): GetChatsResponse { + return new GetChatsResponse().fromJsonString(jsonString, options); } - static equals(a: StartChatResponse | PlainMessage | undefined, b: StartChatResponse | PlainMessage | undefined): boolean { - return proto3.util.equals(StartChatResponse, a, b); + static equals(a: GetChatsResponse | PlainMessage | undefined, b: GetChatsResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(GetChatsResponse, a, b); } } /** - * @generated from enum code.chat.v2.StartChatResponse.Result + * @generated from enum code.chat.v2.GetChatsResponse.Result */ -export enum StartChatResponse_Result { +export enum GetChatsResponse_Result { /** * @generated from enum value: OK = 0; */ OK = 0, - - /** - * @generated from enum value: DENIED = 1; - */ - DENIED = 1, - - /** - * @generated from enum value: INVALID_PARAMETER = 2; - */ - INVALID_PARAMETER = 2, } -// Retrieve enum metadata with: proto3.getEnumType(StartChatResponse_Result) -proto3.util.setEnumType(StartChatResponse_Result, "code.chat.v2.StartChatResponse.Result", [ +// Retrieve enum metadata with: proto3.getEnumType(GetChatsResponse_Result) +proto3.util.setEnumType(GetChatsResponse_Result, "code.chat.v2.GetChatsResponse.Result", [ { no: 0, name: "OK" }, - { no: 1, name: "DENIED" }, - { no: 2, name: "INVALID_PARAMETER" }, ]); /** - * @generated from message code.chat.v2.SendMessageRequest + * @generated from message code.chat.v2.GetMessagesRequest */ -export class SendMessageRequest extends Message { +export class GetMessagesRequest extends Message$1 { /** * @generated from field: code.common.v1.ChatId chat_id = 1; */ chatId?: ChatId; /** - * @generated from field: code.chat.v2.ChatMemberId member_id = 2; + * @generated from field: code.common.v1.SolanaAccountId owner = 2; */ - memberId?: ChatMemberId; + owner?: SolanaAccountId; /** - * Allowed content types that can be sent by client: - * - TextContent - * - ThankYouContent - * - * @generated from field: repeated code.chat.v2.Content content = 3; + * @generated from field: code.common.v1.Signature signature = 3; */ - content: Content[] = []; + signature?: Signature; /** - * @generated from field: code.common.v1.SolanaAccountId owner = 4; + * @generated from field: uint32 page_size = 4; */ - owner?: SolanaAccountId; + pageSize = 0; /** - * @generated from field: code.common.v1.Signature signature = 5; + * @generated from field: code.chat.v2.Cursor cursor = 5; */ - signature?: Signature; + cursor?: Cursor; - constructor(data?: PartialMessage) { + /** + * @generated from field: code.chat.v2.GetMessagesRequest.Direction direction = 6; + */ + direction = GetMessagesRequest_Direction.ASC; + + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "code.chat.v2.SendMessageRequest"; + static readonly typeName = "code.chat.v2.GetMessagesRequest"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "chat_id", kind: "message", T: ChatId }, - { no: 2, name: "member_id", kind: "message", T: ChatMemberId }, - { no: 3, name: "content", kind: "message", T: Content, repeated: true }, - { no: 4, name: "owner", kind: "message", T: SolanaAccountId }, - { no: 5, name: "signature", kind: "message", T: Signature }, + { no: 2, name: "owner", kind: "message", T: SolanaAccountId }, + { no: 3, name: "signature", kind: "message", T: Signature }, + { no: 4, name: "page_size", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + { no: 5, name: "cursor", kind: "message", T: Cursor }, + { no: 6, name: "direction", kind: "enum", T: proto3.getEnumType(GetMessagesRequest_Direction) }, ]); - static fromBinary(bytes: Uint8Array, options?: Partial): SendMessageRequest { - return new SendMessageRequest().fromBinary(bytes, options); + static fromBinary(bytes: Uint8Array, options?: Partial): GetMessagesRequest { + return new GetMessagesRequest().fromBinary(bytes, options); } - static fromJson(jsonValue: JsonValue, options?: Partial): SendMessageRequest { - return new SendMessageRequest().fromJson(jsonValue, options); + static fromJson(jsonValue: JsonValue, options?: Partial): GetMessagesRequest { + return new GetMessagesRequest().fromJson(jsonValue, options); } - static fromJsonString(jsonString: string, options?: Partial): SendMessageRequest { - return new SendMessageRequest().fromJsonString(jsonString, options); + static fromJsonString(jsonString: string, options?: Partial): GetMessagesRequest { + return new GetMessagesRequest().fromJsonString(jsonString, options); } - static equals(a: SendMessageRequest | PlainMessage | undefined, b: SendMessageRequest | PlainMessage | undefined): boolean { - return proto3.util.equals(SendMessageRequest, a, b); + static equals(a: GetMessagesRequest | PlainMessage | undefined, b: GetMessagesRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(GetMessagesRequest, a, b); } } /** - * @generated from message code.chat.v2.SendMessageResponse + * @generated from enum code.chat.v2.GetMessagesRequest.Direction */ -export class SendMessageResponse extends Message { +export enum GetMessagesRequest_Direction { /** - * @generated from field: code.chat.v2.SendMessageResponse.Result result = 1; + * @generated from enum value: ASC = 0; */ - result = SendMessageResponse_Result.OK; + ASC = 0, /** - * The chat message that was sent if the RPC was succesful, which includes - * server-side metadata like the generated message ID and official timestamp - * - * @generated from field: code.chat.v2.ChatMessage message = 2; + * @generated from enum value: DESC = 1; + */ + DESC = 1, +} +// Retrieve enum metadata with: proto3.getEnumType(GetMessagesRequest_Direction) +proto3.util.setEnumType(GetMessagesRequest_Direction, "code.chat.v2.GetMessagesRequest.Direction", [ + { no: 0, name: "ASC" }, + { no: 1, name: "DESC" }, +]); + +/** + * @generated from message code.chat.v2.GetMessagesResponse + */ +export class GetMessagesResponse extends Message$1 { + /** + * @generated from field: code.chat.v2.GetMessagesResponse.Result result = 1; */ - message?: ChatMessage; + result = GetMessagesResponse_Result.OK; - constructor(data?: PartialMessage) { + /** + * @generated from field: repeated code.chat.v2.Message messages = 2; + */ + messages: Message[] = []; + + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "code.chat.v2.SendMessageResponse"; + static readonly typeName = "code.chat.v2.GetMessagesResponse"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "result", kind: "enum", T: proto3.getEnumType(SendMessageResponse_Result) }, - { no: 2, name: "message", kind: "message", T: ChatMessage }, + { no: 1, name: "result", kind: "enum", T: proto3.getEnumType(GetMessagesResponse_Result) }, + { no: 2, name: "messages", kind: "message", T: Message, repeated: true }, ]); - static fromBinary(bytes: Uint8Array, options?: Partial): SendMessageResponse { - return new SendMessageResponse().fromBinary(bytes, options); + static fromBinary(bytes: Uint8Array, options?: Partial): GetMessagesResponse { + return new GetMessagesResponse().fromBinary(bytes, options); } - static fromJson(jsonValue: JsonValue, options?: Partial): SendMessageResponse { - return new SendMessageResponse().fromJson(jsonValue, options); + static fromJson(jsonValue: JsonValue, options?: Partial): GetMessagesResponse { + return new GetMessagesResponse().fromJson(jsonValue, options); } - static fromJsonString(jsonString: string, options?: Partial): SendMessageResponse { - return new SendMessageResponse().fromJsonString(jsonString, options); + static fromJsonString(jsonString: string, options?: Partial): GetMessagesResponse { + return new GetMessagesResponse().fromJsonString(jsonString, options); } - static equals(a: SendMessageResponse | PlainMessage | undefined, b: SendMessageResponse | PlainMessage | undefined): boolean { - return proto3.util.equals(SendMessageResponse, a, b); + static equals(a: GetMessagesResponse | PlainMessage | undefined, b: GetMessagesResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(GetMessagesResponse, a, b); } } /** - * @generated from enum code.chat.v2.SendMessageResponse.Result + * @generated from enum code.chat.v2.GetMessagesResponse.Result */ -export enum SendMessageResponse_Result { +export enum GetMessagesResponse_Result { /** * @generated from enum value: OK = 0; */ @@ -1012,271 +897,340 @@ export enum SendMessageResponse_Result { * @generated from enum value: DENIED = 1; */ DENIED = 1, - - /** - * @generated from enum value: CHAT_NOT_FOUND = 2; - */ - CHAT_NOT_FOUND = 2, - - /** - * @generated from enum value: INVALID_CHAT_TYPE = 3; - */ - INVALID_CHAT_TYPE = 3, - - /** - * @generated from enum value: INVALID_CONTENT_TYPE = 4; - */ - INVALID_CONTENT_TYPE = 4, } -// Retrieve enum metadata with: proto3.getEnumType(SendMessageResponse_Result) -proto3.util.setEnumType(SendMessageResponse_Result, "code.chat.v2.SendMessageResponse.Result", [ +// Retrieve enum metadata with: proto3.getEnumType(GetMessagesResponse_Result) +proto3.util.setEnumType(GetMessagesResponse_Result, "code.chat.v2.GetMessagesResponse.Result", [ { no: 0, name: "OK" }, { no: 1, name: "DENIED" }, - { no: 2, name: "CHAT_NOT_FOUND" }, - { no: 3, name: "INVALID_CHAT_TYPE" }, - { no: 4, name: "INVALID_CONTENT_TYPE" }, ]); /** - * @generated from message code.chat.v2.AdvancePointerRequest + * @generated from message code.chat.v2.StartChatRequest */ -export class AdvancePointerRequest extends Message { +export class StartChatRequest extends Message$1 { /** - * @generated from field: code.common.v1.ChatId chat_id = 1; + * @generated from field: code.common.v1.SolanaAccountId owner = 1; */ - chatId?: ChatId; + owner?: SolanaAccountId; /** - * @generated from field: code.chat.v2.Pointer pointer = 2; + * @generated from field: code.common.v1.Signature signature = 2; */ - pointer?: Pointer; + signature?: Signature; /** - * @generated from field: code.common.v1.SolanaAccountId owner = 3; + * @generated from oneof code.chat.v2.StartChatRequest.parameters */ - owner?: SolanaAccountId; + parameters: { + /** + * @generated from field: code.chat.v2.StartTwoWayChatParameters two_way_chat = 3; + */ + value: StartTwoWayChatParameters; + case: "twoWayChat"; + } | { case: undefined; value?: undefined } = { case: undefined }; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "code.chat.v2.StartChatRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "owner", kind: "message", T: SolanaAccountId }, + { no: 2, name: "signature", kind: "message", T: Signature }, + { no: 3, name: "two_way_chat", kind: "message", T: StartTwoWayChatParameters, oneof: "parameters" }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): StartChatRequest { + return new StartChatRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): StartChatRequest { + return new StartChatRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): StartChatRequest { + return new StartChatRequest().fromJsonString(jsonString, options); + } + static equals(a: StartChatRequest | PlainMessage | undefined, b: StartChatRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(StartChatRequest, a, b); + } +} + +/** + * StartTwoWayChatParameters contains the parameters required to start + * or recover a two way chat between the caller and the specified 'other_user'. + * + * The 'other_user' is currently the 'tip_address', normally retrieved from + * user.Identity.GetTwitterUser(username). + * + * @generated from message code.chat.v2.StartTwoWayChatParameters + */ +export class StartTwoWayChatParameters extends Message$1 { /** - * @generated from field: code.common.v1.Signature signature = 4; + * The account id of the user the caller wishes to chat with. + * + * This will be the `tip` (or equivalent) address. + * + * @generated from field: code.common.v1.SolanaAccountId other_user = 1; */ - signature?: Signature; + otherUser?: SolanaAccountId; - constructor(data?: PartialMessage) { + /** + * The intent_id of the payment that initiated the chat/friendship. + * + * This field is optional. It is used as an optimization when the server has not + * yet observed the establishment of a friendship. In this case, the server will + * use the provided intent_id to verify the friendship. + * + * This is most likely to occur when initiating a chat with a user for the first + * time. + * + * @generated from field: code.common.v1.IntentId intent_id = 2; + */ + intentId?: IntentId; + + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "code.chat.v2.AdvancePointerRequest"; + static readonly typeName = "code.chat.v2.StartTwoWayChatParameters"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "chat_id", kind: "message", T: ChatId }, - { no: 2, name: "pointer", kind: "message", T: Pointer }, - { no: 3, name: "owner", kind: "message", T: SolanaAccountId }, - { no: 4, name: "signature", kind: "message", T: Signature }, + { no: 1, name: "other_user", kind: "message", T: SolanaAccountId }, + { no: 2, name: "intent_id", kind: "message", T: IntentId }, ]); - static fromBinary(bytes: Uint8Array, options?: Partial): AdvancePointerRequest { - return new AdvancePointerRequest().fromBinary(bytes, options); + static fromBinary(bytes: Uint8Array, options?: Partial): StartTwoWayChatParameters { + return new StartTwoWayChatParameters().fromBinary(bytes, options); } - static fromJson(jsonValue: JsonValue, options?: Partial): AdvancePointerRequest { - return new AdvancePointerRequest().fromJson(jsonValue, options); + static fromJson(jsonValue: JsonValue, options?: Partial): StartTwoWayChatParameters { + return new StartTwoWayChatParameters().fromJson(jsonValue, options); } - static fromJsonString(jsonString: string, options?: Partial): AdvancePointerRequest { - return new AdvancePointerRequest().fromJsonString(jsonString, options); + static fromJsonString(jsonString: string, options?: Partial): StartTwoWayChatParameters { + return new StartTwoWayChatParameters().fromJsonString(jsonString, options); } - static equals(a: AdvancePointerRequest | PlainMessage | undefined, b: AdvancePointerRequest | PlainMessage | undefined): boolean { - return proto3.util.equals(AdvancePointerRequest, a, b); + static equals(a: StartTwoWayChatParameters | PlainMessage | undefined, b: StartTwoWayChatParameters | PlainMessage | undefined): boolean { + return proto3.util.equals(StartTwoWayChatParameters, a, b); } } /** - * @generated from message code.chat.v2.AdvancePointerResponse + * @generated from message code.chat.v2.StartChatResponse */ -export class AdvancePointerResponse extends Message { +export class StartChatResponse extends Message$1 { /** - * @generated from field: code.chat.v2.AdvancePointerResponse.Result result = 1; + * @generated from field: code.chat.v2.StartChatResponse.Result result = 1; */ - result = AdvancePointerResponse_Result.OK; + result = StartChatResponse_Result.OK; - constructor(data?: PartialMessage) { + /** + * The chat to use if the RPC was successful. + * + * @generated from field: code.chat.v2.Metadata chat = 2; + */ + chat?: Metadata; + + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "code.chat.v2.AdvancePointerResponse"; + static readonly typeName = "code.chat.v2.StartChatResponse"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "result", kind: "enum", T: proto3.getEnumType(AdvancePointerResponse_Result) }, + { no: 1, name: "result", kind: "enum", T: proto3.getEnumType(StartChatResponse_Result) }, + { no: 2, name: "chat", kind: "message", T: Metadata }, ]); - static fromBinary(bytes: Uint8Array, options?: Partial): AdvancePointerResponse { - return new AdvancePointerResponse().fromBinary(bytes, options); + static fromBinary(bytes: Uint8Array, options?: Partial): StartChatResponse { + return new StartChatResponse().fromBinary(bytes, options); } - static fromJson(jsonValue: JsonValue, options?: Partial): AdvancePointerResponse { - return new AdvancePointerResponse().fromJson(jsonValue, options); + static fromJson(jsonValue: JsonValue, options?: Partial): StartChatResponse { + return new StartChatResponse().fromJson(jsonValue, options); } - static fromJsonString(jsonString: string, options?: Partial): AdvancePointerResponse { - return new AdvancePointerResponse().fromJsonString(jsonString, options); + static fromJsonString(jsonString: string, options?: Partial): StartChatResponse { + return new StartChatResponse().fromJsonString(jsonString, options); } - static equals(a: AdvancePointerResponse | PlainMessage | undefined, b: AdvancePointerResponse | PlainMessage | undefined): boolean { - return proto3.util.equals(AdvancePointerResponse, a, b); + static equals(a: StartChatResponse | PlainMessage | undefined, b: StartChatResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(StartChatResponse, a, b); } } /** - * @generated from enum code.chat.v2.AdvancePointerResponse.Result + * @generated from enum code.chat.v2.StartChatResponse.Result */ -export enum AdvancePointerResponse_Result { +export enum StartChatResponse_Result { /** * @generated from enum value: OK = 0; */ OK = 0, /** + * DENIED indicates the caller is not allowed to start/join the chat. + * * @generated from enum value: DENIED = 1; */ DENIED = 1, /** - * @generated from enum value: CHAT_NOT_FOUND = 2; + * INVALID_PRAMETER indicates one of the parameters is invalid. + * + * @generated from enum value: INVALID_PARAMETER = 2; + */ + INVALID_PARAMETER = 2, + + /** + * PENDING indicates that the payment (for chat) intent is pending confirmation + * before the service will permit the creation of the chat. This can happen in + * cases where the block chain is particularly slow (beyond our RPC timeouts). + * + * @generated from enum value: PENDING = 3; */ - CHAT_NOT_FOUND = 2, + PENDING = 3, /** - * @generated from enum value: MESSAGE_NOT_FOUND = 3; + * MISSING_IDENTITY indicates that there is no identity for the user (creator). + * + * @generated from enum value: MISSING_IDENTITY = 4; */ - MESSAGE_NOT_FOUND = 3, + MISSING_IDENTITY = 4, /** - * @generated from enum value: INVALID_POINTER_TYPE = 4; + * USER_NOT_FOUND indicates that (one of) the target user's was not found. + * + * @generated from enum value: USER_NOT_FOUND = 5; */ - INVALID_POINTER_TYPE = 4, + USER_NOT_FOUND = 5, } -// Retrieve enum metadata with: proto3.getEnumType(AdvancePointerResponse_Result) -proto3.util.setEnumType(AdvancePointerResponse_Result, "code.chat.v2.AdvancePointerResponse.Result", [ +// Retrieve enum metadata with: proto3.getEnumType(StartChatResponse_Result) +proto3.util.setEnumType(StartChatResponse_Result, "code.chat.v2.StartChatResponse.Result", [ { no: 0, name: "OK" }, { no: 1, name: "DENIED" }, - { no: 2, name: "CHAT_NOT_FOUND" }, - { no: 3, name: "MESSAGE_NOT_FOUND" }, - { no: 4, name: "INVALID_POINTER_TYPE" }, + { no: 2, name: "INVALID_PARAMETER" }, + { no: 3, name: "PENDING" }, + { no: 4, name: "MISSING_IDENTITY" }, + { no: 5, name: "USER_NOT_FOUND" }, ]); /** - * @generated from message code.chat.v2.RevealIdentityRequest + * @generated from message code.chat.v2.SendMessageRequest */ -export class RevealIdentityRequest extends Message { +export class SendMessageRequest extends Message$1 { /** * @generated from field: code.common.v1.ChatId chat_id = 1; */ chatId?: ChatId; /** - * @generated from field: code.chat.v2.ChatMemberId member_id = 2; - */ - memberId?: ChatMemberId; - - /** - * @generated from field: code.chat.v2.ChatMemberIdentity identity = 3; + * Allowed content types that can be sent by client: + * - TextContent + * - ThankYouContent + * + * @generated from field: repeated code.chat.v2.Content content = 2; */ - identity?: ChatMemberIdentity; + content: Content[] = []; /** - * @generated from field: code.common.v1.SolanaAccountId owner = 4; + * @generated from field: code.common.v1.SolanaAccountId owner = 3; */ owner?: SolanaAccountId; /** - * @generated from field: code.common.v1.Signature signature = 5; + * @generated from field: code.common.v1.Signature signature = 4; */ signature?: Signature; - constructor(data?: PartialMessage) { + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "code.chat.v2.RevealIdentityRequest"; + static readonly typeName = "code.chat.v2.SendMessageRequest"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "chat_id", kind: "message", T: ChatId }, - { no: 2, name: "member_id", kind: "message", T: ChatMemberId }, - { no: 3, name: "identity", kind: "message", T: ChatMemberIdentity }, - { no: 4, name: "owner", kind: "message", T: SolanaAccountId }, - { no: 5, name: "signature", kind: "message", T: Signature }, + { no: 2, name: "content", kind: "message", T: Content, repeated: true }, + { no: 3, name: "owner", kind: "message", T: SolanaAccountId }, + { no: 4, name: "signature", kind: "message", T: Signature }, ]); - static fromBinary(bytes: Uint8Array, options?: Partial): RevealIdentityRequest { - return new RevealIdentityRequest().fromBinary(bytes, options); + static fromBinary(bytes: Uint8Array, options?: Partial): SendMessageRequest { + return new SendMessageRequest().fromBinary(bytes, options); } - static fromJson(jsonValue: JsonValue, options?: Partial): RevealIdentityRequest { - return new RevealIdentityRequest().fromJson(jsonValue, options); + static fromJson(jsonValue: JsonValue, options?: Partial): SendMessageRequest { + return new SendMessageRequest().fromJson(jsonValue, options); } - static fromJsonString(jsonString: string, options?: Partial): RevealIdentityRequest { - return new RevealIdentityRequest().fromJsonString(jsonString, options); + static fromJsonString(jsonString: string, options?: Partial): SendMessageRequest { + return new SendMessageRequest().fromJsonString(jsonString, options); } - static equals(a: RevealIdentityRequest | PlainMessage | undefined, b: RevealIdentityRequest | PlainMessage | undefined): boolean { - return proto3.util.equals(RevealIdentityRequest, a, b); + static equals(a: SendMessageRequest | PlainMessage | undefined, b: SendMessageRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(SendMessageRequest, a, b); } } /** - * @generated from message code.chat.v2.RevealIdentityResponse + * @generated from message code.chat.v2.SendMessageResponse */ -export class RevealIdentityResponse extends Message { +export class SendMessageResponse extends Message$1 { /** - * @generated from field: code.chat.v2.RevealIdentityResponse.Result result = 1; + * @generated from field: code.chat.v2.SendMessageResponse.Result result = 1; */ - result = RevealIdentityResponse_Result.OK; + result = SendMessageResponse_Result.OK; /** - * The chat message that was sent if the RPC was successful + * The chat message that was sent if the RPC was succesful, which includes + * server-side metadata like the generated message ID and official timestamp * - * @generated from field: code.chat.v2.ChatMessage message = 2; + * @generated from field: code.chat.v2.Message message = 2; */ - message?: ChatMessage; + message?: Message; - constructor(data?: PartialMessage) { + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "code.chat.v2.RevealIdentityResponse"; + static readonly typeName = "code.chat.v2.SendMessageResponse"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "result", kind: "enum", T: proto3.getEnumType(RevealIdentityResponse_Result) }, - { no: 2, name: "message", kind: "message", T: ChatMessage }, + { no: 1, name: "result", kind: "enum", T: proto3.getEnumType(SendMessageResponse_Result) }, + { no: 2, name: "message", kind: "message", T: Message }, ]); - static fromBinary(bytes: Uint8Array, options?: Partial): RevealIdentityResponse { - return new RevealIdentityResponse().fromBinary(bytes, options); + static fromBinary(bytes: Uint8Array, options?: Partial): SendMessageResponse { + return new SendMessageResponse().fromBinary(bytes, options); } - static fromJson(jsonValue: JsonValue, options?: Partial): RevealIdentityResponse { - return new RevealIdentityResponse().fromJson(jsonValue, options); + static fromJson(jsonValue: JsonValue, options?: Partial): SendMessageResponse { + return new SendMessageResponse().fromJson(jsonValue, options); } - static fromJsonString(jsonString: string, options?: Partial): RevealIdentityResponse { - return new RevealIdentityResponse().fromJsonString(jsonString, options); + static fromJsonString(jsonString: string, options?: Partial): SendMessageResponse { + return new SendMessageResponse().fromJsonString(jsonString, options); } - static equals(a: RevealIdentityResponse | PlainMessage | undefined, b: RevealIdentityResponse | PlainMessage | undefined): boolean { - return proto3.util.equals(RevealIdentityResponse, a, b); + static equals(a: SendMessageResponse | PlainMessage | undefined, b: SendMessageResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(SendMessageResponse, a, b); } } /** - * @generated from enum code.chat.v2.RevealIdentityResponse.Result + * @generated from enum code.chat.v2.SendMessageResponse.Result */ -export enum RevealIdentityResponse_Result { +export enum SendMessageResponse_Result { /** * @generated from enum value: OK = 0; */ @@ -1288,125 +1242,113 @@ export enum RevealIdentityResponse_Result { DENIED = 1, /** - * @generated from enum value: CHAT_NOT_FOUND = 2; - */ - CHAT_NOT_FOUND = 2, - - /** - * @generated from enum value: DIFFERENT_IDENTITY_REVEALED = 3; + * @generated from enum value: INVALID_CONTENT_TYPE = 2; */ - DIFFERENT_IDENTITY_REVEALED = 3, + INVALID_CONTENT_TYPE = 2, } -// Retrieve enum metadata with: proto3.getEnumType(RevealIdentityResponse_Result) -proto3.util.setEnumType(RevealIdentityResponse_Result, "code.chat.v2.RevealIdentityResponse.Result", [ +// Retrieve enum metadata with: proto3.getEnumType(SendMessageResponse_Result) +proto3.util.setEnumType(SendMessageResponse_Result, "code.chat.v2.SendMessageResponse.Result", [ { no: 0, name: "OK" }, { no: 1, name: "DENIED" }, - { no: 2, name: "CHAT_NOT_FOUND" }, - { no: 3, name: "DIFFERENT_IDENTITY_REVEALED" }, + { no: 2, name: "INVALID_CONTENT_TYPE" }, ]); /** - * @generated from message code.chat.v2.SetMuteStateRequest + * @generated from message code.chat.v2.AdvancePointerRequest */ -export class SetMuteStateRequest extends Message { +export class AdvancePointerRequest extends Message$1 { /** * @generated from field: code.common.v1.ChatId chat_id = 1; */ chatId?: ChatId; /** - * @generated from field: code.chat.v2.ChatMemberId member_id = 2; - */ - memberId?: ChatMemberId; - - /** - * @generated from field: bool is_muted = 3; + * @generated from field: code.chat.v2.Pointer pointer = 2; */ - isMuted = false; + pointer?: Pointer; /** - * @generated from field: code.common.v1.SolanaAccountId owner = 4; + * @generated from field: code.common.v1.SolanaAccountId owner = 3; */ owner?: SolanaAccountId; /** - * @generated from field: code.common.v1.Signature signature = 5; + * @generated from field: code.common.v1.Signature signature = 4; */ signature?: Signature; - constructor(data?: PartialMessage) { + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "code.chat.v2.SetMuteStateRequest"; + static readonly typeName = "code.chat.v2.AdvancePointerRequest"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "chat_id", kind: "message", T: ChatId }, - { no: 2, name: "member_id", kind: "message", T: ChatMemberId }, - { no: 3, name: "is_muted", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, - { no: 4, name: "owner", kind: "message", T: SolanaAccountId }, - { no: 5, name: "signature", kind: "message", T: Signature }, + { no: 2, name: "pointer", kind: "message", T: Pointer }, + { no: 3, name: "owner", kind: "message", T: SolanaAccountId }, + { no: 4, name: "signature", kind: "message", T: Signature }, ]); - static fromBinary(bytes: Uint8Array, options?: Partial): SetMuteStateRequest { - return new SetMuteStateRequest().fromBinary(bytes, options); + static fromBinary(bytes: Uint8Array, options?: Partial): AdvancePointerRequest { + return new AdvancePointerRequest().fromBinary(bytes, options); } - static fromJson(jsonValue: JsonValue, options?: Partial): SetMuteStateRequest { - return new SetMuteStateRequest().fromJson(jsonValue, options); + static fromJson(jsonValue: JsonValue, options?: Partial): AdvancePointerRequest { + return new AdvancePointerRequest().fromJson(jsonValue, options); } - static fromJsonString(jsonString: string, options?: Partial): SetMuteStateRequest { - return new SetMuteStateRequest().fromJsonString(jsonString, options); + static fromJsonString(jsonString: string, options?: Partial): AdvancePointerRequest { + return new AdvancePointerRequest().fromJsonString(jsonString, options); } - static equals(a: SetMuteStateRequest | PlainMessage | undefined, b: SetMuteStateRequest | PlainMessage | undefined): boolean { - return proto3.util.equals(SetMuteStateRequest, a, b); + static equals(a: AdvancePointerRequest | PlainMessage | undefined, b: AdvancePointerRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(AdvancePointerRequest, a, b); } } /** - * @generated from message code.chat.v2.SetMuteStateResponse + * @generated from message code.chat.v2.AdvancePointerResponse */ -export class SetMuteStateResponse extends Message { +export class AdvancePointerResponse extends Message$1 { /** - * @generated from field: code.chat.v2.SetMuteStateResponse.Result result = 1; + * @generated from field: code.chat.v2.AdvancePointerResponse.Result result = 1; */ - result = SetMuteStateResponse_Result.OK; + result = AdvancePointerResponse_Result.OK; - constructor(data?: PartialMessage) { + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "code.chat.v2.SetMuteStateResponse"; + static readonly typeName = "code.chat.v2.AdvancePointerResponse"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "result", kind: "enum", T: proto3.getEnumType(SetMuteStateResponse_Result) }, + { no: 1, name: "result", kind: "enum", T: proto3.getEnumType(AdvancePointerResponse_Result) }, ]); - static fromBinary(bytes: Uint8Array, options?: Partial): SetMuteStateResponse { - return new SetMuteStateResponse().fromBinary(bytes, options); + static fromBinary(bytes: Uint8Array, options?: Partial): AdvancePointerResponse { + return new AdvancePointerResponse().fromBinary(bytes, options); } - static fromJson(jsonValue: JsonValue, options?: Partial): SetMuteStateResponse { - return new SetMuteStateResponse().fromJson(jsonValue, options); + static fromJson(jsonValue: JsonValue, options?: Partial): AdvancePointerResponse { + return new AdvancePointerResponse().fromJson(jsonValue, options); } - static fromJsonString(jsonString: string, options?: Partial): SetMuteStateResponse { - return new SetMuteStateResponse().fromJsonString(jsonString, options); + static fromJsonString(jsonString: string, options?: Partial): AdvancePointerResponse { + return new AdvancePointerResponse().fromJsonString(jsonString, options); } - static equals(a: SetMuteStateResponse | PlainMessage | undefined, b: SetMuteStateResponse | PlainMessage | undefined): boolean { - return proto3.util.equals(SetMuteStateResponse, a, b); + static equals(a: AdvancePointerResponse | PlainMessage | undefined, b: AdvancePointerResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(AdvancePointerResponse, a, b); } } /** - * @generated from enum code.chat.v2.SetMuteStateResponse.Result + * @generated from enum code.chat.v2.AdvancePointerResponse.Result */ -export enum SetMuteStateResponse_Result { +export enum AdvancePointerResponse_Result { /** * @generated from enum value: OK = 0; */ @@ -1418,125 +1360,113 @@ export enum SetMuteStateResponse_Result { DENIED = 1, /** - * @generated from enum value: CHAT_NOT_FOUND = 2; + * @generated from enum value: MESSAGE_NOT_FOUND = 2; */ - CHAT_NOT_FOUND = 2, - - /** - * @generated from enum value: CANT_MUTE = 3; - */ - CANT_MUTE = 3, + MESSAGE_NOT_FOUND = 2, } -// Retrieve enum metadata with: proto3.getEnumType(SetMuteStateResponse_Result) -proto3.util.setEnumType(SetMuteStateResponse_Result, "code.chat.v2.SetMuteStateResponse.Result", [ +// Retrieve enum metadata with: proto3.getEnumType(AdvancePointerResponse_Result) +proto3.util.setEnumType(AdvancePointerResponse_Result, "code.chat.v2.AdvancePointerResponse.Result", [ { no: 0, name: "OK" }, { no: 1, name: "DENIED" }, - { no: 2, name: "CHAT_NOT_FOUND" }, - { no: 3, name: "CANT_MUTE" }, + { no: 2, name: "MESSAGE_NOT_FOUND" }, ]); /** - * @generated from message code.chat.v2.SetSubscriptionStateRequest + * @generated from message code.chat.v2.SetMuteStateRequest */ -export class SetSubscriptionStateRequest extends Message { +export class SetMuteStateRequest extends Message$1 { /** * @generated from field: code.common.v1.ChatId chat_id = 1; */ chatId?: ChatId; /** - * @generated from field: code.chat.v2.ChatMemberId member_id = 2; + * @generated from field: bool is_muted = 2; */ - memberId?: ChatMemberId; - - /** - * @generated from field: bool is_subscribed = 3; - */ - isSubscribed = false; + isMuted = false; /** - * @generated from field: code.common.v1.SolanaAccountId owner = 4; + * @generated from field: code.common.v1.SolanaAccountId owner = 3; */ owner?: SolanaAccountId; /** - * @generated from field: code.common.v1.Signature signature = 5; + * @generated from field: code.common.v1.Signature signature = 4; */ signature?: Signature; - constructor(data?: PartialMessage) { + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "code.chat.v2.SetSubscriptionStateRequest"; + static readonly typeName = "code.chat.v2.SetMuteStateRequest"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "chat_id", kind: "message", T: ChatId }, - { no: 2, name: "member_id", kind: "message", T: ChatMemberId }, - { no: 3, name: "is_subscribed", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, - { no: 4, name: "owner", kind: "message", T: SolanaAccountId }, - { no: 5, name: "signature", kind: "message", T: Signature }, + { no: 2, name: "is_muted", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 3, name: "owner", kind: "message", T: SolanaAccountId }, + { no: 4, name: "signature", kind: "message", T: Signature }, ]); - static fromBinary(bytes: Uint8Array, options?: Partial): SetSubscriptionStateRequest { - return new SetSubscriptionStateRequest().fromBinary(bytes, options); + static fromBinary(bytes: Uint8Array, options?: Partial): SetMuteStateRequest { + return new SetMuteStateRequest().fromBinary(bytes, options); } - static fromJson(jsonValue: JsonValue, options?: Partial): SetSubscriptionStateRequest { - return new SetSubscriptionStateRequest().fromJson(jsonValue, options); + static fromJson(jsonValue: JsonValue, options?: Partial): SetMuteStateRequest { + return new SetMuteStateRequest().fromJson(jsonValue, options); } - static fromJsonString(jsonString: string, options?: Partial): SetSubscriptionStateRequest { - return new SetSubscriptionStateRequest().fromJsonString(jsonString, options); + static fromJsonString(jsonString: string, options?: Partial): SetMuteStateRequest { + return new SetMuteStateRequest().fromJsonString(jsonString, options); } - static equals(a: SetSubscriptionStateRequest | PlainMessage | undefined, b: SetSubscriptionStateRequest | PlainMessage | undefined): boolean { - return proto3.util.equals(SetSubscriptionStateRequest, a, b); + static equals(a: SetMuteStateRequest | PlainMessage | undefined, b: SetMuteStateRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(SetMuteStateRequest, a, b); } } /** - * @generated from message code.chat.v2.SetSubscriptionStateResponse + * @generated from message code.chat.v2.SetMuteStateResponse */ -export class SetSubscriptionStateResponse extends Message { +export class SetMuteStateResponse extends Message$1 { /** - * @generated from field: code.chat.v2.SetSubscriptionStateResponse.Result result = 1; + * @generated from field: code.chat.v2.SetMuteStateResponse.Result result = 1; */ - result = SetSubscriptionStateResponse_Result.OK; + result = SetMuteStateResponse_Result.OK; - constructor(data?: PartialMessage) { + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "code.chat.v2.SetSubscriptionStateResponse"; + static readonly typeName = "code.chat.v2.SetMuteStateResponse"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "result", kind: "enum", T: proto3.getEnumType(SetSubscriptionStateResponse_Result) }, + { no: 1, name: "result", kind: "enum", T: proto3.getEnumType(SetMuteStateResponse_Result) }, ]); - static fromBinary(bytes: Uint8Array, options?: Partial): SetSubscriptionStateResponse { - return new SetSubscriptionStateResponse().fromBinary(bytes, options); + static fromBinary(bytes: Uint8Array, options?: Partial): SetMuteStateResponse { + return new SetMuteStateResponse().fromBinary(bytes, options); } - static fromJson(jsonValue: JsonValue, options?: Partial): SetSubscriptionStateResponse { - return new SetSubscriptionStateResponse().fromJson(jsonValue, options); + static fromJson(jsonValue: JsonValue, options?: Partial): SetMuteStateResponse { + return new SetMuteStateResponse().fromJson(jsonValue, options); } - static fromJsonString(jsonString: string, options?: Partial): SetSubscriptionStateResponse { - return new SetSubscriptionStateResponse().fromJsonString(jsonString, options); + static fromJsonString(jsonString: string, options?: Partial): SetMuteStateResponse { + return new SetMuteStateResponse().fromJsonString(jsonString, options); } - static equals(a: SetSubscriptionStateResponse | PlainMessage | undefined, b: SetSubscriptionStateResponse | PlainMessage | undefined): boolean { - return proto3.util.equals(SetSubscriptionStateResponse, a, b); + static equals(a: SetMuteStateResponse | PlainMessage | undefined, b: SetMuteStateResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(SetMuteStateResponse, a, b); } } /** - * @generated from enum code.chat.v2.SetSubscriptionStateResponse.Result + * @generated from enum code.chat.v2.SetMuteStateResponse.Result */ -export enum SetSubscriptionStateResponse_Result { +export enum SetMuteStateResponse_Result { /** * @generated from enum value: OK = 0; */ @@ -1548,49 +1478,38 @@ export enum SetSubscriptionStateResponse_Result { DENIED = 1, /** - * @generated from enum value: CHAT_NOT_FOUND = 2; - */ - CHAT_NOT_FOUND = 2, - - /** - * @generated from enum value: CANT_UNSUBSCRIBE = 3; + * @generated from enum value: CANT_MUTE = 2; */ - CANT_UNSUBSCRIBE = 3, + CANT_MUTE = 2, } -// Retrieve enum metadata with: proto3.getEnumType(SetSubscriptionStateResponse_Result) -proto3.util.setEnumType(SetSubscriptionStateResponse_Result, "code.chat.v2.SetSubscriptionStateResponse.Result", [ +// Retrieve enum metadata with: proto3.getEnumType(SetMuteStateResponse_Result) +proto3.util.setEnumType(SetMuteStateResponse_Result, "code.chat.v2.SetMuteStateResponse.Result", [ { no: 0, name: "OK" }, { no: 1, name: "DENIED" }, - { no: 2, name: "CHAT_NOT_FOUND" }, - { no: 3, name: "CANT_UNSUBSCRIBE" }, + { no: 2, name: "CANT_MUTE" }, ]); /** * @generated from message code.chat.v2.NotifyIsTypingRequest */ -export class NotifyIsTypingRequest extends Message { +export class NotifyIsTypingRequest extends Message$1 { /** * @generated from field: code.common.v1.ChatId chat_id = 1; */ chatId?: ChatId; /** - * @generated from field: code.chat.v2.ChatMemberId member_id = 2; - */ - memberId?: ChatMemberId; - - /** - * @generated from field: bool is_typing = 3; + * @generated from field: bool is_typing = 2; */ isTyping = false; /** - * @generated from field: code.common.v1.SolanaAccountId owner = 4; + * @generated from field: code.common.v1.SolanaAccountId owner = 3; */ owner?: SolanaAccountId; /** - * @generated from field: code.common.v1.Signature signature = 5; + * @generated from field: code.common.v1.Signature signature = 4; */ signature?: Signature; @@ -1603,10 +1522,9 @@ export class NotifyIsTypingRequest extends Message { static readonly typeName = "code.chat.v2.NotifyIsTypingRequest"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "chat_id", kind: "message", T: ChatId }, - { no: 2, name: "member_id", kind: "message", T: ChatMemberId }, - { no: 3, name: "is_typing", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, - { no: 4, name: "owner", kind: "message", T: SolanaAccountId }, - { no: 5, name: "signature", kind: "message", T: Signature }, + { no: 2, name: "is_typing", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 3, name: "owner", kind: "message", T: SolanaAccountId }, + { no: 4, name: "signature", kind: "message", T: Signature }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): NotifyIsTypingRequest { @@ -1629,7 +1547,7 @@ export class NotifyIsTypingRequest extends Message { /** * @generated from message code.chat.v2.NotifyIsTypingResponse */ -export class NotifyIsTypingResponse extends Message { +export class NotifyIsTypingResponse extends Message$1 { /** * @generated from field: code.chat.v2.NotifyIsTypingResponse.Result result = 1; */ @@ -1676,96 +1594,89 @@ export enum NotifyIsTypingResponse_Result { * @generated from enum value: DENIED = 1; */ DENIED = 1, - - /** - * @generated from enum value: CHAT_NOT_FOUND = 2; - */ - CHAT_NOT_FOUND = 2, } // Retrieve enum metadata with: proto3.getEnumType(NotifyIsTypingResponse_Result) proto3.util.setEnumType(NotifyIsTypingResponse_Result, "code.chat.v2.NotifyIsTypingResponse.Result", [ { no: 0, name: "OK" }, { no: 1, name: "DENIED" }, - { no: 2, name: "CHAT_NOT_FOUND" }, ]); /** - * @generated from message code.chat.v2.ChatMessageId + * @generated from message code.chat.v2.MessageId */ -export class ChatMessageId extends Message { +export class MessageId extends Message$1 { /** - * Guaranteed to be a time-based UUID. This should be used to construct a - * consistently ordered message history based on time using a simple byte - * comparison. + * A lexicographically sortable ID that can be used to sort source of + * chat history. * * @generated from field: bytes value = 1; */ value = new Uint8Array(0); - constructor(data?: PartialMessage) { + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "code.chat.v2.ChatMessageId"; + static readonly typeName = "code.chat.v2.MessageId"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "value", kind: "scalar", T: 12 /* ScalarType.BYTES */ }, ]); - static fromBinary(bytes: Uint8Array, options?: Partial): ChatMessageId { - return new ChatMessageId().fromBinary(bytes, options); + static fromBinary(bytes: Uint8Array, options?: Partial): MessageId { + return new MessageId().fromBinary(bytes, options); } - static fromJson(jsonValue: JsonValue, options?: Partial): ChatMessageId { - return new ChatMessageId().fromJson(jsonValue, options); + static fromJson(jsonValue: JsonValue, options?: Partial): MessageId { + return new MessageId().fromJson(jsonValue, options); } - static fromJsonString(jsonString: string, options?: Partial): ChatMessageId { - return new ChatMessageId().fromJsonString(jsonString, options); + static fromJsonString(jsonString: string, options?: Partial): MessageId { + return new MessageId().fromJsonString(jsonString, options); } - static equals(a: ChatMessageId | PlainMessage | undefined, b: ChatMessageId | PlainMessage | undefined): boolean { - return proto3.util.equals(ChatMessageId, a, b); + static equals(a: MessageId | PlainMessage | undefined, b: MessageId | PlainMessage | undefined): boolean { + return proto3.util.equals(MessageId, a, b); } } /** - * @generated from message code.chat.v2.ChatMemberId + * @generated from message code.chat.v2.MemberId */ -export class ChatMemberId extends Message { +export class MemberId extends Message$1 { /** - * Globally random UUID + * The publically available 'deposit' address of the user. * * @generated from field: bytes value = 1; */ value = new Uint8Array(0); - constructor(data?: PartialMessage) { + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "code.chat.v2.ChatMemberId"; + static readonly typeName = "code.chat.v2.MemberId"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "value", kind: "scalar", T: 12 /* ScalarType.BYTES */ }, ]); - static fromBinary(bytes: Uint8Array, options?: Partial): ChatMemberId { - return new ChatMemberId().fromBinary(bytes, options); + static fromBinary(bytes: Uint8Array, options?: Partial): MemberId { + return new MemberId().fromBinary(bytes, options); } - static fromJson(jsonValue: JsonValue, options?: Partial): ChatMemberId { - return new ChatMemberId().fromJson(jsonValue, options); + static fromJson(jsonValue: JsonValue, options?: Partial): MemberId { + return new MemberId().fromJson(jsonValue, options); } - static fromJsonString(jsonString: string, options?: Partial): ChatMemberId { - return new ChatMemberId().fromJsonString(jsonString, options); + static fromJsonString(jsonString: string, options?: Partial): MemberId { + return new MemberId().fromJsonString(jsonString, options); } - static equals(a: ChatMemberId | PlainMessage | undefined, b: ChatMemberId | PlainMessage | undefined): boolean { - return proto3.util.equals(ChatMemberId, a, b); + static equals(a: MemberId | PlainMessage | undefined, b: MemberId | PlainMessage | undefined): boolean { + return proto3.util.equals(MemberId, a, b); } } @@ -1774,12 +1685,10 @@ export class ChatMemberId extends Message { * * todo: Support is_verified in a clean way * - * @generated from message code.chat.v2.ChatMetadata + * @generated from message code.chat.v2.Metadata */ -export class ChatMetadata extends Message { +export class Metadata extends Message$1 { /** - * Globally unique ID for this chat - * * @generated from field: code.common.v1.ChatId chat_id = 1; */ chatId?: ChatId; @@ -1792,101 +1701,103 @@ export class ChatMetadata extends Message { type = ChatType.UNKNOWN_CHAT_TYPE; /** - * The chat title, which will be localized by server when applicable + * Cursor value for this chat for reference in subsequent GetChatsRequest * - * @generated from field: string title = 3; + * @generated from field: code.chat.v2.Cursor cursor = 3; */ - title = ""; + cursor?: Cursor; /** - * The members in this chat - * - * For NOTIFICATION chats, this list has exactly 1 item - * For TWO_WAY chats, this list has exactly 2 items + * The chat title, which is _only_ set by server if an explicit title + * was set. Otherwise, clients should fill in an appropriate chat title. * - * todo: If we support group chats, then we'll likely return the first page - * or a prioritized list. The remaining members would be fetched via - * a new RPC. + * @generated from field: string title = 4; + */ + title = ""; + + /** + * The members in this chat. * - * @generated from field: repeated code.chat.v2.ChatMember members = 4; + * @generated from field: repeated code.chat.v2.Member members = 5; */ - members: ChatMember[] = []; + members: Member[] = []; /** - * Can the user mute this chat? + * Whether or not the chat is muted (from the perspective of the caller). * - * @generated from field: bool can_mute = 5; + * @generated from field: bool is_muted = 6; */ - canMute = false; + isMuted = false; /** - * Can the user unsubscribe from this chat? + * Whether or not the chat is mutable (from the persective of the caller). * - * @generated from field: bool can_unsubscribe = 6; + * @generated from field: bool muteable = 7; */ - canUnsubscribe = false; + muteable = false; /** - * Cursor value for this chat for reference in subsequent GetChatsRequest + * Number of (estimated) unread message (from the perspective of the caller). * - * @generated from field: code.chat.v2.Cursor cursor = 7; + * @generated from field: uint32 num_unread = 8; */ - cursor?: Cursor; + numUnread = 0; - constructor(data?: PartialMessage) { + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "code.chat.v2.ChatMetadata"; + static readonly typeName = "code.chat.v2.Metadata"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "chat_id", kind: "message", T: ChatId }, { no: 2, name: "type", kind: "enum", T: proto3.getEnumType(ChatType) }, - { no: 3, name: "title", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 4, name: "members", kind: "message", T: ChatMember, repeated: true }, - { no: 5, name: "can_mute", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, - { no: 6, name: "can_unsubscribe", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, - { no: 7, name: "cursor", kind: "message", T: Cursor }, + { no: 3, name: "cursor", kind: "message", T: Cursor }, + { no: 4, name: "title", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 5, name: "members", kind: "message", T: Member, repeated: true }, + { no: 6, name: "is_muted", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 7, name: "muteable", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 8, name: "num_unread", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, ]); - static fromBinary(bytes: Uint8Array, options?: Partial): ChatMetadata { - return new ChatMetadata().fromBinary(bytes, options); + static fromBinary(bytes: Uint8Array, options?: Partial): Metadata { + return new Metadata().fromBinary(bytes, options); } - static fromJson(jsonValue: JsonValue, options?: Partial): ChatMetadata { - return new ChatMetadata().fromJson(jsonValue, options); + static fromJson(jsonValue: JsonValue, options?: Partial): Metadata { + return new Metadata().fromJson(jsonValue, options); } - static fromJsonString(jsonString: string, options?: Partial): ChatMetadata { - return new ChatMetadata().fromJsonString(jsonString, options); + static fromJsonString(jsonString: string, options?: Partial): Metadata { + return new Metadata().fromJsonString(jsonString, options); } - static equals(a: ChatMetadata | PlainMessage | undefined, b: ChatMetadata | PlainMessage | undefined): boolean { - return proto3.util.equals(ChatMetadata, a, b); + static equals(a: Metadata | PlainMessage | undefined, b: Metadata | PlainMessage | undefined): boolean { + return proto3.util.equals(Metadata, a, b); } } /** * A message in a chat * - * @generated from message code.chat.v2.ChatMessage + * @generated from message code.chat.v2.Message */ -export class ChatMessage extends Message { +export class Message extends Message$1 { /** * Globally unique ID for this message * - * @generated from field: code.chat.v2.ChatMessageId message_id = 1; + * @generated from field: code.chat.v2.MessageId message_id = 1; */ - messageId?: ChatMessageId; + messageId?: MessageId; /** * The chat member that sent the message. For NOTIFICATION chats, this field * is omitted since the chat has exactly 1 member. * - * @generated from field: code.chat.v2.ChatMemberId sender_id = 2; + * @generated from field: code.chat.v2.MemberId sender_id = 2; */ - senderId?: ChatMemberId; + senderId?: MemberId; /** * Ordered message content. A message may have more than one piece of content. @@ -1910,142 +1821,118 @@ export class ChatMessage extends Message { */ cursor?: Cursor; - constructor(data?: PartialMessage) { + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "code.chat.v2.ChatMessage"; + static readonly typeName = "code.chat.v2.Message"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "message_id", kind: "message", T: ChatMessageId }, - { no: 2, name: "sender_id", kind: "message", T: ChatMemberId }, + { no: 1, name: "message_id", kind: "message", T: MessageId }, + { no: 2, name: "sender_id", kind: "message", T: MemberId }, { no: 3, name: "content", kind: "message", T: Content, repeated: true }, { no: 4, name: "ts", kind: "message", T: Timestamp }, { no: 5, name: "cursor", kind: "message", T: Cursor }, ]); - static fromBinary(bytes: Uint8Array, options?: Partial): ChatMessage { - return new ChatMessage().fromBinary(bytes, options); + static fromBinary(bytes: Uint8Array, options?: Partial): Message { + return new Message().fromBinary(bytes, options); } - static fromJson(jsonValue: JsonValue, options?: Partial): ChatMessage { - return new ChatMessage().fromJson(jsonValue, options); + static fromJson(jsonValue: JsonValue, options?: Partial): Message { + return new Message().fromJson(jsonValue, options); } - static fromJsonString(jsonString: string, options?: Partial): ChatMessage { - return new ChatMessage().fromJsonString(jsonString, options); + static fromJsonString(jsonString: string, options?: Partial): Message { + return new Message().fromJsonString(jsonString, options); } - static equals(a: ChatMessage | PlainMessage | undefined, b: ChatMessage | PlainMessage | undefined): boolean { - return proto3.util.equals(ChatMessage, a, b); + static equals(a: Message | PlainMessage | undefined, b: Message | PlainMessage | undefined): boolean { + return proto3.util.equals(Message, a, b); } } /** * A user in a chat * - * @generated from message code.chat.v2.ChatMember + * @generated from message code.chat.v2.Member */ -export class ChatMember extends Message { - /** - * Globally unique ID for this chat member - * - * @generated from field: code.chat.v2.ChatMemberId member_id = 1; - */ - memberId?: ChatMemberId; - +export class Member extends Message$1 { /** - * Is this chat member yourself? This enables client to identify which member_id - * is themselves. + * Public AccountId (for is self...is derived via deposit address) * - * @generated from field: bool is_self = 2; + * @generated from field: code.chat.v2.MemberId member_id = 1; */ - isSelf = false; + memberId?: MemberId; /** * The chat member's identity if it has been revealed. * - * @generated from field: code.chat.v2.ChatMemberIdentity identity = 3; - */ - identity?: ChatMemberIdentity; - - /** - * Chat message state for this member. This list will have DELIVERED and READ - * pointers, if they exist. SENT pointers should be inferred by persistence - * on server. + * Multiple identities here? Well really only needs twitter/other handles + * Repeated PlatformHandles (where code doesn't matter)? * - * @generated from field: repeated code.chat.v2.Pointer pointers = 4; + * @generated from field: code.chat.v2.MemberIdentity identity = 2; */ - pointers: Pointer[] = []; + identity?: MemberIdentity; /** - * Estimated number of unread messages for the chat member in this chat - * - * Only valid when is_self = true + * Chat message state for this member. * - * @generated from field: uint32 num_unread = 5; - */ - numUnread = 0; - - /** - * Has the chat member muted this chat? + * If set, the list may contain DELIVERED and READ pointers. SENT pointers + * are only shared between the sender and server, to indicate persistence. * - * Only valid when is_self = true + * The server may wish to omit all pointers in various types of group chats + * or as relief valves. * - * @generated from field: bool is_muted = 6; + * @generated from field: repeated code.chat.v2.Pointer pointers = 3; */ - isMuted = false; + pointers: Pointer[] = []; /** - * Is the chat member subscribed to this chat? - * - * Only valid when is_self = true + * If the member is the caller (where applicable), will be set to true. * - * @generated from field: bool is_subscribed = 7; + * @generated from field: bool is_self = 4; */ - isSubscribed = false; + isSelf = false; - constructor(data?: PartialMessage) { + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "code.chat.v2.ChatMember"; + static readonly typeName = "code.chat.v2.Member"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "member_id", kind: "message", T: ChatMemberId }, - { no: 2, name: "is_self", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, - { no: 3, name: "identity", kind: "message", T: ChatMemberIdentity }, - { no: 4, name: "pointers", kind: "message", T: Pointer, repeated: true }, - { no: 5, name: "num_unread", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, - { no: 6, name: "is_muted", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, - { no: 7, name: "is_subscribed", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 1, name: "member_id", kind: "message", T: MemberId }, + { no: 2, name: "identity", kind: "message", T: MemberIdentity }, + { no: 3, name: "pointers", kind: "message", T: Pointer, repeated: true }, + { no: 4, name: "is_self", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, ]); - static fromBinary(bytes: Uint8Array, options?: Partial): ChatMember { - return new ChatMember().fromBinary(bytes, options); + static fromBinary(bytes: Uint8Array, options?: Partial): Member { + return new Member().fromBinary(bytes, options); } - static fromJson(jsonValue: JsonValue, options?: Partial): ChatMember { - return new ChatMember().fromJson(jsonValue, options); + static fromJson(jsonValue: JsonValue, options?: Partial): Member { + return new Member().fromJson(jsonValue, options); } - static fromJsonString(jsonString: string, options?: Partial): ChatMember { - return new ChatMember().fromJsonString(jsonString, options); + static fromJsonString(jsonString: string, options?: Partial): Member { + return new Member().fromJsonString(jsonString, options); } - static equals(a: ChatMember | PlainMessage | undefined, b: ChatMember | PlainMessage | undefined): boolean { - return proto3.util.equals(ChatMember, a, b); + static equals(a: Member | PlainMessage | undefined, b: Member | PlainMessage | undefined): boolean { + return proto3.util.equals(Member, a, b); } } /** * Identity to an external social platform that can be linked to a Code account * - * @generated from message code.chat.v2.ChatMemberIdentity + * @generated from message code.chat.v2.MemberIdentity */ -export class ChatMemberIdentity extends Message { +export class MemberIdentity extends Message$1 { /** * The external social platform linked to this chat member * @@ -2054,46 +1941,54 @@ export class ChatMemberIdentity extends Message { platform = Platform.UNKNOWN_PLATFORM; /** - * The chat member's username on the external social platform + * The chat member's username on the external social platform. * * @generated from field: string username = 2; */ username = ""; + /** + * If present, the display name of the user. + * + * @generated from field: string display_name = 3; + */ + displayName = ""; + /** * If present, the URL of the users profile pic. * - * @generated from field: string profile_pic_url = 3; + * @generated from field: string profile_pic_url = 4; */ profilePicUrl = ""; - constructor(data?: PartialMessage) { + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "code.chat.v2.ChatMemberIdentity"; + static readonly typeName = "code.chat.v2.MemberIdentity"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "platform", kind: "enum", T: proto3.getEnumType(Platform) }, { no: 2, name: "username", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 3, name: "profile_pic_url", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "display_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 4, name: "profile_pic_url", kind: "scalar", T: 9 /* ScalarType.STRING */ }, ]); - static fromBinary(bytes: Uint8Array, options?: Partial): ChatMemberIdentity { - return new ChatMemberIdentity().fromBinary(bytes, options); + static fromBinary(bytes: Uint8Array, options?: Partial): MemberIdentity { + return new MemberIdentity().fromBinary(bytes, options); } - static fromJson(jsonValue: JsonValue, options?: Partial): ChatMemberIdentity { - return new ChatMemberIdentity().fromJson(jsonValue, options); + static fromJson(jsonValue: JsonValue, options?: Partial): MemberIdentity { + return new MemberIdentity().fromJson(jsonValue, options); } - static fromJsonString(jsonString: string, options?: Partial): ChatMemberIdentity { - return new ChatMemberIdentity().fromJsonString(jsonString, options); + static fromJsonString(jsonString: string, options?: Partial): MemberIdentity { + return new MemberIdentity().fromJsonString(jsonString, options); } - static equals(a: ChatMemberIdentity | PlainMessage | undefined, b: ChatMemberIdentity | PlainMessage | undefined): boolean { - return proto3.util.equals(ChatMemberIdentity, a, b); + static equals(a: MemberIdentity | PlainMessage | undefined, b: MemberIdentity | PlainMessage | undefined): boolean { + return proto3.util.equals(MemberIdentity, a, b); } } @@ -2102,7 +1997,7 @@ export class ChatMemberIdentity extends Message { * * @generated from message code.chat.v2.Pointer */ -export class Pointer extends Message { +export class Pointer extends Message$1 { /** * The type of pointer indicates which user's message history state can be * inferred from the pointer value. It is also possible to infer cross-pointer @@ -2117,16 +2012,16 @@ export class Pointer extends Message { * Everything at or before this message ID is considered to have the state * inferred by the type of pointer. * - * @generated from field: code.chat.v2.ChatMessageId value = 2; + * @generated from field: code.chat.v2.MessageId value = 2; */ - value?: ChatMessageId; + value?: MessageId; /** * The chat member associated with this pointer state * - * @generated from field: code.chat.v2.ChatMemberId member_id = 3; + * @generated from field: code.chat.v2.MemberId member_id = 3; */ - memberId?: ChatMemberId; + memberId?: MemberId; constructor(data?: PartialMessage) { super(); @@ -2137,8 +2032,8 @@ export class Pointer extends Message { static readonly typeName = "code.chat.v2.Pointer"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "type", kind: "enum", T: proto3.getEnumType(PointerType) }, - { no: 2, name: "value", kind: "message", T: ChatMessageId }, - { no: 3, name: "member_id", kind: "message", T: ChatMemberId }, + { no: 2, name: "value", kind: "message", T: MessageId }, + { no: 3, name: "member_id", kind: "message", T: MemberId }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): Pointer { @@ -2163,7 +2058,7 @@ export class Pointer extends Message { * * @generated from message code.chat.v2.Content */ -export class Content extends Message { +export class Content extends Message$1 { /** * @generated from oneof code.chat.v2.Content.type */ @@ -2191,18 +2086,6 @@ export class Content extends Message { */ value: NaclBoxEncryptedContent; case: "naclBox"; - } | { - /** - * @generated from field: code.chat.v2.ThankYouContent thank_you = 5; - */ - value: ThankYouContent; - case: "thankYou"; - } | { - /** - * @generated from field: code.chat.v2.IdentityRevealedContent identity_revealed = 6; - */ - value: IdentityRevealedContent; - case: "identityRevealed"; } | { case: undefined; value?: undefined } = { case: undefined }; constructor(data?: PartialMessage) { @@ -2217,8 +2100,6 @@ export class Content extends Message { { no: 2, name: "localized", kind: "message", T: LocalizedContent, oneof: "type" }, { no: 3, name: "exchange_data", kind: "message", T: ExchangeDataContent, oneof: "type" }, { no: 4, name: "nacl_box", kind: "message", T: NaclBoxEncryptedContent, oneof: "type" }, - { no: 5, name: "thank_you", kind: "message", T: ThankYouContent, oneof: "type" }, - { no: 6, name: "identity_revealed", kind: "message", T: IdentityRevealedContent, oneof: "type" }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): Content { @@ -2243,7 +2124,7 @@ export class Content extends Message { * * @generated from message code.chat.v2.TextContent */ -export class TextContent extends Message { +export class TextContent extends Message$1 { /** * @generated from field: string text = 1; */ @@ -2283,7 +2164,7 @@ export class TextContent extends Message { * * @generated from message code.chat.v2.LocalizedContent */ -export class LocalizedContent extends Message { +export class LocalizedContent extends Message$1 { /** * @generated from field: string key_or_text = 1; */ @@ -2322,7 +2203,7 @@ export class LocalizedContent extends Message { * * @generated from message code.chat.v2.ExchangeDataContent */ -export class ExchangeDataContent extends Message { +export class ExchangeDataContent extends Message$1 { /** * Verb describing how the amount of Kin was exchanged * @@ -2489,7 +2370,7 @@ proto3.util.setEnumType(ExchangeDataContent_Verb, "code.chat.v2.ExchangeDataCont * * @generated from message code.chat.v2.NaclBoxEncryptedContent */ -export class NaclBoxEncryptedContent extends Message { +export class NaclBoxEncryptedContent extends Message$1 { /** * The sender's public key that is used to derive the shared private key for * decryption for message content. @@ -2542,97 +2423,6 @@ export class NaclBoxEncryptedContent extends Message { } } -/** - * Thank you content that is used to thank Code users for tips - * - * @generated from message code.chat.v2.ThankYouContent - */ -export class ThankYouContent extends Message { - /** - * The tip intent that is being thanked. - * - * @generated from field: code.common.v1.IntentId tip_intent = 1; - */ - tipIntent?: IntentId; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "code.chat.v2.ThankYouContent"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "tip_intent", kind: "message", T: IntentId }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ThankYouContent { - return new ThankYouContent().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ThankYouContent { - return new ThankYouContent().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ThankYouContent { - return new ThankYouContent().fromJsonString(jsonString, options); - } - - static equals(a: ThankYouContent | PlainMessage | undefined, b: ThankYouContent | PlainMessage | undefined): boolean { - return proto3.util.equals(ThankYouContent, a, b); - } -} - -/** - * Identity revealed content that is inserted into chat whenever a chat member - * reveals their identity - * - * @generated from message code.chat.v2.IdentityRevealedContent - */ -export class IdentityRevealedContent extends Message { - /** - * The chat member who revealed their identity - * - * @generated from field: code.chat.v2.ChatMemberId member_id = 1; - */ - memberId?: ChatMemberId; - - /** - * The identity that was revealed - * - * @generated from field: code.chat.v2.ChatMemberIdentity identity = 2; - */ - identity?: ChatMemberIdentity; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "code.chat.v2.IdentityRevealedContent"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "member_id", kind: "message", T: ChatMemberId }, - { no: 2, name: "identity", kind: "message", T: ChatMemberIdentity }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): IdentityRevealedContent { - return new IdentityRevealedContent().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): IdentityRevealedContent { - return new IdentityRevealedContent().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): IdentityRevealedContent { - return new IdentityRevealedContent().fromJsonString(jsonString, options); - } - - static equals(a: IdentityRevealedContent | PlainMessage | undefined, b: IdentityRevealedContent | PlainMessage | undefined): boolean { - return proto3.util.equals(IdentityRevealedContent, a, b); - } -} - /** * Opaque cursor used across paged APIs. Underlying bytes may change as paging * strategies evolve. Expected length value will vary based on the RPC being @@ -2640,7 +2430,7 @@ export class IdentityRevealedContent extends Message { * * @generated from message code.chat.v2.Cursor */ -export class Cursor extends Message { +export class Cursor extends Message$1 { /** * @generated from field: bytes value = 1; */ @@ -2677,11 +2467,11 @@ export class Cursor extends Message { /** * @generated from message code.chat.v2.IsTyping */ -export class IsTyping extends Message { +export class IsTyping extends Message$1 { /** - * @generated from field: code.chat.v2.ChatMemberId member_id = 1; + * @generated from field: code.chat.v2.MemberId member_id = 1; */ - memberId?: ChatMemberId; + memberId?: MemberId; /** * is_typing indicates whether or not the user is typing. @@ -2699,7 +2489,7 @@ export class IsTyping extends Message { static readonly runtime: typeof proto3 = proto3; static readonly typeName = "code.chat.v2.IsTyping"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "member_id", kind: "message", T: ChatMemberId }, + { no: 1, name: "member_id", kind: "message", T: MemberId }, { no: 2, name: "is_typing", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, ]); diff --git a/generated/protobuf-es/chat/v2/index.ts b/generated/protobuf-es/chat/v2/index.ts index d60d4f9..5f226a8 100644 --- a/generated/protobuf-es/chat/v2/index.ts +++ b/generated/protobuf-es/chat/v2/index.ts @@ -1,2 +1,2 @@ -export * from './chat_service_connect'; export * from './chat_service_pb'; +export * from './chat_service_connect'; diff --git a/generated/protobuf-es/index.ts b/generated/protobuf-es/index.ts index 5c96ce9..f8ea694 100644 --- a/generated/protobuf-es/index.ts +++ b/generated/protobuf-es/index.ts @@ -1,15 +1,15 @@ -export * as Transaction from './transaction/v2'; -export * as Micropayment from './micropayment/v1'; -export * as Contact from './contact/v1'; +export * as Messaging from './messaging/v1'; +export * as Currency from './currency/v1'; +export * as Device from './device/v1'; +export * as Push from './push/v1'; +export * as Invite from './invite/v2'; export * as Chat from './chat/v1'; export * as Chat from './chat/v2'; -export * as User from './user/v1'; -export * as Invite from './invite/v2'; -export * as Push from './push/v1'; -export * as Common from './common/v1'; -export * as Phone from './phone/v1'; -export * as Device from './device/v1'; export * as Account from './account/v1'; -export * as Messaging from './messaging/v1'; -export * as Currency from './currency/v1'; +export * as Contact from './contact/v1'; +export * as Phone from './phone/v1'; +export * as User from './user/v1'; +export * as Micropayment from './micropayment/v1'; export * as Badge from './badge/v1'; +export * as Common from './common/v1'; +export * as Transaction from './transaction/v2'; diff --git a/generated/protobuf-es/invite/v2/index.ts b/generated/protobuf-es/invite/v2/index.ts index 94bdb0c..cb00645 100644 --- a/generated/protobuf-es/invite/v2/index.ts +++ b/generated/protobuf-es/invite/v2/index.ts @@ -1,2 +1,2 @@ -export * from './invite_service_pb'; export * from './invite_service_connect'; +export * from './invite_service_pb'; diff --git a/generated/protobuf-es/transaction/v2/index.ts b/generated/protobuf-es/transaction/v2/index.ts index 6bcfb5b..c205d7c 100644 --- a/generated/protobuf-es/transaction/v2/index.ts +++ b/generated/protobuf-es/transaction/v2/index.ts @@ -1,2 +1,2 @@ -export * from './transaction_service_pb'; export * from './transaction_service_connect'; +export * from './transaction_service_pb'; diff --git a/generated/protobuf-es/transaction/v2/transaction_service_pb.ts b/generated/protobuf-es/transaction/v2/transaction_service_pb.ts index 1279506..2e73822 100644 --- a/generated/protobuf-es/transaction/v2/transaction_service_pb.ts +++ b/generated/protobuf-es/transaction/v2/transaction_service_pb.ts @@ -5083,6 +5083,69 @@ proto3.util.setEnumType(TippedUser_Platform, "code.transaction.v2.TippedUser.Pla { no: 1, name: "TWITTER" }, ]); +/** + * @generated from message code.transaction.v2.FriendedUser + */ +export class FriendedUser extends Message { + /** + * @generated from field: code.transaction.v2.FriendedUser.Platform platform = 1; + */ + platform = FriendedUser_Platform.UNKNOWN; + + /** + * @generated from field: string username = 2; + */ + username = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "code.transaction.v2.FriendedUser"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "platform", kind: "enum", T: proto3.getEnumType(FriendedUser_Platform) }, + { no: 2, name: "username", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): FriendedUser { + return new FriendedUser().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): FriendedUser { + return new FriendedUser().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): FriendedUser { + return new FriendedUser().fromJsonString(jsonString, options); + } + + static equals(a: FriendedUser | PlainMessage | undefined, b: FriendedUser | PlainMessage | undefined): boolean { + return proto3.util.equals(FriendedUser, a, b); + } +} + +/** + * @generated from enum code.transaction.v2.FriendedUser.Platform + */ +export enum FriendedUser_Platform { + /** + * @generated from enum value: UNKNOWN = 0; + */ + UNKNOWN = 0, + + /** + * @generated from enum value: TWITTER = 1; + */ + TWITTER = 1, +} +// Retrieve enum metadata with: proto3.getEnumType(FriendedUser_Platform) +proto3.util.setEnumType(FriendedUser_Platform, "code.transaction.v2.FriendedUser.Platform", [ + { no: 0, name: "UNKNOWN" }, + { no: 1, name: "TWITTER" }, +]); + /** * @generated from message code.transaction.v2.Cursor */ diff --git a/generated/protobuf-es/user/v1/identity_service_pb.ts b/generated/protobuf-es/user/v1/identity_service_pb.ts index d416464..96b183e 100644 --- a/generated/protobuf-es/user/v1/identity_service_pb.ts +++ b/generated/protobuf-es/user/v1/identity_service_pb.ts @@ -5,9 +5,9 @@ import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; import { Message, proto3 } from "@bufbuild/protobuf"; -import { DataContainerId, IntentId, Locale, PhoneNumber, Signature, SolanaAccountId, UserId } from "../../common/v1/model_pb"; +import { ChatId, DataContainerId, IntentId, Locale, PhoneNumber, Signature, SolanaAccountId, UserId } from "../../common/v1/model_pb"; import { PhoneLinkingToken } from "../../phone/v1/phone_verification_service_pb"; -import { AirdropType } from "../../transaction/v2/transaction_service_pb"; +import { AirdropType, ExchangeDataWithoutRate } from "../../transaction/v2/transaction_service_pb"; /** * @generated from message code.user.v1.LinkAccountRequest @@ -939,6 +939,19 @@ export class GetTwitterUserRequest extends Message { case: "tipAddress"; } | { case: undefined; value?: undefined } = { case: undefined }; + /** + * An optional set of authentication information that allows for more + * information to be returned in the request. + * + * @generated from field: code.common.v1.SolanaAccountId requestor = 10; + */ + requestor?: SolanaAccountId; + + /** + * @generated from field: code.common.v1.Signature signature = 11; + */ + signature?: Signature; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); @@ -949,6 +962,8 @@ export class GetTwitterUserRequest extends Message { static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "username", kind: "scalar", T: 9 /* ScalarType.STRING */, oneof: "query" }, { no: 2, name: "tip_address", kind: "message", T: SolanaAccountId, oneof: "query" }, + { no: 10, name: "requestor", kind: "message", T: SolanaAccountId }, + { no: 11, name: "signature", kind: "message", T: Signature }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): GetTwitterUserRequest { @@ -1178,6 +1193,8 @@ export class TwitterUser extends Message { /** * Public key for a token account where tips are routed * + * TODO(tip_rename): Candidate for renaming to something more generic. + * * @generated from field: code.common.v1.SolanaAccountId tip_address = 1; */ tipAddress?: SolanaAccountId; @@ -1217,6 +1234,34 @@ export class TwitterUser extends Message { */ followerCount = 0; + /** + * The cost of establishing the friendship (regardless if caller is a friend). + * + * This should not be cached for an extended period, as exchange rate / value + * may change at any time. + * + * @generated from field: code.transaction.v2.ExchangeDataWithoutRate friendship_cost = 7; + */ + friendshipCost?: ExchangeDataWithoutRate; + + /** + * Indicates the user is a friend of the caller. + * + * @generated from field: bool is_friend = 10; + */ + isFriend = false; + + /** + * The ChatId used to communicate with this friend. + * + * This will always be set for authenticated users. + * If is_friend=false, this ChatId should be used when crafting + * the intent. + * + * @generated from field: code.common.v1.ChatId friend_chat_id = 11; + */ + friendChatId?: ChatId; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); @@ -1231,6 +1276,9 @@ export class TwitterUser extends Message { { no: 4, name: "profile_pic_url", kind: "scalar", T: 9 /* ScalarType.STRING */ }, { no: 5, name: "verified_type", kind: "enum", T: proto3.getEnumType(TwitterUser_VerifiedType) }, { no: 6, name: "follower_count", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + { no: 7, name: "friendship_cost", kind: "message", T: ExchangeDataWithoutRate }, + { no: 10, name: "is_friend", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 11, name: "friend_chat_id", kind: "message", T: ChatId }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): TwitterUser { diff --git a/generated/protobuf-es/user/v1/index.ts b/generated/protobuf-es/user/v1/index.ts index 7c77b0d..da75451 100644 --- a/generated/protobuf-es/user/v1/index.ts +++ b/generated/protobuf-es/user/v1/index.ts @@ -1,2 +1,2 @@ -export * from './identity_service_pb'; export * from './identity_service_connect'; +export * from './identity_service_pb'; diff --git a/proto/chat/v2/chat_service.proto b/proto/chat/v2/chat_service.proto index 780565d..8c1c65f 100644 --- a/proto/chat/v2/chat_service.proto +++ b/proto/chat/v2/chat_service.proto @@ -12,6 +12,30 @@ import "google/protobuf/timestamp.proto"; import "validate/validate.proto"; service Chat { + // StreamChatEvents streams all chat events for the requesting user. + // + // Chat events will include any update to a chat, including: + // 1. Metadata changes. + // 2. Membership changes. + // 3. Latest messages. + // + // The server will optionally filter out some events depending on load + // and chat type. For example, Broadcast chats will not receive latest + // messages. + // + // Clients should use GetMessages to backfill in any historical messages + // for a chat. It should be sufficient to rely on ChatEvents for some types + // of chats, but using StreamMessages provides a guarentee of message events + // for all chats. + rpc StreamChatEvents(stream StreamChatEventsRequest) returns (stream StreamChatEventsResponse); + + // StreamMessages streams all messages/message states for the requested chat. + // + // By default, streams will resume messages from the last acknowledged delivery + // pointer of the caller. This can be overridden by setting 'last_message', + // 'latest_only'. + rpc StreamMessages(stream StreamMessagesRequest) returns (stream StreamMessagesResponse); + // GetChats gets the set of chats for an owner account using a paged API. // This RPC is aware of all identities tied to the owner account. rpc GetChats(GetChatsRequest) returns (GetChatsResponse); @@ -19,64 +43,126 @@ service Chat { // GetMessages gets the set of messages for a chat member using a paged API rpc GetMessages(GetMessagesRequest) returns (GetMessagesResponse); - // StreamChatEvents streams chat events in real-time. Chat events include - // messages, pointer updates, etc. - // - // The streaming protocol is follows: - // 1. Client initiates a stream by sending an OpenChatEventStream message. - // 2. If an error is encoutered, a ChatStreamEventError message will be - // returned by server and the stream will be closed. - // 3. Server will immediately flush initial chat state. - // 4. New chat events will be pushed to the stream in real time as they - // are received. - // - // This RPC supports a keepalive protocol as follows: - // 1. Client initiates a stream by sending an OpenChatEventStream message. - // 2. Upon stream initialization, server begins the keepalive protocol. - // 3. Server sends a ping to the client. - // 4. Client responds with a pong as fast as possible, making note of - // the delay for when to expect the next ping. - // 5. Steps 3 and 4 are repeated until the stream is explicitly terminated - // or is deemed to be unhealthy. - // - // Client notes: - // * Client should be careful to process events async, so any responses to pings are - // not delayed. - // * Clients should implement a reasonable backoff strategy upon continued timeout - // failures. - // * Clients that abuse pong messages may have their streams terminated by server. - // - // At any point in the stream, server will respond with events in real time as - // they are observed. Events sent over the stream should not affect the ping/pong - // protocol timings. - rpc StreamChatEvents(stream StreamChatEventsRequest) returns (stream StreamChatEventsResponse); - // StartChat starts a chat. The RPC call is idempotent and will use existing // chats whenever applicable within the context of message routing. rpc StartChat(StartChatRequest) returns (StartChatResponse); - // SendMessage sends a message to a chat + // SendMessage sends a message to a chat. rpc SendMessage(SendMessageRequest) returns (SendMessageResponse); - // AdvancePointer advances a pointer in message history for a chat member + // AdvancePointer advances a pointer in message history for a chat member. rpc AdvancePointer(AdvancePointerRequest) returns (AdvancePointerResponse); - // RevealIdentity reveals a chat member's identity if it is anonymous. A chat - // message will be inserted on success. - rpc RevealIdentity(RevealIdentityRequest) returns (RevealIdentityResponse); - - // SetMuteState configures a chat member's mute state + // SetMuteState configures a chat member's mute state. rpc SetMuteState(SetMuteStateRequest) returns (SetMuteStateResponse); - // SetSubscriptionState configures a chat member's susbscription state - rpc SetSubscriptionState(SetSubscriptionStateRequest) returns (SetSubscriptionStateResponse); - // NotifyIsTypingRequest notifies a chat that the sending member is typing. // // These requests are transient, and may be dropped at any point. rpc NotifyIsTyping(NotifyIsTypingRequest) returns (NotifyIsTypingResponse); } +message StreamChatEventsRequest { + oneof type { + option (validate.required) = true; + + Params params = 1; + common.v1.ClientPong pong = 2; + } + + message Params { + common.v1.SolanaAccountId owner = 1 [(validate.rules).message.required = true]; + common.v1.Signature signature = 2 [(validate.rules).message.required = true]; + } +} + +message StreamChatEventsResponse { + oneof type { + option (validate.required) = true; + + common.v1.ServerPing ping = 1; + StreamError error = 2; + EventBatch events = 3; + } + + message EventBatch { + repeated ChatUpdate updates = 1 [(validate.rules).repeated = { + min_items: 1 + max_items: 1024 // Arbitrary + }]; + } + + // ChatUpdate contains a set of updates for a given chat id. + // + // Only the relevant fields will be set on update. On initial + // stream open, all fields will be set, however. + message ChatUpdate { + common.v1.ChatId chat_id = 1 [(validate.rules).message.required = true]; + + // metadata contains the latest (full) metadata of the chat. + Metadata metadata = 2; + + // Message contains the last known message of the chat. + Message last_message = 3; + + // Pointer contians the last known relevant pointer of the chat. + // where 'relevant' means "relevant to UI updates". For example, + // when a user has read the latest message. + Pointer pointer = 4; + + // IsTyping indicates whether or not someone is typing in the group. + IsTyping is_typing = 5; + } +} + +message StreamMessagesRequest { + oneof type { + option (validate.required) = true; + + Params params = 1; + common.v1.ClientPong pong = 2; + } + + message Params { + common.v1.SolanaAccountId owner = 1 [(validate.rules).message.required = true]; + common.v1.Signature signature = 2 [(validate.rules).message.required = true]; + common.v1.ChatId chat_id = 3 [(validate.rules).message.required = true]; + + // Callers may optionally specify a resume mode other than last delivery pointer. + oneof resume { + // Server will return all messages newer than this message id. + MessageId last_known_message_id = 4; + + // Server will not load any previous messages. + bool latest_only = 5; + } + } +} + +message StreamMessagesResponse { + oneof type { + option (validate.required) = true; + + common.v1.ServerPing ping = 1; + StreamError error = 2; + MessageBatch messages = 3; + } + + message MessageBatch { + repeated Message messages = 1 [(validate.rules).repeated = { + min_items: 1 + max_items: 1024 // Arbitrary + }]; + } +} + +message StreamError { + Code code = 1; + enum Code { + DENIED = 0; + } +} + message GetChatsRequest { common.v1.SolanaAccountId owner = 1 [(validate.rules).message.required = true]; @@ -96,11 +182,10 @@ message GetChatsRequest { message GetChatsResponse { Result result = 1; enum Result { - OK = 0; - NOT_FOUND = 1; + OK = 0; } - repeated ChatMetadata chats = 2 [(validate.rules).repeated = { + repeated Metadata chats = 2 [(validate.rules).repeated = { min_items: 0 max_items: 100 }]; @@ -109,17 +194,15 @@ message GetChatsResponse { message GetMessagesRequest { common.v1.ChatId chat_id = 1 [(validate.rules).message.required = true]; - ChatMemberId member_id = 2 [(validate.rules).message.required = true]; + common.v1.SolanaAccountId owner = 2 [(validate.rules).message.required = true]; - common.v1.SolanaAccountId owner = 3 [(validate.rules).message.required = true]; - - common.v1.Signature signature = 4 [(validate.rules).message.required = true]; + common.v1.Signature signature = 3 [(validate.rules).message.required = true]; - uint32 page_size = 5 [(validate.rules).uint32.lte = 100]; + uint32 page_size = 4 [(validate.rules).uint32.lte = 100]; - Cursor cursor = 6; + Cursor cursor = 5; - Direction direction = 7; + Direction direction = 6; enum Direction { ASC = 0; DESC = 1; @@ -129,72 +212,16 @@ message GetMessagesRequest { message GetMessagesResponse { Result result = 1; enum Result { - OK = 0; - DENIED = 1; - CHAT_NOT_FOUND = 2; - MESSAGE_NOT_FOUND = 3; + OK = 0; + DENIED = 1; } - repeated ChatMessage messages = 2 [(validate.rules).repeated = { + repeated Message messages = 2 [(validate.rules).repeated = { min_items: 0 max_items: 100 }]; } -message OpenChatEventStream { - common.v1.ChatId chat_id = 1 [(validate.rules).message.required = true]; - - ChatMemberId member_id = 2 [(validate.rules).message.required = true]; - - common.v1.SolanaAccountId owner = 3 [(validate.rules).message.required = true]; - - common.v1.Signature signature = 4 [(validate.rules).message.required = true]; -} - -message ChatStreamEvent { - oneof type { - option (validate.required) = true; - - ChatMessage message = 1; - Pointer pointer = 2; - IsTyping is_typing = 3; - } -} - -message ChatStreamEventBatch { - repeated ChatStreamEvent events = 2 [(validate.rules).repeated = { - min_items: 1 - max_items: 1024 - }]; -} - -message ChatStreamEventError { - Code code = 1; - enum Code { - DENIED = 0; - CHAT_NOT_FOUND = 1; - } -} - -message StreamChatEventsRequest { - oneof type { - option (validate.required) = true; - - OpenChatEventStream open_stream = 1; - common.v1.ClientPong pong = 2; - } -} - -message StreamChatEventsResponse { - oneof type { - option (validate.required) = true; - - ChatStreamEventBatch events = 1; - common.v1.ServerPing ping = 2; - ChatStreamEventError error = 3; - } -} - message StartChatRequest { common.v1.SolanaAccountId owner = 1 [(validate.rules).message.required = true]; @@ -203,49 +230,73 @@ message StartChatRequest { oneof parameters { option (validate.required) = true; - StartTipChatParameters tip_chat = 3; - // GroupChatParameters group_chat = 4; + StartTwoWayChatParameters two_way_chat = 3; } } -// Starts a two-way chat between a tipper and tippee. Chat members are -// inferred from the 12 word public keys involved in the intent. Only -// the tippee can start the chat, and the tipper is anonymous if this -// is the first between the involved Code users. -message StartTipChatParameters { - // The tip's intent ID, which can be extracted from the reference in - // an ExchangeDataContent message content where the verb is RECEIVED_TIP. - common.v1.IntentId intent_id = 1 [(validate.rules).message.required = true]; +// StartTwoWayChatParameters contains the parameters required to start +// or recover a two way chat between the caller and the specified 'other_user'. +// +// The 'other_user' is currently the 'tip_address', normally retrieved from +// user.Identity.GetTwitterUser(username). +message StartTwoWayChatParameters { + // The account id of the user the caller wishes to chat with. + // + // This will be the `tip` (or equivalent) address. + common.v1.SolanaAccountId other_user = 1 [(validate.rules).message.required = true]; + + // The intent_id of the payment that initiated the chat/friendship. + // + // This field is optional. It is used as an optimization when the server has not + // yet observed the establishment of a friendship. In this case, the server will + // use the provided intent_id to verify the friendship. + // + // This is most likely to occur when initiating a chat with a user for the first + // time. + common.v1.IntentId intent_id = 2; } message StartChatResponse { Result result = 1; enum Result { - OK = 0; - DENIED = 1; + OK = 0; + + // DENIED indicates the caller is not allowed to start/join the chat. + DENIED = 1; + + // INVALID_PRAMETER indicates one of the parameters is invalid. INVALID_PARAMETER = 2; + + // PENDING indicates that the payment (for chat) intent is pending confirmation + // before the service will permit the creation of the chat. This can happen in + // cases where the block chain is particularly slow (beyond our RPC timeouts). + PENDING = 3; + + // MISSING_IDENTITY indicates that there is no identity for the user (creator). + MISSING_IDENTITY = 4; + + // USER_NOT_FOUND indicates that (one of) the target user's was not found. + USER_NOT_FOUND = 5; } - // The chat to use if the RPC was successful - ChatMetadata chat = 2; + // The chat to use if the RPC was successful. + Metadata chat = 2; } message SendMessageRequest { common.v1.ChatId chat_id = 1 [(validate.rules).message.required = true]; - ChatMemberId member_id = 2 [(validate.rules).message.required = true]; - // Allowed content types that can be sent by client: // - TextContent // - ThankYouContent - repeated Content content = 3 [(validate.rules).repeated = { + repeated Content content = 2 [(validate.rules).repeated = { min_items: 1 max_items: 1 }]; - common.v1.SolanaAccountId owner = 4 [(validate.rules).message.required = true]; + common.v1.SolanaAccountId owner = 3 [(validate.rules).message.required = true]; - common.v1.Signature signature = 5 [(validate.rules).message.required = true]; + common.v1.Signature signature = 4 [(validate.rules).message.required = true]; } message SendMessageResponse { @@ -253,14 +304,12 @@ message SendMessageResponse { enum Result { OK = 0; DENIED = 1; - CHAT_NOT_FOUND = 2; - INVALID_CHAT_TYPE = 3; - INVALID_CONTENT_TYPE = 4; + INVALID_CONTENT_TYPE = 2; } // The chat message that was sent if the RPC was succesful, which includes // server-side metadata like the generated message ID and official timestamp - ChatMessage message = 2; + Message message = 2; } message AdvancePointerRequest { @@ -276,49 +325,20 @@ message AdvancePointerRequest { message AdvancePointerResponse { Result result = 1; enum Result { - OK = 0; - DENIED = 1; - CHAT_NOT_FOUND = 2; - MESSAGE_NOT_FOUND = 3; - INVALID_POINTER_TYPE = 4; - } -} - -message RevealIdentityRequest { - common.v1.ChatId chat_id = 1 [(validate.rules).message.required = true]; - - ChatMemberId member_id = 2 [(validate.rules).message.required = true]; - - ChatMemberIdentity identity = 3 [(validate.rules).message.required = true]; - - common.v1.SolanaAccountId owner = 4 [(validate.rules).message.required = true]; - - common.v1.Signature signature = 5 [(validate.rules).message.required = true]; -} - -message RevealIdentityResponse { - Result result = 1; - enum Result { - OK = 0; - DENIED = 1; - CHAT_NOT_FOUND = 2; - DIFFERENT_IDENTITY_REVEALED = 3; + OK = 0; + DENIED = 1; + MESSAGE_NOT_FOUND = 2; } - - // The chat message that was sent if the RPC was successful - ChatMessage message = 2; } message SetMuteStateRequest { common.v1.ChatId chat_id = 1 [(validate.rules).message.required = true]; - ChatMemberId member_id = 2 [(validate.rules).message.required = true]; - - bool is_muted = 3; + bool is_muted = 2; - common.v1.SolanaAccountId owner = 4 [(validate.rules).message.required = true]; + common.v1.SolanaAccountId owner = 3 [(validate.rules).message.required = true]; - common.v1.Signature signature = 5 [(validate.rules).message.required = true]; + common.v1.Signature signature = 4 [(validate.rules).message.required = true]; } message SetMuteStateResponse { @@ -326,43 +346,18 @@ message SetMuteStateResponse { enum Result { OK = 0; DENIED = 1; - CHAT_NOT_FOUND = 2; - CANT_MUTE = 3; - } -} - -message SetSubscriptionStateRequest { - common.v1.ChatId chat_id = 1 [(validate.rules).message.required = true]; - - ChatMemberId member_id = 2 [(validate.rules).message.required = true]; - - bool is_subscribed = 3; - - common.v1.SolanaAccountId owner = 4 [(validate.rules).message.required = true]; - - common.v1.Signature signature = 5 [(validate.rules).message.required = true]; -} - -message SetSubscriptionStateResponse { - Result result = 1; - enum Result { - OK = 0; - DENIED = 1; - CHAT_NOT_FOUND = 2; - CANT_UNSUBSCRIBE = 3; + CANT_MUTE = 2; } } message NotifyIsTypingRequest { common.v1.ChatId chat_id = 1 [(validate.rules).message.required = true]; - ChatMemberId member_id = 2 [(validate.rules).message.required = true]; - - bool is_typing = 3; + bool is_typing = 2; - common.v1.SolanaAccountId owner = 4 [(validate.rules).message.required = true]; + common.v1.SolanaAccountId owner = 3 [(validate.rules).message.required = true]; - common.v1.Signature signature = 5 [(validate.rules).message.required = true]; + common.v1.Signature signature = 4 [(validate.rules).message.required = true]; } message NotifyIsTypingResponse { @@ -370,32 +365,29 @@ message NotifyIsTypingResponse { enum Result { OK = 0; DENIED = 1; - CHAT_NOT_FOUND = 2; } } -message ChatMessageId { - // Guaranteed to be a time-based UUID. This should be used to construct a - // consistently ordered message history based on time using a simple byte - // comparison. +message MessageId { + // A lexicographically sortable ID that can be used to sort source of + // chat history. bytes value = 1 [(validate.rules).bytes = { min_len: 16 max_len: 16 }]; } -message ChatMemberId { - // Globally random UUID +message MemberId { + // The publically available 'deposit' address of the user. bytes value = 1 [(validate.rules).bytes = { - min_len: 16 - max_len: 16 + min_len: 32 + max_len: 32 }]; } enum ChatType { UNKNOWN_CHAT_TYPE = 0; - NOTIFICATION = 1; - TWO_WAY = 2; + TWO_WAY = 1; // GROUP = 3; } @@ -414,8 +406,7 @@ enum PointerType { // A chat // // todo: Support is_verified in a clean way -message ChatMetadata { - // Globally unique ID for this chat +message Metadata { common.v1.ChatId chat_id = 1 [(validate.rules).message.required = true]; // The type of chat @@ -423,43 +414,40 @@ message ChatMetadata { not_in: [0] // UNKNOWN_CHAT_TYPE }]; - // The chat title, which will be localized by server when applicable - string title = 3 [(validate.rules).string = { - min_len: 1 + // Cursor value for this chat for reference in subsequent GetChatsRequest + Cursor cursor = 3; + + // The chat title, which is _only_ set by server if an explicit title + // was set. Otherwise, clients should fill in an appropriate chat title. + string title = 4 [(validate.rules).string = { + min_len: 0 max_len: 1024 }]; - // The members in this chat - // - // For NOTIFICATION chats, this list has exactly 1 item - // For TWO_WAY chats, this list has exactly 2 items - // - // todo: If we support group chats, then we'll likely return the first page - // or a prioritized list. The remaining members would be fetched via - // a new RPC. - repeated ChatMember members = 4 [(validate.rules).repeated = { + // The members in this chat. + repeated Member members = 5 [(validate.rules).repeated = { min_items: 1 max_items: 2 }]; - // Can the user mute this chat? - bool can_mute = 5; + // Whether or not the chat is muted (from the perspective of the caller). + bool is_muted = 6; - // Can the user unsubscribe from this chat? - bool can_unsubscribe = 6; + // Whether or not the chat is mutable (from the persective of the caller). + bool muteable = 7; - // Cursor value for this chat for reference in subsequent GetChatsRequest - Cursor cursor = 7; + // Number of (estimated) unread message (from the perspective of the caller). + uint32 num_unread = 8; } // A message in a chat -message ChatMessage { +message Message { // Globally unique ID for this message - ChatMessageId message_id = 1 [(validate.rules).message.required = true]; + MessageId message_id = 1 [(validate.rules).message.required = true]; // The chat member that sent the message. For NOTIFICATION chats, this field // is omitted since the chat has exactly 1 member. - ChatMemberId sender_id = 2; + MemberId sender_id = 2; // Ordered message content. A message may have more than one piece of content. repeated Content content = 3 [(validate.rules).repeated = { @@ -476,57 +464,54 @@ message ChatMessage { } // A user in a chat -message ChatMember { - // Globally unique ID for this chat member - ChatMemberId member_id = 1 [(validate.rules).message.required = true]; - - // Is this chat member yourself? This enables client to identify which member_id - // is themselves. - bool is_self = 2; +message Member { + // Public AccountId (for is self...is derived via deposit address) + MemberId member_id = 1 [(validate.rules).message.required = true]; // The chat member's identity if it has been revealed. - ChatMemberIdentity identity = 3; + // + // Multiple identities here? Well really only needs twitter/other handles + // Repeated PlatformHandles (where code doesn't matter)? + MemberIdentity identity = 2; - // Chat message state for this member. This list will have DELIVERED and READ - // pointers, if they exist. SENT pointers should be inferred by persistence - // on server. - repeated Pointer pointers = 4 [(validate.rules).repeated = { + // Chat message state for this member. + // + // If set, the list may contain DELIVERED and READ pointers. SENT pointers + // are only shared between the sender and server, to indicate persistence. + // + // The server may wish to omit all pointers in various types of group chats + // or as relief valves. + repeated Pointer pointers = 3 [(validate.rules).repeated = { min_items: 0 max_items: 2 }]; - // Estimated number of unread messages for the chat member in this chat - // - // Only valid when is_self = true - uint32 num_unread = 5; - - // Has the chat member muted this chat? - // - // Only valid when is_self = true - bool is_muted = 6; - - // Is the chat member subscribed to this chat? - // - // Only valid when is_self = true - bool is_subscribed = 7; + // If the member is the caller (where applicable), will be set to true. + bool is_self = 4; } // Identity to an external social platform that can be linked to a Code account -message ChatMemberIdentity { +message MemberIdentity { // The external social platform linked to this chat member Platform platform = 1 [(validate.rules).enum = { in: [1] // TWITTER }]; - // The chat member's username on the external social platform + // The chat member's username on the external social platform. string username = 2 [(validate.rules).string = { min_len: 1 max_len: 15 // Twitter limit }]; + // TODO: If we need the profile pic, we need display name...both can maybe be removed? + + // If present, the display name of the user. + string display_name = 3 [(validate.rules).string = { + max_len: 255 // Arbitrary limit + }]; + // If present, the URL of the users profile pic. - string profile_pic_url = 3 [(validate.rules).string = { - min_len: 1 + string profile_pic_url = 4 [(validate.rules).string = { max_len: 255 // Arbitrary limit }]; } @@ -543,10 +528,10 @@ message Pointer { // Everything at or before this message ID is considered to have the state // inferred by the type of pointer. - ChatMessageId value = 2 [(validate.rules).message.required = true]; + MessageId value = 2 [(validate.rules).message.required = true]; // The chat member associated with this pointer state - ChatMemberId member_id = 3 [(validate.rules).message.required = true]; + MemberId member_id = 3 [(validate.rules).message.required = true]; } // Content for a chat message @@ -558,8 +543,6 @@ message Content { LocalizedContent localized = 2; ExchangeDataContent exchange_data = 3; NaclBoxEncryptedContent nacl_box = 4; - ThankYouContent thank_you = 5; - IdentityRevealedContent identity_revealed = 6; } } @@ -621,6 +604,9 @@ message ExchangeDataContent { common.v1.IntentId intent = 4; common.v1.Signature signature = 5; } + + // TODO: We need to be able to provide the parties involved, such that + // such that client can render it correctly. } // Encrypted piece of content using NaCl box encryption @@ -642,30 +628,6 @@ message NaclBoxEncryptedContent { }]; } -// Thank you content that is used to thank Code users for tips -message ThankYouContent { - // The tip intent that is being thanked. - common.v1.IntentId tip_intent = 1 [(validate.rules).message.required = true]; - - // Reserved for the thanker, which is only required if we support GROUP chats. - // Otherwise, it can be inferred from the sender in a TWO_WAY chat. - reserved 2; - - // Reserved for the thankee, which is only required if we support GROUP chats. - // Otherwise, it can be inferred from the sender in a TWO_WAY chat. - reserved 3; -} - -// Identity revealed content that is inserted into chat whenever a chat member -// reveals their identity -message IdentityRevealedContent { - // The chat member who revealed their identity - ChatMemberId member_id = 1 [(validate.rules).message.required = true]; - - // The identity that was revealed - ChatMemberIdentity identity = 2 [(validate.rules).message.required = true]; -} - // Opaque cursor used across paged APIs. Underlying bytes may change as paging // strategies evolve. Expected length value will vary based on the RPC being // executed. @@ -677,7 +639,7 @@ message Cursor { } message IsTyping { - ChatMemberId member_id = 1 [(validate.rules).message.required = true]; + MemberId member_id = 1 [(validate.rules).message.required = true]; // is_typing indicates whether or not the user is typing. // If false, the user has explicitly stopped typing. diff --git a/proto/common/v1/model.proto b/proto/common/v1/model.proto index 0c14f9f..d455206 100644 --- a/proto/common/v1/model.proto +++ b/proto/common/v1/model.proto @@ -96,7 +96,7 @@ message ChatId { // Sufficient space is left for a consistent hash value, though other types // of values may be used. bytes value = 1 [(validate.rules).bytes = { - min_len: 32 + min_len: 16 max_len: 32 }]; } diff --git a/proto/transaction/v2/transaction_service.proto b/proto/transaction/v2/transaction_service.proto index 6342138..387b33c 100644 --- a/proto/transaction/v2/transaction_service.proto +++ b/proto/transaction/v2/transaction_service.proto @@ -1432,6 +1432,21 @@ message TippedUser { }]; } +message FriendedUser { + Platform platform = 1 [(validate.rules).enum = { + in: [1] // TWITTER + }]; + enum Platform { + UNKNOWN = 0; + TWITTER = 1; + } + + string username = 2 [(validate.rules).string = { + min_len: 1 + max_len: 15 + }]; +} + message Cursor { bytes value = 1 [(validate.rules).bytes = { min_len: 8 diff --git a/proto/user/v1/identity_service.proto b/proto/user/v1/identity_service.proto index e6cc57b..eff58f1 100644 --- a/proto/user/v1/identity_service.proto +++ b/proto/user/v1/identity_service.proto @@ -291,6 +291,11 @@ message GetTwitterUserRequest { // The tip address to query against common.v1.SolanaAccountId tip_address = 2; } + + // An optional set of authentication information that allows for more + // information to be returned in the request. + common.v1.SolanaAccountId requestor = 10; + common.v1.Signature signature = 11; } message GetTwitterUserResponse { @@ -335,6 +340,8 @@ message PhoneMetadata { message TwitterUser { // Public key for a token account where tips are routed + // + // TODO(tip_rename): Candidate for renaming to something more generic. common.v1.SolanaAccountId tip_address = 1 [(validate.rules).message.required = true]; // The user's username on Twitter @@ -365,5 +372,25 @@ message TwitterUser { } // The number of followers the user has on Twitter - uint32 follower_count = 6; + uint32 follower_count = 6; + + // The cost of establishing the friendship (regardless if caller is a friend). + // + // This should not be cached for an extended period, as exchange rate / value + // may change at any time. + transaction.v2.ExchangeDataWithoutRate friendship_cost = 7; + + // =========================================================== + // The rest of the fields require authentication to be present. + // =========================================================== + + // Indicates the user is a friend of the caller. + bool is_friend = 10; + + // The ChatId used to communicate with this friend. + // + // This will always be set for authenticated users. + // If is_friend=false, this ChatId should be used when crafting + // the intent. + common.v1.ChatId friend_chat_id = 11; }