From 41536786982af830e34c8273cc38ad94523ef054 Mon Sep 17 00:00:00 2001 From: John Letey Date: Mon, 13 May 2024 13:25:00 +0200 Subject: [PATCH] feat: implement allowed denoms --- .../unreleased/features/13-allowed-denoms.md | 1 + .../forwarding/module/v1/module.pulsar.go | 122 +- api/noble/forwarding/v1/genesis.pulsar.go | 346 +++-- api/noble/forwarding/v1/query.pulsar.go | 1258 ++++++++++++++--- api/noble/forwarding/v1/query_grpc.pb.go | 37 + api/noble/forwarding/v1/tx.pulsar.go | 1093 +++++++++++++- api/noble/forwarding/v1/tx_grpc.pb.go | 41 +- e2e/forwarding_test.go | 105 +- local.sh | 2 + proto/noble/forwarding/module/v1/module.proto | 3 + proto/noble/forwarding/v1/genesis.proto | 7 +- proto/noble/forwarding/v1/query.proto | 11 + proto/noble/forwarding/v1/tx.proto | 15 + simapp/app.yaml | 3 + x/forwarding/genesis.go | 5 + x/forwarding/keeper/keeper.go | 22 + x/forwarding/keeper/msg_server.go | 23 + x/forwarding/keeper/query_server.go | 10 + x/forwarding/keeper/state.go | 11 + x/forwarding/module.go | 21 + x/forwarding/types/codec.go | 8 +- x/forwarding/types/errors.go | 8 + x/forwarding/types/genesis.go | 24 +- x/forwarding/types/genesis.pb.go | 107 +- x/forwarding/types/keys.go | 1 + x/forwarding/types/query.pb.go | 445 +++++- x/forwarding/types/query.pb.gw.go | 65 + x/forwarding/types/tx.pb.go | 431 +++++- 28 files changed, 3772 insertions(+), 453 deletions(-) create mode 100644 .changelog/unreleased/features/13-allowed-denoms.md create mode 100644 x/forwarding/types/errors.go diff --git a/.changelog/unreleased/features/13-allowed-denoms.md b/.changelog/unreleased/features/13-allowed-denoms.md new file mode 100644 index 0000000..36e1ef1 --- /dev/null +++ b/.changelog/unreleased/features/13-allowed-denoms.md @@ -0,0 +1 @@ +- Allow fine-tuned control over which denoms are forwarded. ([#13](https://github.com/noble-assets/forwarding/pull/13)) diff --git a/api/noble/forwarding/module/v1/module.pulsar.go b/api/noble/forwarding/module/v1/module.pulsar.go index e7046e3..3fdde88 100644 --- a/api/noble/forwarding/module/v1/module.pulsar.go +++ b/api/noble/forwarding/module/v1/module.pulsar.go @@ -14,12 +14,14 @@ import ( ) var ( - md_Module protoreflect.MessageDescriptor + md_Module protoreflect.MessageDescriptor + fd_Module_authority protoreflect.FieldDescriptor ) func init() { file_noble_forwarding_module_v1_module_proto_init() md_Module = File_noble_forwarding_module_v1_module_proto.Messages().ByName("Module") + fd_Module_authority = md_Module.Fields().ByName("authority") } var _ protoreflect.Message = (*fastReflection_Module)(nil) @@ -87,6 +89,12 @@ func (x *fastReflection_Module) Interface() protoreflect.ProtoMessage { // While iterating, mutating operations may only be performed // on the current field descriptor. func (x *fastReflection_Module) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Authority != "" { + value := protoreflect.ValueOfString(x.Authority) + if !f(fd_Module_authority, value) { + return + } + } } // Has reports whether a field is populated. @@ -102,6 +110,8 @@ func (x *fastReflection_Module) Range(f func(protoreflect.FieldDescriptor, proto // a repeated field is populated if it is non-empty. func (x *fastReflection_Module) Has(fd protoreflect.FieldDescriptor) bool { switch fd.FullName() { + case "noble.forwarding.module.v1.Module.authority": + return x.Authority != "" default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: noble.forwarding.module.v1.Module")) @@ -118,6 +128,8 @@ func (x *fastReflection_Module) Has(fd protoreflect.FieldDescriptor) bool { // Clear is a mutating operation and unsafe for concurrent use. func (x *fastReflection_Module) Clear(fd protoreflect.FieldDescriptor) { switch fd.FullName() { + case "noble.forwarding.module.v1.Module.authority": + x.Authority = "" default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: noble.forwarding.module.v1.Module")) @@ -134,6 +146,9 @@ func (x *fastReflection_Module) Clear(fd protoreflect.FieldDescriptor) { // of the value; to obtain a mutable reference, use Mutable. func (x *fastReflection_Module) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { switch descriptor.FullName() { + case "noble.forwarding.module.v1.Module.authority": + value := x.Authority + return protoreflect.ValueOfString(value) default: if descriptor.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: noble.forwarding.module.v1.Module")) @@ -154,6 +169,8 @@ func (x *fastReflection_Module) Get(descriptor protoreflect.FieldDescriptor) pro // Set is a mutating operation and unsafe for concurrent use. func (x *fastReflection_Module) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { switch fd.FullName() { + case "noble.forwarding.module.v1.Module.authority": + x.Authority = value.Interface().(string) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: noble.forwarding.module.v1.Module")) @@ -174,6 +191,8 @@ func (x *fastReflection_Module) Set(fd protoreflect.FieldDescriptor, value proto // Mutable is a mutating operation and unsafe for concurrent use. func (x *fastReflection_Module) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { + case "noble.forwarding.module.v1.Module.authority": + panic(fmt.Errorf("field authority of message noble.forwarding.module.v1.Module is not mutable")) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: noble.forwarding.module.v1.Module")) @@ -187,6 +206,8 @@ func (x *fastReflection_Module) Mutable(fd protoreflect.FieldDescriptor) protore // For lists, maps, and messages, this returns a new, empty, mutable value. func (x *fastReflection_Module) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { + case "noble.forwarding.module.v1.Module.authority": + return protoreflect.ValueOfString("") default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: noble.forwarding.module.v1.Module")) @@ -256,6 +277,10 @@ func (x *fastReflection_Module) ProtoMethods() *protoiface.Methods { var n int var l int _ = l + l = len(x.Authority) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } if x.unknownFields != nil { n += len(x.unknownFields) } @@ -285,6 +310,13 @@ func (x *fastReflection_Module) ProtoMethods() *protoiface.Methods { i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } + if len(x.Authority) > 0 { + i -= len(x.Authority) + copy(dAtA[i:], x.Authority) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Authority))) + i-- + dAtA[i] = 0xa + } if input.Buf != nil { input.Buf = append(input.Buf, dAtA...) } else { @@ -334,6 +366,38 @@ func (x *fastReflection_Module) ProtoMethods() *protoiface.Methods { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Module: 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 Authority", 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.Authority = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := runtime.Skip(dAtA[iNdEx:]) @@ -387,6 +451,9 @@ type Module struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // authority defines the custom module authority. + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` } func (x *Module) Reset() { @@ -409,6 +476,13 @@ func (*Module) Descriptor() ([]byte, []int) { return file_noble_forwarding_module_v1_module_proto_rawDescGZIP(), []int{0} } +func (x *Module) GetAuthority() string { + if x != nil { + return x.Authority + } + return "" +} + var File_noble_forwarding_module_v1_module_proto protoreflect.FileDescriptor var file_noble_forwarding_module_v1_module_proto_rawDesc = []byte{ @@ -418,28 +492,30 @@ var file_noble_forwarding_module_v1_module_proto_rawDesc = []byte{ 0x2e, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x1a, 0x20, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x44, 0x0a, 0x06, 0x4d, 0x6f, 0x64, 0x75, 0x6c, - 0x65, 0x3a, 0x3a, 0xba, 0xc0, 0x96, 0xda, 0x01, 0x34, 0x0a, 0x32, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2d, 0x61, 0x73, 0x73, 0x65, - 0x74, 0x73, 0x2f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x32, - 0x2f, 0x78, 0x2f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x87, 0x02, - 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2e, 0x66, 0x6f, 0x72, 0x77, - 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x76, 0x31, - 0x42, 0x0b, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, - 0x4d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6e, 0x6f, 0x62, 0x6c, - 0x65, 0x2d, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, - 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x32, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6e, 0x6f, 0x62, 0x6c, 0x65, - 0x2f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x6d, 0x6f, 0x64, 0x75, - 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x76, 0x31, 0xa2, 0x02, - 0x03, 0x4e, 0x46, 0x4d, 0xaa, 0x02, 0x1a, 0x4e, 0x6f, 0x62, 0x6c, 0x65, 0x2e, 0x46, 0x6f, 0x72, - 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x56, - 0x31, 0xca, 0x02, 0x1a, 0x4e, 0x6f, 0x62, 0x6c, 0x65, 0x5c, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, - 0x64, 0x69, 0x6e, 0x67, 0x5c, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, - 0x26, 0x4e, 0x6f, 0x62, 0x6c, 0x65, 0x5c, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, - 0x67, 0x5c, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x1d, 0x4e, 0x6f, 0x62, 0x6c, 0x65, 0x3a, - 0x3a, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x3a, 0x3a, 0x4d, 0x6f, 0x64, - 0x75, 0x6c, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x62, 0x0a, 0x06, 0x4d, 0x6f, 0x64, 0x75, 0x6c, + 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x3a, + 0x3a, 0xba, 0xc0, 0x96, 0xda, 0x01, 0x34, 0x0a, 0x32, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2d, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, + 0x2f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x32, 0x2f, 0x78, + 0x2f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x87, 0x02, 0x0a, 0x1e, + 0x63, 0x6f, 0x6d, 0x2e, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2e, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, + 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0b, + 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4d, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2d, + 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, + 0x67, 0x2f, 0x76, 0x32, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2f, 0x66, + 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, + 0x2f, 0x76, 0x31, 0x3b, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x4e, + 0x46, 0x4d, 0xaa, 0x02, 0x1a, 0x4e, 0x6f, 0x62, 0x6c, 0x65, 0x2e, 0x46, 0x6f, 0x72, 0x77, 0x61, + 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x56, 0x31, 0xca, + 0x02, 0x1a, 0x4e, 0x6f, 0x62, 0x6c, 0x65, 0x5c, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, + 0x6e, 0x67, 0x5c, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x26, 0x4e, + 0x6f, 0x62, 0x6c, 0x65, 0x5c, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5c, + 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x1d, 0x4e, 0x6f, 0x62, 0x6c, 0x65, 0x3a, 0x3a, 0x46, + 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x3a, 0x3a, 0x4d, 0x6f, 0x64, 0x75, 0x6c, + 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/api/noble/forwarding/v1/genesis.pulsar.go b/api/noble/forwarding/v1/genesis.pulsar.go index 7bb5576..e77dfe8 100644 --- a/api/noble/forwarding/v1/genesis.pulsar.go +++ b/api/noble/forwarding/v1/genesis.pulsar.go @@ -13,20 +13,66 @@ import ( sync "sync" ) -var _ protoreflect.Map = (*_GenesisState_1_map)(nil) +var _ protoreflect.List = (*_GenesisState_1_list)(nil) -type _GenesisState_1_map struct { +type _GenesisState_1_list struct { + list *[]string +} + +func (x *_GenesisState_1_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_GenesisState_1_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfString((*x.list)[i]) +} + +func (x *_GenesisState_1_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.String() + concreteValue := valueUnwrapped + (*x.list)[i] = concreteValue +} + +func (x *_GenesisState_1_list) Append(value protoreflect.Value) { + valueUnwrapped := value.String() + concreteValue := valueUnwrapped + *x.list = append(*x.list, concreteValue) +} + +func (x *_GenesisState_1_list) AppendMutable() protoreflect.Value { + panic(fmt.Errorf("AppendMutable can not be called on message GenesisState at list field AllowedDenoms as it is not of Message kind")) +} + +func (x *_GenesisState_1_list) Truncate(n int) { + *x.list = (*x.list)[:n] +} + +func (x *_GenesisState_1_list) NewElement() protoreflect.Value { + v := "" + return protoreflect.ValueOfString(v) +} + +func (x *_GenesisState_1_list) IsValid() bool { + return x.list != nil +} + +var _ protoreflect.Map = (*_GenesisState_2_map)(nil) + +type _GenesisState_2_map struct { m *map[string]uint64 } -func (x *_GenesisState_1_map) Len() int { +func (x *_GenesisState_2_map) Len() int { if x.m == nil { return 0 } return len(*x.m) } -func (x *_GenesisState_1_map) Range(f func(protoreflect.MapKey, protoreflect.Value) bool) { +func (x *_GenesisState_2_map) Range(f func(protoreflect.MapKey, protoreflect.Value) bool) { if x.m == nil { return } @@ -39,7 +85,7 @@ func (x *_GenesisState_1_map) Range(f func(protoreflect.MapKey, protoreflect.Val } } -func (x *_GenesisState_1_map) Has(key protoreflect.MapKey) bool { +func (x *_GenesisState_2_map) Has(key protoreflect.MapKey) bool { if x.m == nil { return false } @@ -49,7 +95,7 @@ func (x *_GenesisState_1_map) Has(key protoreflect.MapKey) bool { return ok } -func (x *_GenesisState_1_map) Clear(key protoreflect.MapKey) { +func (x *_GenesisState_2_map) Clear(key protoreflect.MapKey) { if x.m == nil { return } @@ -58,7 +104,7 @@ func (x *_GenesisState_1_map) Clear(key protoreflect.MapKey) { delete(*x.m, concreteKey) } -func (x *_GenesisState_1_map) Get(key protoreflect.MapKey) protoreflect.Value { +func (x *_GenesisState_2_map) Get(key protoreflect.MapKey) protoreflect.Value { if x.m == nil { return protoreflect.Value{} } @@ -71,7 +117,7 @@ func (x *_GenesisState_1_map) Get(key protoreflect.MapKey) protoreflect.Value { return protoreflect.ValueOfUint64(v) } -func (x *_GenesisState_1_map) Set(key protoreflect.MapKey, value protoreflect.Value) { +func (x *_GenesisState_2_map) Set(key protoreflect.MapKey, value protoreflect.Value) { if !key.IsValid() || !value.IsValid() { panic("invalid key or value provided") } @@ -82,33 +128,33 @@ func (x *_GenesisState_1_map) Set(key protoreflect.MapKey, value protoreflect.Va (*x.m)[concreteKey] = concreteValue } -func (x *_GenesisState_1_map) Mutable(key protoreflect.MapKey) protoreflect.Value { +func (x *_GenesisState_2_map) Mutable(key protoreflect.MapKey) protoreflect.Value { panic("should not call Mutable on protoreflect.Map whose value is not of type protoreflect.Message") } -func (x *_GenesisState_1_map) NewValue() protoreflect.Value { +func (x *_GenesisState_2_map) NewValue() protoreflect.Value { v := uint64(0) return protoreflect.ValueOfUint64(v) } -func (x *_GenesisState_1_map) IsValid() bool { +func (x *_GenesisState_2_map) IsValid() bool { return x.m != nil } -var _ protoreflect.Map = (*_GenesisState_2_map)(nil) +var _ protoreflect.Map = (*_GenesisState_3_map)(nil) -type _GenesisState_2_map struct { +type _GenesisState_3_map struct { m *map[string]uint64 } -func (x *_GenesisState_2_map) Len() int { +func (x *_GenesisState_3_map) Len() int { if x.m == nil { return 0 } return len(*x.m) } -func (x *_GenesisState_2_map) Range(f func(protoreflect.MapKey, protoreflect.Value) bool) { +func (x *_GenesisState_3_map) Range(f func(protoreflect.MapKey, protoreflect.Value) bool) { if x.m == nil { return } @@ -121,7 +167,7 @@ func (x *_GenesisState_2_map) Range(f func(protoreflect.MapKey, protoreflect.Val } } -func (x *_GenesisState_2_map) Has(key protoreflect.MapKey) bool { +func (x *_GenesisState_3_map) Has(key protoreflect.MapKey) bool { if x.m == nil { return false } @@ -131,7 +177,7 @@ func (x *_GenesisState_2_map) Has(key protoreflect.MapKey) bool { return ok } -func (x *_GenesisState_2_map) Clear(key protoreflect.MapKey) { +func (x *_GenesisState_3_map) Clear(key protoreflect.MapKey) { if x.m == nil { return } @@ -140,7 +186,7 @@ func (x *_GenesisState_2_map) Clear(key protoreflect.MapKey) { delete(*x.m, concreteKey) } -func (x *_GenesisState_2_map) Get(key protoreflect.MapKey) protoreflect.Value { +func (x *_GenesisState_3_map) Get(key protoreflect.MapKey) protoreflect.Value { if x.m == nil { return protoreflect.Value{} } @@ -153,7 +199,7 @@ func (x *_GenesisState_2_map) Get(key protoreflect.MapKey) protoreflect.Value { return protoreflect.ValueOfUint64(v) } -func (x *_GenesisState_2_map) Set(key protoreflect.MapKey, value protoreflect.Value) { +func (x *_GenesisState_3_map) Set(key protoreflect.MapKey, value protoreflect.Value) { if !key.IsValid() || !value.IsValid() { panic("invalid key or value provided") } @@ -164,33 +210,33 @@ func (x *_GenesisState_2_map) Set(key protoreflect.MapKey, value protoreflect.Va (*x.m)[concreteKey] = concreteValue } -func (x *_GenesisState_2_map) Mutable(key protoreflect.MapKey) protoreflect.Value { +func (x *_GenesisState_3_map) Mutable(key protoreflect.MapKey) protoreflect.Value { panic("should not call Mutable on protoreflect.Map whose value is not of type protoreflect.Message") } -func (x *_GenesisState_2_map) NewValue() protoreflect.Value { +func (x *_GenesisState_3_map) NewValue() protoreflect.Value { v := uint64(0) return protoreflect.ValueOfUint64(v) } -func (x *_GenesisState_2_map) IsValid() bool { +func (x *_GenesisState_3_map) IsValid() bool { return x.m != nil } -var _ protoreflect.Map = (*_GenesisState_3_map)(nil) +var _ protoreflect.Map = (*_GenesisState_4_map)(nil) -type _GenesisState_3_map struct { +type _GenesisState_4_map struct { m *map[string]string } -func (x *_GenesisState_3_map) Len() int { +func (x *_GenesisState_4_map) Len() int { if x.m == nil { return 0 } return len(*x.m) } -func (x *_GenesisState_3_map) Range(f func(protoreflect.MapKey, protoreflect.Value) bool) { +func (x *_GenesisState_4_map) Range(f func(protoreflect.MapKey, protoreflect.Value) bool) { if x.m == nil { return } @@ -203,7 +249,7 @@ func (x *_GenesisState_3_map) Range(f func(protoreflect.MapKey, protoreflect.Val } } -func (x *_GenesisState_3_map) Has(key protoreflect.MapKey) bool { +func (x *_GenesisState_4_map) Has(key protoreflect.MapKey) bool { if x.m == nil { return false } @@ -213,7 +259,7 @@ func (x *_GenesisState_3_map) Has(key protoreflect.MapKey) bool { return ok } -func (x *_GenesisState_3_map) Clear(key protoreflect.MapKey) { +func (x *_GenesisState_4_map) Clear(key protoreflect.MapKey) { if x.m == nil { return } @@ -222,7 +268,7 @@ func (x *_GenesisState_3_map) Clear(key protoreflect.MapKey) { delete(*x.m, concreteKey) } -func (x *_GenesisState_3_map) Get(key protoreflect.MapKey) protoreflect.Value { +func (x *_GenesisState_4_map) Get(key protoreflect.MapKey) protoreflect.Value { if x.m == nil { return protoreflect.Value{} } @@ -235,7 +281,7 @@ func (x *_GenesisState_3_map) Get(key protoreflect.MapKey) protoreflect.Value { return protoreflect.ValueOfString(v) } -func (x *_GenesisState_3_map) Set(key protoreflect.MapKey, value protoreflect.Value) { +func (x *_GenesisState_4_map) Set(key protoreflect.MapKey, value protoreflect.Value) { if !key.IsValid() || !value.IsValid() { panic("invalid key or value provided") } @@ -246,21 +292,22 @@ func (x *_GenesisState_3_map) Set(key protoreflect.MapKey, value protoreflect.Va (*x.m)[concreteKey] = concreteValue } -func (x *_GenesisState_3_map) Mutable(key protoreflect.MapKey) protoreflect.Value { +func (x *_GenesisState_4_map) Mutable(key protoreflect.MapKey) protoreflect.Value { panic("should not call Mutable on protoreflect.Map whose value is not of type protoreflect.Message") } -func (x *_GenesisState_3_map) NewValue() protoreflect.Value { +func (x *_GenesisState_4_map) NewValue() protoreflect.Value { v := "" return protoreflect.ValueOfString(v) } -func (x *_GenesisState_3_map) IsValid() bool { +func (x *_GenesisState_4_map) IsValid() bool { return x.m != nil } var ( md_GenesisState protoreflect.MessageDescriptor + fd_GenesisState_allowed_denoms protoreflect.FieldDescriptor fd_GenesisState_num_of_accounts protoreflect.FieldDescriptor fd_GenesisState_num_of_forwards protoreflect.FieldDescriptor fd_GenesisState_total_forwarded protoreflect.FieldDescriptor @@ -269,6 +316,7 @@ var ( func init() { file_noble_forwarding_v1_genesis_proto_init() md_GenesisState = File_noble_forwarding_v1_genesis_proto.Messages().ByName("GenesisState") + fd_GenesisState_allowed_denoms = md_GenesisState.Fields().ByName("allowed_denoms") fd_GenesisState_num_of_accounts = md_GenesisState.Fields().ByName("num_of_accounts") fd_GenesisState_num_of_forwards = md_GenesisState.Fields().ByName("num_of_forwards") fd_GenesisState_total_forwarded = md_GenesisState.Fields().ByName("total_forwarded") @@ -339,20 +387,26 @@ func (x *fastReflection_GenesisState) Interface() protoreflect.ProtoMessage { // While iterating, mutating operations may only be performed // on the current field descriptor. func (x *fastReflection_GenesisState) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if len(x.AllowedDenoms) != 0 { + value := protoreflect.ValueOfList(&_GenesisState_1_list{list: &x.AllowedDenoms}) + if !f(fd_GenesisState_allowed_denoms, value) { + return + } + } if len(x.NumOfAccounts) != 0 { - value := protoreflect.ValueOfMap(&_GenesisState_1_map{m: &x.NumOfAccounts}) + value := protoreflect.ValueOfMap(&_GenesisState_2_map{m: &x.NumOfAccounts}) if !f(fd_GenesisState_num_of_accounts, value) { return } } if len(x.NumOfForwards) != 0 { - value := protoreflect.ValueOfMap(&_GenesisState_2_map{m: &x.NumOfForwards}) + value := protoreflect.ValueOfMap(&_GenesisState_3_map{m: &x.NumOfForwards}) if !f(fd_GenesisState_num_of_forwards, value) { return } } if len(x.TotalForwarded) != 0 { - value := protoreflect.ValueOfMap(&_GenesisState_3_map{m: &x.TotalForwarded}) + value := protoreflect.ValueOfMap(&_GenesisState_4_map{m: &x.TotalForwarded}) if !f(fd_GenesisState_total_forwarded, value) { return } @@ -372,6 +426,8 @@ func (x *fastReflection_GenesisState) Range(f func(protoreflect.FieldDescriptor, // a repeated field is populated if it is non-empty. func (x *fastReflection_GenesisState) Has(fd protoreflect.FieldDescriptor) bool { switch fd.FullName() { + case "noble.forwarding.v1.GenesisState.allowed_denoms": + return len(x.AllowedDenoms) != 0 case "noble.forwarding.v1.GenesisState.num_of_accounts": return len(x.NumOfAccounts) != 0 case "noble.forwarding.v1.GenesisState.num_of_forwards": @@ -394,6 +450,8 @@ func (x *fastReflection_GenesisState) Has(fd protoreflect.FieldDescriptor) bool // Clear is a mutating operation and unsafe for concurrent use. func (x *fastReflection_GenesisState) Clear(fd protoreflect.FieldDescriptor) { switch fd.FullName() { + case "noble.forwarding.v1.GenesisState.allowed_denoms": + x.AllowedDenoms = nil case "noble.forwarding.v1.GenesisState.num_of_accounts": x.NumOfAccounts = nil case "noble.forwarding.v1.GenesisState.num_of_forwards": @@ -416,23 +474,29 @@ func (x *fastReflection_GenesisState) Clear(fd protoreflect.FieldDescriptor) { // of the value; to obtain a mutable reference, use Mutable. func (x *fastReflection_GenesisState) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { switch descriptor.FullName() { + case "noble.forwarding.v1.GenesisState.allowed_denoms": + if len(x.AllowedDenoms) == 0 { + return protoreflect.ValueOfList(&_GenesisState_1_list{}) + } + listValue := &_GenesisState_1_list{list: &x.AllowedDenoms} + return protoreflect.ValueOfList(listValue) case "noble.forwarding.v1.GenesisState.num_of_accounts": if len(x.NumOfAccounts) == 0 { - return protoreflect.ValueOfMap(&_GenesisState_1_map{}) + return protoreflect.ValueOfMap(&_GenesisState_2_map{}) } - mapValue := &_GenesisState_1_map{m: &x.NumOfAccounts} + mapValue := &_GenesisState_2_map{m: &x.NumOfAccounts} return protoreflect.ValueOfMap(mapValue) case "noble.forwarding.v1.GenesisState.num_of_forwards": if len(x.NumOfForwards) == 0 { - return protoreflect.ValueOfMap(&_GenesisState_2_map{}) + return protoreflect.ValueOfMap(&_GenesisState_3_map{}) } - mapValue := &_GenesisState_2_map{m: &x.NumOfForwards} + mapValue := &_GenesisState_3_map{m: &x.NumOfForwards} return protoreflect.ValueOfMap(mapValue) case "noble.forwarding.v1.GenesisState.total_forwarded": if len(x.TotalForwarded) == 0 { - return protoreflect.ValueOfMap(&_GenesisState_3_map{}) + return protoreflect.ValueOfMap(&_GenesisState_4_map{}) } - mapValue := &_GenesisState_3_map{m: &x.TotalForwarded} + mapValue := &_GenesisState_4_map{m: &x.TotalForwarded} return protoreflect.ValueOfMap(mapValue) default: if descriptor.IsExtension() { @@ -454,17 +518,21 @@ func (x *fastReflection_GenesisState) Get(descriptor protoreflect.FieldDescripto // Set is a mutating operation and unsafe for concurrent use. func (x *fastReflection_GenesisState) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { switch fd.FullName() { + case "noble.forwarding.v1.GenesisState.allowed_denoms": + lv := value.List() + clv := lv.(*_GenesisState_1_list) + x.AllowedDenoms = *clv.list case "noble.forwarding.v1.GenesisState.num_of_accounts": mv := value.Map() - cmv := mv.(*_GenesisState_1_map) + cmv := mv.(*_GenesisState_2_map) x.NumOfAccounts = *cmv.m case "noble.forwarding.v1.GenesisState.num_of_forwards": mv := value.Map() - cmv := mv.(*_GenesisState_2_map) + cmv := mv.(*_GenesisState_3_map) x.NumOfForwards = *cmv.m case "noble.forwarding.v1.GenesisState.total_forwarded": mv := value.Map() - cmv := mv.(*_GenesisState_3_map) + cmv := mv.(*_GenesisState_4_map) x.TotalForwarded = *cmv.m default: if fd.IsExtension() { @@ -486,23 +554,29 @@ func (x *fastReflection_GenesisState) Set(fd protoreflect.FieldDescriptor, value // Mutable is a mutating operation and unsafe for concurrent use. func (x *fastReflection_GenesisState) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { + case "noble.forwarding.v1.GenesisState.allowed_denoms": + if x.AllowedDenoms == nil { + x.AllowedDenoms = []string{} + } + value := &_GenesisState_1_list{list: &x.AllowedDenoms} + return protoreflect.ValueOfList(value) case "noble.forwarding.v1.GenesisState.num_of_accounts": if x.NumOfAccounts == nil { x.NumOfAccounts = make(map[string]uint64) } - value := &_GenesisState_1_map{m: &x.NumOfAccounts} + value := &_GenesisState_2_map{m: &x.NumOfAccounts} return protoreflect.ValueOfMap(value) case "noble.forwarding.v1.GenesisState.num_of_forwards": if x.NumOfForwards == nil { x.NumOfForwards = make(map[string]uint64) } - value := &_GenesisState_2_map{m: &x.NumOfForwards} + value := &_GenesisState_3_map{m: &x.NumOfForwards} return protoreflect.ValueOfMap(value) case "noble.forwarding.v1.GenesisState.total_forwarded": if x.TotalForwarded == nil { x.TotalForwarded = make(map[string]string) } - value := &_GenesisState_3_map{m: &x.TotalForwarded} + value := &_GenesisState_4_map{m: &x.TotalForwarded} return protoreflect.ValueOfMap(value) default: if fd.IsExtension() { @@ -517,15 +591,18 @@ func (x *fastReflection_GenesisState) Mutable(fd protoreflect.FieldDescriptor) p // For lists, maps, and messages, this returns a new, empty, mutable value. func (x *fastReflection_GenesisState) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { + case "noble.forwarding.v1.GenesisState.allowed_denoms": + list := []string{} + return protoreflect.ValueOfList(&_GenesisState_1_list{list: &list}) case "noble.forwarding.v1.GenesisState.num_of_accounts": m := make(map[string]uint64) - return protoreflect.ValueOfMap(&_GenesisState_1_map{m: &m}) + return protoreflect.ValueOfMap(&_GenesisState_2_map{m: &m}) case "noble.forwarding.v1.GenesisState.num_of_forwards": m := make(map[string]uint64) - return protoreflect.ValueOfMap(&_GenesisState_2_map{m: &m}) + return protoreflect.ValueOfMap(&_GenesisState_3_map{m: &m}) case "noble.forwarding.v1.GenesisState.total_forwarded": m := make(map[string]string) - return protoreflect.ValueOfMap(&_GenesisState_3_map{m: &m}) + return protoreflect.ValueOfMap(&_GenesisState_4_map{m: &m}) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: noble.forwarding.v1.GenesisState")) @@ -595,6 +672,12 @@ func (x *fastReflection_GenesisState) ProtoMethods() *protoiface.Methods { var n int var l int _ = l + if len(x.AllowedDenoms) > 0 { + for _, s := range x.AllowedDenoms { + l = len(s) + n += 1 + l + runtime.Sov(uint64(l)) + } + } if len(x.NumOfAccounts) > 0 { SiZeMaP := func(k string, v uint64) { mapEntrySize := 1 + len(k) + runtime.Sov(uint64(len(k))) + 1 + runtime.Sov(uint64(v)) @@ -702,7 +785,7 @@ func (x *fastReflection_GenesisState) ProtoMethods() *protoiface.Methods { dAtA[i] = 0xa i = runtime.EncodeVarint(dAtA, i, uint64(baseI-i)) i-- - dAtA[i] = 0x1a + dAtA[i] = 0x22 return protoiface.MarshalOutput{}, nil } if options.Deterministic { @@ -743,7 +826,7 @@ func (x *fastReflection_GenesisState) ProtoMethods() *protoiface.Methods { dAtA[i] = 0xa i = runtime.EncodeVarint(dAtA, i, uint64(baseI-i)) i-- - dAtA[i] = 0x12 + dAtA[i] = 0x1a return protoiface.MarshalOutput{}, nil } if options.Deterministic { @@ -784,7 +867,7 @@ func (x *fastReflection_GenesisState) ProtoMethods() *protoiface.Methods { dAtA[i] = 0xa i = runtime.EncodeVarint(dAtA, i, uint64(baseI-i)) i-- - dAtA[i] = 0xa + dAtA[i] = 0x12 return protoiface.MarshalOutput{}, nil } if options.Deterministic { @@ -812,6 +895,15 @@ func (x *fastReflection_GenesisState) ProtoMethods() *protoiface.Methods { } } } + if len(x.AllowedDenoms) > 0 { + for iNdEx := len(x.AllowedDenoms) - 1; iNdEx >= 0; iNdEx-- { + i -= len(x.AllowedDenoms[iNdEx]) + copy(dAtA[i:], x.AllowedDenoms[iNdEx]) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.AllowedDenoms[iNdEx]))) + i-- + dAtA[i] = 0xa + } + } if input.Buf != nil { input.Buf = append(input.Buf, dAtA...) } else { @@ -862,6 +954,38 @@ func (x *fastReflection_GenesisState) ProtoMethods() *protoiface.Methods { } switch fieldNum { case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field AllowedDenoms", 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.AllowedDenoms = append(x.AllowedDenoms, 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 NumOfAccounts", wireType) } @@ -974,7 +1098,7 @@ func (x *fastReflection_GenesisState) ProtoMethods() *protoiface.Methods { } x.NumOfAccounts[mapkey] = mapvalue iNdEx = postIndex - case 2: + case 3: if wireType != 2 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field NumOfForwards", wireType) } @@ -1087,7 +1211,7 @@ func (x *fastReflection_GenesisState) ProtoMethods() *protoiface.Methods { } x.NumOfForwards[mapkey] = mapvalue iNdEx = postIndex - case 3: + case 4: if wireType != 2 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field TotalForwarded", wireType) } @@ -1267,9 +1391,10 @@ type GenesisState struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - NumOfAccounts map[string]uint64 `protobuf:"bytes,1,rep,name=num_of_accounts,json=numOfAccounts,proto3" json:"num_of_accounts,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` - NumOfForwards map[string]uint64 `protobuf:"bytes,2,rep,name=num_of_forwards,json=numOfForwards,proto3" json:"num_of_forwards,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` - TotalForwarded map[string]string `protobuf:"bytes,3,rep,name=total_forwarded,json=totalForwarded,proto3" json:"total_forwarded,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + AllowedDenoms []string `protobuf:"bytes,1,rep,name=allowed_denoms,json=allowedDenoms,proto3" json:"allowed_denoms,omitempty"` + NumOfAccounts map[string]uint64 `protobuf:"bytes,2,rep,name=num_of_accounts,json=numOfAccounts,proto3" json:"num_of_accounts,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + NumOfForwards map[string]uint64 `protobuf:"bytes,3,rep,name=num_of_forwards,json=numOfForwards,proto3" json:"num_of_forwards,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + TotalForwarded map[string]string `protobuf:"bytes,4,rep,name=total_forwarded,json=totalForwarded,proto3" json:"total_forwarded,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *GenesisState) Reset() { @@ -1292,6 +1417,13 @@ func (*GenesisState) Descriptor() ([]byte, []int) { return file_noble_forwarding_v1_genesis_proto_rawDescGZIP(), []int{0} } +func (x *GenesisState) GetAllowedDenoms() []string { + if x != nil { + return x.AllowedDenoms + } + return nil +} + func (x *GenesisState) GetNumOfAccounts() map[string]uint64 { if x != nil { return x.NumOfAccounts @@ -1319,53 +1451,55 @@ var file_noble_forwarding_v1_genesis_proto_rawDesc = []byte{ 0x0a, 0x21, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x13, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2e, 0x66, 0x6f, 0x72, 0x77, 0x61, - 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x22, 0xf1, 0x03, 0x0a, 0x0c, 0x47, 0x65, 0x6e, - 0x65, 0x73, 0x69, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x5c, 0x0a, 0x0f, 0x6e, 0x75, 0x6d, - 0x5f, 0x6f, 0x66, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2e, 0x66, 0x6f, 0x72, 0x77, 0x61, - 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x41, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x6e, 0x75, 0x6d, 0x4f, 0x66, 0x41, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x5c, 0x0a, 0x0f, 0x6e, 0x75, 0x6d, 0x5f, 0x6f, - 0x66, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x34, 0x2e, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2e, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, - 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x2e, 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x6e, 0x75, 0x6d, 0x4f, 0x66, 0x46, 0x6f, 0x72, - 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x5e, 0x0a, 0x0f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x66, - 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, - 0x2e, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2e, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, - 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x2e, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x64, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x46, 0x6f, 0x72, 0x77, - 0x61, 0x72, 0x64, 0x65, 0x64, 0x1a, 0x40, 0x0a, 0x12, 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x41, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x40, 0x0a, 0x12, 0x4e, 0x75, 0x6d, 0x4f, 0x66, - 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x41, 0x0a, 0x13, 0x54, 0x6f, 0x74, - 0x61, 0x6c, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0xe1, 0x01, 0x0a, - 0x17, 0x63, 0x6f, 0x6d, 0x2e, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2e, 0x66, 0x6f, 0x72, 0x77, 0x61, - 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, - 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2d, 0x61, 0x73, 0x73, 0x65, 0x74, - 0x73, 0x2f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x32, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, - 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x3b, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, - 0x6e, 0x67, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x4e, 0x46, 0x58, 0xaa, 0x02, 0x13, 0x4e, 0x6f, 0x62, - 0x6c, 0x65, 0x2e, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x31, - 0xca, 0x02, 0x13, 0x4e, 0x6f, 0x62, 0x6c, 0x65, 0x5c, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, - 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1f, 0x4e, 0x6f, 0x62, 0x6c, 0x65, 0x5c, 0x46, - 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x15, 0x4e, 0x6f, 0x62, 0x6c, 0x65, - 0x3a, 0x3a, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x3a, 0x3a, 0x56, 0x31, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x22, 0x98, 0x04, 0x0a, 0x0c, 0x47, 0x65, 0x6e, + 0x65, 0x73, 0x69, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x6c, 0x6c, + 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x73, + 0x12, 0x5c, 0x0a, 0x0f, 0x6e, 0x75, 0x6d, 0x5f, 0x6f, 0x66, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x6e, 0x6f, 0x62, 0x6c, + 0x65, 0x2e, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x4e, 0x75, 0x6d, + 0x4f, 0x66, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x0d, 0x6e, 0x75, 0x6d, 0x4f, 0x66, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x5c, + 0x0a, 0x0f, 0x6e, 0x75, 0x6d, 0x5f, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2e, + 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x6e, 0x65, 0x73, 0x69, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x4e, 0x75, 0x6d, 0x4f, 0x66, + 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x6e, + 0x75, 0x6d, 0x4f, 0x66, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x5e, 0x0a, 0x0f, + 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x64, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2e, 0x66, 0x6f, + 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, + 0x73, 0x69, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x46, 0x6f, + 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x64, 0x1a, 0x40, 0x0a, 0x12, + 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x40, + 0x0a, 0x12, 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x1a, 0x41, 0x0a, 0x13, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, + 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x42, 0xe1, 0x01, 0x0a, 0x17, 0x63, 0x6f, 0x6d, 0x2e, 0x6e, 0x6f, 0x62, 0x6c, + 0x65, 0x2e, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x42, + 0x0c, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, + 0x4a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6e, 0x6f, 0x62, 0x6c, + 0x65, 0x2d, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, + 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x32, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6e, 0x6f, 0x62, 0x6c, 0x65, + 0x2f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x3b, 0x66, + 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x4e, 0x46, + 0x58, 0xaa, 0x02, 0x13, 0x4e, 0x6f, 0x62, 0x6c, 0x65, 0x2e, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, + 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x13, 0x4e, 0x6f, 0x62, 0x6c, 0x65, 0x5c, + 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1f, + 0x4e, 0x6f, 0x62, 0x6c, 0x65, 0x5c, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, + 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, + 0x02, 0x15, 0x4e, 0x6f, 0x62, 0x6c, 0x65, 0x3a, 0x3a, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, + 0x69, 0x6e, 0x67, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/api/noble/forwarding/v1/query.pulsar.go b/api/noble/forwarding/v1/query.pulsar.go index d892d64..8e67e56 100644 --- a/api/noble/forwarding/v1/query.pulsar.go +++ b/api/noble/forwarding/v1/query.pulsar.go @@ -19,6 +19,842 @@ import ( sync "sync" ) +var ( + md_QueryDenoms protoreflect.MessageDescriptor +) + +func init() { + file_noble_forwarding_v1_query_proto_init() + md_QueryDenoms = File_noble_forwarding_v1_query_proto.Messages().ByName("QueryDenoms") +} + +var _ protoreflect.Message = (*fastReflection_QueryDenoms)(nil) + +type fastReflection_QueryDenoms QueryDenoms + +func (x *QueryDenoms) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryDenoms)(x) +} + +func (x *QueryDenoms) slowProtoReflect() protoreflect.Message { + mi := &file_noble_forwarding_v1_query_proto_msgTypes[0] + 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_QueryDenoms_messageType fastReflection_QueryDenoms_messageType +var _ protoreflect.MessageType = fastReflection_QueryDenoms_messageType{} + +type fastReflection_QueryDenoms_messageType struct{} + +func (x fastReflection_QueryDenoms_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryDenoms)(nil) +} +func (x fastReflection_QueryDenoms_messageType) New() protoreflect.Message { + return new(fastReflection_QueryDenoms) +} +func (x fastReflection_QueryDenoms_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryDenoms +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryDenoms) Descriptor() protoreflect.MessageDescriptor { + return md_QueryDenoms +} + +// 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_QueryDenoms) Type() protoreflect.MessageType { + return _fastReflection_QueryDenoms_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryDenoms) New() protoreflect.Message { + return new(fastReflection_QueryDenoms) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryDenoms) Interface() protoreflect.ProtoMessage { + return (*QueryDenoms)(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_QueryDenoms) 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_QueryDenoms) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: noble.forwarding.v1.QueryDenoms")) + } + panic(fmt.Errorf("message noble.forwarding.v1.QueryDenoms 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_QueryDenoms) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: noble.forwarding.v1.QueryDenoms")) + } + panic(fmt.Errorf("message noble.forwarding.v1.QueryDenoms 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_QueryDenoms) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: noble.forwarding.v1.QueryDenoms")) + } + panic(fmt.Errorf("message noble.forwarding.v1.QueryDenoms 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_QueryDenoms) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: noble.forwarding.v1.QueryDenoms")) + } + panic(fmt.Errorf("message noble.forwarding.v1.QueryDenoms 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_QueryDenoms) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: noble.forwarding.v1.QueryDenoms")) + } + panic(fmt.Errorf("message noble.forwarding.v1.QueryDenoms 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_QueryDenoms) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: noble.forwarding.v1.QueryDenoms")) + } + panic(fmt.Errorf("message noble.forwarding.v1.QueryDenoms 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_QueryDenoms) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in noble.forwarding.v1.QueryDenoms", 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_QueryDenoms) 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_QueryDenoms) 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_QueryDenoms) 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_QueryDenoms) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryDenoms) + 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().(*QueryDenoms) + 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().(*QueryDenoms) + 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: QueryDenoms: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryDenoms: 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, + } +} + +var _ protoreflect.List = (*_QueryDenomsResponse_1_list)(nil) + +type _QueryDenomsResponse_1_list struct { + list *[]string +} + +func (x *_QueryDenomsResponse_1_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_QueryDenomsResponse_1_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfString((*x.list)[i]) +} + +func (x *_QueryDenomsResponse_1_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.String() + concreteValue := valueUnwrapped + (*x.list)[i] = concreteValue +} + +func (x *_QueryDenomsResponse_1_list) Append(value protoreflect.Value) { + valueUnwrapped := value.String() + concreteValue := valueUnwrapped + *x.list = append(*x.list, concreteValue) +} + +func (x *_QueryDenomsResponse_1_list) AppendMutable() protoreflect.Value { + panic(fmt.Errorf("AppendMutable can not be called on message QueryDenomsResponse at list field AllowedDenoms as it is not of Message kind")) +} + +func (x *_QueryDenomsResponse_1_list) Truncate(n int) { + *x.list = (*x.list)[:n] +} + +func (x *_QueryDenomsResponse_1_list) NewElement() protoreflect.Value { + v := "" + return protoreflect.ValueOfString(v) +} + +func (x *_QueryDenomsResponse_1_list) IsValid() bool { + return x.list != nil +} + +var ( + md_QueryDenomsResponse protoreflect.MessageDescriptor + fd_QueryDenomsResponse_allowed_denoms protoreflect.FieldDescriptor +) + +func init() { + file_noble_forwarding_v1_query_proto_init() + md_QueryDenomsResponse = File_noble_forwarding_v1_query_proto.Messages().ByName("QueryDenomsResponse") + fd_QueryDenomsResponse_allowed_denoms = md_QueryDenomsResponse.Fields().ByName("allowed_denoms") +} + +var _ protoreflect.Message = (*fastReflection_QueryDenomsResponse)(nil) + +type fastReflection_QueryDenomsResponse QueryDenomsResponse + +func (x *QueryDenomsResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryDenomsResponse)(x) +} + +func (x *QueryDenomsResponse) slowProtoReflect() protoreflect.Message { + mi := &file_noble_forwarding_v1_query_proto_msgTypes[1] + 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_QueryDenomsResponse_messageType fastReflection_QueryDenomsResponse_messageType +var _ protoreflect.MessageType = fastReflection_QueryDenomsResponse_messageType{} + +type fastReflection_QueryDenomsResponse_messageType struct{} + +func (x fastReflection_QueryDenomsResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryDenomsResponse)(nil) +} +func (x fastReflection_QueryDenomsResponse_messageType) New() protoreflect.Message { + return new(fastReflection_QueryDenomsResponse) +} +func (x fastReflection_QueryDenomsResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryDenomsResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryDenomsResponse) Descriptor() protoreflect.MessageDescriptor { + return md_QueryDenomsResponse +} + +// 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_QueryDenomsResponse) Type() protoreflect.MessageType { + return _fastReflection_QueryDenomsResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryDenomsResponse) New() protoreflect.Message { + return new(fastReflection_QueryDenomsResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryDenomsResponse) Interface() protoreflect.ProtoMessage { + return (*QueryDenomsResponse)(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_QueryDenomsResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if len(x.AllowedDenoms) != 0 { + value := protoreflect.ValueOfList(&_QueryDenomsResponse_1_list{list: &x.AllowedDenoms}) + if !f(fd_QueryDenomsResponse_allowed_denoms, 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_QueryDenomsResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "noble.forwarding.v1.QueryDenomsResponse.allowed_denoms": + return len(x.AllowedDenoms) != 0 + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: noble.forwarding.v1.QueryDenomsResponse")) + } + panic(fmt.Errorf("message noble.forwarding.v1.QueryDenomsResponse 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_QueryDenomsResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "noble.forwarding.v1.QueryDenomsResponse.allowed_denoms": + x.AllowedDenoms = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: noble.forwarding.v1.QueryDenomsResponse")) + } + panic(fmt.Errorf("message noble.forwarding.v1.QueryDenomsResponse 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_QueryDenomsResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "noble.forwarding.v1.QueryDenomsResponse.allowed_denoms": + if len(x.AllowedDenoms) == 0 { + return protoreflect.ValueOfList(&_QueryDenomsResponse_1_list{}) + } + listValue := &_QueryDenomsResponse_1_list{list: &x.AllowedDenoms} + return protoreflect.ValueOfList(listValue) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: noble.forwarding.v1.QueryDenomsResponse")) + } + panic(fmt.Errorf("message noble.forwarding.v1.QueryDenomsResponse 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_QueryDenomsResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "noble.forwarding.v1.QueryDenomsResponse.allowed_denoms": + lv := value.List() + clv := lv.(*_QueryDenomsResponse_1_list) + x.AllowedDenoms = *clv.list + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: noble.forwarding.v1.QueryDenomsResponse")) + } + panic(fmt.Errorf("message noble.forwarding.v1.QueryDenomsResponse 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_QueryDenomsResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "noble.forwarding.v1.QueryDenomsResponse.allowed_denoms": + if x.AllowedDenoms == nil { + x.AllowedDenoms = []string{} + } + value := &_QueryDenomsResponse_1_list{list: &x.AllowedDenoms} + return protoreflect.ValueOfList(value) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: noble.forwarding.v1.QueryDenomsResponse")) + } + panic(fmt.Errorf("message noble.forwarding.v1.QueryDenomsResponse 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_QueryDenomsResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "noble.forwarding.v1.QueryDenomsResponse.allowed_denoms": + list := []string{} + return protoreflect.ValueOfList(&_QueryDenomsResponse_1_list{list: &list}) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: noble.forwarding.v1.QueryDenomsResponse")) + } + panic(fmt.Errorf("message noble.forwarding.v1.QueryDenomsResponse 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_QueryDenomsResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in noble.forwarding.v1.QueryDenomsResponse", 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_QueryDenomsResponse) 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_QueryDenomsResponse) 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_QueryDenomsResponse) 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_QueryDenomsResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryDenomsResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if len(x.AllowedDenoms) > 0 { + for _, s := range x.AllowedDenoms { + l = len(s) + 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().(*QueryDenomsResponse) + 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.AllowedDenoms) > 0 { + for iNdEx := len(x.AllowedDenoms) - 1; iNdEx >= 0; iNdEx-- { + i -= len(x.AllowedDenoms[iNdEx]) + copy(dAtA[i:], x.AllowedDenoms[iNdEx]) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.AllowedDenoms[iNdEx]))) + 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().(*QueryDenomsResponse) + 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: QueryDenomsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryDenomsResponse: 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 AllowedDenoms", 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.AllowedDenoms = append(x.AllowedDenoms, 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_QueryAddress protoreflect.MessageDescriptor fd_QueryAddress_channel protoreflect.FieldDescriptor @@ -43,7 +879,7 @@ func (x *QueryAddress) ProtoReflect() protoreflect.Message { } func (x *QueryAddress) slowProtoReflect() protoreflect.Message { - mi := &file_noble_forwarding_v1_query_proto_msgTypes[0] + mi := &file_noble_forwarding_v1_query_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -589,7 +1425,7 @@ func (x *QueryAddressResponse) ProtoReflect() protoreflect.Message { } func (x *QueryAddressResponse) slowProtoReflect() protoreflect.Message { - mi := &file_noble_forwarding_v1_query_proto_msgTypes[1] + mi := &file_noble_forwarding_v1_query_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1059,7 +1895,7 @@ func (x *QueryStats) ProtoReflect() protoreflect.Message { } func (x *QueryStats) slowProtoReflect() protoreflect.Message { - mi := &file_noble_forwarding_v1_query_proto_msgTypes[2] + mi := &file_noble_forwarding_v1_query_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1507,7 +2343,7 @@ func (x *QueryStatsResponse) ProtoReflect() protoreflect.Message { } func (x *QueryStatsResponse) slowProtoReflect() protoreflect.Message { - mi := &file_noble_forwarding_v1_query_proto_msgTypes[3] + mi := &file_noble_forwarding_v1_query_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2099,7 +2935,7 @@ func (x *QueryStatsByChannel) ProtoReflect() protoreflect.Message { } func (x *QueryStatsByChannel) slowProtoReflect() protoreflect.Message { - mi := &file_noble_forwarding_v1_query_proto_msgTypes[4] + mi := &file_noble_forwarding_v1_query_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2574,7 +3410,7 @@ func (x *QueryStatsByChannelResponse) ProtoReflect() protoreflect.Message { } func (x *QueryStatsByChannelResponse) slowProtoReflect() protoreflect.Message { - mi := &file_noble_forwarding_v1_query_proto_msgTypes[5] + mi := &file_noble_forwarding_v1_query_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3166,7 +4002,7 @@ func (x *Stats) ProtoReflect() protoreflect.Message { } func (x *Stats) slowProtoReflect() protoreflect.Message { - mi := &file_noble_forwarding_v1_query_proto_msgTypes[6] + mi := &file_noble_forwarding_v1_query_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3756,6 +4592,67 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) +type QueryDenoms struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *QueryDenoms) Reset() { + *x = QueryDenoms{} + if protoimpl.UnsafeEnabled { + mi := &file_noble_forwarding_v1_query_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryDenoms) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryDenoms) ProtoMessage() {} + +// Deprecated: Use QueryDenoms.ProtoReflect.Descriptor instead. +func (*QueryDenoms) Descriptor() ([]byte, []int) { + return file_noble_forwarding_v1_query_proto_rawDescGZIP(), []int{0} +} + +type QueryDenomsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AllowedDenoms []string `protobuf:"bytes,1,rep,name=allowed_denoms,json=allowedDenoms,proto3" json:"allowed_denoms,omitempty"` +} + +func (x *QueryDenomsResponse) Reset() { + *x = QueryDenomsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_noble_forwarding_v1_query_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryDenomsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryDenomsResponse) ProtoMessage() {} + +// Deprecated: Use QueryDenomsResponse.ProtoReflect.Descriptor instead. +func (*QueryDenomsResponse) Descriptor() ([]byte, []int) { + return file_noble_forwarding_v1_query_proto_rawDescGZIP(), []int{1} +} + +func (x *QueryDenomsResponse) GetAllowedDenoms() []string { + if x != nil { + return x.AllowedDenoms + } + return nil +} + type QueryAddress struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -3769,7 +4666,7 @@ type QueryAddress struct { func (x *QueryAddress) Reset() { *x = QueryAddress{} if protoimpl.UnsafeEnabled { - mi := &file_noble_forwarding_v1_query_proto_msgTypes[0] + mi := &file_noble_forwarding_v1_query_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3783,7 +4680,7 @@ func (*QueryAddress) ProtoMessage() {} // Deprecated: Use QueryAddress.ProtoReflect.Descriptor instead. func (*QueryAddress) Descriptor() ([]byte, []int) { - return file_noble_forwarding_v1_query_proto_rawDescGZIP(), []int{0} + return file_noble_forwarding_v1_query_proto_rawDescGZIP(), []int{2} } func (x *QueryAddress) GetChannel() string { @@ -3819,7 +4716,7 @@ type QueryAddressResponse struct { func (x *QueryAddressResponse) Reset() { *x = QueryAddressResponse{} if protoimpl.UnsafeEnabled { - mi := &file_noble_forwarding_v1_query_proto_msgTypes[1] + mi := &file_noble_forwarding_v1_query_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3833,7 +4730,7 @@ func (*QueryAddressResponse) ProtoMessage() {} // Deprecated: Use QueryAddressResponse.ProtoReflect.Descriptor instead. func (*QueryAddressResponse) Descriptor() ([]byte, []int) { - return file_noble_forwarding_v1_query_proto_rawDescGZIP(), []int{1} + return file_noble_forwarding_v1_query_proto_rawDescGZIP(), []int{3} } func (x *QueryAddressResponse) GetAddress() string { @@ -3859,7 +4756,7 @@ type QueryStats struct { func (x *QueryStats) Reset() { *x = QueryStats{} if protoimpl.UnsafeEnabled { - mi := &file_noble_forwarding_v1_query_proto_msgTypes[2] + mi := &file_noble_forwarding_v1_query_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3873,7 +4770,7 @@ func (*QueryStats) ProtoMessage() {} // Deprecated: Use QueryStats.ProtoReflect.Descriptor instead. func (*QueryStats) Descriptor() ([]byte, []int) { - return file_noble_forwarding_v1_query_proto_rawDescGZIP(), []int{2} + return file_noble_forwarding_v1_query_proto_rawDescGZIP(), []int{4} } type QueryStatsResponse struct { @@ -3887,7 +4784,7 @@ type QueryStatsResponse struct { func (x *QueryStatsResponse) Reset() { *x = QueryStatsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_noble_forwarding_v1_query_proto_msgTypes[3] + mi := &file_noble_forwarding_v1_query_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3901,7 +4798,7 @@ func (*QueryStatsResponse) ProtoMessage() {} // Deprecated: Use QueryStatsResponse.ProtoReflect.Descriptor instead. func (*QueryStatsResponse) Descriptor() ([]byte, []int) { - return file_noble_forwarding_v1_query_proto_rawDescGZIP(), []int{3} + return file_noble_forwarding_v1_query_proto_rawDescGZIP(), []int{5} } func (x *QueryStatsResponse) GetStats() map[string]*Stats { @@ -3922,7 +4819,7 @@ type QueryStatsByChannel struct { func (x *QueryStatsByChannel) Reset() { *x = QueryStatsByChannel{} if protoimpl.UnsafeEnabled { - mi := &file_noble_forwarding_v1_query_proto_msgTypes[4] + mi := &file_noble_forwarding_v1_query_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3936,7 +4833,7 @@ func (*QueryStatsByChannel) ProtoMessage() {} // Deprecated: Use QueryStatsByChannel.ProtoReflect.Descriptor instead. func (*QueryStatsByChannel) Descriptor() ([]byte, []int) { - return file_noble_forwarding_v1_query_proto_rawDescGZIP(), []int{4} + return file_noble_forwarding_v1_query_proto_rawDescGZIP(), []int{6} } func (x *QueryStatsByChannel) GetChannel() string { @@ -3959,7 +4856,7 @@ type QueryStatsByChannelResponse struct { func (x *QueryStatsByChannelResponse) Reset() { *x = QueryStatsByChannelResponse{} if protoimpl.UnsafeEnabled { - mi := &file_noble_forwarding_v1_query_proto_msgTypes[5] + mi := &file_noble_forwarding_v1_query_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3973,7 +4870,7 @@ func (*QueryStatsByChannelResponse) ProtoMessage() {} // Deprecated: Use QueryStatsByChannelResponse.ProtoReflect.Descriptor instead. func (*QueryStatsByChannelResponse) Descriptor() ([]byte, []int) { - return file_noble_forwarding_v1_query_proto_rawDescGZIP(), []int{5} + return file_noble_forwarding_v1_query_proto_rawDescGZIP(), []int{7} } func (x *QueryStatsByChannelResponse) GetNumOfAccounts() uint64 { @@ -4011,7 +4908,7 @@ type Stats struct { func (x *Stats) Reset() { *x = Stats{} if protoimpl.UnsafeEnabled { - mi := &file_noble_forwarding_v1_query_proto_msgTypes[6] + mi := &file_noble_forwarding_v1_query_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4025,7 +4922,7 @@ func (*Stats) ProtoMessage() {} // Deprecated: Use Stats.ProtoReflect.Descriptor instead. func (*Stats) Descriptor() ([]byte, []int) { - return file_noble_forwarding_v1_query_proto_rawDescGZIP(), []int{6} + return file_noble_forwarding_v1_query_proto_rawDescGZIP(), []int{8} } func (x *Stats) GetChainId() string { @@ -4072,114 +4969,127 @@ var file_noble_forwarding_v1_query_proto_rawDesc = []byte{ 0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x6c, 0x0a, 0x0c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, - 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, - 0x08, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x3a, 0x08, 0x88, 0xa0, 0x1f, 0x00, 0xe8, - 0xa0, 0x1f, 0x00, 0x22, 0x69, 0x0a, 0x14, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x07, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, - 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, - 0x1d, 0x0a, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x42, - 0x05, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x22, 0x0c, - 0x0a, 0x0a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x22, 0xba, 0x01, 0x0a, - 0x12, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2e, 0x66, 0x6f, 0x72, 0x77, 0x61, - 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x74, - 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x05, 0x73, 0x74, - 0x61, 0x74, 0x73, 0x1a, 0x54, 0x0a, 0x0a, 0x53, 0x74, 0x61, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2e, 0x66, 0x6f, 0x72, 0x77, 0x61, - 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x39, 0x0a, 0x13, 0x51, 0x75, 0x65, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x0d, 0x0a, 0x0b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x65, + 0x6e, 0x6f, 0x6d, 0x73, 0x22, 0x43, 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x65, 0x6e, + 0x6f, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x0e, 0x61, + 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x09, 0x42, 0x05, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, + 0x77, 0x65, 0x64, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x73, 0x22, 0x6c, 0x0a, 0x0c, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, + 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x3a, 0x08, 0x88, + 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0x69, 0x0a, 0x14, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x32, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x12, 0x1d, 0x0a, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x08, 0x42, 0x05, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x65, 0x78, 0x69, 0x73, + 0x74, 0x73, 0x22, 0x0c, 0x0a, 0x0a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, + 0x22, 0xba, 0x01, 0x0a, 0x12, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2e, 0x66, + 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, + 0x53, 0x74, 0x61, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, + 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x1a, 0x54, 0x0a, 0x0a, 0x53, 0x74, 0x61, 0x74, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2e, 0x66, + 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, + 0x74, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x39, 0x0a, + 0x13, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x42, 0x79, 0x43, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x3a, 0x08, + 0x88, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0x88, 0x02, 0x0a, 0x1b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x42, 0x79, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, - 0x12, 0x18, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x3a, 0x08, 0x88, 0xa0, 0x1f, 0x00, - 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0x88, 0x02, 0x0a, 0x1b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x74, - 0x61, 0x74, 0x73, 0x42, 0x79, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x0f, 0x6e, 0x75, 0x6d, 0x5f, 0x6f, 0x66, 0x5f, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x05, 0xa8, - 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0d, 0x6e, 0x75, 0x6d, 0x4f, 0x66, 0x41, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x73, 0x12, 0x2d, 0x0a, 0x0f, 0x6e, 0x75, 0x6d, 0x5f, 0x6f, 0x66, 0x5f, 0x66, 0x6f, - 0x72, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x05, 0xa8, 0xe7, - 0xb0, 0x2a, 0x01, 0x52, 0x0d, 0x6e, 0x75, 0x6d, 0x4f, 0x66, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, - 0x64, 0x73, 0x12, 0x8a, 0x01, 0x0a, 0x0f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x66, 0x6f, 0x72, - 0x77, 0x61, 0x72, 0x64, 0x65, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x46, 0xc8, 0xde, 0x1f, 0x00, 0xaa, 0xdf, 0x1f, - 0x28, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x74, 0x79, - 0x70, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x9a, 0xe7, 0xb0, 0x2a, 0x0c, 0x6c, 0x65, - 0x67, 0x61, 0x63, 0x79, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, - 0x0e, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x64, 0x22, - 0x94, 0x02, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x20, 0x0a, 0x08, 0x63, 0x68, 0x61, - 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x05, 0xa8, 0xe7, 0xb0, - 0x2a, 0x01, 0x52, 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x0f, 0x6e, - 0x75, 0x6d, 0x5f, 0x6f, 0x66, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x04, 0x42, 0x05, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0d, 0x6e, 0x75, 0x6d, - 0x4f, 0x66, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x2d, 0x0a, 0x0f, 0x6e, 0x75, - 0x6d, 0x5f, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x04, 0x42, 0x05, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0d, 0x6e, 0x75, 0x6d, 0x4f, - 0x66, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x8a, 0x01, 0x0a, 0x0f, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x64, 0x18, 0x04, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, - 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x46, - 0xc8, 0xde, 0x1f, 0x00, 0xaa, 0xdf, 0x1f, 0x28, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x73, - 0x9a, 0xe7, 0xb0, 0x2a, 0x0c, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x5f, 0x63, 0x6f, 0x69, 0x6e, - 0x73, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0e, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x46, 0x6f, 0x72, - 0x77, 0x61, 0x72, 0x64, 0x65, 0x64, 0x32, 0xc6, 0x03, 0x0a, 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x12, 0xa3, 0x01, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x21, 0x2e, 0x6e, - 0x6f, 0x62, 0x6c, 0x65, 0x2e, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, - 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x1a, - 0x29, 0x2e, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2e, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, - 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4a, 0x88, 0xe7, 0xb0, 0x2a, - 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x12, 0x3d, 0x2f, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2f, - 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x2f, 0x7b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7d, 0x2f, - 0x7b, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x7d, 0x2f, 0x7b, 0x66, 0x61, 0x6c, - 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x7d, 0x12, 0x75, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, - 0x1f, 0x2e, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2e, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, - 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, - 0x1a, 0x27, 0x2e, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2e, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, - 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x1c, 0x12, 0x1a, 0x2f, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, - 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x12, 0x9f, 0x01, - 0x0a, 0x0e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x42, 0x79, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, - 0x12, 0x28, 0x2e, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2e, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, - 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x42, 0x79, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x1a, 0x30, 0x2e, 0x6e, 0x6f, 0x62, - 0x6c, 0x65, 0x2e, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, - 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x42, 0x79, 0x43, 0x68, 0x61, - 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, 0x88, 0xe7, - 0xb0, 0x2a, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x6e, 0x6f, 0x62, 0x6c, - 0x65, 0x2f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, - 0x73, 0x74, 0x61, 0x74, 0x73, 0x2f, 0x7b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7d, 0x42, - 0xdf, 0x01, 0x0a, 0x17, 0x63, 0x6f, 0x6d, 0x2e, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2e, 0x66, 0x6f, - 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x42, 0x0a, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4a, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2d, 0x61, 0x73, 0x73, 0x65, - 0x74, 0x73, 0x2f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x32, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2f, 0x66, 0x6f, 0x72, 0x77, 0x61, - 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x3b, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, - 0x69, 0x6e, 0x67, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x4e, 0x46, 0x58, 0xaa, 0x02, 0x13, 0x4e, 0x6f, - 0x62, 0x6c, 0x65, 0x2e, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x56, - 0x31, 0xca, 0x02, 0x13, 0x4e, 0x6f, 0x62, 0x6c, 0x65, 0x5c, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, - 0x64, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1f, 0x4e, 0x6f, 0x62, 0x6c, 0x65, 0x5c, - 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, - 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x15, 0x4e, 0x6f, 0x62, 0x6c, - 0x65, 0x3a, 0x3a, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x3a, 0x3a, 0x56, - 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x0f, 0x6e, 0x75, 0x6d, 0x5f, + 0x6f, 0x66, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x42, 0x05, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0d, 0x6e, 0x75, 0x6d, 0x4f, 0x66, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x2d, 0x0a, 0x0f, 0x6e, 0x75, 0x6d, 0x5f, 0x6f, + 0x66, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x05, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0d, 0x6e, 0x75, 0x6d, 0x4f, 0x66, 0x46, 0x6f, + 0x72, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x8a, 0x01, 0x0a, 0x0f, 0x74, 0x6f, 0x74, 0x61, 0x6c, + 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x46, 0xc8, 0xde, 0x1f, + 0x00, 0xaa, 0xdf, 0x1f, 0x28, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, + 0x6b, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x9a, 0xe7, 0xb0, + 0x2a, 0x0c, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0xa8, 0xe7, + 0xb0, 0x2a, 0x01, 0x52, 0x0e, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, + 0x64, 0x65, 0x64, 0x22, 0x94, 0x02, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x20, 0x0a, + 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x05, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x12, + 0x2d, 0x0a, 0x0f, 0x6e, 0x75, 0x6d, 0x5f, 0x6f, 0x66, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x05, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, + 0x0d, 0x6e, 0x75, 0x6d, 0x4f, 0x66, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x2d, + 0x0a, 0x0f, 0x6e, 0x75, 0x6d, 0x5f, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x05, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0d, + 0x6e, 0x75, 0x6d, 0x4f, 0x66, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x8a, 0x01, + 0x0a, 0x0f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, + 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, + 0x69, 0x6e, 0x42, 0x46, 0xc8, 0xde, 0x1f, 0x00, 0xaa, 0xdf, 0x1f, 0x28, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, + 0x6f, 0x69, 0x6e, 0x73, 0x9a, 0xe7, 0xb0, 0x2a, 0x0c, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x5f, + 0x63, 0x6f, 0x69, 0x6e, 0x73, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0e, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x64, 0x32, 0xc6, 0x04, 0x0a, 0x05, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x12, 0x7e, 0x0a, 0x06, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x73, 0x12, 0x20, + 0x2e, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2e, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, + 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x73, + 0x1a, 0x28, 0x2e, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2e, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, + 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x65, 0x6e, 0x6f, + 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x88, 0xe7, 0xb0, 0x2a, + 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2f, + 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, + 0x6e, 0x6f, 0x6d, 0x73, 0x12, 0xa3, 0x01, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x12, 0x21, 0x2e, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2e, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, + 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x1a, 0x29, 0x2e, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2e, 0x66, 0x6f, 0x72, 0x77, + 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4a, + 0x88, 0xe7, 0xb0, 0x2a, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x12, 0x3d, 0x2f, 0x6e, 0x6f, + 0x62, 0x6c, 0x65, 0x2f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x76, + 0x31, 0x2f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x2f, 0x7b, 0x63, 0x68, 0x61, 0x6e, 0x6e, + 0x65, 0x6c, 0x7d, 0x2f, 0x7b, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x7d, 0x2f, + 0x7b, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x7d, 0x12, 0x75, 0x0a, 0x05, 0x53, 0x74, + 0x61, 0x74, 0x73, 0x12, 0x1f, 0x2e, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2e, 0x66, 0x6f, 0x72, 0x77, + 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, + 0x74, 0x61, 0x74, 0x73, 0x1a, 0x27, 0x2e, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2e, 0x66, 0x6f, 0x72, + 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x12, 0x1a, 0x2f, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2f, 0x66, 0x6f, + 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x61, 0x74, + 0x73, 0x12, 0x9f, 0x01, 0x0a, 0x0e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x42, 0x79, 0x43, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x28, 0x2e, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2e, 0x66, 0x6f, 0x72, + 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x53, 0x74, 0x61, 0x74, 0x73, 0x42, 0x79, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x1a, 0x30, + 0x2e, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2e, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, + 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x42, + 0x79, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x31, 0x88, 0xe7, 0xb0, 0x2a, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, + 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, + 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2f, 0x7b, 0x63, 0x68, 0x61, 0x6e, 0x6e, + 0x65, 0x6c, 0x7d, 0x42, 0xdf, 0x01, 0x0a, 0x17, 0x63, 0x6f, 0x6d, 0x2e, 0x6e, 0x6f, 0x62, 0x6c, + 0x65, 0x2e, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x42, + 0x0a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4a, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2d, + 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, + 0x67, 0x2f, 0x76, 0x32, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2f, 0x66, + 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x3b, 0x66, 0x6f, 0x72, + 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x4e, 0x46, 0x58, 0xaa, + 0x02, 0x13, 0x4e, 0x6f, 0x62, 0x6c, 0x65, 0x2e, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, + 0x6e, 0x67, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x13, 0x4e, 0x6f, 0x62, 0x6c, 0x65, 0x5c, 0x46, 0x6f, + 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1f, 0x4e, 0x6f, + 0x62, 0x6c, 0x65, 0x5c, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5c, 0x56, + 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x15, + 0x4e, 0x6f, 0x62, 0x6c, 0x65, 0x3a, 0x3a, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, + 0x67, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -4194,34 +5104,38 @@ func file_noble_forwarding_v1_query_proto_rawDescGZIP() []byte { return file_noble_forwarding_v1_query_proto_rawDescData } -var file_noble_forwarding_v1_query_proto_msgTypes = make([]protoimpl.MessageInfo, 8) +var file_noble_forwarding_v1_query_proto_msgTypes = make([]protoimpl.MessageInfo, 10) var file_noble_forwarding_v1_query_proto_goTypes = []interface{}{ - (*QueryAddress)(nil), // 0: noble.forwarding.v1.QueryAddress - (*QueryAddressResponse)(nil), // 1: noble.forwarding.v1.QueryAddressResponse - (*QueryStats)(nil), // 2: noble.forwarding.v1.QueryStats - (*QueryStatsResponse)(nil), // 3: noble.forwarding.v1.QueryStatsResponse - (*QueryStatsByChannel)(nil), // 4: noble.forwarding.v1.QueryStatsByChannel - (*QueryStatsByChannelResponse)(nil), // 5: noble.forwarding.v1.QueryStatsByChannelResponse - (*Stats)(nil), // 6: noble.forwarding.v1.Stats - nil, // 7: noble.forwarding.v1.QueryStatsResponse.StatsEntry - (*v1beta1.Coin)(nil), // 8: cosmos.base.v1beta1.Coin + (*QueryDenoms)(nil), // 0: noble.forwarding.v1.QueryDenoms + (*QueryDenomsResponse)(nil), // 1: noble.forwarding.v1.QueryDenomsResponse + (*QueryAddress)(nil), // 2: noble.forwarding.v1.QueryAddress + (*QueryAddressResponse)(nil), // 3: noble.forwarding.v1.QueryAddressResponse + (*QueryStats)(nil), // 4: noble.forwarding.v1.QueryStats + (*QueryStatsResponse)(nil), // 5: noble.forwarding.v1.QueryStatsResponse + (*QueryStatsByChannel)(nil), // 6: noble.forwarding.v1.QueryStatsByChannel + (*QueryStatsByChannelResponse)(nil), // 7: noble.forwarding.v1.QueryStatsByChannelResponse + (*Stats)(nil), // 8: noble.forwarding.v1.Stats + nil, // 9: noble.forwarding.v1.QueryStatsResponse.StatsEntry + (*v1beta1.Coin)(nil), // 10: cosmos.base.v1beta1.Coin } var file_noble_forwarding_v1_query_proto_depIdxs = []int32{ - 7, // 0: noble.forwarding.v1.QueryStatsResponse.stats:type_name -> noble.forwarding.v1.QueryStatsResponse.StatsEntry - 8, // 1: noble.forwarding.v1.QueryStatsByChannelResponse.total_forwarded:type_name -> cosmos.base.v1beta1.Coin - 8, // 2: noble.forwarding.v1.Stats.total_forwarded:type_name -> cosmos.base.v1beta1.Coin - 6, // 3: noble.forwarding.v1.QueryStatsResponse.StatsEntry.value:type_name -> noble.forwarding.v1.Stats - 0, // 4: noble.forwarding.v1.Query.Address:input_type -> noble.forwarding.v1.QueryAddress - 2, // 5: noble.forwarding.v1.Query.Stats:input_type -> noble.forwarding.v1.QueryStats - 4, // 6: noble.forwarding.v1.Query.StatsByChannel:input_type -> noble.forwarding.v1.QueryStatsByChannel - 1, // 7: noble.forwarding.v1.Query.Address:output_type -> noble.forwarding.v1.QueryAddressResponse - 3, // 8: noble.forwarding.v1.Query.Stats:output_type -> noble.forwarding.v1.QueryStatsResponse - 5, // 9: noble.forwarding.v1.Query.StatsByChannel:output_type -> noble.forwarding.v1.QueryStatsByChannelResponse - 7, // [7:10] is the sub-list for method output_type - 4, // [4:7] is the sub-list for method input_type - 4, // [4:4] is the sub-list for extension type_name - 4, // [4:4] is the sub-list for extension extendee - 0, // [0:4] is the sub-list for field type_name + 9, // 0: noble.forwarding.v1.QueryStatsResponse.stats:type_name -> noble.forwarding.v1.QueryStatsResponse.StatsEntry + 10, // 1: noble.forwarding.v1.QueryStatsByChannelResponse.total_forwarded:type_name -> cosmos.base.v1beta1.Coin + 10, // 2: noble.forwarding.v1.Stats.total_forwarded:type_name -> cosmos.base.v1beta1.Coin + 8, // 3: noble.forwarding.v1.QueryStatsResponse.StatsEntry.value:type_name -> noble.forwarding.v1.Stats + 0, // 4: noble.forwarding.v1.Query.Denoms:input_type -> noble.forwarding.v1.QueryDenoms + 2, // 5: noble.forwarding.v1.Query.Address:input_type -> noble.forwarding.v1.QueryAddress + 4, // 6: noble.forwarding.v1.Query.Stats:input_type -> noble.forwarding.v1.QueryStats + 6, // 7: noble.forwarding.v1.Query.StatsByChannel:input_type -> noble.forwarding.v1.QueryStatsByChannel + 1, // 8: noble.forwarding.v1.Query.Denoms:output_type -> noble.forwarding.v1.QueryDenomsResponse + 3, // 9: noble.forwarding.v1.Query.Address:output_type -> noble.forwarding.v1.QueryAddressResponse + 5, // 10: noble.forwarding.v1.Query.Stats:output_type -> noble.forwarding.v1.QueryStatsResponse + 7, // 11: noble.forwarding.v1.Query.StatsByChannel:output_type -> noble.forwarding.v1.QueryStatsByChannelResponse + 8, // [8:12] is the sub-list for method output_type + 4, // [4:8] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name } func init() { file_noble_forwarding_v1_query_proto_init() } @@ -4231,7 +5145,7 @@ func file_noble_forwarding_v1_query_proto_init() { } if !protoimpl.UnsafeEnabled { file_noble_forwarding_v1_query_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryAddress); i { + switch v := v.(*QueryDenoms); i { case 0: return &v.state case 1: @@ -4243,7 +5157,7 @@ func file_noble_forwarding_v1_query_proto_init() { } } file_noble_forwarding_v1_query_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryAddressResponse); i { + switch v := v.(*QueryDenomsResponse); i { case 0: return &v.state case 1: @@ -4255,7 +5169,7 @@ func file_noble_forwarding_v1_query_proto_init() { } } file_noble_forwarding_v1_query_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryStats); i { + switch v := v.(*QueryAddress); i { case 0: return &v.state case 1: @@ -4267,7 +5181,7 @@ func file_noble_forwarding_v1_query_proto_init() { } } file_noble_forwarding_v1_query_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryStatsResponse); i { + switch v := v.(*QueryAddressResponse); i { case 0: return &v.state case 1: @@ -4279,7 +5193,7 @@ func file_noble_forwarding_v1_query_proto_init() { } } file_noble_forwarding_v1_query_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryStatsByChannel); i { + switch v := v.(*QueryStats); i { case 0: return &v.state case 1: @@ -4291,7 +5205,7 @@ func file_noble_forwarding_v1_query_proto_init() { } } file_noble_forwarding_v1_query_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryStatsByChannelResponse); i { + switch v := v.(*QueryStatsResponse); i { case 0: return &v.state case 1: @@ -4303,6 +5217,30 @@ func file_noble_forwarding_v1_query_proto_init() { } } file_noble_forwarding_v1_query_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryStatsByChannel); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_noble_forwarding_v1_query_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryStatsByChannelResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_noble_forwarding_v1_query_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Stats); i { case 0: return &v.state @@ -4321,7 +5259,7 @@ func file_noble_forwarding_v1_query_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_noble_forwarding_v1_query_proto_rawDesc, NumEnums: 0, - NumMessages: 8, + NumMessages: 10, NumExtensions: 0, NumServices: 1, }, diff --git a/api/noble/forwarding/v1/query_grpc.pb.go b/api/noble/forwarding/v1/query_grpc.pb.go index d21e924..c51f891 100644 --- a/api/noble/forwarding/v1/query_grpc.pb.go +++ b/api/noble/forwarding/v1/query_grpc.pb.go @@ -19,6 +19,7 @@ import ( const _ = grpc.SupportPackageIsVersion7 const ( + Query_Denoms_FullMethodName = "/noble.forwarding.v1.Query/Denoms" Query_Address_FullMethodName = "/noble.forwarding.v1.Query/Address" Query_Stats_FullMethodName = "/noble.forwarding.v1.Query/Stats" Query_StatsByChannel_FullMethodName = "/noble.forwarding.v1.Query/StatsByChannel" @@ -28,6 +29,7 @@ const ( // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type QueryClient interface { + Denoms(ctx context.Context, in *QueryDenoms, opts ...grpc.CallOption) (*QueryDenomsResponse, error) Address(ctx context.Context, in *QueryAddress, opts ...grpc.CallOption) (*QueryAddressResponse, error) Stats(ctx context.Context, in *QueryStats, opts ...grpc.CallOption) (*QueryStatsResponse, error) StatsByChannel(ctx context.Context, in *QueryStatsByChannel, opts ...grpc.CallOption) (*QueryStatsByChannelResponse, error) @@ -41,6 +43,15 @@ func NewQueryClient(cc grpc.ClientConnInterface) QueryClient { return &queryClient{cc} } +func (c *queryClient) Denoms(ctx context.Context, in *QueryDenoms, opts ...grpc.CallOption) (*QueryDenomsResponse, error) { + out := new(QueryDenomsResponse) + err := c.cc.Invoke(ctx, Query_Denoms_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *queryClient) Address(ctx context.Context, in *QueryAddress, opts ...grpc.CallOption) (*QueryAddressResponse, error) { out := new(QueryAddressResponse) err := c.cc.Invoke(ctx, Query_Address_FullMethodName, in, out, opts...) @@ -72,6 +83,7 @@ func (c *queryClient) StatsByChannel(ctx context.Context, in *QueryStatsByChanne // All implementations must embed UnimplementedQueryServer // for forward compatibility type QueryServer interface { + Denoms(context.Context, *QueryDenoms) (*QueryDenomsResponse, error) Address(context.Context, *QueryAddress) (*QueryAddressResponse, error) Stats(context.Context, *QueryStats) (*QueryStatsResponse, error) StatsByChannel(context.Context, *QueryStatsByChannel) (*QueryStatsByChannelResponse, error) @@ -82,6 +94,9 @@ type QueryServer interface { type UnimplementedQueryServer struct { } +func (UnimplementedQueryServer) Denoms(context.Context, *QueryDenoms) (*QueryDenomsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Denoms not implemented") +} func (UnimplementedQueryServer) Address(context.Context, *QueryAddress) (*QueryAddressResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Address not implemented") } @@ -104,6 +119,24 @@ func RegisterQueryServer(s grpc.ServiceRegistrar, srv QueryServer) { s.RegisterService(&Query_ServiceDesc, srv) } +func _Query_Denoms_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryDenoms) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).Denoms(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Query_Denoms_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Denoms(ctx, req.(*QueryDenoms)) + } + return interceptor(ctx, in, info, handler) +} + func _Query_Address_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(QueryAddress) if err := dec(in); err != nil { @@ -165,6 +198,10 @@ var Query_ServiceDesc = grpc.ServiceDesc{ ServiceName: "noble.forwarding.v1.Query", HandlerType: (*QueryServer)(nil), Methods: []grpc.MethodDesc{ + { + MethodName: "Denoms", + Handler: _Query_Denoms_Handler, + }, { MethodName: "Address", Handler: _Query_Address_Handler, diff --git a/api/noble/forwarding/v1/tx.pulsar.go b/api/noble/forwarding/v1/tx.pulsar.go index 8270e17..ba5ea0f 100644 --- a/api/noble/forwarding/v1/tx.pulsar.go +++ b/api/noble/forwarding/v1/tx.pulsar.go @@ -1942,6 +1942,906 @@ func (x *fastReflection_MsgClearAccountResponse) ProtoMethods() *protoiface.Meth } } +var _ protoreflect.List = (*_MsgSetAllowedDenoms_2_list)(nil) + +type _MsgSetAllowedDenoms_2_list struct { + list *[]string +} + +func (x *_MsgSetAllowedDenoms_2_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_MsgSetAllowedDenoms_2_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfString((*x.list)[i]) +} + +func (x *_MsgSetAllowedDenoms_2_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.String() + concreteValue := valueUnwrapped + (*x.list)[i] = concreteValue +} + +func (x *_MsgSetAllowedDenoms_2_list) Append(value protoreflect.Value) { + valueUnwrapped := value.String() + concreteValue := valueUnwrapped + *x.list = append(*x.list, concreteValue) +} + +func (x *_MsgSetAllowedDenoms_2_list) AppendMutable() protoreflect.Value { + panic(fmt.Errorf("AppendMutable can not be called on message MsgSetAllowedDenoms at list field Denoms as it is not of Message kind")) +} + +func (x *_MsgSetAllowedDenoms_2_list) Truncate(n int) { + *x.list = (*x.list)[:n] +} + +func (x *_MsgSetAllowedDenoms_2_list) NewElement() protoreflect.Value { + v := "" + return protoreflect.ValueOfString(v) +} + +func (x *_MsgSetAllowedDenoms_2_list) IsValid() bool { + return x.list != nil +} + +var ( + md_MsgSetAllowedDenoms protoreflect.MessageDescriptor + fd_MsgSetAllowedDenoms_signer protoreflect.FieldDescriptor + fd_MsgSetAllowedDenoms_denoms protoreflect.FieldDescriptor +) + +func init() { + file_noble_forwarding_v1_tx_proto_init() + md_MsgSetAllowedDenoms = File_noble_forwarding_v1_tx_proto.Messages().ByName("MsgSetAllowedDenoms") + fd_MsgSetAllowedDenoms_signer = md_MsgSetAllowedDenoms.Fields().ByName("signer") + fd_MsgSetAllowedDenoms_denoms = md_MsgSetAllowedDenoms.Fields().ByName("denoms") +} + +var _ protoreflect.Message = (*fastReflection_MsgSetAllowedDenoms)(nil) + +type fastReflection_MsgSetAllowedDenoms MsgSetAllowedDenoms + +func (x *MsgSetAllowedDenoms) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgSetAllowedDenoms)(x) +} + +func (x *MsgSetAllowedDenoms) slowProtoReflect() protoreflect.Message { + mi := &file_noble_forwarding_v1_tx_proto_msgTypes[4] + 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_MsgSetAllowedDenoms_messageType fastReflection_MsgSetAllowedDenoms_messageType +var _ protoreflect.MessageType = fastReflection_MsgSetAllowedDenoms_messageType{} + +type fastReflection_MsgSetAllowedDenoms_messageType struct{} + +func (x fastReflection_MsgSetAllowedDenoms_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgSetAllowedDenoms)(nil) +} +func (x fastReflection_MsgSetAllowedDenoms_messageType) New() protoreflect.Message { + return new(fastReflection_MsgSetAllowedDenoms) +} +func (x fastReflection_MsgSetAllowedDenoms_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgSetAllowedDenoms +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgSetAllowedDenoms) Descriptor() protoreflect.MessageDescriptor { + return md_MsgSetAllowedDenoms +} + +// 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_MsgSetAllowedDenoms) Type() protoreflect.MessageType { + return _fastReflection_MsgSetAllowedDenoms_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgSetAllowedDenoms) New() protoreflect.Message { + return new(fastReflection_MsgSetAllowedDenoms) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgSetAllowedDenoms) Interface() protoreflect.ProtoMessage { + return (*MsgSetAllowedDenoms)(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_MsgSetAllowedDenoms) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Signer != "" { + value := protoreflect.ValueOfString(x.Signer) + if !f(fd_MsgSetAllowedDenoms_signer, value) { + return + } + } + if len(x.Denoms) != 0 { + value := protoreflect.ValueOfList(&_MsgSetAllowedDenoms_2_list{list: &x.Denoms}) + if !f(fd_MsgSetAllowedDenoms_denoms, 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_MsgSetAllowedDenoms) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "noble.forwarding.v1.MsgSetAllowedDenoms.signer": + return x.Signer != "" + case "noble.forwarding.v1.MsgSetAllowedDenoms.denoms": + return len(x.Denoms) != 0 + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: noble.forwarding.v1.MsgSetAllowedDenoms")) + } + panic(fmt.Errorf("message noble.forwarding.v1.MsgSetAllowedDenoms 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_MsgSetAllowedDenoms) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "noble.forwarding.v1.MsgSetAllowedDenoms.signer": + x.Signer = "" + case "noble.forwarding.v1.MsgSetAllowedDenoms.denoms": + x.Denoms = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: noble.forwarding.v1.MsgSetAllowedDenoms")) + } + panic(fmt.Errorf("message noble.forwarding.v1.MsgSetAllowedDenoms 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_MsgSetAllowedDenoms) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "noble.forwarding.v1.MsgSetAllowedDenoms.signer": + value := x.Signer + return protoreflect.ValueOfString(value) + case "noble.forwarding.v1.MsgSetAllowedDenoms.denoms": + if len(x.Denoms) == 0 { + return protoreflect.ValueOfList(&_MsgSetAllowedDenoms_2_list{}) + } + listValue := &_MsgSetAllowedDenoms_2_list{list: &x.Denoms} + return protoreflect.ValueOfList(listValue) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: noble.forwarding.v1.MsgSetAllowedDenoms")) + } + panic(fmt.Errorf("message noble.forwarding.v1.MsgSetAllowedDenoms 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_MsgSetAllowedDenoms) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "noble.forwarding.v1.MsgSetAllowedDenoms.signer": + x.Signer = value.Interface().(string) + case "noble.forwarding.v1.MsgSetAllowedDenoms.denoms": + lv := value.List() + clv := lv.(*_MsgSetAllowedDenoms_2_list) + x.Denoms = *clv.list + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: noble.forwarding.v1.MsgSetAllowedDenoms")) + } + panic(fmt.Errorf("message noble.forwarding.v1.MsgSetAllowedDenoms 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_MsgSetAllowedDenoms) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "noble.forwarding.v1.MsgSetAllowedDenoms.denoms": + if x.Denoms == nil { + x.Denoms = []string{} + } + value := &_MsgSetAllowedDenoms_2_list{list: &x.Denoms} + return protoreflect.ValueOfList(value) + case "noble.forwarding.v1.MsgSetAllowedDenoms.signer": + panic(fmt.Errorf("field signer of message noble.forwarding.v1.MsgSetAllowedDenoms is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: noble.forwarding.v1.MsgSetAllowedDenoms")) + } + panic(fmt.Errorf("message noble.forwarding.v1.MsgSetAllowedDenoms 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_MsgSetAllowedDenoms) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "noble.forwarding.v1.MsgSetAllowedDenoms.signer": + return protoreflect.ValueOfString("") + case "noble.forwarding.v1.MsgSetAllowedDenoms.denoms": + list := []string{} + return protoreflect.ValueOfList(&_MsgSetAllowedDenoms_2_list{list: &list}) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: noble.forwarding.v1.MsgSetAllowedDenoms")) + } + panic(fmt.Errorf("message noble.forwarding.v1.MsgSetAllowedDenoms 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_MsgSetAllowedDenoms) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in noble.forwarding.v1.MsgSetAllowedDenoms", 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_MsgSetAllowedDenoms) 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_MsgSetAllowedDenoms) 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_MsgSetAllowedDenoms) 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_MsgSetAllowedDenoms) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgSetAllowedDenoms) + 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.Signer) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if len(x.Denoms) > 0 { + for _, s := range x.Denoms { + l = len(s) + 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().(*MsgSetAllowedDenoms) + 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.Denoms) > 0 { + for iNdEx := len(x.Denoms) - 1; iNdEx >= 0; iNdEx-- { + i -= len(x.Denoms[iNdEx]) + copy(dAtA[i:], x.Denoms[iNdEx]) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Denoms[iNdEx]))) + i-- + dAtA[i] = 0x12 + } + } + if len(x.Signer) > 0 { + i -= len(x.Signer) + copy(dAtA[i:], x.Signer) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Signer))) + 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().(*MsgSetAllowedDenoms) + 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: MsgSetAllowedDenoms: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgSetAllowedDenoms: 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 Signer", 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.Signer = 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 Denoms", 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.Denoms = append(x.Denoms, 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_MsgSetAllowedDenomsResponse protoreflect.MessageDescriptor +) + +func init() { + file_noble_forwarding_v1_tx_proto_init() + md_MsgSetAllowedDenomsResponse = File_noble_forwarding_v1_tx_proto.Messages().ByName("MsgSetAllowedDenomsResponse") +} + +var _ protoreflect.Message = (*fastReflection_MsgSetAllowedDenomsResponse)(nil) + +type fastReflection_MsgSetAllowedDenomsResponse MsgSetAllowedDenomsResponse + +func (x *MsgSetAllowedDenomsResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgSetAllowedDenomsResponse)(x) +} + +func (x *MsgSetAllowedDenomsResponse) slowProtoReflect() protoreflect.Message { + mi := &file_noble_forwarding_v1_tx_proto_msgTypes[5] + 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_MsgSetAllowedDenomsResponse_messageType fastReflection_MsgSetAllowedDenomsResponse_messageType +var _ protoreflect.MessageType = fastReflection_MsgSetAllowedDenomsResponse_messageType{} + +type fastReflection_MsgSetAllowedDenomsResponse_messageType struct{} + +func (x fastReflection_MsgSetAllowedDenomsResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgSetAllowedDenomsResponse)(nil) +} +func (x fastReflection_MsgSetAllowedDenomsResponse_messageType) New() protoreflect.Message { + return new(fastReflection_MsgSetAllowedDenomsResponse) +} +func (x fastReflection_MsgSetAllowedDenomsResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgSetAllowedDenomsResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgSetAllowedDenomsResponse) Descriptor() protoreflect.MessageDescriptor { + return md_MsgSetAllowedDenomsResponse +} + +// 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_MsgSetAllowedDenomsResponse) Type() protoreflect.MessageType { + return _fastReflection_MsgSetAllowedDenomsResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgSetAllowedDenomsResponse) New() protoreflect.Message { + return new(fastReflection_MsgSetAllowedDenomsResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgSetAllowedDenomsResponse) Interface() protoreflect.ProtoMessage { + return (*MsgSetAllowedDenomsResponse)(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_MsgSetAllowedDenomsResponse) 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_MsgSetAllowedDenomsResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: noble.forwarding.v1.MsgSetAllowedDenomsResponse")) + } + panic(fmt.Errorf("message noble.forwarding.v1.MsgSetAllowedDenomsResponse 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_MsgSetAllowedDenomsResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: noble.forwarding.v1.MsgSetAllowedDenomsResponse")) + } + panic(fmt.Errorf("message noble.forwarding.v1.MsgSetAllowedDenomsResponse 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_MsgSetAllowedDenomsResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: noble.forwarding.v1.MsgSetAllowedDenomsResponse")) + } + panic(fmt.Errorf("message noble.forwarding.v1.MsgSetAllowedDenomsResponse 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_MsgSetAllowedDenomsResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: noble.forwarding.v1.MsgSetAllowedDenomsResponse")) + } + panic(fmt.Errorf("message noble.forwarding.v1.MsgSetAllowedDenomsResponse 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_MsgSetAllowedDenomsResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: noble.forwarding.v1.MsgSetAllowedDenomsResponse")) + } + panic(fmt.Errorf("message noble.forwarding.v1.MsgSetAllowedDenomsResponse 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_MsgSetAllowedDenomsResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: noble.forwarding.v1.MsgSetAllowedDenomsResponse")) + } + panic(fmt.Errorf("message noble.forwarding.v1.MsgSetAllowedDenomsResponse 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_MsgSetAllowedDenomsResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in noble.forwarding.v1.MsgSetAllowedDenomsResponse", 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_MsgSetAllowedDenomsResponse) 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_MsgSetAllowedDenomsResponse) 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_MsgSetAllowedDenomsResponse) 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_MsgSetAllowedDenomsResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgSetAllowedDenomsResponse) + 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().(*MsgSetAllowedDenomsResponse) + 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().(*MsgSetAllowedDenomsResponse) + 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: MsgSetAllowedDenomsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgSetAllowedDenomsResponse: 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 @@ -2126,6 +3026,75 @@ func (*MsgClearAccountResponse) Descriptor() ([]byte, []int) { return file_noble_forwarding_v1_tx_proto_rawDescGZIP(), []int{3} } +type MsgSetAllowedDenoms struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Signer string `protobuf:"bytes,1,opt,name=signer,proto3" json:"signer,omitempty"` + Denoms []string `protobuf:"bytes,2,rep,name=denoms,proto3" json:"denoms,omitempty"` +} + +func (x *MsgSetAllowedDenoms) Reset() { + *x = MsgSetAllowedDenoms{} + if protoimpl.UnsafeEnabled { + mi := &file_noble_forwarding_v1_tx_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgSetAllowedDenoms) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgSetAllowedDenoms) ProtoMessage() {} + +// Deprecated: Use MsgSetAllowedDenoms.ProtoReflect.Descriptor instead. +func (*MsgSetAllowedDenoms) Descriptor() ([]byte, []int) { + return file_noble_forwarding_v1_tx_proto_rawDescGZIP(), []int{4} +} + +func (x *MsgSetAllowedDenoms) GetSigner() string { + if x != nil { + return x.Signer + } + return "" +} + +func (x *MsgSetAllowedDenoms) GetDenoms() []string { + if x != nil { + return x.Denoms + } + return nil +} + +type MsgSetAllowedDenomsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *MsgSetAllowedDenomsResponse) Reset() { + *x = MsgSetAllowedDenomsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_noble_forwarding_v1_tx_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgSetAllowedDenomsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgSetAllowedDenomsResponse) ProtoMessage() {} + +// Deprecated: Use MsgSetAllowedDenomsResponse.ProtoReflect.Descriptor instead. +func (*MsgSetAllowedDenomsResponse) Descriptor() ([]byte, []int) { + return file_noble_forwarding_v1_tx_proto_rawDescGZIP(), []int{5} +} + var File_noble_forwarding_v1_tx_proto protoreflect.FileDescriptor var file_noble_forwarding_v1_tx_proto_rawDesc = []byte{ @@ -2172,36 +3141,54 @@ var file_noble_forwarding_v1_tx_proto_rawDesc = []byte{ 0xb0, 0x2a, 0x1d, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x19, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x41, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xdd, 0x01, 0x0a, 0x03, - 0x4d, 0x73, 0x67, 0x12, 0x6b, 0x0a, 0x0f, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x41, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x27, 0x2e, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2e, 0x66, - 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, - 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x1a, - 0x2f, 0x2e, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2e, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, - 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, + 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9a, 0x01, 0x0a, 0x13, + 0x4d, 0x73, 0x67, 0x53, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x44, 0x65, 0x6e, + 0x6f, 0x6d, 0x73, 0x12, 0x30, 0x0a, 0x06, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, + 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x73, + 0x69, 0x67, 0x6e, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x73, 0x3a, 0x39, 0x88, + 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x82, 0xe7, 0xb0, 0x2a, 0x06, 0x73, 0x69, 0x67, 0x6e, + 0x65, 0x72, 0x8a, 0xe7, 0xb0, 0x2a, 0x21, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2f, 0x66, 0x6f, 0x72, + 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x53, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x6f, 0x77, + 0x65, 0x64, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x73, 0x22, 0x1d, 0x0a, 0x1b, 0x4d, 0x73, 0x67, 0x53, + 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xcd, 0x02, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x12, + 0x6b, 0x0a, 0x0f, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x27, 0x2e, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2e, 0x66, 0x6f, 0x72, 0x77, 0x61, + 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, + 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x2f, 0x2e, 0x6e, 0x6f, + 0x62, 0x6c, 0x65, 0x2e, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x76, + 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x62, 0x0a, 0x0c, + 0x43, 0x6c, 0x65, 0x61, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x24, 0x2e, 0x6e, + 0x6f, 0x62, 0x6c, 0x65, 0x2e, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, + 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x1a, 0x2c, 0x2e, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2e, 0x66, 0x6f, 0x72, 0x77, 0x61, + 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x62, 0x0a, 0x0c, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x12, 0x24, 0x2e, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2e, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, - 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x41, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x2c, 0x2e, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2e, 0x66, - 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, - 0x43, 0x6c, 0x65, 0x61, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0xdc, 0x01, 0x0a, 0x17, - 0x63, 0x6f, 0x6d, 0x2e, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2e, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, - 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, - 0x50, 0x01, 0x5a, 0x4a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6e, - 0x6f, 0x62, 0x6c, 0x65, 0x2d, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x66, 0x6f, 0x72, 0x77, - 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x32, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6e, 0x6f, - 0x62, 0x6c, 0x65, 0x2f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x76, - 0x31, 0x3b, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x76, 0x31, 0xa2, 0x02, - 0x03, 0x4e, 0x46, 0x58, 0xaa, 0x02, 0x13, 0x4e, 0x6f, 0x62, 0x6c, 0x65, 0x2e, 0x46, 0x6f, 0x72, - 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x13, 0x4e, 0x6f, 0x62, - 0x6c, 0x65, 0x5c, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, - 0xe2, 0x02, 0x1f, 0x4e, 0x6f, 0x62, 0x6c, 0x65, 0x5c, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, - 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0xea, 0x02, 0x15, 0x4e, 0x6f, 0x62, 0x6c, 0x65, 0x3a, 0x3a, 0x46, 0x6f, 0x72, 0x77, - 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, + 0x12, 0x6e, 0x0a, 0x10, 0x53, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x44, 0x65, + 0x6e, 0x6f, 0x6d, 0x73, 0x12, 0x28, 0x2e, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2e, 0x66, 0x6f, 0x72, + 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x53, 0x65, + 0x74, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x73, 0x1a, 0x30, + 0x2e, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2e, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, + 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x53, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x6f, 0x77, + 0x65, 0x64, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0xdc, 0x01, 0x0a, 0x17, 0x63, 0x6f, 0x6d, 0x2e, + 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2e, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, + 0x2e, 0x76, 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4a, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6e, 0x6f, 0x62, 0x6c, 0x65, + 0x2d, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, + 0x6e, 0x67, 0x2f, 0x76, 0x32, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6e, 0x6f, 0x62, 0x6c, 0x65, 0x2f, + 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x3b, 0x66, 0x6f, + 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x4e, 0x46, 0x58, + 0xaa, 0x02, 0x13, 0x4e, 0x6f, 0x62, 0x6c, 0x65, 0x2e, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, + 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x13, 0x4e, 0x6f, 0x62, 0x6c, 0x65, 0x5c, 0x46, + 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1f, 0x4e, + 0x6f, 0x62, 0x6c, 0x65, 0x5c, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5c, + 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, + 0x15, 0x4e, 0x6f, 0x62, 0x6c, 0x65, 0x3a, 0x3a, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, + 0x6e, 0x67, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2216,20 +3203,24 @@ func file_noble_forwarding_v1_tx_proto_rawDescGZIP() []byte { return file_noble_forwarding_v1_tx_proto_rawDescData } -var file_noble_forwarding_v1_tx_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_noble_forwarding_v1_tx_proto_msgTypes = make([]protoimpl.MessageInfo, 6) var file_noble_forwarding_v1_tx_proto_goTypes = []interface{}{ - (*MsgRegisterAccount)(nil), // 0: noble.forwarding.v1.MsgRegisterAccount - (*MsgRegisterAccountResponse)(nil), // 1: noble.forwarding.v1.MsgRegisterAccountResponse - (*MsgClearAccount)(nil), // 2: noble.forwarding.v1.MsgClearAccount - (*MsgClearAccountResponse)(nil), // 3: noble.forwarding.v1.MsgClearAccountResponse + (*MsgRegisterAccount)(nil), // 0: noble.forwarding.v1.MsgRegisterAccount + (*MsgRegisterAccountResponse)(nil), // 1: noble.forwarding.v1.MsgRegisterAccountResponse + (*MsgClearAccount)(nil), // 2: noble.forwarding.v1.MsgClearAccount + (*MsgClearAccountResponse)(nil), // 3: noble.forwarding.v1.MsgClearAccountResponse + (*MsgSetAllowedDenoms)(nil), // 4: noble.forwarding.v1.MsgSetAllowedDenoms + (*MsgSetAllowedDenomsResponse)(nil), // 5: noble.forwarding.v1.MsgSetAllowedDenomsResponse } var file_noble_forwarding_v1_tx_proto_depIdxs = []int32{ 0, // 0: noble.forwarding.v1.Msg.RegisterAccount:input_type -> noble.forwarding.v1.MsgRegisterAccount 2, // 1: noble.forwarding.v1.Msg.ClearAccount:input_type -> noble.forwarding.v1.MsgClearAccount - 1, // 2: noble.forwarding.v1.Msg.RegisterAccount:output_type -> noble.forwarding.v1.MsgRegisterAccountResponse - 3, // 3: noble.forwarding.v1.Msg.ClearAccount:output_type -> noble.forwarding.v1.MsgClearAccountResponse - 2, // [2:4] is the sub-list for method output_type - 0, // [0:2] is the sub-list for method input_type + 4, // 2: noble.forwarding.v1.Msg.SetAllowedDenoms:input_type -> noble.forwarding.v1.MsgSetAllowedDenoms + 1, // 3: noble.forwarding.v1.Msg.RegisterAccount:output_type -> noble.forwarding.v1.MsgRegisterAccountResponse + 3, // 4: noble.forwarding.v1.Msg.ClearAccount:output_type -> noble.forwarding.v1.MsgClearAccountResponse + 5, // 5: noble.forwarding.v1.Msg.SetAllowedDenoms:output_type -> noble.forwarding.v1.MsgSetAllowedDenomsResponse + 3, // [3:6] is the sub-list for method output_type + 0, // [0:3] is the sub-list for method input_type 0, // [0:0] is the sub-list for extension type_name 0, // [0:0] is the sub-list for extension extendee 0, // [0:0] is the sub-list for field type_name @@ -2289,6 +3280,30 @@ func file_noble_forwarding_v1_tx_proto_init() { return nil } } + file_noble_forwarding_v1_tx_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgSetAllowedDenoms); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_noble_forwarding_v1_tx_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgSetAllowedDenomsResponse); 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{ @@ -2296,7 +3311,7 @@ func file_noble_forwarding_v1_tx_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_noble_forwarding_v1_tx_proto_rawDesc, NumEnums: 0, - NumMessages: 4, + NumMessages: 6, NumExtensions: 0, NumServices: 1, }, diff --git a/api/noble/forwarding/v1/tx_grpc.pb.go b/api/noble/forwarding/v1/tx_grpc.pb.go index 1f0b3b6..d9b116f 100644 --- a/api/noble/forwarding/v1/tx_grpc.pb.go +++ b/api/noble/forwarding/v1/tx_grpc.pb.go @@ -19,8 +19,9 @@ import ( const _ = grpc.SupportPackageIsVersion7 const ( - Msg_RegisterAccount_FullMethodName = "/noble.forwarding.v1.Msg/RegisterAccount" - Msg_ClearAccount_FullMethodName = "/noble.forwarding.v1.Msg/ClearAccount" + Msg_RegisterAccount_FullMethodName = "/noble.forwarding.v1.Msg/RegisterAccount" + Msg_ClearAccount_FullMethodName = "/noble.forwarding.v1.Msg/ClearAccount" + Msg_SetAllowedDenoms_FullMethodName = "/noble.forwarding.v1.Msg/SetAllowedDenoms" ) // MsgClient is the client API for Msg service. @@ -29,6 +30,7 @@ const ( type MsgClient interface { RegisterAccount(ctx context.Context, in *MsgRegisterAccount, opts ...grpc.CallOption) (*MsgRegisterAccountResponse, error) ClearAccount(ctx context.Context, in *MsgClearAccount, opts ...grpc.CallOption) (*MsgClearAccountResponse, error) + SetAllowedDenoms(ctx context.Context, in *MsgSetAllowedDenoms, opts ...grpc.CallOption) (*MsgSetAllowedDenomsResponse, error) } type msgClient struct { @@ -57,12 +59,22 @@ func (c *msgClient) ClearAccount(ctx context.Context, in *MsgClearAccount, opts return out, nil } +func (c *msgClient) SetAllowedDenoms(ctx context.Context, in *MsgSetAllowedDenoms, opts ...grpc.CallOption) (*MsgSetAllowedDenomsResponse, error) { + out := new(MsgSetAllowedDenomsResponse) + err := c.cc.Invoke(ctx, Msg_SetAllowedDenoms_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 type MsgServer interface { RegisterAccount(context.Context, *MsgRegisterAccount) (*MsgRegisterAccountResponse, error) ClearAccount(context.Context, *MsgClearAccount) (*MsgClearAccountResponse, error) + SetAllowedDenoms(context.Context, *MsgSetAllowedDenoms) (*MsgSetAllowedDenomsResponse, error) mustEmbedUnimplementedMsgServer() } @@ -76,6 +88,9 @@ func (UnimplementedMsgServer) RegisterAccount(context.Context, *MsgRegisterAccou func (UnimplementedMsgServer) ClearAccount(context.Context, *MsgClearAccount) (*MsgClearAccountResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ClearAccount not implemented") } +func (UnimplementedMsgServer) SetAllowedDenoms(context.Context, *MsgSetAllowedDenoms) (*MsgSetAllowedDenomsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SetAllowedDenoms not implemented") +} func (UnimplementedMsgServer) mustEmbedUnimplementedMsgServer() {} // UnsafeMsgServer may be embedded to opt out of forward compatibility for this service. @@ -125,6 +140,24 @@ func _Msg_ClearAccount_Handler(srv interface{}, ctx context.Context, dec func(in return interceptor(ctx, in, info, handler) } +func _Msg_SetAllowedDenoms_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgSetAllowedDenoms) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).SetAllowedDenoms(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Msg_SetAllowedDenoms_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).SetAllowedDenoms(ctx, req.(*MsgSetAllowedDenoms)) + } + 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) @@ -140,6 +173,10 @@ var Msg_ServiceDesc = grpc.ServiceDesc{ MethodName: "ClearAccount", Handler: _Msg_ClearAccount_Handler, }, + { + MethodName: "SetAllowedDenoms", + Handler: _Msg_SetAllowedDenoms_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "noble/forwarding/v1/tx.proto", diff --git a/e2e/forwarding_test.go b/e2e/forwarding_test.go index 16f2512..c0bb198 100644 --- a/e2e/forwarding_test.go +++ b/e2e/forwarding_test.go @@ -11,6 +11,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/gogoproto/jsonpb" transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + "github.com/icza/dyno" forwardingtypes "github.com/noble-assets/forwarding/v2/x/forwarding/types" "github.com/strangelove-ventures/interchaintest/v8" "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" @@ -25,7 +26,7 @@ import ( func TestRegisterOnNoble(t *testing.T) { t.Parallel() - ctx, noble, gaia, _, _, sender, _, receiver := ForwardingSuite(t) + ctx, noble, gaia, _, _, sender, _, receiver := ForwardingSuite(t, nil) validator := noble.Validators[0] address, exists := ForwardingAccount(t, ctx, validator, receiver, "") @@ -68,7 +69,7 @@ func TestRegisterOnNoble(t *testing.T) { func TestRegisterViaTransfer(t *testing.T) { t.Parallel() - ctx, noble, gaia, _, _, _, _, receiver := ForwardingSuite(t) + ctx, noble, gaia, _, _, _, _, receiver := ForwardingSuite(t, nil) validator := noble.Validators[0] address, exists := ForwardingAccount(t, ctx, validator, receiver, "") @@ -113,7 +114,7 @@ func TestRegisterViaPacket(t *testing.T) { func TestFrontRunAccount(t *testing.T) { t.Parallel() - ctx, noble, gaia, _, _, sender, _, receiver := ForwardingSuite(t) + ctx, noble, gaia, _, _, sender, _, receiver := ForwardingSuite(t, nil) validator := noble.Validators[0] address, exists := ForwardingAccount(t, ctx, validator, receiver, "") @@ -160,7 +161,7 @@ func TestFrontRunAccount(t *testing.T) { func TestClearAccount(t *testing.T) { t.Parallel() - ctx, noble, gaia, rly, execReporter, sender, _, receiver := ForwardingSuite(t) + ctx, noble, gaia, rly, execReporter, sender, _, receiver := ForwardingSuite(t, nil) validator := noble.Validators[0] require.NoError(t, rly.StopRelayer(ctx, execReporter)) @@ -228,7 +229,7 @@ func TestClearAccount(t *testing.T) { func TestFallbackAccount(t *testing.T) { t.Parallel() - ctx, noble, gaia, rly, execReporter, sender, fallback, receiver := ForwardingSuite(t) + ctx, noble, gaia, rly, execReporter, sender, fallback, receiver := ForwardingSuite(t, nil) validator := noble.Validators[0] require.NoError(t, rly.StopRelayer(ctx, execReporter)) @@ -301,8 +302,79 @@ func TestFallbackAccount(t *testing.T) { require.Equal(t, sdk.NewCoins(sdk.NewCoin("uusdc", math.NewInt(1_000_000))), stats.TotalForwarded) } +func TestAllowedDenoms(t *testing.T) { + t.Parallel() + + ctx, noble, gaia, _, _, sender, fallback, receiver := ForwardingSuite(t, &[]string{"uusdc"}) + validator := noble.Validators[0] + + res := ForwardingDenoms(t, ctx, validator) + require.Len(t, res.AllowedDenoms, 1) + require.Contains(t, res.AllowedDenoms, "uusdc") + + address, exists := ForwardingAccount(t, ctx, validator, receiver, fallback.FormattedAddress()) + require.False(t, exists) + + _, err := gaia.SendIBCTransfer(ctx, "channel-0", receiver.KeyName(), ibc.WalletAmount{ + Address: address, + Denom: "uatom", + Amount: math.NewInt(100_000), + }, ibc.TransferOptions{ + Memo: fmt.Sprintf("{\"noble\":{\"forwarding\":{\"recipient\":\"%s\",\"fallback\":\"%s\"}}}", receiver.FormattedAddress(), fallback.FormattedAddress()), + }) + require.NoError(t, err) + + require.NoError(t, testutil.WaitForBlocks(ctx, 10, noble, gaia)) + + _, exists = ForwardingAccount(t, ctx, validator, receiver, fallback.FormattedAddress()) + require.True(t, exists) + + balance, err := noble.BankQueryAllBalances(ctx, address) + require.NoError(t, err) + uatom := transfertypes.DenomTrace{Path: "transfer/channel-0", BaseDenom: "uatom"}.IBCDenom() + require.Equal(t, sdk.NewCoins(sdk.NewCoin(uatom, math.NewInt(100_000))), balance) + + require.NoError(t, validator.BankSend(ctx, sender.KeyName(), ibc.WalletAmount{ + Address: address, + Denom: "uusdc", + Amount: math.NewInt(1_000_000), + })) + require.NoError(t, testutil.WaitForBlocks(ctx, 10, noble, gaia)) + + balance, err = noble.BankQueryAllBalances(ctx, address) + require.NoError(t, err) + require.Equal(t, sdk.NewCoins(sdk.NewCoin(uatom, math.NewInt(100_000))), balance) + + _, err = validator.ExecTx(ctx, sender.KeyName(), "forwarding", "clear-account", address, "--fallback") + require.NoError(t, err) + require.NoError(t, testutil.WaitForBlocks(ctx, 10, noble, gaia)) + + balance, err = noble.BankQueryAllBalances(ctx, address) + require.NoError(t, err) + require.True(t, balance.IsZero()) + + fallbackBalance, err := noble.BankQueryAllBalances(ctx, fallback.FormattedAddress()) + require.NoError(t, err) + require.Equal(t, sdk.NewCoins(sdk.NewCoin(uatom, math.NewInt(100_000))), fallbackBalance) + + stats := ForwardingStats(t, ctx, validator) + require.Equal(t, uint64(1), stats.NumOfAccounts) + require.Equal(t, uint64(1), stats.NumOfForwards) + require.Equal(t, sdk.NewCoins(sdk.NewCoin("uusdc", math.NewInt(1_000_000))), stats.TotalForwarded) +} + // +func ForwardingDenoms(t *testing.T, ctx context.Context, validator *cosmos.ChainNode) forwardingtypes.QueryDenomsResponse { + raw, _, err := validator.ExecQuery(ctx, "forwarding", "denoms") + require.NoError(t, err) + + var res forwardingtypes.QueryDenomsResponse + require.NoError(t, json.Unmarshal(raw, &res)) + + return res +} + func ForwardingAccount(t *testing.T, ctx context.Context, validator *cosmos.ChainNode, receiver ibc.Wallet, fallback string) (address string, exists bool) { var raw []byte var err error @@ -354,7 +426,7 @@ func TxFee(t *testing.T, ctx context.Context, validator *cosmos.ChainNode, hash return res.Tx.AuthInfo.Fee.Amount } -func ForwardingSuite(t *testing.T) (ctx context.Context, noble *cosmos.CosmosChain, gaia *cosmos.CosmosChain, relayer *rly.CosmosRelayer, execReporter *testreporter.RelayerExecReporter, sender ibc.Wallet, fallback ibc.Wallet, receiver ibc.Wallet) { +func ForwardingSuite(t *testing.T, denoms *[]string) (ctx context.Context, noble *cosmos.CosmosChain, gaia *cosmos.CosmosChain, relayer *rly.CosmosRelayer, execReporter *testreporter.RelayerExecReporter, sender ibc.Wallet, fallback ibc.Wallet, receiver ibc.Wallet) { ctx = context.Background() logger := zaptest.NewLogger(t) reporter := testreporter.NewNopReporter() @@ -387,6 +459,27 @@ func ForwardingSuite(t *testing.T) (ctx context.Context, noble *cosmos.CosmosCha GasAdjustment: 5, TrustingPeriod: "504h", NoHostMount: false, + ModifyGenesis: func(cfg ibc.ChainConfig, bz []byte) ([]byte, error) { + if denoms == nil { + return bz, nil + } + + gen := make(map[string]interface{}) + if err := json.Unmarshal(bz, &gen); err != nil { + return nil, fmt.Errorf("failed to unmarshal genesis: %w", err) + } + + if err := dyno.Set(gen, denoms, "app_state", "forwarding", "allowed_denoms"); err != nil { + return nil, fmt.Errorf("failed to set forwarding allowed denoms in genesis: %w", err) + } + + bz, err := json.Marshal(&gen) + if err != nil { + return nil, fmt.Errorf("failed to marshal genesis: %w", err) + } + + return bz, nil + }, }, }, { diff --git a/local.sh b/local.sh index cce2846..f5c0e7e 100644 --- a/local.sh +++ b/local.sh @@ -15,6 +15,8 @@ if ! [ -f .forwarding/data/priv_validator_state.json ]; then forwardingd keys add validator --home .forwarding --keyring-backend test &> /dev/null forwardingd genesis add-genesis-account validator 1000000ustake --home .forwarding --keyring-backend test + forwardingd keys add authority --recover --home .forwarding --keyring-backend test <<< "exchange flash debris claw calm shine laundry february cousin glad name miss jar neglect reflect blanket orbit clever educate rent inject lounge pupil plastic" &> /dev/null + forwardingd genesis add-genesis-account authority 10000000uusdc --home .forwarding --keyring-backend test forwardingd keys add user --home .forwarding --keyring-backend test &> /dev/null forwardingd genesis add-genesis-account user 10000000uusdc --home .forwarding --keyring-backend test diff --git a/proto/noble/forwarding/module/v1/module.proto b/proto/noble/forwarding/module/v1/module.proto index e210402..95447b2 100644 --- a/proto/noble/forwarding/module/v1/module.proto +++ b/proto/noble/forwarding/module/v1/module.proto @@ -7,4 +7,7 @@ import "cosmos/app/v1alpha1/module.proto"; // Module is the config object of the Forwarding module. message Module { option (cosmos.app.v1alpha1.module) = {go_import: "github.com/noble-assets/forwarding/v2/x/forwarding"}; + + // authority defines the custom module authority. + string authority = 1; } diff --git a/proto/noble/forwarding/v1/genesis.proto b/proto/noble/forwarding/v1/genesis.proto index 307f840..f830de4 100644 --- a/proto/noble/forwarding/v1/genesis.proto +++ b/proto/noble/forwarding/v1/genesis.proto @@ -5,7 +5,8 @@ package noble.forwarding.v1; option go_package = "github.com/noble-assets/forwarding/v2/x/forwarding/types"; message GenesisState { - map num_of_accounts = 1; - map num_of_forwards = 2; - map total_forwarded = 3; + repeated string allowed_denoms = 1; + map num_of_accounts = 2; + map num_of_forwards = 3; + map total_forwarded = 4; } diff --git a/proto/noble/forwarding/v1/query.proto b/proto/noble/forwarding/v1/query.proto index 3960378..8bc7810 100644 --- a/proto/noble/forwarding/v1/query.proto +++ b/proto/noble/forwarding/v1/query.proto @@ -12,6 +12,11 @@ import "google/api/annotations.proto"; option go_package = "github.com/noble-assets/forwarding/v2/x/forwarding/types"; service Query { + rpc Denoms(QueryDenoms) returns (QueryDenomsResponse) { + option (cosmos.query.v1.module_query_safe) = true; + option (google.api.http).get = "/noble/forwarding/v1/denoms"; + } + rpc Address(QueryAddress) returns (QueryAddressResponse) { option (cosmos.query.v1.module_query_safe) = true; option (google.api.http).get = "/noble/forwarding/v1/address/{channel}/{recipient}/{fallback}"; @@ -30,6 +35,12 @@ service Query { // +message QueryDenoms {} + +message QueryDenomsResponse { + repeated string allowed_denoms = 1 [(amino.dont_omitempty) = true]; +} + message QueryAddress { option (gogoproto.equal) = false; option (gogoproto.goproto_getters) = false; diff --git a/proto/noble/forwarding/v1/tx.proto b/proto/noble/forwarding/v1/tx.proto index 01acca3..0e8479e 100644 --- a/proto/noble/forwarding/v1/tx.proto +++ b/proto/noble/forwarding/v1/tx.proto @@ -14,6 +14,8 @@ service Msg { rpc RegisterAccount(noble.forwarding.v1.MsgRegisterAccount) returns (noble.forwarding.v1.MsgRegisterAccountResponse); rpc ClearAccount(noble.forwarding.v1.MsgClearAccount) returns (noble.forwarding.v1.MsgClearAccountResponse); + + rpc SetAllowedDenoms(noble.forwarding.v1.MsgSetAllowedDenoms) returns (noble.forwarding.v1.MsgSetAllowedDenomsResponse); } // @@ -48,3 +50,16 @@ message MsgClearAccount { } message MsgClearAccountResponse {} + +message MsgSetAllowedDenoms { + option (cosmos.msg.v1.signer) = "signer"; + option (amino.name) = "noble/forwarding/SetAllowedDenoms"; + + option (gogoproto.equal) = false; + option (gogoproto.goproto_getters) = false; + + string signer = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + repeated string denoms = 2; +} + +message MsgSetAllowedDenomsResponse {} diff --git a/simapp/app.yaml b/simapp/app.yaml index 01ad2b2..c6534d7 100644 --- a/simapp/app.yaml +++ b/simapp/app.yaml @@ -53,3 +53,6 @@ modules: - name: forwarding config: "@type": noble.forwarding.module.v1.Module + # NOTE: This is a dummy account used for local testing. + # exchange flash debris claw calm shine laundry february cousin glad name miss jar neglect reflect blanket orbit clever educate rent inject lounge pupil plastic + authority: noble1h8tqx833l3t2s45mwxjz29r85dcevy93wk63za diff --git a/x/forwarding/genesis.go b/x/forwarding/genesis.go index bab8aca..ddea37f 100644 --- a/x/forwarding/genesis.go +++ b/x/forwarding/genesis.go @@ -9,6 +9,10 @@ import ( ) func InitGenesis(ctx context.Context, k *keeper.Keeper, genesis types.GenesisState) { + for _, denom := range genesis.AllowedDenoms { + _ = k.AllowedDenoms.Set(ctx, denom) + } + for channel, count := range genesis.NumOfAccounts { _ = k.NumOfAccounts.Set(ctx, channel, count) } @@ -24,6 +28,7 @@ func InitGenesis(ctx context.Context, k *keeper.Keeper, genesis types.GenesisSta func ExportGenesis(ctx sdk.Context, k *keeper.Keeper) *types.GenesisState { return &types.GenesisState{ + AllowedDenoms: k.GetAllowedDenoms(ctx), NumOfAccounts: k.GetAllNumOfAccounts(ctx), NumOfForwards: k.GetAllNumOfForwards(ctx), TotalForwarded: k.GetAllTotalForwarded(ctx), diff --git a/x/forwarding/keeper/keeper.go b/x/forwarding/keeper/keeper.go index e085d4f..767aa64 100644 --- a/x/forwarding/keeper/keeper.go +++ b/x/forwarding/keeper/keeper.go @@ -24,7 +24,10 @@ type Keeper struct { transientService store.TransientStoreService headerService header.Service + authority string + Schema collections.Schema + AllowedDenoms collections.KeySet[string] NumOfAccounts collections.Map[string, uint64] NumOfForwards collections.Map[string, uint64] TotalForwarded collections.Map[string, string] @@ -44,6 +47,7 @@ func NewKeeper( storeService store.KVStoreService, transientService store.TransientStoreService, headerService header.Service, + authority string, accountKeeper types.AccountKeeper, bankKeeper types.BankKeeper, channelKeeper types.ChannelKeeper, @@ -59,6 +63,9 @@ func NewKeeper( transientService: transientService, headerService: headerService, + authority: authority, + + AllowedDenoms: collections.NewKeySet(builder, types.AllowedDenomsPrefix, "allowed_denoms", collections.StringKey), NumOfAccounts: collections.NewMap(builder, types.NumOfAccountsPrefix, "num_of_accounts", collections.StringKey, collections.Uint64Value), NumOfForwards: collections.NewMap(builder, types.NumOfForwardsPrefix, "num_of_forwards", collections.StringKey, collections.Uint64Value), TotalForwarded: collections.NewMap(builder, types.TotalForwardedPrefix, "total_forwarded", collections.StringKey, collections.StringValue), @@ -85,6 +92,17 @@ func NewKeeper( return keeper } +// IsAllowedDenom checks if a specific denom is allowed to be forwarded. +func (k *Keeper) IsAllowedDenom(ctx context.Context, denom string) bool { + has, _ := k.AllowedDenoms.Has(ctx, "*") + if has { + return true + } + + has, _ = k.AllowedDenoms.Has(ctx, denom) + return has +} + // ExecuteForwards is an end block hook that clears all pending forwards from transient state. func (k *Keeper) ExecuteForwards(ctx context.Context) { forwards := k.GetPendingForwards(ctx) @@ -102,6 +120,10 @@ func (k *Keeper) ExecuteForwards(ctx context.Context) { balances := k.bankKeeper.GetAllBalances(ctx, forward.GetAddress()) for _, balance := range balances { + if !k.IsAllowedDenom(ctx, balance.Denom) { + continue + } + timeout := uint64(k.headerService.GetHeaderInfo(ctx).Time.UnixNano()) + transfertypes.DefaultRelativePacketTimeoutTimestamp _, err := k.transferKeeper.Transfer(ctx, &transfertypes.MsgTransfer{ SourcePort: transfertypes.PortID, diff --git a/x/forwarding/keeper/msg_server.go b/x/forwarding/keeper/msg_server.go index f94ee3b..7f343af 100644 --- a/x/forwarding/keeper/msg_server.go +++ b/x/forwarding/keeper/msg_server.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" + sdkerrors "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" @@ -116,3 +117,25 @@ func (k *Keeper) ClearAccount(ctx context.Context, msg *types.MsgClearAccount) ( return &types.MsgClearAccountResponse{}, nil } + +func (k *Keeper) SetAllowedDenoms(ctx context.Context, msg *types.MsgSetAllowedDenoms) (*types.MsgSetAllowedDenomsResponse, error) { + if msg.Signer != k.authority { + return nil, sdkerrors.Wrapf(types.ErrInvalidAuthority, "expected %s, got %s", k.authority, msg.Signer) + } + + if err := types.ValidateAllowedDenoms(msg.Denoms); err != nil { + return nil, sdkerrors.Wrap(types.ErrInvalidDenoms, err.Error()) + } + + for _, denom := range k.GetAllowedDenoms(ctx) { + _ = k.AllowedDenoms.Remove(ctx, denom) + } + for _, denom := range msg.Denoms { + err := k.AllowedDenoms.Set(ctx, denom) + if err != nil { + return nil, fmt.Errorf("failed to set %s as allowed denom in state", denom) + } + } + + return &types.MsgSetAllowedDenomsResponse{}, nil +} diff --git a/x/forwarding/keeper/query_server.go b/x/forwarding/keeper/query_server.go index e82dc65..5e101df 100644 --- a/x/forwarding/keeper/query_server.go +++ b/x/forwarding/keeper/query_server.go @@ -12,6 +12,16 @@ import ( var _ types.QueryServer = &Keeper{} +func (k *Keeper) Denoms(ctx context.Context, req *types.QueryDenoms) (*types.QueryDenomsResponse, error) { + if req == nil { + return nil, errorstypes.ErrInvalidRequest + } + + allowedDenoms := k.GetAllowedDenoms(ctx) + + return &types.QueryDenomsResponse{AllowedDenoms: allowedDenoms}, nil +} + func (k *Keeper) Address(ctx context.Context, req *types.QueryAddress) (*types.QueryAddressResponse, error) { if req == nil { return nil, errorstypes.ErrInvalidRequest diff --git a/x/forwarding/keeper/state.go b/x/forwarding/keeper/state.go index 5d9a412..7024742 100644 --- a/x/forwarding/keeper/state.go +++ b/x/forwarding/keeper/state.go @@ -9,6 +9,17 @@ import ( // PERSISTENT STATE +func (k *Keeper) GetAllowedDenoms(ctx context.Context) []string { + var denoms []string + + _ = k.AllowedDenoms.Walk(ctx, nil, func(denom string) (stop bool, err error) { + denoms = append(denoms, denom) + return false, nil + }) + + return denoms +} + func (k *Keeper) GetAllNumOfAccounts(ctx context.Context) map[string]uint64 { counts := make(map[string]uint64) diff --git a/x/forwarding/module.go b/x/forwarding/module.go index 409b6dd..d488910 100644 --- a/x/forwarding/module.go +++ b/x/forwarding/module.go @@ -17,6 +17,7 @@ import ( codectypes "github.com/cosmos/cosmos-sdk/codec/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" "github.com/grpc-ecosystem/grpc-gateway/runtime" modulev1 "github.com/noble-assets/forwarding/v2/api/noble/forwarding/module/v1" @@ -153,11 +154,25 @@ func (AppModule) AutoCLIOptions() *autocliv1.ModuleOptions { }, PositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: "address"}}, }, + { + RpcMethod: "SetAllowedDenoms", + Use: "set-allowed-denoms [denoms ...]", + Short: "Set the list of denoms that are allowed to be forwarded", + PositionalArgs: []*autocliv1.PositionalArgDescriptor{{ + ProtoField: "denoms", + Varargs: true, + }}, + }, }, }, Query: &autocliv1.ServiceCommandDescriptor{ Service: forwardingv1.Query_ServiceDesc.ServiceName, RpcCommandOptions: []*autocliv1.RpcCommandOptions{ + { + RpcMethod: "Denoms", + Use: "denoms", + Short: "Query denoms that are allowed to be forwarded", + }, { RpcMethod: "Address", Use: "address [channel] [recipient] (fallback)", @@ -219,12 +234,18 @@ type ModuleOutputs struct { } func ProvideModule(in ModuleInputs) ModuleOutputs { + if in.Config.Authority == "" { + panic("authority for x/forwarding module must be set") + } + + authority := authtypes.NewModuleAddressOrBech32Address(in.Config.Authority) k := keeper.NewKeeper( in.Cdc, in.Logger, in.StoreService, in.TransientService, in.HeaderService, + authority.String(), in.AccountKeeper, in.BankKeeper, nil, diff --git a/x/forwarding/types/codec.go b/x/forwarding/types/codec.go index 18ea256..b5aa3fb 100644 --- a/x/forwarding/types/codec.go +++ b/x/forwarding/types/codec.go @@ -21,13 +21,17 @@ func init() { func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { cdc.RegisterConcrete(&MsgRegisterAccount{}, "noble/forwarding/RegisterAccount", nil) cdc.RegisterConcrete(&MsgClearAccount{}, "noble/forwarding/ClearAccount", nil) + cdc.RegisterConcrete(&MsgSetAllowedDenoms{}, "noble/forwarding/SetAllowedDenoms", nil) } func RegisterInterfaces(registry codectypes.InterfaceRegistry) { registry.RegisterImplementations((*sdk.AccountI)(nil), &ForwardingAccount{}) registry.RegisterImplementations((*authtypes.GenesisAccount)(nil), &ForwardingAccount{}) - registry.RegisterImplementations((*sdk.Msg)(nil), &MsgRegisterAccount{}) - registry.RegisterImplementations((*sdk.Msg)(nil), &MsgClearAccount{}) + registry.RegisterImplementations((*sdk.Msg)(nil), + &MsgRegisterAccount{}, + &MsgClearAccount{}, + &MsgSetAllowedDenoms{}, + ) msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) } diff --git a/x/forwarding/types/errors.go b/x/forwarding/types/errors.go new file mode 100644 index 0000000..dbd30ec --- /dev/null +++ b/x/forwarding/types/errors.go @@ -0,0 +1,8 @@ +package types + +import "cosmossdk.io/errors" + +var ( + ErrInvalidAuthority = errors.Register(ModuleName, 1, "signer is not authority") + ErrInvalidDenoms = errors.Register(ModuleName, 2, "invalid allowed denoms") +) diff --git a/x/forwarding/types/genesis.go b/x/forwarding/types/genesis.go index 1f928e1..f4cf96e 100644 --- a/x/forwarding/types/genesis.go +++ b/x/forwarding/types/genesis.go @@ -2,16 +2,24 @@ package types import ( "errors" + "slices" + "strings" sdk "github.com/cosmos/cosmos-sdk/types" channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" ) func DefaultGenesisState() *GenesisState { - return &GenesisState{} + return &GenesisState{ + AllowedDenoms: []string{"*"}, + } } func (gen *GenesisState) Validate() error { + if err := ValidateAllowedDenoms(gen.AllowedDenoms); err != nil { + return err + } + for channel := range gen.NumOfAccounts { if !channeltypes.IsValidChannelID(channel) { return errors.New("invalid channel") @@ -36,3 +44,17 @@ func (gen *GenesisState) Validate() error { return nil } + +func ValidateAllowedDenoms(denoms []string) error { + if slices.Contains(denoms, "*") && len(denoms) > 1 { + return errors.New("wildcard can only be present by itself") + } + + for _, denom := range denoms { + if strings.TrimSpace(denom) == "" { + return errors.New("cannot allow empty denom") + } + } + + return nil +} diff --git a/x/forwarding/types/genesis.pb.go b/x/forwarding/types/genesis.pb.go index 81d25b5..2389e71 100644 --- a/x/forwarding/types/genesis.pb.go +++ b/x/forwarding/types/genesis.pb.go @@ -23,9 +23,10 @@ var _ = math.Inf const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package type GenesisState struct { - NumOfAccounts map[string]uint64 `protobuf:"bytes,1,rep,name=num_of_accounts,json=numOfAccounts,proto3" json:"num_of_accounts,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` - NumOfForwards map[string]uint64 `protobuf:"bytes,2,rep,name=num_of_forwards,json=numOfForwards,proto3" json:"num_of_forwards,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` - TotalForwarded map[string]string `protobuf:"bytes,3,rep,name=total_forwarded,json=totalForwarded,proto3" json:"total_forwarded,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + AllowedDenoms []string `protobuf:"bytes,1,rep,name=allowed_denoms,json=allowedDenoms,proto3" json:"allowed_denoms,omitempty"` + NumOfAccounts map[string]uint64 `protobuf:"bytes,2,rep,name=num_of_accounts,json=numOfAccounts,proto3" json:"num_of_accounts,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + NumOfForwards map[string]uint64 `protobuf:"bytes,3,rep,name=num_of_forwards,json=numOfForwards,proto3" json:"num_of_forwards,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + TotalForwarded map[string]string `protobuf:"bytes,4,rep,name=total_forwarded,json=totalForwarded,proto3" json:"total_forwarded,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (m *GenesisState) Reset() { *m = GenesisState{} } @@ -61,6 +62,13 @@ func (m *GenesisState) XXX_DiscardUnknown() { var xxx_messageInfo_GenesisState proto.InternalMessageInfo +func (m *GenesisState) GetAllowedDenoms() []string { + if m != nil { + return m.AllowedDenoms + } + return nil +} + func (m *GenesisState) GetNumOfAccounts() map[string]uint64 { if m != nil { return m.NumOfAccounts @@ -92,27 +100,29 @@ func init() { func init() { proto.RegisterFile("noble/forwarding/v1/genesis.proto", fileDescriptor_672c6f172b8b6a10) } var fileDescriptor_672c6f172b8b6a10 = []byte{ - // 314 bytes of a gzipped FileDescriptorProto + // 345 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0xcc, 0xcb, 0x4f, 0xca, 0x49, 0xd5, 0x4f, 0xcb, 0x2f, 0x2a, 0x4f, 0x2c, 0x4a, 0xc9, 0xcc, 0x4b, 0xd7, 0x2f, 0x33, 0xd4, 0x4f, 0x4f, 0xcd, 0x4b, 0x2d, 0xce, 0x2c, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x06, - 0x2b, 0xd1, 0x43, 0x28, 0xd1, 0x2b, 0x33, 0x54, 0xfa, 0xc8, 0xcc, 0xc5, 0xe3, 0x0e, 0x51, 0x16, - 0x5c, 0x92, 0x58, 0x92, 0x2a, 0x14, 0xc3, 0xc5, 0x9f, 0x57, 0x9a, 0x1b, 0x9f, 0x9f, 0x16, 0x9f, - 0x98, 0x9c, 0x9c, 0x5f, 0x9a, 0x57, 0x52, 0x2c, 0xc1, 0xa8, 0xc0, 0xac, 0xc1, 0x6d, 0x64, 0xa2, - 0x87, 0x45, 0xbf, 0x1e, 0xb2, 0x5e, 0x3d, 0xbf, 0xd2, 0x5c, 0xff, 0x34, 0x47, 0xa8, 0x36, 0xd7, - 0xbc, 0x92, 0xa2, 0xca, 0x20, 0xde, 0x3c, 0x64, 0x31, 0x24, 0xd3, 0xa1, 0xc6, 0x14, 0x4b, 0x30, - 0x91, 0x64, 0xba, 0x1b, 0x54, 0x1b, 0xb2, 0xe9, 0x30, 0x31, 0xa1, 0x38, 0x2e, 0xfe, 0x92, 0xfc, - 0x92, 0xc4, 0x1c, 0x98, 0xe1, 0xa9, 0x29, 0x12, 0xcc, 0x60, 0xd3, 0x4d, 0x09, 0x9b, 0x1e, 0x02, - 0xd2, 0xe8, 0x06, 0xd3, 0x07, 0x31, 0x9e, 0xaf, 0x04, 0x45, 0x50, 0xca, 0x81, 0x4b, 0x08, 0xd3, - 0x8b, 0x42, 0x02, 0x5c, 0xcc, 0xd9, 0xa9, 0x95, 0x12, 0x8c, 0x0a, 0x8c, 0x1a, 0x9c, 0x41, 0x20, - 0xa6, 0x90, 0x08, 0x17, 0x6b, 0x59, 0x62, 0x4e, 0x69, 0xaa, 0x04, 0x93, 0x02, 0xa3, 0x06, 0x4b, - 0x10, 0x84, 0x63, 0xc5, 0x64, 0xc1, 0x08, 0x37, 0x01, 0xc5, 0x1b, 0x24, 0x99, 0xe0, 0xc8, 0x25, - 0x8c, 0xc5, 0xa9, 0x84, 0x8c, 0xe0, 0x44, 0x32, 0xc2, 0x29, 0xe8, 0xc4, 0x23, 0x39, 0xc6, 0x0b, - 0x8f, 0xe4, 0x18, 0x1f, 0x3c, 0x92, 0x63, 0x9c, 0xf0, 0x58, 0x8e, 0xe1, 0xc2, 0x63, 0x39, 0x86, - 0x1b, 0x8f, 0xe5, 0x18, 0xa2, 0x2c, 0xd2, 0x33, 0x4b, 0x32, 0x4a, 0x93, 0xf4, 0x92, 0xf3, 0x73, - 0xf5, 0xc1, 0x21, 0xa6, 0x9b, 0x58, 0x5c, 0x9c, 0x5a, 0x52, 0x8c, 0x92, 0xae, 0x8c, 0xf4, 0x2b, - 0x90, 0xf9, 0x25, 0x95, 0x05, 0xa9, 0xc5, 0x49, 0x6c, 0xe0, 0x34, 0x66, 0x0c, 0x08, 0x00, 0x00, - 0xff, 0xff, 0xd4, 0x0d, 0xd8, 0xb7, 0x88, 0x02, 0x00, 0x00, + 0x2b, 0xd1, 0x43, 0x28, 0xd1, 0x2b, 0x33, 0x54, 0x9a, 0xc1, 0xc2, 0xc5, 0xe3, 0x0e, 0x51, 0x16, + 0x5c, 0x92, 0x58, 0x92, 0x2a, 0xa4, 0xca, 0xc5, 0x97, 0x98, 0x93, 0x93, 0x5f, 0x9e, 0x9a, 0x12, + 0x9f, 0x92, 0x9a, 0x97, 0x9f, 0x5b, 0x2c, 0xc1, 0xa8, 0xc0, 0xac, 0xc1, 0x19, 0xc4, 0x0b, 0x15, + 0x75, 0x01, 0x0b, 0x0a, 0xc5, 0x70, 0xf1, 0xe7, 0x95, 0xe6, 0xc6, 0xe7, 0xa7, 0xc5, 0x27, 0x26, + 0x27, 0xe7, 0x97, 0xe6, 0x95, 0x14, 0x4b, 0x30, 0x29, 0x30, 0x6b, 0x70, 0x1b, 0x99, 0xe8, 0x61, + 0xb1, 0x46, 0x0f, 0xd9, 0x0a, 0x3d, 0xbf, 0xd2, 0x5c, 0xff, 0x34, 0x47, 0xa8, 0x36, 0xd7, 0xbc, + 0x92, 0xa2, 0xca, 0x20, 0xde, 0x3c, 0x64, 0x31, 0x24, 0xd3, 0xa1, 0xc6, 0x14, 0x4b, 0x30, 0x93, + 0x64, 0xba, 0x1b, 0x54, 0x1b, 0xb2, 0xe9, 0x30, 0x31, 0xa1, 0x38, 0x2e, 0xfe, 0x92, 0xfc, 0x92, + 0xc4, 0x1c, 0x98, 0xe1, 0xa9, 0x29, 0x12, 0x2c, 0x60, 0xd3, 0x4d, 0x09, 0x9b, 0x1e, 0x02, 0xd2, + 0xe8, 0x06, 0xd3, 0x07, 0x31, 0x9e, 0xaf, 0x04, 0x45, 0x50, 0xca, 0x81, 0x4b, 0x08, 0xd3, 0x8b, + 0x42, 0x02, 0x5c, 0xcc, 0xd9, 0xa9, 0x95, 0x12, 0x8c, 0x0a, 0x8c, 0x1a, 0x9c, 0x41, 0x20, 0xa6, + 0x90, 0x08, 0x17, 0x6b, 0x59, 0x62, 0x4e, 0x69, 0xaa, 0x04, 0x93, 0x02, 0xa3, 0x06, 0x4b, 0x10, + 0x84, 0x63, 0xc5, 0x64, 0xc1, 0x08, 0x37, 0x01, 0xc5, 0x1b, 0x24, 0x99, 0xe0, 0xc8, 0x25, 0x8c, + 0xc5, 0xa9, 0x84, 0x8c, 0xe0, 0x44, 0x32, 0xc2, 0x29, 0xe8, 0xc4, 0x23, 0x39, 0xc6, 0x0b, 0x8f, + 0xe4, 0x18, 0x1f, 0x3c, 0x92, 0x63, 0x9c, 0xf0, 0x58, 0x8e, 0xe1, 0xc2, 0x63, 0x39, 0x86, 0x1b, + 0x8f, 0xe5, 0x18, 0xa2, 0x2c, 0xd2, 0x33, 0x4b, 0x32, 0x4a, 0x93, 0xf4, 0x92, 0xf3, 0x73, 0xf5, + 0xc1, 0x21, 0xa6, 0x9b, 0x58, 0x5c, 0x9c, 0x5a, 0x52, 0x8c, 0x92, 0xfc, 0x8c, 0xf4, 0x2b, 0x90, + 0xf9, 0x25, 0x95, 0x05, 0xa9, 0xc5, 0x49, 0x6c, 0xe0, 0xa4, 0x68, 0x0c, 0x08, 0x00, 0x00, 0xff, + 0xff, 0xc8, 0xd5, 0x82, 0xfa, 0xaf, 0x02, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { @@ -151,7 +161,7 @@ func (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0xa i = encodeVarintGenesis(dAtA, i, uint64(baseI-i)) i-- - dAtA[i] = 0x1a + dAtA[i] = 0x22 } } if len(m.NumOfForwards) > 0 { @@ -168,7 +178,7 @@ func (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0xa i = encodeVarintGenesis(dAtA, i, uint64(baseI-i)) i-- - dAtA[i] = 0x12 + dAtA[i] = 0x1a } } if len(m.NumOfAccounts) > 0 { @@ -185,6 +195,15 @@ func (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0xa i = encodeVarintGenesis(dAtA, i, uint64(baseI-i)) i-- + dAtA[i] = 0x12 + } + } + if len(m.AllowedDenoms) > 0 { + for iNdEx := len(m.AllowedDenoms) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.AllowedDenoms[iNdEx]) + copy(dAtA[i:], m.AllowedDenoms[iNdEx]) + i = encodeVarintGenesis(dAtA, i, uint64(len(m.AllowedDenoms[iNdEx]))) + i-- dAtA[i] = 0xa } } @@ -208,6 +227,12 @@ func (m *GenesisState) Size() (n int) { } var l int _ = l + if len(m.AllowedDenoms) > 0 { + for _, s := range m.AllowedDenoms { + l = len(s) + n += 1 + l + sovGenesis(uint64(l)) + } + } if len(m.NumOfAccounts) > 0 { for k, v := range m.NumOfAccounts { _ = k @@ -271,6 +296,38 @@ func (m *GenesisState) Unmarshal(dAtA []byte) error { } switch fieldNum { case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AllowedDenoms", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + 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 ErrInvalidLengthGenesis + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AllowedDenoms = append(m.AllowedDenoms, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 2: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field NumOfAccounts", wireType) } @@ -383,7 +440,7 @@ func (m *GenesisState) Unmarshal(dAtA []byte) error { } m.NumOfAccounts[mapkey] = mapvalue iNdEx = postIndex - case 2: + case 3: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field NumOfForwards", wireType) } @@ -496,7 +553,7 @@ func (m *GenesisState) Unmarshal(dAtA []byte) error { } m.NumOfForwards[mapkey] = mapvalue iNdEx = postIndex - case 3: + case 4: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field TotalForwarded", wireType) } diff --git a/x/forwarding/types/keys.go b/x/forwarding/types/keys.go index 58bd117..8fd3ada 100644 --- a/x/forwarding/types/keys.go +++ b/x/forwarding/types/keys.go @@ -7,6 +7,7 @@ const ( ) var ( + AllowedDenomsPrefix = []byte("allowed_denoms") NumOfAccountsPrefix = []byte("num_of_accounts") NumOfForwardsPrefix = []byte("num_of_forwards") TotalForwardedPrefix = []byte("total_forwarded") diff --git a/x/forwarding/types/query.pb.go b/x/forwarding/types/query.pb.go index 74eef7d..1d55953 100644 --- a/x/forwarding/types/query.pb.go +++ b/x/forwarding/types/query.pb.go @@ -34,6 +34,86 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +type QueryDenoms struct { +} + +func (m *QueryDenoms) Reset() { *m = QueryDenoms{} } +func (m *QueryDenoms) String() string { return proto.CompactTextString(m) } +func (*QueryDenoms) ProtoMessage() {} +func (*QueryDenoms) Descriptor() ([]byte, []int) { + return fileDescriptor_fc601bfb5b0b1c63, []int{0} +} +func (m *QueryDenoms) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryDenoms) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryDenoms.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 *QueryDenoms) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryDenoms.Merge(m, src) +} +func (m *QueryDenoms) XXX_Size() int { + return m.Size() +} +func (m *QueryDenoms) XXX_DiscardUnknown() { + xxx_messageInfo_QueryDenoms.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryDenoms proto.InternalMessageInfo + +type QueryDenomsResponse struct { + AllowedDenoms []string `protobuf:"bytes,1,rep,name=allowed_denoms,json=allowedDenoms,proto3" json:"allowed_denoms,omitempty"` +} + +func (m *QueryDenomsResponse) Reset() { *m = QueryDenomsResponse{} } +func (m *QueryDenomsResponse) String() string { return proto.CompactTextString(m) } +func (*QueryDenomsResponse) ProtoMessage() {} +func (*QueryDenomsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_fc601bfb5b0b1c63, []int{1} +} +func (m *QueryDenomsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryDenomsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryDenomsResponse.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 *QueryDenomsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryDenomsResponse.Merge(m, src) +} +func (m *QueryDenomsResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryDenomsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryDenomsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryDenomsResponse proto.InternalMessageInfo + +func (m *QueryDenomsResponse) GetAllowedDenoms() []string { + if m != nil { + return m.AllowedDenoms + } + return nil +} + type QueryAddress struct { Channel string `protobuf:"bytes,1,opt,name=channel,proto3" json:"channel,omitempty"` Recipient string `protobuf:"bytes,2,opt,name=recipient,proto3" json:"recipient,omitempty"` @@ -44,7 +124,7 @@ func (m *QueryAddress) Reset() { *m = QueryAddress{} } func (m *QueryAddress) String() string { return proto.CompactTextString(m) } func (*QueryAddress) ProtoMessage() {} func (*QueryAddress) Descriptor() ([]byte, []int) { - return fileDescriptor_fc601bfb5b0b1c63, []int{0} + return fileDescriptor_fc601bfb5b0b1c63, []int{2} } func (m *QueryAddress) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -82,7 +162,7 @@ func (m *QueryAddressResponse) Reset() { *m = QueryAddressResponse{} } func (m *QueryAddressResponse) String() string { return proto.CompactTextString(m) } func (*QueryAddressResponse) ProtoMessage() {} func (*QueryAddressResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_fc601bfb5b0b1c63, []int{1} + return fileDescriptor_fc601bfb5b0b1c63, []int{3} } func (m *QueryAddressResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -132,7 +212,7 @@ func (m *QueryStats) Reset() { *m = QueryStats{} } func (m *QueryStats) String() string { return proto.CompactTextString(m) } func (*QueryStats) ProtoMessage() {} func (*QueryStats) Descriptor() ([]byte, []int) { - return fileDescriptor_fc601bfb5b0b1c63, []int{2} + return fileDescriptor_fc601bfb5b0b1c63, []int{4} } func (m *QueryStats) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -169,7 +249,7 @@ func (m *QueryStatsResponse) Reset() { *m = QueryStatsResponse{} } func (m *QueryStatsResponse) String() string { return proto.CompactTextString(m) } func (*QueryStatsResponse) ProtoMessage() {} func (*QueryStatsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_fc601bfb5b0b1c63, []int{3} + return fileDescriptor_fc601bfb5b0b1c63, []int{5} } func (m *QueryStatsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -213,7 +293,7 @@ func (m *QueryStatsByChannel) Reset() { *m = QueryStatsByChannel{} } func (m *QueryStatsByChannel) String() string { return proto.CompactTextString(m) } func (*QueryStatsByChannel) ProtoMessage() {} func (*QueryStatsByChannel) Descriptor() ([]byte, []int) { - return fileDescriptor_fc601bfb5b0b1c63, []int{4} + return fileDescriptor_fc601bfb5b0b1c63, []int{6} } func (m *QueryStatsByChannel) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -252,7 +332,7 @@ func (m *QueryStatsByChannelResponse) Reset() { *m = QueryStatsByChannel func (m *QueryStatsByChannelResponse) String() string { return proto.CompactTextString(m) } func (*QueryStatsByChannelResponse) ProtoMessage() {} func (*QueryStatsByChannelResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_fc601bfb5b0b1c63, []int{5} + return fileDescriptor_fc601bfb5b0b1c63, []int{7} } func (m *QueryStatsByChannelResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -313,7 +393,7 @@ func (m *Stats) Reset() { *m = Stats{} } func (m *Stats) String() string { return proto.CompactTextString(m) } func (*Stats) ProtoMessage() {} func (*Stats) Descriptor() ([]byte, []int) { - return fileDescriptor_fc601bfb5b0b1c63, []int{6} + return fileDescriptor_fc601bfb5b0b1c63, []int{8} } func (m *Stats) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -371,6 +451,8 @@ func (m *Stats) GetTotalForwarded() github_com_cosmos_cosmos_sdk_types.Coins { } func init() { + proto.RegisterType((*QueryDenoms)(nil), "noble.forwarding.v1.QueryDenoms") + proto.RegisterType((*QueryDenomsResponse)(nil), "noble.forwarding.v1.QueryDenomsResponse") proto.RegisterType((*QueryAddress)(nil), "noble.forwarding.v1.QueryAddress") proto.RegisterType((*QueryAddressResponse)(nil), "noble.forwarding.v1.QueryAddressResponse") proto.RegisterType((*QueryStats)(nil), "noble.forwarding.v1.QueryStats") @@ -384,55 +466,59 @@ func init() { func init() { proto.RegisterFile("noble/forwarding/v1/query.proto", fileDescriptor_fc601bfb5b0b1c63) } var fileDescriptor_fc601bfb5b0b1c63 = []byte{ - // 756 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x55, 0xc1, 0x4f, 0x13, 0x4d, - 0x14, 0xef, 0xb6, 0x94, 0x96, 0x81, 0x0f, 0xbe, 0x6f, 0xe0, 0x50, 0x16, 0xbe, 0x16, 0x37, 0x46, - 0x2b, 0x49, 0x77, 0x68, 0xbd, 0x20, 0x89, 0x31, 0x94, 0x48, 0xa2, 0x07, 0x8d, 0xc5, 0x93, 0x97, - 0x66, 0xba, 0x9d, 0x2e, 0x1b, 0xb6, 0x33, 0x75, 0x67, 0x5a, 0x69, 0x08, 0x17, 0x4f, 0xc4, 0x93, - 0x89, 0x9e, 0xbc, 0x48, 0xe2, 0xc5, 0x78, 0xe2, 0xe0, 0xc9, 0x3f, 0xc0, 0x70, 0x24, 0x7a, 0xf1, - 0xa4, 0x06, 0x4c, 0xf0, 0xcf, 0x30, 0x3b, 0x3b, 0xdb, 0xad, 0x58, 0x02, 0x9c, 0xbc, 0xb4, 0xf3, - 0xde, 0xfb, 0xcd, 0x7b, 0xbf, 0xfe, 0xde, 0x7b, 0x53, 0x90, 0xa3, 0xac, 0xe6, 0x12, 0xd4, 0x60, - 0xde, 0x13, 0xec, 0xd5, 0x1d, 0x6a, 0xa3, 0x4e, 0x11, 0x3d, 0x6e, 0x13, 0xaf, 0x6b, 0xb6, 0x3c, - 0x26, 0x18, 0x9c, 0x94, 0x00, 0x33, 0x02, 0x98, 0x9d, 0xa2, 0xfe, 0x1f, 0x6e, 0x3a, 0x94, 0x21, - 0xf9, 0x19, 0xe0, 0xf4, 0xac, 0xc5, 0x78, 0x93, 0x71, 0x54, 0xc3, 0x9c, 0xa0, 0x4e, 0xb1, 0x46, - 0x04, 0x2e, 0x22, 0x8b, 0x39, 0x54, 0xc5, 0x67, 0x54, 0x5c, 0xe6, 0x3e, 0x51, 0x44, 0x9f, 0x0e, - 0x82, 0x55, 0x69, 0xa1, 0xc0, 0x50, 0xa1, 0x29, 0x9b, 0xd9, 0x2c, 0xf0, 0xfb, 0x27, 0xe5, 0x9d, - 0xb5, 0x19, 0xb3, 0x5d, 0x82, 0x70, 0xcb, 0x41, 0x98, 0x52, 0x26, 0xb0, 0x70, 0x18, 0x55, 0x77, - 0x0c, 0x17, 0x8c, 0x3d, 0xf0, 0xb3, 0x2f, 0xd7, 0xeb, 0x1e, 0xe1, 0x1c, 0x66, 0x40, 0xca, 0x5a, - 0xc7, 0x94, 0x12, 0x37, 0xa3, 0xcd, 0x69, 0xf9, 0x91, 0x4a, 0x68, 0xc2, 0x59, 0x30, 0xe2, 0x11, - 0xcb, 0x69, 0x39, 0x84, 0x8a, 0x4c, 0x5c, 0xc6, 0x22, 0x07, 0xd4, 0x41, 0xba, 0x81, 0x5d, 0xb7, - 0x86, 0xad, 0x8d, 0x4c, 0x42, 0x06, 0x7b, 0xf6, 0x52, 0x7a, 0x67, 0x37, 0x17, 0xfb, 0xb9, 0x9b, - 0x8b, 0x19, 0x0e, 0x98, 0xea, 0xaf, 0x56, 0x21, 0xbc, 0xc5, 0x28, 0x27, 0xb0, 0x04, 0x52, 0x38, - 0x70, 0x05, 0x55, 0xcb, 0x99, 0x4f, 0xef, 0x0b, 0x53, 0xea, 0xc7, 0x29, 0xf0, 0x9a, 0xf0, 0x1c, - 0x6a, 0x57, 0x42, 0x20, 0xfc, 0x1f, 0x0c, 0x93, 0x4d, 0x87, 0x0b, 0x2e, 0xc9, 0xa4, 0xcb, 0xc9, - 0xb7, 0xc7, 0x7b, 0xf3, 0x5a, 0x45, 0x39, 0x8d, 0x31, 0x00, 0x64, 0xa9, 0x35, 0x81, 0x05, 0x37, - 0x3e, 0x68, 0x00, 0x46, 0x66, 0xaf, 0xee, 0x3d, 0x90, 0xe4, 0xbe, 0x23, 0xa3, 0xcd, 0x25, 0xf2, - 0xa3, 0xa5, 0x92, 0x39, 0xa0, 0x83, 0xe6, 0x9f, 0xf7, 0x4c, 0x69, 0xdd, 0xa6, 0xc2, 0xeb, 0x96, - 0x87, 0xf6, 0xbf, 0xe6, 0x62, 0x95, 0x20, 0x8d, 0xfe, 0x10, 0x80, 0x28, 0x04, 0xff, 0x05, 0x89, - 0x0d, 0xd2, 0x55, 0x3a, 0xfa, 0x47, 0xb8, 0x00, 0x92, 0x1d, 0xec, 0xb6, 0x89, 0xa4, 0x3c, 0x5a, - 0xd2, 0x07, 0xd6, 0x0b, 0x4a, 0x05, 0xc0, 0xa5, 0xf8, 0xa2, 0x66, 0xdc, 0x00, 0x93, 0x11, 0x87, - 0x72, 0x77, 0x45, 0x35, 0xe4, 0xd4, 0x56, 0xf5, 0x09, 0xbe, 0x13, 0x07, 0x33, 0x03, 0xee, 0xf6, - 0x04, 0x28, 0x80, 0x09, 0xda, 0x6e, 0x56, 0x59, 0xa3, 0x8a, 0x2d, 0x8b, 0xb5, 0xa9, 0x08, 0x1a, - 0x30, 0x14, 0xaa, 0xf9, 0x0f, 0x6d, 0x37, 0xef, 0x37, 0x96, 0x55, 0xac, 0x0f, 0xae, 0x28, 0x07, - 0xe2, 0x9f, 0x80, 0xaf, 0xaa, 0x18, 0x7c, 0xa6, 0x81, 0x09, 0xc1, 0x04, 0x76, 0x43, 0x38, 0xa9, - 0x67, 0x12, 0x52, 0xe9, 0x69, 0x53, 0x35, 0xd7, 0xdf, 0x01, 0x53, 0xed, 0x80, 0xb9, 0xc2, 0x1c, - 0x5a, 0x5e, 0xf5, 0x05, 0x7d, 0xf7, 0x2d, 0x97, 0xb7, 0x1d, 0xb1, 0xde, 0xae, 0x99, 0x16, 0x6b, - 0xaa, 0x31, 0x57, 0x5f, 0x05, 0x5e, 0xdf, 0x40, 0xa2, 0xdb, 0x22, 0x5c, 0x5e, 0xe0, 0xaf, 0x8e, - 0xf7, 0xe6, 0xc7, 0x5c, 0x62, 0x63, 0xab, 0x5b, 0xf5, 0xb7, 0x88, 0x07, 0x5c, 0xc6, 0x65, 0xe5, - 0xd5, 0xb0, 0xb0, 0xf1, 0x32, 0x0e, 0x92, 0x52, 0x05, 0x38, 0x07, 0xd2, 0xd6, 0x3a, 0x76, 0x68, - 0xd5, 0xa9, 0xab, 0x71, 0x53, 0xf4, 0x53, 0xd2, 0x7d, 0xa7, 0x3e, 0x48, 0x96, 0xf8, 0xc5, 0x64, - 0x49, 0x5c, 0x50, 0x96, 0xa1, 0xbf, 0x24, 0x4b, 0xe9, 0x63, 0x02, 0x24, 0xe5, 0x84, 0xc0, 0x37, - 0x1a, 0x48, 0x85, 0xcf, 0xc0, 0xa5, 0xd3, 0x37, 0x41, 0x41, 0xf4, 0x6b, 0x67, 0x42, 0xc2, 0x29, - 0x33, 0xee, 0xee, 0xf8, 0xa5, 0x9f, 0x7e, 0xfe, 0xf1, 0x22, 0x7e, 0x0b, 0xde, 0x44, 0x83, 0xde, - 0x51, 0xb5, 0xd5, 0x68, 0x4b, 0xcd, 0xf0, 0x36, 0xda, 0xea, 0x3d, 0x2e, 0xdb, 0x68, 0x2b, 0x7c, - 0x4b, 0xb6, 0x61, 0x3b, 0xec, 0x62, 0xee, 0x8c, 0x65, 0xd5, 0xaf, 0x9e, 0x73, 0x9b, 0x0d, 0x43, - 0x32, 0x9b, 0x85, 0xfa, 0x40, 0x66, 0x72, 0xb3, 0xe1, 0x6b, 0x0d, 0x8c, 0x9f, 0xd8, 0xbf, 0xfc, - 0x19, 0xf9, 0x7b, 0x48, 0x7d, 0xe1, 0xbc, 0xc8, 0x1e, 0xa5, 0x62, 0xa4, 0xd8, 0x15, 0x78, 0xf9, - 0x74, 0x5e, 0x91, 0x5e, 0xe5, 0xca, 0xfe, 0x61, 0x56, 0x3b, 0x38, 0xcc, 0x6a, 0xdf, 0x0f, 0xb3, - 0xda, 0xf3, 0xa3, 0x6c, 0xec, 0xe0, 0x28, 0x1b, 0xfb, 0x72, 0x94, 0x8d, 0x3d, 0x5a, 0xec, 0x1b, - 0x19, 0x99, 0xa9, 0x80, 0x39, 0x27, 0x82, 0xff, 0x96, 0xb0, 0x84, 0x36, 0xfb, 0x6d, 0x39, 0x48, - 0xb5, 0x61, 0xf9, 0x27, 0x71, 0xfd, 0x57, 0x00, 0x00, 0x00, 0xff, 0xff, 0x59, 0x13, 0x85, 0x20, - 0xfb, 0x06, 0x00, 0x00, + // 822 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x55, 0xbf, 0x6f, 0x23, 0x45, + 0x14, 0xf6, 0xfa, 0x47, 0xec, 0x4c, 0x7e, 0xc1, 0x24, 0x85, 0xb3, 0x49, 0x6c, 0xb3, 0x42, 0x60, + 0x22, 0xbc, 0x13, 0x9b, 0x26, 0x44, 0x42, 0x28, 0x0e, 0x44, 0x82, 0x02, 0x84, 0x43, 0x45, 0x63, + 0x8d, 0x77, 0xc7, 0x9b, 0x55, 0xd6, 0x33, 0x66, 0x67, 0xec, 0xc4, 0x8a, 0x42, 0x41, 0x15, 0x51, + 0x21, 0x41, 0x45, 0x43, 0x24, 0x1a, 0x44, 0x95, 0x82, 0x8a, 0x3f, 0x00, 0xa5, 0x8c, 0xa0, 0xa1, + 0xe2, 0x4e, 0xc9, 0x49, 0xb9, 0x3f, 0xe3, 0xb4, 0xb3, 0xb3, 0x6b, 0x5f, 0xce, 0x96, 0x93, 0xea, + 0x1a, 0x7b, 0xde, 0x7b, 0xdf, 0xbc, 0xf7, 0xf9, 0x9b, 0xf7, 0x9e, 0x41, 0x91, 0xb2, 0x96, 0x47, + 0x50, 0x9b, 0xf9, 0xc7, 0xd8, 0xb7, 0x5d, 0xea, 0xa0, 0x7e, 0x15, 0x7d, 0xdb, 0x23, 0xfe, 0xc0, + 0xec, 0xfa, 0x4c, 0x30, 0xb8, 0x2c, 0x01, 0xe6, 0x10, 0x60, 0xf6, 0xab, 0xfa, 0x9b, 0xb8, 0xe3, + 0x52, 0x86, 0xe4, 0x67, 0x88, 0xd3, 0x0b, 0x16, 0xe3, 0x1d, 0xc6, 0x51, 0x0b, 0x73, 0x82, 0xfa, + 0xd5, 0x16, 0x11, 0xb8, 0x8a, 0x2c, 0xe6, 0x52, 0x15, 0x5f, 0x53, 0x71, 0x99, 0xfb, 0x5e, 0x11, + 0x7d, 0x35, 0x0c, 0x36, 0xa5, 0x85, 0x42, 0x43, 0x85, 0x56, 0x1c, 0xe6, 0xb0, 0xd0, 0x1f, 0x9c, + 0x94, 0x77, 0xdd, 0x61, 0xcc, 0xf1, 0x08, 0xc2, 0x5d, 0x17, 0x61, 0x4a, 0x99, 0xc0, 0xc2, 0x65, + 0x54, 0xdd, 0x31, 0x16, 0xc0, 0xdc, 0x57, 0x41, 0xf6, 0x4f, 0x08, 0x65, 0x1d, 0x6e, 0xec, 0x81, + 0xe5, 0x11, 0xb3, 0x41, 0x78, 0x97, 0x51, 0x4e, 0xe0, 0xfb, 0x60, 0x11, 0x7b, 0x1e, 0x3b, 0x26, + 0x76, 0xd3, 0x96, 0x91, 0xbc, 0x56, 0x4a, 0x95, 0x67, 0xeb, 0x99, 0xdf, 0xef, 0x2e, 0x37, 0xb5, + 0xc6, 0x82, 0x0a, 0xaa, 0x24, 0x1e, 0x98, 0x97, 0x49, 0x76, 0x6d, 0xdb, 0x27, 0x9c, 0xc3, 0x3c, + 0xc8, 0x5a, 0x87, 0x98, 0x52, 0xe2, 0xe5, 0xb5, 0x92, 0x56, 0x9e, 0x6d, 0x44, 0x26, 0x5c, 0x07, + 0xb3, 0x3e, 0xb1, 0xdc, 0xae, 0x4b, 0xa8, 0xc8, 0x27, 0x65, 0x6c, 0xe8, 0x80, 0x3a, 0xc8, 0xb5, + 0xb1, 0xe7, 0xb5, 0xb0, 0x75, 0x94, 0x4f, 0xc9, 0x60, 0x6c, 0xef, 0xe4, 0xce, 0x2f, 0x8a, 0x89, + 0xe7, 0x17, 0xc5, 0x84, 0xe1, 0x82, 0x95, 0xd1, 0x6a, 0x31, 0xe7, 0x1a, 0xc8, 0xe2, 0xd0, 0x15, + 0x56, 0xad, 0xe7, 0xff, 0xf9, 0xb3, 0xb2, 0xa2, 0x04, 0x53, 0xe0, 0x03, 0xe1, 0xbb, 0xd4, 0x69, + 0x44, 0x40, 0xb8, 0x01, 0x66, 0xc8, 0x89, 0xcb, 0x05, 0x97, 0x64, 0x72, 0xd1, 0xef, 0x53, 0x4e, + 0x63, 0x1e, 0x00, 0x59, 0xea, 0x40, 0x60, 0xc1, 0x8d, 0xbf, 0x34, 0x00, 0x87, 0x66, 0x5c, 0xf7, + 0x0b, 0x90, 0xe1, 0x81, 0x43, 0x4a, 0x34, 0x57, 0xab, 0x99, 0x63, 0xba, 0xc2, 0x7c, 0xf5, 0x9e, + 0x29, 0xad, 0x4f, 0xa9, 0xf0, 0x07, 0xf5, 0xf4, 0xd5, 0xff, 0xc5, 0x44, 0x23, 0x4c, 0xa3, 0x7f, + 0x0d, 0xc0, 0x30, 0x04, 0xdf, 0x00, 0xa9, 0x23, 0x32, 0x50, 0x3a, 0x06, 0x47, 0xb8, 0x05, 0x32, + 0x7d, 0xec, 0xf5, 0x88, 0xa4, 0x3c, 0x57, 0xd3, 0xc7, 0xd6, 0x0b, 0x4b, 0x85, 0xc0, 0x9d, 0xe4, + 0xb6, 0x66, 0x7c, 0xa8, 0x1e, 0x5a, 0x06, 0xea, 0x83, 0x3d, 0xf5, 0x20, 0x13, 0x9f, 0x6a, 0x44, + 0xf0, 0xf3, 0x24, 0x58, 0x1b, 0x73, 0x37, 0x16, 0xa0, 0x02, 0x96, 0x68, 0xaf, 0xd3, 0x64, 0xed, + 0x26, 0xb6, 0x2c, 0xd6, 0xa3, 0x22, 0x7c, 0x80, 0x74, 0xdc, 0x2d, 0xb4, 0xd7, 0xf9, 0xb2, 0xbd, + 0xab, 0x62, 0x23, 0x70, 0x45, 0x39, 0x14, 0xff, 0x1e, 0x7c, 0x5f, 0xc5, 0xe0, 0x0f, 0x1a, 0x58, + 0x12, 0x4c, 0x60, 0x2f, 0x82, 0x13, 0x3b, 0x9f, 0x92, 0x4a, 0xaf, 0x9a, 0xea, 0x71, 0x83, 0xb9, + 0x32, 0xd5, 0x5c, 0x99, 0x7b, 0xcc, 0xa5, 0xf5, 0xfd, 0x40, 0xd0, 0x3f, 0x9e, 0x14, 0xcb, 0x8e, + 0x2b, 0x0e, 0x7b, 0x2d, 0xd3, 0x62, 0x1d, 0x35, 0x3a, 0xea, 0xab, 0xc2, 0xed, 0x23, 0x24, 0x06, + 0x5d, 0xc2, 0xe5, 0x05, 0xfe, 0xcb, 0xdd, 0xe5, 0xe6, 0xbc, 0x47, 0x1c, 0x6c, 0x0d, 0x9a, 0xc1, + 0x64, 0xf2, 0x90, 0xcb, 0xa2, 0xac, 0xbc, 0x1f, 0x15, 0x36, 0x7e, 0x4e, 0x82, 0x8c, 0x54, 0x01, + 0x96, 0x40, 0xce, 0x3a, 0xc4, 0x2e, 0x6d, 0xba, 0xb6, 0x6a, 0x37, 0x45, 0x3f, 0x2b, 0xdd, 0x9f, + 0xd9, 0xe3, 0x64, 0x49, 0x3e, 0x4e, 0x96, 0xd4, 0x23, 0x65, 0x49, 0xbf, 0x26, 0x59, 0x6a, 0x7f, + 0xa7, 0x41, 0x46, 0x76, 0x08, 0xfc, 0x0e, 0xcc, 0x84, 0x4b, 0x01, 0x96, 0x26, 0xcf, 0x41, 0x88, + 0xd0, 0xcb, 0xd3, 0x10, 0x51, 0x87, 0x19, 0xe5, 0xf3, 0xa0, 0xec, 0xf7, 0xff, 0x3e, 0xfb, 0x29, + 0xb9, 0x01, 0xd7, 0xd0, 0xb8, 0xbd, 0x1c, 0xae, 0x29, 0xf8, 0x9b, 0x06, 0xb2, 0xd1, 0x1a, 0x7a, + 0x6b, 0x72, 0x7e, 0x05, 0xd1, 0xdf, 0x9b, 0x0a, 0x89, 0x39, 0x7c, 0x3e, 0xe4, 0xf0, 0x31, 0xfc, + 0x68, 0x2c, 0x07, 0xb5, 0x55, 0xd0, 0xa9, 0x9a, 0xa1, 0x33, 0x74, 0x1a, 0x2f, 0xb7, 0x33, 0x74, + 0x1a, 0xed, 0xb2, 0x33, 0xd8, 0x8b, 0xba, 0xa8, 0x38, 0x65, 0x59, 0xe8, 0xef, 0x3e, 0x70, 0x9b, + 0x18, 0x86, 0x64, 0xb6, 0x0e, 0xf5, 0xb1, 0xcc, 0xe4, 0x66, 0x81, 0xbf, 0x6a, 0x60, 0xf1, 0xde, + 0xfc, 0x97, 0xa7, 0xe4, 0x8f, 0x91, 0xfa, 0xd6, 0x43, 0x91, 0x31, 0xa5, 0xea, 0x50, 0xb1, 0x77, + 0xe0, 0xdb, 0x93, 0x79, 0x0d, 0xf5, 0xaa, 0x37, 0xae, 0x6e, 0x0a, 0xda, 0xf5, 0x4d, 0x41, 0x7b, + 0x7a, 0x53, 0xd0, 0x7e, 0xbc, 0x2d, 0x24, 0xae, 0x6f, 0x0b, 0x89, 0xff, 0x6e, 0x0b, 0x89, 0x6f, + 0xb6, 0x47, 0x5a, 0x56, 0x66, 0xaa, 0x60, 0xce, 0x89, 0xe0, 0x2f, 0x25, 0xac, 0xa1, 0x93, 0x51, + 0x5b, 0x36, 0x72, 0x6b, 0x46, 0xfe, 0xf1, 0x7d, 0xf0, 0x22, 0x00, 0x00, 0xff, 0xff, 0x3e, 0x57, + 0xbf, 0xb8, 0xcf, 0x07, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -447,6 +533,7 @@ const _ = grpc.SupportPackageIsVersion4 // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type QueryClient interface { + Denoms(ctx context.Context, in *QueryDenoms, opts ...grpc.CallOption) (*QueryDenomsResponse, error) Address(ctx context.Context, in *QueryAddress, opts ...grpc.CallOption) (*QueryAddressResponse, error) Stats(ctx context.Context, in *QueryStats, opts ...grpc.CallOption) (*QueryStatsResponse, error) StatsByChannel(ctx context.Context, in *QueryStatsByChannel, opts ...grpc.CallOption) (*QueryStatsByChannelResponse, error) @@ -460,6 +547,15 @@ func NewQueryClient(cc grpc1.ClientConn) QueryClient { return &queryClient{cc} } +func (c *queryClient) Denoms(ctx context.Context, in *QueryDenoms, opts ...grpc.CallOption) (*QueryDenomsResponse, error) { + out := new(QueryDenomsResponse) + err := c.cc.Invoke(ctx, "/noble.forwarding.v1.Query/Denoms", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *queryClient) Address(ctx context.Context, in *QueryAddress, opts ...grpc.CallOption) (*QueryAddressResponse, error) { out := new(QueryAddressResponse) err := c.cc.Invoke(ctx, "/noble.forwarding.v1.Query/Address", in, out, opts...) @@ -489,6 +585,7 @@ func (c *queryClient) StatsByChannel(ctx context.Context, in *QueryStatsByChanne // QueryServer is the server API for Query service. type QueryServer interface { + Denoms(context.Context, *QueryDenoms) (*QueryDenomsResponse, error) Address(context.Context, *QueryAddress) (*QueryAddressResponse, error) Stats(context.Context, *QueryStats) (*QueryStatsResponse, error) StatsByChannel(context.Context, *QueryStatsByChannel) (*QueryStatsByChannelResponse, error) @@ -498,6 +595,9 @@ type QueryServer interface { type UnimplementedQueryServer struct { } +func (*UnimplementedQueryServer) Denoms(ctx context.Context, req *QueryDenoms) (*QueryDenomsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Denoms not implemented") +} func (*UnimplementedQueryServer) Address(ctx context.Context, req *QueryAddress) (*QueryAddressResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Address not implemented") } @@ -512,6 +612,24 @@ func RegisterQueryServer(s grpc1.Server, srv QueryServer) { s.RegisterService(&_Query_serviceDesc, srv) } +func _Query_Denoms_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryDenoms) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).Denoms(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/noble.forwarding.v1.Query/Denoms", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Denoms(ctx, req.(*QueryDenoms)) + } + return interceptor(ctx, in, info, handler) +} + func _Query_Address_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(QueryAddress) if err := dec(in); err != nil { @@ -570,6 +688,10 @@ var _Query_serviceDesc = grpc.ServiceDesc{ ServiceName: "noble.forwarding.v1.Query", HandlerType: (*QueryServer)(nil), Methods: []grpc.MethodDesc{ + { + MethodName: "Denoms", + Handler: _Query_Denoms_Handler, + }, { MethodName: "Address", Handler: _Query_Address_Handler, @@ -587,6 +709,61 @@ var _Query_serviceDesc = grpc.ServiceDesc{ Metadata: "noble/forwarding/v1/query.proto", } +func (m *QueryDenoms) 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 *QueryDenoms) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryDenoms) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *QueryDenomsResponse) 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 *QueryDenomsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryDenomsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.AllowedDenoms) > 0 { + for iNdEx := len(m.AllowedDenoms) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.AllowedDenoms[iNdEx]) + copy(dAtA[i:], m.AllowedDenoms[iNdEx]) + i = encodeVarintQuery(dAtA, i, uint64(len(m.AllowedDenoms[iNdEx]))) + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + func (m *QueryAddress) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -883,6 +1060,30 @@ func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { dAtA[offset] = uint8(v) return base } +func (m *QueryDenoms) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *QueryDenomsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.AllowedDenoms) > 0 { + for _, s := range m.AllowedDenoms { + l = len(s) + n += 1 + l + sovQuery(uint64(l)) + } + } + return n +} + func (m *QueryAddress) Size() (n int) { if m == nil { return 0 @@ -1012,6 +1213,138 @@ func sovQuery(x uint64) (n int) { func sozQuery(x uint64) (n int) { return sovQuery(uint64((x << 1) ^ uint64((int64(x) >> 63)))) } +func (m *QueryDenoms) 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 ErrIntOverflowQuery + } + 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: QueryDenoms: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryDenoms: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryDenomsResponse) 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 ErrIntOverflowQuery + } + 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: QueryDenomsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryDenomsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AllowedDenoms", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + 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 ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AllowedDenoms = append(m.AllowedDenoms, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *QueryAddress) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/x/forwarding/types/query.pb.gw.go b/x/forwarding/types/query.pb.gw.go index 6838260..6643281 100644 --- a/x/forwarding/types/query.pb.gw.go +++ b/x/forwarding/types/query.pb.gw.go @@ -33,6 +33,24 @@ var _ = utilities.NewDoubleArray var _ = descriptor.ForMessage var _ = metadata.Join +func request_Query_Denoms_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryDenoms + var metadata runtime.ServerMetadata + + msg, err := client.Denoms(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_Denoms_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryDenoms + var metadata runtime.ServerMetadata + + msg, err := server.Denoms(ctx, &protoReq) + return msg, metadata, err + +} + func request_Query_Address_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq QueryAddress var metadata runtime.ServerMetadata @@ -209,6 +227,29 @@ func local_request_Query_StatsByChannel_0(ctx context.Context, marshaler runtime // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterQueryHandlerFromEndpoint instead. func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, server QueryServer) error { + mux.Handle("GET", pattern_Query_Denoms_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_Denoms_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_Denoms_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("GET", pattern_Query_Address_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -319,6 +360,26 @@ func RegisterQueryHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc // "QueryClient" to call the correct interceptors. func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, client QueryClient) error { + mux.Handle("GET", pattern_Query_Denoms_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_Denoms_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_Denoms_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("GET", pattern_Query_Address_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -383,6 +444,8 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie } var ( + pattern_Query_Denoms_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"noble", "forwarding", "v1", "denoms"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_Address_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6}, []string{"noble", "forwarding", "v1", "address", "channel", "recipient", "fallback"}, "", runtime.AssumeColonVerbOpt(false))) pattern_Query_Stats_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"noble", "forwarding", "v1", "stats"}, "", runtime.AssumeColonVerbOpt(false))) @@ -391,6 +454,8 @@ var ( ) var ( + forward_Query_Denoms_0 = runtime.ForwardResponseMessage + forward_Query_Address_0 = runtime.ForwardResponseMessage forward_Query_Stats_0 = runtime.ForwardResponseMessage diff --git a/x/forwarding/types/tx.pb.go b/x/forwarding/types/tx.pb.go index 2301755..6ae2bd8 100644 --- a/x/forwarding/types/tx.pb.go +++ b/x/forwarding/types/tx.pb.go @@ -190,46 +190,127 @@ func (m *MsgClearAccountResponse) XXX_DiscardUnknown() { var xxx_messageInfo_MsgClearAccountResponse proto.InternalMessageInfo +type MsgSetAllowedDenoms struct { + Signer string `protobuf:"bytes,1,opt,name=signer,proto3" json:"signer,omitempty"` + Denoms []string `protobuf:"bytes,2,rep,name=denoms,proto3" json:"denoms,omitempty"` +} + +func (m *MsgSetAllowedDenoms) Reset() { *m = MsgSetAllowedDenoms{} } +func (m *MsgSetAllowedDenoms) String() string { return proto.CompactTextString(m) } +func (*MsgSetAllowedDenoms) ProtoMessage() {} +func (*MsgSetAllowedDenoms) Descriptor() ([]byte, []int) { + return fileDescriptor_e8a8b8337aa6ea1a, []int{4} +} +func (m *MsgSetAllowedDenoms) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgSetAllowedDenoms) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgSetAllowedDenoms.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 *MsgSetAllowedDenoms) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgSetAllowedDenoms.Merge(m, src) +} +func (m *MsgSetAllowedDenoms) XXX_Size() int { + return m.Size() +} +func (m *MsgSetAllowedDenoms) XXX_DiscardUnknown() { + xxx_messageInfo_MsgSetAllowedDenoms.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgSetAllowedDenoms proto.InternalMessageInfo + +type MsgSetAllowedDenomsResponse struct { +} + +func (m *MsgSetAllowedDenomsResponse) Reset() { *m = MsgSetAllowedDenomsResponse{} } +func (m *MsgSetAllowedDenomsResponse) String() string { return proto.CompactTextString(m) } +func (*MsgSetAllowedDenomsResponse) ProtoMessage() {} +func (*MsgSetAllowedDenomsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_e8a8b8337aa6ea1a, []int{5} +} +func (m *MsgSetAllowedDenomsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgSetAllowedDenomsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgSetAllowedDenomsResponse.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 *MsgSetAllowedDenomsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgSetAllowedDenomsResponse.Merge(m, src) +} +func (m *MsgSetAllowedDenomsResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgSetAllowedDenomsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgSetAllowedDenomsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgSetAllowedDenomsResponse proto.InternalMessageInfo + func init() { proto.RegisterType((*MsgRegisterAccount)(nil), "noble.forwarding.v1.MsgRegisterAccount") proto.RegisterType((*MsgRegisterAccountResponse)(nil), "noble.forwarding.v1.MsgRegisterAccountResponse") proto.RegisterType((*MsgClearAccount)(nil), "noble.forwarding.v1.MsgClearAccount") proto.RegisterType((*MsgClearAccountResponse)(nil), "noble.forwarding.v1.MsgClearAccountResponse") + proto.RegisterType((*MsgSetAllowedDenoms)(nil), "noble.forwarding.v1.MsgSetAllowedDenoms") + proto.RegisterType((*MsgSetAllowedDenomsResponse)(nil), "noble.forwarding.v1.MsgSetAllowedDenomsResponse") } func init() { proto.RegisterFile("noble/forwarding/v1/tx.proto", fileDescriptor_e8a8b8337aa6ea1a) } var fileDescriptor_e8a8b8337aa6ea1a = []byte{ - // 457 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0xc9, 0xcb, 0x4f, 0xca, - 0x49, 0xd5, 0x4f, 0xcb, 0x2f, 0x2a, 0x4f, 0x2c, 0x4a, 0xc9, 0xcc, 0x4b, 0xd7, 0x2f, 0x33, 0xd4, - 0x2f, 0xa9, 0xd0, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x06, 0xcb, 0xea, 0x21, 0x64, 0xf5, - 0xca, 0x0c, 0xa5, 0x04, 0x13, 0x73, 0x33, 0xf3, 0xf2, 0xf5, 0xc1, 0x24, 0x44, 0x9d, 0x94, 0x78, - 0x72, 0x7e, 0x71, 0x6e, 0x7e, 0xb1, 0x7e, 0x6e, 0x31, 0x58, 0x7f, 0x6e, 0x71, 0x3a, 0x54, 0x42, - 0x12, 0x22, 0x11, 0x0f, 0xe6, 0xe9, 0x43, 0x38, 0x50, 0x29, 0x91, 0xf4, 0xfc, 0xf4, 0x7c, 0x88, - 0x38, 0x88, 0x05, 0x11, 0x55, 0x7a, 0xc7, 0xc8, 0x25, 0xe4, 0x5b, 0x9c, 0x1e, 0x94, 0x9a, 0x9e, - 0x59, 0x5c, 0x92, 0x5a, 0xe4, 0x98, 0x9c, 0x9c, 0x5f, 0x9a, 0x57, 0x22, 0x64, 0xc0, 0xc5, 0x56, - 0x9c, 0x99, 0x9e, 0x97, 0x5a, 0x24, 0xc1, 0xa8, 0xc0, 0xa8, 0xc1, 0xe9, 0x24, 0x71, 0x69, 0x8b, - 0xae, 0x08, 0xd4, 0x38, 0xc7, 0x94, 0x94, 0xa2, 0xd4, 0xe2, 0xe2, 0xe0, 0x92, 0xa2, 0xcc, 0xbc, - 0xf4, 0x20, 0xa8, 0x3a, 0x21, 0x19, 0x2e, 0xce, 0xa2, 0xd4, 0xe4, 0xcc, 0x82, 0xcc, 0xd4, 0xbc, - 0x12, 0x09, 0x26, 0x90, 0xa6, 0x20, 0x84, 0x80, 0x90, 0x04, 0x17, 0x7b, 0x72, 0x46, 0x62, 0x5e, - 0x5e, 0x6a, 0x8e, 0x04, 0x33, 0x58, 0x0e, 0xc6, 0x15, 0x32, 0xe1, 0xe2, 0x48, 0x4b, 0xcc, 0xc9, - 0x49, 0x4a, 0x4c, 0xce, 0x96, 0x60, 0x21, 0x60, 0x17, 0x5c, 0xa5, 0x95, 0x45, 0xc7, 0x02, 0x79, - 0x86, 0x17, 0x0b, 0xe4, 0x19, 0x9a, 0x9e, 0x6f, 0xd0, 0x82, 0x3a, 0xa1, 0xeb, 0xf9, 0x06, 0x2d, - 0x05, 0x8c, 0xe0, 0x45, 0xf3, 0x99, 0x52, 0x00, 0x97, 0x14, 0xa6, 0x7f, 0x83, 0x52, 0x8b, 0x0b, - 0xf2, 0xf3, 0x8a, 0x53, 0x85, 0x8c, 0xb8, 0xd8, 0x13, 0x21, 0x56, 0x12, 0xf4, 0x38, 0x4c, 0xa1, - 0xd2, 0x29, 0x46, 0x2e, 0x7e, 0xdf, 0xe2, 0x74, 0xe7, 0x9c, 0xd4, 0x44, 0x0a, 0xc2, 0x0f, 0xc9, - 0x66, 0x26, 0x22, 0x6d, 0x16, 0x92, 0x42, 0x0a, 0x3b, 0x50, 0xb0, 0x72, 0x20, 0x85, 0x90, 0x29, - 0x8e, 0x10, 0x92, 0xc5, 0x08, 0x21, 0x64, 0x87, 0x2b, 0x49, 0x72, 0x89, 0xa3, 0xf9, 0x05, 0x16, - 0x36, 0x46, 0x77, 0x19, 0xb9, 0x98, 0x7d, 0x8b, 0xd3, 0x85, 0xb2, 0xb9, 0xf8, 0xd1, 0x93, 0x8b, - 0xba, 0x1e, 0x96, 0x84, 0xab, 0x87, 0x19, 0xce, 0x52, 0xfa, 0x44, 0x2a, 0x84, 0x47, 0x48, 0x12, - 0x17, 0x0f, 0x4a, 0xc0, 0xaa, 0xe0, 0x32, 0x00, 0x59, 0x95, 0x94, 0x0e, 0x31, 0xaa, 0x60, 0x76, - 0x48, 0xb1, 0x36, 0x3c, 0xdf, 0xa0, 0xc5, 0xe8, 0x14, 0x74, 0xe2, 0x91, 0x1c, 0xe3, 0x85, 0x47, - 0x72, 0x8c, 0x0f, 0x1e, 0xc9, 0x31, 0x4e, 0x78, 0x2c, 0xc7, 0x70, 0xe1, 0xb1, 0x1c, 0xc3, 0x8d, - 0xc7, 0x72, 0x0c, 0x51, 0x16, 0xe9, 0x99, 0x25, 0x19, 0xa5, 0x49, 0x7a, 0xc9, 0xf9, 0xb9, 0xfa, - 0x60, 0x83, 0x75, 0x13, 0x8b, 0x8b, 0x53, 0x4b, 0x8a, 0x51, 0xb2, 0xb1, 0x91, 0x7e, 0x05, 0x32, - 0xbf, 0xa4, 0xb2, 0x20, 0xb5, 0x38, 0x89, 0x0d, 0x9c, 0xcb, 0x8c, 0x01, 0x01, 0x00, 0x00, 0xff, - 0xff, 0x0f, 0xc6, 0xb4, 0x14, 0xf7, 0x03, 0x00, 0x00, + // 529 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x54, 0x4d, 0x6f, 0xd3, 0x40, + 0x10, 0xb5, 0x13, 0x48, 0x9b, 0x15, 0x52, 0xc1, 0xad, 0xa8, 0x6b, 0x5a, 0x37, 0x58, 0x48, 0x44, + 0x11, 0xf5, 0xb6, 0x01, 0xa4, 0xd2, 0x5b, 0x0a, 0xd7, 0x48, 0xc8, 0xbd, 0x71, 0x41, 0xfe, 0xd8, + 0x6e, 0xad, 0xda, 0xbb, 0x91, 0x67, 0xfb, 0xc1, 0x0d, 0x71, 0x42, 0x9c, 0x38, 0x73, 0xea, 0x4f, + 0xc8, 0x81, 0x1f, 0x81, 0x90, 0x90, 0x2a, 0x4e, 0x1c, 0x51, 0x72, 0x08, 0x27, 0x7e, 0x03, 0x8a, + 0x3f, 0x52, 0xd7, 0x6e, 0xd4, 0x88, 0x5e, 0x2c, 0xcf, 0xce, 0x9b, 0x79, 0x6f, 0x9e, 0xc7, 0x8b, + 0x56, 0x19, 0x77, 0x02, 0x82, 0xf7, 0x79, 0x74, 0x62, 0x47, 0x9e, 0xcf, 0x28, 0x3e, 0xde, 0xc2, + 0xe2, 0xd4, 0xec, 0x45, 0x5c, 0x70, 0x65, 0x31, 0xce, 0x9a, 0x17, 0x59, 0xf3, 0x78, 0x4b, 0xbb, + 0x67, 0x87, 0x3e, 0xe3, 0x38, 0x7e, 0x26, 0x38, 0x6d, 0xd9, 0xe5, 0x10, 0x72, 0xc0, 0x21, 0xc4, + 0xf5, 0x21, 0xd0, 0x34, 0xb1, 0x92, 0x24, 0xde, 0xc6, 0x11, 0x4e, 0x82, 0x34, 0xb5, 0x44, 0x39, + 0xe5, 0xc9, 0xf9, 0xf8, 0x2d, 0x39, 0x35, 0xfe, 0xca, 0x48, 0xe9, 0x02, 0xb5, 0x08, 0xf5, 0x41, + 0x90, 0xa8, 0xe3, 0xba, 0xfc, 0x88, 0x09, 0x65, 0x13, 0xd5, 0xc0, 0xa7, 0x8c, 0x44, 0xaa, 0xdc, + 0x90, 0x9b, 0xf5, 0x5d, 0xf5, 0xe7, 0xd7, 0x8d, 0xa5, 0xb4, 0x5d, 0xc7, 0xf3, 0x22, 0x02, 0xb0, + 0x27, 0x22, 0x9f, 0x51, 0x2b, 0xc5, 0x29, 0xab, 0xa8, 0x1e, 0x11, 0xd7, 0xef, 0xf9, 0x84, 0x09, + 0xb5, 0x32, 0x2e, 0xb2, 0x2e, 0x0e, 0x14, 0x15, 0xcd, 0xb9, 0x07, 0x36, 0x63, 0x24, 0x50, 0xab, + 0x71, 0x2e, 0x0b, 0x95, 0x67, 0x68, 0x7e, 0xdf, 0x0e, 0x02, 0xc7, 0x76, 0x0f, 0xd5, 0x5b, 0xd7, + 0x70, 0x4d, 0x90, 0x3b, 0xdb, 0x1f, 0xcf, 0xd6, 0xa5, 0x3f, 0x67, 0xeb, 0xd2, 0x87, 0x51, 0xbf, + 0x95, 0x4a, 0xf8, 0x34, 0xea, 0xb7, 0x1a, 0x25, 0x7b, 0x0b, 0x93, 0x19, 0xaf, 0x91, 0x56, 0x9e, + 0xd7, 0x22, 0xd0, 0xe3, 0x0c, 0x88, 0xd2, 0x46, 0x73, 0x76, 0x42, 0x79, 0xed, 0xe0, 0x19, 0xd0, + 0xf8, 0x2e, 0xa3, 0x85, 0x2e, 0xd0, 0x97, 0x01, 0xb1, 0x6f, 0xe0, 0x5f, 0x8e, 0xb9, 0x32, 0x23, + 0xb3, 0xa2, 0xe5, 0xbc, 0x1b, 0xdb, 0x3a, 0x9f, 0x73, 0xe8, 0xf9, 0x14, 0x87, 0xd6, 0x4a, 0x0e, + 0xe5, 0x85, 0x1b, 0x2b, 0x68, 0xb9, 0x30, 0x4b, 0xe6, 0x8d, 0xf1, 0x45, 0x46, 0x8b, 0x5d, 0xa0, + 0x7b, 0x44, 0x74, 0x82, 0x80, 0x9f, 0x10, 0xef, 0x15, 0x61, 0x3c, 0x84, 0xff, 0x98, 0xf5, 0x3e, + 0xaa, 0x79, 0x71, 0xad, 0x5a, 0x69, 0x54, 0x9b, 0x75, 0x2b, 0x8d, 0x76, 0x5e, 0x4c, 0xd1, 0xfc, + 0xb0, 0xa4, 0xb9, 0x28, 0xc2, 0x58, 0x43, 0x0f, 0xae, 0xd0, 0x96, 0x69, 0x6f, 0xff, 0xa8, 0xa0, + 0x6a, 0x17, 0xa8, 0x72, 0x88, 0x16, 0x8a, 0xab, 0xfe, 0xd8, 0xbc, 0xe2, 0xa7, 0x33, 0xcb, 0x3b, + 0xa2, 0xe1, 0x19, 0x81, 0x93, 0x65, 0x72, 0xd0, 0x9d, 0x4b, 0x4b, 0xf1, 0x68, 0x5a, 0x83, 0x3c, + 0x4a, 0x7b, 0x32, 0x0b, 0x6a, 0xc2, 0xc1, 0xd0, 0xdd, 0xd2, 0x07, 0x69, 0x4e, 0xeb, 0x50, 0x44, + 0x6a, 0x9b, 0xb3, 0x22, 0x33, 0x3e, 0xed, 0xf6, 0xfb, 0x51, 0xbf, 0x25, 0xef, 0x5a, 0xdf, 0x06, + 0xba, 0x7c, 0x3e, 0xd0, 0xe5, 0xdf, 0x03, 0x5d, 0xfe, 0x3c, 0xd4, 0xa5, 0xf3, 0xa1, 0x2e, 0xfd, + 0x1a, 0xea, 0xd2, 0x9b, 0x6d, 0xea, 0x8b, 0x83, 0x23, 0xc7, 0x74, 0x79, 0x88, 0xe3, 0xe6, 0x1b, + 0x36, 0x00, 0x11, 0x70, 0xe9, 0xca, 0x6b, 0xe3, 0xd3, 0x7c, 0x2c, 0xde, 0xf5, 0x08, 0x38, 0xb5, + 0xf8, 0x46, 0x7a, 0xfa, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x21, 0xf0, 0x1a, 0x2d, 0x23, 0x05, 0x00, + 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -246,6 +327,7 @@ const _ = grpc.SupportPackageIsVersion4 type MsgClient interface { RegisterAccount(ctx context.Context, in *MsgRegisterAccount, opts ...grpc.CallOption) (*MsgRegisterAccountResponse, error) ClearAccount(ctx context.Context, in *MsgClearAccount, opts ...grpc.CallOption) (*MsgClearAccountResponse, error) + SetAllowedDenoms(ctx context.Context, in *MsgSetAllowedDenoms, opts ...grpc.CallOption) (*MsgSetAllowedDenomsResponse, error) } type msgClient struct { @@ -274,10 +356,20 @@ func (c *msgClient) ClearAccount(ctx context.Context, in *MsgClearAccount, opts return out, nil } +func (c *msgClient) SetAllowedDenoms(ctx context.Context, in *MsgSetAllowedDenoms, opts ...grpc.CallOption) (*MsgSetAllowedDenomsResponse, error) { + out := new(MsgSetAllowedDenomsResponse) + err := c.cc.Invoke(ctx, "/noble.forwarding.v1.Msg/SetAllowedDenoms", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // MsgServer is the server API for Msg service. type MsgServer interface { RegisterAccount(context.Context, *MsgRegisterAccount) (*MsgRegisterAccountResponse, error) ClearAccount(context.Context, *MsgClearAccount) (*MsgClearAccountResponse, error) + SetAllowedDenoms(context.Context, *MsgSetAllowedDenoms) (*MsgSetAllowedDenomsResponse, error) } // UnimplementedMsgServer can be embedded to have forward compatible implementations. @@ -290,6 +382,9 @@ func (*UnimplementedMsgServer) RegisterAccount(ctx context.Context, req *MsgRegi func (*UnimplementedMsgServer) ClearAccount(ctx context.Context, req *MsgClearAccount) (*MsgClearAccountResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ClearAccount not implemented") } +func (*UnimplementedMsgServer) SetAllowedDenoms(ctx context.Context, req *MsgSetAllowedDenoms) (*MsgSetAllowedDenomsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SetAllowedDenoms not implemented") +} func RegisterMsgServer(s grpc1.Server, srv MsgServer) { s.RegisterService(&_Msg_serviceDesc, srv) @@ -331,6 +426,24 @@ func _Msg_ClearAccount_Handler(srv interface{}, ctx context.Context, dec func(in return interceptor(ctx, in, info, handler) } +func _Msg_SetAllowedDenoms_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgSetAllowedDenoms) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).SetAllowedDenoms(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/noble.forwarding.v1.Msg/SetAllowedDenoms", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).SetAllowedDenoms(ctx, req.(*MsgSetAllowedDenoms)) + } + return interceptor(ctx, in, info, handler) +} + var _Msg_serviceDesc = grpc.ServiceDesc{ ServiceName: "noble.forwarding.v1.Msg", HandlerType: (*MsgServer)(nil), @@ -343,6 +456,10 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ MethodName: "ClearAccount", Handler: _Msg_ClearAccount_Handler, }, + { + MethodName: "SetAllowedDenoms", + Handler: _Msg_SetAllowedDenoms_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "noble/forwarding/v1/tx.proto", @@ -499,6 +616,68 @@ func (m *MsgClearAccountResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) return len(dAtA) - i, nil } +func (m *MsgSetAllowedDenoms) 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 *MsgSetAllowedDenoms) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgSetAllowedDenoms) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Denoms) > 0 { + for iNdEx := len(m.Denoms) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Denoms[iNdEx]) + copy(dAtA[i:], m.Denoms[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.Denoms[iNdEx]))) + i-- + dAtA[i] = 0x12 + } + } + if len(m.Signer) > 0 { + i -= len(m.Signer) + copy(dAtA[i:], m.Signer) + i = encodeVarintTx(dAtA, i, uint64(len(m.Signer))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgSetAllowedDenomsResponse) 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 *MsgSetAllowedDenomsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgSetAllowedDenomsResponse) 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 @@ -577,6 +756,34 @@ func (m *MsgClearAccountResponse) Size() (n int) { return n } +func (m *MsgSetAllowedDenoms) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Signer) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if len(m.Denoms) > 0 { + for _, s := range m.Denoms { + l = len(s) + n += 1 + l + sovTx(uint64(l)) + } + } + return n +} + +func (m *MsgSetAllowedDenomsResponse) 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 } @@ -1027,6 +1234,170 @@ func (m *MsgClearAccountResponse) Unmarshal(dAtA []byte) error { } return nil } +func (m *MsgSetAllowedDenoms) 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: MsgSetAllowedDenoms: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgSetAllowedDenoms: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Signer", 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.Signer = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Denoms", 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.Denoms = append(m.Denoms, 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 *MsgSetAllowedDenomsResponse) 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: MsgSetAllowedDenomsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgSetAllowedDenomsResponse: 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