From d996d49ee5eca097e0bc86e8424e3b6c79645562 Mon Sep 17 00:00:00 2001 From: Aaron Craelius Date: Tue, 12 Dec 2023 14:02:23 -0500 Subject: [PATCH 1/5] feat(x/ecocredit): add MsgBurnRegen --- api/regen/ecocredit/v1/events.pulsar.go | 663 +++++++- api/regen/ecocredit/v1/tx.pulsar.go | 1739 ++++++++++++++++----- api/regen/ecocredit/v1/tx_grpc.pb.go | 43 + proto/regen/ecocredit/v1/events.proto | 12 + proto/regen/ecocredit/v1/tx.proto | 29 + scripts/protocgen.sh | 2 - scripts/protocgen2.sh | 2 +- x/ecocredit/base/keeper/msg_burn_regen.go | 49 + x/ecocredit/base/types/v1/events.pb.go | 360 ++++- x/ecocredit/base/types/v1/msg_burn.go | 49 + x/ecocredit/base/types/v1/tx.pb.go | 693 ++++++-- 11 files changed, 3100 insertions(+), 541 deletions(-) create mode 100644 x/ecocredit/base/keeper/msg_burn_regen.go create mode 100644 x/ecocredit/base/types/v1/msg_burn.go diff --git a/api/regen/ecocredit/v1/events.pulsar.go b/api/regen/ecocredit/v1/events.pulsar.go index 852c39bc74..f3c9ac252d 100644 --- a/api/regen/ecocredit/v1/events.pulsar.go +++ b/api/regen/ecocredit/v1/events.pulsar.go @@ -9089,6 +9089,554 @@ func (x *fastReflection_EventBridgeReceive) ProtoMethods() *protoiface.Methods { } } +var ( + md_EventBurnRegen protoreflect.MessageDescriptor + fd_EventBurnRegen_from protoreflect.FieldDescriptor + fd_EventBurnRegen_amount protoreflect.FieldDescriptor + fd_EventBurnRegen_reason protoreflect.FieldDescriptor +) + +func init() { + file_regen_ecocredit_v1_events_proto_init() + md_EventBurnRegen = File_regen_ecocredit_v1_events_proto.Messages().ByName("EventBurnRegen") + fd_EventBurnRegen_from = md_EventBurnRegen.Fields().ByName("from") + fd_EventBurnRegen_amount = md_EventBurnRegen.Fields().ByName("amount") + fd_EventBurnRegen_reason = md_EventBurnRegen.Fields().ByName("reason") +} + +var _ protoreflect.Message = (*fastReflection_EventBurnRegen)(nil) + +type fastReflection_EventBurnRegen EventBurnRegen + +func (x *EventBurnRegen) ProtoReflect() protoreflect.Message { + return (*fastReflection_EventBurnRegen)(x) +} + +func (x *EventBurnRegen) slowProtoReflect() protoreflect.Message { + mi := &file_regen_ecocredit_v1_events_proto_msgTypes[18] + 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) +} + +var _fastReflection_EventBurnRegen_messageType fastReflection_EventBurnRegen_messageType +var _ protoreflect.MessageType = fastReflection_EventBurnRegen_messageType{} + +type fastReflection_EventBurnRegen_messageType struct{} + +func (x fastReflection_EventBurnRegen_messageType) Zero() protoreflect.Message { + return (*fastReflection_EventBurnRegen)(nil) +} +func (x fastReflection_EventBurnRegen_messageType) New() protoreflect.Message { + return new(fastReflection_EventBurnRegen) +} +func (x fastReflection_EventBurnRegen_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_EventBurnRegen +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_EventBurnRegen) Descriptor() protoreflect.MessageDescriptor { + return md_EventBurnRegen +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_EventBurnRegen) Type() protoreflect.MessageType { + return _fastReflection_EventBurnRegen_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_EventBurnRegen) New() protoreflect.Message { + return new(fastReflection_EventBurnRegen) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_EventBurnRegen) Interface() protoreflect.ProtoMessage { + return (*EventBurnRegen)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_EventBurnRegen) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.From != "" { + value := protoreflect.ValueOfString(x.From) + if !f(fd_EventBurnRegen_from, value) { + return + } + } + if x.Amount != "" { + value := protoreflect.ValueOfString(x.Amount) + if !f(fd_EventBurnRegen_amount, value) { + return + } + } + if x.Reason != "" { + value := protoreflect.ValueOfString(x.Reason) + if !f(fd_EventBurnRegen_reason, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_EventBurnRegen) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "regen.ecocredit.v1.EventBurnRegen.from": + return x.From != "" + case "regen.ecocredit.v1.EventBurnRegen.amount": + return x.Amount != "" + case "regen.ecocredit.v1.EventBurnRegen.reason": + return x.Reason != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: regen.ecocredit.v1.EventBurnRegen")) + } + panic(fmt.Errorf("message regen.ecocredit.v1.EventBurnRegen does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_EventBurnRegen) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "regen.ecocredit.v1.EventBurnRegen.from": + x.From = "" + case "regen.ecocredit.v1.EventBurnRegen.amount": + x.Amount = "" + case "regen.ecocredit.v1.EventBurnRegen.reason": + x.Reason = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: regen.ecocredit.v1.EventBurnRegen")) + } + panic(fmt.Errorf("message regen.ecocredit.v1.EventBurnRegen does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_EventBurnRegen) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "regen.ecocredit.v1.EventBurnRegen.from": + value := x.From + return protoreflect.ValueOfString(value) + case "regen.ecocredit.v1.EventBurnRegen.amount": + value := x.Amount + return protoreflect.ValueOfString(value) + case "regen.ecocredit.v1.EventBurnRegen.reason": + value := x.Reason + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: regen.ecocredit.v1.EventBurnRegen")) + } + panic(fmt.Errorf("message regen.ecocredit.v1.EventBurnRegen does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_EventBurnRegen) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "regen.ecocredit.v1.EventBurnRegen.from": + x.From = value.Interface().(string) + case "regen.ecocredit.v1.EventBurnRegen.amount": + x.Amount = value.Interface().(string) + case "regen.ecocredit.v1.EventBurnRegen.reason": + x.Reason = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: regen.ecocredit.v1.EventBurnRegen")) + } + panic(fmt.Errorf("message regen.ecocredit.v1.EventBurnRegen does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_EventBurnRegen) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "regen.ecocredit.v1.EventBurnRegen.from": + panic(fmt.Errorf("field from of message regen.ecocredit.v1.EventBurnRegen is not mutable")) + case "regen.ecocredit.v1.EventBurnRegen.amount": + panic(fmt.Errorf("field amount of message regen.ecocredit.v1.EventBurnRegen is not mutable")) + case "regen.ecocredit.v1.EventBurnRegen.reason": + panic(fmt.Errorf("field reason of message regen.ecocredit.v1.EventBurnRegen is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: regen.ecocredit.v1.EventBurnRegen")) + } + panic(fmt.Errorf("message regen.ecocredit.v1.EventBurnRegen does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_EventBurnRegen) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "regen.ecocredit.v1.EventBurnRegen.from": + return protoreflect.ValueOfString("") + case "regen.ecocredit.v1.EventBurnRegen.amount": + return protoreflect.ValueOfString("") + case "regen.ecocredit.v1.EventBurnRegen.reason": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: regen.ecocredit.v1.EventBurnRegen")) + } + panic(fmt.Errorf("message regen.ecocredit.v1.EventBurnRegen does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_EventBurnRegen) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in regen.ecocredit.v1.EventBurnRegen", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_EventBurnRegen) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_EventBurnRegen) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_EventBurnRegen) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_EventBurnRegen) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*EventBurnRegen) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.From) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Amount) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Reason) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*EventBurnRegen) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.Reason) > 0 { + i -= len(x.Reason) + copy(dAtA[i:], x.Reason) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Reason))) + i-- + dAtA[i] = 0x1a + } + if len(x.Amount) > 0 { + i -= len(x.Amount) + copy(dAtA[i:], x.Amount) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Amount))) + i-- + dAtA[i] = 0x12 + } + if len(x.From) > 0 { + i -= len(x.From) + copy(dAtA[i:], x.From) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.From))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*EventBurnRegen) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: EventBurnRegen: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: EventBurnRegen: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field From", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.From = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Amount = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Reason = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.27.0 @@ -10022,6 +10570,61 @@ func (x *EventBridgeReceive) GetOriginTx() *OriginTx { return nil } +// EventBurnRegen is an event emitted when REGEN is burned to account for credit origination, transfer, etc. +type EventBurnRegen struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // from is the address that burned REGEN. + From string `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty"` + // amount is the integer amount of uregen burned. + Amount string `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount,omitempty"` + // reason is the reason for the burn. + Reason string `protobuf:"bytes,3,opt,name=reason,proto3" json:"reason,omitempty"` +} + +func (x *EventBurnRegen) Reset() { + *x = EventBurnRegen{} + if protoimpl.UnsafeEnabled { + mi := &file_regen_ecocredit_v1_events_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EventBurnRegen) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EventBurnRegen) ProtoMessage() {} + +// Deprecated: Use EventBurnRegen.ProtoReflect.Descriptor instead. +func (*EventBurnRegen) Descriptor() ([]byte, []int) { + return file_regen_ecocredit_v1_events_proto_rawDescGZIP(), []int{18} +} + +func (x *EventBurnRegen) GetFrom() string { + if x != nil { + return x.From + } + return "" +} + +func (x *EventBurnRegen) GetAmount() string { + if x != nil { + return x.Amount + } + return "" +} + +func (x *EventBurnRegen) GetReason() string { + if x != nil { + return x.Reason + } + return "" +} + var File_regen_ecocredit_v1_events_proto protoreflect.FileDescriptor var file_regen_ecocredit_v1_events_proto_rawDesc = []byte{ @@ -10137,21 +10740,26 @@ var file_regen_ecocredit_v1_events_proto_rawDesc = []byte{ 0x69, 0x6e, 0x5f, 0x74, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x54, 0x78, 0x52, 0x08, 0x6f, 0x72, 0x69, 0x67, 0x69, - 0x6e, 0x54, 0x78, 0x42, 0xd9, 0x01, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x65, - 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x42, 0x0b, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x48, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2d, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2d, 0x6c, 0x65, - 0x64, 0x67, 0x65, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2f, 0x65, - 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2f, 0x76, 0x31, 0x3b, 0x65, 0x63, 0x6f, 0x63, - 0x72, 0x65, 0x64, 0x69, 0x74, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x52, 0x45, 0x58, 0xaa, 0x02, 0x12, - 0x52, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x45, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, - 0x56, 0x31, 0xca, 0x02, 0x12, 0x52, 0x65, 0x67, 0x65, 0x6e, 0x5c, 0x45, 0x63, 0x6f, 0x63, 0x72, - 0x65, 0x64, 0x69, 0x74, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1e, 0x52, 0x65, 0x67, 0x65, 0x6e, 0x5c, - 0x45, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x14, 0x52, 0x65, 0x67, 0x65, 0x6e, - 0x3a, 0x3a, 0x45, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x3a, 0x3a, 0x56, 0x31, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6e, 0x54, 0x78, 0x22, 0x54, 0x0a, 0x0e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x75, 0x72, 0x6e, + 0x52, 0x65, 0x67, 0x65, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x42, 0xd9, 0x01, 0x0a, 0x16, 0x63, 0x6f, + 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, + 0x74, 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x50, 0x72, 0x6f, 0x74, + 0x6f, 0x50, 0x01, 0x5a, 0x48, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x72, 0x65, + 0x67, 0x65, 0x6e, 0x2d, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, + 0x65, 0x67, 0x65, 0x6e, 0x2f, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2f, 0x76, + 0x31, 0x3b, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x76, 0x31, 0xa2, 0x02, 0x03, + 0x52, 0x45, 0x58, 0xaa, 0x02, 0x12, 0x52, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x45, 0x63, 0x6f, 0x63, + 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x12, 0x52, 0x65, 0x67, 0x65, 0x6e, + 0x5c, 0x45, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1e, + 0x52, 0x65, 0x67, 0x65, 0x6e, 0x5c, 0x45, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x5c, + 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, + 0x14, 0x52, 0x65, 0x67, 0x65, 0x6e, 0x3a, 0x3a, 0x45, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, + 0x74, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -10166,7 +10774,7 @@ func file_regen_ecocredit_v1_events_proto_rawDescGZIP() []byte { return file_regen_ecocredit_v1_events_proto_rawDescData } -var file_regen_ecocredit_v1_events_proto_msgTypes = make([]protoimpl.MessageInfo, 18) +var file_regen_ecocredit_v1_events_proto_msgTypes = make([]protoimpl.MessageInfo, 19) var file_regen_ecocredit_v1_events_proto_goTypes = []interface{}{ (*EventCreateClass)(nil), // 0: regen.ecocredit.v1.EventCreateClass (*EventCreateProject)(nil), // 1: regen.ecocredit.v1.EventCreateProject @@ -10186,12 +10794,13 @@ var file_regen_ecocredit_v1_events_proto_goTypes = []interface{}{ (*EventAddCreditType)(nil), // 15: regen.ecocredit.v1.EventAddCreditType (*EventBridge)(nil), // 16: regen.ecocredit.v1.EventBridge (*EventBridgeReceive)(nil), // 17: regen.ecocredit.v1.EventBridgeReceive - (*OriginTx)(nil), // 18: regen.ecocredit.v1.OriginTx + (*EventBurnRegen)(nil), // 18: regen.ecocredit.v1.EventBurnRegen + (*OriginTx)(nil), // 19: regen.ecocredit.v1.OriginTx } var file_regen_ecocredit_v1_events_proto_depIdxs = []int32{ - 18, // 0: regen.ecocredit.v1.EventCreateBatch.origin_tx:type_name -> regen.ecocredit.v1.OriginTx - 18, // 1: regen.ecocredit.v1.EventMintBatchCredits.origin_tx:type_name -> regen.ecocredit.v1.OriginTx - 18, // 2: regen.ecocredit.v1.EventBridgeReceive.origin_tx:type_name -> regen.ecocredit.v1.OriginTx + 19, // 0: regen.ecocredit.v1.EventCreateBatch.origin_tx:type_name -> regen.ecocredit.v1.OriginTx + 19, // 1: regen.ecocredit.v1.EventMintBatchCredits.origin_tx:type_name -> regen.ecocredit.v1.OriginTx + 19, // 2: regen.ecocredit.v1.EventBridgeReceive.origin_tx:type_name -> regen.ecocredit.v1.OriginTx 3, // [3:3] is the sub-list for method output_type 3, // [3:3] is the sub-list for method input_type 3, // [3:3] is the sub-list for extension type_name @@ -10422,6 +11031,18 @@ func file_regen_ecocredit_v1_events_proto_init() { return nil } } + file_regen_ecocredit_v1_events_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EventBurnRegen); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -10429,7 +11050,7 @@ func file_regen_ecocredit_v1_events_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_regen_ecocredit_v1_events_proto_rawDesc, NumEnums: 0, - NumMessages: 18, + NumMessages: 19, NumExtensions: 0, NumServices: 0, }, diff --git a/api/regen/ecocredit/v1/tx.pulsar.go b/api/regen/ecocredit/v1/tx.pulsar.go index c7894e5507..4b23b60020 100644 --- a/api/regen/ecocredit/v1/tx.pulsar.go +++ b/api/regen/ecocredit/v1/tx.pulsar.go @@ -3,6 +3,10 @@ package ecocreditv1 import ( fmt "fmt" + io "io" + reflect "reflect" + sync "sync" + runtime "github.com/cosmos/cosmos-proto/runtime" v1beta1 "github.com/cosmos/cosmos-sdk/api/cosmos/base/v1beta1" _ "github.com/cosmos/cosmos-sdk/api/cosmos/msg/v1" @@ -11,9 +15,6 @@ import ( protoiface "google.golang.org/protobuf/runtime/protoiface" protoimpl "google.golang.org/protobuf/runtime/protoimpl" timestamppb "google.golang.org/protobuf/types/known/timestamppb" - io "io" - reflect "reflect" - sync "sync" ) var ( @@ -7082,7 +7083,7 @@ func (x *MsgSend_SendCredits) ProtoReflect() protoreflect.Message { } func (x *MsgSend_SendCredits) slowProtoReflect() protoreflect.Message { - mi := &file_regen_ecocredit_v1_tx_proto_msgTypes[46] + mi := &file_regen_ecocredit_v1_tx_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17505,7 +17506,7 @@ func (x *MsgBridgeReceive_Batch) ProtoReflect() protoreflect.Message { } func (x *MsgBridgeReceive_Batch) slowProtoReflect() protoreflect.Message { - mi := &file_regen_ecocredit_v1_tx_proto_msgTypes[47] + mi := &file_regen_ecocredit_v1_tx_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18207,7 +18208,7 @@ func (x *MsgBridgeReceive_Project) ProtoReflect() protoreflect.Message { } func (x *MsgBridgeReceive_Project) slowProtoReflect() protoreflect.Message { - mi := &file_regen_ecocredit_v1_tx_proto_msgTypes[48] + mi := &file_regen_ecocredit_v1_tx_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24260,194 +24261,1098 @@ func (x *fastReflection_MsgRemoveAllowedBridgeChainResponse) ProtoMethods() *pro } } -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.27.0 -// protoc (unknown) -// source: regen/ecocredit/v1/tx.proto - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +var ( + md_MsgBurnRegen protoreflect.MessageDescriptor + fd_MsgBurnRegen_from protoreflect.FieldDescriptor + fd_MsgBurnRegen_amount protoreflect.FieldDescriptor + fd_MsgBurnRegen_reason protoreflect.FieldDescriptor ) -// MsgAddCreditType is the Msg/AddCreditType request type. -// -// Since Revision 2 -type MsgAddCreditType struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // authority is the address of the governance account. - Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` - // credit_type defines a credit type to add to the credit types parameter. - CreditType *CreditType `protobuf:"bytes,2,opt,name=credit_type,json=creditType,proto3" json:"credit_type,omitempty"` -} - -func (x *MsgAddCreditType) Reset() { - *x = MsgAddCreditType{} - if protoimpl.UnsafeEnabled { - mi := &file_regen_ecocredit_v1_tx_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func init() { + file_regen_ecocredit_v1_tx_proto_init() + md_MsgBurnRegen = File_regen_ecocredit_v1_tx_proto.Messages().ByName("MsgBurnRegen") + fd_MsgBurnRegen_from = md_MsgBurnRegen.Fields().ByName("from") + fd_MsgBurnRegen_amount = md_MsgBurnRegen.Fields().ByName("amount") + fd_MsgBurnRegen_reason = md_MsgBurnRegen.Fields().ByName("reason") } -func (x *MsgAddCreditType) String() string { - return protoimpl.X.MessageStringOf(x) -} +var _ protoreflect.Message = (*fastReflection_MsgBurnRegen)(nil) -func (*MsgAddCreditType) ProtoMessage() {} +type fastReflection_MsgBurnRegen MsgBurnRegen -// Deprecated: Use MsgAddCreditType.ProtoReflect.Descriptor instead. -func (*MsgAddCreditType) Descriptor() ([]byte, []int) { - return file_regen_ecocredit_v1_tx_proto_rawDescGZIP(), []int{0} +func (x *MsgBurnRegen) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgBurnRegen)(x) } -func (x *MsgAddCreditType) GetAuthority() string { - if x != nil { - return x.Authority +func (x *MsgBurnRegen) slowProtoReflect() protoreflect.Message { + mi := &file_regen_ecocredit_v1_tx_proto_msgTypes[46] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) } -func (x *MsgAddCreditType) GetCreditType() *CreditType { - if x != nil { - return x.CreditType - } - return nil -} +var _fastReflection_MsgBurnRegen_messageType fastReflection_MsgBurnRegen_messageType +var _ protoreflect.MessageType = fastReflection_MsgBurnRegen_messageType{} -// MsgAddCreditTypeResponse is the Msg/AddCreditType response type. -// -// Since Revision 2 -type MsgAddCreditTypeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} +type fastReflection_MsgBurnRegen_messageType struct{} -func (x *MsgAddCreditTypeResponse) Reset() { - *x = MsgAddCreditTypeResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_regen_ecocredit_v1_tx_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x fastReflection_MsgBurnRegen_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgBurnRegen)(nil) } - -func (x *MsgAddCreditTypeResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (x fastReflection_MsgBurnRegen_messageType) New() protoreflect.Message { + return new(fastReflection_MsgBurnRegen) } - -func (*MsgAddCreditTypeResponse) ProtoMessage() {} - -// Deprecated: Use MsgAddCreditTypeResponse.ProtoReflect.Descriptor instead. -func (*MsgAddCreditTypeResponse) Descriptor() ([]byte, []int) { - return file_regen_ecocredit_v1_tx_proto_rawDescGZIP(), []int{1} +func (x fastReflection_MsgBurnRegen_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgBurnRegen } -// MsgCreateClass is the Msg/CreateClass request type. -type MsgCreateClass struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // admin is the address of the account creating the credit class that will - // become the admin of the credit class upon creation. The admin will have - // permissions within the credit class to update the credit class including - // the list of approved issuers. If Params.allowlist_enabled is set to true, - // this address must be included in Params.allowed_class_creators. - Admin string `protobuf:"bytes,1,opt,name=admin,proto3" json:"admin,omitempty"` - // issuers are the addresses of the accounts that will have permissions within - // the credit class to create projects and issue credits. - Issuers []string `protobuf:"bytes,2,rep,name=issuers,proto3" json:"issuers,omitempty"` - // metadata is any arbitrary string with a maximum length of 256 characters - // that includes or references metadata to attach to the credit class. - Metadata string `protobuf:"bytes,3,opt,name=metadata,proto3" json:"metadata,omitempty"` - // credit_type_abbrev is the abbreviation of the credit type under which the - // credit class will be created (e.g. "C", "BIO"). - CreditTypeAbbrev string `protobuf:"bytes,4,opt,name=credit_type_abbrev,json=creditTypeAbbrev,proto3" json:"credit_type_abbrev,omitempty"` - // fee is the credit class creation fee. An equal fee is required if the class - // creation fee parameter is set. The provided fee can be greater than the - // parameter, but only the amount in the parameter will be charged. - Fee *v1beta1.Coin `protobuf:"bytes,5,opt,name=fee,proto3" json:"fee,omitempty"` +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgBurnRegen) Descriptor() protoreflect.MessageDescriptor { + return md_MsgBurnRegen } -func (x *MsgCreateClass) Reset() { - *x = MsgCreateClass{} - if protoimpl.UnsafeEnabled { - mi := &file_regen_ecocredit_v1_tx_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgBurnRegen) Type() protoreflect.MessageType { + return _fastReflection_MsgBurnRegen_messageType } -func (x *MsgCreateClass) String() string { - return protoimpl.X.MessageStringOf(x) +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgBurnRegen) New() protoreflect.Message { + return new(fastReflection_MsgBurnRegen) } -func (*MsgCreateClass) ProtoMessage() {} - -// Deprecated: Use MsgCreateClass.ProtoReflect.Descriptor instead. -func (*MsgCreateClass) Descriptor() ([]byte, []int) { - return file_regen_ecocredit_v1_tx_proto_rawDescGZIP(), []int{2} +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgBurnRegen) Interface() protoreflect.ProtoMessage { + return (*MsgBurnRegen)(x) } -func (x *MsgCreateClass) GetAdmin() string { - if x != nil { - return x.Admin +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgBurnRegen) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.From != "" { + value := protoreflect.ValueOfString(x.From) + if !f(fd_MsgBurnRegen_from, value) { + return + } } - return "" -} - -func (x *MsgCreateClass) GetIssuers() []string { - if x != nil { - return x.Issuers + if x.Amount != "" { + value := protoreflect.ValueOfString(x.Amount) + if !f(fd_MsgBurnRegen_amount, value) { + return + } } - return nil -} - -func (x *MsgCreateClass) GetMetadata() string { - if x != nil { - return x.Metadata + if x.Reason != "" { + value := protoreflect.ValueOfString(x.Reason) + if !f(fd_MsgBurnRegen_reason, value) { + return + } } - return "" } -func (x *MsgCreateClass) GetCreditTypeAbbrev() string { - if x != nil { - return x.CreditTypeAbbrev +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgBurnRegen) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "regen.ecocredit.v1.MsgBurnRegen.from": + return x.From != "" + case "regen.ecocredit.v1.MsgBurnRegen.amount": + return x.Amount != "" + case "regen.ecocredit.v1.MsgBurnRegen.reason": + return x.Reason != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: regen.ecocredit.v1.MsgBurnRegen")) + } + panic(fmt.Errorf("message regen.ecocredit.v1.MsgBurnRegen does not contain field %s", fd.FullName())) } - return "" } -func (x *MsgCreateClass) GetFee() *v1beta1.Coin { - if x != nil { - return x.Fee +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgBurnRegen) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "regen.ecocredit.v1.MsgBurnRegen.from": + x.From = "" + case "regen.ecocredit.v1.MsgBurnRegen.amount": + x.Amount = "" + case "regen.ecocredit.v1.MsgBurnRegen.reason": + x.Reason = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: regen.ecocredit.v1.MsgBurnRegen")) + } + panic(fmt.Errorf("message regen.ecocredit.v1.MsgBurnRegen does not contain field %s", fd.FullName())) } - return nil } -// MsgCreateClassResponse is the Msg/CreateClass response type. -type MsgCreateClassResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // class_id is the unique identifier of the credit class. - ClassId string `protobuf:"bytes,1,opt,name=class_id,json=classId,proto3" json:"class_id,omitempty"` +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgBurnRegen) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "regen.ecocredit.v1.MsgBurnRegen.from": + value := x.From + return protoreflect.ValueOfString(value) + case "regen.ecocredit.v1.MsgBurnRegen.amount": + value := x.Amount + return protoreflect.ValueOfString(value) + case "regen.ecocredit.v1.MsgBurnRegen.reason": + value := x.Reason + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: regen.ecocredit.v1.MsgBurnRegen")) + } + panic(fmt.Errorf("message regen.ecocredit.v1.MsgBurnRegen does not contain field %s", descriptor.FullName())) + } } -func (x *MsgCreateClassResponse) Reset() { - *x = MsgCreateClassResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_regen_ecocredit_v1_tx_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgBurnRegen) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "regen.ecocredit.v1.MsgBurnRegen.from": + x.From = value.Interface().(string) + case "regen.ecocredit.v1.MsgBurnRegen.amount": + x.Amount = value.Interface().(string) + case "regen.ecocredit.v1.MsgBurnRegen.reason": + x.Reason = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: regen.ecocredit.v1.MsgBurnRegen")) + } + panic(fmt.Errorf("message regen.ecocredit.v1.MsgBurnRegen does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgBurnRegen) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "regen.ecocredit.v1.MsgBurnRegen.from": + panic(fmt.Errorf("field from of message regen.ecocredit.v1.MsgBurnRegen is not mutable")) + case "regen.ecocredit.v1.MsgBurnRegen.amount": + panic(fmt.Errorf("field amount of message regen.ecocredit.v1.MsgBurnRegen is not mutable")) + case "regen.ecocredit.v1.MsgBurnRegen.reason": + panic(fmt.Errorf("field reason of message regen.ecocredit.v1.MsgBurnRegen is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: regen.ecocredit.v1.MsgBurnRegen")) + } + panic(fmt.Errorf("message regen.ecocredit.v1.MsgBurnRegen does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgBurnRegen) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "regen.ecocredit.v1.MsgBurnRegen.from": + return protoreflect.ValueOfString("") + case "regen.ecocredit.v1.MsgBurnRegen.amount": + return protoreflect.ValueOfString("") + case "regen.ecocredit.v1.MsgBurnRegen.reason": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: regen.ecocredit.v1.MsgBurnRegen")) + } + panic(fmt.Errorf("message regen.ecocredit.v1.MsgBurnRegen does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgBurnRegen) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in regen.ecocredit.v1.MsgBurnRegen", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgBurnRegen) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgBurnRegen) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgBurnRegen) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgBurnRegen) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgBurnRegen) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.From) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Amount) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Reason) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgBurnRegen) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.Reason) > 0 { + i -= len(x.Reason) + copy(dAtA[i:], x.Reason) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Reason))) + i-- + dAtA[i] = 0x1a + } + if len(x.Amount) > 0 { + i -= len(x.Amount) + copy(dAtA[i:], x.Amount) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Amount))) + i-- + dAtA[i] = 0x12 + } + if len(x.From) > 0 { + i -= len(x.From) + copy(dAtA[i:], x.From) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.From))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgBurnRegen) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgBurnRegen: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgBurnRegen: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field From", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.From = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Amount = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Reason = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_MsgBurnRegenResponse protoreflect.MessageDescriptor +) + +func init() { + file_regen_ecocredit_v1_tx_proto_init() + md_MsgBurnRegenResponse = File_regen_ecocredit_v1_tx_proto.Messages().ByName("MsgBurnRegenResponse") +} + +var _ protoreflect.Message = (*fastReflection_MsgBurnRegenResponse)(nil) + +type fastReflection_MsgBurnRegenResponse MsgBurnRegenResponse + +func (x *MsgBurnRegenResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgBurnRegenResponse)(x) +} + +func (x *MsgBurnRegenResponse) slowProtoReflect() protoreflect.Message { + mi := &file_regen_ecocredit_v1_tx_proto_msgTypes[47] + 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) +} + +var _fastReflection_MsgBurnRegenResponse_messageType fastReflection_MsgBurnRegenResponse_messageType +var _ protoreflect.MessageType = fastReflection_MsgBurnRegenResponse_messageType{} + +type fastReflection_MsgBurnRegenResponse_messageType struct{} + +func (x fastReflection_MsgBurnRegenResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgBurnRegenResponse)(nil) +} +func (x fastReflection_MsgBurnRegenResponse_messageType) New() protoreflect.Message { + return new(fastReflection_MsgBurnRegenResponse) +} +func (x fastReflection_MsgBurnRegenResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgBurnRegenResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgBurnRegenResponse) Descriptor() protoreflect.MessageDescriptor { + return md_MsgBurnRegenResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgBurnRegenResponse) Type() protoreflect.MessageType { + return _fastReflection_MsgBurnRegenResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgBurnRegenResponse) New() protoreflect.Message { + return new(fastReflection_MsgBurnRegenResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgBurnRegenResponse) Interface() protoreflect.ProtoMessage { + return (*MsgBurnRegenResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgBurnRegenResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgBurnRegenResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: regen.ecocredit.v1.MsgBurnRegenResponse")) + } + panic(fmt.Errorf("message regen.ecocredit.v1.MsgBurnRegenResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgBurnRegenResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: regen.ecocredit.v1.MsgBurnRegenResponse")) + } + panic(fmt.Errorf("message regen.ecocredit.v1.MsgBurnRegenResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgBurnRegenResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: regen.ecocredit.v1.MsgBurnRegenResponse")) + } + panic(fmt.Errorf("message regen.ecocredit.v1.MsgBurnRegenResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgBurnRegenResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: regen.ecocredit.v1.MsgBurnRegenResponse")) + } + panic(fmt.Errorf("message regen.ecocredit.v1.MsgBurnRegenResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgBurnRegenResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: regen.ecocredit.v1.MsgBurnRegenResponse")) + } + panic(fmt.Errorf("message regen.ecocredit.v1.MsgBurnRegenResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgBurnRegenResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: regen.ecocredit.v1.MsgBurnRegenResponse")) + } + panic(fmt.Errorf("message regen.ecocredit.v1.MsgBurnRegenResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgBurnRegenResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in regen.ecocredit.v1.MsgBurnRegenResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgBurnRegenResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgBurnRegenResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgBurnRegenResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgBurnRegenResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgBurnRegenResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgBurnRegenResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgBurnRegenResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgBurnRegenResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgBurnRegenResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: regen/ecocredit/v1/tx.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// MsgAddCreditType is the Msg/AddCreditType request type. +// +// Since Revision 2 +type MsgAddCreditType struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // authority is the address of the governance account. + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` + // credit_type defines a credit type to add to the credit types parameter. + CreditType *CreditType `protobuf:"bytes,2,opt,name=credit_type,json=creditType,proto3" json:"credit_type,omitempty"` +} + +func (x *MsgAddCreditType) Reset() { + *x = MsgAddCreditType{} + if protoimpl.UnsafeEnabled { + mi := &file_regen_ecocredit_v1_tx_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgAddCreditType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgAddCreditType) ProtoMessage() {} + +// Deprecated: Use MsgAddCreditType.ProtoReflect.Descriptor instead. +func (*MsgAddCreditType) Descriptor() ([]byte, []int) { + return file_regen_ecocredit_v1_tx_proto_rawDescGZIP(), []int{0} +} + +func (x *MsgAddCreditType) GetAuthority() string { + if x != nil { + return x.Authority + } + return "" +} + +func (x *MsgAddCreditType) GetCreditType() *CreditType { + if x != nil { + return x.CreditType + } + return nil +} + +// MsgAddCreditTypeResponse is the Msg/AddCreditType response type. +// +// Since Revision 2 +type MsgAddCreditTypeResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *MsgAddCreditTypeResponse) Reset() { + *x = MsgAddCreditTypeResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_regen_ecocredit_v1_tx_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgAddCreditTypeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgAddCreditTypeResponse) ProtoMessage() {} + +// Deprecated: Use MsgAddCreditTypeResponse.ProtoReflect.Descriptor instead. +func (*MsgAddCreditTypeResponse) Descriptor() ([]byte, []int) { + return file_regen_ecocredit_v1_tx_proto_rawDescGZIP(), []int{1} +} + +// MsgCreateClass is the Msg/CreateClass request type. +type MsgCreateClass struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // admin is the address of the account creating the credit class that will + // become the admin of the credit class upon creation. The admin will have + // permissions within the credit class to update the credit class including + // the list of approved issuers. If Params.allowlist_enabled is set to true, + // this address must be included in Params.allowed_class_creators. + Admin string `protobuf:"bytes,1,opt,name=admin,proto3" json:"admin,omitempty"` + // issuers are the addresses of the accounts that will have permissions within + // the credit class to create projects and issue credits. + Issuers []string `protobuf:"bytes,2,rep,name=issuers,proto3" json:"issuers,omitempty"` + // metadata is any arbitrary string with a maximum length of 256 characters + // that includes or references metadata to attach to the credit class. + Metadata string `protobuf:"bytes,3,opt,name=metadata,proto3" json:"metadata,omitempty"` + // credit_type_abbrev is the abbreviation of the credit type under which the + // credit class will be created (e.g. "C", "BIO"). + CreditTypeAbbrev string `protobuf:"bytes,4,opt,name=credit_type_abbrev,json=creditTypeAbbrev,proto3" json:"credit_type_abbrev,omitempty"` + // fee is the credit class creation fee. An equal fee is required if the class + // creation fee parameter is set. The provided fee can be greater than the + // parameter, but only the amount in the parameter will be charged. + Fee *v1beta1.Coin `protobuf:"bytes,5,opt,name=fee,proto3" json:"fee,omitempty"` +} + +func (x *MsgCreateClass) Reset() { + *x = MsgCreateClass{} + if protoimpl.UnsafeEnabled { + mi := &file_regen_ecocredit_v1_tx_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgCreateClass) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgCreateClass) ProtoMessage() {} + +// Deprecated: Use MsgCreateClass.ProtoReflect.Descriptor instead. +func (*MsgCreateClass) Descriptor() ([]byte, []int) { + return file_regen_ecocredit_v1_tx_proto_rawDescGZIP(), []int{2} +} + +func (x *MsgCreateClass) GetAdmin() string { + if x != nil { + return x.Admin + } + return "" +} + +func (x *MsgCreateClass) GetIssuers() []string { + if x != nil { + return x.Issuers + } + return nil +} + +func (x *MsgCreateClass) GetMetadata() string { + if x != nil { + return x.Metadata + } + return "" +} + +func (x *MsgCreateClass) GetCreditTypeAbbrev() string { + if x != nil { + return x.CreditTypeAbbrev + } + return "" +} + +func (x *MsgCreateClass) GetFee() *v1beta1.Coin { + if x != nil { + return x.Fee + } + return nil +} + +// MsgCreateClassResponse is the Msg/CreateClass response type. +type MsgCreateClassResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // class_id is the unique identifier of the credit class. + ClassId string `protobuf:"bytes,1,opt,name=class_id,json=classId,proto3" json:"class_id,omitempty"` +} + +func (x *MsgCreateClassResponse) Reset() { + *x = MsgCreateClassResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_regen_ecocredit_v1_tx_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } } @@ -26378,6 +27283,93 @@ func (*MsgRemoveAllowedBridgeChainResponse) Descriptor() ([]byte, []int) { return file_regen_ecocredit_v1_tx_proto_rawDescGZIP(), []int{45} } +// MsgBurnRegen is the Msg/BurnRegen request type. +// +// Since Revision 3 +type MsgBurnRegen struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // from is the address of the account burning REGEN tokens. + From string `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty"` + // amount is the integer amount of uregen tokens to burn. + Amount string `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount,omitempty"` + // reason is any arbitrary string that specifies the reason for burning + // REGEN tokens. It may be at most 256 characters long. + Reason string `protobuf:"bytes,3,opt,name=reason,proto3" json:"reason,omitempty"` +} + +func (x *MsgBurnRegen) Reset() { + *x = MsgBurnRegen{} + if protoimpl.UnsafeEnabled { + mi := &file_regen_ecocredit_v1_tx_proto_msgTypes[46] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgBurnRegen) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgBurnRegen) ProtoMessage() {} + +// Deprecated: Use MsgBurnRegen.ProtoReflect.Descriptor instead. +func (*MsgBurnRegen) Descriptor() ([]byte, []int) { + return file_regen_ecocredit_v1_tx_proto_rawDescGZIP(), []int{46} +} + +func (x *MsgBurnRegen) GetFrom() string { + if x != nil { + return x.From + } + return "" +} + +func (x *MsgBurnRegen) GetAmount() string { + if x != nil { + return x.Amount + } + return "" +} + +func (x *MsgBurnRegen) GetReason() string { + if x != nil { + return x.Reason + } + return "" +} + +// MsgBurnResponse is the Msg/Burn response type. +// +// Since Revision 3 +type MsgBurnRegenResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *MsgBurnRegenResponse) Reset() { + *x = MsgBurnRegenResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_regen_ecocredit_v1_tx_proto_msgTypes[47] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgBurnRegenResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgBurnRegenResponse) ProtoMessage() {} + +// Deprecated: Use MsgBurnRegenResponse.ProtoReflect.Descriptor instead. +func (*MsgBurnRegenResponse) Descriptor() ([]byte, []int) { + return file_regen_ecocredit_v1_tx_proto_rawDescGZIP(), []int{47} +} + // SendCredits specifies the amount of tradable and retired credits of a // credit batch that will be sent to the recipient and the jurisdiction in // which the credits will be retired upon receipt. @@ -26415,7 +27407,7 @@ type MsgSend_SendCredits struct { func (x *MsgSend_SendCredits) Reset() { *x = MsgSend_SendCredits{} if protoimpl.UnsafeEnabled { - mi := &file_regen_ecocredit_v1_tx_proto_msgTypes[46] + mi := &file_regen_ecocredit_v1_tx_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26492,7 +27484,7 @@ type MsgBridgeReceive_Batch struct { func (x *MsgBridgeReceive_Batch) Reset() { *x = MsgBridgeReceive_Batch{} if protoimpl.UnsafeEnabled { - mi := &file_regen_ecocredit_v1_tx_proto_msgTypes[47] + mi := &file_regen_ecocredit_v1_tx_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26563,7 +27555,7 @@ type MsgBridgeReceive_Project struct { func (x *MsgBridgeReceive_Project) Reset() { *x = MsgBridgeReceive_Project{} if protoimpl.UnsafeEnabled { - mi := &file_regen_ecocredit_v1_tx_proto_msgTypes[48] + mi := &file_regen_ecocredit_v1_tx_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26921,159 +27913,172 @@ var file_regen_ecocredit_v1_tx_proto_rawDesc = []byte{ 0x6d, 0x65, 0x3a, 0x0e, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0x25, 0x0a, 0x23, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x43, 0x68, 0x61, 0x69, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0x86, 0x13, 0x0a, 0x03, 0x4d, 0x73, - 0x67, 0x12, 0x5d, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, - 0x12, 0x22, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, - 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, - 0x6c, 0x61, 0x73, 0x73, 0x1a, 0x2a, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, - 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x63, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x12, 0x24, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, - 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x1a, 0x2c, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5d, 0x0a, 0x0c, 0x4d, 0x73, 0x67, + 0x42, 0x75, 0x72, 0x6e, 0x52, 0x65, 0x67, 0x65, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, + 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x16, 0x0a, + 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, + 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x3a, 0x09, 0x82, + 0xe7, 0xb0, 0x2a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x22, 0x16, 0x0a, 0x14, 0x4d, 0x73, 0x67, 0x42, + 0x75, 0x72, 0x6e, 0x52, 0x65, 0x67, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x32, 0xdf, 0x13, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x5d, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x22, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5d, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, - 0x61, 0x74, 0x63, 0x68, 0x12, 0x22, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, - 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x1a, 0x2a, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x1a, 0x2a, 0x2e, 0x72, 0x65, + 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, + 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x63, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x24, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, - 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6c, 0x0a, 0x10, 0x4d, 0x69, 0x6e, 0x74, 0x42, 0x61, 0x74, 0x63, - 0x68, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x12, 0x27, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, + 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x1a, 0x2c, + 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, + 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5d, 0x0a, 0x0b, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x22, 0x2e, 0x72, 0x65, + 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, + 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x1a, + 0x2a, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, + 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, + 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6c, 0x0a, 0x10, 0x4d, + 0x69, 0x6e, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x12, + 0x27, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, + 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x4d, 0x69, 0x6e, 0x74, 0x42, 0x61, 0x74, 0x63, + 0x68, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x1a, 0x2f, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x4d, 0x69, 0x6e, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, - 0x73, 0x1a, 0x2f, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, - 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x4d, 0x69, 0x6e, 0x74, 0x42, 0x61, - 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x57, 0x0a, 0x09, 0x53, 0x65, 0x61, 0x6c, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, - 0x20, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, - 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x53, 0x65, 0x61, 0x6c, 0x42, 0x61, 0x74, 0x63, - 0x68, 0x1a, 0x28, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, - 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x53, 0x65, 0x61, 0x6c, 0x42, 0x61, - 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x04, 0x53, - 0x65, 0x6e, 0x64, 0x12, 0x1b, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, - 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x53, 0x65, 0x6e, 0x64, - 0x1a, 0x23, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, - 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x06, 0x52, 0x65, 0x74, 0x69, 0x72, 0x65, 0x12, - 0x1d, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, - 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x74, 0x69, 0x72, 0x65, 0x1a, 0x25, - 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, - 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x74, 0x69, 0x72, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x06, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x12, - 0x1d, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, - 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x1a, 0x25, - 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, - 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6c, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, - 0x6c, 0x61, 0x73, 0x73, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x27, 0x2e, 0x72, 0x65, 0x67, 0x65, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x57, 0x0a, 0x09, 0x53, 0x65, 0x61, + 0x6c, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x20, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, + 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x53, + 0x65, 0x61, 0x6c, 0x42, 0x61, 0x74, 0x63, 0x68, 0x1a, 0x28, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, + 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, + 0x67, 0x53, 0x65, 0x61, 0x6c, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x48, 0x0a, 0x04, 0x53, 0x65, 0x6e, 0x64, 0x12, 0x1b, 0x2e, 0x72, 0x65, 0x67, + 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, + 0x4d, 0x73, 0x67, 0x53, 0x65, 0x6e, 0x64, 0x1a, 0x23, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, + 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, + 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x06, + 0x52, 0x65, 0x74, 0x69, 0x72, 0x65, 0x12, 0x1d, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, + 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, + 0x65, 0x74, 0x69, 0x72, 0x65, 0x1a, 0x25, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, + 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, + 0x74, 0x69, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x06, + 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x12, 0x1d, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, + 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, + 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x1a, 0x25, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, + 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x61, + 0x6e, 0x63, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6c, 0x0a, 0x10, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x41, 0x64, 0x6d, 0x69, 0x6e, + 0x12, 0x27, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, + 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, + 0x6c, 0x61, 0x73, 0x73, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x1a, 0x2f, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x41, 0x64, 0x6d, - 0x69, 0x6e, 0x1a, 0x2f, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, - 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x72, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, - 0x73, 0x73, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x73, 0x12, 0x29, 0x2e, 0x72, 0x65, 0x67, 0x65, - 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, - 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x49, 0x73, 0x73, - 0x75, 0x65, 0x72, 0x73, 0x1a, 0x31, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, - 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x75, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2a, - 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, - 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, - 0x73, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x32, 0x2e, 0x72, 0x65, 0x67, - 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, - 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x72, - 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, - 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x29, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, - 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x1a, - 0x31, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, - 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x7b, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2c, 0x2e, 0x72, 0x65, + 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x72, 0x0a, 0x12, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x73, + 0x12, 0x29, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, + 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, + 0x6c, 0x61, 0x73, 0x73, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x73, 0x1a, 0x31, 0x2e, 0x72, 0x65, + 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, + 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x49, + 0x73, 0x73, 0x75, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x75, + 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, + 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x1a, 0x32, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, + 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x43, 0x6c, 0x61, 0x73, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x72, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x29, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x34, 0x2e, 0x72, 0x65, 0x67, 0x65, - 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, - 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x75, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, + 0x74, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x1a, 0x31, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x1a, 0x32, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x64, 0x6d, 0x69, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7b, 0x0a, 0x15, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x12, 0x2c, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x06, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, - 0x12, 0x1d, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, - 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x1a, - 0x25, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, - 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x63, 0x0a, 0x0d, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, - 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x12, 0x24, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, - 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, - 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x1a, 0x2c, 0x2e, + 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x1a, 0x34, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, + 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x75, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x42, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, - 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x52, 0x65, 0x63, 0x65, - 0x69, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x63, 0x0a, 0x0d, 0x41, - 0x64, 0x64, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x2e, 0x72, - 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, - 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x41, 0x64, 0x64, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x54, 0x79, - 0x70, 0x65, 0x1a, 0x2c, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, - 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x41, 0x64, 0x64, 0x43, 0x72, - 0x65, 0x64, 0x69, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x84, 0x01, 0x0a, 0x18, 0x53, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x6f, 0x72, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x2f, 0x2e, - 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, - 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x53, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x6c, 0x69, 0x73, 0x74, 0x1a, 0x37, + 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, + 0x68, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x32, 0x2e, 0x72, 0x65, 0x67, 0x65, + 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, + 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, + 0x06, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x12, 0x1d, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, + 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, + 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x1a, 0x25, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, + 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x42, + 0x72, 0x69, 0x64, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x63, 0x0a, + 0x0d, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x12, 0x24, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, - 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x53, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x6c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x69, 0x0a, 0x0f, 0x41, 0x64, 0x64, 0x43, 0x6c, - 0x61, 0x73, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x26, 0x2e, 0x72, 0x65, 0x67, + 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x52, 0x65, 0x63, + 0x65, 0x69, 0x76, 0x65, 0x1a, 0x2c, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, + 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x42, 0x72, 0x69, + 0x64, 0x67, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x63, 0x0a, 0x0d, 0x41, 0x64, 0x64, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x24, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, + 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x41, 0x64, 0x64, 0x43, + 0x72, 0x65, 0x64, 0x69, 0x74, 0x54, 0x79, 0x70, 0x65, 0x1a, 0x2c, 0x2e, 0x72, 0x65, 0x67, 0x65, + 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, + 0x73, 0x67, 0x41, 0x64, 0x64, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x84, 0x01, 0x0a, 0x18, 0x53, 0x65, 0x74, 0x43, + 0x6c, 0x61, 0x73, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x6c, 0x6c, 0x6f, 0x77, + 0x6c, 0x69, 0x73, 0x74, 0x12, 0x2f, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, + 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x53, 0x65, 0x74, + 0x43, 0x6c, 0x61, 0x73, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x6c, 0x6c, 0x6f, + 0x77, 0x6c, 0x69, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, + 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x53, 0x65, + 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x6c, 0x6c, + 0x6f, 0x77, 0x6c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x69, + 0x0a, 0x0f, 0x41, 0x64, 0x64, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, + 0x72, 0x12, 0x26, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, + 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x41, 0x64, 0x64, 0x43, 0x6c, 0x61, + 0x73, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x1a, 0x2e, 0x2e, 0x72, 0x65, 0x67, 0x65, + 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, + 0x73, 0x67, 0x41, 0x64, 0x64, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, + 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x72, 0x0a, 0x12, 0x52, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, + 0x29, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, + 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6c, + 0x61, 0x73, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x1a, 0x31, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, - 0x4d, 0x73, 0x67, 0x41, 0x64, 0x64, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x6f, 0x72, 0x1a, 0x2e, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, - 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x41, 0x64, 0x64, 0x43, 0x6c, - 0x61, 0x73, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x72, 0x0a, 0x12, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6c, 0x61, 0x73, - 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x29, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, - 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, - 0x67, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x6f, 0x72, 0x1a, 0x31, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, - 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x6d, 0x6f, - 0x76, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x66, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x43, 0x6c, 0x61, 0x73, 0x73, 0x46, 0x65, 0x65, 0x12, 0x25, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, - 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, - 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x46, 0x65, 0x65, 0x1a, - 0x2d, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, + 0x4d, 0x73, 0x67, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x66, 0x0a, + 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x46, 0x65, 0x65, 0x12, + 0x25, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, - 0x61, 0x73, 0x73, 0x46, 0x65, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7b, - 0x0a, 0x15, 0x41, 0x64, 0x64, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x42, 0x72, 0x69, 0x64, - 0x67, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x12, 0x2c, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, - 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, - 0x41, 0x64, 0x64, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, - 0x43, 0x68, 0x61, 0x69, 0x6e, 0x1a, 0x34, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, - 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x41, 0x64, - 0x64, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x43, 0x68, - 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x84, 0x01, 0x0a, 0x18, - 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x42, 0x72, 0x69, - 0x64, 0x67, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x12, 0x2f, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, - 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, - 0x67, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x42, 0x72, - 0x69, 0x64, 0x67, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x1a, 0x37, 0x2e, 0x72, 0x65, 0x67, 0x65, - 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, - 0x73, 0x67, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x42, + 0x61, 0x73, 0x73, 0x46, 0x65, 0x65, 0x1a, 0x2d, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, + 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x46, 0x65, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7b, 0x0a, 0x15, 0x41, 0x64, 0x64, 0x41, 0x6c, 0x6c, 0x6f, + 0x77, 0x65, 0x64, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x12, 0x2c, + 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, + 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x41, 0x64, 0x64, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, + 0x64, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x1a, 0x34, 0x2e, 0x72, + 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, + 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x41, 0x64, 0x64, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x84, 0x01, 0x0a, 0x18, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x6c, 0x6c, + 0x6f, 0x77, 0x65, 0x64, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x12, + 0x2f, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, + 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x6c, + 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, + 0x1a, 0x37, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, + 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, + 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x43, 0x68, 0x61, 0x69, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x57, 0x0a, 0x09, 0x42, 0x75, 0x72, + 0x6e, 0x52, 0x65, 0x67, 0x65, 0x6e, 0x12, 0x20, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, + 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x42, + 0x75, 0x72, 0x6e, 0x52, 0x65, 0x67, 0x65, 0x6e, 0x1a, 0x28, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, + 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, + 0x67, 0x42, 0x75, 0x72, 0x6e, 0x52, 0x65, 0x67, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0xd5, 0x01, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x48, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, @@ -27103,7 +28108,7 @@ func file_regen_ecocredit_v1_tx_proto_rawDescGZIP() []byte { return file_regen_ecocredit_v1_tx_proto_rawDescData } -var file_regen_ecocredit_v1_tx_proto_msgTypes = make([]protoimpl.MessageInfo, 49) +var file_regen_ecocredit_v1_tx_proto_msgTypes = make([]protoimpl.MessageInfo, 51) var file_regen_ecocredit_v1_tx_proto_goTypes = []interface{}{ (*MsgAddCreditType)(nil), // 0: regen.ecocredit.v1.MsgAddCreditType (*MsgAddCreditTypeResponse)(nil), // 1: regen.ecocredit.v1.MsgAddCreditTypeResponse @@ -27151,35 +28156,37 @@ var file_regen_ecocredit_v1_tx_proto_goTypes = []interface{}{ (*MsgAddAllowedBridgeChainResponse)(nil), // 43: regen.ecocredit.v1.MsgAddAllowedBridgeChainResponse (*MsgRemoveAllowedBridgeChain)(nil), // 44: regen.ecocredit.v1.MsgRemoveAllowedBridgeChain (*MsgRemoveAllowedBridgeChainResponse)(nil), // 45: regen.ecocredit.v1.MsgRemoveAllowedBridgeChainResponse - (*MsgSend_SendCredits)(nil), // 46: regen.ecocredit.v1.MsgSend.SendCredits - (*MsgBridgeReceive_Batch)(nil), // 47: regen.ecocredit.v1.MsgBridgeReceive.Batch - (*MsgBridgeReceive_Project)(nil), // 48: regen.ecocredit.v1.MsgBridgeReceive.Project - (*CreditType)(nil), // 49: regen.ecocredit.v1.CreditType - (*v1beta1.Coin)(nil), // 50: cosmos.base.v1beta1.Coin - (*BatchIssuance)(nil), // 51: regen.ecocredit.v1.BatchIssuance - (*timestamppb.Timestamp)(nil), // 52: google.protobuf.Timestamp - (*OriginTx)(nil), // 53: regen.ecocredit.v1.OriginTx - (*Credits)(nil), // 54: regen.ecocredit.v1.Credits + (*MsgBurnRegen)(nil), // 46: regen.ecocredit.v1.MsgBurnRegen + (*MsgBurnRegenResponse)(nil), // 47: regen.ecocredit.v1.MsgBurnRegenResponse + (*MsgSend_SendCredits)(nil), // 48: regen.ecocredit.v1.MsgSend.SendCredits + (*MsgBridgeReceive_Batch)(nil), // 49: regen.ecocredit.v1.MsgBridgeReceive.Batch + (*MsgBridgeReceive_Project)(nil), // 50: regen.ecocredit.v1.MsgBridgeReceive.Project + (*CreditType)(nil), // 51: regen.ecocredit.v1.CreditType + (*v1beta1.Coin)(nil), // 52: cosmos.base.v1beta1.Coin + (*BatchIssuance)(nil), // 53: regen.ecocredit.v1.BatchIssuance + (*timestamppb.Timestamp)(nil), // 54: google.protobuf.Timestamp + (*OriginTx)(nil), // 55: regen.ecocredit.v1.OriginTx + (*Credits)(nil), // 56: regen.ecocredit.v1.Credits } var file_regen_ecocredit_v1_tx_proto_depIdxs = []int32{ - 49, // 0: regen.ecocredit.v1.MsgAddCreditType.credit_type:type_name -> regen.ecocredit.v1.CreditType - 50, // 1: regen.ecocredit.v1.MsgCreateClass.fee:type_name -> cosmos.base.v1beta1.Coin - 51, // 2: regen.ecocredit.v1.MsgCreateBatch.issuance:type_name -> regen.ecocredit.v1.BatchIssuance - 52, // 3: regen.ecocredit.v1.MsgCreateBatch.start_date:type_name -> google.protobuf.Timestamp - 52, // 4: regen.ecocredit.v1.MsgCreateBatch.end_date:type_name -> google.protobuf.Timestamp - 53, // 5: regen.ecocredit.v1.MsgCreateBatch.origin_tx:type_name -> regen.ecocredit.v1.OriginTx - 51, // 6: regen.ecocredit.v1.MsgMintBatchCredits.issuance:type_name -> regen.ecocredit.v1.BatchIssuance - 53, // 7: regen.ecocredit.v1.MsgMintBatchCredits.origin_tx:type_name -> regen.ecocredit.v1.OriginTx - 46, // 8: regen.ecocredit.v1.MsgSend.credits:type_name -> regen.ecocredit.v1.MsgSend.SendCredits - 54, // 9: regen.ecocredit.v1.MsgRetire.credits:type_name -> regen.ecocredit.v1.Credits - 54, // 10: regen.ecocredit.v1.MsgCancel.credits:type_name -> regen.ecocredit.v1.Credits - 54, // 11: regen.ecocredit.v1.MsgBridge.credits:type_name -> regen.ecocredit.v1.Credits - 48, // 12: regen.ecocredit.v1.MsgBridgeReceive.project:type_name -> regen.ecocredit.v1.MsgBridgeReceive.Project - 47, // 13: regen.ecocredit.v1.MsgBridgeReceive.batch:type_name -> regen.ecocredit.v1.MsgBridgeReceive.Batch - 53, // 14: regen.ecocredit.v1.MsgBridgeReceive.origin_tx:type_name -> regen.ecocredit.v1.OriginTx - 50, // 15: regen.ecocredit.v1.MsgUpdateClassFee.fee:type_name -> cosmos.base.v1beta1.Coin - 52, // 16: regen.ecocredit.v1.MsgBridgeReceive.Batch.start_date:type_name -> google.protobuf.Timestamp - 52, // 17: regen.ecocredit.v1.MsgBridgeReceive.Batch.end_date:type_name -> google.protobuf.Timestamp + 51, // 0: regen.ecocredit.v1.MsgAddCreditType.credit_type:type_name -> regen.ecocredit.v1.CreditType + 52, // 1: regen.ecocredit.v1.MsgCreateClass.fee:type_name -> cosmos.base.v1beta1.Coin + 53, // 2: regen.ecocredit.v1.MsgCreateBatch.issuance:type_name -> regen.ecocredit.v1.BatchIssuance + 54, // 3: regen.ecocredit.v1.MsgCreateBatch.start_date:type_name -> google.protobuf.Timestamp + 54, // 4: regen.ecocredit.v1.MsgCreateBatch.end_date:type_name -> google.protobuf.Timestamp + 55, // 5: regen.ecocredit.v1.MsgCreateBatch.origin_tx:type_name -> regen.ecocredit.v1.OriginTx + 53, // 6: regen.ecocredit.v1.MsgMintBatchCredits.issuance:type_name -> regen.ecocredit.v1.BatchIssuance + 55, // 7: regen.ecocredit.v1.MsgMintBatchCredits.origin_tx:type_name -> regen.ecocredit.v1.OriginTx + 48, // 8: regen.ecocredit.v1.MsgSend.credits:type_name -> regen.ecocredit.v1.MsgSend.SendCredits + 56, // 9: regen.ecocredit.v1.MsgRetire.credits:type_name -> regen.ecocredit.v1.Credits + 56, // 10: regen.ecocredit.v1.MsgCancel.credits:type_name -> regen.ecocredit.v1.Credits + 56, // 11: regen.ecocredit.v1.MsgBridge.credits:type_name -> regen.ecocredit.v1.Credits + 50, // 12: regen.ecocredit.v1.MsgBridgeReceive.project:type_name -> regen.ecocredit.v1.MsgBridgeReceive.Project + 49, // 13: regen.ecocredit.v1.MsgBridgeReceive.batch:type_name -> regen.ecocredit.v1.MsgBridgeReceive.Batch + 55, // 14: regen.ecocredit.v1.MsgBridgeReceive.origin_tx:type_name -> regen.ecocredit.v1.OriginTx + 52, // 15: regen.ecocredit.v1.MsgUpdateClassFee.fee:type_name -> cosmos.base.v1beta1.Coin + 54, // 16: regen.ecocredit.v1.MsgBridgeReceive.Batch.start_date:type_name -> google.protobuf.Timestamp + 54, // 17: regen.ecocredit.v1.MsgBridgeReceive.Batch.end_date:type_name -> google.protobuf.Timestamp 2, // 18: regen.ecocredit.v1.Msg.CreateClass:input_type -> regen.ecocredit.v1.MsgCreateClass 4, // 19: regen.ecocredit.v1.Msg.CreateProject:input_type -> regen.ecocredit.v1.MsgCreateProject 6, // 20: regen.ecocredit.v1.Msg.CreateBatch:input_type -> regen.ecocredit.v1.MsgCreateBatch @@ -27203,31 +28210,33 @@ var file_regen_ecocredit_v1_tx_proto_depIdxs = []int32{ 40, // 38: regen.ecocredit.v1.Msg.UpdateClassFee:input_type -> regen.ecocredit.v1.MsgUpdateClassFee 42, // 39: regen.ecocredit.v1.Msg.AddAllowedBridgeChain:input_type -> regen.ecocredit.v1.MsgAddAllowedBridgeChain 44, // 40: regen.ecocredit.v1.Msg.RemoveAllowedBridgeChain:input_type -> regen.ecocredit.v1.MsgRemoveAllowedBridgeChain - 3, // 41: regen.ecocredit.v1.Msg.CreateClass:output_type -> regen.ecocredit.v1.MsgCreateClassResponse - 5, // 42: regen.ecocredit.v1.Msg.CreateProject:output_type -> regen.ecocredit.v1.MsgCreateProjectResponse - 7, // 43: regen.ecocredit.v1.Msg.CreateBatch:output_type -> regen.ecocredit.v1.MsgCreateBatchResponse - 9, // 44: regen.ecocredit.v1.Msg.MintBatchCredits:output_type -> regen.ecocredit.v1.MsgMintBatchCreditsResponse - 11, // 45: regen.ecocredit.v1.Msg.SealBatch:output_type -> regen.ecocredit.v1.MsgSealBatchResponse - 13, // 46: regen.ecocredit.v1.Msg.Send:output_type -> regen.ecocredit.v1.MsgSendResponse - 15, // 47: regen.ecocredit.v1.Msg.Retire:output_type -> regen.ecocredit.v1.MsgRetireResponse - 17, // 48: regen.ecocredit.v1.Msg.Cancel:output_type -> regen.ecocredit.v1.MsgCancelResponse - 19, // 49: regen.ecocredit.v1.Msg.UpdateClassAdmin:output_type -> regen.ecocredit.v1.MsgUpdateClassAdminResponse - 21, // 50: regen.ecocredit.v1.Msg.UpdateClassIssuers:output_type -> regen.ecocredit.v1.MsgUpdateClassIssuersResponse - 23, // 51: regen.ecocredit.v1.Msg.UpdateClassMetadata:output_type -> regen.ecocredit.v1.MsgUpdateClassMetadataResponse - 25, // 52: regen.ecocredit.v1.Msg.UpdateProjectAdmin:output_type -> regen.ecocredit.v1.MsgUpdateProjectAdminResponse - 27, // 53: regen.ecocredit.v1.Msg.UpdateProjectMetadata:output_type -> regen.ecocredit.v1.MsgUpdateProjectMetadataResponse - 30, // 54: regen.ecocredit.v1.Msg.UpdateBatchMetadata:output_type -> regen.ecocredit.v1.MsgUpdateBatchMetadataResponse - 31, // 55: regen.ecocredit.v1.Msg.Bridge:output_type -> regen.ecocredit.v1.MsgBridgeResponse - 33, // 56: regen.ecocredit.v1.Msg.BridgeReceive:output_type -> regen.ecocredit.v1.MsgBridgeReceiveResponse - 1, // 57: regen.ecocredit.v1.Msg.AddCreditType:output_type -> regen.ecocredit.v1.MsgAddCreditTypeResponse - 37, // 58: regen.ecocredit.v1.Msg.SetClassCreatorAllowlist:output_type -> regen.ecocredit.v1.MsgSetClassCreatorAllowlistResponse - 35, // 59: regen.ecocredit.v1.Msg.AddClassCreator:output_type -> regen.ecocredit.v1.MsgAddClassCreatorResponse - 39, // 60: regen.ecocredit.v1.Msg.RemoveClassCreator:output_type -> regen.ecocredit.v1.MsgRemoveClassCreatorResponse - 41, // 61: regen.ecocredit.v1.Msg.UpdateClassFee:output_type -> regen.ecocredit.v1.MsgUpdateClassFeeResponse - 43, // 62: regen.ecocredit.v1.Msg.AddAllowedBridgeChain:output_type -> regen.ecocredit.v1.MsgAddAllowedBridgeChainResponse - 45, // 63: regen.ecocredit.v1.Msg.RemoveAllowedBridgeChain:output_type -> regen.ecocredit.v1.MsgRemoveAllowedBridgeChainResponse - 41, // [41:64] is the sub-list for method output_type - 18, // [18:41] is the sub-list for method input_type + 46, // 41: regen.ecocredit.v1.Msg.BurnRegen:input_type -> regen.ecocredit.v1.MsgBurnRegen + 3, // 42: regen.ecocredit.v1.Msg.CreateClass:output_type -> regen.ecocredit.v1.MsgCreateClassResponse + 5, // 43: regen.ecocredit.v1.Msg.CreateProject:output_type -> regen.ecocredit.v1.MsgCreateProjectResponse + 7, // 44: regen.ecocredit.v1.Msg.CreateBatch:output_type -> regen.ecocredit.v1.MsgCreateBatchResponse + 9, // 45: regen.ecocredit.v1.Msg.MintBatchCredits:output_type -> regen.ecocredit.v1.MsgMintBatchCreditsResponse + 11, // 46: regen.ecocredit.v1.Msg.SealBatch:output_type -> regen.ecocredit.v1.MsgSealBatchResponse + 13, // 47: regen.ecocredit.v1.Msg.Send:output_type -> regen.ecocredit.v1.MsgSendResponse + 15, // 48: regen.ecocredit.v1.Msg.Retire:output_type -> regen.ecocredit.v1.MsgRetireResponse + 17, // 49: regen.ecocredit.v1.Msg.Cancel:output_type -> regen.ecocredit.v1.MsgCancelResponse + 19, // 50: regen.ecocredit.v1.Msg.UpdateClassAdmin:output_type -> regen.ecocredit.v1.MsgUpdateClassAdminResponse + 21, // 51: regen.ecocredit.v1.Msg.UpdateClassIssuers:output_type -> regen.ecocredit.v1.MsgUpdateClassIssuersResponse + 23, // 52: regen.ecocredit.v1.Msg.UpdateClassMetadata:output_type -> regen.ecocredit.v1.MsgUpdateClassMetadataResponse + 25, // 53: regen.ecocredit.v1.Msg.UpdateProjectAdmin:output_type -> regen.ecocredit.v1.MsgUpdateProjectAdminResponse + 27, // 54: regen.ecocredit.v1.Msg.UpdateProjectMetadata:output_type -> regen.ecocredit.v1.MsgUpdateProjectMetadataResponse + 30, // 55: regen.ecocredit.v1.Msg.UpdateBatchMetadata:output_type -> regen.ecocredit.v1.MsgUpdateBatchMetadataResponse + 31, // 56: regen.ecocredit.v1.Msg.Bridge:output_type -> regen.ecocredit.v1.MsgBridgeResponse + 33, // 57: regen.ecocredit.v1.Msg.BridgeReceive:output_type -> regen.ecocredit.v1.MsgBridgeReceiveResponse + 1, // 58: regen.ecocredit.v1.Msg.AddCreditType:output_type -> regen.ecocredit.v1.MsgAddCreditTypeResponse + 37, // 59: regen.ecocredit.v1.Msg.SetClassCreatorAllowlist:output_type -> regen.ecocredit.v1.MsgSetClassCreatorAllowlistResponse + 35, // 60: regen.ecocredit.v1.Msg.AddClassCreator:output_type -> regen.ecocredit.v1.MsgAddClassCreatorResponse + 39, // 61: regen.ecocredit.v1.Msg.RemoveClassCreator:output_type -> regen.ecocredit.v1.MsgRemoveClassCreatorResponse + 41, // 62: regen.ecocredit.v1.Msg.UpdateClassFee:output_type -> regen.ecocredit.v1.MsgUpdateClassFeeResponse + 43, // 63: regen.ecocredit.v1.Msg.AddAllowedBridgeChain:output_type -> regen.ecocredit.v1.MsgAddAllowedBridgeChainResponse + 45, // 64: regen.ecocredit.v1.Msg.RemoveAllowedBridgeChain:output_type -> regen.ecocredit.v1.MsgRemoveAllowedBridgeChainResponse + 47, // 65: regen.ecocredit.v1.Msg.BurnRegen:output_type -> regen.ecocredit.v1.MsgBurnRegenResponse + 42, // [42:66] is the sub-list for method output_type + 18, // [18:42] is the sub-list for method input_type 18, // [18:18] is the sub-list for extension type_name 18, // [18:18] is the sub-list for extension extendee 0, // [0:18] is the sub-list for field type_name @@ -27794,7 +28803,7 @@ func file_regen_ecocredit_v1_tx_proto_init() { } } file_regen_ecocredit_v1_tx_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MsgSend_SendCredits); i { + switch v := v.(*MsgBurnRegen); i { case 0: return &v.state case 1: @@ -27806,7 +28815,7 @@ func file_regen_ecocredit_v1_tx_proto_init() { } } file_regen_ecocredit_v1_tx_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MsgBridgeReceive_Batch); i { + switch v := v.(*MsgBurnRegenResponse); i { case 0: return &v.state case 1: @@ -27818,6 +28827,30 @@ func file_regen_ecocredit_v1_tx_proto_init() { } } file_regen_ecocredit_v1_tx_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgSend_SendCredits); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_regen_ecocredit_v1_tx_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgBridgeReceive_Batch); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_regen_ecocredit_v1_tx_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MsgBridgeReceive_Project); i { case 0: return &v.state @@ -27836,7 +28869,7 @@ func file_regen_ecocredit_v1_tx_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_regen_ecocredit_v1_tx_proto_rawDesc, NumEnums: 0, - NumMessages: 49, + NumMessages: 51, NumExtensions: 0, NumServices: 1, }, diff --git a/api/regen/ecocredit/v1/tx_grpc.pb.go b/api/regen/ecocredit/v1/tx_grpc.pb.go index 37ab964818..3aed770e7c 100644 --- a/api/regen/ecocredit/v1/tx_grpc.pb.go +++ b/api/regen/ecocredit/v1/tx_grpc.pb.go @@ -42,6 +42,7 @@ const ( Msg_UpdateClassFee_FullMethodName = "/regen.ecocredit.v1.Msg/UpdateClassFee" Msg_AddAllowedBridgeChain_FullMethodName = "/regen.ecocredit.v1.Msg/AddAllowedBridgeChain" Msg_RemoveAllowedBridgeChain_FullMethodName = "/regen.ecocredit.v1.Msg/RemoveAllowedBridgeChain" + Msg_BurnRegen_FullMethodName = "/regen.ecocredit.v1.Msg/BurnRegen" ) // MsgClient is the client API for Msg service. @@ -172,6 +173,10 @@ type MsgClient interface { // // Since Revision 2 RemoveAllowedBridgeChain(ctx context.Context, in *MsgRemoveAllowedBridgeChain, opts ...grpc.CallOption) (*MsgRemoveAllowedBridgeChainResponse, error) + // BurnRegen burns REGEN tokens to account for platform fees when creating or transferring credits. + // + // Since Revision 3 + BurnRegen(ctx context.Context, in *MsgBurnRegen, opts ...grpc.CallOption) (*MsgBurnRegenResponse, error) } type msgClient struct { @@ -389,6 +394,15 @@ func (c *msgClient) RemoveAllowedBridgeChain(ctx context.Context, in *MsgRemoveA return out, nil } +func (c *msgClient) BurnRegen(ctx context.Context, in *MsgBurnRegen, opts ...grpc.CallOption) (*MsgBurnRegenResponse, error) { + out := new(MsgBurnRegenResponse) + err := c.cc.Invoke(ctx, Msg_BurnRegen_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // MsgServer is the server API for Msg service. // All implementations must embed UnimplementedMsgServer // for forward compatibility @@ -517,6 +531,10 @@ type MsgServer interface { // // Since Revision 2 RemoveAllowedBridgeChain(context.Context, *MsgRemoveAllowedBridgeChain) (*MsgRemoveAllowedBridgeChainResponse, error) + // BurnRegen burns REGEN tokens to account for platform fees when creating or transferring credits. + // + // Since Revision 3 + BurnRegen(context.Context, *MsgBurnRegen) (*MsgBurnRegenResponse, error) mustEmbedUnimplementedMsgServer() } @@ -593,6 +611,9 @@ func (UnimplementedMsgServer) AddAllowedBridgeChain(context.Context, *MsgAddAllo func (UnimplementedMsgServer) RemoveAllowedBridgeChain(context.Context, *MsgRemoveAllowedBridgeChain) (*MsgRemoveAllowedBridgeChainResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method RemoveAllowedBridgeChain not implemented") } +func (UnimplementedMsgServer) BurnRegen(context.Context, *MsgBurnRegen) (*MsgBurnRegenResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method BurnRegen not implemented") +} func (UnimplementedMsgServer) mustEmbedUnimplementedMsgServer() {} // UnsafeMsgServer may be embedded to opt out of forward compatibility for this service. @@ -1020,6 +1041,24 @@ func _Msg_RemoveAllowedBridgeChain_Handler(srv interface{}, ctx context.Context, return interceptor(ctx, in, info, handler) } +func _Msg_BurnRegen_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgBurnRegen) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).BurnRegen(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Msg_BurnRegen_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).BurnRegen(ctx, req.(*MsgBurnRegen)) + } + return interceptor(ctx, in, info, handler) +} + // Msg_ServiceDesc is the grpc.ServiceDesc for Msg service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -1119,6 +1158,10 @@ var Msg_ServiceDesc = grpc.ServiceDesc{ MethodName: "RemoveAllowedBridgeChain", Handler: _Msg_RemoveAllowedBridgeChain_Handler, }, + { + MethodName: "BurnRegen", + Handler: _Msg_BurnRegen_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "regen/ecocredit/v1/tx.proto", diff --git a/proto/regen/ecocredit/v1/events.proto b/proto/regen/ecocredit/v1/events.proto index 841ec2ad84..a54f729c58 100644 --- a/proto/regen/ecocredit/v1/events.proto +++ b/proto/regen/ecocredit/v1/events.proto @@ -247,3 +247,15 @@ message EventBridgeReceive { // Since Revision 3 OriginTx origin_tx = 4; } + +// EventBurnRegen is an event emitted when REGEN is burned to account for credit origination, transfer, etc. +message EventBurnRegen { + // from is the address that burned REGEN. + string from = 1; + + // amount is the integer amount of uregen burned. + string amount = 2; + + // reason is the reason for the burn. + string reason = 3; +} diff --git a/proto/regen/ecocredit/v1/tx.proto b/proto/regen/ecocredit/v1/tx.proto index da0ce72d0f..eb36eeb87a 100644 --- a/proto/regen/ecocredit/v1/tx.proto +++ b/proto/regen/ecocredit/v1/tx.proto @@ -171,6 +171,12 @@ service Msg { // Since Revision 2 rpc RemoveAllowedBridgeChain(MsgRemoveAllowedBridgeChain) returns (MsgRemoveAllowedBridgeChainResponse); + + + // BurnRegen burns REGEN tokens to account for platform fees when creating or transferring credits. + // + // Since Revision 3 + rpc BurnRegen(MsgBurnRegen) returns (MsgBurnRegenResponse); } // MsgAddCreditType is the Msg/AddCreditType request type. @@ -783,3 +789,26 @@ message MsgRemoveAllowedBridgeChain { // // Since Revision 2 message MsgRemoveAllowedBridgeChainResponse {} + +// MsgBurnRegen is the Msg/BurnRegen request type. +// +// Since Revision 3 +message MsgBurnRegen { + option (cosmos.msg.v1.signer) = "from"; + + // from is the address of the account burning REGEN tokens. + string from = 1; + + // amount is the integer amount of uregen tokens to burn. + string amount = 2; + + // reason is any arbitrary string that specifies the reason for burning + // REGEN tokens. It may be at most 256 characters long. + string reason = 3; +} + +// MsgBurnResponse is the Msg/Burn response type. +// +// Since Revision 3 +message MsgBurnRegenResponse {} + diff --git a/scripts/protocgen.sh b/scripts/protocgen.sh index c2844c4a6d..335e48c84e 100755 --- a/scripts/protocgen.sh +++ b/scripts/protocgen.sh @@ -30,6 +30,4 @@ cd .. cp -r github.com/regen-network/regen-ledger/* ./ rm -rf github.com -go mod tidy - ./scripts/protocgen2.sh diff --git a/scripts/protocgen2.sh b/scripts/protocgen2.sh index 3de2c1e80f..502daa72c8 100755 --- a/scripts/protocgen2.sh +++ b/scripts/protocgen2.sh @@ -5,7 +5,7 @@ set -eo pipefail protoc_gen_install() { go install github.com/cosmos/cosmos-proto/cmd/protoc-gen-go-pulsar@latest #2>/dev/null go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest #2>/dev/null - go install github.com/cosmos/cosmos-sdk/orm/cmd/protoc-gen-go-cosmos-orm@latest #2>/dev/null + go install github.com/cosmos/cosmos-sdk/orm/cmd/protoc-gen-go-cosmos-orm@v1.0.0-alpha.12 #2>/dev/null } protoc_gen_install diff --git a/x/ecocredit/base/keeper/msg_burn_regen.go b/x/ecocredit/base/keeper/msg_burn_regen.go new file mode 100644 index 0000000000..05a8ff2b9d --- /dev/null +++ b/x/ecocredit/base/keeper/msg_burn_regen.go @@ -0,0 +1,49 @@ +package keeper + +import ( + "context" + "fmt" + + "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/regen-network/regen-ledger/x/ecocredit/v3" + types "github.com/regen-network/regen-ledger/x/ecocredit/v3/base/types/v1" +) + +func (k Keeper) BurnRegen(ctx context.Context, regen *types.MsgBurnRegen) (*types.MsgBurnRegenResponse, error) { + from, err := sdk.AccAddressFromBech32(regen.From) + if err != nil { + return nil, err + } + + amount, ok := math.NewIntFromString(regen.Amount) + if !ok { + return nil, fmt.Errorf("invalid amount: %s", regen.Amount) + } + if !amount.IsPositive() { + return nil, fmt.Errorf("amount must be positive: %s", regen.Amount) + } + + sdkCtx := sdk.UnwrapSDKContext(ctx) + + coins := sdk.NewCoins(sdk.NewCoin("uregen", amount)) + + err = k.bankKeeper.SendCoinsFromAccountToModule(sdkCtx, from, ecocredit.ModuleName, coins) + if err != nil { + return nil, err + } + + err = k.bankKeeper.BurnCoins(sdkCtx, ecocredit.ModuleName, coins) + if err != nil { + return nil, err + } + + err = sdkCtx.EventManager().EmitTypedEvent(&types.EventBurnRegen{ + From: regen.From, + Amount: regen.Amount, + Reason: regen.Reason, + }) + + return &types.MsgBurnRegenResponse{}, err +} diff --git a/x/ecocredit/base/types/v1/events.pb.go b/x/ecocredit/base/types/v1/events.pb.go index 9df435e397..59adaf4cca 100644 --- a/x/ecocredit/base/types/v1/events.pb.go +++ b/x/ecocredit/base/types/v1/events.pb.go @@ -1104,6 +1104,70 @@ func (m *EventBridgeReceive) GetOriginTx() *OriginTx { return nil } +// EventBurnRegen is an event emitted when REGEN is burned to account for credit origination, transfer, etc. +type EventBurnRegen struct { + // from is the address that burned REGEN. + From string `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty"` + // amount is the integer amount of uregen burned. + Amount string `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount,omitempty"` + // reason is the reason for the burn. + Reason string `protobuf:"bytes,3,opt,name=reason,proto3" json:"reason,omitempty"` +} + +func (m *EventBurnRegen) Reset() { *m = EventBurnRegen{} } +func (m *EventBurnRegen) String() string { return proto.CompactTextString(m) } +func (*EventBurnRegen) ProtoMessage() {} +func (*EventBurnRegen) Descriptor() ([]byte, []int) { + return fileDescriptor_e32415575ff8b4b2, []int{18} +} +func (m *EventBurnRegen) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *EventBurnRegen) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_EventBurnRegen.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *EventBurnRegen) XXX_Merge(src proto.Message) { + xxx_messageInfo_EventBurnRegen.Merge(m, src) +} +func (m *EventBurnRegen) XXX_Size() int { + return m.Size() +} +func (m *EventBurnRegen) XXX_DiscardUnknown() { + xxx_messageInfo_EventBurnRegen.DiscardUnknown(m) +} + +var xxx_messageInfo_EventBurnRegen proto.InternalMessageInfo + +func (m *EventBurnRegen) GetFrom() string { + if m != nil { + return m.From + } + return "" +} + +func (m *EventBurnRegen) GetAmount() string { + if m != nil { + return m.Amount + } + return "" +} + +func (m *EventBurnRegen) GetReason() string { + if m != nil { + return m.Reason + } + return "" +} + func init() { proto.RegisterType((*EventCreateClass)(nil), "regen.ecocredit.v1.EventCreateClass") proto.RegisterType((*EventCreateProject)(nil), "regen.ecocredit.v1.EventCreateProject") @@ -1123,53 +1187,56 @@ func init() { proto.RegisterType((*EventAddCreditType)(nil), "regen.ecocredit.v1.EventAddCreditType") proto.RegisterType((*EventBridge)(nil), "regen.ecocredit.v1.EventBridge") proto.RegisterType((*EventBridgeReceive)(nil), "regen.ecocredit.v1.EventBridgeReceive") + proto.RegisterType((*EventBurnRegen)(nil), "regen.ecocredit.v1.EventBurnRegen") } func init() { proto.RegisterFile("regen/ecocredit/v1/events.proto", fileDescriptor_e32415575ff8b4b2) } var fileDescriptor_e32415575ff8b4b2 = []byte{ - // 656 bytes of a gzipped FileDescriptorProto + // 681 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x55, 0x41, 0x4f, 0x13, 0x41, - 0x14, 0x66, 0xa1, 0x54, 0xfa, 0x10, 0x34, 0x1b, 0x45, 0x24, 0xb8, 0x90, 0x4d, 0x8c, 0x5c, 0x68, - 0x53, 0xd0, 0x04, 0xe3, 0xc1, 0x40, 0xf5, 0xc0, 0x81, 0x68, 0x2a, 0x1e, 0xf4, 0xd2, 0xcc, 0xce, - 0x3c, 0xcb, 0x60, 0x3b, 0xd3, 0xcc, 0x4c, 0x0b, 0x24, 0xfe, 0x08, 0x8f, 0xfe, 0x03, 0x6f, 0x1e, - 0xfd, 0x0d, 0x1e, 0x39, 0x7a, 0x34, 0xf0, 0x47, 0xcc, 0xce, 0x4e, 0x97, 0x6e, 0x4b, 0xba, 0xd5, - 0xe8, 0x6d, 0xde, 0xcb, 0xfb, 0xf6, 0xfb, 0xde, 0xce, 0xf7, 0xde, 0xc0, 0x9a, 0xc2, 0x26, 0x8a, - 0x0a, 0x52, 0x49, 0x15, 0x32, 0x6e, 0x2a, 0xbd, 0x6a, 0x05, 0x7b, 0x28, 0x8c, 0x2e, 0x77, 0x94, - 0x34, 0xd2, 0xf7, 0x6d, 0x41, 0x39, 0x2d, 0x28, 0xf7, 0xaa, 0x2b, 0xc1, 0x35, 0x20, 0x73, 0xd6, - 0x41, 0x87, 0x09, 0x37, 0xe1, 0xf6, 0xcb, 0xf8, 0x1b, 0x35, 0x85, 0xc4, 0x60, 0xad, 0x45, 0xb4, - 0xf6, 0xef, 0xc3, 0x1c, 0x8d, 0x0f, 0x0d, 0xce, 0x96, 0xbd, 0x75, 0x6f, 0xa3, 0x54, 0xbf, 0x61, - 0xe3, 0x7d, 0x16, 0x6e, 0x83, 0x3f, 0x50, 0xfe, 0x5a, 0xc9, 0x63, 0xa4, 0xc6, 0x7f, 0x00, 0xd0, - 0x49, 0x8e, 0x57, 0x90, 0x92, 0xcb, 0xec, 0xb3, 0x50, 0x64, 0x38, 0xf6, 0x88, 0xa1, 0x47, 0xfe, - 0x1a, 0xcc, 0x47, 0xf1, 0xa1, 0xc1, 0x50, 0xc8, 0xb6, 0xc3, 0x80, 0x4d, 0xbd, 0x88, 0x33, 0xfe, - 0x53, 0x28, 0x49, 0xc5, 0x9b, 0x5c, 0x34, 0xcc, 0xe9, 0xf2, 0xf4, 0xba, 0xb7, 0x31, 0xbf, 0xb5, - 0x5a, 0x1e, 0x6d, 0xb0, 0xfc, 0xca, 0x16, 0x1d, 0x9e, 0xd6, 0xe7, 0xa4, 0x3b, 0x85, 0x9f, 0xa0, - 0x64, 0xf9, 0x0e, 0xb8, 0x30, 0xf9, 0x44, 0x8f, 0xe0, 0x96, 0x51, 0x84, 0x91, 0xa8, 0x85, 0x0d, - 0xd2, 0x96, 0x5d, 0x61, 0x2c, 0x5d, 0xa9, 0xbe, 0xd8, 0x4f, 0xef, 0xda, 0xac, 0xff, 0x10, 0x16, - 0x15, 0x1a, 0xae, 0x90, 0xf5, 0xeb, 0x66, 0x6c, 0xdd, 0x82, 0xcb, 0x26, 0x65, 0xa1, 0x86, 0xbb, - 0x29, 0xbb, 0xed, 0xb5, 0x66, 0xb5, 0xea, 0xff, 0xda, 0xf2, 0x77, 0x0f, 0x16, 0x2c, 0xeb, 0xa1, - 0x22, 0x42, 0x7f, 0x40, 0xe5, 0x2f, 0x41, 0x51, 0xa3, 0x60, 0xa8, 0x1c, 0x91, 0x8b, 0xfc, 0x55, - 0x28, 0x29, 0xa4, 0xbc, 0xc3, 0x31, 0x6d, 0xf4, 0x2a, 0x31, 0xac, 0x71, 0x66, 0x92, 0xbf, 0x55, - 0x98, 0xf0, 0x6f, 0xcd, 0x5e, 0xf7, 0xb7, 0xbe, 0x78, 0x30, 0x6f, 0x85, 0xd7, 0x6d, 0xda, 0xbf, - 0x03, 0xb3, 0xf2, 0x44, 0xa4, 0xaa, 0x93, 0x60, 0x58, 0xd6, 0xf4, 0x88, 0xac, 0x25, 0x28, 0x66, - 0xee, 0xc4, 0x45, 0x7e, 0x08, 0x37, 0x8f, 0xbb, 0x8a, 0x6b, 0xc6, 0xa9, 0xe1, 0x52, 0x38, 0xad, - 0x99, 0x5c, 0x8c, 0x55, 0x48, 0xb4, 0x14, 0x4e, 0xa1, 0x8b, 0x42, 0xe3, 0x94, 0xd5, 0x88, 0xa0, - 0xd8, 0xfa, 0xd7, 0xca, 0xae, 0x58, 0x0b, 0x19, 0xd6, 0x2d, 0x67, 0x9f, 0xb7, 0x1d, 0xd6, 0x1f, - 0xc8, 0x5d, 0xd6, 0xe6, 0x62, 0xdc, 0x54, 0x3e, 0x86, 0x7b, 0xc3, 0x98, 0x7d, 0xad, 0xbb, 0xa8, - 0xc6, 0xce, 0xf2, 0x13, 0x58, 0x1e, 0x46, 0x1d, 0xa0, 0x21, 0x8c, 0x18, 0x32, 0x0e, 0xb6, 0x93, - 0x21, 0x73, 0x2b, 0x20, 0x91, 0x98, 0xb3, 0x07, 0x9e, 0xc1, 0xca, 0x28, 0x32, 0xa5, 0xcc, 0x05, - 0x0f, 0xaa, 0xb5, 0x83, 0x95, 0x42, 0xf3, 0x26, 0x2b, 0xac, 0xc2, 0xa2, 0x05, 0xbf, 0x41, 0xd2, - 0x9a, 0x6c, 0xff, 0x84, 0x3b, 0x6e, 0xd3, 0xed, 0x32, 0x96, 0x0c, 0xf0, 0xe1, 0x59, 0x07, 0x63, - 0x3f, 0x91, 0x28, 0x52, 0xd8, 0xe3, 0xc4, 0xfa, 0x29, 0xc1, 0x65, 0x72, 0xe1, 0xb7, 0xbe, 0xa5, - 0xf7, 0x14, 0x67, 0x4d, 0x8c, 0x6f, 0xda, 0x10, 0xd5, 0x44, 0xd3, 0x9f, 0xc4, 0x24, 0xca, 0x99, - 0xc4, 0x15, 0x98, 0xa3, 0x52, 0x18, 0x45, 0x68, 0xdf, 0x39, 0x69, 0x3c, 0xe0, 0xa9, 0x42, 0xc6, - 0x53, 0xa9, 0x45, 0x67, 0xc7, 0x58, 0xb4, 0x38, 0xd2, 0xea, 0x57, 0xcf, 0xf5, 0x9a, 0x08, 0xae, - 0x23, 0x45, 0xde, 0xc3, 0x9c, 0x0b, 0xf9, 0x7b, 0xe7, 0x67, 0xd6, 0x5c, 0xe1, 0x4f, 0xd6, 0xdc, - 0xde, 0xbb, 0x1f, 0x17, 0x81, 0x77, 0x7e, 0x11, 0x78, 0xbf, 0x2e, 0x02, 0xef, 0xf3, 0x65, 0x30, - 0x75, 0x7e, 0x19, 0x4c, 0xfd, 0xbc, 0x0c, 0xa6, 0xde, 0x3f, 0x6f, 0x72, 0x73, 0xd4, 0x8d, 0xca, - 0x54, 0xb6, 0x2b, 0xf6, 0x5b, 0x9b, 0x02, 0xcd, 0x89, 0x54, 0x1f, 0x5d, 0xd4, 0x42, 0xd6, 0x44, - 0x55, 0x39, 0x1d, 0x78, 0x09, 0x23, 0xa2, 0x31, 0x79, 0x0b, 0x2b, 0xbd, 0x6a, 0x54, 0xb4, 0xef, - 0xe1, 0xf6, 0xef, 0x00, 0x00, 0x00, 0xff, 0xff, 0xd2, 0xae, 0xdb, 0x9f, 0x66, 0x07, 0x00, 0x00, + 0x14, 0x66, 0xa1, 0x54, 0xfa, 0x10, 0x34, 0x13, 0x45, 0x24, 0xb8, 0x90, 0x4d, 0x8c, 0x5c, 0x68, + 0x53, 0xd0, 0x04, 0xe3, 0xc1, 0xd0, 0xea, 0x81, 0x03, 0xd1, 0xd4, 0x7a, 0xd0, 0x4b, 0x33, 0xbb, + 0xf3, 0x28, 0x83, 0xed, 0x4c, 0x33, 0x33, 0x2d, 0x90, 0xf8, 0x23, 0x3c, 0xfa, 0x0f, 0xbc, 0x79, + 0xf4, 0x37, 0x78, 0xe4, 0xe8, 0xd1, 0xc0, 0x1f, 0x31, 0x3b, 0x3b, 0x5d, 0xba, 0x2d, 0xb6, 0x68, + 0xf4, 0x36, 0xef, 0xe5, 0x7d, 0xfb, 0x7d, 0x6f, 0xe7, 0x7d, 0x6f, 0x60, 0x4d, 0x61, 0x13, 0x45, + 0x09, 0x23, 0x19, 0x29, 0x64, 0xdc, 0x94, 0x7a, 0xe5, 0x12, 0xf6, 0x50, 0x18, 0x5d, 0xec, 0x28, + 0x69, 0x24, 0x21, 0xb6, 0xa0, 0x98, 0x16, 0x14, 0x7b, 0xe5, 0x15, 0xff, 0x0a, 0x90, 0x39, 0xed, + 0xa0, 0xc3, 0x04, 0x9b, 0x70, 0xfb, 0x65, 0xfc, 0x8d, 0xaa, 0x42, 0x6a, 0xb0, 0xda, 0xa2, 0x5a, + 0x93, 0xfb, 0x30, 0x17, 0xc5, 0x87, 0x06, 0x67, 0xcb, 0xde, 0xba, 0xb7, 0x51, 0xa8, 0xdd, 0xb0, + 0xf1, 0x1e, 0x0b, 0xb6, 0x81, 0x0c, 0x94, 0xbf, 0x56, 0xf2, 0x08, 0x23, 0x43, 0x1e, 0x00, 0x74, + 0x92, 0xe3, 0x25, 0xa4, 0xe0, 0x32, 0x7b, 0x2c, 0x10, 0x19, 0x8e, 0x0a, 0x35, 0xd1, 0x21, 0x59, + 0x83, 0xf9, 0x30, 0x3e, 0x34, 0x18, 0x0a, 0xd9, 0x76, 0x18, 0xb0, 0xa9, 0x17, 0x71, 0x86, 0x3c, + 0x85, 0x82, 0x54, 0xbc, 0xc9, 0x45, 0xc3, 0x9c, 0x2c, 0x4f, 0xaf, 0x7b, 0x1b, 0xf3, 0x5b, 0xab, + 0xc5, 0xd1, 0x06, 0x8b, 0xaf, 0x6c, 0x51, 0xfd, 0xa4, 0x36, 0x27, 0xdd, 0x29, 0xf8, 0x08, 0x05, + 0xcb, 0xb7, 0xcf, 0x85, 0x99, 0x4c, 0xf4, 0x08, 0x6e, 0x19, 0x45, 0x19, 0x0d, 0x5b, 0xd8, 0xa0, + 0x6d, 0xd9, 0x15, 0xc6, 0xd2, 0x15, 0x6a, 0x8b, 0xfd, 0xf4, 0xae, 0xcd, 0x92, 0x87, 0xb0, 0xa8, + 0xd0, 0x70, 0x85, 0xac, 0x5f, 0x37, 0x63, 0xeb, 0x16, 0x5c, 0x36, 0x29, 0x0b, 0x34, 0xdc, 0x4d, + 0xd9, 0x6d, 0xaf, 0x55, 0xab, 0x55, 0xff, 0xd7, 0x96, 0xbf, 0x79, 0xb0, 0x60, 0x59, 0xeb, 0x8a, + 0x0a, 0x7d, 0x80, 0x8a, 0x2c, 0x41, 0x5e, 0xa3, 0x60, 0xa8, 0x1c, 0x91, 0x8b, 0xc8, 0x2a, 0x14, + 0x14, 0x46, 0xbc, 0xc3, 0x31, 0x6d, 0xf4, 0x32, 0x31, 0xac, 0x71, 0xe6, 0x3a, 0x7f, 0x2b, 0x77, + 0xcd, 0xbf, 0x35, 0x7b, 0xd5, 0xdf, 0xfa, 0xec, 0xc1, 0xbc, 0x15, 0x5e, 0xb3, 0x69, 0x72, 0x07, + 0x66, 0xe5, 0xb1, 0x48, 0x55, 0x27, 0xc1, 0xb0, 0xac, 0xe9, 0x11, 0x59, 0x4b, 0x90, 0xcf, 0xdc, + 0x89, 0x8b, 0x48, 0x00, 0x37, 0x8f, 0xba, 0x8a, 0x6b, 0xc6, 0x23, 0xc3, 0xa5, 0x70, 0x5a, 0x33, + 0xb9, 0x18, 0xab, 0x90, 0x6a, 0x29, 0x9c, 0x42, 0x17, 0x05, 0xc6, 0x29, 0xab, 0x52, 0x11, 0x61, + 0xeb, 0x5f, 0x2b, 0xbb, 0x64, 0xcd, 0x65, 0x58, 0xb7, 0xdc, 0xf8, 0xbc, 0xed, 0xb0, 0xbe, 0x21, + 0x77, 0x59, 0x9b, 0x8b, 0x71, 0xae, 0x7c, 0x0c, 0xf7, 0x86, 0x31, 0x7b, 0x5a, 0x77, 0x51, 0x8d, + 0xf5, 0xf2, 0x13, 0x58, 0x1e, 0x46, 0xed, 0xa3, 0xa1, 0x8c, 0x1a, 0x3a, 0x0e, 0xb6, 0x93, 0x21, + 0x73, 0x2b, 0x20, 0x91, 0x38, 0x61, 0x0f, 0x3c, 0x83, 0x95, 0x51, 0x64, 0x4a, 0x39, 0x11, 0x3c, + 0xa8, 0xd6, 0x1a, 0x2b, 0x85, 0x4e, 0x72, 0x56, 0x50, 0x86, 0x45, 0x0b, 0x7e, 0x83, 0xb4, 0x75, + 0xbd, 0xfd, 0x13, 0xec, 0xb8, 0x4d, 0xb7, 0xcb, 0x58, 0x62, 0xe0, 0xfa, 0x69, 0x07, 0xe3, 0x79, + 0xa2, 0x61, 0xa8, 0xb0, 0xc7, 0xa9, 0x9d, 0xa7, 0x04, 0x97, 0xc9, 0x05, 0x5f, 0xfb, 0x23, 0x5d, + 0x51, 0x9c, 0x35, 0x31, 0xbe, 0x69, 0x43, 0x55, 0x13, 0x4d, 0xdf, 0x89, 0x49, 0x34, 0xc1, 0x89, + 0x2b, 0x30, 0x17, 0x49, 0x61, 0x14, 0x8d, 0xfa, 0x93, 0x93, 0xc6, 0x03, 0x33, 0x95, 0xcb, 0xcc, + 0x54, 0x3a, 0xa2, 0xb3, 0x63, 0x46, 0x34, 0x3f, 0xd2, 0xea, 0x17, 0xcf, 0xf5, 0x9a, 0x08, 0xae, + 0x61, 0x84, 0xbc, 0x87, 0x13, 0x2e, 0xe4, 0xef, 0x27, 0x3f, 0xb3, 0xe6, 0x72, 0x7f, 0xb4, 0xe6, + 0xea, 0xee, 0x1e, 0x2b, 0x5d, 0x25, 0x6a, 0x31, 0x82, 0x10, 0xc8, 0x1d, 0xa8, 0xf4, 0x02, 0xed, + 0x79, 0x80, 0x78, 0xfa, 0x37, 0x96, 0x9b, 0x19, 0xb4, 0x5c, 0xe5, 0xdd, 0xf7, 0x73, 0xdf, 0x3b, + 0x3b, 0xf7, 0xbd, 0x9f, 0xe7, 0xbe, 0xf7, 0xe9, 0xc2, 0x9f, 0x3a, 0xbb, 0xf0, 0xa7, 0x7e, 0x5c, + 0xf8, 0x53, 0xef, 0x9f, 0x37, 0xb9, 0x39, 0xec, 0x86, 0xc5, 0x48, 0xb6, 0x4b, 0x56, 0xe1, 0xa6, + 0x40, 0x73, 0x2c, 0xd5, 0x07, 0x17, 0xb5, 0x90, 0x35, 0x51, 0x95, 0x4e, 0x06, 0xde, 0xd7, 0x90, + 0x6a, 0x4c, 0x5e, 0xd8, 0x52, 0xaf, 0x1c, 0xe6, 0xed, 0x2b, 0xbb, 0xfd, 0x2b, 0x00, 0x00, 0xff, + 0xff, 0x83, 0x51, 0x67, 0x0a, 0xbc, 0x07, 0x00, 0x00, } func (m *EventCreateClass) Marshal() (dAtA []byte, err error) { @@ -1888,6 +1955,50 @@ func (m *EventBridgeReceive) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *EventBurnRegen) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *EventBurnRegen) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *EventBurnRegen) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Reason) > 0 { + i -= len(m.Reason) + copy(dAtA[i:], m.Reason) + i = encodeVarintEvents(dAtA, i, uint64(len(m.Reason))) + i-- + dAtA[i] = 0x1a + } + if len(m.Amount) > 0 { + i -= len(m.Amount) + copy(dAtA[i:], m.Amount) + i = encodeVarintEvents(dAtA, i, uint64(len(m.Amount))) + i-- + dAtA[i] = 0x12 + } + if len(m.From) > 0 { + i -= len(m.From) + copy(dAtA[i:], m.From) + i = encodeVarintEvents(dAtA, i, uint64(len(m.From))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func encodeVarintEvents(dAtA []byte, offset int, v uint64) int { offset -= sovEvents(v) base := offset @@ -2225,6 +2336,27 @@ func (m *EventBridgeReceive) Size() (n int) { return n } +func (m *EventBurnRegen) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.From) + if l > 0 { + n += 1 + l + sovEvents(uint64(l)) + } + l = len(m.Amount) + if l > 0 { + n += 1 + l + sovEvents(uint64(l)) + } + l = len(m.Reason) + if l > 0 { + n += 1 + l + sovEvents(uint64(l)) + } + return n +} + func sovEvents(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -4455,6 +4587,152 @@ func (m *EventBridgeReceive) Unmarshal(dAtA []byte) error { } return nil } +func (m *EventBurnRegen) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: EventBurnRegen: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: EventBurnRegen: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field From", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.From = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Amount = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Reason = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipEvents(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthEvents + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipEvents(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/x/ecocredit/base/types/v1/msg_burn.go b/x/ecocredit/base/types/v1/msg_burn.go new file mode 100644 index 0000000000..fd5ac93162 --- /dev/null +++ b/x/ecocredit/base/types/v1/msg_burn.go @@ -0,0 +1,49 @@ +package v1 + +import ( + "fmt" + + "cosmossdk.io/errors" + "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/x/auth/migrations/legacytx" +) + +var _ legacytx.LegacyMsg = &MsgBurnRegen{} + +// ValidateBasic does a sanity check on the provided data. +func (m *MsgBurnRegen) ValidateBasic() error { + if _, err := sdk.AccAddressFromBech32(m.From); err != nil { + return errors.Wrapf(err, "invalid from address") + } + amount, ok := math.NewIntFromString(m.Amount) + if !ok { + return fmt.Errorf("invalid amount: %s", m.Amount) + } + if !amount.IsPositive() { + return fmt.Errorf("amount must be positive: %s", m.Amount) + } + if len(m.Reason) > MAX_REASON_LEN { + return fmt.Errorf("reason must be less than 256 characters") + } + return nil +} + +const MAX_REASON_LEN = 256 + +// GetSigners returns the expected signers for MsgBurnRegen. +func (m *MsgBurnRegen) GetSigners() []sdk.AccAddress { + addr := sdk.MustAccAddressFromBech32(m.From) + return []sdk.AccAddress{addr} +} + +// Route implements the LegacyMsg interface. +func (m MsgBurnRegen) Route() string { return sdk.MsgTypeURL(m) } + +// Type implements the LegacyMsg interface. +func (m MsgBurnRegen) Type() string { return sdk.MsgTypeURL(m) } + +// GetSignBytes implements the LegacyMsg interface. +func (m MsgBurnRegen) GetSignBytes() []byte { + return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&m)) +} diff --git a/x/ecocredit/base/types/v1/tx.pb.go b/x/ecocredit/base/types/v1/tx.pb.go index d304a54675..99fa1d56b2 100644 --- a/x/ecocredit/base/types/v1/tx.pb.go +++ b/x/ecocredit/base/types/v1/tx.pb.go @@ -6,6 +6,11 @@ package v1 import ( context "context" fmt "fmt" + io "io" + math "math" + math_bits "math/bits" + time "time" + types "github.com/cosmos/cosmos-sdk/types" _ "github.com/cosmos/cosmos-sdk/types/msgservice" _ "github.com/cosmos/gogoproto/gogoproto" @@ -16,10 +21,6 @@ import ( grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" - io "io" - math "math" - math_bits "math/bits" - time "time" ) // Reference imports to suppress errors if they are not otherwise used. @@ -2822,6 +2823,112 @@ func (m *MsgRemoveAllowedBridgeChainResponse) XXX_DiscardUnknown() { var xxx_messageInfo_MsgRemoveAllowedBridgeChainResponse proto.InternalMessageInfo +// MsgBurnRegen is the Msg/BurnRegen request type. +// +// Since Revision 3 +type MsgBurnRegen struct { + // from is the address of the account burning REGEN tokens. + From string `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty"` + // amount is the integer amount of uregen tokens to burn. + Amount string `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount,omitempty"` + // reason is any arbitrary string that specifies the reason for burning + // REGEN tokens. It may be at most 256 characters long. + Reason string `protobuf:"bytes,3,opt,name=reason,proto3" json:"reason,omitempty"` +} + +func (m *MsgBurnRegen) Reset() { *m = MsgBurnRegen{} } +func (m *MsgBurnRegen) String() string { return proto.CompactTextString(m) } +func (*MsgBurnRegen) ProtoMessage() {} +func (*MsgBurnRegen) Descriptor() ([]byte, []int) { + return fileDescriptor_2b8ae49f50a3ddbd, []int{46} +} +func (m *MsgBurnRegen) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgBurnRegen) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgBurnRegen.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgBurnRegen) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgBurnRegen.Merge(m, src) +} +func (m *MsgBurnRegen) XXX_Size() int { + return m.Size() +} +func (m *MsgBurnRegen) XXX_DiscardUnknown() { + xxx_messageInfo_MsgBurnRegen.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgBurnRegen proto.InternalMessageInfo + +func (m *MsgBurnRegen) GetFrom() string { + if m != nil { + return m.From + } + return "" +} + +func (m *MsgBurnRegen) GetAmount() string { + if m != nil { + return m.Amount + } + return "" +} + +func (m *MsgBurnRegen) GetReason() string { + if m != nil { + return m.Reason + } + return "" +} + +// MsgBurnResponse is the Msg/Burn response type. +// +// Since Revision 3 +type MsgBurnRegenResponse struct { +} + +func (m *MsgBurnRegenResponse) Reset() { *m = MsgBurnRegenResponse{} } +func (m *MsgBurnRegenResponse) String() string { return proto.CompactTextString(m) } +func (*MsgBurnRegenResponse) ProtoMessage() {} +func (*MsgBurnRegenResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_2b8ae49f50a3ddbd, []int{47} +} +func (m *MsgBurnRegenResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgBurnRegenResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgBurnRegenResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgBurnRegenResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgBurnRegenResponse.Merge(m, src) +} +func (m *MsgBurnRegenResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgBurnRegenResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgBurnRegenResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgBurnRegenResponse proto.InternalMessageInfo + func init() { proto.RegisterType((*MsgAddCreditType)(nil), "regen.ecocredit.v1.MsgAddCreditType") proto.RegisterType((*MsgAddCreditTypeResponse)(nil), "regen.ecocredit.v1.MsgAddCreditTypeResponse") @@ -2872,130 +2979,135 @@ func init() { proto.RegisterType((*MsgAddAllowedBridgeChainResponse)(nil), "regen.ecocredit.v1.MsgAddAllowedBridgeChainResponse") proto.RegisterType((*MsgRemoveAllowedBridgeChain)(nil), "regen.ecocredit.v1.MsgRemoveAllowedBridgeChain") proto.RegisterType((*MsgRemoveAllowedBridgeChainResponse)(nil), "regen.ecocredit.v1.MsgRemoveAllowedBridgeChainResponse") + proto.RegisterType((*MsgBurnRegen)(nil), "regen.ecocredit.v1.MsgBurnRegen") + proto.RegisterType((*MsgBurnRegenResponse)(nil), "regen.ecocredit.v1.MsgBurnRegenResponse") } func init() { proto.RegisterFile("regen/ecocredit/v1/tx.proto", fileDescriptor_2b8ae49f50a3ddbd) } var fileDescriptor_2b8ae49f50a3ddbd = []byte{ - // 1886 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x59, 0x4f, 0x6f, 0xdb, 0xca, - 0x11, 0x0f, 0x25, 0xd9, 0x92, 0x46, 0x8e, 0xe3, 0xd0, 0x89, 0xa3, 0xd0, 0xb1, 0xac, 0x28, 0x71, - 0xe3, 0x38, 0x0e, 0x05, 0x3b, 0x2d, 0x82, 0xa4, 0x28, 0x52, 0xdb, 0x41, 0x50, 0x17, 0x50, 0x5a, - 0x28, 0x2e, 0x8a, 0x06, 0x2d, 0x04, 0x8a, 0x5c, 0xd3, 0x4c, 0x25, 0x52, 0x20, 0x57, 0xb6, 0x83, - 0x16, 0x05, 0x52, 0x14, 0x3d, 0xe7, 0x5c, 0xf4, 0xd0, 0x8f, 0x50, 0xf4, 0x2b, 0xf4, 0xd2, 0x63, - 0x2e, 0x45, 0x7b, 0x4b, 0x91, 0x14, 0x78, 0xdf, 0xe0, 0x9d, 0xde, 0xe1, 0x81, 0xbb, 0xcb, 0x15, - 0x97, 0xe2, 0x3f, 0x25, 0x2f, 0x17, 0xc3, 0x3b, 0x3b, 0x3b, 0xf3, 0x9b, 0x99, 0xdd, 0xf9, 0x43, - 0xc1, 0xaa, 0x8b, 0x4c, 0x64, 0xb7, 0x91, 0xee, 0xe8, 0x2e, 0x32, 0x2c, 0xdc, 0x3e, 0xdd, 0x69, - 0xe3, 0x73, 0x75, 0xe4, 0x3a, 0xd8, 0x91, 0x65, 0xb2, 0xa9, 0xf2, 0x4d, 0xf5, 0x74, 0x47, 0x69, - 0xe8, 0x8e, 0x37, 0x74, 0xbc, 0x76, 0x5f, 0xf3, 0x50, 0xfb, 0x74, 0xa7, 0x8f, 0xb0, 0xb6, 0xd3, - 0xd6, 0x1d, 0xcb, 0xa6, 0x67, 0x94, 0x6b, 0x6c, 0x7f, 0xe8, 0x99, 0xbe, 0xac, 0xa1, 0x67, 0xb2, - 0x8d, 0x2b, 0xa6, 0x63, 0x3a, 0xe4, 0xdf, 0xb6, 0xff, 0x1f, 0xa3, 0xae, 0x9b, 0x8e, 0x63, 0x0e, - 0x50, 0x9b, 0xac, 0xfa, 0xe3, 0xe3, 0x36, 0xb6, 0x86, 0xc8, 0xc3, 0xda, 0x70, 0xc4, 0x18, 0x1a, - 0x31, 0x00, 0x3d, 0xac, 0x61, 0x94, 0xb2, 0x8f, 0x5f, 0x8f, 0x90, 0x47, 0xf7, 0x5b, 0x6f, 0x24, - 0x58, 0xea, 0x78, 0xe6, 0x9e, 0x61, 0x1c, 0x90, 0xfd, 0xa3, 0xd7, 0x23, 0x24, 0xdf, 0x80, 0xaa, - 0x36, 0xc6, 0x27, 0x8e, 0x6b, 0xe1, 0xd7, 0x75, 0xa9, 0x29, 0x6d, 0x56, 0xbb, 0x13, 0x82, 0xfc, - 0x04, 0x6a, 0x54, 0x56, 0xcf, 0x17, 0x54, 0x2f, 0x34, 0xa5, 0xcd, 0xda, 0x6e, 0x43, 0x9d, 0x76, - 0x86, 0x3a, 0x11, 0xd9, 0x05, 0x9d, 0xff, 0xff, 0x78, 0xf1, 0x8f, 0x5f, 0xfd, 0x7d, 0x6b, 0x22, - 0xb0, 0xa5, 0x40, 0x3d, 0x0a, 0xa1, 0x8b, 0xbc, 0x91, 0x63, 0x7b, 0xa8, 0xf5, 0x4f, 0x09, 0x16, - 0x3b, 0x9e, 0x79, 0xe0, 0x22, 0x0d, 0xa3, 0x83, 0x81, 0xe6, 0x79, 0xf2, 0x15, 0x98, 0xd3, 0x8c, - 0xa1, 0x65, 0x33, 0x64, 0x74, 0x21, 0xd7, 0xa1, 0x6c, 0x79, 0xde, 0x18, 0xb9, 0x5e, 0xbd, 0xd0, - 0x2c, 0x6e, 0x56, 0xbb, 0xc1, 0x52, 0x56, 0xa0, 0x32, 0x44, 0x58, 0x33, 0x34, 0xac, 0xd5, 0x8b, - 0xe4, 0x08, 0x5f, 0xcb, 0xdb, 0x20, 0x87, 0x6c, 0xe9, 0x69, 0xfd, 0xbe, 0x8b, 0x4e, 0xeb, 0x25, - 0xc2, 0xb5, 0x34, 0x81, 0xbc, 0x47, 0xe8, 0xf2, 0x3d, 0x28, 0x1e, 0x23, 0x54, 0x9f, 0x23, 0x16, - 0x5f, 0x57, 0x69, 0x28, 0x55, 0x3f, 0xd4, 0x2a, 0x0b, 0xb5, 0x7a, 0xe0, 0x58, 0x76, 0xd7, 0xe7, - 0x7a, 0x0c, 0xbe, 0x95, 0x14, 0x5c, 0xeb, 0x01, 0xac, 0x88, 0x46, 0x04, 0xf6, 0xc9, 0xd7, 0xa1, - 0xa2, 0xfb, 0x84, 0x9e, 0x65, 0x30, 0x7b, 0xca, 0x64, 0x7d, 0x68, 0xb4, 0xfe, 0x41, 0x43, 0x43, - 0x4f, 0xfd, 0xdc, 0x75, 0x5e, 0x21, 0x1d, 0x27, 0x18, 0x1f, 0x96, 0x52, 0x10, 0xa4, 0xa4, 0x5a, - 0xdf, 0x82, 0x85, 0x57, 0x63, 0xd7, 0xf2, 0x0c, 0x4b, 0xc7, 0x96, 0x63, 0x33, 0xbb, 0x05, 0x9a, - 0x7c, 0x13, 0x16, 0x5c, 0x74, 0x8c, 0x5c, 0x64, 0xeb, 0xc8, 0x17, 0x3f, 0x47, 0x78, 0x6a, 0x9c, - 0x76, 0x68, 0x08, 0x96, 0x3e, 0x22, 0xb1, 0x14, 0x30, 0x73, 0x5b, 0xd7, 0x00, 0x46, 0x94, 0x34, - 0xb1, 0xb6, 0xca, 0x28, 0x87, 0x46, 0xeb, 0x9b, 0x42, 0x28, 0xd4, 0xfb, 0x1a, 0xd6, 0x4f, 0xe4, - 0x15, 0x98, 0xa7, 0x51, 0x64, 0xdc, 0x6c, 0x15, 0x91, 0x54, 0x88, 0x48, 0x92, 0x7f, 0x04, 0x15, - 0x9f, 0x51, 0xb3, 0x75, 0x54, 0x2f, 0x36, 0x8b, 0x9b, 0xb5, 0xdd, 0x9b, 0x71, 0xd7, 0x93, 0xe8, - 0x38, 0x64, 0x8c, 0x5d, 0x7e, 0x44, 0x70, 0x59, 0x29, 0xe2, 0xb2, 0x27, 0x00, 0x1e, 0xd6, 0x5c, - 0xdc, 0x33, 0x34, 0x1c, 0xdc, 0x04, 0x45, 0xa5, 0xaf, 0x54, 0x0d, 0x5e, 0xa9, 0x7a, 0x14, 0xbc, - 0xd2, 0xfd, 0xd2, 0xdb, 0xf7, 0xeb, 0x52, 0xb7, 0x4a, 0xce, 0x3c, 0xd5, 0x30, 0x92, 0x7f, 0x08, - 0x15, 0x64, 0x1b, 0xf4, 0xf8, 0x7c, 0xce, 0xe3, 0x65, 0x64, 0x1b, 0xe4, 0xb0, 0x0c, 0x25, 0x67, - 0x84, 0xec, 0x7a, 0xb9, 0x29, 0x6d, 0x56, 0xba, 0xe4, 0x7f, 0xf9, 0x11, 0x54, 0x1d, 0xd7, 0x32, - 0x2d, 0xbb, 0x87, 0xcf, 0xeb, 0x15, 0x22, 0xf1, 0x46, 0x9c, 0xb5, 0x3f, 0x23, 0x4c, 0x47, 0xe7, - 0xdd, 0x8a, 0xc3, 0xfe, 0x7b, 0x5c, 0xf3, 0x03, 0xc7, 0x7c, 0xda, 0x7a, 0x14, 0xba, 0xa3, 0xc4, - 0x33, 0x3c, 0x6e, 0xeb, 0x50, 0xeb, 0xfb, 0x84, 0x9e, 0x81, 0x6c, 0x67, 0xc8, 0x42, 0x01, 0x84, - 0xf4, 0xd4, 0xa7, 0xb4, 0xfe, 0x2d, 0xc1, 0x72, 0xc7, 0x33, 0x3b, 0x96, 0x8d, 0xc9, 0x49, 0xfa, - 0x8e, 0xbd, 0xc4, 0xf0, 0x45, 0x04, 0x16, 0xa2, 0x02, 0x3f, 0x37, 0x80, 0x82, 0x4b, 0x4a, 0x9f, - 0xee, 0x92, 0x35, 0x58, 0x8d, 0x31, 0x8b, 0xe7, 0xa6, 0x23, 0x58, 0xe8, 0x78, 0xe6, 0x0b, 0xa4, - 0x0d, 0xd2, 0x6f, 0x6b, 0x96, 0xb9, 0xa2, 0xd2, 0x15, 0xb8, 0x12, 0x96, 0xca, 0xb5, 0x7d, 0x5d, - 0x80, 0x32, 0xd9, 0xb0, 0x0d, 0x5f, 0x93, 0x87, 0x6c, 0x63, 0xa2, 0x89, 0xae, 0xfc, 0xc4, 0xed, - 0x22, 0xdd, 0x1a, 0x59, 0xc8, 0xc6, 0xc1, 0xb3, 0xe0, 0x04, 0x79, 0x0f, 0xca, 0xd4, 0x76, 0x8f, - 0x39, 0xf5, 0x4e, 0x9c, 0x53, 0x98, 0x0e, 0xd5, 0xff, 0x13, 0x58, 0x1c, 0x9c, 0x53, 0xfe, 0x2f, - 0x41, 0x2d, 0xb4, 0x91, 0x79, 0x35, 0xe4, 0x3b, 0x70, 0x09, 0xbb, 0x9a, 0xa1, 0xf5, 0x07, 0xa8, - 0xa7, 0x0d, 0x9d, 0x31, 0xc7, 0xb5, 0x18, 0x90, 0xf7, 0x08, 0x55, 0xde, 0x80, 0x45, 0x17, 0x61, - 0xcb, 0x45, 0x46, 0xc0, 0x47, 0xb3, 0xd5, 0x45, 0x46, 0x65, 0x6c, 0x0f, 0xe1, 0x1a, 0x25, 0x0c, - 0x91, 0x8d, 0x7b, 0x31, 0xd9, 0x6b, 0x65, 0xb2, 0xfd, 0xd3, 0x70, 0x1e, 0xbb, 0x07, 0x97, 0x43, - 0x07, 0x5d, 0xa4, 0x79, 0x8e, 0xcd, 0x92, 0xd9, 0xd2, 0x64, 0xa3, 0x4b, 0xe8, 0x2c, 0x20, 0xd4, - 0xa9, 0xad, 0xcb, 0x70, 0x89, 0xf9, 0x84, 0xc7, 0xe2, 0x6f, 0x12, 0x54, 0x3b, 0x9e, 0xd9, 0x25, - 0xe7, 0xfc, 0x9c, 0xec, 0x9c, 0xd9, 0x3c, 0x18, 0x74, 0x21, 0xff, 0x60, 0xe2, 0xed, 0x02, 0xf1, - 0xf6, 0x6a, 0x72, 0x89, 0x9c, 0x78, 0x78, 0x2a, 0x27, 0x17, 0x63, 0x72, 0xf2, 0x0a, 0xcc, 0x33, - 0x03, 0xa8, 0xcd, 0x6c, 0xc5, 0x12, 0x31, 0x51, 0xdf, 0x5a, 0x86, 0xcb, 0x1c, 0x21, 0xc7, 0xfd, - 0x7b, 0x02, 0xfb, 0xc0, 0x7f, 0x24, 0x83, 0xef, 0x16, 0xf6, 0x04, 0x52, 0x31, 0x03, 0x12, 0xd5, - 0xce, 0x21, 0x39, 0x24, 0x75, 0xfc, 0x62, 0x64, 0x04, 0xa5, 0x71, 0x8f, 0x54, 0xb4, 0x99, 0xeb, - 0xdc, 0x2a, 0x54, 0x6d, 0x74, 0xd6, 0xa3, 0x87, 0x58, 0xa1, 0xb3, 0xd1, 0x19, 0x91, 0x26, 0x54, - 0x28, 0xfa, 0xa8, 0xa3, 0x0a, 0x39, 0x9e, 0xbf, 0x4a, 0x70, 0x55, 0xdc, 0x3f, 0x64, 0x7d, 0xc4, - 0xcc, 0x90, 0xd6, 0xa1, 0xa6, 0x19, 0x46, 0x2f, 0x68, 0x4b, 0x8a, 0xa4, 0x2d, 0x01, 0xcd, 0x30, - 0x02, 0x89, 0xe4, 0xce, 0x0f, 0x9d, 0x53, 0xc4, 0x79, 0x4a, 0x84, 0xe7, 0x22, 0xa5, 0x32, 0x36, - 0x01, 0xfd, 0x3a, 0xac, 0xc5, 0xa2, 0xe3, 0xf8, 0xcf, 0x49, 0x1a, 0x0f, 0x31, 0x74, 0x82, 0xd2, - 0x35, 0x33, 0xfe, 0x9b, 0xb0, 0xe0, 0xbb, 0x34, 0xd2, 0x3e, 0xd4, 0x6c, 0x74, 0x16, 0xc8, 0x14, - 0xa0, 0x35, 0xa1, 0x11, 0xaf, 0x99, 0x63, 0x1b, 0x87, 0x5c, 0xcb, 0x9a, 0x83, 0xb4, 0x68, 0x67, - 0x54, 0xf9, 0xdc, 0x11, 0x0f, 0xfb, 0x2c, 0xac, 0x96, 0xe3, 0xfa, 0x03, 0x69, 0x5a, 0x04, 0x86, - 0x0c, 0xaf, 0x65, 0x40, 0x9b, 0xd1, 0x73, 0x2d, 0x68, 0x26, 0xe9, 0xe7, 0x18, 0xff, 0x42, 0x53, - 0xce, 0xbe, 0x6b, 0x19, 0x66, 0x52, 0xca, 0x59, 0x81, 0x79, 0xac, 0xb9, 0x26, 0x0a, 0x72, 0x2c, - 0x5b, 0x89, 0x65, 0xa1, 0x18, 0x2d, 0x0b, 0xa1, 0x17, 0x5f, 0xca, 0xff, 0xe2, 0x85, 0x97, 0xfd, - 0x46, 0x0a, 0xdd, 0x3a, 0x52, 0xb6, 0xb8, 0xff, 0x3e, 0xb9, 0x07, 0xc8, 0xe1, 0x43, 0xa1, 0x6e, - 0x86, 0xaf, 0x9f, 0x00, 0x81, 0xbb, 0x90, 0xe6, 0x1f, 0xea, 0x41, 0x4e, 0x7c, 0x5f, 0x22, 0x5d, - 0x76, 0x40, 0xd5, 0x91, 0x75, 0x8a, 0x12, 0x41, 0xa7, 0x3c, 0x96, 0x67, 0x50, 0x66, 0xf1, 0x27, - 0x48, 0x6b, 0xbb, 0xdb, 0x09, 0xc5, 0x55, 0xd0, 0xa4, 0x06, 0x3d, 0x72, 0x70, 0x58, 0xfe, 0x31, - 0xcc, 0x11, 0x27, 0xb0, 0xbe, 0x65, 0x2b, 0x97, 0x14, 0xda, 0x29, 0xd0, 0x83, 0x62, 0xf7, 0x33, - 0x37, 0x4b, 0xf7, 0xa3, 0xfc, 0x47, 0x82, 0x39, 0xda, 0xcb, 0x08, 0x57, 0x46, 0x8a, 0x5e, 0x99, - 0x15, 0x98, 0x17, 0x8a, 0x39, 0x5b, 0x45, 0xba, 0xe3, 0xe2, 0xe7, 0x75, 0xc7, 0xa5, 0x59, 0xbb, - 0xe3, 0x70, 0xdf, 0x3e, 0x27, 0xf6, 0xed, 0xca, 0x00, 0xca, 0xc1, 0x08, 0x15, 0x9d, 0x68, 0xa4, - 0xa9, 0x89, 0x66, 0xaa, 0x08, 0x17, 0x62, 0x8a, 0x70, 0xca, 0x60, 0x25, 0x5e, 0xcc, 0x97, 0x24, - 0xbb, 0x08, 0x01, 0xcb, 0xdd, 0x5a, 0x67, 0x24, 0x9a, 0xd6, 0xaf, 0x41, 0x66, 0xa3, 0xb3, 0x7f, - 0x0d, 0x49, 0xf3, 0xee, 0xb8, 0x19, 0xf3, 0x7b, 0x9d, 0xbc, 0x77, 0x9f, 0x91, 0xdf, 0x61, 0xba, - 0x9c, 0x1a, 0xcc, 0x6f, 0x80, 0x32, 0x2d, 0x9d, 0xbf, 0x1c, 0x44, 0x0a, 0xe9, 0x0b, 0x84, 0xc3, - 0xbb, 0x7b, 0x83, 0x81, 0x73, 0x36, 0xb0, 0x3c, 0x9c, 0x0d, 0x02, 0xd9, 0x7e, 0xfb, 0x47, 0x8d, - 0xaa, 0x74, 0x83, 0xe5, 0x14, 0x88, 0x0d, 0xb8, 0x95, 0xa2, 0x86, 0xa3, 0xe9, 0x91, 0xda, 0xd2, - 0x25, 0x85, 0xf3, 0x8b, 0x38, 0x83, 0x56, 0x91, 0x69, 0x05, 0x1c, 0x81, 0x4d, 0xd2, 0x4b, 0xa8, - 0xfe, 0x3d, 0x43, 0x59, 0x9f, 0x52, 0xd8, 0x07, 0x85, 0x42, 0xae, 0x0f, 0x0a, 0x51, 0x40, 0xab, - 0x70, 0x7d, 0x4a, 0x1f, 0x07, 0x63, 0x06, 0xdf, 0x54, 0x88, 0xa7, 0x90, 0x41, 0xaf, 0xdf, 0xc1, - 0x89, 0x66, 0xd9, 0x19, 0x98, 0xd6, 0x00, 0x74, 0x9f, 0xad, 0x67, 0x6b, 0x43, 0x14, 0xdc, 0x38, - 0x42, 0x79, 0xae, 0x0d, 0xa7, 0x51, 0xd0, 0xda, 0x15, 0xab, 0x88, 0x83, 0x79, 0x45, 0x6e, 0x0a, - 0x75, 0xdd, 0x97, 0xc6, 0x43, 0xaf, 0x4b, 0x92, 0xae, 0x00, 0xd2, 0xee, 0x9f, 0x97, 0xa1, 0xd8, - 0xf1, 0x4c, 0xf9, 0x37, 0x50, 0x0b, 0x7f, 0x5b, 0x6a, 0x25, 0xa4, 0xdb, 0x10, 0x8f, 0xb2, 0x95, - 0xcd, 0xc3, 0xdf, 0xb7, 0x0e, 0x17, 0xc5, 0xef, 0x37, 0xb7, 0x53, 0x0f, 0x33, 0x2e, 0x65, 0x3b, - 0x0f, 0x17, 0x57, 0xc2, 0x6d, 0xa0, 0xa9, 0x3b, 0xdd, 0x06, 0xc2, 0x93, 0x61, 0x83, 0x38, 0xfe, - 0x0f, 0x60, 0x69, 0x6a, 0xb2, 0x4f, 0x9a, 0x1c, 0xa3, 0x8c, 0x4a, 0x3b, 0x27, 0x23, 0xd7, 0xf6, - 0x4b, 0xa8, 0x4e, 0x26, 0xea, 0x66, 0xe2, 0x80, 0xca, 0x38, 0x94, 0xcd, 0x2c, 0x0e, 0x2e, 0xf8, - 0x27, 0x50, 0x22, 0xb3, 0xf3, 0x6a, 0xca, 0xd0, 0xab, 0xdc, 0x4a, 0xd9, 0xe4, 0x92, 0x9e, 0xc3, - 0x3c, 0x9b, 0xfc, 0xd6, 0x12, 0xd8, 0xe9, 0xb6, 0xb2, 0x91, 0xba, 0x1d, 0x96, 0xc7, 0x46, 0xb2, - 0x24, 0x79, 0x74, 0x3b, 0x51, 0x9e, 0x38, 0x52, 0xf9, 0x01, 0x9b, 0x9a, 0xa7, 0x92, 0x02, 0x16, - 0x65, 0x4c, 0x0c, 0x58, 0xd2, 0xc0, 0x24, 0xbb, 0x20, 0xc7, 0x0c, 0x4b, 0x77, 0xb3, 0xc5, 0x30, - 0x56, 0x65, 0x27, 0x37, 0x2b, 0xd7, 0x39, 0x86, 0xe5, 0xb8, 0x09, 0x67, 0x2b, 0x5b, 0x52, 0xc0, - 0xab, 0xec, 0xe6, 0xe7, 0x9d, 0x36, 0x55, 0x18, 0x5e, 0xd2, 0x4d, 0x0d, 0xb3, 0x66, 0x98, 0x1a, - 0x37, 0x9b, 0xc8, 0xbf, 0x83, 0xab, 0xf1, 0x83, 0xc9, 0x76, 0x1e, 0x59, 0xdc, 0xdc, 0xef, 0xcf, - 0xc2, 0x3d, 0xed, 0x67, 0xb1, 0xa7, 0x4f, 0xf7, 0xb3, 0xc0, 0x9b, 0xe1, 0xe7, 0xd8, 0x46, 0xdd, - 0x7f, 0x10, 0x6c, 0xce, 0x59, 0x4b, 0x6d, 0x7f, 0x13, 0x1f, 0x84, 0xd8, 0xe3, 0xfb, 0x59, 0x58, - 0xec, 0xef, 0x6f, 0xe7, 0xe9, 0xaa, 0x95, 0x5c, 0x1d, 0x7c, 0x58, 0x89, 0xf8, 0x2b, 0x4a, 0x92, - 0x12, 0x81, 0x2b, 0x51, 0x49, 0xec, 0xcf, 0x21, 0xf2, 0x9f, 0x24, 0xa8, 0x27, 0x76, 0x5c, 0xed, - 0xc4, 0xe4, 0x15, 0x7f, 0x40, 0x79, 0x38, 0xe3, 0x01, 0x0e, 0xc3, 0x82, 0x4b, 0xd1, 0x9e, 0xf3, - 0x7b, 0x29, 0x76, 0x84, 0xf8, 0x14, 0x35, 0x1f, 0x5f, 0xf8, 0xcd, 0xc5, 0x34, 0x75, 0x77, 0x13, - 0x33, 0x6b, 0x94, 0x35, 0xf1, 0xcd, 0x25, 0x77, 0x72, 0xf2, 0x31, 0x2c, 0x46, 0xda, 0xb8, 0x8d, - 0xec, 0x6c, 0xf1, 0x0c, 0x21, 0xe5, 0x7e, 0x2e, 0xb6, 0xf0, 0xdb, 0x8e, 0xef, 0xd0, 0x52, 0x2e, - 0xc5, 0x34, 0x77, 0xe2, 0xdb, 0x4e, 0x6d, 0xca, 0xc8, 0x55, 0x4a, 0x6c, 0xc9, 0xda, 0xa9, 0x4e, - 0x8b, 0xc1, 0xf0, 0x70, 0xc6, 0x03, 0x01, 0x8c, 0xfd, 0x5f, 0xfd, 0xeb, 0x43, 0x43, 0x7a, 0xf7, - 0xa1, 0x21, 0xfd, 0xef, 0x43, 0x43, 0x7a, 0xfb, 0xb1, 0x71, 0xe1, 0xdd, 0xc7, 0xc6, 0x85, 0xff, - 0x7e, 0x6c, 0x5c, 0x78, 0xf9, 0xc4, 0xb4, 0xf0, 0xc9, 0xb8, 0xaf, 0xea, 0xce, 0xb0, 0x4d, 0x84, - 0xdf, 0xb7, 0x11, 0x3e, 0x73, 0xdc, 0xdf, 0xb2, 0xd5, 0x00, 0x19, 0x26, 0x72, 0xdb, 0xe7, 0xa1, - 0x1f, 0x37, 0xc9, 0xaf, 0xae, 0xe4, 0xe7, 0xcd, 0xf6, 0xe9, 0x4e, 0x7f, 0x9e, 0x8c, 0x8c, 0x0f, - 0xbe, 0x0d, 0x00, 0x00, 0xff, 0xff, 0xc0, 0xcf, 0x49, 0x61, 0xc5, 0x1d, 0x00, 0x00, + // 1934 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x59, 0x5f, 0x6f, 0x1b, 0x4b, + 0x15, 0xef, 0xda, 0x4e, 0x6c, 0x1f, 0xa7, 0x69, 0xba, 0xe9, 0xcd, 0x75, 0x37, 0x8d, 0xe3, 0xfa, + 0xde, 0x70, 0x73, 0x73, 0xd3, 0xb5, 0x92, 0x82, 0xaa, 0x16, 0xa1, 0x92, 0xa4, 0xaa, 0x08, 0x92, + 0x0b, 0x72, 0x83, 0x10, 0x15, 0x95, 0xb5, 0xde, 0x9d, 0x6c, 0xb6, 0xd8, 0xbb, 0xd6, 0xee, 0x38, + 0x49, 0x05, 0x42, 0x2a, 0xe2, 0x03, 0xf4, 0x19, 0xf1, 0xc0, 0x47, 0x40, 0x7c, 0x05, 0x5e, 0x78, + 0xec, 0x0b, 0x82, 0xb7, 0xa2, 0x16, 0x89, 0x6f, 0xc0, 0x13, 0x0f, 0x68, 0x67, 0x66, 0xc7, 0x3b, + 0xfb, 0xdf, 0xed, 0xed, 0x4b, 0xe4, 0x39, 0x73, 0xe6, 0x9c, 0xdf, 0x39, 0x67, 0xe6, 0xfc, 0xd9, + 0xc0, 0xba, 0x8b, 0x4c, 0x64, 0x77, 0x91, 0xee, 0xe8, 0x2e, 0x32, 0x2c, 0xdc, 0x3d, 0xdf, 0xeb, + 0xe2, 0x4b, 0x75, 0xe2, 0x3a, 0xd8, 0x91, 0x65, 0xb2, 0xa9, 0xf2, 0x4d, 0xf5, 0x7c, 0x4f, 0x69, + 0xe9, 0x8e, 0x37, 0x76, 0xbc, 0xee, 0x50, 0xf3, 0x50, 0xf7, 0x7c, 0x6f, 0x88, 0xb0, 0xb6, 0xd7, + 0xd5, 0x1d, 0xcb, 0xa6, 0x67, 0x94, 0xcf, 0xd9, 0xfe, 0xd8, 0x33, 0x7d, 0x59, 0x63, 0xcf, 0x64, + 0x1b, 0x37, 0x4c, 0xc7, 0x74, 0xc8, 0xcf, 0xae, 0xff, 0x8b, 0x51, 0x37, 0x4d, 0xc7, 0x31, 0x47, + 0xa8, 0x4b, 0x56, 0xc3, 0xe9, 0x69, 0x17, 0x5b, 0x63, 0xe4, 0x61, 0x6d, 0x3c, 0x61, 0x0c, 0xad, + 0x04, 0x80, 0x1e, 0xd6, 0x30, 0xca, 0xd8, 0xc7, 0x2f, 0x27, 0xc8, 0xa3, 0xfb, 0x9d, 0x57, 0x12, + 0xac, 0xf4, 0x3c, 0xf3, 0xc0, 0x30, 0x8e, 0xc8, 0xfe, 0xc9, 0xcb, 0x09, 0x92, 0x6f, 0x41, 0x5d, + 0x9b, 0xe2, 0x33, 0xc7, 0xb5, 0xf0, 0xcb, 0xa6, 0xd4, 0x96, 0xb6, 0xeb, 0xfd, 0x19, 0x41, 0x7e, + 0x08, 0x0d, 0x2a, 0x6b, 0xe0, 0x0b, 0x6a, 0x96, 0xda, 0xd2, 0x76, 0x63, 0xbf, 0xa5, 0xc6, 0x9d, + 0xa1, 0xce, 0x44, 0xf6, 0x41, 0xe7, 0xbf, 0x1f, 0x2c, 0xff, 0xee, 0x3f, 0x7f, 0xde, 0x99, 0x09, + 0xec, 0x28, 0xd0, 0x8c, 0x42, 0xe8, 0x23, 0x6f, 0xe2, 0xd8, 0x1e, 0xea, 0xfc, 0x55, 0x82, 0xe5, + 0x9e, 0x67, 0x1e, 0xb9, 0x48, 0xc3, 0xe8, 0x68, 0xa4, 0x79, 0x9e, 0x7c, 0x03, 0x16, 0x34, 0x63, + 0x6c, 0xd9, 0x0c, 0x19, 0x5d, 0xc8, 0x4d, 0xa8, 0x5a, 0x9e, 0x37, 0x45, 0xae, 0xd7, 0x2c, 0xb5, + 0xcb, 0xdb, 0xf5, 0x7e, 0xb0, 0x94, 0x15, 0xa8, 0x8d, 0x11, 0xd6, 0x0c, 0x0d, 0x6b, 0xcd, 0x32, + 0x39, 0xc2, 0xd7, 0xf2, 0x2e, 0xc8, 0x21, 0x5b, 0x06, 0xda, 0x70, 0xe8, 0xa2, 0xf3, 0x66, 0x85, + 0x70, 0xad, 0xcc, 0x20, 0x1f, 0x10, 0xba, 0xfc, 0x0d, 0x94, 0x4f, 0x11, 0x6a, 0x2e, 0x10, 0x8b, + 0x6f, 0xaa, 0x34, 0x94, 0xaa, 0x1f, 0x6a, 0x95, 0x85, 0x5a, 0x3d, 0x72, 0x2c, 0xbb, 0xef, 0x73, + 0x3d, 0x00, 0xdf, 0x4a, 0x0a, 0xae, 0x73, 0x17, 0xd6, 0x44, 0x23, 0x02, 0xfb, 0xe4, 0x9b, 0x50, + 0xd3, 0x7d, 0xc2, 0xc0, 0x32, 0x98, 0x3d, 0x55, 0xb2, 0x3e, 0x36, 0x3a, 0x7f, 0xa1, 0xa1, 0xa1, + 0xa7, 0x7e, 0xea, 0x3a, 0x2f, 0x90, 0x8e, 0x53, 0x8c, 0x0f, 0x4b, 0x29, 0x09, 0x52, 0x32, 0xad, + 0xef, 0xc0, 0xd2, 0x8b, 0xa9, 0x6b, 0x79, 0x86, 0xa5, 0x63, 0xcb, 0xb1, 0x99, 0xdd, 0x02, 0x4d, + 0xbe, 0x0d, 0x4b, 0x2e, 0x3a, 0x45, 0x2e, 0xb2, 0x75, 0xe4, 0x8b, 0x5f, 0x20, 0x3c, 0x0d, 0x4e, + 0x3b, 0x36, 0x04, 0x4b, 0xef, 0x93, 0x58, 0x0a, 0x98, 0xb9, 0xad, 0x1b, 0x00, 0x13, 0x4a, 0x9a, + 0x59, 0x5b, 0x67, 0x94, 0x63, 0xa3, 0xf3, 0xbf, 0x52, 0x28, 0xd4, 0x87, 0x1a, 0xd6, 0xcf, 0xe4, + 0x35, 0x58, 0xa4, 0x51, 0x64, 0xdc, 0x6c, 0x15, 0x91, 0x54, 0x8a, 0x48, 0x92, 0x7f, 0x00, 0x35, + 0x9f, 0x51, 0xb3, 0x75, 0xd4, 0x2c, 0xb7, 0xcb, 0xdb, 0x8d, 0xfd, 0xdb, 0x49, 0xd7, 0x93, 0xe8, + 0x38, 0x66, 0x8c, 0x7d, 0x7e, 0x44, 0x70, 0x59, 0x25, 0xe2, 0xb2, 0x87, 0x00, 0x1e, 0xd6, 0x5c, + 0x3c, 0x30, 0x34, 0x1c, 0xdc, 0x04, 0x45, 0xa5, 0xaf, 0x54, 0x0d, 0x5e, 0xa9, 0x7a, 0x12, 0xbc, + 0xd2, 0xc3, 0xca, 0xeb, 0xb7, 0x9b, 0x52, 0xbf, 0x4e, 0xce, 0x3c, 0xd2, 0x30, 0x92, 0xbf, 0x0f, + 0x35, 0x64, 0x1b, 0xf4, 0xf8, 0x62, 0xc1, 0xe3, 0x55, 0x64, 0x1b, 0xe4, 0xb0, 0x0c, 0x15, 0x67, + 0x82, 0xec, 0x66, 0xb5, 0x2d, 0x6d, 0xd7, 0xfa, 0xe4, 0xb7, 0x7c, 0x1f, 0xea, 0x8e, 0x6b, 0x99, + 0x96, 0x3d, 0xc0, 0x97, 0xcd, 0x1a, 0x91, 0x78, 0x2b, 0xc9, 0xda, 0x9f, 0x10, 0xa6, 0x93, 0xcb, + 0x7e, 0xcd, 0x61, 0xbf, 0x1e, 0x34, 0xfc, 0xc0, 0x31, 0x9f, 0x76, 0xee, 0x87, 0xee, 0x28, 0xf1, + 0x0c, 0x8f, 0xdb, 0x26, 0x34, 0x86, 0x3e, 0x61, 0x60, 0x20, 0xdb, 0x19, 0xb3, 0x50, 0x00, 0x21, + 0x3d, 0xf2, 0x29, 0x9d, 0xbf, 0x4b, 0xb0, 0xda, 0xf3, 0xcc, 0x9e, 0x65, 0x63, 0x72, 0x92, 0xbe, + 0x63, 0x2f, 0x35, 0x7c, 0x11, 0x81, 0xa5, 0xa8, 0xc0, 0x8f, 0x0d, 0xa0, 0xe0, 0x92, 0xca, 0x87, + 0xbb, 0x64, 0x03, 0xd6, 0x13, 0xcc, 0xe2, 0xb9, 0xe9, 0x04, 0x96, 0x7a, 0x9e, 0xf9, 0x14, 0x69, + 0xa3, 0xec, 0xdb, 0x9a, 0x67, 0xae, 0xa8, 0x74, 0x0d, 0x6e, 0x84, 0xa5, 0x72, 0x6d, 0xff, 0x2d, + 0x41, 0x95, 0x6c, 0xd8, 0x86, 0xaf, 0xc9, 0x43, 0xb6, 0x31, 0xd3, 0x44, 0x57, 0x7e, 0xe2, 0x76, + 0x91, 0x6e, 0x4d, 0x2c, 0x64, 0xe3, 0xe0, 0x59, 0x70, 0x82, 0x7c, 0x00, 0x55, 0x6a, 0xbb, 0xc7, + 0x9c, 0xfa, 0x55, 0x92, 0x53, 0x98, 0x0e, 0xd5, 0xff, 0x13, 0x58, 0x1c, 0x9c, 0x53, 0xfe, 0x2d, + 0x41, 0x23, 0xb4, 0x91, 0x7b, 0x35, 0xe4, 0xaf, 0xe0, 0x1a, 0x76, 0x35, 0x43, 0x1b, 0x8e, 0xd0, + 0x40, 0x1b, 0x3b, 0x53, 0x8e, 0x6b, 0x39, 0x20, 0x1f, 0x10, 0xaa, 0xbc, 0x05, 0xcb, 0x2e, 0xc2, + 0x96, 0x8b, 0x8c, 0x80, 0x8f, 0x66, 0xab, 0xab, 0x8c, 0xca, 0xd8, 0xee, 0xc1, 0xe7, 0x94, 0x30, + 0x46, 0x36, 0x1e, 0x24, 0x64, 0xaf, 0xb5, 0xd9, 0xf6, 0x8f, 0xc3, 0x79, 0xec, 0x1b, 0xb8, 0x1e, + 0x3a, 0xe8, 0x22, 0xcd, 0x73, 0x6c, 0x96, 0xcc, 0x56, 0x66, 0x1b, 0x7d, 0x42, 0x67, 0x01, 0xa1, + 0x4e, 0xed, 0x5c, 0x87, 0x6b, 0xcc, 0x27, 0x3c, 0x16, 0x7f, 0x92, 0xa0, 0xde, 0xf3, 0xcc, 0x3e, + 0x39, 0xe7, 0xe7, 0x64, 0xe7, 0xc2, 0xe6, 0xc1, 0xa0, 0x0b, 0xf9, 0x7b, 0x33, 0x6f, 0x97, 0x88, + 0xb7, 0xd7, 0xd3, 0x4b, 0xe4, 0xcc, 0xc3, 0xb1, 0x9c, 0x5c, 0x4e, 0xc8, 0xc9, 0x6b, 0xb0, 0xc8, + 0x0c, 0xa0, 0x36, 0xb3, 0x15, 0x4b, 0xc4, 0x44, 0x7d, 0x67, 0x15, 0xae, 0x73, 0x84, 0x1c, 0xf7, + 0x6f, 0x08, 0xec, 0x23, 0xff, 0x91, 0x8c, 0xbe, 0x5d, 0xd8, 0x33, 0x48, 0xe5, 0x1c, 0x48, 0x54, + 0x3b, 0x87, 0xe4, 0x90, 0xd4, 0xf1, 0xb3, 0x89, 0x11, 0x94, 0xc6, 0x03, 0x52, 0xd1, 0xe6, 0xae, + 0x73, 0xeb, 0x50, 0xb7, 0xd1, 0xc5, 0x80, 0x1e, 0x62, 0x85, 0xce, 0x46, 0x17, 0x44, 0x9a, 0x50, + 0xa1, 0xe8, 0xa3, 0x8e, 0x2a, 0xe4, 0x78, 0xfe, 0x28, 0xc1, 0x67, 0xe2, 0xfe, 0x31, 0xeb, 0x23, + 0xe6, 0x86, 0xb4, 0x09, 0x0d, 0xcd, 0x30, 0x06, 0x41, 0x5b, 0x52, 0x26, 0x6d, 0x09, 0x68, 0x86, + 0x11, 0x48, 0x24, 0x77, 0x7e, 0xec, 0x9c, 0x23, 0xce, 0x53, 0x21, 0x3c, 0x57, 0x29, 0x95, 0xb1, + 0x09, 0xe8, 0x37, 0x61, 0x23, 0x11, 0x1d, 0xc7, 0x7f, 0x49, 0xd2, 0x78, 0x88, 0xa1, 0x17, 0x94, + 0xae, 0xb9, 0xf1, 0xdf, 0x86, 0x25, 0xdf, 0xa5, 0x91, 0xf6, 0xa1, 0x61, 0xa3, 0x8b, 0x40, 0xa6, + 0x00, 0xad, 0x0d, 0xad, 0x64, 0xcd, 0x1c, 0xdb, 0x34, 0xe4, 0x5a, 0xd6, 0x1c, 0x64, 0x45, 0x3b, + 0xa7, 0xca, 0x17, 0x8e, 0x78, 0xd8, 0x67, 0x61, 0xb5, 0x1c, 0xd7, 0x6f, 0x49, 0xd3, 0x22, 0x30, + 0xe4, 0x78, 0x2d, 0x07, 0xda, 0x9c, 0x9e, 0xeb, 0x40, 0x3b, 0x4d, 0x3f, 0xc7, 0xf8, 0x07, 0x9a, + 0x72, 0x0e, 0x5d, 0xcb, 0x30, 0xd3, 0x52, 0xce, 0x1a, 0x2c, 0x62, 0xcd, 0x35, 0x51, 0x90, 0x63, + 0xd9, 0x4a, 0x2c, 0x0b, 0xe5, 0x68, 0x59, 0x08, 0xbd, 0xf8, 0x4a, 0xf1, 0x17, 0x2f, 0xbc, 0xec, + 0x57, 0x52, 0xe8, 0xd6, 0x91, 0xb2, 0xc5, 0xfd, 0xf7, 0xc1, 0x3d, 0x40, 0x01, 0x1f, 0x0a, 0x75, + 0x33, 0x7c, 0xfd, 0x04, 0x08, 0xdc, 0x85, 0x34, 0xff, 0x50, 0x0f, 0x72, 0xe2, 0xdb, 0x0a, 0xe9, + 0xb2, 0x03, 0xaa, 0x8e, 0xac, 0x73, 0x94, 0x0a, 0x3a, 0xe3, 0xb1, 0x3c, 0x86, 0x2a, 0x8b, 0x3f, + 0x41, 0xda, 0xd8, 0xdf, 0x4d, 0x29, 0xae, 0x82, 0x26, 0x35, 0xe8, 0x91, 0x83, 0xc3, 0xf2, 0x0f, + 0x61, 0x81, 0x38, 0x81, 0xf5, 0x2d, 0x3b, 0x85, 0xa4, 0xd0, 0x4e, 0x81, 0x1e, 0x14, 0xbb, 0x9f, + 0x85, 0x79, 0xba, 0x1f, 0xe5, 0x1f, 0x12, 0x2c, 0xd0, 0x5e, 0x46, 0xb8, 0x32, 0x52, 0xf4, 0xca, + 0xac, 0xc1, 0xa2, 0x50, 0xcc, 0xd9, 0x2a, 0xd2, 0x1d, 0x97, 0x3f, 0xae, 0x3b, 0xae, 0xcc, 0xdb, + 0x1d, 0x87, 0xfb, 0xf6, 0x05, 0xb1, 0x6f, 0x57, 0x46, 0x50, 0x0d, 0x46, 0xa8, 0xe8, 0x44, 0x23, + 0xc5, 0x26, 0x9a, 0x58, 0x11, 0x2e, 0x25, 0x14, 0xe1, 0x8c, 0xc1, 0x4a, 0xbc, 0x98, 0xcf, 0x48, + 0x76, 0x11, 0x02, 0x56, 0xb8, 0xb5, 0xce, 0x49, 0x34, 0x9d, 0x5f, 0x82, 0xcc, 0x46, 0x67, 0xff, + 0x1a, 0x92, 0xe6, 0xdd, 0x71, 0x73, 0xe6, 0xf7, 0x26, 0x79, 0xef, 0x3e, 0x23, 0xbf, 0xc3, 0x74, + 0x19, 0x1b, 0xcc, 0x6f, 0x81, 0x12, 0x97, 0xce, 0x5f, 0x0e, 0x22, 0x85, 0xf4, 0x29, 0xc2, 0xe1, + 0xdd, 0x83, 0xd1, 0xc8, 0xb9, 0x18, 0x59, 0x1e, 0xce, 0x07, 0x81, 0x6c, 0xbf, 0xfd, 0xa3, 0x46, + 0xd5, 0xfa, 0xc1, 0x32, 0x06, 0x62, 0x0b, 0xbe, 0xc8, 0x50, 0xc3, 0xd1, 0x0c, 0x48, 0x6d, 0xe9, + 0x93, 0xc2, 0xf9, 0x49, 0x9c, 0x41, 0xab, 0x48, 0x5c, 0x01, 0x47, 0x60, 0x93, 0xf4, 0x12, 0xaa, + 0x7f, 0x8f, 0x51, 0xde, 0xa7, 0x14, 0xf6, 0x41, 0xa1, 0x54, 0xe8, 0x83, 0x42, 0x14, 0xd0, 0x3a, + 0xdc, 0x8c, 0xe9, 0xe3, 0x60, 0xcc, 0xe0, 0x9b, 0x0a, 0xf1, 0x14, 0x32, 0xe8, 0xf5, 0x3b, 0x3a, + 0xd3, 0x2c, 0x3b, 0x07, 0xd3, 0x06, 0x80, 0xee, 0xb3, 0x0d, 0x6c, 0x6d, 0x8c, 0x82, 0x1b, 0x47, + 0x28, 0x4f, 0xb4, 0x71, 0x1c, 0x05, 0xad, 0x5d, 0x89, 0x8a, 0x38, 0x98, 0x17, 0xe4, 0xa6, 0x50, + 0xd7, 0x7d, 0x6a, 0x3c, 0xf4, 0xba, 0xa4, 0xe9, 0xe2, 0x90, 0x9e, 0x93, 0xd9, 0xed, 0x70, 0xea, + 0xda, 0x7d, 0x3f, 0x33, 0xfa, 0x93, 0xf5, 0xa9, 0xcb, 0x5f, 0x20, 0xf9, 0x9d, 0x9a, 0xe5, 0xd2, + 0x7a, 0xdd, 0xba, 0x0f, 0x85, 0x1c, 0x65, 0x43, 0x1c, 0x17, 0x1f, 0xa8, 0xdd, 0x7f, 0xbb, 0x0a, + 0xe5, 0x9e, 0x67, 0xca, 0xcf, 0xa1, 0x11, 0xfe, 0xa4, 0xd5, 0x49, 0xc9, 0xf2, 0x21, 0x1e, 0x65, + 0x27, 0x9f, 0x87, 0xa7, 0x15, 0x1d, 0xae, 0x8a, 0x9f, 0x8d, 0xbe, 0xcc, 0x3c, 0xcc, 0xb8, 0x94, + 0xdd, 0x22, 0x5c, 0x5c, 0x09, 0xb7, 0x81, 0x56, 0x8c, 0x6c, 0x1b, 0x08, 0x4f, 0x8e, 0x0d, 0xe2, + 0x57, 0x87, 0x11, 0xac, 0xc4, 0x3e, 0x28, 0xa4, 0x0d, 0xac, 0x51, 0x46, 0xa5, 0x5b, 0x90, 0x91, + 0x6b, 0xfb, 0x39, 0xd4, 0x67, 0x83, 0x7c, 0x3b, 0x75, 0x2e, 0x66, 0x1c, 0xca, 0x76, 0x1e, 0x07, + 0x17, 0xfc, 0x23, 0xa8, 0x90, 0x91, 0x7d, 0x3d, 0x63, 0xd6, 0x56, 0xbe, 0xc8, 0xd8, 0xe4, 0x92, + 0x9e, 0xc0, 0x22, 0x1b, 0x38, 0x37, 0x52, 0xd8, 0xe9, 0xb6, 0xb2, 0x95, 0xb9, 0x1d, 0x96, 0xc7, + 0x26, 0xc1, 0x34, 0x79, 0x74, 0x3b, 0x55, 0x9e, 0x38, 0xc9, 0xf9, 0x01, 0x8b, 0x8d, 0x71, 0x69, + 0x01, 0x8b, 0x32, 0xa6, 0x06, 0x2c, 0x6d, 0x4e, 0x93, 0x5d, 0x90, 0x13, 0x66, 0xb4, 0xaf, 0xf3, + 0xc5, 0x30, 0x56, 0x65, 0xaf, 0x30, 0x2b, 0xd7, 0x39, 0x85, 0xd5, 0xa4, 0xc1, 0x6a, 0x27, 0x5f, + 0x52, 0xc0, 0xab, 0xec, 0x17, 0xe7, 0x8d, 0x9b, 0x2a, 0xcc, 0x4c, 0xd9, 0xa6, 0x86, 0x59, 0x73, + 0x4c, 0x4d, 0x1a, 0x89, 0xe4, 0x5f, 0xc3, 0x67, 0xc9, 0xf3, 0xd0, 0x6e, 0x11, 0x59, 0xdc, 0xdc, + 0xef, 0xce, 0xc3, 0x1d, 0xf7, 0xb3, 0x38, 0x4a, 0x64, 0xfb, 0x59, 0xe0, 0xcd, 0xf1, 0x73, 0xe2, + 0x7c, 0xe0, 0x3f, 0x08, 0x36, 0x5e, 0x6d, 0x64, 0x76, 0xdd, 0xa9, 0x0f, 0x42, 0x1c, 0x2d, 0xfc, + 0x2c, 0x2c, 0x8e, 0x15, 0x5f, 0x16, 0x69, 0xe6, 0x95, 0x42, 0x83, 0x43, 0x58, 0x89, 0xf8, 0xcf, + 0x9b, 0x34, 0x25, 0x02, 0x57, 0xaa, 0x92, 0xc4, 0xff, 0xc2, 0xc8, 0xbf, 0x97, 0xa0, 0x99, 0xda, + 0xe8, 0x75, 0x53, 0x93, 0x57, 0xf2, 0x01, 0xe5, 0xde, 0x9c, 0x07, 0x38, 0x0c, 0x0b, 0xae, 0x45, + 0x5b, 0xdd, 0xef, 0x64, 0xd8, 0x11, 0xe2, 0x53, 0xd4, 0x62, 0x7c, 0xe1, 0x37, 0x97, 0xd0, 0x4b, + 0x7e, 0x9d, 0x9a, 0x59, 0xa3, 0xac, 0xa9, 0x6f, 0x2e, 0xbd, 0x81, 0x94, 0x4f, 0x61, 0x39, 0xd2, + 0x3d, 0x6e, 0xe5, 0x67, 0x8b, 0xc7, 0x08, 0x29, 0x77, 0x0a, 0xb1, 0x85, 0xdf, 0x76, 0x72, 0x63, + 0x98, 0x71, 0x29, 0xe2, 0xdc, 0xa9, 0x6f, 0x3b, 0xb3, 0x17, 0x24, 0x57, 0x29, 0xb5, 0x13, 0xec, + 0x66, 0x3a, 0x2d, 0x01, 0xc3, 0xbd, 0x39, 0x0f, 0x84, 0xeb, 0xfd, 0xac, 0xf9, 0x4b, 0xab, 0xf7, + 0x9c, 0x23, 0xb5, 0xde, 0xc7, 0x3a, 0xbc, 0xc3, 0x5f, 0xfc, 0xed, 0x5d, 0x4b, 0x7a, 0xf3, 0xae, + 0x25, 0xfd, 0xeb, 0x5d, 0x4b, 0x7a, 0xfd, 0xbe, 0x75, 0xe5, 0xcd, 0xfb, 0xd6, 0x95, 0x7f, 0xbe, + 0x6f, 0x5d, 0x79, 0xf6, 0xd0, 0xb4, 0xf0, 0xd9, 0x74, 0xa8, 0xea, 0xce, 0xb8, 0x4b, 0xa4, 0xdd, + 0xb1, 0x11, 0xbe, 0x70, 0xdc, 0x5f, 0xb1, 0xd5, 0x08, 0x19, 0x26, 0x72, 0xbb, 0x97, 0xa1, 0x7f, + 0xd6, 0x92, 0xff, 0x22, 0x93, 0x7f, 0xd7, 0x76, 0xcf, 0xf7, 0x86, 0x8b, 0x64, 0x04, 0xbe, 0xfb, + 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xec, 0x1f, 0x6a, 0x9e, 0x95, 0x1e, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -3134,6 +3246,10 @@ type MsgClient interface { // // Since Revision 2 RemoveAllowedBridgeChain(ctx context.Context, in *MsgRemoveAllowedBridgeChain, opts ...grpc.CallOption) (*MsgRemoveAllowedBridgeChainResponse, error) + // BurnRegen burns REGEN tokens to account for platform fees when creating or transferring credits. + // + // Since Revision 3 + BurnRegen(ctx context.Context, in *MsgBurnRegen, opts ...grpc.CallOption) (*MsgBurnRegenResponse, error) } type msgClient struct { @@ -3351,6 +3467,15 @@ func (c *msgClient) RemoveAllowedBridgeChain(ctx context.Context, in *MsgRemoveA return out, nil } +func (c *msgClient) BurnRegen(ctx context.Context, in *MsgBurnRegen, opts ...grpc.CallOption) (*MsgBurnRegenResponse, error) { + out := new(MsgBurnRegenResponse) + err := c.cc.Invoke(ctx, "/regen.ecocredit.v1.Msg/BurnRegen", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // MsgServer is the server API for Msg service. type MsgServer interface { // CreateClass creates a new credit class under the given credit type with an @@ -3477,6 +3602,10 @@ type MsgServer interface { // // Since Revision 2 RemoveAllowedBridgeChain(context.Context, *MsgRemoveAllowedBridgeChain) (*MsgRemoveAllowedBridgeChainResponse, error) + // BurnRegen burns REGEN tokens to account for platform fees when creating or transferring credits. + // + // Since Revision 3 + BurnRegen(context.Context, *MsgBurnRegen) (*MsgBurnRegenResponse, error) } // UnimplementedMsgServer can be embedded to have forward compatible implementations. @@ -3552,6 +3681,9 @@ func (*UnimplementedMsgServer) AddAllowedBridgeChain(ctx context.Context, req *M func (*UnimplementedMsgServer) RemoveAllowedBridgeChain(ctx context.Context, req *MsgRemoveAllowedBridgeChain) (*MsgRemoveAllowedBridgeChainResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method RemoveAllowedBridgeChain not implemented") } +func (*UnimplementedMsgServer) BurnRegen(ctx context.Context, req *MsgBurnRegen) (*MsgBurnRegenResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method BurnRegen not implemented") +} func RegisterMsgServer(s grpc1.Server, srv MsgServer) { s.RegisterService(&_Msg_serviceDesc, srv) @@ -3971,6 +4103,24 @@ func _Msg_RemoveAllowedBridgeChain_Handler(srv interface{}, ctx context.Context, return interceptor(ctx, in, info, handler) } +func _Msg_BurnRegen_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgBurnRegen) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).BurnRegen(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/regen.ecocredit.v1.Msg/BurnRegen", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).BurnRegen(ctx, req.(*MsgBurnRegen)) + } + return interceptor(ctx, in, info, handler) +} + var _Msg_serviceDesc = grpc.ServiceDesc{ ServiceName: "regen.ecocredit.v1.Msg", HandlerType: (*MsgServer)(nil), @@ -4067,6 +4217,10 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ MethodName: "RemoveAllowedBridgeChain", Handler: _Msg_RemoveAllowedBridgeChain_Handler, }, + { + MethodName: "BurnRegen", + Handler: _Msg_BurnRegen_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "regen/ecocredit/v1/tx.proto", @@ -5963,6 +6117,73 @@ func (m *MsgRemoveAllowedBridgeChainResponse) MarshalToSizedBuffer(dAtA []byte) return len(dAtA) - i, nil } +func (m *MsgBurnRegen) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgBurnRegen) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgBurnRegen) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Reason) > 0 { + i -= len(m.Reason) + copy(dAtA[i:], m.Reason) + i = encodeVarintTx(dAtA, i, uint64(len(m.Reason))) + i-- + dAtA[i] = 0x1a + } + if len(m.Amount) > 0 { + i -= len(m.Amount) + copy(dAtA[i:], m.Amount) + i = encodeVarintTx(dAtA, i, uint64(len(m.Amount))) + i-- + dAtA[i] = 0x12 + } + if len(m.From) > 0 { + i -= len(m.From) + copy(dAtA[i:], m.From) + i = encodeVarintTx(dAtA, i, uint64(len(m.From))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgBurnRegenResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgBurnRegenResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgBurnRegenResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + func encodeVarintTx(dAtA []byte, offset int, v uint64) int { offset -= sovTx(v) base := offset @@ -6807,6 +7028,36 @@ func (m *MsgRemoveAllowedBridgeChainResponse) Size() (n int) { return n } +func (m *MsgBurnRegen) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.From) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Amount) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Reason) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgBurnRegenResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + func sovTx(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -12307,6 +12558,202 @@ func (m *MsgRemoveAllowedBridgeChainResponse) Unmarshal(dAtA []byte) error { } return nil } +func (m *MsgBurnRegen) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgBurnRegen: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgBurnRegen: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field From", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.From = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Amount = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Reason = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgBurnRegenResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgBurnRegenResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgBurnRegenResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipTx(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 From 3ab072d5ead49bfd1166ea617c4b6c47fc36a004 Mon Sep 17 00:00:00 2001 From: Aaron Craelius Date: Tue, 12 Dec 2023 16:45:39 -0500 Subject: [PATCH 2/5] add test --- api/regen/ecocredit/v1/events.pulsar.go | 95 ++--- api/regen/ecocredit/v1/tx.pulsar.go | 390 +++++++++--------- proto/regen/ecocredit/v1/events.proto | 4 +- proto/regen/ecocredit/v1/tx.proto | 6 +- .../keeper/features/msg_burn_regen.feature | 23 ++ x/ecocredit/base/keeper/msg_burn_regen.go | 4 +- .../base/keeper/msg_burn_regen_test.go | 67 +++ x/ecocredit/base/types/v1/events.pb.go | 108 ++--- .../types/v1/features/msg_burn_regen.feature | 69 ++++ .../v1/{msg_burn.go => msg_burn_regen.go} | 24 +- .../base/types/v1/msg_burn_regen_test.go | 37 ++ x/ecocredit/base/types/v1/tx.pb.go | 275 ++++++------ 12 files changed, 648 insertions(+), 454 deletions(-) create mode 100644 x/ecocredit/base/keeper/features/msg_burn_regen.feature create mode 100644 x/ecocredit/base/keeper/msg_burn_regen_test.go create mode 100644 x/ecocredit/base/types/v1/features/msg_burn_regen.feature rename x/ecocredit/base/types/v1/{msg_burn.go => msg_burn_regen.go} (53%) create mode 100644 x/ecocredit/base/types/v1/msg_burn_regen_test.go diff --git a/api/regen/ecocredit/v1/events.pulsar.go b/api/regen/ecocredit/v1/events.pulsar.go index f3c9ac252d..9582938c32 100644 --- a/api/regen/ecocredit/v1/events.pulsar.go +++ b/api/regen/ecocredit/v1/events.pulsar.go @@ -9091,7 +9091,7 @@ func (x *fastReflection_EventBridgeReceive) ProtoMethods() *protoiface.Methods { var ( md_EventBurnRegen protoreflect.MessageDescriptor - fd_EventBurnRegen_from protoreflect.FieldDescriptor + fd_EventBurnRegen_burner protoreflect.FieldDescriptor fd_EventBurnRegen_amount protoreflect.FieldDescriptor fd_EventBurnRegen_reason protoreflect.FieldDescriptor ) @@ -9099,7 +9099,7 @@ var ( func init() { file_regen_ecocredit_v1_events_proto_init() md_EventBurnRegen = File_regen_ecocredit_v1_events_proto.Messages().ByName("EventBurnRegen") - fd_EventBurnRegen_from = md_EventBurnRegen.Fields().ByName("from") + fd_EventBurnRegen_burner = md_EventBurnRegen.Fields().ByName("burner") fd_EventBurnRegen_amount = md_EventBurnRegen.Fields().ByName("amount") fd_EventBurnRegen_reason = md_EventBurnRegen.Fields().ByName("reason") } @@ -9169,9 +9169,9 @@ func (x *fastReflection_EventBurnRegen) Interface() protoreflect.ProtoMessage { // While iterating, mutating operations may only be performed // on the current field descriptor. func (x *fastReflection_EventBurnRegen) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { - if x.From != "" { - value := protoreflect.ValueOfString(x.From) - if !f(fd_EventBurnRegen_from, value) { + if x.Burner != "" { + value := protoreflect.ValueOfString(x.Burner) + if !f(fd_EventBurnRegen_burner, value) { return } } @@ -9202,8 +9202,8 @@ func (x *fastReflection_EventBurnRegen) Range(f func(protoreflect.FieldDescripto // a repeated field is populated if it is non-empty. func (x *fastReflection_EventBurnRegen) Has(fd protoreflect.FieldDescriptor) bool { switch fd.FullName() { - case "regen.ecocredit.v1.EventBurnRegen.from": - return x.From != "" + case "regen.ecocredit.v1.EventBurnRegen.burner": + return x.Burner != "" case "regen.ecocredit.v1.EventBurnRegen.amount": return x.Amount != "" case "regen.ecocredit.v1.EventBurnRegen.reason": @@ -9224,8 +9224,8 @@ func (x *fastReflection_EventBurnRegen) Has(fd protoreflect.FieldDescriptor) boo // Clear is a mutating operation and unsafe for concurrent use. func (x *fastReflection_EventBurnRegen) Clear(fd protoreflect.FieldDescriptor) { switch fd.FullName() { - case "regen.ecocredit.v1.EventBurnRegen.from": - x.From = "" + case "regen.ecocredit.v1.EventBurnRegen.burner": + x.Burner = "" case "regen.ecocredit.v1.EventBurnRegen.amount": x.Amount = "" case "regen.ecocredit.v1.EventBurnRegen.reason": @@ -9246,8 +9246,8 @@ func (x *fastReflection_EventBurnRegen) Clear(fd protoreflect.FieldDescriptor) { // of the value; to obtain a mutable reference, use Mutable. func (x *fastReflection_EventBurnRegen) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { switch descriptor.FullName() { - case "regen.ecocredit.v1.EventBurnRegen.from": - value := x.From + case "regen.ecocredit.v1.EventBurnRegen.burner": + value := x.Burner return protoreflect.ValueOfString(value) case "regen.ecocredit.v1.EventBurnRegen.amount": value := x.Amount @@ -9275,8 +9275,8 @@ func (x *fastReflection_EventBurnRegen) Get(descriptor protoreflect.FieldDescrip // Set is a mutating operation and unsafe for concurrent use. func (x *fastReflection_EventBurnRegen) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { switch fd.FullName() { - case "regen.ecocredit.v1.EventBurnRegen.from": - x.From = value.Interface().(string) + case "regen.ecocredit.v1.EventBurnRegen.burner": + x.Burner = value.Interface().(string) case "regen.ecocredit.v1.EventBurnRegen.amount": x.Amount = value.Interface().(string) case "regen.ecocredit.v1.EventBurnRegen.reason": @@ -9301,8 +9301,8 @@ func (x *fastReflection_EventBurnRegen) Set(fd protoreflect.FieldDescriptor, val // Mutable is a mutating operation and unsafe for concurrent use. func (x *fastReflection_EventBurnRegen) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { - case "regen.ecocredit.v1.EventBurnRegen.from": - panic(fmt.Errorf("field from of message regen.ecocredit.v1.EventBurnRegen is not mutable")) + case "regen.ecocredit.v1.EventBurnRegen.burner": + panic(fmt.Errorf("field burner of message regen.ecocredit.v1.EventBurnRegen is not mutable")) case "regen.ecocredit.v1.EventBurnRegen.amount": panic(fmt.Errorf("field amount of message regen.ecocredit.v1.EventBurnRegen is not mutable")) case "regen.ecocredit.v1.EventBurnRegen.reason": @@ -9320,7 +9320,7 @@ func (x *fastReflection_EventBurnRegen) Mutable(fd protoreflect.FieldDescriptor) // For lists, maps, and messages, this returns a new, empty, mutable value. func (x *fastReflection_EventBurnRegen) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { - case "regen.ecocredit.v1.EventBurnRegen.from": + case "regen.ecocredit.v1.EventBurnRegen.burner": return protoreflect.ValueOfString("") case "regen.ecocredit.v1.EventBurnRegen.amount": return protoreflect.ValueOfString("") @@ -9395,7 +9395,7 @@ func (x *fastReflection_EventBurnRegen) ProtoMethods() *protoiface.Methods { var n int var l int _ = l - l = len(x.From) + l = len(x.Burner) if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } @@ -9450,10 +9450,10 @@ func (x *fastReflection_EventBurnRegen) ProtoMethods() *protoiface.Methods { i-- dAtA[i] = 0x12 } - if len(x.From) > 0 { - i -= len(x.From) - copy(dAtA[i:], x.From) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.From))) + if len(x.Burner) > 0 { + i -= len(x.Burner) + copy(dAtA[i:], x.Burner) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Burner))) i-- dAtA[i] = 0xa } @@ -9508,7 +9508,7 @@ func (x *fastReflection_EventBurnRegen) ProtoMethods() *protoiface.Methods { switch fieldNum { case 1: if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field From", wireType) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Burner", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -9536,7 +9536,7 @@ func (x *fastReflection_EventBurnRegen) ProtoMethods() *protoiface.Methods { if postIndex > l { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF } - x.From = string(dAtA[iNdEx:postIndex]) + x.Burner = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { @@ -10576,8 +10576,8 @@ type EventBurnRegen struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // from is the address that burned REGEN. - From string `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty"` + // burner is the address that burned REGEN. + Burner string `protobuf:"bytes,1,opt,name=burner,proto3" json:"burner,omitempty"` // amount is the integer amount of uregen burned. Amount string `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount,omitempty"` // reason is the reason for the burn. @@ -10604,9 +10604,9 @@ func (*EventBurnRegen) Descriptor() ([]byte, []int) { return file_regen_ecocredit_v1_events_proto_rawDescGZIP(), []int{18} } -func (x *EventBurnRegen) GetFrom() string { +func (x *EventBurnRegen) GetBurner() string { if x != nil { - return x.From + return x.Burner } return "" } @@ -10740,26 +10740,27 @@ var file_regen_ecocredit_v1_events_proto_rawDesc = []byte{ 0x69, 0x6e, 0x5f, 0x74, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x54, 0x78, 0x52, 0x08, 0x6f, 0x72, 0x69, 0x67, 0x69, - 0x6e, 0x54, 0x78, 0x22, 0x54, 0x0a, 0x0e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x75, 0x72, 0x6e, - 0x52, 0x65, 0x67, 0x65, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x42, 0xd9, 0x01, 0x0a, 0x16, 0x63, 0x6f, - 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, - 0x74, 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x50, 0x01, 0x5a, 0x48, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x72, 0x65, - 0x67, 0x65, 0x6e, 0x2d, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, - 0x65, 0x67, 0x65, 0x6e, 0x2f, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2f, 0x76, - 0x31, 0x3b, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x76, 0x31, 0xa2, 0x02, 0x03, - 0x52, 0x45, 0x58, 0xaa, 0x02, 0x12, 0x52, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x45, 0x63, 0x6f, 0x63, - 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x12, 0x52, 0x65, 0x67, 0x65, 0x6e, - 0x5c, 0x45, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1e, - 0x52, 0x65, 0x67, 0x65, 0x6e, 0x5c, 0x45, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x5c, - 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, - 0x14, 0x52, 0x65, 0x67, 0x65, 0x6e, 0x3a, 0x3a, 0x45, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, - 0x74, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6e, 0x54, 0x78, 0x22, 0x58, 0x0a, 0x0e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x75, 0x72, 0x6e, + 0x52, 0x65, 0x67, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x72, 0x6e, 0x65, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x72, 0x6e, 0x65, 0x72, 0x12, 0x16, 0x0a, + 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, + 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x42, 0xd9, 0x01, + 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, + 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, + 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x48, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x2f, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2d, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2f, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, + 0x69, 0x74, 0x2f, 0x76, 0x31, 0x3b, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x76, + 0x31, 0xa2, 0x02, 0x03, 0x52, 0x45, 0x58, 0xaa, 0x02, 0x12, 0x52, 0x65, 0x67, 0x65, 0x6e, 0x2e, + 0x45, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x12, 0x52, + 0x65, 0x67, 0x65, 0x6e, 0x5c, 0x45, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x5c, 0x56, + 0x31, 0xe2, 0x02, 0x1e, 0x52, 0x65, 0x67, 0x65, 0x6e, 0x5c, 0x45, 0x63, 0x6f, 0x63, 0x72, 0x65, + 0x64, 0x69, 0x74, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0xea, 0x02, 0x14, 0x52, 0x65, 0x67, 0x65, 0x6e, 0x3a, 0x3a, 0x45, 0x63, 0x6f, 0x63, + 0x72, 0x65, 0x64, 0x69, 0x74, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } var ( diff --git a/api/regen/ecocredit/v1/tx.pulsar.go b/api/regen/ecocredit/v1/tx.pulsar.go index 4b23b60020..a6bc8bcbf2 100644 --- a/api/regen/ecocredit/v1/tx.pulsar.go +++ b/api/regen/ecocredit/v1/tx.pulsar.go @@ -24263,7 +24263,7 @@ func (x *fastReflection_MsgRemoveAllowedBridgeChainResponse) ProtoMethods() *pro var ( md_MsgBurnRegen protoreflect.MessageDescriptor - fd_MsgBurnRegen_from protoreflect.FieldDescriptor + fd_MsgBurnRegen_burner protoreflect.FieldDescriptor fd_MsgBurnRegen_amount protoreflect.FieldDescriptor fd_MsgBurnRegen_reason protoreflect.FieldDescriptor ) @@ -24271,7 +24271,7 @@ var ( func init() { file_regen_ecocredit_v1_tx_proto_init() md_MsgBurnRegen = File_regen_ecocredit_v1_tx_proto.Messages().ByName("MsgBurnRegen") - fd_MsgBurnRegen_from = md_MsgBurnRegen.Fields().ByName("from") + fd_MsgBurnRegen_burner = md_MsgBurnRegen.Fields().ByName("burner") fd_MsgBurnRegen_amount = md_MsgBurnRegen.Fields().ByName("amount") fd_MsgBurnRegen_reason = md_MsgBurnRegen.Fields().ByName("reason") } @@ -24341,9 +24341,9 @@ func (x *fastReflection_MsgBurnRegen) Interface() protoreflect.ProtoMessage { // While iterating, mutating operations may only be performed // on the current field descriptor. func (x *fastReflection_MsgBurnRegen) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { - if x.From != "" { - value := protoreflect.ValueOfString(x.From) - if !f(fd_MsgBurnRegen_from, value) { + if x.Burner != "" { + value := protoreflect.ValueOfString(x.Burner) + if !f(fd_MsgBurnRegen_burner, value) { return } } @@ -24374,8 +24374,8 @@ func (x *fastReflection_MsgBurnRegen) Range(f func(protoreflect.FieldDescriptor, // a repeated field is populated if it is non-empty. func (x *fastReflection_MsgBurnRegen) Has(fd protoreflect.FieldDescriptor) bool { switch fd.FullName() { - case "regen.ecocredit.v1.MsgBurnRegen.from": - return x.From != "" + case "regen.ecocredit.v1.MsgBurnRegen.burner": + return x.Burner != "" case "regen.ecocredit.v1.MsgBurnRegen.amount": return x.Amount != "" case "regen.ecocredit.v1.MsgBurnRegen.reason": @@ -24396,8 +24396,8 @@ func (x *fastReflection_MsgBurnRegen) Has(fd protoreflect.FieldDescriptor) bool // Clear is a mutating operation and unsafe for concurrent use. func (x *fastReflection_MsgBurnRegen) Clear(fd protoreflect.FieldDescriptor) { switch fd.FullName() { - case "regen.ecocredit.v1.MsgBurnRegen.from": - x.From = "" + case "regen.ecocredit.v1.MsgBurnRegen.burner": + x.Burner = "" case "regen.ecocredit.v1.MsgBurnRegen.amount": x.Amount = "" case "regen.ecocredit.v1.MsgBurnRegen.reason": @@ -24418,8 +24418,8 @@ func (x *fastReflection_MsgBurnRegen) Clear(fd protoreflect.FieldDescriptor) { // of the value; to obtain a mutable reference, use Mutable. func (x *fastReflection_MsgBurnRegen) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { switch descriptor.FullName() { - case "regen.ecocredit.v1.MsgBurnRegen.from": - value := x.From + case "regen.ecocredit.v1.MsgBurnRegen.burner": + value := x.Burner return protoreflect.ValueOfString(value) case "regen.ecocredit.v1.MsgBurnRegen.amount": value := x.Amount @@ -24447,8 +24447,8 @@ func (x *fastReflection_MsgBurnRegen) Get(descriptor protoreflect.FieldDescripto // Set is a mutating operation and unsafe for concurrent use. func (x *fastReflection_MsgBurnRegen) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { switch fd.FullName() { - case "regen.ecocredit.v1.MsgBurnRegen.from": - x.From = value.Interface().(string) + case "regen.ecocredit.v1.MsgBurnRegen.burner": + x.Burner = value.Interface().(string) case "regen.ecocredit.v1.MsgBurnRegen.amount": x.Amount = value.Interface().(string) case "regen.ecocredit.v1.MsgBurnRegen.reason": @@ -24473,8 +24473,8 @@ func (x *fastReflection_MsgBurnRegen) Set(fd protoreflect.FieldDescriptor, value // Mutable is a mutating operation and unsafe for concurrent use. func (x *fastReflection_MsgBurnRegen) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { - case "regen.ecocredit.v1.MsgBurnRegen.from": - panic(fmt.Errorf("field from of message regen.ecocredit.v1.MsgBurnRegen is not mutable")) + case "regen.ecocredit.v1.MsgBurnRegen.burner": + panic(fmt.Errorf("field burner of message regen.ecocredit.v1.MsgBurnRegen is not mutable")) case "regen.ecocredit.v1.MsgBurnRegen.amount": panic(fmt.Errorf("field amount of message regen.ecocredit.v1.MsgBurnRegen is not mutable")) case "regen.ecocredit.v1.MsgBurnRegen.reason": @@ -24492,7 +24492,7 @@ func (x *fastReflection_MsgBurnRegen) Mutable(fd protoreflect.FieldDescriptor) p // For lists, maps, and messages, this returns a new, empty, mutable value. func (x *fastReflection_MsgBurnRegen) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { - case "regen.ecocredit.v1.MsgBurnRegen.from": + case "regen.ecocredit.v1.MsgBurnRegen.burner": return protoreflect.ValueOfString("") case "regen.ecocredit.v1.MsgBurnRegen.amount": return protoreflect.ValueOfString("") @@ -24567,7 +24567,7 @@ func (x *fastReflection_MsgBurnRegen) ProtoMethods() *protoiface.Methods { var n int var l int _ = l - l = len(x.From) + l = len(x.Burner) if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } @@ -24622,10 +24622,10 @@ func (x *fastReflection_MsgBurnRegen) ProtoMethods() *protoiface.Methods { i-- dAtA[i] = 0x12 } - if len(x.From) > 0 { - i -= len(x.From) - copy(dAtA[i:], x.From) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.From))) + if len(x.Burner) > 0 { + i -= len(x.Burner) + copy(dAtA[i:], x.Burner) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Burner))) i-- dAtA[i] = 0xa } @@ -24680,7 +24680,7 @@ func (x *fastReflection_MsgBurnRegen) ProtoMethods() *protoiface.Methods { switch fieldNum { case 1: if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field From", wireType) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Burner", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -24708,7 +24708,7 @@ func (x *fastReflection_MsgBurnRegen) ProtoMethods() *protoiface.Methods { if postIndex > l { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF } - x.From = string(dAtA[iNdEx:postIndex]) + x.Burner = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { @@ -27291,8 +27291,8 @@ type MsgBurnRegen struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // from is the address of the account burning REGEN tokens. - From string `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty"` + // burner is the address of the account burning REGEN tokens. + Burner string `protobuf:"bytes,1,opt,name=burner,proto3" json:"burner,omitempty"` // amount is the integer amount of uregen tokens to burn. Amount string `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount,omitempty"` // reason is any arbitrary string that specifies the reason for burning @@ -27320,9 +27320,9 @@ func (*MsgBurnRegen) Descriptor() ([]byte, []int) { return file_regen_ecocredit_v1_tx_proto_rawDescGZIP(), []int{46} } -func (x *MsgBurnRegen) GetFrom() string { +func (x *MsgBurnRegen) GetBurner() string { if x != nil { - return x.From + return x.Burner } return "" } @@ -27913,187 +27913,187 @@ var file_regen_ecocredit_v1_tx_proto_rawDesc = []byte{ 0x6d, 0x65, 0x3a, 0x0e, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0x25, 0x0a, 0x23, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x43, 0x68, 0x61, 0x69, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5d, 0x0a, 0x0c, 0x4d, 0x73, 0x67, - 0x42, 0x75, 0x72, 0x6e, 0x52, 0x65, 0x67, 0x65, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, - 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x16, 0x0a, - 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, - 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x3a, 0x09, 0x82, - 0xe7, 0xb0, 0x2a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x22, 0x16, 0x0a, 0x14, 0x4d, 0x73, 0x67, 0x42, - 0x75, 0x72, 0x6e, 0x52, 0x65, 0x67, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x32, 0xdf, 0x13, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x5d, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x22, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, - 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x1a, 0x2a, 0x2e, 0x72, 0x65, - 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, - 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x63, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x24, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, - 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, - 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x1a, 0x2c, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x63, 0x0a, 0x0c, 0x4d, 0x73, 0x67, + 0x42, 0x75, 0x72, 0x6e, 0x52, 0x65, 0x67, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x72, + 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x72, 0x6e, 0x65, + 0x72, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, + 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, + 0x6e, 0x3a, 0x0b, 0x82, 0xe7, 0xb0, 0x2a, 0x06, 0x62, 0x75, 0x72, 0x6e, 0x65, 0x72, 0x22, 0x16, + 0x0a, 0x14, 0x4d, 0x73, 0x67, 0x42, 0x75, 0x72, 0x6e, 0x52, 0x65, 0x67, 0x65, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xdf, 0x13, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x5d, + 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x22, 0x2e, + 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, + 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x73, + 0x73, 0x1a, 0x2a, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, + 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x43, 0x6c, 0x61, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x63, 0x0a, + 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x24, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5d, 0x0a, 0x0b, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x22, 0x2e, 0x72, 0x65, + 0x6a, 0x65, 0x63, 0x74, 0x1a, 0x2c, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, + 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x5d, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, + 0x68, 0x12, 0x22, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, + 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x42, 0x61, 0x74, 0x63, 0x68, 0x1a, 0x2a, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, + 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x6c, 0x0a, 0x10, 0x4d, 0x69, 0x6e, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, + 0x65, 0x64, 0x69, 0x74, 0x73, 0x12, 0x27, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, + 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x4d, 0x69, + 0x6e, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x1a, 0x2f, + 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, + 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x4d, 0x69, 0x6e, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, + 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x57, 0x0a, 0x09, 0x53, 0x65, 0x61, 0x6c, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x20, 0x2e, 0x72, + 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, + 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x53, 0x65, 0x61, 0x6c, 0x42, 0x61, 0x74, 0x63, 0x68, 0x1a, 0x28, + 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, + 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x53, 0x65, 0x61, 0x6c, 0x42, 0x61, 0x74, 0x63, 0x68, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x04, 0x53, 0x65, 0x6e, 0x64, + 0x12, 0x1b, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, + 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x53, 0x65, 0x6e, 0x64, 0x1a, 0x23, 0x2e, + 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, + 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x06, 0x52, 0x65, 0x74, 0x69, 0x72, 0x65, 0x12, 0x1d, 0x2e, 0x72, + 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, + 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x74, 0x69, 0x72, 0x65, 0x1a, 0x25, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, - 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x1a, - 0x2a, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, - 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, - 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6c, 0x0a, 0x10, 0x4d, - 0x69, 0x6e, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x12, - 0x27, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, - 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x4d, 0x69, 0x6e, 0x74, 0x42, 0x61, 0x74, 0x63, - 0x68, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x1a, 0x2f, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, - 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, - 0x67, 0x4d, 0x69, 0x6e, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x57, 0x0a, 0x09, 0x53, 0x65, 0x61, - 0x6c, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x20, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, - 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x53, - 0x65, 0x61, 0x6c, 0x42, 0x61, 0x74, 0x63, 0x68, 0x1a, 0x28, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, - 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, - 0x67, 0x53, 0x65, 0x61, 0x6c, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x48, 0x0a, 0x04, 0x53, 0x65, 0x6e, 0x64, 0x12, 0x1b, 0x2e, 0x72, 0x65, 0x67, - 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, - 0x4d, 0x73, 0x67, 0x53, 0x65, 0x6e, 0x64, 0x1a, 0x23, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, - 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, - 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x06, - 0x52, 0x65, 0x74, 0x69, 0x72, 0x65, 0x12, 0x1d, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, - 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, - 0x65, 0x74, 0x69, 0x72, 0x65, 0x1a, 0x25, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, - 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, - 0x74, 0x69, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x06, - 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x12, 0x1d, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, - 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, - 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x1a, 0x25, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, - 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x61, - 0x6e, 0x63, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6c, 0x0a, 0x10, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x41, 0x64, 0x6d, 0x69, 0x6e, - 0x12, 0x27, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, - 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, - 0x6c, 0x61, 0x73, 0x73, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x1a, 0x2f, 0x2e, 0x72, 0x65, 0x67, 0x65, - 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, - 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x41, 0x64, 0x6d, - 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x72, 0x0a, 0x12, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x73, - 0x12, 0x29, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, - 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, - 0x6c, 0x61, 0x73, 0x73, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x73, 0x1a, 0x31, 0x2e, 0x72, 0x65, + 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x74, 0x69, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x06, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x12, 0x1d, 0x2e, 0x72, + 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, + 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x1a, 0x25, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, - 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x49, - 0x73, 0x73, 0x75, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x75, - 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, - 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x1a, 0x32, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, + 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x6c, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x73, + 0x73, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x27, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, + 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x1a, + 0x2f, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, + 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, + 0x61, 0x73, 0x73, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x72, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x49, + 0x73, 0x73, 0x75, 0x65, 0x72, 0x73, 0x12, 0x29, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, + 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, + 0x73, 0x1a, 0x31, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x43, 0x6c, 0x61, 0x73, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x72, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x29, 0x2e, 0x72, 0x65, + 0x43, 0x6c, 0x61, 0x73, 0x73, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x75, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, + 0x61, 0x73, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, - 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x1a, 0x31, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, - 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, + 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x32, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, + 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x72, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x64, 0x6d, 0x69, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7b, 0x0a, 0x15, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x12, 0x2c, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, - 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x1a, 0x34, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, - 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x75, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x42, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x2e, + 0x6e, 0x12, 0x29, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, + 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x1a, 0x31, 0x2e, 0x72, + 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, + 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x7b, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2c, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, + 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, + 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x34, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, + 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x75, 0x0a, 0x13, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x12, 0x2a, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, + 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, + 0x32, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, + 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x61, + 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x06, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x12, 0x1d, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, - 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, - 0x68, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x32, 0x2e, 0x72, 0x65, 0x67, 0x65, - 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, - 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, - 0x06, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x12, 0x1d, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, - 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, - 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x1a, 0x25, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, - 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x42, - 0x72, 0x69, 0x64, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x63, 0x0a, - 0x0d, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x12, 0x24, - 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, - 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x52, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x1a, 0x2c, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, + 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x1a, 0x25, 0x2e, 0x72, + 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, + 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x63, 0x0a, 0x0d, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x52, 0x65, 0x63, + 0x65, 0x69, 0x76, 0x65, 0x12, 0x24, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x42, 0x72, 0x69, - 0x64, 0x67, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x63, 0x0a, 0x0d, 0x41, 0x64, 0x64, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x24, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, - 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x41, 0x64, 0x64, 0x43, - 0x72, 0x65, 0x64, 0x69, 0x74, 0x54, 0x79, 0x70, 0x65, 0x1a, 0x2c, 0x2e, 0x72, 0x65, 0x67, 0x65, - 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, - 0x73, 0x67, 0x41, 0x64, 0x64, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x84, 0x01, 0x0a, 0x18, 0x53, 0x65, 0x74, 0x43, - 0x6c, 0x61, 0x73, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x6c, 0x6c, 0x6f, 0x77, - 0x6c, 0x69, 0x73, 0x74, 0x12, 0x2f, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, - 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x53, 0x65, 0x74, - 0x43, 0x6c, 0x61, 0x73, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x6c, 0x6c, 0x6f, - 0x77, 0x6c, 0x69, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, - 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x53, 0x65, - 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x6c, 0x6c, - 0x6f, 0x77, 0x6c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x69, - 0x0a, 0x0f, 0x41, 0x64, 0x64, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, - 0x72, 0x12, 0x26, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, - 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x41, 0x64, 0x64, 0x43, 0x6c, 0x61, - 0x73, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x1a, 0x2e, 0x2e, 0x72, 0x65, 0x67, 0x65, + 0x64, 0x67, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x1a, 0x2c, 0x2e, 0x72, 0x65, 0x67, + 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, + 0x4d, 0x73, 0x67, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x63, 0x0a, 0x0d, 0x41, 0x64, 0x64, 0x43, + 0x72, 0x65, 0x64, 0x69, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, - 0x73, 0x67, 0x41, 0x64, 0x64, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, - 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x72, 0x0a, 0x12, 0x52, 0x65, 0x6d, - 0x6f, 0x76, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, - 0x29, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, - 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6c, - 0x61, 0x73, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x1a, 0x31, 0x2e, 0x72, 0x65, 0x67, + 0x73, 0x67, 0x41, 0x64, 0x64, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x54, 0x79, 0x70, 0x65, 0x1a, + 0x2c, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, + 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x41, 0x64, 0x64, 0x43, 0x72, 0x65, 0x64, 0x69, + 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x84, 0x01, + 0x0a, 0x18, 0x53, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, + 0x72, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x2f, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, - 0x4d, 0x73, 0x67, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x66, 0x0a, - 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x46, 0x65, 0x65, 0x12, - 0x25, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, - 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, - 0x61, 0x73, 0x73, 0x46, 0x65, 0x65, 0x1a, 0x2d, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, - 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x46, 0x65, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7b, 0x0a, 0x15, 0x41, 0x64, 0x64, 0x41, 0x6c, 0x6c, 0x6f, - 0x77, 0x65, 0x64, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x12, 0x2c, - 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, - 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x41, 0x64, 0x64, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, - 0x64, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x1a, 0x34, 0x2e, 0x72, + 0x4d, 0x73, 0x67, 0x53, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x6f, 0x72, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x6c, 0x69, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x72, 0x65, + 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, + 0x2e, 0x4d, 0x73, 0x67, 0x53, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x6f, 0x72, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x6c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x69, 0x0a, 0x0f, 0x41, 0x64, 0x64, 0x43, 0x6c, 0x61, 0x73, 0x73, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x26, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, + 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, + 0x41, 0x64, 0x64, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x1a, + 0x2e, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, + 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x41, 0x64, 0x64, 0x43, 0x6c, 0x61, 0x73, 0x73, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x72, 0x0a, 0x12, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x29, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, + 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, + 0x1a, 0x31, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, + 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, + 0x6c, 0x61, 0x73, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x66, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, + 0x73, 0x73, 0x46, 0x65, 0x65, 0x12, 0x25, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, + 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x46, 0x65, 0x65, 0x1a, 0x2d, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, - 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x41, 0x64, 0x64, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x42, - 0x72, 0x69, 0x64, 0x67, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x84, 0x01, 0x0a, 0x18, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x6c, 0x6c, - 0x6f, 0x77, 0x65, 0x64, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x12, - 0x2f, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, - 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x6c, + 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, + 0x46, 0x65, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7b, 0x0a, 0x15, 0x41, + 0x64, 0x64, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x43, + 0x68, 0x61, 0x69, 0x6e, 0x12, 0x2c, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, + 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x41, 0x64, 0x64, + 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x43, 0x68, 0x61, + 0x69, 0x6e, 0x1a, 0x34, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, + 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x41, 0x64, 0x64, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, - 0x1a, 0x37, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, - 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, - 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x43, 0x68, 0x61, 0x69, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x57, 0x0a, 0x09, 0x42, 0x75, 0x72, - 0x6e, 0x52, 0x65, 0x67, 0x65, 0x6e, 0x12, 0x20, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, - 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x42, - 0x75, 0x72, 0x6e, 0x52, 0x65, 0x67, 0x65, 0x6e, 0x1a, 0x28, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, - 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, - 0x67, 0x42, 0x75, 0x72, 0x6e, 0x52, 0x65, 0x67, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x42, 0xd5, 0x01, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, - 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x42, 0x07, 0x54, - 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x48, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x2f, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2d, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2f, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, - 0x64, 0x69, 0x74, 0x2f, 0x76, 0x31, 0x3b, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, - 0x76, 0x31, 0xa2, 0x02, 0x03, 0x52, 0x45, 0x58, 0xaa, 0x02, 0x12, 0x52, 0x65, 0x67, 0x65, 0x6e, - 0x2e, 0x45, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x12, - 0x52, 0x65, 0x67, 0x65, 0x6e, 0x5c, 0x45, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x5c, - 0x56, 0x31, 0xe2, 0x02, 0x1e, 0x52, 0x65, 0x67, 0x65, 0x6e, 0x5c, 0x45, 0x63, 0x6f, 0x63, 0x72, - 0x65, 0x64, 0x69, 0x74, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0xea, 0x02, 0x14, 0x52, 0x65, 0x67, 0x65, 0x6e, 0x3a, 0x3a, 0x45, 0x63, 0x6f, - 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x84, 0x01, 0x0a, 0x18, 0x52, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, + 0x43, 0x68, 0x61, 0x69, 0x6e, 0x12, 0x2f, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, + 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x42, 0x72, 0x69, 0x64, 0x67, + 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x1a, 0x37, 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, + 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x42, 0x72, 0x69, 0x64, + 0x67, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x57, 0x0a, 0x09, 0x42, 0x75, 0x72, 0x6e, 0x52, 0x65, 0x67, 0x65, 0x6e, 0x12, 0x20, 0x2e, 0x72, + 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2e, 0x76, + 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x42, 0x75, 0x72, 0x6e, 0x52, 0x65, 0x67, 0x65, 0x6e, 0x1a, 0x28, + 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, + 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x42, 0x75, 0x72, 0x6e, 0x52, 0x65, 0x67, 0x65, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0xd5, 0x01, 0x0a, 0x16, 0x63, 0x6f, 0x6d, + 0x2e, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, + 0x2e, 0x76, 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x48, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x67, 0x65, 0x6e, + 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2d, 0x6c, + 0x65, 0x64, 0x67, 0x65, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x67, 0x65, 0x6e, 0x2f, + 0x65, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x2f, 0x76, 0x31, 0x3b, 0x65, 0x63, 0x6f, + 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x52, 0x45, 0x58, 0xaa, 0x02, + 0x12, 0x52, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x45, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, + 0x2e, 0x56, 0x31, 0xca, 0x02, 0x12, 0x52, 0x65, 0x67, 0x65, 0x6e, 0x5c, 0x45, 0x63, 0x6f, 0x63, + 0x72, 0x65, 0x64, 0x69, 0x74, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1e, 0x52, 0x65, 0x67, 0x65, 0x6e, + 0x5c, 0x45, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, + 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x14, 0x52, 0x65, 0x67, 0x65, + 0x6e, 0x3a, 0x3a, 0x45, 0x63, 0x6f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x3a, 0x3a, 0x56, 0x31, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/proto/regen/ecocredit/v1/events.proto b/proto/regen/ecocredit/v1/events.proto index a54f729c58..d8ebfe83bd 100644 --- a/proto/regen/ecocredit/v1/events.proto +++ b/proto/regen/ecocredit/v1/events.proto @@ -250,8 +250,8 @@ message EventBridgeReceive { // EventBurnRegen is an event emitted when REGEN is burned to account for credit origination, transfer, etc. message EventBurnRegen { - // from is the address that burned REGEN. - string from = 1; + // burner is the address that burned REGEN. + string burner = 1; // amount is the integer amount of uregen burned. string amount = 2; diff --git a/proto/regen/ecocredit/v1/tx.proto b/proto/regen/ecocredit/v1/tx.proto index eb36eeb87a..ef5a5943ce 100644 --- a/proto/regen/ecocredit/v1/tx.proto +++ b/proto/regen/ecocredit/v1/tx.proto @@ -794,10 +794,10 @@ message MsgRemoveAllowedBridgeChainResponse {} // // Since Revision 3 message MsgBurnRegen { - option (cosmos.msg.v1.signer) = "from"; + option (cosmos.msg.v1.signer) = "burner"; - // from is the address of the account burning REGEN tokens. - string from = 1; + // burner is the address of the account burning REGEN tokens. + string burner = 1; // amount is the integer amount of uregen tokens to burn. string amount = 2; diff --git a/x/ecocredit/base/keeper/features/msg_burn_regen.feature b/x/ecocredit/base/keeper/features/msg_burn_regen.feature new file mode 100644 index 0000000000..e7ce33ff95 --- /dev/null +++ b/x/ecocredit/base/keeper/features/msg_burn_regen.feature @@ -0,0 +1,23 @@ +Feature: Msg/Regen + + Scenario: burning regen + Given the message + """ + { + "burner": "regen1depk54cuajgkzea6zpgkq36tnjwdzv4ak663u6", + "amount":"1000000000", + "reason":"for selling credits" + } + """ + Then expect "1000000000uregen" are sent from "regen1depk54cuajgkzea6zpgkq36tnjwdzv4ak663u6" to the ecocredit module + * expect "1000000000uregen" are burned by the ecocredit module + When it is executed + And expect the event is emitted + """ + { + "burner": "regen1depk54cuajgkzea6zpgkq36tnjwdzv4ak663u6", + "amount":"1000000000", + "reason":"for selling credits" + } + """ + And expect no error \ No newline at end of file diff --git a/x/ecocredit/base/keeper/msg_burn_regen.go b/x/ecocredit/base/keeper/msg_burn_regen.go index 05a8ff2b9d..0e33658e67 100644 --- a/x/ecocredit/base/keeper/msg_burn_regen.go +++ b/x/ecocredit/base/keeper/msg_burn_regen.go @@ -12,7 +12,7 @@ import ( ) func (k Keeper) BurnRegen(ctx context.Context, regen *types.MsgBurnRegen) (*types.MsgBurnRegenResponse, error) { - from, err := sdk.AccAddressFromBech32(regen.From) + from, err := sdk.AccAddressFromBech32(regen.Burner) if err != nil { return nil, err } @@ -40,7 +40,7 @@ func (k Keeper) BurnRegen(ctx context.Context, regen *types.MsgBurnRegen) (*type } err = sdkCtx.EventManager().EmitTypedEvent(&types.EventBurnRegen{ - From: regen.From, + Burner: regen.Burner, Amount: regen.Amount, Reason: regen.Reason, }) diff --git a/x/ecocredit/base/keeper/msg_burn_regen_test.go b/x/ecocredit/base/keeper/msg_burn_regen_test.go new file mode 100644 index 0000000000..def6f211af --- /dev/null +++ b/x/ecocredit/base/keeper/msg_burn_regen_test.go @@ -0,0 +1,67 @@ +package keeper + +import ( + "testing" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/gogo/protobuf/jsonpb" + "github.com/regen-network/gocuke" + "github.com/stretchr/testify/require" + + "github.com/regen-network/regen-ledger/types/v2/testutil" + "github.com/regen-network/regen-ledger/x/ecocredit/v3" + types "github.com/regen-network/regen-ledger/x/ecocredit/v3/base/types/v1" +) + +type burnRegenSuite struct { + *baseSuite + msg *types.MsgBurnRegen + err error +} + +func TestBurnRegen(t *testing.T) { + gocuke.NewRunner(t, &burnRegenSuite{}).Path("./features/msg_burn_regen.feature").Run() +} + +func (s *burnRegenSuite) Before(t gocuke.TestingT) { + s.baseSuite = setupBase(t) +} + +func (s *burnRegenSuite) TheMessage(a gocuke.DocString) { + s.msg = &types.MsgBurnRegen{} + err := jsonpb.UnmarshalString(a.Content, s.msg) + require.NoError(s.t, err) +} +func (s *burnRegenSuite) ItIsExecuted() { + _, s.err = s.k.BurnRegen(s.ctx, s.msg) +} + +func (s *burnRegenSuite) ExpectAreSentFromToTheEcocreditModule(coinsStr, addrStr string) { + coins, err := sdk.ParseCoinsNormalized(coinsStr) + require.NoError(s.t, err) + addr, err := sdk.AccAddressFromBech32(addrStr) + require.NoError(s.t, err) + s.bankKeeper.EXPECT().SendCoinsFromAccountToModule(s.ctx, addr, ecocredit.ModuleName, coins).Return(nil) +} + +func (s *burnRegenSuite) ExpectAreBurnedByTheEcocreditModule(coinsStr string) { + coins, err := sdk.ParseCoinsNormalized(coinsStr) + require.NoError(s.t, err) + s.bankKeeper.EXPECT().BurnCoins(s.ctx, ecocredit.ModuleName, coins).Return(nil) +} + +func (s *burnRegenSuite) ExpectTheEventIsEmitted(a gocuke.DocString) { + event := &types.EventBurnRegen{} + err := jsonpb.UnmarshalString(a.Content, event) + require.NoError(s.t, err) + + sdkEvent, found := testutil.GetEvent(event, s.sdkCtx.EventManager().Events()) + require.True(s.t, found) + + err = testutil.MatchEvent(event, sdkEvent) + require.NoError(s.t, err) +} + +func (s *burnRegenSuite) ExpectNoError() { + require.NoError(s.t, s.err) +} diff --git a/x/ecocredit/base/types/v1/events.pb.go b/x/ecocredit/base/types/v1/events.pb.go index 59adaf4cca..09ca58e555 100644 --- a/x/ecocredit/base/types/v1/events.pb.go +++ b/x/ecocredit/base/types/v1/events.pb.go @@ -1106,8 +1106,8 @@ func (m *EventBridgeReceive) GetOriginTx() *OriginTx { // EventBurnRegen is an event emitted when REGEN is burned to account for credit origination, transfer, etc. type EventBurnRegen struct { - // from is the address that burned REGEN. - From string `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty"` + // burner is the address that burned REGEN. + Burner string `protobuf:"bytes,1,opt,name=burner,proto3" json:"burner,omitempty"` // amount is the integer amount of uregen burned. Amount string `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount,omitempty"` // reason is the reason for the burn. @@ -1147,9 +1147,9 @@ func (m *EventBurnRegen) XXX_DiscardUnknown() { var xxx_messageInfo_EventBurnRegen proto.InternalMessageInfo -func (m *EventBurnRegen) GetFrom() string { +func (m *EventBurnRegen) GetBurner() string { if m != nil { - return m.From + return m.Burner } return "" } @@ -1193,50 +1193,50 @@ func init() { func init() { proto.RegisterFile("regen/ecocredit/v1/events.proto", fileDescriptor_e32415575ff8b4b2) } var fileDescriptor_e32415575ff8b4b2 = []byte{ - // 681 bytes of a gzipped FileDescriptorProto + // 682 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x55, 0x41, 0x4f, 0x13, 0x41, - 0x14, 0x66, 0xa1, 0x54, 0xfa, 0x10, 0x34, 0x13, 0x45, 0x24, 0xb8, 0x90, 0x4d, 0x8c, 0x5c, 0x68, - 0x53, 0xd0, 0x04, 0xe3, 0xc1, 0xd0, 0xea, 0x81, 0x03, 0xd1, 0xd4, 0x7a, 0xd0, 0x4b, 0x33, 0xbb, - 0xf3, 0x28, 0x83, 0xed, 0x4c, 0x33, 0x33, 0x2d, 0x90, 0xf8, 0x23, 0x3c, 0xfa, 0x0f, 0xbc, 0x79, - 0xf4, 0x37, 0x78, 0xe4, 0xe8, 0xd1, 0xc0, 0x1f, 0x31, 0x3b, 0x3b, 0x5d, 0xba, 0x2d, 0xb6, 0x68, - 0xf4, 0x36, 0xef, 0xe5, 0x7d, 0xfb, 0x7d, 0x6f, 0xe7, 0x7d, 0x6f, 0x60, 0x4d, 0x61, 0x13, 0x45, - 0x09, 0x23, 0x19, 0x29, 0x64, 0xdc, 0x94, 0x7a, 0xe5, 0x12, 0xf6, 0x50, 0x18, 0x5d, 0xec, 0x28, - 0x69, 0x24, 0x21, 0xb6, 0xa0, 0x98, 0x16, 0x14, 0x7b, 0xe5, 0x15, 0xff, 0x0a, 0x90, 0x39, 0xed, - 0xa0, 0xc3, 0x04, 0x9b, 0x70, 0xfb, 0x65, 0xfc, 0x8d, 0xaa, 0x42, 0x6a, 0xb0, 0xda, 0xa2, 0x5a, - 0x93, 0xfb, 0x30, 0x17, 0xc5, 0x87, 0x06, 0x67, 0xcb, 0xde, 0xba, 0xb7, 0x51, 0xa8, 0xdd, 0xb0, - 0xf1, 0x1e, 0x0b, 0xb6, 0x81, 0x0c, 0x94, 0xbf, 0x56, 0xf2, 0x08, 0x23, 0x43, 0x1e, 0x00, 0x74, - 0x92, 0xe3, 0x25, 0xa4, 0xe0, 0x32, 0x7b, 0x2c, 0x10, 0x19, 0x8e, 0x0a, 0x35, 0xd1, 0x21, 0x59, - 0x83, 0xf9, 0x30, 0x3e, 0x34, 0x18, 0x0a, 0xd9, 0x76, 0x18, 0xb0, 0xa9, 0x17, 0x71, 0x86, 0x3c, - 0x85, 0x82, 0x54, 0xbc, 0xc9, 0x45, 0xc3, 0x9c, 0x2c, 0x4f, 0xaf, 0x7b, 0x1b, 0xf3, 0x5b, 0xab, - 0xc5, 0xd1, 0x06, 0x8b, 0xaf, 0x6c, 0x51, 0xfd, 0xa4, 0x36, 0x27, 0xdd, 0x29, 0xf8, 0x08, 0x05, - 0xcb, 0xb7, 0xcf, 0x85, 0x99, 0x4c, 0xf4, 0x08, 0x6e, 0x19, 0x45, 0x19, 0x0d, 0x5b, 0xd8, 0xa0, - 0x6d, 0xd9, 0x15, 0xc6, 0xd2, 0x15, 0x6a, 0x8b, 0xfd, 0xf4, 0xae, 0xcd, 0x92, 0x87, 0xb0, 0xa8, - 0xd0, 0x70, 0x85, 0xac, 0x5f, 0x37, 0x63, 0xeb, 0x16, 0x5c, 0x36, 0x29, 0x0b, 0x34, 0xdc, 0x4d, - 0xd9, 0x6d, 0xaf, 0x55, 0xab, 0x55, 0xff, 0xd7, 0x96, 0xbf, 0x79, 0xb0, 0x60, 0x59, 0xeb, 0x8a, - 0x0a, 0x7d, 0x80, 0x8a, 0x2c, 0x41, 0x5e, 0xa3, 0x60, 0xa8, 0x1c, 0x91, 0x8b, 0xc8, 0x2a, 0x14, - 0x14, 0x46, 0xbc, 0xc3, 0x31, 0x6d, 0xf4, 0x32, 0x31, 0xac, 0x71, 0xe6, 0x3a, 0x7f, 0x2b, 0x77, - 0xcd, 0xbf, 0x35, 0x7b, 0xd5, 0xdf, 0xfa, 0xec, 0xc1, 0xbc, 0x15, 0x5e, 0xb3, 0x69, 0x72, 0x07, - 0x66, 0xe5, 0xb1, 0x48, 0x55, 0x27, 0xc1, 0xb0, 0xac, 0xe9, 0x11, 0x59, 0x4b, 0x90, 0xcf, 0xdc, - 0x89, 0x8b, 0x48, 0x00, 0x37, 0x8f, 0xba, 0x8a, 0x6b, 0xc6, 0x23, 0xc3, 0xa5, 0x70, 0x5a, 0x33, - 0xb9, 0x18, 0xab, 0x90, 0x6a, 0x29, 0x9c, 0x42, 0x17, 0x05, 0xc6, 0x29, 0xab, 0x52, 0x11, 0x61, - 0xeb, 0x5f, 0x2b, 0xbb, 0x64, 0xcd, 0x65, 0x58, 0xb7, 0xdc, 0xf8, 0xbc, 0xed, 0xb0, 0xbe, 0x21, - 0x77, 0x59, 0x9b, 0x8b, 0x71, 0xae, 0x7c, 0x0c, 0xf7, 0x86, 0x31, 0x7b, 0x5a, 0x77, 0x51, 0x8d, - 0xf5, 0xf2, 0x13, 0x58, 0x1e, 0x46, 0xed, 0xa3, 0xa1, 0x8c, 0x1a, 0x3a, 0x0e, 0xb6, 0x93, 0x21, - 0x73, 0x2b, 0x20, 0x91, 0x38, 0x61, 0x0f, 0x3c, 0x83, 0x95, 0x51, 0x64, 0x4a, 0x39, 0x11, 0x3c, - 0xa8, 0xd6, 0x1a, 0x2b, 0x85, 0x4e, 0x72, 0x56, 0x50, 0x86, 0x45, 0x0b, 0x7e, 0x83, 0xb4, 0x75, - 0xbd, 0xfd, 0x13, 0xec, 0xb8, 0x4d, 0xb7, 0xcb, 0x58, 0x62, 0xe0, 0xfa, 0x69, 0x07, 0xe3, 0x79, - 0xa2, 0x61, 0xa8, 0xb0, 0xc7, 0xa9, 0x9d, 0xa7, 0x04, 0x97, 0xc9, 0x05, 0x5f, 0xfb, 0x23, 0x5d, - 0x51, 0x9c, 0x35, 0x31, 0xbe, 0x69, 0x43, 0x55, 0x13, 0x4d, 0xdf, 0x89, 0x49, 0x34, 0xc1, 0x89, - 0x2b, 0x30, 0x17, 0x49, 0x61, 0x14, 0x8d, 0xfa, 0x93, 0x93, 0xc6, 0x03, 0x33, 0x95, 0xcb, 0xcc, - 0x54, 0x3a, 0xa2, 0xb3, 0x63, 0x46, 0x34, 0x3f, 0xd2, 0xea, 0x17, 0xcf, 0xf5, 0x9a, 0x08, 0xae, - 0x61, 0x84, 0xbc, 0x87, 0x13, 0x2e, 0xe4, 0xef, 0x27, 0x3f, 0xb3, 0xe6, 0x72, 0x7f, 0xb4, 0xe6, - 0xea, 0xee, 0x1e, 0x2b, 0x5d, 0x25, 0x6a, 0x31, 0x82, 0x10, 0xc8, 0x1d, 0xa8, 0xf4, 0x02, 0xed, - 0x79, 0x80, 0x78, 0xfa, 0x37, 0x96, 0x9b, 0x19, 0xb4, 0x5c, 0xe5, 0xdd, 0xf7, 0x73, 0xdf, 0x3b, - 0x3b, 0xf7, 0xbd, 0x9f, 0xe7, 0xbe, 0xf7, 0xe9, 0xc2, 0x9f, 0x3a, 0xbb, 0xf0, 0xa7, 0x7e, 0x5c, - 0xf8, 0x53, 0xef, 0x9f, 0x37, 0xb9, 0x39, 0xec, 0x86, 0xc5, 0x48, 0xb6, 0x4b, 0x56, 0xe1, 0xa6, - 0x40, 0x73, 0x2c, 0xd5, 0x07, 0x17, 0xb5, 0x90, 0x35, 0x51, 0x95, 0x4e, 0x06, 0xde, 0xd7, 0x90, - 0x6a, 0x4c, 0x5e, 0xd8, 0x52, 0xaf, 0x1c, 0xe6, 0xed, 0x2b, 0xbb, 0xfd, 0x2b, 0x00, 0x00, 0xff, - 0xff, 0x83, 0x51, 0x67, 0x0a, 0xbc, 0x07, 0x00, 0x00, + 0x14, 0x66, 0xa1, 0x54, 0xfa, 0x10, 0x34, 0x1b, 0x45, 0x24, 0xb8, 0x90, 0x4d, 0x8c, 0x5c, 0x68, + 0x53, 0xd0, 0x04, 0xe3, 0xc1, 0xd0, 0xea, 0x81, 0x03, 0xd1, 0x54, 0x4c, 0xd4, 0x4b, 0x33, 0xbb, + 0xf3, 0x2c, 0x83, 0xed, 0x4c, 0xf3, 0x76, 0x5a, 0x20, 0xf1, 0x47, 0x78, 0xf4, 0x1f, 0x78, 0xf3, + 0xe8, 0x6f, 0xf0, 0xc8, 0xd1, 0xa3, 0x81, 0x3f, 0x62, 0x76, 0x76, 0xba, 0xed, 0xb6, 0xd8, 0xa2, + 0xd1, 0xdb, 0xbc, 0x97, 0xf7, 0xed, 0xf7, 0xbd, 0x9d, 0xf7, 0xbd, 0x81, 0x35, 0xc2, 0x06, 0xca, + 0x12, 0x86, 0x2a, 0x24, 0xe4, 0x42, 0x97, 0xba, 0xe5, 0x12, 0x76, 0x51, 0xea, 0xa8, 0xd8, 0x26, + 0xa5, 0x95, 0xeb, 0x9a, 0x82, 0x62, 0x5a, 0x50, 0xec, 0x96, 0x57, 0xbc, 0x4b, 0x40, 0xfa, 0xb4, + 0x8d, 0x16, 0xe3, 0x6f, 0xc2, 0xcd, 0xe7, 0xf1, 0x37, 0xaa, 0x84, 0x4c, 0x63, 0xb5, 0xc9, 0xa2, + 0xc8, 0xbd, 0x0b, 0x73, 0x61, 0x7c, 0xa8, 0x0b, 0xbe, 0xec, 0xac, 0x3b, 0x1b, 0x85, 0xda, 0x35, + 0x13, 0xef, 0x71, 0x7f, 0x1b, 0xdc, 0x81, 0xf2, 0x97, 0xa4, 0x8e, 0x30, 0xd4, 0xee, 0x3d, 0x80, + 0x76, 0x72, 0xec, 0x43, 0x0a, 0x36, 0xb3, 0xc7, 0x7d, 0x99, 0xe1, 0xa8, 0x30, 0x1d, 0x1e, 0xba, + 0x6b, 0x30, 0x1f, 0xc4, 0x87, 0x3a, 0x47, 0xa9, 0x5a, 0x16, 0x03, 0x26, 0xf5, 0x2c, 0xce, 0xb8, + 0x8f, 0xa1, 0xa0, 0x48, 0x34, 0x84, 0xac, 0xeb, 0x93, 0xe5, 0xe9, 0x75, 0x67, 0x63, 0x7e, 0x6b, + 0xb5, 0x38, 0xda, 0x60, 0xf1, 0x85, 0x29, 0x3a, 0x38, 0xa9, 0xcd, 0x29, 0x7b, 0xf2, 0x3f, 0x42, + 0xc1, 0xf0, 0xed, 0x0b, 0xa9, 0x27, 0x13, 0x3d, 0x80, 0x1b, 0x9a, 0x18, 0x67, 0x41, 0x13, 0xeb, + 0xac, 0xa5, 0x3a, 0x52, 0x1b, 0xba, 0x42, 0x6d, 0xb1, 0x97, 0xde, 0x35, 0x59, 0xf7, 0x3e, 0x2c, + 0x12, 0x6a, 0x41, 0xc8, 0x7b, 0x75, 0x33, 0xa6, 0x6e, 0xc1, 0x66, 0x93, 0x32, 0x3f, 0x82, 0xdb, + 0x29, 0xbb, 0xe9, 0xb5, 0x6a, 0xb4, 0x46, 0xff, 0xb5, 0xe5, 0x6f, 0x0e, 0x2c, 0x18, 0xd6, 0x03, + 0x62, 0x32, 0x7a, 0x8f, 0xe4, 0x2e, 0x41, 0x3e, 0x42, 0xc9, 0x91, 0x2c, 0x91, 0x8d, 0xdc, 0x55, + 0x28, 0x10, 0x86, 0xa2, 0x2d, 0x30, 0x6d, 0xb4, 0x9f, 0x18, 0xd6, 0x38, 0x73, 0x95, 0xbf, 0x95, + 0xbb, 0xe2, 0xdf, 0x9a, 0xbd, 0xec, 0x6f, 0x7d, 0x76, 0x60, 0xde, 0x08, 0xaf, 0x99, 0xb4, 0x7b, + 0x0b, 0x66, 0xd5, 0xb1, 0x4c, 0x55, 0x27, 0xc1, 0xb0, 0xac, 0xe9, 0x11, 0x59, 0x4b, 0x90, 0xcf, + 0xdc, 0x89, 0x8d, 0x5c, 0x1f, 0xae, 0x1f, 0x75, 0x48, 0x44, 0x5c, 0x84, 0x5a, 0x28, 0x69, 0xb5, + 0x66, 0x72, 0x31, 0x96, 0x90, 0x45, 0x4a, 0x5a, 0x85, 0x36, 0xf2, 0xb5, 0x55, 0x56, 0x65, 0x32, + 0xc4, 0xe6, 0xbf, 0x56, 0xd6, 0x67, 0xcd, 0x65, 0x58, 0xb7, 0xec, 0xf8, 0xbc, 0x6e, 0xf3, 0x9e, + 0x21, 0x77, 0x79, 0x4b, 0xc8, 0x71, 0xae, 0x7c, 0x08, 0x77, 0x86, 0x31, 0x7b, 0x51, 0xd4, 0x41, + 0x1a, 0xeb, 0xe5, 0x47, 0xb0, 0x3c, 0x8c, 0xda, 0x47, 0xcd, 0x38, 0xd3, 0x6c, 0x1c, 0x6c, 0x27, + 0x43, 0x66, 0x57, 0x40, 0x22, 0x71, 0xc2, 0x1e, 0x78, 0x02, 0x2b, 0xa3, 0xc8, 0x94, 0x72, 0x22, + 0x78, 0x50, 0xad, 0x31, 0x56, 0x0a, 0x9d, 0xe4, 0x2c, 0xbf, 0x0c, 0x8b, 0x06, 0xfc, 0x0a, 0x59, + 0xf3, 0x6a, 0xfb, 0xc7, 0xdf, 0xb1, 0x9b, 0x6e, 0x97, 0xf3, 0xc4, 0xc0, 0x07, 0xa7, 0x6d, 0x8c, + 0xe7, 0x89, 0x05, 0x01, 0x61, 0x57, 0x30, 0x33, 0x4f, 0x09, 0x2e, 0x93, 0xf3, 0xbf, 0xf6, 0x46, + 0xba, 0x42, 0x82, 0x37, 0x30, 0xbe, 0x69, 0xcd, 0xa8, 0x81, 0xba, 0xe7, 0xc4, 0x24, 0x9a, 0xe0, + 0xc4, 0x15, 0x98, 0x0b, 0x95, 0xd4, 0xc4, 0xc2, 0xde, 0xe4, 0xa4, 0xf1, 0xc0, 0x4c, 0xe5, 0x32, + 0x33, 0x95, 0x8e, 0xe8, 0xec, 0x98, 0x11, 0xcd, 0x8f, 0xb4, 0xfa, 0xc5, 0xb1, 0xbd, 0x26, 0x82, + 0x6b, 0x18, 0xa2, 0xe8, 0xe2, 0x84, 0x0b, 0xf9, 0xfb, 0xc9, 0xcf, 0xac, 0xb9, 0xdc, 0x1f, 0xad, + 0xb9, 0x37, 0xf6, 0x1e, 0x2b, 0x1d, 0x92, 0xb5, 0x18, 0x11, 0x93, 0x04, 0x1d, 0xea, 0xdb, 0xd2, + 0x46, 0x03, 0xe4, 0xd3, 0xbf, 0xb1, 0xdd, 0xcc, 0xa0, 0xed, 0x2a, 0x6f, 0xbf, 0x9f, 0x7b, 0xce, + 0xd9, 0xb9, 0xe7, 0xfc, 0x3c, 0xf7, 0x9c, 0x4f, 0x17, 0xde, 0xd4, 0xd9, 0x85, 0x37, 0xf5, 0xe3, + 0xc2, 0x9b, 0x7a, 0xf7, 0xb4, 0x21, 0xf4, 0x61, 0x27, 0x28, 0x86, 0xaa, 0x55, 0x32, 0x2a, 0x37, + 0x25, 0xea, 0x63, 0x45, 0x1f, 0x6c, 0xd4, 0x44, 0xde, 0x40, 0x2a, 0x9d, 0x0c, 0xbc, 0xb1, 0x01, + 0x8b, 0x30, 0x79, 0x65, 0x4b, 0xdd, 0x72, 0x90, 0x37, 0x2f, 0xed, 0xf6, 0xaf, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x70, 0x5b, 0x0a, 0xb1, 0xc0, 0x07, 0x00, 0x00, } func (m *EventCreateClass) Marshal() (dAtA []byte, err error) { @@ -1989,10 +1989,10 @@ func (m *EventBurnRegen) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x12 } - if len(m.From) > 0 { - i -= len(m.From) - copy(dAtA[i:], m.From) - i = encodeVarintEvents(dAtA, i, uint64(len(m.From))) + if len(m.Burner) > 0 { + i -= len(m.Burner) + copy(dAtA[i:], m.Burner) + i = encodeVarintEvents(dAtA, i, uint64(len(m.Burner))) i-- dAtA[i] = 0xa } @@ -2342,7 +2342,7 @@ func (m *EventBurnRegen) Size() (n int) { } var l int _ = l - l = len(m.From) + l = len(m.Burner) if l > 0 { n += 1 + l + sovEvents(uint64(l)) } @@ -4618,7 +4618,7 @@ func (m *EventBurnRegen) Unmarshal(dAtA []byte) error { switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field From", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Burner", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -4646,7 +4646,7 @@ func (m *EventBurnRegen) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.From = string(dAtA[iNdEx:postIndex]) + m.Burner = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { diff --git a/x/ecocredit/base/types/v1/features/msg_burn_regen.feature b/x/ecocredit/base/types/v1/features/msg_burn_regen.feature new file mode 100644 index 0000000000..02f3f9ec80 --- /dev/null +++ b/x/ecocredit/base/types/v1/features/msg_burn_regen.feature @@ -0,0 +1,69 @@ +Feature: MsgBurnRegen + + Scenario: a valid message with no reason + Given the message + """ + { + "burner": "regen1depk54cuajgkzea6zpgkq36tnjwdzv4ak663u6", + "amount":"1000000000" + } + """ + When the message is validated + Then expect no error + + Scenario: a valid message with a reason + Given the message + """ + { + "burner": "regen1depk54cuajgkzea6zpgkq36tnjwdzv4ak663u6", + "amount":"1000000000", + "reason":"for selling credits" + } + """ + When the message is validated + Then expect no error + + Scenario: invalid burner + Given the message + """ + { + "burner": "foobar", + "amount":"1000000000" + } + """ + When the message is validated + Then expect error contains "invalid bech32" + + Scenario: invalid amount + Given the message + """ + { + "burner": "regen1depk54cuajgkzea6zpgkq36tnjwdzv4ak663u6", + "amount":"foo" + } + """ + When the message is validated + Then expect error contains "invalid amount" + + Scenario: negative amount + Given the message + """ + { + "burner": "regen1depk54cuajgkzea6zpgkq36tnjwdzv4ak663u6", + "amount":"-1000000000" + } + """ + When the message is validated + Then expect error contains "amount must be positive" + + Scenario: reason too long + Given the message + """ + { + "burner": "regen1depk54cuajgkzea6zpgkq36tnjwdzv4ak663u6", + "amount":"1000000000", + "reason":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris. Maecenas congue ligula ac quam viverra nec consectetur ante hendrerit. Donec et mollis dolor. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris. Maecenas congue ligula ac quam viverra nec consectetur ante hendrerit. Donec et mollis dolor." + } + """ + When the message is validated + Then expect error contains "at most 256" diff --git a/x/ecocredit/base/types/v1/msg_burn.go b/x/ecocredit/base/types/v1/msg_burn_regen.go similarity index 53% rename from x/ecocredit/base/types/v1/msg_burn.go rename to x/ecocredit/base/types/v1/msg_burn_regen.go index fd5ac93162..c3d7feed64 100644 --- a/x/ecocredit/base/types/v1/msg_burn.go +++ b/x/ecocredit/base/types/v1/msg_burn_regen.go @@ -1,11 +1,9 @@ package v1 import ( - "fmt" - - "cosmossdk.io/errors" "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/cosmos/cosmos-sdk/x/auth/migrations/legacytx" ) @@ -13,18 +11,18 @@ var _ legacytx.LegacyMsg = &MsgBurnRegen{} // ValidateBasic does a sanity check on the provided data. func (m *MsgBurnRegen) ValidateBasic() error { - if _, err := sdk.AccAddressFromBech32(m.From); err != nil { - return errors.Wrapf(err, "invalid from address") + if _, err := sdk.AccAddressFromBech32(m.Burner); err != nil { + return err } amount, ok := math.NewIntFromString(m.Amount) if !ok { - return fmt.Errorf("invalid amount: %s", m.Amount) + return sdkerrors.ErrInvalidRequest.Wrapf("invalid amount: %s", m.Amount) } if !amount.IsPositive() { - return fmt.Errorf("amount must be positive: %s", m.Amount) + return sdkerrors.ErrInvalidRequest.Wrapf("amount must be positive: %s", m.Amount) } if len(m.Reason) > MAX_REASON_LEN { - return fmt.Errorf("reason must be less than 256 characters") + return sdkerrors.ErrInvalidRequest.Wrapf("reason must at most 256 characters long") } return nil } @@ -33,17 +31,17 @@ const MAX_REASON_LEN = 256 // GetSigners returns the expected signers for MsgBurnRegen. func (m *MsgBurnRegen) GetSigners() []sdk.AccAddress { - addr := sdk.MustAccAddressFromBech32(m.From) + addr := sdk.MustAccAddressFromBech32(m.Burner) return []sdk.AccAddress{addr} } // Route implements the LegacyMsg interface. -func (m MsgBurnRegen) Route() string { return sdk.MsgTypeURL(m) } +func (m *MsgBurnRegen) Route() string { return sdk.MsgTypeURL(m) } // Type implements the LegacyMsg interface. -func (m MsgBurnRegen) Type() string { return sdk.MsgTypeURL(m) } +func (m *MsgBurnRegen) Type() string { return sdk.MsgTypeURL(m) } // GetSignBytes implements the LegacyMsg interface. -func (m MsgBurnRegen) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&m)) +func (m *MsgBurnRegen) GetSignBytes() []byte { + return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(m)) } diff --git a/x/ecocredit/base/types/v1/msg_burn_regen_test.go b/x/ecocredit/base/types/v1/msg_burn_regen_test.go new file mode 100644 index 0000000000..e40a7b1f75 --- /dev/null +++ b/x/ecocredit/base/types/v1/msg_burn_regen_test.go @@ -0,0 +1,37 @@ +package v1 + +import ( + "testing" + + "github.com/gogo/protobuf/jsonpb" + "github.com/regen-network/gocuke" + "github.com/stretchr/testify/require" +) + +type msgBurnRegen struct { + gocuke.TestingT + msg *MsgBurnRegen + err error +} + +func TestMsgBurnRegen(t *testing.T) { + gocuke.NewRunner(t, &msgBurnRegen{}).Path("./features/msg_burn_regen.feature").Run() +} + +func (s *msgBurnRegen) TheMessage(a gocuke.DocString) { + s.msg = &MsgBurnRegen{} + err := jsonpb.UnmarshalString(a.Content, s.msg) + require.NoError(s, err) +} + +func (s *msgBurnRegen) TheMessageIsValidated() { + s.err = s.msg.ValidateBasic() +} + +func (s *msgBurnRegen) ExpectNoError() { + require.NoError(s, s.err) +} + +func (s *msgBurnRegen) ExpectErrorContains(a string) { + require.ErrorContains(s, s.err, a) +} diff --git a/x/ecocredit/base/types/v1/tx.pb.go b/x/ecocredit/base/types/v1/tx.pb.go index 99fa1d56b2..e09ad1c151 100644 --- a/x/ecocredit/base/types/v1/tx.pb.go +++ b/x/ecocredit/base/types/v1/tx.pb.go @@ -6,11 +6,6 @@ package v1 import ( context "context" fmt "fmt" - io "io" - math "math" - math_bits "math/bits" - time "time" - types "github.com/cosmos/cosmos-sdk/types" _ "github.com/cosmos/cosmos-sdk/types/msgservice" _ "github.com/cosmos/gogoproto/gogoproto" @@ -21,6 +16,10 @@ import ( grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" + io "io" + math "math" + math_bits "math/bits" + time "time" ) // Reference imports to suppress errors if they are not otherwise used. @@ -2827,8 +2826,8 @@ var xxx_messageInfo_MsgRemoveAllowedBridgeChainResponse proto.InternalMessageInf // // Since Revision 3 type MsgBurnRegen struct { - // from is the address of the account burning REGEN tokens. - From string `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty"` + // burner is the address of the account burning REGEN tokens. + Burner string `protobuf:"bytes,1,opt,name=burner,proto3" json:"burner,omitempty"` // amount is the integer amount of uregen tokens to burn. Amount string `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount,omitempty"` // reason is any arbitrary string that specifies the reason for burning @@ -2869,9 +2868,9 @@ func (m *MsgBurnRegen) XXX_DiscardUnknown() { var xxx_messageInfo_MsgBurnRegen proto.InternalMessageInfo -func (m *MsgBurnRegen) GetFrom() string { +func (m *MsgBurnRegen) GetBurner() string { if m != nil { - return m.From + return m.Burner } return "" } @@ -2986,128 +2985,128 @@ func init() { func init() { proto.RegisterFile("regen/ecocredit/v1/tx.proto", fileDescriptor_2b8ae49f50a3ddbd) } var fileDescriptor_2b8ae49f50a3ddbd = []byte{ - // 1934 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x59, 0x5f, 0x6f, 0x1b, 0x4b, - 0x15, 0xef, 0xda, 0x4e, 0x6c, 0x1f, 0xa7, 0x69, 0xba, 0xe9, 0xcd, 0x75, 0x37, 0x8d, 0xe3, 0xfa, - 0xde, 0x70, 0x73, 0x73, 0xd3, 0xb5, 0x92, 0x82, 0xaa, 0x16, 0xa1, 0x92, 0xa4, 0xaa, 0x08, 0x92, - 0x0b, 0x72, 0x83, 0x10, 0x15, 0x95, 0xb5, 0xde, 0x9d, 0x6c, 0xb6, 0xd8, 0xbb, 0xd6, 0xee, 0x38, - 0x49, 0x05, 0x42, 0x2a, 0xe2, 0x03, 0xf4, 0x19, 0xf1, 0xc0, 0x47, 0x40, 0x7c, 0x05, 0x5e, 0x78, - 0xec, 0x0b, 0x82, 0xb7, 0xa2, 0x16, 0x89, 0x6f, 0xc0, 0x13, 0x0f, 0x68, 0x67, 0x66, 0xc7, 0x3b, - 0xfb, 0xdf, 0xed, 0xed, 0x4b, 0xe4, 0x39, 0x73, 0xe6, 0x9c, 0xdf, 0x39, 0x67, 0xe6, 0xfc, 0xd9, - 0xc0, 0xba, 0x8b, 0x4c, 0x64, 0x77, 0x91, 0xee, 0xe8, 0x2e, 0x32, 0x2c, 0xdc, 0x3d, 0xdf, 0xeb, - 0xe2, 0x4b, 0x75, 0xe2, 0x3a, 0xd8, 0x91, 0x65, 0xb2, 0xa9, 0xf2, 0x4d, 0xf5, 0x7c, 0x4f, 0x69, - 0xe9, 0x8e, 0x37, 0x76, 0xbc, 0xee, 0x50, 0xf3, 0x50, 0xf7, 0x7c, 0x6f, 0x88, 0xb0, 0xb6, 0xd7, - 0xd5, 0x1d, 0xcb, 0xa6, 0x67, 0x94, 0xcf, 0xd9, 0xfe, 0xd8, 0x33, 0x7d, 0x59, 0x63, 0xcf, 0x64, - 0x1b, 0x37, 0x4c, 0xc7, 0x74, 0xc8, 0xcf, 0xae, 0xff, 0x8b, 0x51, 0x37, 0x4d, 0xc7, 0x31, 0x47, - 0xa8, 0x4b, 0x56, 0xc3, 0xe9, 0x69, 0x17, 0x5b, 0x63, 0xe4, 0x61, 0x6d, 0x3c, 0x61, 0x0c, 0xad, - 0x04, 0x80, 0x1e, 0xd6, 0x30, 0xca, 0xd8, 0xc7, 0x2f, 0x27, 0xc8, 0xa3, 0xfb, 0x9d, 0x57, 0x12, - 0xac, 0xf4, 0x3c, 0xf3, 0xc0, 0x30, 0x8e, 0xc8, 0xfe, 0xc9, 0xcb, 0x09, 0x92, 0x6f, 0x41, 0x5d, - 0x9b, 0xe2, 0x33, 0xc7, 0xb5, 0xf0, 0xcb, 0xa6, 0xd4, 0x96, 0xb6, 0xeb, 0xfd, 0x19, 0x41, 0x7e, - 0x08, 0x0d, 0x2a, 0x6b, 0xe0, 0x0b, 0x6a, 0x96, 0xda, 0xd2, 0x76, 0x63, 0xbf, 0xa5, 0xc6, 0x9d, - 0xa1, 0xce, 0x44, 0xf6, 0x41, 0xe7, 0xbf, 0x1f, 0x2c, 0xff, 0xee, 0x3f, 0x7f, 0xde, 0x99, 0x09, - 0xec, 0x28, 0xd0, 0x8c, 0x42, 0xe8, 0x23, 0x6f, 0xe2, 0xd8, 0x1e, 0xea, 0xfc, 0x55, 0x82, 0xe5, - 0x9e, 0x67, 0x1e, 0xb9, 0x48, 0xc3, 0xe8, 0x68, 0xa4, 0x79, 0x9e, 0x7c, 0x03, 0x16, 0x34, 0x63, - 0x6c, 0xd9, 0x0c, 0x19, 0x5d, 0xc8, 0x4d, 0xa8, 0x5a, 0x9e, 0x37, 0x45, 0xae, 0xd7, 0x2c, 0xb5, - 0xcb, 0xdb, 0xf5, 0x7e, 0xb0, 0x94, 0x15, 0xa8, 0x8d, 0x11, 0xd6, 0x0c, 0x0d, 0x6b, 0xcd, 0x32, - 0x39, 0xc2, 0xd7, 0xf2, 0x2e, 0xc8, 0x21, 0x5b, 0x06, 0xda, 0x70, 0xe8, 0xa2, 0xf3, 0x66, 0x85, - 0x70, 0xad, 0xcc, 0x20, 0x1f, 0x10, 0xba, 0xfc, 0x0d, 0x94, 0x4f, 0x11, 0x6a, 0x2e, 0x10, 0x8b, - 0x6f, 0xaa, 0x34, 0x94, 0xaa, 0x1f, 0x6a, 0x95, 0x85, 0x5a, 0x3d, 0x72, 0x2c, 0xbb, 0xef, 0x73, - 0x3d, 0x00, 0xdf, 0x4a, 0x0a, 0xae, 0x73, 0x17, 0xd6, 0x44, 0x23, 0x02, 0xfb, 0xe4, 0x9b, 0x50, - 0xd3, 0x7d, 0xc2, 0xc0, 0x32, 0x98, 0x3d, 0x55, 0xb2, 0x3e, 0x36, 0x3a, 0x7f, 0xa1, 0xa1, 0xa1, - 0xa7, 0x7e, 0xea, 0x3a, 0x2f, 0x90, 0x8e, 0x53, 0x8c, 0x0f, 0x4b, 0x29, 0x09, 0x52, 0x32, 0xad, - 0xef, 0xc0, 0xd2, 0x8b, 0xa9, 0x6b, 0x79, 0x86, 0xa5, 0x63, 0xcb, 0xb1, 0x99, 0xdd, 0x02, 0x4d, - 0xbe, 0x0d, 0x4b, 0x2e, 0x3a, 0x45, 0x2e, 0xb2, 0x75, 0xe4, 0x8b, 0x5f, 0x20, 0x3c, 0x0d, 0x4e, - 0x3b, 0x36, 0x04, 0x4b, 0xef, 0x93, 0x58, 0x0a, 0x98, 0xb9, 0xad, 0x1b, 0x00, 0x13, 0x4a, 0x9a, - 0x59, 0x5b, 0x67, 0x94, 0x63, 0xa3, 0xf3, 0xbf, 0x52, 0x28, 0xd4, 0x87, 0x1a, 0xd6, 0xcf, 0xe4, - 0x35, 0x58, 0xa4, 0x51, 0x64, 0xdc, 0x6c, 0x15, 0x91, 0x54, 0x8a, 0x48, 0x92, 0x7f, 0x00, 0x35, - 0x9f, 0x51, 0xb3, 0x75, 0xd4, 0x2c, 0xb7, 0xcb, 0xdb, 0x8d, 0xfd, 0xdb, 0x49, 0xd7, 0x93, 0xe8, - 0x38, 0x66, 0x8c, 0x7d, 0x7e, 0x44, 0x70, 0x59, 0x25, 0xe2, 0xb2, 0x87, 0x00, 0x1e, 0xd6, 0x5c, - 0x3c, 0x30, 0x34, 0x1c, 0xdc, 0x04, 0x45, 0xa5, 0xaf, 0x54, 0x0d, 0x5e, 0xa9, 0x7a, 0x12, 0xbc, - 0xd2, 0xc3, 0xca, 0xeb, 0xb7, 0x9b, 0x52, 0xbf, 0x4e, 0xce, 0x3c, 0xd2, 0x30, 0x92, 0xbf, 0x0f, - 0x35, 0x64, 0x1b, 0xf4, 0xf8, 0x62, 0xc1, 0xe3, 0x55, 0x64, 0x1b, 0xe4, 0xb0, 0x0c, 0x15, 0x67, - 0x82, 0xec, 0x66, 0xb5, 0x2d, 0x6d, 0xd7, 0xfa, 0xe4, 0xb7, 0x7c, 0x1f, 0xea, 0x8e, 0x6b, 0x99, - 0x96, 0x3d, 0xc0, 0x97, 0xcd, 0x1a, 0x91, 0x78, 0x2b, 0xc9, 0xda, 0x9f, 0x10, 0xa6, 0x93, 0xcb, - 0x7e, 0xcd, 0x61, 0xbf, 0x1e, 0x34, 0xfc, 0xc0, 0x31, 0x9f, 0x76, 0xee, 0x87, 0xee, 0x28, 0xf1, - 0x0c, 0x8f, 0xdb, 0x26, 0x34, 0x86, 0x3e, 0x61, 0x60, 0x20, 0xdb, 0x19, 0xb3, 0x50, 0x00, 0x21, - 0x3d, 0xf2, 0x29, 0x9d, 0xbf, 0x4b, 0xb0, 0xda, 0xf3, 0xcc, 0x9e, 0x65, 0x63, 0x72, 0x92, 0xbe, - 0x63, 0x2f, 0x35, 0x7c, 0x11, 0x81, 0xa5, 0xa8, 0xc0, 0x8f, 0x0d, 0xa0, 0xe0, 0x92, 0xca, 0x87, - 0xbb, 0x64, 0x03, 0xd6, 0x13, 0xcc, 0xe2, 0xb9, 0xe9, 0x04, 0x96, 0x7a, 0x9e, 0xf9, 0x14, 0x69, - 0xa3, 0xec, 0xdb, 0x9a, 0x67, 0xae, 0xa8, 0x74, 0x0d, 0x6e, 0x84, 0xa5, 0x72, 0x6d, 0xff, 0x2d, - 0x41, 0x95, 0x6c, 0xd8, 0x86, 0xaf, 0xc9, 0x43, 0xb6, 0x31, 0xd3, 0x44, 0x57, 0x7e, 0xe2, 0x76, - 0x91, 0x6e, 0x4d, 0x2c, 0x64, 0xe3, 0xe0, 0x59, 0x70, 0x82, 0x7c, 0x00, 0x55, 0x6a, 0xbb, 0xc7, - 0x9c, 0xfa, 0x55, 0x92, 0x53, 0x98, 0x0e, 0xd5, 0xff, 0x13, 0x58, 0x1c, 0x9c, 0x53, 0xfe, 0x2d, - 0x41, 0x23, 0xb4, 0x91, 0x7b, 0x35, 0xe4, 0xaf, 0xe0, 0x1a, 0x76, 0x35, 0x43, 0x1b, 0x8e, 0xd0, - 0x40, 0x1b, 0x3b, 0x53, 0x8e, 0x6b, 0x39, 0x20, 0x1f, 0x10, 0xaa, 0xbc, 0x05, 0xcb, 0x2e, 0xc2, - 0x96, 0x8b, 0x8c, 0x80, 0x8f, 0x66, 0xab, 0xab, 0x8c, 0xca, 0xd8, 0xee, 0xc1, 0xe7, 0x94, 0x30, - 0x46, 0x36, 0x1e, 0x24, 0x64, 0xaf, 0xb5, 0xd9, 0xf6, 0x8f, 0xc3, 0x79, 0xec, 0x1b, 0xb8, 0x1e, - 0x3a, 0xe8, 0x22, 0xcd, 0x73, 0x6c, 0x96, 0xcc, 0x56, 0x66, 0x1b, 0x7d, 0x42, 0x67, 0x01, 0xa1, - 0x4e, 0xed, 0x5c, 0x87, 0x6b, 0xcc, 0x27, 0x3c, 0x16, 0x7f, 0x92, 0xa0, 0xde, 0xf3, 0xcc, 0x3e, - 0x39, 0xe7, 0xe7, 0x64, 0xe7, 0xc2, 0xe6, 0xc1, 0xa0, 0x0b, 0xf9, 0x7b, 0x33, 0x6f, 0x97, 0x88, - 0xb7, 0xd7, 0xd3, 0x4b, 0xe4, 0xcc, 0xc3, 0xb1, 0x9c, 0x5c, 0x4e, 0xc8, 0xc9, 0x6b, 0xb0, 0xc8, - 0x0c, 0xa0, 0x36, 0xb3, 0x15, 0x4b, 0xc4, 0x44, 0x7d, 0x67, 0x15, 0xae, 0x73, 0x84, 0x1c, 0xf7, - 0x6f, 0x08, 0xec, 0x23, 0xff, 0x91, 0x8c, 0xbe, 0x5d, 0xd8, 0x33, 0x48, 0xe5, 0x1c, 0x48, 0x54, - 0x3b, 0x87, 0xe4, 0x90, 0xd4, 0xf1, 0xb3, 0x89, 0x11, 0x94, 0xc6, 0x03, 0x52, 0xd1, 0xe6, 0xae, - 0x73, 0xeb, 0x50, 0xb7, 0xd1, 0xc5, 0x80, 0x1e, 0x62, 0x85, 0xce, 0x46, 0x17, 0x44, 0x9a, 0x50, - 0xa1, 0xe8, 0xa3, 0x8e, 0x2a, 0xe4, 0x78, 0xfe, 0x28, 0xc1, 0x67, 0xe2, 0xfe, 0x31, 0xeb, 0x23, - 0xe6, 0x86, 0xb4, 0x09, 0x0d, 0xcd, 0x30, 0x06, 0x41, 0x5b, 0x52, 0x26, 0x6d, 0x09, 0x68, 0x86, - 0x11, 0x48, 0x24, 0x77, 0x7e, 0xec, 0x9c, 0x23, 0xce, 0x53, 0x21, 0x3c, 0x57, 0x29, 0x95, 0xb1, - 0x09, 0xe8, 0x37, 0x61, 0x23, 0x11, 0x1d, 0xc7, 0x7f, 0x49, 0xd2, 0x78, 0x88, 0xa1, 0x17, 0x94, - 0xae, 0xb9, 0xf1, 0xdf, 0x86, 0x25, 0xdf, 0xa5, 0x91, 0xf6, 0xa1, 0x61, 0xa3, 0x8b, 0x40, 0xa6, - 0x00, 0xad, 0x0d, 0xad, 0x64, 0xcd, 0x1c, 0xdb, 0x34, 0xe4, 0x5a, 0xd6, 0x1c, 0x64, 0x45, 0x3b, - 0xa7, 0xca, 0x17, 0x8e, 0x78, 0xd8, 0x67, 0x61, 0xb5, 0x1c, 0xd7, 0x6f, 0x49, 0xd3, 0x22, 0x30, - 0xe4, 0x78, 0x2d, 0x07, 0xda, 0x9c, 0x9e, 0xeb, 0x40, 0x3b, 0x4d, 0x3f, 0xc7, 0xf8, 0x07, 0x9a, - 0x72, 0x0e, 0x5d, 0xcb, 0x30, 0xd3, 0x52, 0xce, 0x1a, 0x2c, 0x62, 0xcd, 0x35, 0x51, 0x90, 0x63, - 0xd9, 0x4a, 0x2c, 0x0b, 0xe5, 0x68, 0x59, 0x08, 0xbd, 0xf8, 0x4a, 0xf1, 0x17, 0x2f, 0xbc, 0xec, - 0x57, 0x52, 0xe8, 0xd6, 0x91, 0xb2, 0xc5, 0xfd, 0xf7, 0xc1, 0x3d, 0x40, 0x01, 0x1f, 0x0a, 0x75, - 0x33, 0x7c, 0xfd, 0x04, 0x08, 0xdc, 0x85, 0x34, 0xff, 0x50, 0x0f, 0x72, 0xe2, 0xdb, 0x0a, 0xe9, - 0xb2, 0x03, 0xaa, 0x8e, 0xac, 0x73, 0x94, 0x0a, 0x3a, 0xe3, 0xb1, 0x3c, 0x86, 0x2a, 0x8b, 0x3f, - 0x41, 0xda, 0xd8, 0xdf, 0x4d, 0x29, 0xae, 0x82, 0x26, 0x35, 0xe8, 0x91, 0x83, 0xc3, 0xf2, 0x0f, - 0x61, 0x81, 0x38, 0x81, 0xf5, 0x2d, 0x3b, 0x85, 0xa4, 0xd0, 0x4e, 0x81, 0x1e, 0x14, 0xbb, 0x9f, - 0x85, 0x79, 0xba, 0x1f, 0xe5, 0x1f, 0x12, 0x2c, 0xd0, 0x5e, 0x46, 0xb8, 0x32, 0x52, 0xf4, 0xca, - 0xac, 0xc1, 0xa2, 0x50, 0xcc, 0xd9, 0x2a, 0xd2, 0x1d, 0x97, 0x3f, 0xae, 0x3b, 0xae, 0xcc, 0xdb, - 0x1d, 0x87, 0xfb, 0xf6, 0x05, 0xb1, 0x6f, 0x57, 0x46, 0x50, 0x0d, 0x46, 0xa8, 0xe8, 0x44, 0x23, - 0xc5, 0x26, 0x9a, 0x58, 0x11, 0x2e, 0x25, 0x14, 0xe1, 0x8c, 0xc1, 0x4a, 0xbc, 0x98, 0xcf, 0x48, - 0x76, 0x11, 0x02, 0x56, 0xb8, 0xb5, 0xce, 0x49, 0x34, 0x9d, 0x5f, 0x82, 0xcc, 0x46, 0x67, 0xff, - 0x1a, 0x92, 0xe6, 0xdd, 0x71, 0x73, 0xe6, 0xf7, 0x26, 0x79, 0xef, 0x3e, 0x23, 0xbf, 0xc3, 0x74, - 0x19, 0x1b, 0xcc, 0x6f, 0x81, 0x12, 0x97, 0xce, 0x5f, 0x0e, 0x22, 0x85, 0xf4, 0x29, 0xc2, 0xe1, - 0xdd, 0x83, 0xd1, 0xc8, 0xb9, 0x18, 0x59, 0x1e, 0xce, 0x07, 0x81, 0x6c, 0xbf, 0xfd, 0xa3, 0x46, - 0xd5, 0xfa, 0xc1, 0x32, 0x06, 0x62, 0x0b, 0xbe, 0xc8, 0x50, 0xc3, 0xd1, 0x0c, 0x48, 0x6d, 0xe9, - 0x93, 0xc2, 0xf9, 0x49, 0x9c, 0x41, 0xab, 0x48, 0x5c, 0x01, 0x47, 0x60, 0x93, 0xf4, 0x12, 0xaa, - 0x7f, 0x8f, 0x51, 0xde, 0xa7, 0x14, 0xf6, 0x41, 0xa1, 0x54, 0xe8, 0x83, 0x42, 0x14, 0xd0, 0x3a, - 0xdc, 0x8c, 0xe9, 0xe3, 0x60, 0xcc, 0xe0, 0x9b, 0x0a, 0xf1, 0x14, 0x32, 0xe8, 0xf5, 0x3b, 0x3a, - 0xd3, 0x2c, 0x3b, 0x07, 0xd3, 0x06, 0x80, 0xee, 0xb3, 0x0d, 0x6c, 0x6d, 0x8c, 0x82, 0x1b, 0x47, - 0x28, 0x4f, 0xb4, 0x71, 0x1c, 0x05, 0xad, 0x5d, 0x89, 0x8a, 0x38, 0x98, 0x17, 0xe4, 0xa6, 0x50, - 0xd7, 0x7d, 0x6a, 0x3c, 0xf4, 0xba, 0xa4, 0xe9, 0xe2, 0x90, 0x9e, 0x93, 0xd9, 0xed, 0x70, 0xea, - 0xda, 0x7d, 0x3f, 0x33, 0xfa, 0x93, 0xf5, 0xa9, 0xcb, 0x5f, 0x20, 0xf9, 0x9d, 0x9a, 0xe5, 0xd2, - 0x7a, 0xdd, 0xba, 0x0f, 0x85, 0x1c, 0x65, 0x43, 0x1c, 0x17, 0x1f, 0xa8, 0xdd, 0x7f, 0xbb, 0x0a, - 0xe5, 0x9e, 0x67, 0xca, 0xcf, 0xa1, 0x11, 0xfe, 0xa4, 0xd5, 0x49, 0xc9, 0xf2, 0x21, 0x1e, 0x65, - 0x27, 0x9f, 0x87, 0xa7, 0x15, 0x1d, 0xae, 0x8a, 0x9f, 0x8d, 0xbe, 0xcc, 0x3c, 0xcc, 0xb8, 0x94, - 0xdd, 0x22, 0x5c, 0x5c, 0x09, 0xb7, 0x81, 0x56, 0x8c, 0x6c, 0x1b, 0x08, 0x4f, 0x8e, 0x0d, 0xe2, - 0x57, 0x87, 0x11, 0xac, 0xc4, 0x3e, 0x28, 0xa4, 0x0d, 0xac, 0x51, 0x46, 0xa5, 0x5b, 0x90, 0x91, - 0x6b, 0xfb, 0x39, 0xd4, 0x67, 0x83, 0x7c, 0x3b, 0x75, 0x2e, 0x66, 0x1c, 0xca, 0x76, 0x1e, 0x07, - 0x17, 0xfc, 0x23, 0xa8, 0x90, 0x91, 0x7d, 0x3d, 0x63, 0xd6, 0x56, 0xbe, 0xc8, 0xd8, 0xe4, 0x92, - 0x9e, 0xc0, 0x22, 0x1b, 0x38, 0x37, 0x52, 0xd8, 0xe9, 0xb6, 0xb2, 0x95, 0xb9, 0x1d, 0x96, 0xc7, - 0x26, 0xc1, 0x34, 0x79, 0x74, 0x3b, 0x55, 0x9e, 0x38, 0xc9, 0xf9, 0x01, 0x8b, 0x8d, 0x71, 0x69, - 0x01, 0x8b, 0x32, 0xa6, 0x06, 0x2c, 0x6d, 0x4e, 0x93, 0x5d, 0x90, 0x13, 0x66, 0xb4, 0xaf, 0xf3, - 0xc5, 0x30, 0x56, 0x65, 0xaf, 0x30, 0x2b, 0xd7, 0x39, 0x85, 0xd5, 0xa4, 0xc1, 0x6a, 0x27, 0x5f, - 0x52, 0xc0, 0xab, 0xec, 0x17, 0xe7, 0x8d, 0x9b, 0x2a, 0xcc, 0x4c, 0xd9, 0xa6, 0x86, 0x59, 0x73, - 0x4c, 0x4d, 0x1a, 0x89, 0xe4, 0x5f, 0xc3, 0x67, 0xc9, 0xf3, 0xd0, 0x6e, 0x11, 0x59, 0xdc, 0xdc, - 0xef, 0xce, 0xc3, 0x1d, 0xf7, 0xb3, 0x38, 0x4a, 0x64, 0xfb, 0x59, 0xe0, 0xcd, 0xf1, 0x73, 0xe2, - 0x7c, 0xe0, 0x3f, 0x08, 0x36, 0x5e, 0x6d, 0x64, 0x76, 0xdd, 0xa9, 0x0f, 0x42, 0x1c, 0x2d, 0xfc, - 0x2c, 0x2c, 0x8e, 0x15, 0x5f, 0x16, 0x69, 0xe6, 0x95, 0x42, 0x83, 0x43, 0x58, 0x89, 0xf8, 0xcf, - 0x9b, 0x34, 0x25, 0x02, 0x57, 0xaa, 0x92, 0xc4, 0xff, 0xc2, 0xc8, 0xbf, 0x97, 0xa0, 0x99, 0xda, - 0xe8, 0x75, 0x53, 0x93, 0x57, 0xf2, 0x01, 0xe5, 0xde, 0x9c, 0x07, 0x38, 0x0c, 0x0b, 0xae, 0x45, - 0x5b, 0xdd, 0xef, 0x64, 0xd8, 0x11, 0xe2, 0x53, 0xd4, 0x62, 0x7c, 0xe1, 0x37, 0x97, 0xd0, 0x4b, - 0x7e, 0x9d, 0x9a, 0x59, 0xa3, 0xac, 0xa9, 0x6f, 0x2e, 0xbd, 0x81, 0x94, 0x4f, 0x61, 0x39, 0xd2, - 0x3d, 0x6e, 0xe5, 0x67, 0x8b, 0xc7, 0x08, 0x29, 0x77, 0x0a, 0xb1, 0x85, 0xdf, 0x76, 0x72, 0x63, - 0x98, 0x71, 0x29, 0xe2, 0xdc, 0xa9, 0x6f, 0x3b, 0xb3, 0x17, 0x24, 0x57, 0x29, 0xb5, 0x13, 0xec, - 0x66, 0x3a, 0x2d, 0x01, 0xc3, 0xbd, 0x39, 0x0f, 0x84, 0xeb, 0xfd, 0xac, 0xf9, 0x4b, 0xab, 0xf7, - 0x9c, 0x23, 0xb5, 0xde, 0xc7, 0x3a, 0xbc, 0xc3, 0x5f, 0xfc, 0xed, 0x5d, 0x4b, 0x7a, 0xf3, 0xae, - 0x25, 0xfd, 0xeb, 0x5d, 0x4b, 0x7a, 0xfd, 0xbe, 0x75, 0xe5, 0xcd, 0xfb, 0xd6, 0x95, 0x7f, 0xbe, - 0x6f, 0x5d, 0x79, 0xf6, 0xd0, 0xb4, 0xf0, 0xd9, 0x74, 0xa8, 0xea, 0xce, 0xb8, 0x4b, 0xa4, 0xdd, - 0xb1, 0x11, 0xbe, 0x70, 0xdc, 0x5f, 0xb1, 0xd5, 0x08, 0x19, 0x26, 0x72, 0xbb, 0x97, 0xa1, 0x7f, - 0xd6, 0x92, 0xff, 0x22, 0x93, 0x7f, 0xd7, 0x76, 0xcf, 0xf7, 0x86, 0x8b, 0x64, 0x04, 0xbe, 0xfb, - 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xec, 0x1f, 0x6a, 0x9e, 0x95, 0x1e, 0x00, 0x00, + // 1930 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x59, 0x4f, 0x6f, 0x1b, 0x4d, + 0x19, 0xef, 0xda, 0x4e, 0x6c, 0x3f, 0x4e, 0xd3, 0x74, 0xd3, 0x37, 0xaf, 0xbb, 0x69, 0x1c, 0xd7, + 0xef, 0x1b, 0xde, 0x34, 0x4d, 0xd7, 0x4a, 0x0a, 0xaa, 0x5a, 0x84, 0x4a, 0x92, 0xaa, 0x22, 0x48, + 0x2e, 0xc8, 0x0d, 0x42, 0x54, 0x20, 0x6b, 0xbd, 0x3b, 0xd9, 0x6c, 0xb1, 0x77, 0xad, 0xdd, 0x71, + 0x92, 0x0a, 0x84, 0x54, 0xc4, 0x07, 0xe8, 0x19, 0x71, 0xe0, 0x23, 0x20, 0xbe, 0x02, 0x17, 0x8e, + 0xbd, 0x20, 0xb8, 0x15, 0xb5, 0x48, 0x7c, 0x03, 0x4e, 0x1c, 0xd0, 0xce, 0xcc, 0x8e, 0x77, 0xf6, + 0xbf, 0x5b, 0x7a, 0x89, 0x32, 0xcf, 0xfc, 0xe6, 0xf9, 0x3b, 0xf3, 0xfc, 0x59, 0xc3, 0xba, 0x8b, + 0x4c, 0x64, 0x77, 0x91, 0xee, 0xe8, 0x2e, 0x32, 0x2c, 0xdc, 0x3d, 0xdf, 0xeb, 0xe2, 0x4b, 0x75, + 0xe2, 0x3a, 0xd8, 0x91, 0x65, 0xb2, 0xa9, 0xf2, 0x4d, 0xf5, 0x7c, 0x4f, 0x69, 0xe9, 0x8e, 0x37, + 0x76, 0xbc, 0xee, 0x50, 0xf3, 0x50, 0xf7, 0x7c, 0x6f, 0x88, 0xb0, 0xb6, 0xd7, 0xd5, 0x1d, 0xcb, + 0xa6, 0x67, 0x94, 0x2f, 0xd9, 0xfe, 0xd8, 0x33, 0x7d, 0x5e, 0x63, 0xcf, 0x64, 0x1b, 0x37, 0x4c, + 0xc7, 0x74, 0xc8, 0xbf, 0x5d, 0xff, 0x3f, 0x46, 0xdd, 0x34, 0x1d, 0xc7, 0x1c, 0xa1, 0x2e, 0x59, + 0x0d, 0xa7, 0xa7, 0x5d, 0x6c, 0x8d, 0x91, 0x87, 0xb5, 0xf1, 0x84, 0x01, 0x5a, 0x09, 0x0a, 0x7a, + 0x58, 0xc3, 0x28, 0x63, 0x1f, 0xbf, 0x9a, 0x20, 0x8f, 0xee, 0x77, 0x5e, 0x4b, 0xb0, 0xd2, 0xf3, + 0xcc, 0x03, 0xc3, 0x38, 0x22, 0xfb, 0x27, 0xaf, 0x26, 0x48, 0xbe, 0x05, 0x75, 0x6d, 0x8a, 0xcf, + 0x1c, 0xd7, 0xc2, 0xaf, 0x9a, 0x52, 0x5b, 0xda, 0xae, 0xf7, 0x67, 0x04, 0xf9, 0x31, 0x34, 0x28, + 0xaf, 0x81, 0xcf, 0xa8, 0x59, 0x6a, 0x4b, 0xdb, 0x8d, 0xfd, 0x96, 0x1a, 0x77, 0x86, 0x3a, 0x63, + 0xd9, 0x07, 0x9d, 0xff, 0xff, 0x68, 0xf9, 0xb7, 0xff, 0xfe, 0xd3, 0xce, 0x8c, 0x61, 0x47, 0x81, + 0x66, 0x54, 0x85, 0x3e, 0xf2, 0x26, 0x8e, 0xed, 0xa1, 0xce, 0x5f, 0x24, 0x58, 0xee, 0x79, 0xe6, + 0x91, 0x8b, 0x34, 0x8c, 0x8e, 0x46, 0x9a, 0xe7, 0xc9, 0x37, 0x60, 0x41, 0x33, 0xc6, 0x96, 0xcd, + 0x34, 0xa3, 0x0b, 0xb9, 0x09, 0x55, 0xcb, 0xf3, 0xa6, 0xc8, 0xf5, 0x9a, 0xa5, 0x76, 0x79, 0xbb, + 0xde, 0x0f, 0x96, 0xb2, 0x02, 0xb5, 0x31, 0xc2, 0x9a, 0xa1, 0x61, 0xad, 0x59, 0x26, 0x47, 0xf8, + 0x5a, 0xde, 0x05, 0x39, 0x64, 0xcb, 0x40, 0x1b, 0x0e, 0x5d, 0x74, 0xde, 0xac, 0x10, 0xd4, 0xca, + 0x4c, 0xe5, 0x03, 0x42, 0x97, 0xef, 0x42, 0xf9, 0x14, 0xa1, 0xe6, 0x02, 0xb1, 0xf8, 0xa6, 0x4a, + 0x43, 0xa9, 0xfa, 0xa1, 0x56, 0x59, 0xa8, 0xd5, 0x23, 0xc7, 0xb2, 0xfb, 0x3e, 0xea, 0x11, 0xf8, + 0x56, 0x52, 0xe5, 0x3a, 0xf7, 0x61, 0x4d, 0x34, 0x22, 0xb0, 0x4f, 0xbe, 0x09, 0x35, 0xdd, 0x27, + 0x0c, 0x2c, 0x83, 0xd9, 0x53, 0x25, 0xeb, 0x63, 0xa3, 0xf3, 0x67, 0x1a, 0x1a, 0x7a, 0xea, 0xc7, + 0xae, 0xf3, 0x12, 0xe9, 0x38, 0xc5, 0xf8, 0x30, 0x97, 0x92, 0xc0, 0x25, 0xd3, 0xfa, 0x0e, 0x2c, + 0xbd, 0x9c, 0xba, 0x96, 0x67, 0x58, 0x3a, 0xb6, 0x1c, 0x9b, 0xd9, 0x2d, 0xd0, 0xe4, 0xdb, 0xb0, + 0xe4, 0xa2, 0x53, 0xe4, 0x22, 0x5b, 0x47, 0x3e, 0xfb, 0x05, 0x82, 0x69, 0x70, 0xda, 0xb1, 0x21, + 0x58, 0xfa, 0x90, 0xc4, 0x52, 0xd0, 0x99, 0xdb, 0xba, 0x01, 0x30, 0xa1, 0xa4, 0x99, 0xb5, 0x75, + 0x46, 0x39, 0x36, 0x3a, 0xff, 0x2d, 0x85, 0x42, 0x7d, 0xa8, 0x61, 0xfd, 0x4c, 0x5e, 0x83, 0x45, + 0x1a, 0x45, 0x86, 0x66, 0xab, 0x08, 0xa7, 0x52, 0x84, 0x93, 0xfc, 0x3d, 0xa8, 0xf9, 0x40, 0xcd, + 0xd6, 0x51, 0xb3, 0xdc, 0x2e, 0x6f, 0x37, 0xf6, 0x6f, 0x27, 0x5d, 0x4f, 0x22, 0xe3, 0x98, 0x01, + 0xfb, 0xfc, 0x88, 0xe0, 0xb2, 0x4a, 0xc4, 0x65, 0x8f, 0x01, 0x3c, 0xac, 0xb9, 0x78, 0x60, 0x68, + 0x38, 0xb8, 0x09, 0x8a, 0x4a, 0x5f, 0xa9, 0x1a, 0xbc, 0x52, 0xf5, 0x24, 0x78, 0xa5, 0x87, 0x95, + 0x37, 0xef, 0x36, 0xa5, 0x7e, 0x9d, 0x9c, 0x79, 0xa2, 0x61, 0x24, 0x7f, 0x17, 0x6a, 0xc8, 0x36, + 0xe8, 0xf1, 0xc5, 0x82, 0xc7, 0xab, 0xc8, 0x36, 0xc8, 0x61, 0x19, 0x2a, 0xce, 0x04, 0xd9, 0xcd, + 0x6a, 0x5b, 0xda, 0xae, 0xf5, 0xc9, 0xff, 0xf2, 0x43, 0xa8, 0x3b, 0xae, 0x65, 0x5a, 0xf6, 0x00, + 0x5f, 0x36, 0x6b, 0x84, 0xe3, 0xad, 0x24, 0x6b, 0x7f, 0x44, 0x40, 0x27, 0x97, 0xfd, 0x9a, 0xc3, + 0xfe, 0x7b, 0xd4, 0xf0, 0x03, 0xc7, 0x7c, 0xda, 0x79, 0x18, 0xba, 0xa3, 0xc4, 0x33, 0x3c, 0x6e, + 0x9b, 0xd0, 0x18, 0xfa, 0x84, 0x81, 0x81, 0x6c, 0x67, 0xcc, 0x42, 0x01, 0x84, 0xf4, 0xc4, 0xa7, + 0x74, 0xfe, 0x26, 0xc1, 0x6a, 0xcf, 0x33, 0x7b, 0x96, 0x8d, 0xc9, 0x49, 0xfa, 0x8e, 0xbd, 0xd4, + 0xf0, 0x45, 0x18, 0x96, 0xa2, 0x0c, 0x3f, 0x35, 0x80, 0x82, 0x4b, 0x2a, 0x1f, 0xef, 0x92, 0x0d, + 0x58, 0x4f, 0x30, 0x8b, 0xe7, 0xa6, 0x13, 0x58, 0xea, 0x79, 0xe6, 0x73, 0xa4, 0x8d, 0xb2, 0x6f, + 0x6b, 0x9e, 0xb9, 0xa2, 0xd0, 0x35, 0xb8, 0x11, 0xe6, 0xca, 0xa5, 0xfd, 0xa7, 0x04, 0x55, 0xb2, + 0x61, 0x1b, 0xbe, 0x24, 0x0f, 0xd9, 0xc6, 0x4c, 0x12, 0x5d, 0xf9, 0x89, 0xdb, 0x45, 0xba, 0x35, + 0xb1, 0x90, 0x8d, 0x83, 0x67, 0xc1, 0x09, 0xf2, 0x01, 0x54, 0xa9, 0xed, 0x1e, 0x73, 0xea, 0x37, + 0x49, 0x4e, 0x61, 0x32, 0x54, 0xff, 0x4f, 0x60, 0x71, 0x70, 0x4e, 0xf9, 0x97, 0x04, 0x8d, 0xd0, + 0x46, 0xee, 0xd5, 0x90, 0xbf, 0x81, 0x6b, 0xd8, 0xd5, 0x0c, 0x6d, 0x38, 0x42, 0x03, 0x6d, 0xec, + 0x4c, 0xb9, 0x5e, 0xcb, 0x01, 0xf9, 0x80, 0x50, 0xe5, 0x2d, 0x58, 0x76, 0x11, 0xb6, 0x5c, 0x64, + 0x04, 0x38, 0x9a, 0xad, 0xae, 0x32, 0x2a, 0x83, 0x3d, 0x80, 0x2f, 0x29, 0x61, 0x8c, 0x6c, 0x3c, + 0x48, 0xc8, 0x5e, 0x6b, 0xb3, 0xed, 0x1f, 0x86, 0xf3, 0xd8, 0x5d, 0xb8, 0x1e, 0x3a, 0xe8, 0x22, + 0xcd, 0x73, 0x6c, 0x96, 0xcc, 0x56, 0x66, 0x1b, 0x7d, 0x42, 0x67, 0x01, 0xa1, 0x4e, 0xed, 0x5c, + 0x87, 0x6b, 0xcc, 0x27, 0x3c, 0x16, 0x7f, 0x94, 0xa0, 0xde, 0xf3, 0xcc, 0x3e, 0x39, 0xe7, 0xe7, + 0x64, 0xe7, 0xc2, 0xe6, 0xc1, 0xa0, 0x0b, 0xf9, 0x3b, 0x33, 0x6f, 0x97, 0x88, 0xb7, 0xd7, 0xd3, + 0x4b, 0xe4, 0xcc, 0xc3, 0xb1, 0x9c, 0x5c, 0x4e, 0xc8, 0xc9, 0x6b, 0xb0, 0xc8, 0x0c, 0xa0, 0x36, + 0xb3, 0x15, 0x4b, 0xc4, 0x44, 0x7c, 0x67, 0x15, 0xae, 0x73, 0x0d, 0xb9, 0xde, 0xbf, 0x26, 0x6a, + 0x1f, 0xf9, 0x8f, 0x64, 0xf4, 0xff, 0x55, 0x7b, 0xa6, 0x52, 0x39, 0x47, 0x25, 0x2a, 0x9d, 0xab, + 0xe4, 0x90, 0xd4, 0xf1, 0x93, 0x89, 0x11, 0x94, 0xc6, 0x03, 0x52, 0xd1, 0xe6, 0xae, 0x73, 0xeb, + 0x50, 0xb7, 0xd1, 0xc5, 0x80, 0x1e, 0x62, 0x85, 0xce, 0x46, 0x17, 0x84, 0x9b, 0x50, 0xa1, 0xe8, + 0xa3, 0x8e, 0x0a, 0xe4, 0xfa, 0xfc, 0x41, 0x82, 0x2f, 0xc4, 0xfd, 0x63, 0xd6, 0x47, 0xcc, 0xad, + 0xd2, 0x26, 0x34, 0x34, 0xc3, 0x18, 0x04, 0x6d, 0x49, 0x99, 0xb4, 0x25, 0xa0, 0x19, 0x46, 0xc0, + 0x91, 0xdc, 0xf9, 0xb1, 0x73, 0x8e, 0x38, 0xa6, 0x42, 0x30, 0x57, 0x29, 0x95, 0xc1, 0x04, 0xed, + 0x37, 0x61, 0x23, 0x51, 0x3b, 0xae, 0xff, 0x25, 0x49, 0xe3, 0x21, 0x40, 0x2f, 0x28, 0x5d, 0x73, + 0xeb, 0x7f, 0x1b, 0x96, 0x7c, 0x97, 0x46, 0xda, 0x87, 0x86, 0x8d, 0x2e, 0x02, 0x9e, 0x82, 0x6a, + 0x6d, 0x68, 0x25, 0x4b, 0xe6, 0xba, 0x4d, 0x43, 0xae, 0x65, 0xcd, 0x41, 0x56, 0xb4, 0x73, 0xaa, + 0x7c, 0xe1, 0x88, 0x87, 0x7d, 0x16, 0x16, 0xcb, 0xf5, 0xfa, 0x0d, 0x69, 0x5a, 0x04, 0x40, 0x8e, + 0xd7, 0x72, 0x54, 0x9b, 0xd3, 0x73, 0x1d, 0x68, 0xa7, 0xc9, 0xe7, 0x3a, 0xfe, 0x9e, 0xa6, 0x9c, + 0x43, 0xd7, 0x32, 0xcc, 0xb4, 0x94, 0xb3, 0x06, 0x8b, 0x58, 0x73, 0x4d, 0x14, 0xe4, 0x58, 0xb6, + 0x12, 0xcb, 0x42, 0x39, 0x5a, 0x16, 0x42, 0x2f, 0xbe, 0x52, 0xfc, 0xc5, 0x0b, 0x2f, 0xfb, 0xb5, + 0x14, 0xba, 0x75, 0xa4, 0x6c, 0x71, 0xff, 0x7d, 0x74, 0x0f, 0x50, 0xc0, 0x87, 0x42, 0xdd, 0x0c, + 0x5f, 0x3f, 0x41, 0x05, 0xee, 0x42, 0x9a, 0x7f, 0xa8, 0x07, 0x39, 0xf1, 0x5d, 0x85, 0x74, 0xd9, + 0x01, 0x55, 0x47, 0xd6, 0x39, 0x4a, 0x55, 0x3a, 0xe3, 0xb1, 0x3c, 0x85, 0x2a, 0x8b, 0x3f, 0xd1, + 0xb4, 0xb1, 0xbf, 0x9b, 0x52, 0x5c, 0x05, 0x49, 0x6a, 0xd0, 0x23, 0x07, 0x87, 0xe5, 0xef, 0xc3, + 0x02, 0x71, 0x02, 0xeb, 0x5b, 0x76, 0x0a, 0x71, 0xa1, 0x9d, 0x02, 0x3d, 0x28, 0x76, 0x3f, 0x0b, + 0xf3, 0x74, 0x3f, 0xca, 0xdf, 0x25, 0x58, 0xa0, 0xbd, 0x8c, 0x70, 0x65, 0xa4, 0xe8, 0x95, 0x59, + 0x83, 0x45, 0xa1, 0x98, 0xb3, 0x55, 0xa4, 0x3b, 0x2e, 0x7f, 0x5a, 0x77, 0x5c, 0x99, 0xb7, 0x3b, + 0x0e, 0xf7, 0xed, 0x0b, 0x62, 0xdf, 0xae, 0x8c, 0xa0, 0x1a, 0x8c, 0x50, 0xd1, 0x89, 0x46, 0x8a, + 0x4d, 0x34, 0xb1, 0x22, 0x5c, 0x4a, 0x28, 0xc2, 0x19, 0x83, 0x95, 0x78, 0x31, 0x5f, 0x90, 0xec, + 0x22, 0x04, 0xac, 0x70, 0x6b, 0x9d, 0x93, 0x68, 0x3a, 0x3f, 0x07, 0x99, 0x8d, 0xce, 0xfe, 0x35, + 0x24, 0xcd, 0xbb, 0xe3, 0xe6, 0xcc, 0xef, 0x4d, 0xf2, 0xde, 0x7d, 0x20, 0xbf, 0xc3, 0x74, 0x19, + 0x1b, 0xcc, 0x6f, 0x81, 0x12, 0xe7, 0xce, 0x5f, 0x0e, 0x22, 0x85, 0xf4, 0x39, 0xc2, 0xe1, 0xdd, + 0x83, 0xd1, 0xc8, 0xb9, 0x18, 0x59, 0x1e, 0xce, 0x57, 0x02, 0xd9, 0x7e, 0xfb, 0x47, 0x8d, 0xaa, + 0xf5, 0x83, 0x65, 0x4c, 0x89, 0x2d, 0xf8, 0x2a, 0x43, 0x0c, 0xd7, 0x66, 0x40, 0x6a, 0x4b, 0x9f, + 0x14, 0xce, 0xcf, 0xe2, 0x0c, 0x5a, 0x45, 0xe2, 0x02, 0xb8, 0x06, 0x36, 0x49, 0x2f, 0xa1, 0xfa, + 0xf7, 0x14, 0xe5, 0x7d, 0x4a, 0x61, 0x1f, 0x14, 0x4a, 0x85, 0x3e, 0x28, 0x44, 0x15, 0x5a, 0x87, + 0x9b, 0x31, 0x79, 0x5c, 0x19, 0x33, 0xf8, 0xa6, 0x42, 0x3c, 0x85, 0x0c, 0x7a, 0xfd, 0x8e, 0xce, + 0x34, 0xcb, 0xce, 0xd1, 0x69, 0x03, 0x40, 0xf7, 0x61, 0x03, 0x5b, 0x1b, 0xa3, 0xe0, 0xc6, 0x11, + 0xca, 0x33, 0x6d, 0x1c, 0xd7, 0x82, 0xd6, 0xae, 0x44, 0x41, 0x5c, 0x99, 0x97, 0xe4, 0xa6, 0x50, + 0xd7, 0x7d, 0x6e, 0x7d, 0xe8, 0x75, 0x49, 0x93, 0xc5, 0x55, 0xd2, 0xc9, 0xec, 0x76, 0x38, 0x75, + 0xed, 0xbe, 0x9f, 0x19, 0xfd, 0x8c, 0x36, 0x9c, 0xba, 0xb3, 0x8a, 0xca, 0x56, 0xa9, 0x99, 0x2e, + 0xad, 0xdf, 0xa5, 0x2f, 0x9f, 0x1e, 0x66, 0xa3, 0x1c, 0x17, 0x12, 0x08, 0xdf, 0x7f, 0xb7, 0x0a, + 0xe5, 0x9e, 0x67, 0xca, 0xbf, 0x80, 0x46, 0xf8, 0xc3, 0x56, 0x27, 0x25, 0xd7, 0x87, 0x30, 0xca, + 0x4e, 0x3e, 0x86, 0x27, 0x17, 0x1d, 0xae, 0x8a, 0x1f, 0x8f, 0xbe, 0xce, 0x3c, 0xcc, 0x50, 0xca, + 0x6e, 0x11, 0x14, 0x17, 0xc2, 0x6d, 0xa0, 0x75, 0x23, 0xdb, 0x06, 0x82, 0xc9, 0xb1, 0x41, 0xfc, + 0xf6, 0x30, 0x82, 0x95, 0xd8, 0x67, 0x85, 0xb4, 0xb1, 0x35, 0x0a, 0x54, 0xba, 0x05, 0x81, 0x5c, + 0xda, 0x4f, 0xa1, 0x3e, 0x1b, 0xe7, 0xdb, 0xa9, 0xd3, 0x31, 0x43, 0x28, 0xdb, 0x79, 0x08, 0xce, + 0xf8, 0x07, 0x50, 0x21, 0x83, 0xfb, 0x7a, 0xc6, 0xc4, 0xad, 0x7c, 0x95, 0xb1, 0xc9, 0x39, 0x3d, + 0x83, 0x45, 0x36, 0x76, 0x6e, 0xa4, 0xc0, 0xe9, 0xb6, 0xb2, 0x95, 0xb9, 0x1d, 0xe6, 0xc7, 0xe6, + 0xc1, 0x34, 0x7e, 0x74, 0x3b, 0x95, 0x9f, 0x38, 0xcf, 0xf9, 0x01, 0x8b, 0x0d, 0x73, 0x69, 0x01, + 0x8b, 0x02, 0x53, 0x03, 0x96, 0x36, 0xad, 0xc9, 0x2e, 0xc8, 0x09, 0x93, 0xda, 0x9d, 0x7c, 0x36, + 0x0c, 0xaa, 0xec, 0x15, 0x86, 0x72, 0x99, 0x53, 0x58, 0x4d, 0x1a, 0xaf, 0x76, 0xf2, 0x39, 0x05, + 0x58, 0x65, 0xbf, 0x38, 0x36, 0x6e, 0xaa, 0x30, 0x39, 0x65, 0x9b, 0x1a, 0x86, 0xe6, 0x98, 0x9a, + 0x34, 0x18, 0xc9, 0xbf, 0x82, 0x2f, 0x92, 0xa7, 0xa2, 0xdd, 0x22, 0xbc, 0xb8, 0xb9, 0xdf, 0x9e, + 0x07, 0x1d, 0xf7, 0xb3, 0x38, 0x50, 0x64, 0xfb, 0x59, 0xc0, 0xe6, 0xf8, 0x39, 0x71, 0x4a, 0xf0, + 0x1f, 0x04, 0x1b, 0xb2, 0x36, 0x32, 0x7b, 0xef, 0xd4, 0x07, 0x21, 0x0e, 0x18, 0x7e, 0x16, 0x16, + 0x87, 0x8b, 0xaf, 0x8b, 0xb4, 0xf4, 0x4a, 0xa1, 0xf1, 0x21, 0x2c, 0x44, 0xfc, 0x09, 0x27, 0x4d, + 0x88, 0x80, 0x4a, 0x15, 0x92, 0xf8, 0x5b, 0x8c, 0xfc, 0x3b, 0x09, 0x9a, 0xa9, 0xed, 0x5e, 0x37, + 0x35, 0x79, 0x25, 0x1f, 0x50, 0x1e, 0xcc, 0x79, 0x80, 0xab, 0x61, 0xc1, 0xb5, 0x68, 0xc3, 0xfb, + 0xad, 0x0c, 0x3b, 0x42, 0x38, 0x45, 0x2d, 0x86, 0x0b, 0xbf, 0xb9, 0x84, 0x8e, 0xf2, 0x4e, 0x6a, + 0x66, 0x8d, 0x42, 0x53, 0xdf, 0x5c, 0x7a, 0x1b, 0x29, 0x9f, 0xc2, 0x72, 0xa4, 0x87, 0xdc, 0xca, + 0xcf, 0x16, 0x4f, 0x11, 0x52, 0xee, 0x15, 0x82, 0x85, 0xdf, 0x76, 0x72, 0x7b, 0x98, 0x71, 0x29, + 0xe2, 0xe8, 0xd4, 0xb7, 0x9d, 0xd9, 0x11, 0x92, 0xab, 0x94, 0xda, 0x0f, 0x76, 0x33, 0x9d, 0x96, + 0xa0, 0xc3, 0x83, 0x39, 0x0f, 0x84, 0xeb, 0xfd, 0xac, 0x05, 0x4c, 0xab, 0xf7, 0x1c, 0x91, 0x5a, + 0xef, 0x63, 0x1d, 0xde, 0xe1, 0xcf, 0xfe, 0xfa, 0xbe, 0x25, 0xbd, 0x7d, 0xdf, 0x92, 0xfe, 0xf9, + 0xbe, 0x25, 0xbd, 0xf9, 0xd0, 0xba, 0xf2, 0xf6, 0x43, 0xeb, 0xca, 0x3f, 0x3e, 0xb4, 0xae, 0xbc, + 0x78, 0x6c, 0x5a, 0xf8, 0x6c, 0x3a, 0x54, 0x75, 0x67, 0xdc, 0x25, 0xdc, 0xee, 0xd9, 0x08, 0x5f, + 0x38, 0xee, 0x2f, 0xd9, 0x6a, 0x84, 0x0c, 0x13, 0xb9, 0xdd, 0xcb, 0xd0, 0x4f, 0xb6, 0xe4, 0xb7, + 0x64, 0xf2, 0xa3, 0x6d, 0xf7, 0x7c, 0x6f, 0xb8, 0x48, 0x06, 0xe1, 0xfb, 0xff, 0x0b, 0x00, 0x00, + 0xff, 0xff, 0x04, 0x4e, 0xda, 0x55, 0x9b, 0x1e, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -6151,10 +6150,10 @@ func (m *MsgBurnRegen) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x12 } - if len(m.From) > 0 { - i -= len(m.From) - copy(dAtA[i:], m.From) - i = encodeVarintTx(dAtA, i, uint64(len(m.From))) + if len(m.Burner) > 0 { + i -= len(m.Burner) + copy(dAtA[i:], m.Burner) + i = encodeVarintTx(dAtA, i, uint64(len(m.Burner))) i-- dAtA[i] = 0xa } @@ -7034,7 +7033,7 @@ func (m *MsgBurnRegen) Size() (n int) { } var l int _ = l - l = len(m.From) + l = len(m.Burner) if l > 0 { n += 1 + l + sovTx(uint64(l)) } @@ -12589,7 +12588,7 @@ func (m *MsgBurnRegen) Unmarshal(dAtA []byte) error { switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field From", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Burner", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -12617,7 +12616,7 @@ func (m *MsgBurnRegen) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.From = string(dAtA[iNdEx:postIndex]) + m.Burner = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { From 68df7d7eb5a4b5f14bdd64db08d69a133f2736df Mon Sep 17 00:00:00 2001 From: Aaron Craelius Date: Tue, 12 Dec 2023 16:47:08 -0500 Subject: [PATCH 3/5] nl --- x/ecocredit/base/keeper/features/msg_burn_regen.feature | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x/ecocredit/base/keeper/features/msg_burn_regen.feature b/x/ecocredit/base/keeper/features/msg_burn_regen.feature index e7ce33ff95..2e443ecf13 100644 --- a/x/ecocredit/base/keeper/features/msg_burn_regen.feature +++ b/x/ecocredit/base/keeper/features/msg_burn_regen.feature @@ -20,4 +20,4 @@ Feature: Msg/Regen "reason":"for selling credits" } """ - And expect no error \ No newline at end of file + And expect no error From cdadbd0f0bde880be50c11767bca7aabc9fb3779 Mon Sep 17 00:00:00 2001 From: Aaron Craelius Date: Mon, 29 Jan 2024 12:22:02 -0500 Subject: [PATCH 4/5] lint --- x/ecocredit/base/types/v1/msg_burn_regen.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/x/ecocredit/base/types/v1/msg_burn_regen.go b/x/ecocredit/base/types/v1/msg_burn_regen.go index c3d7feed64..bfe455478d 100644 --- a/x/ecocredit/base/types/v1/msg_burn_regen.go +++ b/x/ecocredit/base/types/v1/msg_burn_regen.go @@ -21,13 +21,13 @@ func (m *MsgBurnRegen) ValidateBasic() error { if !amount.IsPositive() { return sdkerrors.ErrInvalidRequest.Wrapf("amount must be positive: %s", m.Amount) } - if len(m.Reason) > MAX_REASON_LEN { + if len(m.Reason) > MaxReasonLen { return sdkerrors.ErrInvalidRequest.Wrapf("reason must at most 256 characters long") } return nil } -const MAX_REASON_LEN = 256 +const MaxReasonLen = 256 // GetSigners returns the expected signers for MsgBurnRegen. func (m *MsgBurnRegen) GetSigners() []sdk.AccAddress { From 5064ed4cac4c2c5664be8a5c1a2de4416f74d45a Mon Sep 17 00:00:00 2001 From: Aaron Craelius Date: Mon, 29 Jan 2024 12:40:51 -0500 Subject: [PATCH 5/5] disable depguard linter --- .golangci.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.golangci.yml b/.golangci.yml index ef68da64eb..e6193896c9 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -5,7 +5,6 @@ linters: disable-all: true enable: - bodyclose - - depguard - dogsled - errcheck - exportloopref