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 diff --git a/api/regen/ecocredit/v1/events.pulsar.go b/api/regen/ecocredit/v1/events.pulsar.go index 852c39bc74..9582938c32 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_burner 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_burner = md_EventBurnRegen.Fields().ByName("burner") + 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.Burner != "" { + value := protoreflect.ValueOfString(x.Burner) + if !f(fd_EventBurnRegen_burner, 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.burner": + return x.Burner != "" + 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.burner": + x.Burner = "" + 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.burner": + value := x.Burner + 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.burner": + x.Burner = 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.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": + 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.burner": + 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.Burner) + 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.Burner) > 0 { + i -= len(x.Burner) + copy(dAtA[i:], x.Burner) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Burner))) + 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 Burner", 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.Burner = 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 + + // 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. + 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) GetBurner() string { + if x != nil { + return x.Burner + } + 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,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, 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 ( @@ -10166,7 +10775,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 +10795,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 +11032,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 +11051,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..a6bc8bcbf2 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_burner 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_burner = md_MsgBurnRegen.Fields().ByName("burner") + 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.Burner != "" { + value := protoreflect.ValueOfString(x.Burner) + if !f(fd_MsgBurnRegen_burner, 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.burner": + return x.Burner != "" + 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.burner": + x.Burner = "" + 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.burner": + value := x.Burner + 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.burner": + x.Burner = 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.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": + 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.burner": + 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.Burner) + 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.Burner) > 0 { + i -= len(x.Burner) + copy(dAtA[i:], x.Burner) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Burner))) + 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 Burner", 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.Burner = 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 + + // 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 + // 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) GetBurner() string { + if x != nil { + return x.Burner + } + 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,174 +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, 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, + 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, - 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, 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, + 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, 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, 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, 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, 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, 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, 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, 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, + 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, 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, + 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, 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, + 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, - 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, + 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, 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, + 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, 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, + 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, 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, 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, + 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, 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, 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, + 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, 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, 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, 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 ( @@ -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..d8ebfe83bd 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 { + // burner is the address that burned REGEN. + string burner = 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..ef5a5943ce 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) = "burner"; + + // 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; + + // 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/features/msg_burn_regen.feature b/x/ecocredit/base/keeper/features/msg_burn_regen.feature new file mode 100644 index 0000000000..2e443ecf13 --- /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 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..0e33658e67 --- /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.Burner) + 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{ + Burner: regen.Burner, + Amount: regen.Amount, + Reason: regen.Reason, + }) + + return &types.MsgBurnRegenResponse{}, err +} 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 9df435e397..09ca58e555 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 { + // 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. + 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) GetBurner() string { + if m != nil { + return m.Burner + } + 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 + // 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, 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, + 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) { @@ -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.Burner) > 0 { + i -= len(m.Burner) + copy(dAtA[i:], m.Burner) + i = encodeVarintEvents(dAtA, i, uint64(len(m.Burner))) + 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.Burner) + 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 Burner", 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.Burner = 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/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_regen.go b/x/ecocredit/base/types/v1/msg_burn_regen.go new file mode 100644 index 0000000000..bfe455478d --- /dev/null +++ b/x/ecocredit/base/types/v1/msg_burn_regen.go @@ -0,0 +1,47 @@ +package v1 + +import ( + "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" +) + +var _ legacytx.LegacyMsg = &MsgBurnRegen{} + +// ValidateBasic does a sanity check on the provided data. +func (m *MsgBurnRegen) ValidateBasic() error { + if _, err := sdk.AccAddressFromBech32(m.Burner); err != nil { + return err + } + amount, ok := math.NewIntFromString(m.Amount) + if !ok { + return sdkerrors.ErrInvalidRequest.Wrapf("invalid amount: %s", m.Amount) + } + if !amount.IsPositive() { + return sdkerrors.ErrInvalidRequest.Wrapf("amount must be positive: %s", m.Amount) + } + if len(m.Reason) > MaxReasonLen { + return sdkerrors.ErrInvalidRequest.Wrapf("reason must at most 256 characters long") + } + return nil +} + +const MaxReasonLen = 256 + +// GetSigners returns the expected signers for MsgBurnRegen. +func (m *MsgBurnRegen) GetSigners() []sdk.AccAddress { + addr := sdk.MustAccAddressFromBech32(m.Burner) + 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/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 d304a54675..e09ad1c151 100644 --- a/x/ecocredit/base/types/v1/tx.pb.go +++ b/x/ecocredit/base/types/v1/tx.pb.go @@ -2822,6 +2822,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 { + // 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 + // 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) GetBurner() string { + if m != nil { + return m.Burner + } + 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 +2978,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, + // 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. @@ -3134,6 +3245,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 +3466,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 +3601,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 +3680,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 +4102,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 +4216,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 +6116,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.Burner) > 0 { + i -= len(m.Burner) + copy(dAtA[i:], m.Burner) + i = encodeVarintTx(dAtA, i, uint64(len(m.Burner))) + 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 +7027,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.Burner) + 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 +12557,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 Burner", 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.Burner = 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