From d234d9e817cd9d32242af32e08907759a4957d18 Mon Sep 17 00:00:00 2001 From: Danilo Pantani Date: Mon, 2 Sep 2024 17:49:14 +0200 Subject: [PATCH] add fundraising module --- .../fundraising/module/v1/module.pulsar.go | 582 ++ .../fundraising/v1/allowed_bidder.pulsar.go | 719 ++ api/modules/fundraising/v1/auction.pulsar.go | 3768 +++++++ api/modules/fundraising/v1/bid.pulsar.go | 1137 ++ api/modules/fundraising/v1/genesis.pulsar.go | 1236 +++ api/modules/fundraising/v1/params.pulsar.go | 890 ++ api/modules/fundraising/v1/query.pulsar.go | 9121 +++++++++++++++++ api/modules/fundraising/v1/query_grpc.pb.go | 378 + api/modules/fundraising/v1/tx.pulsar.go | 8549 +++++++++++++++ api/modules/fundraising/v1/tx_grpc.pb.go | 349 + .../fundraising/v1/vesting_queue.pulsar.go | 903 ++ app/app.go | 7 +- app/app_config.go | 11 + docs/static/openapi.yml | 2 +- go.mod | 2 +- proto/buf.lock | 16 +- .../fundraising/module/v1/module.proto | 16 + .../fundraising/v1/allowed_bidder.proto | 28 + proto/modules/fundraising/v1/auction.proto | 178 + proto/modules/fundraising/v1/bid.proto | 78 + proto/modules/fundraising/v1/genesis.proto | 37 + proto/modules/fundraising/v1/params.proto | 40 + proto/modules/fundraising/v1/query.proto | 164 + proto/modules/fundraising/v1/tx.proto | 286 + .../fundraising/v1/vesting_queue.proto | 36 + testutil/keeper/fundraising.go | 73 + testutil/sample/sample.go | 4 +- testutil/simapp/simapp.go | 235 + x/fundraising/keeper/abci.go | 34 + x/fundraising/keeper/allowed_bidder.go | 40 + x/fundraising/keeper/auction.go | 681 ++ x/fundraising/keeper/auction_test.go | 923 ++ x/fundraising/keeper/bid.go | 374 + x/fundraising/keeper/bid_test.go | 476 + x/fundraising/keeper/execution.go | 50 + x/fundraising/keeper/execution_test.go | 160 + x/fundraising/keeper/hooks.go | 244 + x/fundraising/keeper/hooks_test.go | 263 + x/fundraising/keeper/invariants.go | 158 + x/fundraising/keeper/invariants_test.go | 156 + x/fundraising/keeper/keeper.go | 161 + x/fundraising/keeper/keeper_test.go | 372 + x/fundraising/keeper/match.go | 142 + x/fundraising/keeper/match_test.go | 1286 +++ x/fundraising/keeper/msg_server.go | 98 + x/fundraising/keeper/msg_update_params.go | 29 + .../keeper/msg_update_params_test.go | 66 + x/fundraising/keeper/query.go | 17 + x/fundraising/keeper/query_allowed_bidder.go | 56 + .../keeper/query_allowed_bidder_test.go | 145 + x/fundraising/keeper/query_auction.go | 82 + x/fundraising/keeper/query_auction_test.go | 158 + x/fundraising/keeper/query_bid.go | 51 + x/fundraising/keeper/query_bid_test.go | 139 + x/fundraising/keeper/query_params.go | 30 + x/fundraising/keeper/query_params_test.go | 33 + x/fundraising/keeper/query_vesting_queue.go | 33 + .../keeper/query_vesting_queue_test.go | 94 + x/fundraising/keeper/store_test.go | 297 + x/fundraising/keeper/vesting.go | 110 + x/fundraising/keeper/vesting_test.go | 97 + x/fundraising/module/autocli.go | 117 + x/fundraising/module/genesis.go | 150 + x/fundraising/module/genesis_test.go | 147 + x/fundraising/module/module.go | 255 + x/fundraising/module/simulation.go | 197 + x/fundraising/simulation/cancel_auction.go | 83 + .../simulation/create_batch_auction.go | 93 + .../simulation/create_fixed_price_auction.go | 87 + x/fundraising/simulation/helpers.go | 61 + x/fundraising/simulation/modify_bid.go | 80 + x/fundraising/simulation/place_bid.go | 119 + x/fundraising/spec/01_concepts.md | 84 + x/fundraising/spec/02_state.md | 252 + x/fundraising/spec/03_state_transitions.md | 39 + x/fundraising/spec/04_messages.md | 93 + x/fundraising/spec/05_end_block.md | 89 + x/fundraising/spec/06_events.md | 72 + x/fundraising/spec/07_params.md | 35 + x/fundraising/spec/08_hooks.md | 99 + x/fundraising/spec/README.md | 18 + x/fundraising/types/allowed_bidder.go | 36 + x/fundraising/types/allowed_bidder.pb.go | 402 + x/fundraising/types/allowed_bidder_test.go | 50 + x/fundraising/types/auction.go | 402 + x/fundraising/types/auction.pb.go | 1777 ++++ x/fundraising/types/auction_test.go | 307 + x/fundraising/types/bid.go | 49 + x/fundraising/types/bid.pb.go | 633 ++ x/fundraising/types/bid_test.go | 131 + x/fundraising/types/codec.go | 29 + x/fundraising/types/errors.go | 24 + x/fundraising/types/events.go | 30 + x/fundraising/types/expected_keepers.go | 146 + x/fundraising/types/genesis.go | 117 + x/fundraising/types/genesis.pb.go | 594 ++ x/fundraising/types/genesis_test.go | 327 + x/fundraising/types/hooks.go | 230 + x/fundraising/types/keys.go | 42 + x/fundraising/types/match.go | 76 + x/fundraising/types/match_test.go | 146 + x/fundraising/types/msgs.go | 243 + x/fundraising/types/msgs_test.go | 635 ++ x/fundraising/types/params.go | 64 + x/fundraising/types/params.pb.go | 492 + x/fundraising/types/params_test.go | 56 + x/fundraising/types/query.pb.go | 3930 +++++++ x/fundraising/types/query.pb.gw.go | 940 ++ x/fundraising/types/tx.pb.go | 3855 +++++++ x/fundraising/types/types.go | 1 + x/fundraising/types/utils.go | 68 + x/fundraising/types/utils_test.go | 162 + x/fundraising/types/vesting.go | 71 + x/fundraising/types/vesting_queue.pb.go | 526 + x/fundraising/types/vesting_test.go | 151 + 115 files changed, 54798 insertions(+), 14 deletions(-) create mode 100644 api/modules/fundraising/module/v1/module.pulsar.go create mode 100644 api/modules/fundraising/v1/allowed_bidder.pulsar.go create mode 100644 api/modules/fundraising/v1/auction.pulsar.go create mode 100644 api/modules/fundraising/v1/bid.pulsar.go create mode 100644 api/modules/fundraising/v1/genesis.pulsar.go create mode 100644 api/modules/fundraising/v1/params.pulsar.go create mode 100644 api/modules/fundraising/v1/query.pulsar.go create mode 100644 api/modules/fundraising/v1/query_grpc.pb.go create mode 100644 api/modules/fundraising/v1/tx.pulsar.go create mode 100644 api/modules/fundraising/v1/tx_grpc.pb.go create mode 100644 api/modules/fundraising/v1/vesting_queue.pulsar.go create mode 100644 proto/modules/fundraising/module/v1/module.proto create mode 100644 proto/modules/fundraising/v1/allowed_bidder.proto create mode 100644 proto/modules/fundraising/v1/auction.proto create mode 100644 proto/modules/fundraising/v1/bid.proto create mode 100644 proto/modules/fundraising/v1/genesis.proto create mode 100644 proto/modules/fundraising/v1/params.proto create mode 100644 proto/modules/fundraising/v1/query.proto create mode 100644 proto/modules/fundraising/v1/tx.proto create mode 100644 proto/modules/fundraising/v1/vesting_queue.proto create mode 100644 testutil/keeper/fundraising.go create mode 100644 testutil/simapp/simapp.go create mode 100644 x/fundraising/keeper/abci.go create mode 100644 x/fundraising/keeper/allowed_bidder.go create mode 100644 x/fundraising/keeper/auction.go create mode 100644 x/fundraising/keeper/auction_test.go create mode 100644 x/fundraising/keeper/bid.go create mode 100644 x/fundraising/keeper/bid_test.go create mode 100644 x/fundraising/keeper/execution.go create mode 100644 x/fundraising/keeper/execution_test.go create mode 100644 x/fundraising/keeper/hooks.go create mode 100644 x/fundraising/keeper/hooks_test.go create mode 100644 x/fundraising/keeper/invariants.go create mode 100644 x/fundraising/keeper/invariants_test.go create mode 100644 x/fundraising/keeper/keeper.go create mode 100644 x/fundraising/keeper/keeper_test.go create mode 100644 x/fundraising/keeper/match.go create mode 100644 x/fundraising/keeper/match_test.go create mode 100644 x/fundraising/keeper/msg_server.go create mode 100644 x/fundraising/keeper/msg_update_params.go create mode 100644 x/fundraising/keeper/msg_update_params_test.go create mode 100644 x/fundraising/keeper/query.go create mode 100644 x/fundraising/keeper/query_allowed_bidder.go create mode 100644 x/fundraising/keeper/query_allowed_bidder_test.go create mode 100644 x/fundraising/keeper/query_auction.go create mode 100644 x/fundraising/keeper/query_auction_test.go create mode 100644 x/fundraising/keeper/query_bid.go create mode 100644 x/fundraising/keeper/query_bid_test.go create mode 100644 x/fundraising/keeper/query_params.go create mode 100644 x/fundraising/keeper/query_params_test.go create mode 100644 x/fundraising/keeper/query_vesting_queue.go create mode 100644 x/fundraising/keeper/query_vesting_queue_test.go create mode 100644 x/fundraising/keeper/store_test.go create mode 100644 x/fundraising/keeper/vesting.go create mode 100644 x/fundraising/keeper/vesting_test.go create mode 100644 x/fundraising/module/autocli.go create mode 100644 x/fundraising/module/genesis.go create mode 100644 x/fundraising/module/genesis_test.go create mode 100644 x/fundraising/module/module.go create mode 100644 x/fundraising/module/simulation.go create mode 100644 x/fundraising/simulation/cancel_auction.go create mode 100644 x/fundraising/simulation/create_batch_auction.go create mode 100644 x/fundraising/simulation/create_fixed_price_auction.go create mode 100644 x/fundraising/simulation/helpers.go create mode 100644 x/fundraising/simulation/modify_bid.go create mode 100644 x/fundraising/simulation/place_bid.go create mode 100644 x/fundraising/spec/01_concepts.md create mode 100644 x/fundraising/spec/02_state.md create mode 100644 x/fundraising/spec/03_state_transitions.md create mode 100644 x/fundraising/spec/04_messages.md create mode 100644 x/fundraising/spec/05_end_block.md create mode 100644 x/fundraising/spec/06_events.md create mode 100644 x/fundraising/spec/07_params.md create mode 100644 x/fundraising/spec/08_hooks.md create mode 100644 x/fundraising/spec/README.md create mode 100644 x/fundraising/types/allowed_bidder.go create mode 100644 x/fundraising/types/allowed_bidder.pb.go create mode 100644 x/fundraising/types/allowed_bidder_test.go create mode 100644 x/fundraising/types/auction.go create mode 100644 x/fundraising/types/auction.pb.go create mode 100644 x/fundraising/types/auction_test.go create mode 100644 x/fundraising/types/bid.go create mode 100644 x/fundraising/types/bid.pb.go create mode 100644 x/fundraising/types/bid_test.go create mode 100644 x/fundraising/types/codec.go create mode 100644 x/fundraising/types/errors.go create mode 100644 x/fundraising/types/events.go create mode 100644 x/fundraising/types/expected_keepers.go create mode 100644 x/fundraising/types/genesis.go create mode 100644 x/fundraising/types/genesis.pb.go create mode 100644 x/fundraising/types/genesis_test.go create mode 100644 x/fundraising/types/hooks.go create mode 100644 x/fundraising/types/keys.go create mode 100644 x/fundraising/types/match.go create mode 100644 x/fundraising/types/match_test.go create mode 100644 x/fundraising/types/msgs.go create mode 100644 x/fundraising/types/msgs_test.go create mode 100644 x/fundraising/types/params.go create mode 100644 x/fundraising/types/params.pb.go create mode 100644 x/fundraising/types/params_test.go create mode 100644 x/fundraising/types/query.pb.go create mode 100644 x/fundraising/types/query.pb.gw.go create mode 100644 x/fundraising/types/tx.pb.go create mode 100644 x/fundraising/types/types.go create mode 100644 x/fundraising/types/utils.go create mode 100644 x/fundraising/types/utils_test.go create mode 100644 x/fundraising/types/vesting.go create mode 100644 x/fundraising/types/vesting_queue.pb.go create mode 100644 x/fundraising/types/vesting_test.go diff --git a/api/modules/fundraising/module/v1/module.pulsar.go b/api/modules/fundraising/module/v1/module.pulsar.go new file mode 100644 index 0000000..9838768 --- /dev/null +++ b/api/modules/fundraising/module/v1/module.pulsar.go @@ -0,0 +1,582 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package modulev1 + +import ( + _ "cosmossdk.io/api/cosmos/app/v1alpha1" + fmt "fmt" + runtime "github.com/cosmos/cosmos-proto/runtime" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + io "io" + reflect "reflect" + sync "sync" +) + +var ( + md_Module protoreflect.MessageDescriptor + fd_Module_authority protoreflect.FieldDescriptor +) + +func init() { + file_modules_fundraising_module_v1_module_proto_init() + md_Module = File_modules_fundraising_module_v1_module_proto.Messages().ByName("Module") + fd_Module_authority = md_Module.Fields().ByName("authority") +} + +var _ protoreflect.Message = (*fastReflection_Module)(nil) + +type fastReflection_Module Module + +func (x *Module) ProtoReflect() protoreflect.Message { + return (*fastReflection_Module)(x) +} + +func (x *Module) slowProtoReflect() protoreflect.Message { + mi := &file_modules_fundraising_module_v1_module_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_Module_messageType fastReflection_Module_messageType +var _ protoreflect.MessageType = fastReflection_Module_messageType{} + +type fastReflection_Module_messageType struct{} + +func (x fastReflection_Module_messageType) Zero() protoreflect.Message { + return (*fastReflection_Module)(nil) +} +func (x fastReflection_Module_messageType) New() protoreflect.Message { + return new(fastReflection_Module) +} +func (x fastReflection_Module_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_Module +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_Module) Descriptor() protoreflect.MessageDescriptor { + return md_Module +} + +// 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_Module) Type() protoreflect.MessageType { + return _fastReflection_Module_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_Module) New() protoreflect.Message { + return new(fastReflection_Module) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_Module) Interface() protoreflect.ProtoMessage { + return (*Module)(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_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. +// +// 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_Module) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "modules.fundraising.module.v1.Module.authority": + return x.Authority != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.module.v1.Module")) + } + panic(fmt.Errorf("message modules.fundraising.module.v1.Module 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_Module) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "modules.fundraising.module.v1.Module.authority": + x.Authority = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.module.v1.Module")) + } + panic(fmt.Errorf("message modules.fundraising.module.v1.Module 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_Module) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "modules.fundraising.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: modules.fundraising.module.v1.Module")) + } + panic(fmt.Errorf("message modules.fundraising.module.v1.Module 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_Module) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "modules.fundraising.module.v1.Module.authority": + x.Authority = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.module.v1.Module")) + } + panic(fmt.Errorf("message modules.fundraising.module.v1.Module 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_Module) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.module.v1.Module.authority": + panic(fmt.Errorf("field authority of message modules.fundraising.module.v1.Module is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.module.v1.Module")) + } + panic(fmt.Errorf("message modules.fundraising.module.v1.Module 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_Module) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.module.v1.Module.authority": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.module.v1.Module")) + } + panic(fmt.Errorf("message modules.fundraising.module.v1.Module 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_Module) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in modules.fundraising.module.v1.Module", 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_Module) 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_Module) 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_Module) 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_Module) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*Module) + 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.Authority) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*Module) + 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.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 { + 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().(*Module) + 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: Module: wiretype end group for non-group") + } + if fieldNum <= 0 { + 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:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: modules/fundraising/module/v1/module.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Module is the config object for the module. +type Module struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // authority defines the custom module authority. If not set, defaults to the governance module. + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` +} + +func (x *Module) Reset() { + *x = Module{} + if protoimpl.UnsafeEnabled { + mi := &file_modules_fundraising_module_v1_module_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Module) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Module) ProtoMessage() {} + +// Deprecated: Use Module.ProtoReflect.Descriptor instead. +func (*Module) Descriptor() ([]byte, []int) { + return file_modules_fundraising_module_v1_module_proto_rawDescGZIP(), []int{0} +} + +func (x *Module) GetAuthority() string { + if x != nil { + return x.Authority + } + return "" +} + +var File_modules_fundraising_module_v1_module_proto protoreflect.FileDescriptor + +var file_modules_fundraising_module_v1_module_proto_rawDesc = []byte{ + 0x0a, 0x2a, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, + 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x2f, + 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1d, 0x6d, 0x6f, + 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 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, 0x57, 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, 0x2f, 0xba, 0xc0, 0x96, 0xda, 0x01, 0x29, 0x0a, 0x27, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x69, 0x67, 0x6e, 0x69, 0x74, 0x65, + 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x78, 0x2f, 0x66, 0x75, 0x6e, 0x64, 0x72, + 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x42, 0x80, 0x02, 0x0a, 0x21, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, + 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 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, 0x37, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x6f, + 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 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, 0x4d, 0x46, 0x4d, 0xaa, 0x02, 0x1d, 0x4d, 0x6f, 0x64, + 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x46, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, + 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x1d, 0x4d, 0x6f, 0x64, + 0x75, 0x6c, 0x65, 0x73, 0x5c, 0x46, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, + 0x5c, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x29, 0x4d, 0x6f, 0x64, + 0x75, 0x6c, 0x65, 0x73, 0x5c, 0x46, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 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, 0x20, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, + 0x3a, 0x3a, 0x46, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x3a, 0x3a, 0x4d, + 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, +} + +var ( + file_modules_fundraising_module_v1_module_proto_rawDescOnce sync.Once + file_modules_fundraising_module_v1_module_proto_rawDescData = file_modules_fundraising_module_v1_module_proto_rawDesc +) + +func file_modules_fundraising_module_v1_module_proto_rawDescGZIP() []byte { + file_modules_fundraising_module_v1_module_proto_rawDescOnce.Do(func() { + file_modules_fundraising_module_v1_module_proto_rawDescData = protoimpl.X.CompressGZIP(file_modules_fundraising_module_v1_module_proto_rawDescData) + }) + return file_modules_fundraising_module_v1_module_proto_rawDescData +} + +var file_modules_fundraising_module_v1_module_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_modules_fundraising_module_v1_module_proto_goTypes = []interface{}{ + (*Module)(nil), // 0: modules.fundraising.module.v1.Module +} +var file_modules_fundraising_module_v1_module_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] 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 +} + +func init() { file_modules_fundraising_module_v1_module_proto_init() } +func file_modules_fundraising_module_v1_module_proto_init() { + if File_modules_fundraising_module_v1_module_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_modules_fundraising_module_v1_module_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Module); 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{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_modules_fundraising_module_v1_module_proto_rawDesc, + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_modules_fundraising_module_v1_module_proto_goTypes, + DependencyIndexes: file_modules_fundraising_module_v1_module_proto_depIdxs, + MessageInfos: file_modules_fundraising_module_v1_module_proto_msgTypes, + }.Build() + File_modules_fundraising_module_v1_module_proto = out.File + file_modules_fundraising_module_v1_module_proto_rawDesc = nil + file_modules_fundraising_module_v1_module_proto_goTypes = nil + file_modules_fundraising_module_v1_module_proto_depIdxs = nil +} diff --git a/api/modules/fundraising/v1/allowed_bidder.pulsar.go b/api/modules/fundraising/v1/allowed_bidder.pulsar.go new file mode 100644 index 0000000..3581fdc --- /dev/null +++ b/api/modules/fundraising/v1/allowed_bidder.pulsar.go @@ -0,0 +1,719 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package fundraisingv1 + +import ( + _ "cosmossdk.io/api/cosmos/msg/v1" + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + runtime "github.com/cosmos/cosmos-proto/runtime" + _ "github.com/cosmos/gogoproto/gogoproto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + io "io" + reflect "reflect" + sync "sync" +) + +var ( + md_AllowedBidder protoreflect.MessageDescriptor + fd_AllowedBidder_auction_id protoreflect.FieldDescriptor + fd_AllowedBidder_bidder protoreflect.FieldDescriptor + fd_AllowedBidder_max_bid_amount protoreflect.FieldDescriptor +) + +func init() { + file_modules_fundraising_v1_allowed_bidder_proto_init() + md_AllowedBidder = File_modules_fundraising_v1_allowed_bidder_proto.Messages().ByName("AllowedBidder") + fd_AllowedBidder_auction_id = md_AllowedBidder.Fields().ByName("auction_id") + fd_AllowedBidder_bidder = md_AllowedBidder.Fields().ByName("bidder") + fd_AllowedBidder_max_bid_amount = md_AllowedBidder.Fields().ByName("max_bid_amount") +} + +var _ protoreflect.Message = (*fastReflection_AllowedBidder)(nil) + +type fastReflection_AllowedBidder AllowedBidder + +func (x *AllowedBidder) ProtoReflect() protoreflect.Message { + return (*fastReflection_AllowedBidder)(x) +} + +func (x *AllowedBidder) slowProtoReflect() protoreflect.Message { + mi := &file_modules_fundraising_v1_allowed_bidder_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_AllowedBidder_messageType fastReflection_AllowedBidder_messageType +var _ protoreflect.MessageType = fastReflection_AllowedBidder_messageType{} + +type fastReflection_AllowedBidder_messageType struct{} + +func (x fastReflection_AllowedBidder_messageType) Zero() protoreflect.Message { + return (*fastReflection_AllowedBidder)(nil) +} +func (x fastReflection_AllowedBidder_messageType) New() protoreflect.Message { + return new(fastReflection_AllowedBidder) +} +func (x fastReflection_AllowedBidder_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_AllowedBidder +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_AllowedBidder) Descriptor() protoreflect.MessageDescriptor { + return md_AllowedBidder +} + +// 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_AllowedBidder) Type() protoreflect.MessageType { + return _fastReflection_AllowedBidder_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_AllowedBidder) New() protoreflect.Message { + return new(fastReflection_AllowedBidder) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_AllowedBidder) Interface() protoreflect.ProtoMessage { + return (*AllowedBidder)(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_AllowedBidder) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.AuctionId != uint64(0) { + value := protoreflect.ValueOfUint64(x.AuctionId) + if !f(fd_AllowedBidder_auction_id, value) { + return + } + } + if x.Bidder != "" { + value := protoreflect.ValueOfString(x.Bidder) + if !f(fd_AllowedBidder_bidder, value) { + return + } + } + if x.MaxBidAmount != "" { + value := protoreflect.ValueOfString(x.MaxBidAmount) + if !f(fd_AllowedBidder_max_bid_amount, 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_AllowedBidder) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "modules.fundraising.v1.AllowedBidder.auction_id": + return x.AuctionId != uint64(0) + case "modules.fundraising.v1.AllowedBidder.bidder": + return x.Bidder != "" + case "modules.fundraising.v1.AllowedBidder.max_bid_amount": + return x.MaxBidAmount != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.AllowedBidder")) + } + panic(fmt.Errorf("message modules.fundraising.v1.AllowedBidder 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_AllowedBidder) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "modules.fundraising.v1.AllowedBidder.auction_id": + x.AuctionId = uint64(0) + case "modules.fundraising.v1.AllowedBidder.bidder": + x.Bidder = "" + case "modules.fundraising.v1.AllowedBidder.max_bid_amount": + x.MaxBidAmount = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.AllowedBidder")) + } + panic(fmt.Errorf("message modules.fundraising.v1.AllowedBidder 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_AllowedBidder) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "modules.fundraising.v1.AllowedBidder.auction_id": + value := x.AuctionId + return protoreflect.ValueOfUint64(value) + case "modules.fundraising.v1.AllowedBidder.bidder": + value := x.Bidder + return protoreflect.ValueOfString(value) + case "modules.fundraising.v1.AllowedBidder.max_bid_amount": + value := x.MaxBidAmount + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.AllowedBidder")) + } + panic(fmt.Errorf("message modules.fundraising.v1.AllowedBidder 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_AllowedBidder) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "modules.fundraising.v1.AllowedBidder.auction_id": + x.AuctionId = value.Uint() + case "modules.fundraising.v1.AllowedBidder.bidder": + x.Bidder = value.Interface().(string) + case "modules.fundraising.v1.AllowedBidder.max_bid_amount": + x.MaxBidAmount = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.AllowedBidder")) + } + panic(fmt.Errorf("message modules.fundraising.v1.AllowedBidder 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_AllowedBidder) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.AllowedBidder.auction_id": + panic(fmt.Errorf("field auction_id of message modules.fundraising.v1.AllowedBidder is not mutable")) + case "modules.fundraising.v1.AllowedBidder.bidder": + panic(fmt.Errorf("field bidder of message modules.fundraising.v1.AllowedBidder is not mutable")) + case "modules.fundraising.v1.AllowedBidder.max_bid_amount": + panic(fmt.Errorf("field max_bid_amount of message modules.fundraising.v1.AllowedBidder is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.AllowedBidder")) + } + panic(fmt.Errorf("message modules.fundraising.v1.AllowedBidder 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_AllowedBidder) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.AllowedBidder.auction_id": + return protoreflect.ValueOfUint64(uint64(0)) + case "modules.fundraising.v1.AllowedBidder.bidder": + return protoreflect.ValueOfString("") + case "modules.fundraising.v1.AllowedBidder.max_bid_amount": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.AllowedBidder")) + } + panic(fmt.Errorf("message modules.fundraising.v1.AllowedBidder 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_AllowedBidder) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in modules.fundraising.v1.AllowedBidder", 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_AllowedBidder) 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_AllowedBidder) 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_AllowedBidder) 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_AllowedBidder) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*AllowedBidder) + 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.AuctionId != 0 { + n += 1 + runtime.Sov(uint64(x.AuctionId)) + } + l = len(x.Bidder) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.MaxBidAmount) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*AllowedBidder) + 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.MaxBidAmount) > 0 { + i -= len(x.MaxBidAmount) + copy(dAtA[i:], x.MaxBidAmount) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.MaxBidAmount))) + i-- + dAtA[i] = 0x1a + } + if len(x.Bidder) > 0 { + i -= len(x.Bidder) + copy(dAtA[i:], x.Bidder) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Bidder))) + i-- + dAtA[i] = 0x12 + } + if x.AuctionId != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.AuctionId)) + i-- + dAtA[i] = 0x8 + } + 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().(*AllowedBidder) + 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: AllowedBidder: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: AllowedBidder: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field AuctionId", wireType) + } + x.AuctionId = 0 + 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++ + x.AuctionId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Bidder", 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.Bidder = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field MaxBidAmount", 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.MaxBidAmount = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: modules/fundraising/v1/allowed_bidder.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// AllowedBidder defines an allowed bidder for the auction. +type AllowedBidder struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // auction_id specifies the id of the auction + AuctionId uint64 `protobuf:"varint,1,opt,name=auction_id,json=auctionId,proto3" json:"auction_id,omitempty"` + // bidder specifies the bech32-encoded address that bids for the auction + Bidder string `protobuf:"bytes,2,opt,name=bidder,proto3" json:"bidder,omitempty"` + // max_bid_amount specifies the maximum bid amount that the bidder can bid + MaxBidAmount string `protobuf:"bytes,3,opt,name=max_bid_amount,json=maxBidAmount,proto3" json:"max_bid_amount,omitempty"` +} + +func (x *AllowedBidder) Reset() { + *x = AllowedBidder{} + if protoimpl.UnsafeEnabled { + mi := &file_modules_fundraising_v1_allowed_bidder_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AllowedBidder) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AllowedBidder) ProtoMessage() {} + +// Deprecated: Use AllowedBidder.ProtoReflect.Descriptor instead. +func (*AllowedBidder) Descriptor() ([]byte, []int) { + return file_modules_fundraising_v1_allowed_bidder_proto_rawDescGZIP(), []int{0} +} + +func (x *AllowedBidder) GetAuctionId() uint64 { + if x != nil { + return x.AuctionId + } + return 0 +} + +func (x *AllowedBidder) GetBidder() string { + if x != nil { + return x.Bidder + } + return "" +} + +func (x *AllowedBidder) GetMaxBidAmount() string { + if x != nil { + return x.MaxBidAmount + } + return "" +} + +var File_modules_fundraising_v1_allowed_bidder_proto protoreflect.FileDescriptor + +var file_modules_fundraising_v1_allowed_bidder_proto_rawDesc = []byte{ + 0x0a, 0x2b, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, + 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, + 0x5f, 0x62, 0x69, 0x64, 0x64, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, 0x6d, + 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, + 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x1a, 0x17, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x6d, 0x73, + 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x73, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, + 0xaa, 0x01, 0x0a, 0x0d, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x42, 0x69, 0x64, 0x64, 0x65, + 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x12, 0x16, 0x0a, 0x06, 0x62, 0x69, 0x64, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x62, 0x69, 0x64, 0x64, 0x65, 0x72, 0x12, 0x51, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, + 0x62, 0x69, 0x64, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x2b, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xd2, + 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x0c, 0x6d, + 0x61, 0x78, 0x42, 0x69, 0x64, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x3a, 0x0f, 0x88, 0xa0, 0x1f, + 0x00, 0x82, 0xe7, 0xb0, 0x2a, 0x06, 0x62, 0x69, 0x64, 0x64, 0x65, 0x72, 0x42, 0xe1, 0x01, 0x0a, + 0x1a, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, 0x6e, + 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x42, 0x12, 0x41, 0x6c, 0x6c, + 0x6f, 0x77, 0x65, 0x64, 0x42, 0x69, 0x64, 0x64, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, + 0x01, 0x5a, 0x35, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x66, 0x75, 0x6e, 0x64, + 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x3b, 0x66, 0x75, 0x6e, 0x64, 0x72, + 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x4d, 0x46, 0x58, 0xaa, 0x02, + 0x16, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x46, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, + 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x16, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, + 0x73, 0x5c, 0x46, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, + 0xe2, 0x02, 0x22, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x5c, 0x46, 0x75, 0x6e, 0x64, 0x72, + 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x18, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x3a, + 0x3a, 0x46, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x3a, 0x3a, 0x56, 0x31, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_modules_fundraising_v1_allowed_bidder_proto_rawDescOnce sync.Once + file_modules_fundraising_v1_allowed_bidder_proto_rawDescData = file_modules_fundraising_v1_allowed_bidder_proto_rawDesc +) + +func file_modules_fundraising_v1_allowed_bidder_proto_rawDescGZIP() []byte { + file_modules_fundraising_v1_allowed_bidder_proto_rawDescOnce.Do(func() { + file_modules_fundraising_v1_allowed_bidder_proto_rawDescData = protoimpl.X.CompressGZIP(file_modules_fundraising_v1_allowed_bidder_proto_rawDescData) + }) + return file_modules_fundraising_v1_allowed_bidder_proto_rawDescData +} + +var file_modules_fundraising_v1_allowed_bidder_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_modules_fundraising_v1_allowed_bidder_proto_goTypes = []interface{}{ + (*AllowedBidder)(nil), // 0: modules.fundraising.v1.AllowedBidder +} +var file_modules_fundraising_v1_allowed_bidder_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] 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 +} + +func init() { file_modules_fundraising_v1_allowed_bidder_proto_init() } +func file_modules_fundraising_v1_allowed_bidder_proto_init() { + if File_modules_fundraising_v1_allowed_bidder_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_modules_fundraising_v1_allowed_bidder_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AllowedBidder); 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{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_modules_fundraising_v1_allowed_bidder_proto_rawDesc, + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_modules_fundraising_v1_allowed_bidder_proto_goTypes, + DependencyIndexes: file_modules_fundraising_v1_allowed_bidder_proto_depIdxs, + MessageInfos: file_modules_fundraising_v1_allowed_bidder_proto_msgTypes, + }.Build() + File_modules_fundraising_v1_allowed_bidder_proto = out.File + file_modules_fundraising_v1_allowed_bidder_proto_rawDesc = nil + file_modules_fundraising_v1_allowed_bidder_proto_goTypes = nil + file_modules_fundraising_v1_allowed_bidder_proto_depIdxs = nil +} diff --git a/api/modules/fundraising/v1/auction.pulsar.go b/api/modules/fundraising/v1/auction.pulsar.go new file mode 100644 index 0000000..581e425 --- /dev/null +++ b/api/modules/fundraising/v1/auction.pulsar.go @@ -0,0 +1,3768 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package fundraisingv1 + +import ( + _ "cosmossdk.io/api/amino" + v1beta1 "cosmossdk.io/api/cosmos/base/v1beta1" + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + runtime "github.com/cosmos/cosmos-proto/runtime" + _ "github.com/cosmos/gogoproto/gogoproto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + io "io" + reflect "reflect" + sync "sync" +) + +var _ protoreflect.List = (*_BaseAuction_10_list)(nil) + +type _BaseAuction_10_list struct { + list *[]*VestingSchedule +} + +func (x *_BaseAuction_10_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_BaseAuction_10_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) +} + +func (x *_BaseAuction_10_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*VestingSchedule) + (*x.list)[i] = concreteValue +} + +func (x *_BaseAuction_10_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*VestingSchedule) + *x.list = append(*x.list, concreteValue) +} + +func (x *_BaseAuction_10_list) AppendMutable() protoreflect.Value { + v := new(VestingSchedule) + *x.list = append(*x.list, v) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_BaseAuction_10_list) Truncate(n int) { + for i := n; i < len(*x.list); i++ { + (*x.list)[i] = nil + } + *x.list = (*x.list)[:n] +} + +func (x *_BaseAuction_10_list) NewElement() protoreflect.Value { + v := new(VestingSchedule) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_BaseAuction_10_list) IsValid() bool { + return x.list != nil +} + +var _ protoreflect.List = (*_BaseAuction_12_list)(nil) + +type _BaseAuction_12_list struct { + list *[]*timestamppb.Timestamp +} + +func (x *_BaseAuction_12_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_BaseAuction_12_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) +} + +func (x *_BaseAuction_12_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*timestamppb.Timestamp) + (*x.list)[i] = concreteValue +} + +func (x *_BaseAuction_12_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*timestamppb.Timestamp) + *x.list = append(*x.list, concreteValue) +} + +func (x *_BaseAuction_12_list) AppendMutable() protoreflect.Value { + v := new(timestamppb.Timestamp) + *x.list = append(*x.list, v) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_BaseAuction_12_list) Truncate(n int) { + for i := n; i < len(*x.list); i++ { + (*x.list)[i] = nil + } + *x.list = (*x.list)[:n] +} + +func (x *_BaseAuction_12_list) NewElement() protoreflect.Value { + v := new(timestamppb.Timestamp) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_BaseAuction_12_list) IsValid() bool { + return x.list != nil +} + +var ( + md_BaseAuction protoreflect.MessageDescriptor + fd_BaseAuction_id protoreflect.FieldDescriptor + fd_BaseAuction_type protoreflect.FieldDescriptor + fd_BaseAuction_auctioneer protoreflect.FieldDescriptor + fd_BaseAuction_selling_reserve_address protoreflect.FieldDescriptor + fd_BaseAuction_paying_reserve_address protoreflect.FieldDescriptor + fd_BaseAuction_start_price protoreflect.FieldDescriptor + fd_BaseAuction_selling_coin protoreflect.FieldDescriptor + fd_BaseAuction_paying_coin_denom protoreflect.FieldDescriptor + fd_BaseAuction_vesting_reserve_address protoreflect.FieldDescriptor + fd_BaseAuction_vesting_schedules protoreflect.FieldDescriptor + fd_BaseAuction_start_time protoreflect.FieldDescriptor + fd_BaseAuction_end_times protoreflect.FieldDescriptor + fd_BaseAuction_status protoreflect.FieldDescriptor +) + +func init() { + file_modules_fundraising_v1_auction_proto_init() + md_BaseAuction = File_modules_fundraising_v1_auction_proto.Messages().ByName("BaseAuction") + fd_BaseAuction_id = md_BaseAuction.Fields().ByName("id") + fd_BaseAuction_type = md_BaseAuction.Fields().ByName("type") + fd_BaseAuction_auctioneer = md_BaseAuction.Fields().ByName("auctioneer") + fd_BaseAuction_selling_reserve_address = md_BaseAuction.Fields().ByName("selling_reserve_address") + fd_BaseAuction_paying_reserve_address = md_BaseAuction.Fields().ByName("paying_reserve_address") + fd_BaseAuction_start_price = md_BaseAuction.Fields().ByName("start_price") + fd_BaseAuction_selling_coin = md_BaseAuction.Fields().ByName("selling_coin") + fd_BaseAuction_paying_coin_denom = md_BaseAuction.Fields().ByName("paying_coin_denom") + fd_BaseAuction_vesting_reserve_address = md_BaseAuction.Fields().ByName("vesting_reserve_address") + fd_BaseAuction_vesting_schedules = md_BaseAuction.Fields().ByName("vesting_schedules") + fd_BaseAuction_start_time = md_BaseAuction.Fields().ByName("start_time") + fd_BaseAuction_end_times = md_BaseAuction.Fields().ByName("end_times") + fd_BaseAuction_status = md_BaseAuction.Fields().ByName("status") +} + +var _ protoreflect.Message = (*fastReflection_BaseAuction)(nil) + +type fastReflection_BaseAuction BaseAuction + +func (x *BaseAuction) ProtoReflect() protoreflect.Message { + return (*fastReflection_BaseAuction)(x) +} + +func (x *BaseAuction) slowProtoReflect() protoreflect.Message { + mi := &file_modules_fundraising_v1_auction_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_BaseAuction_messageType fastReflection_BaseAuction_messageType +var _ protoreflect.MessageType = fastReflection_BaseAuction_messageType{} + +type fastReflection_BaseAuction_messageType struct{} + +func (x fastReflection_BaseAuction_messageType) Zero() protoreflect.Message { + return (*fastReflection_BaseAuction)(nil) +} +func (x fastReflection_BaseAuction_messageType) New() protoreflect.Message { + return new(fastReflection_BaseAuction) +} +func (x fastReflection_BaseAuction_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_BaseAuction +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_BaseAuction) Descriptor() protoreflect.MessageDescriptor { + return md_BaseAuction +} + +// 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_BaseAuction) Type() protoreflect.MessageType { + return _fastReflection_BaseAuction_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_BaseAuction) New() protoreflect.Message { + return new(fastReflection_BaseAuction) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_BaseAuction) Interface() protoreflect.ProtoMessage { + return (*BaseAuction)(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_BaseAuction) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Id != uint64(0) { + value := protoreflect.ValueOfUint64(x.Id) + if !f(fd_BaseAuction_id, value) { + return + } + } + if x.Type_ != 0 { + value := protoreflect.ValueOfEnum((protoreflect.EnumNumber)(x.Type_)) + if !f(fd_BaseAuction_type, value) { + return + } + } + if x.Auctioneer != "" { + value := protoreflect.ValueOfString(x.Auctioneer) + if !f(fd_BaseAuction_auctioneer, value) { + return + } + } + if x.SellingReserveAddress != "" { + value := protoreflect.ValueOfString(x.SellingReserveAddress) + if !f(fd_BaseAuction_selling_reserve_address, value) { + return + } + } + if x.PayingReserveAddress != "" { + value := protoreflect.ValueOfString(x.PayingReserveAddress) + if !f(fd_BaseAuction_paying_reserve_address, value) { + return + } + } + if x.StartPrice != "" { + value := protoreflect.ValueOfString(x.StartPrice) + if !f(fd_BaseAuction_start_price, value) { + return + } + } + if x.SellingCoin != nil { + value := protoreflect.ValueOfMessage(x.SellingCoin.ProtoReflect()) + if !f(fd_BaseAuction_selling_coin, value) { + return + } + } + if x.PayingCoinDenom != "" { + value := protoreflect.ValueOfString(x.PayingCoinDenom) + if !f(fd_BaseAuction_paying_coin_denom, value) { + return + } + } + if x.VestingReserveAddress != "" { + value := protoreflect.ValueOfString(x.VestingReserveAddress) + if !f(fd_BaseAuction_vesting_reserve_address, value) { + return + } + } + if len(x.VestingSchedules) != 0 { + value := protoreflect.ValueOfList(&_BaseAuction_10_list{list: &x.VestingSchedules}) + if !f(fd_BaseAuction_vesting_schedules, value) { + return + } + } + if x.StartTime != nil { + value := protoreflect.ValueOfMessage(x.StartTime.ProtoReflect()) + if !f(fd_BaseAuction_start_time, value) { + return + } + } + if len(x.EndTimes) != 0 { + value := protoreflect.ValueOfList(&_BaseAuction_12_list{list: &x.EndTimes}) + if !f(fd_BaseAuction_end_times, value) { + return + } + } + if x.Status != 0 { + value := protoreflect.ValueOfEnum((protoreflect.EnumNumber)(x.Status)) + if !f(fd_BaseAuction_status, 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_BaseAuction) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "modules.fundraising.v1.BaseAuction.id": + return x.Id != uint64(0) + case "modules.fundraising.v1.BaseAuction.type": + return x.Type_ != 0 + case "modules.fundraising.v1.BaseAuction.auctioneer": + return x.Auctioneer != "" + case "modules.fundraising.v1.BaseAuction.selling_reserve_address": + return x.SellingReserveAddress != "" + case "modules.fundraising.v1.BaseAuction.paying_reserve_address": + return x.PayingReserveAddress != "" + case "modules.fundraising.v1.BaseAuction.start_price": + return x.StartPrice != "" + case "modules.fundraising.v1.BaseAuction.selling_coin": + return x.SellingCoin != nil + case "modules.fundraising.v1.BaseAuction.paying_coin_denom": + return x.PayingCoinDenom != "" + case "modules.fundraising.v1.BaseAuction.vesting_reserve_address": + return x.VestingReserveAddress != "" + case "modules.fundraising.v1.BaseAuction.vesting_schedules": + return len(x.VestingSchedules) != 0 + case "modules.fundraising.v1.BaseAuction.start_time": + return x.StartTime != nil + case "modules.fundraising.v1.BaseAuction.end_times": + return len(x.EndTimes) != 0 + case "modules.fundraising.v1.BaseAuction.status": + return x.Status != 0 + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.BaseAuction")) + } + panic(fmt.Errorf("message modules.fundraising.v1.BaseAuction 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_BaseAuction) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "modules.fundraising.v1.BaseAuction.id": + x.Id = uint64(0) + case "modules.fundraising.v1.BaseAuction.type": + x.Type_ = 0 + case "modules.fundraising.v1.BaseAuction.auctioneer": + x.Auctioneer = "" + case "modules.fundraising.v1.BaseAuction.selling_reserve_address": + x.SellingReserveAddress = "" + case "modules.fundraising.v1.BaseAuction.paying_reserve_address": + x.PayingReserveAddress = "" + case "modules.fundraising.v1.BaseAuction.start_price": + x.StartPrice = "" + case "modules.fundraising.v1.BaseAuction.selling_coin": + x.SellingCoin = nil + case "modules.fundraising.v1.BaseAuction.paying_coin_denom": + x.PayingCoinDenom = "" + case "modules.fundraising.v1.BaseAuction.vesting_reserve_address": + x.VestingReserveAddress = "" + case "modules.fundraising.v1.BaseAuction.vesting_schedules": + x.VestingSchedules = nil + case "modules.fundraising.v1.BaseAuction.start_time": + x.StartTime = nil + case "modules.fundraising.v1.BaseAuction.end_times": + x.EndTimes = nil + case "modules.fundraising.v1.BaseAuction.status": + x.Status = 0 + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.BaseAuction")) + } + panic(fmt.Errorf("message modules.fundraising.v1.BaseAuction 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_BaseAuction) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "modules.fundraising.v1.BaseAuction.id": + value := x.Id + return protoreflect.ValueOfUint64(value) + case "modules.fundraising.v1.BaseAuction.type": + value := x.Type_ + return protoreflect.ValueOfEnum((protoreflect.EnumNumber)(value)) + case "modules.fundraising.v1.BaseAuction.auctioneer": + value := x.Auctioneer + return protoreflect.ValueOfString(value) + case "modules.fundraising.v1.BaseAuction.selling_reserve_address": + value := x.SellingReserveAddress + return protoreflect.ValueOfString(value) + case "modules.fundraising.v1.BaseAuction.paying_reserve_address": + value := x.PayingReserveAddress + return protoreflect.ValueOfString(value) + case "modules.fundraising.v1.BaseAuction.start_price": + value := x.StartPrice + return protoreflect.ValueOfString(value) + case "modules.fundraising.v1.BaseAuction.selling_coin": + value := x.SellingCoin + return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "modules.fundraising.v1.BaseAuction.paying_coin_denom": + value := x.PayingCoinDenom + return protoreflect.ValueOfString(value) + case "modules.fundraising.v1.BaseAuction.vesting_reserve_address": + value := x.VestingReserveAddress + return protoreflect.ValueOfString(value) + case "modules.fundraising.v1.BaseAuction.vesting_schedules": + if len(x.VestingSchedules) == 0 { + return protoreflect.ValueOfList(&_BaseAuction_10_list{}) + } + listValue := &_BaseAuction_10_list{list: &x.VestingSchedules} + return protoreflect.ValueOfList(listValue) + case "modules.fundraising.v1.BaseAuction.start_time": + value := x.StartTime + return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "modules.fundraising.v1.BaseAuction.end_times": + if len(x.EndTimes) == 0 { + return protoreflect.ValueOfList(&_BaseAuction_12_list{}) + } + listValue := &_BaseAuction_12_list{list: &x.EndTimes} + return protoreflect.ValueOfList(listValue) + case "modules.fundraising.v1.BaseAuction.status": + value := x.Status + return protoreflect.ValueOfEnum((protoreflect.EnumNumber)(value)) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.BaseAuction")) + } + panic(fmt.Errorf("message modules.fundraising.v1.BaseAuction 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_BaseAuction) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "modules.fundraising.v1.BaseAuction.id": + x.Id = value.Uint() + case "modules.fundraising.v1.BaseAuction.type": + x.Type_ = (AuctionType)(value.Enum()) + case "modules.fundraising.v1.BaseAuction.auctioneer": + x.Auctioneer = value.Interface().(string) + case "modules.fundraising.v1.BaseAuction.selling_reserve_address": + x.SellingReserveAddress = value.Interface().(string) + case "modules.fundraising.v1.BaseAuction.paying_reserve_address": + x.PayingReserveAddress = value.Interface().(string) + case "modules.fundraising.v1.BaseAuction.start_price": + x.StartPrice = value.Interface().(string) + case "modules.fundraising.v1.BaseAuction.selling_coin": + x.SellingCoin = value.Message().Interface().(*v1beta1.Coin) + case "modules.fundraising.v1.BaseAuction.paying_coin_denom": + x.PayingCoinDenom = value.Interface().(string) + case "modules.fundraising.v1.BaseAuction.vesting_reserve_address": + x.VestingReserveAddress = value.Interface().(string) + case "modules.fundraising.v1.BaseAuction.vesting_schedules": + lv := value.List() + clv := lv.(*_BaseAuction_10_list) + x.VestingSchedules = *clv.list + case "modules.fundraising.v1.BaseAuction.start_time": + x.StartTime = value.Message().Interface().(*timestamppb.Timestamp) + case "modules.fundraising.v1.BaseAuction.end_times": + lv := value.List() + clv := lv.(*_BaseAuction_12_list) + x.EndTimes = *clv.list + case "modules.fundraising.v1.BaseAuction.status": + x.Status = (AuctionStatus)(value.Enum()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.BaseAuction")) + } + panic(fmt.Errorf("message modules.fundraising.v1.BaseAuction 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_BaseAuction) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.BaseAuction.selling_coin": + if x.SellingCoin == nil { + x.SellingCoin = new(v1beta1.Coin) + } + return protoreflect.ValueOfMessage(x.SellingCoin.ProtoReflect()) + case "modules.fundraising.v1.BaseAuction.vesting_schedules": + if x.VestingSchedules == nil { + x.VestingSchedules = []*VestingSchedule{} + } + value := &_BaseAuction_10_list{list: &x.VestingSchedules} + return protoreflect.ValueOfList(value) + case "modules.fundraising.v1.BaseAuction.start_time": + if x.StartTime == nil { + x.StartTime = new(timestamppb.Timestamp) + } + return protoreflect.ValueOfMessage(x.StartTime.ProtoReflect()) + case "modules.fundraising.v1.BaseAuction.end_times": + if x.EndTimes == nil { + x.EndTimes = []*timestamppb.Timestamp{} + } + value := &_BaseAuction_12_list{list: &x.EndTimes} + return protoreflect.ValueOfList(value) + case "modules.fundraising.v1.BaseAuction.id": + panic(fmt.Errorf("field id of message modules.fundraising.v1.BaseAuction is not mutable")) + case "modules.fundraising.v1.BaseAuction.type": + panic(fmt.Errorf("field type of message modules.fundraising.v1.BaseAuction is not mutable")) + case "modules.fundraising.v1.BaseAuction.auctioneer": + panic(fmt.Errorf("field auctioneer of message modules.fundraising.v1.BaseAuction is not mutable")) + case "modules.fundraising.v1.BaseAuction.selling_reserve_address": + panic(fmt.Errorf("field selling_reserve_address of message modules.fundraising.v1.BaseAuction is not mutable")) + case "modules.fundraising.v1.BaseAuction.paying_reserve_address": + panic(fmt.Errorf("field paying_reserve_address of message modules.fundraising.v1.BaseAuction is not mutable")) + case "modules.fundraising.v1.BaseAuction.start_price": + panic(fmt.Errorf("field start_price of message modules.fundraising.v1.BaseAuction is not mutable")) + case "modules.fundraising.v1.BaseAuction.paying_coin_denom": + panic(fmt.Errorf("field paying_coin_denom of message modules.fundraising.v1.BaseAuction is not mutable")) + case "modules.fundraising.v1.BaseAuction.vesting_reserve_address": + panic(fmt.Errorf("field vesting_reserve_address of message modules.fundraising.v1.BaseAuction is not mutable")) + case "modules.fundraising.v1.BaseAuction.status": + panic(fmt.Errorf("field status of message modules.fundraising.v1.BaseAuction is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.BaseAuction")) + } + panic(fmt.Errorf("message modules.fundraising.v1.BaseAuction 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_BaseAuction) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.BaseAuction.id": + return protoreflect.ValueOfUint64(uint64(0)) + case "modules.fundraising.v1.BaseAuction.type": + return protoreflect.ValueOfEnum(0) + case "modules.fundraising.v1.BaseAuction.auctioneer": + return protoreflect.ValueOfString("") + case "modules.fundraising.v1.BaseAuction.selling_reserve_address": + return protoreflect.ValueOfString("") + case "modules.fundraising.v1.BaseAuction.paying_reserve_address": + return protoreflect.ValueOfString("") + case "modules.fundraising.v1.BaseAuction.start_price": + return protoreflect.ValueOfString("") + case "modules.fundraising.v1.BaseAuction.selling_coin": + m := new(v1beta1.Coin) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "modules.fundraising.v1.BaseAuction.paying_coin_denom": + return protoreflect.ValueOfString("") + case "modules.fundraising.v1.BaseAuction.vesting_reserve_address": + return protoreflect.ValueOfString("") + case "modules.fundraising.v1.BaseAuction.vesting_schedules": + list := []*VestingSchedule{} + return protoreflect.ValueOfList(&_BaseAuction_10_list{list: &list}) + case "modules.fundraising.v1.BaseAuction.start_time": + m := new(timestamppb.Timestamp) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "modules.fundraising.v1.BaseAuction.end_times": + list := []*timestamppb.Timestamp{} + return protoreflect.ValueOfList(&_BaseAuction_12_list{list: &list}) + case "modules.fundraising.v1.BaseAuction.status": + return protoreflect.ValueOfEnum(0) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.BaseAuction")) + } + panic(fmt.Errorf("message modules.fundraising.v1.BaseAuction 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_BaseAuction) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in modules.fundraising.v1.BaseAuction", 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_BaseAuction) 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_BaseAuction) 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_BaseAuction) 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_BaseAuction) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*BaseAuction) + 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.Id != 0 { + n += 1 + runtime.Sov(uint64(x.Id)) + } + if x.Type_ != 0 { + n += 1 + runtime.Sov(uint64(x.Type_)) + } + l = len(x.Auctioneer) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.SellingReserveAddress) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.PayingReserveAddress) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.StartPrice) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.SellingCoin != nil { + l = options.Size(x.SellingCoin) + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.PayingCoinDenom) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.VestingReserveAddress) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if len(x.VestingSchedules) > 0 { + for _, e := range x.VestingSchedules { + l = options.Size(e) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if x.StartTime != nil { + l = options.Size(x.StartTime) + n += 1 + l + runtime.Sov(uint64(l)) + } + if len(x.EndTimes) > 0 { + for _, e := range x.EndTimes { + l = options.Size(e) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if x.Status != 0 { + n += 1 + runtime.Sov(uint64(x.Status)) + } + 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().(*BaseAuction) + 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 x.Status != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.Status)) + i-- + dAtA[i] = 0x68 + } + if len(x.EndTimes) > 0 { + for iNdEx := len(x.EndTimes) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.EndTimes[iNdEx]) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x62 + } + } + if x.StartTime != nil { + encoded, err := options.Marshal(x.StartTime) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x5a + } + if len(x.VestingSchedules) > 0 { + for iNdEx := len(x.VestingSchedules) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.VestingSchedules[iNdEx]) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x52 + } + } + if len(x.VestingReserveAddress) > 0 { + i -= len(x.VestingReserveAddress) + copy(dAtA[i:], x.VestingReserveAddress) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.VestingReserveAddress))) + i-- + dAtA[i] = 0x4a + } + if len(x.PayingCoinDenom) > 0 { + i -= len(x.PayingCoinDenom) + copy(dAtA[i:], x.PayingCoinDenom) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.PayingCoinDenom))) + i-- + dAtA[i] = 0x42 + } + if x.SellingCoin != nil { + encoded, err := options.Marshal(x.SellingCoin) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x3a + } + if len(x.StartPrice) > 0 { + i -= len(x.StartPrice) + copy(dAtA[i:], x.StartPrice) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.StartPrice))) + i-- + dAtA[i] = 0x32 + } + if len(x.PayingReserveAddress) > 0 { + i -= len(x.PayingReserveAddress) + copy(dAtA[i:], x.PayingReserveAddress) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.PayingReserveAddress))) + i-- + dAtA[i] = 0x2a + } + if len(x.SellingReserveAddress) > 0 { + i -= len(x.SellingReserveAddress) + copy(dAtA[i:], x.SellingReserveAddress) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.SellingReserveAddress))) + i-- + dAtA[i] = 0x22 + } + if len(x.Auctioneer) > 0 { + i -= len(x.Auctioneer) + copy(dAtA[i:], x.Auctioneer) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Auctioneer))) + i-- + dAtA[i] = 0x1a + } + if x.Type_ != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.Type_)) + i-- + dAtA[i] = 0x10 + } + if x.Id != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.Id)) + i-- + dAtA[i] = 0x8 + } + 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().(*BaseAuction) + 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: BaseAuction: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: BaseAuction: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + x.Id = 0 + 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++ + x.Id |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Type_", wireType) + } + x.Type_ = 0 + 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++ + x.Type_ |= AuctionType(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Auctioneer", 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.Auctioneer = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field SellingReserveAddress", 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.SellingReserveAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field PayingReserveAddress", 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.PayingReserveAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field StartPrice", 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.StartPrice = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field SellingCoin", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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 + } + if x.SellingCoin == nil { + x.SellingCoin = &v1beta1.Coin{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.SellingCoin); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 8: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field PayingCoinDenom", 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.PayingCoinDenom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 9: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field VestingReserveAddress", 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.VestingReserveAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 10: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field VestingSchedules", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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.VestingSchedules = append(x.VestingSchedules, &VestingSchedule{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.VestingSchedules[len(x.VestingSchedules)-1]); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 11: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field StartTime", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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 + } + if x.StartTime == nil { + x.StartTime = ×tamppb.Timestamp{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.StartTime); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 12: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field EndTimes", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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.EndTimes = append(x.EndTimes, ×tamppb.Timestamp{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.EndTimes[len(x.EndTimes)-1]); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 13: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + x.Status = 0 + 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++ + x.Status |= AuctionStatus(b&0x7F) << shift + if b < 0x80 { + break + } + } + 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_FixedPriceAuction protoreflect.MessageDescriptor + fd_FixedPriceAuction_base_auction protoreflect.FieldDescriptor + fd_FixedPriceAuction_remaining_selling_coin protoreflect.FieldDescriptor +) + +func init() { + file_modules_fundraising_v1_auction_proto_init() + md_FixedPriceAuction = File_modules_fundraising_v1_auction_proto.Messages().ByName("FixedPriceAuction") + fd_FixedPriceAuction_base_auction = md_FixedPriceAuction.Fields().ByName("base_auction") + fd_FixedPriceAuction_remaining_selling_coin = md_FixedPriceAuction.Fields().ByName("remaining_selling_coin") +} + +var _ protoreflect.Message = (*fastReflection_FixedPriceAuction)(nil) + +type fastReflection_FixedPriceAuction FixedPriceAuction + +func (x *FixedPriceAuction) ProtoReflect() protoreflect.Message { + return (*fastReflection_FixedPriceAuction)(x) +} + +func (x *FixedPriceAuction) slowProtoReflect() protoreflect.Message { + mi := &file_modules_fundraising_v1_auction_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_FixedPriceAuction_messageType fastReflection_FixedPriceAuction_messageType +var _ protoreflect.MessageType = fastReflection_FixedPriceAuction_messageType{} + +type fastReflection_FixedPriceAuction_messageType struct{} + +func (x fastReflection_FixedPriceAuction_messageType) Zero() protoreflect.Message { + return (*fastReflection_FixedPriceAuction)(nil) +} +func (x fastReflection_FixedPriceAuction_messageType) New() protoreflect.Message { + return new(fastReflection_FixedPriceAuction) +} +func (x fastReflection_FixedPriceAuction_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_FixedPriceAuction +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_FixedPriceAuction) Descriptor() protoreflect.MessageDescriptor { + return md_FixedPriceAuction +} + +// 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_FixedPriceAuction) Type() protoreflect.MessageType { + return _fastReflection_FixedPriceAuction_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_FixedPriceAuction) New() protoreflect.Message { + return new(fastReflection_FixedPriceAuction) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_FixedPriceAuction) Interface() protoreflect.ProtoMessage { + return (*FixedPriceAuction)(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_FixedPriceAuction) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.BaseAuction != nil { + value := protoreflect.ValueOfMessage(x.BaseAuction.ProtoReflect()) + if !f(fd_FixedPriceAuction_base_auction, value) { + return + } + } + if x.RemainingSellingCoin != nil { + value := protoreflect.ValueOfMessage(x.RemainingSellingCoin.ProtoReflect()) + if !f(fd_FixedPriceAuction_remaining_selling_coin, 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_FixedPriceAuction) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "modules.fundraising.v1.FixedPriceAuction.base_auction": + return x.BaseAuction != nil + case "modules.fundraising.v1.FixedPriceAuction.remaining_selling_coin": + return x.RemainingSellingCoin != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.FixedPriceAuction")) + } + panic(fmt.Errorf("message modules.fundraising.v1.FixedPriceAuction 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_FixedPriceAuction) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "modules.fundraising.v1.FixedPriceAuction.base_auction": + x.BaseAuction = nil + case "modules.fundraising.v1.FixedPriceAuction.remaining_selling_coin": + x.RemainingSellingCoin = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.FixedPriceAuction")) + } + panic(fmt.Errorf("message modules.fundraising.v1.FixedPriceAuction 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_FixedPriceAuction) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "modules.fundraising.v1.FixedPriceAuction.base_auction": + value := x.BaseAuction + return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "modules.fundraising.v1.FixedPriceAuction.remaining_selling_coin": + value := x.RemainingSellingCoin + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.FixedPriceAuction")) + } + panic(fmt.Errorf("message modules.fundraising.v1.FixedPriceAuction 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_FixedPriceAuction) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "modules.fundraising.v1.FixedPriceAuction.base_auction": + x.BaseAuction = value.Message().Interface().(*BaseAuction) + case "modules.fundraising.v1.FixedPriceAuction.remaining_selling_coin": + x.RemainingSellingCoin = value.Message().Interface().(*v1beta1.Coin) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.FixedPriceAuction")) + } + panic(fmt.Errorf("message modules.fundraising.v1.FixedPriceAuction 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_FixedPriceAuction) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.FixedPriceAuction.base_auction": + if x.BaseAuction == nil { + x.BaseAuction = new(BaseAuction) + } + return protoreflect.ValueOfMessage(x.BaseAuction.ProtoReflect()) + case "modules.fundraising.v1.FixedPriceAuction.remaining_selling_coin": + if x.RemainingSellingCoin == nil { + x.RemainingSellingCoin = new(v1beta1.Coin) + } + return protoreflect.ValueOfMessage(x.RemainingSellingCoin.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.FixedPriceAuction")) + } + panic(fmt.Errorf("message modules.fundraising.v1.FixedPriceAuction 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_FixedPriceAuction) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.FixedPriceAuction.base_auction": + m := new(BaseAuction) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "modules.fundraising.v1.FixedPriceAuction.remaining_selling_coin": + m := new(v1beta1.Coin) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.FixedPriceAuction")) + } + panic(fmt.Errorf("message modules.fundraising.v1.FixedPriceAuction 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_FixedPriceAuction) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in modules.fundraising.v1.FixedPriceAuction", 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_FixedPriceAuction) 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_FixedPriceAuction) 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_FixedPriceAuction) 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_FixedPriceAuction) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*FixedPriceAuction) + 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.BaseAuction != nil { + l = options.Size(x.BaseAuction) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.RemainingSellingCoin != nil { + l = options.Size(x.RemainingSellingCoin) + 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().(*FixedPriceAuction) + 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 x.RemainingSellingCoin != nil { + encoded, err := options.Marshal(x.RemainingSellingCoin) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x12 + } + if x.BaseAuction != nil { + encoded, err := options.Marshal(x.BaseAuction) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + 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().(*FixedPriceAuction) + 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: FixedPriceAuction: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: FixedPriceAuction: 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 BaseAuction", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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 + } + if x.BaseAuction == nil { + x.BaseAuction = &BaseAuction{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.BaseAuction); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field RemainingSellingCoin", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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 + } + if x.RemainingSellingCoin == nil { + x.RemainingSellingCoin = &v1beta1.Coin{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.RemainingSellingCoin); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + 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_BatchAuction protoreflect.MessageDescriptor + fd_BatchAuction_base_auction protoreflect.FieldDescriptor + fd_BatchAuction_min_bid_price protoreflect.FieldDescriptor + fd_BatchAuction_matched_price protoreflect.FieldDescriptor + fd_BatchAuction_max_extended_round protoreflect.FieldDescriptor + fd_BatchAuction_extended_round_rate protoreflect.FieldDescriptor +) + +func init() { + file_modules_fundraising_v1_auction_proto_init() + md_BatchAuction = File_modules_fundraising_v1_auction_proto.Messages().ByName("BatchAuction") + fd_BatchAuction_base_auction = md_BatchAuction.Fields().ByName("base_auction") + fd_BatchAuction_min_bid_price = md_BatchAuction.Fields().ByName("min_bid_price") + fd_BatchAuction_matched_price = md_BatchAuction.Fields().ByName("matched_price") + fd_BatchAuction_max_extended_round = md_BatchAuction.Fields().ByName("max_extended_round") + fd_BatchAuction_extended_round_rate = md_BatchAuction.Fields().ByName("extended_round_rate") +} + +var _ protoreflect.Message = (*fastReflection_BatchAuction)(nil) + +type fastReflection_BatchAuction BatchAuction + +func (x *BatchAuction) ProtoReflect() protoreflect.Message { + return (*fastReflection_BatchAuction)(x) +} + +func (x *BatchAuction) slowProtoReflect() protoreflect.Message { + mi := &file_modules_fundraising_v1_auction_proto_msgTypes[2] + 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_BatchAuction_messageType fastReflection_BatchAuction_messageType +var _ protoreflect.MessageType = fastReflection_BatchAuction_messageType{} + +type fastReflection_BatchAuction_messageType struct{} + +func (x fastReflection_BatchAuction_messageType) Zero() protoreflect.Message { + return (*fastReflection_BatchAuction)(nil) +} +func (x fastReflection_BatchAuction_messageType) New() protoreflect.Message { + return new(fastReflection_BatchAuction) +} +func (x fastReflection_BatchAuction_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_BatchAuction +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_BatchAuction) Descriptor() protoreflect.MessageDescriptor { + return md_BatchAuction +} + +// 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_BatchAuction) Type() protoreflect.MessageType { + return _fastReflection_BatchAuction_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_BatchAuction) New() protoreflect.Message { + return new(fastReflection_BatchAuction) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_BatchAuction) Interface() protoreflect.ProtoMessage { + return (*BatchAuction)(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_BatchAuction) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.BaseAuction != nil { + value := protoreflect.ValueOfMessage(x.BaseAuction.ProtoReflect()) + if !f(fd_BatchAuction_base_auction, value) { + return + } + } + if x.MinBidPrice != "" { + value := protoreflect.ValueOfString(x.MinBidPrice) + if !f(fd_BatchAuction_min_bid_price, value) { + return + } + } + if x.MatchedPrice != "" { + value := protoreflect.ValueOfString(x.MatchedPrice) + if !f(fd_BatchAuction_matched_price, value) { + return + } + } + if x.MaxExtendedRound != uint32(0) { + value := protoreflect.ValueOfUint32(x.MaxExtendedRound) + if !f(fd_BatchAuction_max_extended_round, value) { + return + } + } + if x.ExtendedRoundRate != "" { + value := protoreflect.ValueOfString(x.ExtendedRoundRate) + if !f(fd_BatchAuction_extended_round_rate, 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_BatchAuction) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "modules.fundraising.v1.BatchAuction.base_auction": + return x.BaseAuction != nil + case "modules.fundraising.v1.BatchAuction.min_bid_price": + return x.MinBidPrice != "" + case "modules.fundraising.v1.BatchAuction.matched_price": + return x.MatchedPrice != "" + case "modules.fundraising.v1.BatchAuction.max_extended_round": + return x.MaxExtendedRound != uint32(0) + case "modules.fundraising.v1.BatchAuction.extended_round_rate": + return x.ExtendedRoundRate != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.BatchAuction")) + } + panic(fmt.Errorf("message modules.fundraising.v1.BatchAuction 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_BatchAuction) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "modules.fundraising.v1.BatchAuction.base_auction": + x.BaseAuction = nil + case "modules.fundraising.v1.BatchAuction.min_bid_price": + x.MinBidPrice = "" + case "modules.fundraising.v1.BatchAuction.matched_price": + x.MatchedPrice = "" + case "modules.fundraising.v1.BatchAuction.max_extended_round": + x.MaxExtendedRound = uint32(0) + case "modules.fundraising.v1.BatchAuction.extended_round_rate": + x.ExtendedRoundRate = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.BatchAuction")) + } + panic(fmt.Errorf("message modules.fundraising.v1.BatchAuction 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_BatchAuction) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "modules.fundraising.v1.BatchAuction.base_auction": + value := x.BaseAuction + return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "modules.fundraising.v1.BatchAuction.min_bid_price": + value := x.MinBidPrice + return protoreflect.ValueOfString(value) + case "modules.fundraising.v1.BatchAuction.matched_price": + value := x.MatchedPrice + return protoreflect.ValueOfString(value) + case "modules.fundraising.v1.BatchAuction.max_extended_round": + value := x.MaxExtendedRound + return protoreflect.ValueOfUint32(value) + case "modules.fundraising.v1.BatchAuction.extended_round_rate": + value := x.ExtendedRoundRate + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.BatchAuction")) + } + panic(fmt.Errorf("message modules.fundraising.v1.BatchAuction 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_BatchAuction) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "modules.fundraising.v1.BatchAuction.base_auction": + x.BaseAuction = value.Message().Interface().(*BaseAuction) + case "modules.fundraising.v1.BatchAuction.min_bid_price": + x.MinBidPrice = value.Interface().(string) + case "modules.fundraising.v1.BatchAuction.matched_price": + x.MatchedPrice = value.Interface().(string) + case "modules.fundraising.v1.BatchAuction.max_extended_round": + x.MaxExtendedRound = uint32(value.Uint()) + case "modules.fundraising.v1.BatchAuction.extended_round_rate": + x.ExtendedRoundRate = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.BatchAuction")) + } + panic(fmt.Errorf("message modules.fundraising.v1.BatchAuction 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_BatchAuction) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.BatchAuction.base_auction": + if x.BaseAuction == nil { + x.BaseAuction = new(BaseAuction) + } + return protoreflect.ValueOfMessage(x.BaseAuction.ProtoReflect()) + case "modules.fundraising.v1.BatchAuction.min_bid_price": + panic(fmt.Errorf("field min_bid_price of message modules.fundraising.v1.BatchAuction is not mutable")) + case "modules.fundraising.v1.BatchAuction.matched_price": + panic(fmt.Errorf("field matched_price of message modules.fundraising.v1.BatchAuction is not mutable")) + case "modules.fundraising.v1.BatchAuction.max_extended_round": + panic(fmt.Errorf("field max_extended_round of message modules.fundraising.v1.BatchAuction is not mutable")) + case "modules.fundraising.v1.BatchAuction.extended_round_rate": + panic(fmt.Errorf("field extended_round_rate of message modules.fundraising.v1.BatchAuction is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.BatchAuction")) + } + panic(fmt.Errorf("message modules.fundraising.v1.BatchAuction 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_BatchAuction) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.BatchAuction.base_auction": + m := new(BaseAuction) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "modules.fundraising.v1.BatchAuction.min_bid_price": + return protoreflect.ValueOfString("") + case "modules.fundraising.v1.BatchAuction.matched_price": + return protoreflect.ValueOfString("") + case "modules.fundraising.v1.BatchAuction.max_extended_round": + return protoreflect.ValueOfUint32(uint32(0)) + case "modules.fundraising.v1.BatchAuction.extended_round_rate": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.BatchAuction")) + } + panic(fmt.Errorf("message modules.fundraising.v1.BatchAuction 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_BatchAuction) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in modules.fundraising.v1.BatchAuction", 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_BatchAuction) 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_BatchAuction) 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_BatchAuction) 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_BatchAuction) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*BatchAuction) + 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.BaseAuction != nil { + l = options.Size(x.BaseAuction) + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.MinBidPrice) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.MatchedPrice) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.MaxExtendedRound != 0 { + n += 1 + runtime.Sov(uint64(x.MaxExtendedRound)) + } + l = len(x.ExtendedRoundRate) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*BatchAuction) + 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.ExtendedRoundRate) > 0 { + i -= len(x.ExtendedRoundRate) + copy(dAtA[i:], x.ExtendedRoundRate) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.ExtendedRoundRate))) + i-- + dAtA[i] = 0x2a + } + if x.MaxExtendedRound != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.MaxExtendedRound)) + i-- + dAtA[i] = 0x20 + } + if len(x.MatchedPrice) > 0 { + i -= len(x.MatchedPrice) + copy(dAtA[i:], x.MatchedPrice) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.MatchedPrice))) + i-- + dAtA[i] = 0x1a + } + if len(x.MinBidPrice) > 0 { + i -= len(x.MinBidPrice) + copy(dAtA[i:], x.MinBidPrice) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.MinBidPrice))) + i-- + dAtA[i] = 0x12 + } + if x.BaseAuction != nil { + encoded, err := options.Marshal(x.BaseAuction) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + 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().(*BatchAuction) + 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: BatchAuction: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: BatchAuction: 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 BaseAuction", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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 + } + if x.BaseAuction == nil { + x.BaseAuction = &BaseAuction{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.BaseAuction); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field MinBidPrice", 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.MinBidPrice = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field MatchedPrice", 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.MatchedPrice = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field MaxExtendedRound", wireType) + } + x.MaxExtendedRound = 0 + 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++ + x.MaxExtendedRound |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ExtendedRoundRate", 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.ExtendedRoundRate = 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_VestingSchedule protoreflect.MessageDescriptor + fd_VestingSchedule_release_time protoreflect.FieldDescriptor + fd_VestingSchedule_weight protoreflect.FieldDescriptor +) + +func init() { + file_modules_fundraising_v1_auction_proto_init() + md_VestingSchedule = File_modules_fundraising_v1_auction_proto.Messages().ByName("VestingSchedule") + fd_VestingSchedule_release_time = md_VestingSchedule.Fields().ByName("release_time") + fd_VestingSchedule_weight = md_VestingSchedule.Fields().ByName("weight") +} + +var _ protoreflect.Message = (*fastReflection_VestingSchedule)(nil) + +type fastReflection_VestingSchedule VestingSchedule + +func (x *VestingSchedule) ProtoReflect() protoreflect.Message { + return (*fastReflection_VestingSchedule)(x) +} + +func (x *VestingSchedule) slowProtoReflect() protoreflect.Message { + mi := &file_modules_fundraising_v1_auction_proto_msgTypes[3] + 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_VestingSchedule_messageType fastReflection_VestingSchedule_messageType +var _ protoreflect.MessageType = fastReflection_VestingSchedule_messageType{} + +type fastReflection_VestingSchedule_messageType struct{} + +func (x fastReflection_VestingSchedule_messageType) Zero() protoreflect.Message { + return (*fastReflection_VestingSchedule)(nil) +} +func (x fastReflection_VestingSchedule_messageType) New() protoreflect.Message { + return new(fastReflection_VestingSchedule) +} +func (x fastReflection_VestingSchedule_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_VestingSchedule +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_VestingSchedule) Descriptor() protoreflect.MessageDescriptor { + return md_VestingSchedule +} + +// 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_VestingSchedule) Type() protoreflect.MessageType { + return _fastReflection_VestingSchedule_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_VestingSchedule) New() protoreflect.Message { + return new(fastReflection_VestingSchedule) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_VestingSchedule) Interface() protoreflect.ProtoMessage { + return (*VestingSchedule)(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_VestingSchedule) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.ReleaseTime != nil { + value := protoreflect.ValueOfMessage(x.ReleaseTime.ProtoReflect()) + if !f(fd_VestingSchedule_release_time, value) { + return + } + } + if x.Weight != "" { + value := protoreflect.ValueOfString(x.Weight) + if !f(fd_VestingSchedule_weight, 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_VestingSchedule) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "modules.fundraising.v1.VestingSchedule.release_time": + return x.ReleaseTime != nil + case "modules.fundraising.v1.VestingSchedule.weight": + return x.Weight != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.VestingSchedule")) + } + panic(fmt.Errorf("message modules.fundraising.v1.VestingSchedule 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_VestingSchedule) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "modules.fundraising.v1.VestingSchedule.release_time": + x.ReleaseTime = nil + case "modules.fundraising.v1.VestingSchedule.weight": + x.Weight = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.VestingSchedule")) + } + panic(fmt.Errorf("message modules.fundraising.v1.VestingSchedule 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_VestingSchedule) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "modules.fundraising.v1.VestingSchedule.release_time": + value := x.ReleaseTime + return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "modules.fundraising.v1.VestingSchedule.weight": + value := x.Weight + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.VestingSchedule")) + } + panic(fmt.Errorf("message modules.fundraising.v1.VestingSchedule 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_VestingSchedule) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "modules.fundraising.v1.VestingSchedule.release_time": + x.ReleaseTime = value.Message().Interface().(*timestamppb.Timestamp) + case "modules.fundraising.v1.VestingSchedule.weight": + x.Weight = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.VestingSchedule")) + } + panic(fmt.Errorf("message modules.fundraising.v1.VestingSchedule 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_VestingSchedule) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.VestingSchedule.release_time": + if x.ReleaseTime == nil { + x.ReleaseTime = new(timestamppb.Timestamp) + } + return protoreflect.ValueOfMessage(x.ReleaseTime.ProtoReflect()) + case "modules.fundraising.v1.VestingSchedule.weight": + panic(fmt.Errorf("field weight of message modules.fundraising.v1.VestingSchedule is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.VestingSchedule")) + } + panic(fmt.Errorf("message modules.fundraising.v1.VestingSchedule 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_VestingSchedule) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.VestingSchedule.release_time": + m := new(timestamppb.Timestamp) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "modules.fundraising.v1.VestingSchedule.weight": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.VestingSchedule")) + } + panic(fmt.Errorf("message modules.fundraising.v1.VestingSchedule 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_VestingSchedule) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in modules.fundraising.v1.VestingSchedule", 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_VestingSchedule) 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_VestingSchedule) 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_VestingSchedule) 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_VestingSchedule) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*VestingSchedule) + 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.ReleaseTime != nil { + l = options.Size(x.ReleaseTime) + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Weight) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*VestingSchedule) + 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.Weight) > 0 { + i -= len(x.Weight) + copy(dAtA[i:], x.Weight) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Weight))) + i-- + dAtA[i] = 0x12 + } + if x.ReleaseTime != nil { + encoded, err := options.Marshal(x.ReleaseTime) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + 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().(*VestingSchedule) + 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: VestingSchedule: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: VestingSchedule: 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 ReleaseTime", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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 + } + if x.ReleaseTime == nil { + x.ReleaseTime = ×tamppb.Timestamp{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.ReleaseTime); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Weight", 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.Weight = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: modules/fundraising/v1/auction.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// AuctionType enumerates the valid types of an auction. +type AuctionType int32 + +const ( + // AUCTION_TYPE_UNSPECIFIED defines the default auction type + AuctionType_AUCTION_TYPE_UNSPECIFIED AuctionType = 0 + // AUCTION_TYPE_FIXED_PRICE defines the fixed price auction type + AuctionType_AUCTION_TYPE_FIXED_PRICE AuctionType = 1 + // AUCTION_TYPE_BATCH defines the batch auction type + AuctionType_AUCTION_TYPE_BATCH AuctionType = 2 +) + +// Enum value maps for AuctionType. +var ( + AuctionType_name = map[int32]string{ + 0: "AUCTION_TYPE_UNSPECIFIED", + 1: "AUCTION_TYPE_FIXED_PRICE", + 2: "AUCTION_TYPE_BATCH", + } + AuctionType_value = map[string]int32{ + "AUCTION_TYPE_UNSPECIFIED": 0, + "AUCTION_TYPE_FIXED_PRICE": 1, + "AUCTION_TYPE_BATCH": 2, + } +) + +func (x AuctionType) Enum() *AuctionType { + p := new(AuctionType) + *p = x + return p +} + +func (x AuctionType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (AuctionType) Descriptor() protoreflect.EnumDescriptor { + return file_modules_fundraising_v1_auction_proto_enumTypes[0].Descriptor() +} + +func (AuctionType) Type() protoreflect.EnumType { + return &file_modules_fundraising_v1_auction_proto_enumTypes[0] +} + +func (x AuctionType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AuctionType.Descriptor instead. +func (AuctionType) EnumDescriptor() ([]byte, []int) { + return file_modules_fundraising_v1_auction_proto_rawDescGZIP(), []int{0} +} + +// AuctionStatus enumerates the valid status of an auction. +type AuctionStatus int32 + +const ( + // AUCTION_STATUS_UNSPECIFIED defines the default auction status + AuctionStatus_AUCTION_STATUS_UNSPECIFIED AuctionStatus = 0 + // AUCTION_STATUS_STANDBY defines the standby auction status + AuctionStatus_AUCTION_STATUS_STANDBY AuctionStatus = 1 + // AUCTION_STATUS_STARTED defines the started auction status + AuctionStatus_AUCTION_STATUS_STARTED AuctionStatus = 2 + // AUCTION_STATUS_VESTING defines the vesting auction status + AuctionStatus_AUCTION_STATUS_VESTING AuctionStatus = 3 + // AUCTION_STATUS_FINISHED defines the finished auction status + AuctionStatus_AUCTION_STATUS_FINISHED AuctionStatus = 4 + // AUCTION_STATUS_CANCELLED defines the cancelled auction status + AuctionStatus_AUCTION_STATUS_CANCELLED AuctionStatus = 5 +) + +// Enum value maps for AuctionStatus. +var ( + AuctionStatus_name = map[int32]string{ + 0: "AUCTION_STATUS_UNSPECIFIED", + 1: "AUCTION_STATUS_STANDBY", + 2: "AUCTION_STATUS_STARTED", + 3: "AUCTION_STATUS_VESTING", + 4: "AUCTION_STATUS_FINISHED", + 5: "AUCTION_STATUS_CANCELLED", + } + AuctionStatus_value = map[string]int32{ + "AUCTION_STATUS_UNSPECIFIED": 0, + "AUCTION_STATUS_STANDBY": 1, + "AUCTION_STATUS_STARTED": 2, + "AUCTION_STATUS_VESTING": 3, + "AUCTION_STATUS_FINISHED": 4, + "AUCTION_STATUS_CANCELLED": 5, + } +) + +func (x AuctionStatus) Enum() *AuctionStatus { + p := new(AuctionStatus) + *p = x + return p +} + +func (x AuctionStatus) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (AuctionStatus) Descriptor() protoreflect.EnumDescriptor { + return file_modules_fundraising_v1_auction_proto_enumTypes[1].Descriptor() +} + +func (AuctionStatus) Type() protoreflect.EnumType { + return &file_modules_fundraising_v1_auction_proto_enumTypes[1] +} + +func (x AuctionStatus) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AuctionStatus.Descriptor instead. +func (AuctionStatus) EnumDescriptor() ([]byte, []int) { + return file_modules_fundraising_v1_auction_proto_rawDescGZIP(), []int{1} +} + +// BaseAuction defines a base auction type. It contains all the necessary fields +// for basic auction functionality. Any custom auction type should extend this +// type for additional functionality (e.g. batch auction, fixed price +// auction). +type BaseAuction struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // id specifies index of the auction + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + // type specifies the auction type + // type 1 is fixed price and 2 is batch auction + Type_ AuctionType `protobuf:"varint,2,opt,name=type,proto3,enum=modules.fundraising.v1.AuctionType" json:"type,omitempty"` + // auctioneer specifies the bech32-encoded address that creates the auction + Auctioneer string `protobuf:"bytes,3,opt,name=auctioneer,proto3" json:"auctioneer,omitempty"` + // selling_reserve_address specifies the bech32-encoded address that has all + // the selling coin + SellingReserveAddress string `protobuf:"bytes,4,opt,name=selling_reserve_address,json=sellingReserveAddress,proto3" json:"selling_reserve_address,omitempty"` + // paying_reserve_address specifies the bech32-encoded address that has all + // the paying coin + PayingReserveAddress string `protobuf:"bytes,5,opt,name=paying_reserve_address,json=payingReserveAddress,proto3" json:"paying_reserve_address,omitempty"` + // start_price specifies the starting price of the auction + // it is determined by the proportion of the price of paying coin denom + StartPrice string `protobuf:"bytes,6,opt,name=start_price,json=startPrice,proto3" json:"start_price,omitempty"` + // selling_coin specifies the selling coin for the auction + SellingCoin *v1beta1.Coin `protobuf:"bytes,7,opt,name=selling_coin,json=sellingCoin,proto3" json:"selling_coin,omitempty"` + // paying_coin_denom specifies the paying coin denom that bidders use to bid + // for + PayingCoinDenom string `protobuf:"bytes,8,opt,name=paying_coin_denom,json=payingCoinDenom,proto3" json:"paying_coin_denom,omitempty"` + // vesting_reserve_address specifies the bech32-encoded vesting address that + // holds vesting amounts of coin + VestingReserveAddress string `protobuf:"bytes,9,opt,name=vesting_reserve_address,json=vestingReserveAddress,proto3" json:"vesting_reserve_address,omitempty"` + // vesting_schedules specifies the vesting schedules for the auction + VestingSchedules []*VestingSchedule `protobuf:"bytes,10,rep,name=vesting_schedules,json=vestingSchedules,proto3" json:"vesting_schedules,omitempty"` + // start_time specifies the start time of the plan + StartTime *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` + // end_times specifies the end time of the plan + EndTimes []*timestamppb.Timestamp `protobuf:"bytes,12,rep,name=end_times,json=endTimes,proto3" json:"end_times,omitempty"` + // status specifies the auction status + Status AuctionStatus `protobuf:"varint,13,opt,name=status,proto3,enum=modules.fundraising.v1.AuctionStatus" json:"status,omitempty"` +} + +func (x *BaseAuction) Reset() { + *x = BaseAuction{} + if protoimpl.UnsafeEnabled { + mi := &file_modules_fundraising_v1_auction_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BaseAuction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BaseAuction) ProtoMessage() {} + +// Deprecated: Use BaseAuction.ProtoReflect.Descriptor instead. +func (*BaseAuction) Descriptor() ([]byte, []int) { + return file_modules_fundraising_v1_auction_proto_rawDescGZIP(), []int{0} +} + +func (x *BaseAuction) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *BaseAuction) GetType_() AuctionType { + if x != nil { + return x.Type_ + } + return AuctionType_AUCTION_TYPE_UNSPECIFIED +} + +func (x *BaseAuction) GetAuctioneer() string { + if x != nil { + return x.Auctioneer + } + return "" +} + +func (x *BaseAuction) GetSellingReserveAddress() string { + if x != nil { + return x.SellingReserveAddress + } + return "" +} + +func (x *BaseAuction) GetPayingReserveAddress() string { + if x != nil { + return x.PayingReserveAddress + } + return "" +} + +func (x *BaseAuction) GetStartPrice() string { + if x != nil { + return x.StartPrice + } + return "" +} + +func (x *BaseAuction) GetSellingCoin() *v1beta1.Coin { + if x != nil { + return x.SellingCoin + } + return nil +} + +func (x *BaseAuction) GetPayingCoinDenom() string { + if x != nil { + return x.PayingCoinDenom + } + return "" +} + +func (x *BaseAuction) GetVestingReserveAddress() string { + if x != nil { + return x.VestingReserveAddress + } + return "" +} + +func (x *BaseAuction) GetVestingSchedules() []*VestingSchedule { + if x != nil { + return x.VestingSchedules + } + return nil +} + +func (x *BaseAuction) GetStartTime() *timestamppb.Timestamp { + if x != nil { + return x.StartTime + } + return nil +} + +func (x *BaseAuction) GetEndTimes() []*timestamppb.Timestamp { + if x != nil { + return x.EndTimes + } + return nil +} + +func (x *BaseAuction) GetStatus() AuctionStatus { + if x != nil { + return x.Status + } + return AuctionStatus_AUCTION_STATUS_UNSPECIFIED +} + +// FixedPriceAuction defines the fixed price auction type. It is the most +// simpliest way to raise funds. An auctioneer sets the starting price for each +// selling amounts of coin and bidders bid to purchase based on the fixed price. +type FixedPriceAuction struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BaseAuction *BaseAuction `protobuf:"bytes,1,opt,name=base_auction,json=baseAuction,proto3" json:"base_auction,omitempty"` + // remaining_coin specifies the remaining amount of selling coin to sell + RemainingSellingCoin *v1beta1.Coin `protobuf:"bytes,2,opt,name=remaining_selling_coin,json=remainingSellingCoin,proto3" json:"remaining_selling_coin,omitempty"` +} + +func (x *FixedPriceAuction) Reset() { + *x = FixedPriceAuction{} + if protoimpl.UnsafeEnabled { + mi := &file_modules_fundraising_v1_auction_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FixedPriceAuction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FixedPriceAuction) ProtoMessage() {} + +// Deprecated: Use FixedPriceAuction.ProtoReflect.Descriptor instead. +func (*FixedPriceAuction) Descriptor() ([]byte, []int) { + return file_modules_fundraising_v1_auction_proto_rawDescGZIP(), []int{1} +} + +func (x *FixedPriceAuction) GetBaseAuction() *BaseAuction { + if x != nil { + return x.BaseAuction + } + return nil +} + +func (x *FixedPriceAuction) GetRemainingSellingCoin() *v1beta1.Coin { + if x != nil { + return x.RemainingSellingCoin + } + return nil +} + +// BatchAuction defines a batch auction type. It allows bidders to participate +// in the auction by placing their limit orders with a bid price they are +// willing to bid within the auction period. They can place multiple bids with +// different bid prices and if they want to modify their existing bid, they only +// have an option to modify with a higher bid price. Under the hood, an order +// book is created to record the bids to calculate the matched bidders. +type BatchAuction struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BaseAuction *BaseAuction `protobuf:"bytes,1,opt,name=base_auction,json=baseAuction,proto3" json:"base_auction,omitempty"` + // min_bid_price specifies the minibum bid price + MinBidPrice string `protobuf:"bytes,2,opt,name=min_bid_price,json=minBidPrice,proto3" json:"min_bid_price,omitempty"` + // matched_price specifies the matched price of the auction + MatchedPrice string `protobuf:"bytes,3,opt,name=matched_price,json=matchedPrice,proto3" json:"matched_price,omitempty"` + // max_extended_round specifies a maximum number of extended rounds + MaxExtendedRound uint32 `protobuf:"varint,4,opt,name=max_extended_round,json=maxExtendedRound,proto3" json:"max_extended_round,omitempty"` + // extended_round_rate specifies the rate that decides if the auction needs + // another round + ExtendedRoundRate string `protobuf:"bytes,5,opt,name=extended_round_rate,json=extendedRoundRate,proto3" json:"extended_round_rate,omitempty"` +} + +func (x *BatchAuction) Reset() { + *x = BatchAuction{} + if protoimpl.UnsafeEnabled { + mi := &file_modules_fundraising_v1_auction_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BatchAuction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BatchAuction) ProtoMessage() {} + +// Deprecated: Use BatchAuction.ProtoReflect.Descriptor instead. +func (*BatchAuction) Descriptor() ([]byte, []int) { + return file_modules_fundraising_v1_auction_proto_rawDescGZIP(), []int{2} +} + +func (x *BatchAuction) GetBaseAuction() *BaseAuction { + if x != nil { + return x.BaseAuction + } + return nil +} + +func (x *BatchAuction) GetMinBidPrice() string { + if x != nil { + return x.MinBidPrice + } + return "" +} + +func (x *BatchAuction) GetMatchedPrice() string { + if x != nil { + return x.MatchedPrice + } + return "" +} + +func (x *BatchAuction) GetMaxExtendedRound() uint32 { + if x != nil { + return x.MaxExtendedRound + } + return 0 +} + +func (x *BatchAuction) GetExtendedRoundRate() string { + if x != nil { + return x.ExtendedRoundRate + } + return "" +} + +// VestingSchedule defines the vesting schedule for the owner of an auction. +type VestingSchedule struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // release_time specifies the time for distribution of the vesting coin + ReleaseTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=release_time,json=releaseTime,proto3" json:"release_time,omitempty"` + // weight specifies the vesting weight for the schedule + Weight string `protobuf:"bytes,2,opt,name=weight,proto3" json:"weight,omitempty"` +} + +func (x *VestingSchedule) Reset() { + *x = VestingSchedule{} + if protoimpl.UnsafeEnabled { + mi := &file_modules_fundraising_v1_auction_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *VestingSchedule) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VestingSchedule) ProtoMessage() {} + +// Deprecated: Use VestingSchedule.ProtoReflect.Descriptor instead. +func (*VestingSchedule) Descriptor() ([]byte, []int) { + return file_modules_fundraising_v1_auction_proto_rawDescGZIP(), []int{3} +} + +func (x *VestingSchedule) GetReleaseTime() *timestamppb.Timestamp { + if x != nil { + return x.ReleaseTime + } + return nil +} + +func (x *VestingSchedule) GetWeight() string { + if x != nil { + return x.Weight + } + return "" +} + +var File_modules_fundraising_v1_auction_proto protoreflect.FileDescriptor + +var file_modules_fundraising_v1_auction_proto_rawDesc = []byte{ + 0x0a, 0x24, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, + 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, + 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x1a, 0x11, + 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x1e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x19, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x67, 0x6f, + 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x22, 0xd7, 0x06, 0x0a, 0x0b, 0x42, 0x61, 0x73, 0x65, 0x41, 0x75, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x37, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x23, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, 0x6e, 0x64, + 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, + 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x65, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x65, 0x65, 0x72, 0x12, 0x36, 0x0a, 0x17, + 0x73, 0x65, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x73, + 0x65, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x41, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x70, 0x61, 0x79, 0x69, 0x6e, 0x67, 0x5f, 0x72, + 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x70, 0x61, 0x79, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x52, 0x0a, 0x0b, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x31, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, + 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x63, + 0x79, 0x44, 0x65, 0x63, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, + 0x65, 0x63, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x83, + 0x01, 0x0a, 0x0c, 0x73, 0x65, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x18, + 0x07, 0x20, 0x01, 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, 0x45, 0xc8, 0xde, 0x1f, 0x00, 0xaa, 0xdf, 0x1f, 0x27, 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, 0x9a, 0xe7, 0xb0, 0x2a, 0x0c, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x5f, 0x63, 0x6f, 0x69, + 0x6e, 0x73, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0b, 0x73, 0x65, 0x6c, 0x6c, 0x69, 0x6e, 0x67, + 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x70, 0x61, 0x79, 0x69, 0x6e, 0x67, 0x5f, 0x63, + 0x6f, 0x69, 0x6e, 0x5f, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0f, 0x70, 0x61, 0x79, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x69, 0x6e, 0x44, 0x65, 0x6e, 0x6f, 0x6d, + 0x12, 0x36, 0x0a, 0x17, 0x76, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x15, 0x76, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x5a, 0x0a, 0x11, 0x76, 0x65, 0x73, 0x74, + 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x0a, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, + 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x73, + 0x74, 0x69, 0x6e, 0x67, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x42, 0x04, 0xc8, 0xde, + 0x1f, 0x00, 0x52, 0x10, 0x76, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x63, 0x68, 0x65, 0x64, + 0x75, 0x6c, 0x65, 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xc8, 0xde, 0x1f, 0x00, 0x90, 0xdf, 0x1f, 0x01, 0x52, 0x09, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x41, 0x0a, 0x09, 0x65, 0x6e, 0x64, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xc8, 0xde, 0x1f, 0x00, 0x90, 0xdf, + 0x1f, 0x01, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x3d, 0x0a, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6d, + 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, + 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x3a, 0x10, 0x88, 0xa0, 0x1f, + 0x00, 0xca, 0xb4, 0x2d, 0x08, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x22, 0xea, 0x01, + 0x0a, 0x11, 0x46, 0x69, 0x78, 0x65, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, 0x41, 0x75, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x4c, 0x0a, 0x0c, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x61, 0x75, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6d, 0x6f, 0x64, 0x75, + 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, + 0x76, 0x31, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x04, + 0xd0, 0xde, 0x1f, 0x01, 0x52, 0x0b, 0x62, 0x61, 0x73, 0x65, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x80, 0x01, 0x0a, 0x16, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x5f, + 0x73, 0x65, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, + 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, 0x2f, 0xc8, + 0xde, 0x1f, 0x00, 0xaa, 0xdf, 0x1f, 0x27, 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, 0x52, 0x14, + 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x6c, 0x6c, 0x69, 0x6e, 0x67, + 0x43, 0x6f, 0x69, 0x6e, 0x3a, 0x04, 0x88, 0xa0, 0x1f, 0x00, 0x22, 0xa2, 0x03, 0x0a, 0x0c, 0x42, + 0x61, 0x74, 0x63, 0x68, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4c, 0x0a, 0x0c, 0x62, + 0x61, 0x73, 0x65, 0x5f, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x23, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, 0x6e, 0x64, + 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x41, + 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x04, 0xd0, 0xde, 0x1f, 0x01, 0x52, 0x0b, 0x62, 0x61, + 0x73, 0x65, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x55, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, + 0x5f, 0x62, 0x69, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x31, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x4c, 0x65, 0x67, 0x61, + 0x63, 0x79, 0x44, 0x65, 0x63, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, + 0x44, 0x65, 0x63, 0x52, 0x0b, 0x6d, 0x69, 0x6e, 0x42, 0x69, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, + 0x12, 0x56, 0x0a, 0x0d, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x63, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x31, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, + 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, + 0x74, 0x68, 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x44, 0x65, 0x63, 0xd2, 0xb4, 0x2d, 0x0a, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x0c, 0x6d, 0x61, 0x74, 0x63, + 0x68, 0x65, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x6d, 0x61, 0x78, 0x5f, + 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x6d, 0x61, 0x78, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, + 0x64, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x61, 0x0a, 0x13, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, + 0x65, 0x64, 0x5f, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x31, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x1b, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x4c, + 0x65, 0x67, 0x61, 0x63, 0x79, 0x44, 0x65, 0x63, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x11, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, + 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x61, 0x74, 0x65, 0x3a, 0x04, 0x88, 0xa0, 0x1f, 0x00, 0x22, + 0xa5, 0x01, 0x0a, 0x0f, 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x63, 0x68, 0x65, 0x64, + 0x75, 0x6c, 0x65, 0x12, 0x47, 0x0a, 0x0c, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xc8, 0xde, 0x1f, 0x00, 0x90, 0xdf, 0x1f, 0x01, 0x52, + 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x49, 0x0a, 0x06, + 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x31, 0xc8, 0xde, + 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, + 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x44, 0x65, + 0x63, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, + 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x2a, 0xac, 0x01, 0x0a, 0x0b, 0x41, 0x75, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x30, 0x0a, 0x18, 0x41, 0x55, 0x43, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x1a, 0x12, 0x8a, 0x9d, 0x20, 0x0e, 0x41, 0x75, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x69, 0x6c, 0x12, 0x37, 0x0a, 0x18, 0x41, 0x55, 0x43, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x49, 0x58, 0x45, 0x44, 0x5f, + 0x50, 0x52, 0x49, 0x43, 0x45, 0x10, 0x01, 0x1a, 0x19, 0x8a, 0x9d, 0x20, 0x15, 0x41, 0x75, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x46, 0x69, 0x78, 0x65, 0x64, 0x50, 0x72, 0x69, + 0x63, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x41, 0x55, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x42, 0x41, 0x54, 0x43, 0x48, 0x10, 0x02, 0x1a, 0x14, 0x8a, 0x9d, 0x20, 0x10, + 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, + 0x1a, 0x04, 0x88, 0xa3, 0x1e, 0x00, 0x2a, 0xdf, 0x02, 0x0a, 0x0d, 0x41, 0x75, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x34, 0x0a, 0x1a, 0x41, 0x55, 0x43, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x1a, 0x14, 0x8a, 0x9d, 0x20, 0x10, 0x41, 0x75, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4e, 0x69, 0x6c, 0x12, 0x34, + 0x0a, 0x16, 0x41, 0x55, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, + 0x5f, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x42, 0x59, 0x10, 0x01, 0x1a, 0x18, 0x8a, 0x9d, 0x20, 0x14, + 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x74, 0x61, + 0x6e, 0x64, 0x42, 0x79, 0x12, 0x34, 0x0a, 0x16, 0x41, 0x55, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x45, 0x44, 0x10, 0x02, + 0x1a, 0x18, 0x8a, 0x9d, 0x20, 0x14, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x12, 0x34, 0x0a, 0x16, 0x41, 0x55, + 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x56, 0x45, 0x53, + 0x54, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x1a, 0x18, 0x8a, 0x9d, 0x20, 0x14, 0x41, 0x75, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, + 0x12, 0x36, 0x0a, 0x17, 0x41, 0x55, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x55, 0x53, 0x5f, 0x46, 0x49, 0x4e, 0x49, 0x53, 0x48, 0x45, 0x44, 0x10, 0x04, 0x1a, 0x19, 0x8a, + 0x9d, 0x20, 0x15, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x12, 0x38, 0x0a, 0x18, 0x41, 0x55, 0x43, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, + 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x05, 0x1a, 0x1a, 0x8a, 0x9d, 0x20, 0x16, 0x41, 0x75, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, + 0x65, 0x64, 0x1a, 0x04, 0x88, 0xa3, 0x1e, 0x00, 0x42, 0xdb, 0x01, 0x0a, 0x1a, 0x63, 0x6f, 0x6d, + 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, + 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x35, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, + 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, + 0x73, 0x2f, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, + 0x3b, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x76, 0x31, 0xa2, 0x02, + 0x03, 0x4d, 0x46, 0x58, 0xaa, 0x02, 0x16, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x46, + 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x16, + 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x5c, 0x46, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, + 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x22, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, + 0x5c, 0x46, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0x5c, + 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x18, 0x4d, 0x6f, + 0x64, 0x75, 0x6c, 0x65, 0x73, 0x3a, 0x3a, 0x46, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, + 0x6e, 0x67, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_modules_fundraising_v1_auction_proto_rawDescOnce sync.Once + file_modules_fundraising_v1_auction_proto_rawDescData = file_modules_fundraising_v1_auction_proto_rawDesc +) + +func file_modules_fundraising_v1_auction_proto_rawDescGZIP() []byte { + file_modules_fundraising_v1_auction_proto_rawDescOnce.Do(func() { + file_modules_fundraising_v1_auction_proto_rawDescData = protoimpl.X.CompressGZIP(file_modules_fundraising_v1_auction_proto_rawDescData) + }) + return file_modules_fundraising_v1_auction_proto_rawDescData +} + +var file_modules_fundraising_v1_auction_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_modules_fundraising_v1_auction_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_modules_fundraising_v1_auction_proto_goTypes = []interface{}{ + (AuctionType)(0), // 0: modules.fundraising.v1.AuctionType + (AuctionStatus)(0), // 1: modules.fundraising.v1.AuctionStatus + (*BaseAuction)(nil), // 2: modules.fundraising.v1.BaseAuction + (*FixedPriceAuction)(nil), // 3: modules.fundraising.v1.FixedPriceAuction + (*BatchAuction)(nil), // 4: modules.fundraising.v1.BatchAuction + (*VestingSchedule)(nil), // 5: modules.fundraising.v1.VestingSchedule + (*v1beta1.Coin)(nil), // 6: cosmos.base.v1beta1.Coin + (*timestamppb.Timestamp)(nil), // 7: google.protobuf.Timestamp +} +var file_modules_fundraising_v1_auction_proto_depIdxs = []int32{ + 0, // 0: modules.fundraising.v1.BaseAuction.type:type_name -> modules.fundraising.v1.AuctionType + 6, // 1: modules.fundraising.v1.BaseAuction.selling_coin:type_name -> cosmos.base.v1beta1.Coin + 5, // 2: modules.fundraising.v1.BaseAuction.vesting_schedules:type_name -> modules.fundraising.v1.VestingSchedule + 7, // 3: modules.fundraising.v1.BaseAuction.start_time:type_name -> google.protobuf.Timestamp + 7, // 4: modules.fundraising.v1.BaseAuction.end_times:type_name -> google.protobuf.Timestamp + 1, // 5: modules.fundraising.v1.BaseAuction.status:type_name -> modules.fundraising.v1.AuctionStatus + 2, // 6: modules.fundraising.v1.FixedPriceAuction.base_auction:type_name -> modules.fundraising.v1.BaseAuction + 6, // 7: modules.fundraising.v1.FixedPriceAuction.remaining_selling_coin:type_name -> cosmos.base.v1beta1.Coin + 2, // 8: modules.fundraising.v1.BatchAuction.base_auction:type_name -> modules.fundraising.v1.BaseAuction + 7, // 9: modules.fundraising.v1.VestingSchedule.release_time:type_name -> google.protobuf.Timestamp + 10, // [10:10] is the sub-list for method output_type + 10, // [10:10] is the sub-list for method input_type + 10, // [10:10] is the sub-list for extension type_name + 10, // [10:10] is the sub-list for extension extendee + 0, // [0:10] is the sub-list for field type_name +} + +func init() { file_modules_fundraising_v1_auction_proto_init() } +func file_modules_fundraising_v1_auction_proto_init() { + if File_modules_fundraising_v1_auction_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_modules_fundraising_v1_auction_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BaseAuction); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_modules_fundraising_v1_auction_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FixedPriceAuction); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_modules_fundraising_v1_auction_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BatchAuction); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_modules_fundraising_v1_auction_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VestingSchedule); 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{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_modules_fundraising_v1_auction_proto_rawDesc, + NumEnums: 2, + NumMessages: 4, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_modules_fundraising_v1_auction_proto_goTypes, + DependencyIndexes: file_modules_fundraising_v1_auction_proto_depIdxs, + EnumInfos: file_modules_fundraising_v1_auction_proto_enumTypes, + MessageInfos: file_modules_fundraising_v1_auction_proto_msgTypes, + }.Build() + File_modules_fundraising_v1_auction_proto = out.File + file_modules_fundraising_v1_auction_proto_rawDesc = nil + file_modules_fundraising_v1_auction_proto_goTypes = nil + file_modules_fundraising_v1_auction_proto_depIdxs = nil +} diff --git a/api/modules/fundraising/v1/bid.pulsar.go b/api/modules/fundraising/v1/bid.pulsar.go new file mode 100644 index 0000000..f6091c8 --- /dev/null +++ b/api/modules/fundraising/v1/bid.pulsar.go @@ -0,0 +1,1137 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package fundraisingv1 + +import ( + _ "cosmossdk.io/api/amino" + v1beta1 "cosmossdk.io/api/cosmos/base/v1beta1" + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + runtime "github.com/cosmos/cosmos-proto/runtime" + _ "github.com/cosmos/gogoproto/gogoproto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + io "io" + reflect "reflect" + sync "sync" +) + +var ( + md_Bid protoreflect.MessageDescriptor + fd_Bid_auction_id protoreflect.FieldDescriptor + fd_Bid_bidder protoreflect.FieldDescriptor + fd_Bid_id protoreflect.FieldDescriptor + fd_Bid_type protoreflect.FieldDescriptor + fd_Bid_price protoreflect.FieldDescriptor + fd_Bid_coin protoreflect.FieldDescriptor + fd_Bid_is_matched protoreflect.FieldDescriptor +) + +func init() { + file_modules_fundraising_v1_bid_proto_init() + md_Bid = File_modules_fundraising_v1_bid_proto.Messages().ByName("Bid") + fd_Bid_auction_id = md_Bid.Fields().ByName("auction_id") + fd_Bid_bidder = md_Bid.Fields().ByName("bidder") + fd_Bid_id = md_Bid.Fields().ByName("id") + fd_Bid_type = md_Bid.Fields().ByName("type") + fd_Bid_price = md_Bid.Fields().ByName("price") + fd_Bid_coin = md_Bid.Fields().ByName("coin") + fd_Bid_is_matched = md_Bid.Fields().ByName("is_matched") +} + +var _ protoreflect.Message = (*fastReflection_Bid)(nil) + +type fastReflection_Bid Bid + +func (x *Bid) ProtoReflect() protoreflect.Message { + return (*fastReflection_Bid)(x) +} + +func (x *Bid) slowProtoReflect() protoreflect.Message { + mi := &file_modules_fundraising_v1_bid_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_Bid_messageType fastReflection_Bid_messageType +var _ protoreflect.MessageType = fastReflection_Bid_messageType{} + +type fastReflection_Bid_messageType struct{} + +func (x fastReflection_Bid_messageType) Zero() protoreflect.Message { + return (*fastReflection_Bid)(nil) +} +func (x fastReflection_Bid_messageType) New() protoreflect.Message { + return new(fastReflection_Bid) +} +func (x fastReflection_Bid_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_Bid +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_Bid) Descriptor() protoreflect.MessageDescriptor { + return md_Bid +} + +// 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_Bid) Type() protoreflect.MessageType { + return _fastReflection_Bid_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_Bid) New() protoreflect.Message { + return new(fastReflection_Bid) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_Bid) Interface() protoreflect.ProtoMessage { + return (*Bid)(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_Bid) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.AuctionId != uint64(0) { + value := protoreflect.ValueOfUint64(x.AuctionId) + if !f(fd_Bid_auction_id, value) { + return + } + } + if x.Bidder != "" { + value := protoreflect.ValueOfString(x.Bidder) + if !f(fd_Bid_bidder, value) { + return + } + } + if x.Id != uint64(0) { + value := protoreflect.ValueOfUint64(x.Id) + if !f(fd_Bid_id, value) { + return + } + } + if x.Type_ != 0 { + value := protoreflect.ValueOfEnum((protoreflect.EnumNumber)(x.Type_)) + if !f(fd_Bid_type, value) { + return + } + } + if x.Price != "" { + value := protoreflect.ValueOfString(x.Price) + if !f(fd_Bid_price, value) { + return + } + } + if x.Coin != nil { + value := protoreflect.ValueOfMessage(x.Coin.ProtoReflect()) + if !f(fd_Bid_coin, value) { + return + } + } + if x.IsMatched != false { + value := protoreflect.ValueOfBool(x.IsMatched) + if !f(fd_Bid_is_matched, 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_Bid) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "modules.fundraising.v1.Bid.auction_id": + return x.AuctionId != uint64(0) + case "modules.fundraising.v1.Bid.bidder": + return x.Bidder != "" + case "modules.fundraising.v1.Bid.id": + return x.Id != uint64(0) + case "modules.fundraising.v1.Bid.type": + return x.Type_ != 0 + case "modules.fundraising.v1.Bid.price": + return x.Price != "" + case "modules.fundraising.v1.Bid.coin": + return x.Coin != nil + case "modules.fundraising.v1.Bid.is_matched": + return x.IsMatched != false + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.Bid")) + } + panic(fmt.Errorf("message modules.fundraising.v1.Bid 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_Bid) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "modules.fundraising.v1.Bid.auction_id": + x.AuctionId = uint64(0) + case "modules.fundraising.v1.Bid.bidder": + x.Bidder = "" + case "modules.fundraising.v1.Bid.id": + x.Id = uint64(0) + case "modules.fundraising.v1.Bid.type": + x.Type_ = 0 + case "modules.fundraising.v1.Bid.price": + x.Price = "" + case "modules.fundraising.v1.Bid.coin": + x.Coin = nil + case "modules.fundraising.v1.Bid.is_matched": + x.IsMatched = false + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.Bid")) + } + panic(fmt.Errorf("message modules.fundraising.v1.Bid 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_Bid) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "modules.fundraising.v1.Bid.auction_id": + value := x.AuctionId + return protoreflect.ValueOfUint64(value) + case "modules.fundraising.v1.Bid.bidder": + value := x.Bidder + return protoreflect.ValueOfString(value) + case "modules.fundraising.v1.Bid.id": + value := x.Id + return protoreflect.ValueOfUint64(value) + case "modules.fundraising.v1.Bid.type": + value := x.Type_ + return protoreflect.ValueOfEnum((protoreflect.EnumNumber)(value)) + case "modules.fundraising.v1.Bid.price": + value := x.Price + return protoreflect.ValueOfString(value) + case "modules.fundraising.v1.Bid.coin": + value := x.Coin + return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "modules.fundraising.v1.Bid.is_matched": + value := x.IsMatched + return protoreflect.ValueOfBool(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.Bid")) + } + panic(fmt.Errorf("message modules.fundraising.v1.Bid 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_Bid) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "modules.fundraising.v1.Bid.auction_id": + x.AuctionId = value.Uint() + case "modules.fundraising.v1.Bid.bidder": + x.Bidder = value.Interface().(string) + case "modules.fundraising.v1.Bid.id": + x.Id = value.Uint() + case "modules.fundraising.v1.Bid.type": + x.Type_ = (BidType)(value.Enum()) + case "modules.fundraising.v1.Bid.price": + x.Price = value.Interface().(string) + case "modules.fundraising.v1.Bid.coin": + x.Coin = value.Message().Interface().(*v1beta1.Coin) + case "modules.fundraising.v1.Bid.is_matched": + x.IsMatched = value.Bool() + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.Bid")) + } + panic(fmt.Errorf("message modules.fundraising.v1.Bid 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_Bid) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.Bid.coin": + if x.Coin == nil { + x.Coin = new(v1beta1.Coin) + } + return protoreflect.ValueOfMessage(x.Coin.ProtoReflect()) + case "modules.fundraising.v1.Bid.auction_id": + panic(fmt.Errorf("field auction_id of message modules.fundraising.v1.Bid is not mutable")) + case "modules.fundraising.v1.Bid.bidder": + panic(fmt.Errorf("field bidder of message modules.fundraising.v1.Bid is not mutable")) + case "modules.fundraising.v1.Bid.id": + panic(fmt.Errorf("field id of message modules.fundraising.v1.Bid is not mutable")) + case "modules.fundraising.v1.Bid.type": + panic(fmt.Errorf("field type of message modules.fundraising.v1.Bid is not mutable")) + case "modules.fundraising.v1.Bid.price": + panic(fmt.Errorf("field price of message modules.fundraising.v1.Bid is not mutable")) + case "modules.fundraising.v1.Bid.is_matched": + panic(fmt.Errorf("field is_matched of message modules.fundraising.v1.Bid is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.Bid")) + } + panic(fmt.Errorf("message modules.fundraising.v1.Bid 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_Bid) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.Bid.auction_id": + return protoreflect.ValueOfUint64(uint64(0)) + case "modules.fundraising.v1.Bid.bidder": + return protoreflect.ValueOfString("") + case "modules.fundraising.v1.Bid.id": + return protoreflect.ValueOfUint64(uint64(0)) + case "modules.fundraising.v1.Bid.type": + return protoreflect.ValueOfEnum(0) + case "modules.fundraising.v1.Bid.price": + return protoreflect.ValueOfString("") + case "modules.fundraising.v1.Bid.coin": + m := new(v1beta1.Coin) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "modules.fundraising.v1.Bid.is_matched": + return protoreflect.ValueOfBool(false) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.Bid")) + } + panic(fmt.Errorf("message modules.fundraising.v1.Bid 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_Bid) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in modules.fundraising.v1.Bid", 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_Bid) 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_Bid) 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_Bid) 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_Bid) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*Bid) + 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.AuctionId != 0 { + n += 1 + runtime.Sov(uint64(x.AuctionId)) + } + l = len(x.Bidder) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.Id != 0 { + n += 1 + runtime.Sov(uint64(x.Id)) + } + if x.Type_ != 0 { + n += 1 + runtime.Sov(uint64(x.Type_)) + } + l = len(x.Price) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.Coin != nil { + l = options.Size(x.Coin) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.IsMatched { + n += 2 + } + 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().(*Bid) + 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 x.IsMatched { + i-- + if x.IsMatched { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x38 + } + if x.Coin != nil { + encoded, err := options.Marshal(x.Coin) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x32 + } + if len(x.Price) > 0 { + i -= len(x.Price) + copy(dAtA[i:], x.Price) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Price))) + i-- + dAtA[i] = 0x2a + } + if x.Type_ != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.Type_)) + i-- + dAtA[i] = 0x20 + } + if x.Id != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.Id)) + i-- + dAtA[i] = 0x18 + } + if len(x.Bidder) > 0 { + i -= len(x.Bidder) + copy(dAtA[i:], x.Bidder) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Bidder))) + i-- + dAtA[i] = 0x12 + } + if x.AuctionId != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.AuctionId)) + i-- + dAtA[i] = 0x8 + } + 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().(*Bid) + 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: Bid: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Bid: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field AuctionId", wireType) + } + x.AuctionId = 0 + 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++ + x.AuctionId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Bidder", 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.Bidder = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + x.Id = 0 + 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++ + x.Id |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Type_", wireType) + } + x.Type_ = 0 + 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++ + x.Type_ |= BidType(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Price", 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.Price = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Coin", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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 + } + if x.Coin == nil { + x.Coin = &v1beta1.Coin{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Coin); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 7: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field IsMatched", wireType) + } + var v int + 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++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + x.IsMatched = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: modules/fundraising/v1/bid.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// BidType enumerates the valid types of a bid. +type BidType int32 + +const ( + // BID_TYPE_UNSPECIFIED defines the default bid type + BidType_BID_TYPE_UNSPECIFIED BidType = 0 + // BID_TYPE_FIXED_PRICE defines a bid type for a fixed price auction type + BidType_BID_TYPE_FIXED_PRICE BidType = 1 + // BID_TYPE_BATCH_WORTH defines a bid type for How-Much-Worth-to-Buy of a + // batch auction + BidType_BID_TYPE_BATCH_WORTH BidType = 2 + // BID_TYPE_BATCH_MANY defines a bid type for How-Many-Coins-to-Buy of a batch + // auction + BidType_BID_TYPE_BATCH_MANY BidType = 3 +) + +// Enum value maps for BidType. +var ( + BidType_name = map[int32]string{ + 0: "BID_TYPE_UNSPECIFIED", + 1: "BID_TYPE_FIXED_PRICE", + 2: "BID_TYPE_BATCH_WORTH", + 3: "BID_TYPE_BATCH_MANY", + } + BidType_value = map[string]int32{ + "BID_TYPE_UNSPECIFIED": 0, + "BID_TYPE_FIXED_PRICE": 1, + "BID_TYPE_BATCH_WORTH": 2, + "BID_TYPE_BATCH_MANY": 3, + } +) + +func (x BidType) Enum() *BidType { + p := new(BidType) + *p = x + return p +} + +func (x BidType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (BidType) Descriptor() protoreflect.EnumDescriptor { + return file_modules_fundraising_v1_bid_proto_enumTypes[0].Descriptor() +} + +func (BidType) Type() protoreflect.EnumType { + return &file_modules_fundraising_v1_bid_proto_enumTypes[0] +} + +func (x BidType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use BidType.Descriptor instead. +func (BidType) EnumDescriptor() ([]byte, []int) { + return file_modules_fundraising_v1_bid_proto_rawDescGZIP(), []int{0} +} + +// AddressType enumerates the available types of a address. +type AddressType int32 + +const ( + // the 32 bytes length address type of ADR 028. + AddressType_ADDRESS_TYPE_32_BYTES AddressType = 0 + // the default 20 bytes length address type. + AddressType_ADDRESS_TYPE_20_BYTES AddressType = 1 +) + +// Enum value maps for AddressType. +var ( + AddressType_name = map[int32]string{ + 0: "ADDRESS_TYPE_32_BYTES", + 1: "ADDRESS_TYPE_20_BYTES", + } + AddressType_value = map[string]int32{ + "ADDRESS_TYPE_32_BYTES": 0, + "ADDRESS_TYPE_20_BYTES": 1, + } +) + +func (x AddressType) Enum() *AddressType { + p := new(AddressType) + *p = x + return p +} + +func (x AddressType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (AddressType) Descriptor() protoreflect.EnumDescriptor { + return file_modules_fundraising_v1_bid_proto_enumTypes[1].Descriptor() +} + +func (AddressType) Type() protoreflect.EnumType { + return &file_modules_fundraising_v1_bid_proto_enumTypes[1] +} + +func (x AddressType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AddressType.Descriptor instead. +func (AddressType) EnumDescriptor() ([]byte, []int) { + return file_modules_fundraising_v1_bid_proto_rawDescGZIP(), []int{1} +} + +// Bid defines a standard bid for an auction. +type Bid struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // auction_id specifies the id of the auction + AuctionId uint64 `protobuf:"varint,1,opt,name=auction_id,json=auctionId,proto3" json:"auction_id,omitempty"` + // bidder specifies the bech32-encoded address that bids for the auction + Bidder string `protobuf:"bytes,2,opt,name=bidder,proto3" json:"bidder,omitempty"` + // id specifies an index of a bid for the bidder + Id uint64 `protobuf:"varint,3,opt,name=id,proto3" json:"id,omitempty"` + // type specifies the bid type; type 1 is fixed price, 2 is how-much-worth, 3 + // is how-many-coins + Type_ BidType `protobuf:"varint,4,opt,name=type,proto3,enum=modules.fundraising.v1.BidType" json:"type,omitempty"` + // price specifies the bid price in which price the bidder places the bid + Price string `protobuf:"bytes,5,opt,name=price,proto3" json:"price,omitempty"` + // coin specifies the amount of coin that the bidder bids + // for a fixed price auction, the denom is of the paying coin. + // for a batch auction of how-much-worth, the denom is of the paying coin. + // for a batch auction of how-many-coins, the denom is of the selling coin. + Coin *v1beta1.Coin `protobuf:"bytes,6,opt,name=coin,proto3" json:"coin,omitempty"` + // is_matched specifies the bid that is a winning bid and enables the bidder + // to purchase the selling coin + IsMatched bool `protobuf:"varint,7,opt,name=is_matched,json=isMatched,proto3" json:"is_matched,omitempty"` +} + +func (x *Bid) Reset() { + *x = Bid{} + if protoimpl.UnsafeEnabled { + mi := &file_modules_fundraising_v1_bid_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Bid) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Bid) ProtoMessage() {} + +// Deprecated: Use Bid.ProtoReflect.Descriptor instead. +func (*Bid) Descriptor() ([]byte, []int) { + return file_modules_fundraising_v1_bid_proto_rawDescGZIP(), []int{0} +} + +func (x *Bid) GetAuctionId() uint64 { + if x != nil { + return x.AuctionId + } + return 0 +} + +func (x *Bid) GetBidder() string { + if x != nil { + return x.Bidder + } + return "" +} + +func (x *Bid) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Bid) GetType_() BidType { + if x != nil { + return x.Type_ + } + return BidType_BID_TYPE_UNSPECIFIED +} + +func (x *Bid) GetPrice() string { + if x != nil { + return x.Price + } + return "" +} + +func (x *Bid) GetCoin() *v1beta1.Coin { + if x != nil { + return x.Coin + } + return nil +} + +func (x *Bid) GetIsMatched() bool { + if x != nil { + return x.IsMatched + } + return false +} + +var File_modules_fundraising_v1_bid_proto protoreflect.FileDescriptor + +var file_modules_fundraising_v1_bid_proto_rawDesc = []byte{ + 0x0a, 0x20, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, + 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x12, 0x16, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, 0x6e, 0x64, + 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x1a, 0x11, 0x61, 0x6d, 0x69, 0x6e, + 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe5, + 0x02, 0x0a, 0x03, 0x42, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x61, 0x75, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x69, 0x64, 0x64, 0x65, 0x72, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x69, 0x64, 0x64, 0x65, 0x72, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x33, 0x0a, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x6d, 0x6f, + 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, + 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x12, 0x47, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x31, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x4c, 0x65, 0x67, + 0x61, 0x63, 0x79, 0x44, 0x65, 0x63, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x44, 0x65, 0x63, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x74, 0x0a, 0x04, 0x63, + 0x6f, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 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, 0x45, 0xc8, 0xde, 0x1f, 0x00, 0xaa, 0xdf, 0x1f, 0x27, 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, 0x9a, 0xe7, 0xb0, 0x2a, 0x0c, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, + 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x04, 0x63, 0x6f, 0x69, + 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, + 0x3a, 0x04, 0x88, 0xa0, 0x1f, 0x00, 0x2a, 0xca, 0x01, 0x0a, 0x07, 0x42, 0x69, 0x64, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x28, 0x0a, 0x14, 0x42, 0x49, 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x1a, 0x0e, 0x8a, 0x9d, + 0x20, 0x0a, 0x42, 0x69, 0x64, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x69, 0x6c, 0x12, 0x2f, 0x0a, 0x14, + 0x42, 0x49, 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x49, 0x58, 0x45, 0x44, 0x5f, 0x50, + 0x52, 0x49, 0x43, 0x45, 0x10, 0x01, 0x1a, 0x15, 0x8a, 0x9d, 0x20, 0x11, 0x42, 0x69, 0x64, 0x54, + 0x79, 0x70, 0x65, 0x46, 0x69, 0x78, 0x65, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x2f, 0x0a, + 0x14, 0x42, 0x49, 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x41, 0x54, 0x43, 0x48, 0x5f, + 0x57, 0x4f, 0x52, 0x54, 0x48, 0x10, 0x02, 0x1a, 0x15, 0x8a, 0x9d, 0x20, 0x11, 0x42, 0x69, 0x64, + 0x54, 0x79, 0x70, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x57, 0x6f, 0x72, 0x74, 0x68, 0x12, 0x2d, + 0x0a, 0x13, 0x42, 0x49, 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x41, 0x54, 0x43, 0x48, + 0x5f, 0x4d, 0x41, 0x4e, 0x59, 0x10, 0x03, 0x1a, 0x14, 0x8a, 0x9d, 0x20, 0x10, 0x42, 0x69, 0x64, + 0x54, 0x79, 0x70, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x61, 0x6e, 0x79, 0x1a, 0x04, 0x88, + 0xa3, 0x1e, 0x00, 0x2a, 0x79, 0x0a, 0x0b, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x31, 0x0a, 0x15, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x33, 0x32, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x00, 0x1a, 0x16, 0x8a, + 0x9d, 0x20, 0x12, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x54, 0x79, 0x70, 0x65, 0x33, 0x32, + 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x15, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x32, 0x30, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x01, + 0x1a, 0x16, 0x8a, 0x9d, 0x20, 0x12, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x54, 0x79, 0x70, + 0x65, 0x32, 0x30, 0x42, 0x79, 0x74, 0x65, 0x73, 0x1a, 0x04, 0x88, 0xa3, 0x1e, 0x00, 0x42, 0xd7, + 0x01, 0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, + 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x42, 0x08, 0x42, + 0x69, 0x64, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x35, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x6f, 0x64, 0x75, + 0x6c, 0x65, 0x73, 0x2f, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2f, + 0x76, 0x31, 0x3b, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x76, 0x31, + 0xa2, 0x02, 0x03, 0x4d, 0x46, 0x58, 0xaa, 0x02, 0x16, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, + 0x2e, 0x46, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x31, 0xca, + 0x02, 0x16, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x5c, 0x46, 0x75, 0x6e, 0x64, 0x72, 0x61, + 0x69, 0x73, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x22, 0x4d, 0x6f, 0x64, 0x75, 0x6c, + 0x65, 0x73, 0x5c, 0x46, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x5c, 0x56, + 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x18, + 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x3a, 0x3a, 0x46, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, + 0x73, 0x69, 0x6e, 0x67, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_modules_fundraising_v1_bid_proto_rawDescOnce sync.Once + file_modules_fundraising_v1_bid_proto_rawDescData = file_modules_fundraising_v1_bid_proto_rawDesc +) + +func file_modules_fundraising_v1_bid_proto_rawDescGZIP() []byte { + file_modules_fundraising_v1_bid_proto_rawDescOnce.Do(func() { + file_modules_fundraising_v1_bid_proto_rawDescData = protoimpl.X.CompressGZIP(file_modules_fundraising_v1_bid_proto_rawDescData) + }) + return file_modules_fundraising_v1_bid_proto_rawDescData +} + +var file_modules_fundraising_v1_bid_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_modules_fundraising_v1_bid_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_modules_fundraising_v1_bid_proto_goTypes = []interface{}{ + (BidType)(0), // 0: modules.fundraising.v1.BidType + (AddressType)(0), // 1: modules.fundraising.v1.AddressType + (*Bid)(nil), // 2: modules.fundraising.v1.Bid + (*v1beta1.Coin)(nil), // 3: cosmos.base.v1beta1.Coin +} +var file_modules_fundraising_v1_bid_proto_depIdxs = []int32{ + 0, // 0: modules.fundraising.v1.Bid.type:type_name -> modules.fundraising.v1.BidType + 3, // 1: modules.fundraising.v1.Bid.coin:type_name -> cosmos.base.v1beta1.Coin + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_modules_fundraising_v1_bid_proto_init() } +func file_modules_fundraising_v1_bid_proto_init() { + if File_modules_fundraising_v1_bid_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_modules_fundraising_v1_bid_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Bid); 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{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_modules_fundraising_v1_bid_proto_rawDesc, + NumEnums: 2, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_modules_fundraising_v1_bid_proto_goTypes, + DependencyIndexes: file_modules_fundraising_v1_bid_proto_depIdxs, + EnumInfos: file_modules_fundraising_v1_bid_proto_enumTypes, + MessageInfos: file_modules_fundraising_v1_bid_proto_msgTypes, + }.Build() + File_modules_fundraising_v1_bid_proto = out.File + file_modules_fundraising_v1_bid_proto_rawDesc = nil + file_modules_fundraising_v1_bid_proto_goTypes = nil + file_modules_fundraising_v1_bid_proto_depIdxs = nil +} diff --git a/api/modules/fundraising/v1/genesis.pulsar.go b/api/modules/fundraising/v1/genesis.pulsar.go new file mode 100644 index 0000000..7e2fcf4 --- /dev/null +++ b/api/modules/fundraising/v1/genesis.pulsar.go @@ -0,0 +1,1236 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package fundraisingv1 + +import ( + _ "cosmossdk.io/api/amino" + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + runtime "github.com/cosmos/cosmos-proto/runtime" + _ "github.com/cosmos/gogoproto/gogoproto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + anypb "google.golang.org/protobuf/types/known/anypb" + io "io" + reflect "reflect" + sync "sync" +) + +var _ protoreflect.List = (*_GenesisState_2_list)(nil) + +type _GenesisState_2_list struct { + list *[]*anypb.Any +} + +func (x *_GenesisState_2_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_GenesisState_2_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) +} + +func (x *_GenesisState_2_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*anypb.Any) + (*x.list)[i] = concreteValue +} + +func (x *_GenesisState_2_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*anypb.Any) + *x.list = append(*x.list, concreteValue) +} + +func (x *_GenesisState_2_list) AppendMutable() protoreflect.Value { + v := new(anypb.Any) + *x.list = append(*x.list, v) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_GenesisState_2_list) Truncate(n int) { + for i := n; i < len(*x.list); i++ { + (*x.list)[i] = nil + } + *x.list = (*x.list)[:n] +} + +func (x *_GenesisState_2_list) NewElement() protoreflect.Value { + v := new(anypb.Any) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_GenesisState_2_list) IsValid() bool { + return x.list != nil +} + +var _ protoreflect.List = (*_GenesisState_3_list)(nil) + +type _GenesisState_3_list struct { + list *[]*AllowedBidder +} + +func (x *_GenesisState_3_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_GenesisState_3_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) +} + +func (x *_GenesisState_3_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*AllowedBidder) + (*x.list)[i] = concreteValue +} + +func (x *_GenesisState_3_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*AllowedBidder) + *x.list = append(*x.list, concreteValue) +} + +func (x *_GenesisState_3_list) AppendMutable() protoreflect.Value { + v := new(AllowedBidder) + *x.list = append(*x.list, v) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_GenesisState_3_list) Truncate(n int) { + for i := n; i < len(*x.list); i++ { + (*x.list)[i] = nil + } + *x.list = (*x.list)[:n] +} + +func (x *_GenesisState_3_list) NewElement() protoreflect.Value { + v := new(AllowedBidder) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_GenesisState_3_list) IsValid() bool { + return x.list != nil +} + +var _ protoreflect.List = (*_GenesisState_4_list)(nil) + +type _GenesisState_4_list struct { + list *[]*Bid +} + +func (x *_GenesisState_4_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_GenesisState_4_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) +} + +func (x *_GenesisState_4_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*Bid) + (*x.list)[i] = concreteValue +} + +func (x *_GenesisState_4_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*Bid) + *x.list = append(*x.list, concreteValue) +} + +func (x *_GenesisState_4_list) AppendMutable() protoreflect.Value { + v := new(Bid) + *x.list = append(*x.list, v) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_GenesisState_4_list) Truncate(n int) { + for i := n; i < len(*x.list); i++ { + (*x.list)[i] = nil + } + *x.list = (*x.list)[:n] +} + +func (x *_GenesisState_4_list) NewElement() protoreflect.Value { + v := new(Bid) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_GenesisState_4_list) IsValid() bool { + return x.list != nil +} + +var _ protoreflect.List = (*_GenesisState_5_list)(nil) + +type _GenesisState_5_list struct { + list *[]*VestingQueue +} + +func (x *_GenesisState_5_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_GenesisState_5_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) +} + +func (x *_GenesisState_5_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*VestingQueue) + (*x.list)[i] = concreteValue +} + +func (x *_GenesisState_5_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*VestingQueue) + *x.list = append(*x.list, concreteValue) +} + +func (x *_GenesisState_5_list) AppendMutable() protoreflect.Value { + v := new(VestingQueue) + *x.list = append(*x.list, v) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_GenesisState_5_list) Truncate(n int) { + for i := n; i < len(*x.list); i++ { + (*x.list)[i] = nil + } + *x.list = (*x.list)[:n] +} + +func (x *_GenesisState_5_list) NewElement() protoreflect.Value { + v := new(VestingQueue) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_GenesisState_5_list) IsValid() bool { + return x.list != nil +} + +var ( + md_GenesisState protoreflect.MessageDescriptor + fd_GenesisState_params protoreflect.FieldDescriptor + fd_GenesisState_auctionList protoreflect.FieldDescriptor + fd_GenesisState_allowedBidderList protoreflect.FieldDescriptor + fd_GenesisState_bidList protoreflect.FieldDescriptor + fd_GenesisState_vestingQueueList protoreflect.FieldDescriptor +) + +func init() { + file_modules_fundraising_v1_genesis_proto_init() + md_GenesisState = File_modules_fundraising_v1_genesis_proto.Messages().ByName("GenesisState") + fd_GenesisState_params = md_GenesisState.Fields().ByName("params") + fd_GenesisState_auctionList = md_GenesisState.Fields().ByName("auctionList") + fd_GenesisState_allowedBidderList = md_GenesisState.Fields().ByName("allowedBidderList") + fd_GenesisState_bidList = md_GenesisState.Fields().ByName("bidList") + fd_GenesisState_vestingQueueList = md_GenesisState.Fields().ByName("vestingQueueList") +} + +var _ protoreflect.Message = (*fastReflection_GenesisState)(nil) + +type fastReflection_GenesisState GenesisState + +func (x *GenesisState) ProtoReflect() protoreflect.Message { + return (*fastReflection_GenesisState)(x) +} + +func (x *GenesisState) slowProtoReflect() protoreflect.Message { + mi := &file_modules_fundraising_v1_genesis_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_GenesisState_messageType fastReflection_GenesisState_messageType +var _ protoreflect.MessageType = fastReflection_GenesisState_messageType{} + +type fastReflection_GenesisState_messageType struct{} + +func (x fastReflection_GenesisState_messageType) Zero() protoreflect.Message { + return (*fastReflection_GenesisState)(nil) +} +func (x fastReflection_GenesisState_messageType) New() protoreflect.Message { + return new(fastReflection_GenesisState) +} +func (x fastReflection_GenesisState_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_GenesisState +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_GenesisState) Descriptor() protoreflect.MessageDescriptor { + return md_GenesisState +} + +// 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_GenesisState) Type() protoreflect.MessageType { + return _fastReflection_GenesisState_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_GenesisState) New() protoreflect.Message { + return new(fastReflection_GenesisState) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_GenesisState) Interface() protoreflect.ProtoMessage { + return (*GenesisState)(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_GenesisState) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Params != nil { + value := protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + if !f(fd_GenesisState_params, value) { + return + } + } + if len(x.AuctionList) != 0 { + value := protoreflect.ValueOfList(&_GenesisState_2_list{list: &x.AuctionList}) + if !f(fd_GenesisState_auctionList, value) { + return + } + } + if len(x.AllowedBidderList) != 0 { + value := protoreflect.ValueOfList(&_GenesisState_3_list{list: &x.AllowedBidderList}) + if !f(fd_GenesisState_allowedBidderList, value) { + return + } + } + if len(x.BidList) != 0 { + value := protoreflect.ValueOfList(&_GenesisState_4_list{list: &x.BidList}) + if !f(fd_GenesisState_bidList, value) { + return + } + } + if len(x.VestingQueueList) != 0 { + value := protoreflect.ValueOfList(&_GenesisState_5_list{list: &x.VestingQueueList}) + if !f(fd_GenesisState_vestingQueueList, 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_GenesisState) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "modules.fundraising.v1.GenesisState.params": + return x.Params != nil + case "modules.fundraising.v1.GenesisState.auctionList": + return len(x.AuctionList) != 0 + case "modules.fundraising.v1.GenesisState.allowedBidderList": + return len(x.AllowedBidderList) != 0 + case "modules.fundraising.v1.GenesisState.bidList": + return len(x.BidList) != 0 + case "modules.fundraising.v1.GenesisState.vestingQueueList": + return len(x.VestingQueueList) != 0 + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.GenesisState")) + } + panic(fmt.Errorf("message modules.fundraising.v1.GenesisState 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_GenesisState) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "modules.fundraising.v1.GenesisState.params": + x.Params = nil + case "modules.fundraising.v1.GenesisState.auctionList": + x.AuctionList = nil + case "modules.fundraising.v1.GenesisState.allowedBidderList": + x.AllowedBidderList = nil + case "modules.fundraising.v1.GenesisState.bidList": + x.BidList = nil + case "modules.fundraising.v1.GenesisState.vestingQueueList": + x.VestingQueueList = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.GenesisState")) + } + panic(fmt.Errorf("message modules.fundraising.v1.GenesisState 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_GenesisState) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "modules.fundraising.v1.GenesisState.params": + value := x.Params + return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "modules.fundraising.v1.GenesisState.auctionList": + if len(x.AuctionList) == 0 { + return protoreflect.ValueOfList(&_GenesisState_2_list{}) + } + listValue := &_GenesisState_2_list{list: &x.AuctionList} + return protoreflect.ValueOfList(listValue) + case "modules.fundraising.v1.GenesisState.allowedBidderList": + if len(x.AllowedBidderList) == 0 { + return protoreflect.ValueOfList(&_GenesisState_3_list{}) + } + listValue := &_GenesisState_3_list{list: &x.AllowedBidderList} + return protoreflect.ValueOfList(listValue) + case "modules.fundraising.v1.GenesisState.bidList": + if len(x.BidList) == 0 { + return protoreflect.ValueOfList(&_GenesisState_4_list{}) + } + listValue := &_GenesisState_4_list{list: &x.BidList} + return protoreflect.ValueOfList(listValue) + case "modules.fundraising.v1.GenesisState.vestingQueueList": + if len(x.VestingQueueList) == 0 { + return protoreflect.ValueOfList(&_GenesisState_5_list{}) + } + listValue := &_GenesisState_5_list{list: &x.VestingQueueList} + return protoreflect.ValueOfList(listValue) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.GenesisState")) + } + panic(fmt.Errorf("message modules.fundraising.v1.GenesisState 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_GenesisState) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "modules.fundraising.v1.GenesisState.params": + x.Params = value.Message().Interface().(*Params) + case "modules.fundraising.v1.GenesisState.auctionList": + lv := value.List() + clv := lv.(*_GenesisState_2_list) + x.AuctionList = *clv.list + case "modules.fundraising.v1.GenesisState.allowedBidderList": + lv := value.List() + clv := lv.(*_GenesisState_3_list) + x.AllowedBidderList = *clv.list + case "modules.fundraising.v1.GenesisState.bidList": + lv := value.List() + clv := lv.(*_GenesisState_4_list) + x.BidList = *clv.list + case "modules.fundraising.v1.GenesisState.vestingQueueList": + lv := value.List() + clv := lv.(*_GenesisState_5_list) + x.VestingQueueList = *clv.list + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.GenesisState")) + } + panic(fmt.Errorf("message modules.fundraising.v1.GenesisState 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_GenesisState) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.GenesisState.params": + if x.Params == nil { + x.Params = new(Params) + } + return protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + case "modules.fundraising.v1.GenesisState.auctionList": + if x.AuctionList == nil { + x.AuctionList = []*anypb.Any{} + } + value := &_GenesisState_2_list{list: &x.AuctionList} + return protoreflect.ValueOfList(value) + case "modules.fundraising.v1.GenesisState.allowedBidderList": + if x.AllowedBidderList == nil { + x.AllowedBidderList = []*AllowedBidder{} + } + value := &_GenesisState_3_list{list: &x.AllowedBidderList} + return protoreflect.ValueOfList(value) + case "modules.fundraising.v1.GenesisState.bidList": + if x.BidList == nil { + x.BidList = []*Bid{} + } + value := &_GenesisState_4_list{list: &x.BidList} + return protoreflect.ValueOfList(value) + case "modules.fundraising.v1.GenesisState.vestingQueueList": + if x.VestingQueueList == nil { + x.VestingQueueList = []*VestingQueue{} + } + value := &_GenesisState_5_list{list: &x.VestingQueueList} + return protoreflect.ValueOfList(value) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.GenesisState")) + } + panic(fmt.Errorf("message modules.fundraising.v1.GenesisState 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_GenesisState) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.GenesisState.params": + m := new(Params) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "modules.fundraising.v1.GenesisState.auctionList": + list := []*anypb.Any{} + return protoreflect.ValueOfList(&_GenesisState_2_list{list: &list}) + case "modules.fundraising.v1.GenesisState.allowedBidderList": + list := []*AllowedBidder{} + return protoreflect.ValueOfList(&_GenesisState_3_list{list: &list}) + case "modules.fundraising.v1.GenesisState.bidList": + list := []*Bid{} + return protoreflect.ValueOfList(&_GenesisState_4_list{list: &list}) + case "modules.fundraising.v1.GenesisState.vestingQueueList": + list := []*VestingQueue{} + return protoreflect.ValueOfList(&_GenesisState_5_list{list: &list}) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.GenesisState")) + } + panic(fmt.Errorf("message modules.fundraising.v1.GenesisState 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_GenesisState) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in modules.fundraising.v1.GenesisState", 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_GenesisState) 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_GenesisState) 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_GenesisState) 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_GenesisState) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*GenesisState) + 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.Params != nil { + l = options.Size(x.Params) + n += 1 + l + runtime.Sov(uint64(l)) + } + if len(x.AuctionList) > 0 { + for _, e := range x.AuctionList { + l = options.Size(e) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if len(x.AllowedBidderList) > 0 { + for _, e := range x.AllowedBidderList { + l = options.Size(e) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if len(x.BidList) > 0 { + for _, e := range x.BidList { + l = options.Size(e) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if len(x.VestingQueueList) > 0 { + for _, e := range x.VestingQueueList { + l = options.Size(e) + 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().(*GenesisState) + 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.VestingQueueList) > 0 { + for iNdEx := len(x.VestingQueueList) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.VestingQueueList[iNdEx]) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x2a + } + } + if len(x.BidList) > 0 { + for iNdEx := len(x.BidList) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.BidList[iNdEx]) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x22 + } + } + if len(x.AllowedBidderList) > 0 { + for iNdEx := len(x.AllowedBidderList) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.AllowedBidderList[iNdEx]) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x1a + } + } + if len(x.AuctionList) > 0 { + for iNdEx := len(x.AuctionList) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.AuctionList[iNdEx]) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x12 + } + } + if x.Params != nil { + encoded, err := options.Marshal(x.Params) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + 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().(*GenesisState) + 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: GenesisState: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: GenesisState: 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 Params", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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 + } + if x.Params == nil { + x.Params = &Params{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Params); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field AuctionList", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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.AuctionList = append(x.AuctionList, &anypb.Any{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.AuctionList[len(x.AuctionList)-1]); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field AllowedBidderList", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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.AllowedBidderList = append(x.AllowedBidderList, &AllowedBidder{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.AllowedBidderList[len(x.AllowedBidderList)-1]); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field BidList", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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.BidList = append(x.BidList, &Bid{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.BidList[len(x.BidList)-1]); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field VestingQueueList", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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.VestingQueueList = append(x.VestingQueueList, &VestingQueue{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.VestingQueueList[len(x.VestingQueueList)-1]); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: modules/fundraising/v1/genesis.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// GenesisState defines the fundraising module's genesis state. +type GenesisState struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // params defines all the parameters of the module. + Params *Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params,omitempty"` + // auctionList define the auction interface for genesis state; the module + // supports FixedPriceAuction or BatchAuction + AuctionList []*anypb.Any `protobuf:"bytes,2,rep,name=auctionList,proto3" json:"auctionList,omitempty"` + // allowedBidderList define the allowed bidder records for the auction + AllowedBidderList []*AllowedBidder `protobuf:"bytes,3,rep,name=allowedBidderList,proto3" json:"allowedBidderList,omitempty"` + // bidList define the bid records used for genesis state + BidList []*Bid `protobuf:"bytes,4,rep,name=bidList,proto3" json:"bidList,omitempty"` + // vestingQueueList define the vesting queue records used for genesis state + VestingQueueList []*VestingQueue `protobuf:"bytes,5,rep,name=vestingQueueList,proto3" json:"vestingQueueList,omitempty"` +} + +func (x *GenesisState) Reset() { + *x = GenesisState{} + if protoimpl.UnsafeEnabled { + mi := &file_modules_fundraising_v1_genesis_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenesisState) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenesisState) ProtoMessage() {} + +// Deprecated: Use GenesisState.ProtoReflect.Descriptor instead. +func (*GenesisState) Descriptor() ([]byte, []int) { + return file_modules_fundraising_v1_genesis_proto_rawDescGZIP(), []int{0} +} + +func (x *GenesisState) GetParams() *Params { + if x != nil { + return x.Params + } + return nil +} + +func (x *GenesisState) GetAuctionList() []*anypb.Any { + if x != nil { + return x.AuctionList + } + return nil +} + +func (x *GenesisState) GetAllowedBidderList() []*AllowedBidder { + if x != nil { + return x.AllowedBidderList + } + return nil +} + +func (x *GenesisState) GetBidList() []*Bid { + if x != nil { + return x.BidList + } + return nil +} + +func (x *GenesisState) GetVestingQueueList() []*VestingQueue { + if x != nil { + return x.VestingQueueList + } + return nil +} + +var File_modules_fundraising_v1_genesis_proto protoreflect.FileDescriptor + +var file_modules_fundraising_v1_genesis_proto_rawDesc = []byte{ + 0x0a, 0x24, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, + 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, + 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x1a, 0x11, + 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x19, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x67, 0x6f, + 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2b, 0x6d, + 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, + 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x62, 0x69, + 0x64, 0x64, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, 0x6d, 0x6f, 0x64, 0x75, + 0x6c, 0x65, 0x73, 0x2f, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2f, + 0x76, 0x31, 0x2f, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x20, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, + 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x23, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x66, 0x75, 0x6e, 0x64, + 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2a, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, + 0x2f, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, + 0x76, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x22, 0x87, 0x03, 0x0a, 0x0c, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, + 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, + 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x44, 0x0a, 0x0b, 0x61, 0x75, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, + 0x6e, 0x79, 0x42, 0x0c, 0xca, 0xb4, 0x2d, 0x08, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x52, 0x0b, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x59, 0x0a, + 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x42, 0x69, 0x64, 0x64, 0x65, 0x72, 0x4c, 0x69, + 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, + 0x65, 0x73, 0x2e, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x76, + 0x31, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x42, 0x69, 0x64, 0x64, 0x65, 0x72, 0x42, + 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x42, 0x69, + 0x64, 0x64, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x07, 0x62, 0x69, 0x64, 0x4c, + 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6d, 0x6f, 0x64, 0x75, + 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, + 0x76, 0x31, 0x2e, 0x42, 0x69, 0x64, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x07, 0x62, 0x69, + 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x56, 0x0a, 0x10, 0x76, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, + 0x51, 0x75, 0x65, 0x75, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x24, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, + 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, + 0x51, 0x75, 0x65, 0x75, 0x65, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x10, 0x76, 0x65, 0x73, + 0x74, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x42, 0xdb, 0x01, + 0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, + 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x47, 0x65, + 0x6e, 0x65, 0x73, 0x69, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x35, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, + 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, + 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x3b, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, + 0x67, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x4d, 0x46, 0x58, 0xaa, 0x02, 0x16, 0x4d, 0x6f, 0x64, 0x75, + 0x6c, 0x65, 0x73, 0x2e, 0x46, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, + 0x56, 0x31, 0xca, 0x02, 0x16, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x5c, 0x46, 0x75, 0x6e, + 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x22, 0x4d, 0x6f, + 0x64, 0x75, 0x6c, 0x65, 0x73, 0x5c, 0x46, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, + 0x67, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0xea, 0x02, 0x18, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x3a, 0x3a, 0x46, 0x75, 0x6e, 0x64, + 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, +} + +var ( + file_modules_fundraising_v1_genesis_proto_rawDescOnce sync.Once + file_modules_fundraising_v1_genesis_proto_rawDescData = file_modules_fundraising_v1_genesis_proto_rawDesc +) + +func file_modules_fundraising_v1_genesis_proto_rawDescGZIP() []byte { + file_modules_fundraising_v1_genesis_proto_rawDescOnce.Do(func() { + file_modules_fundraising_v1_genesis_proto_rawDescData = protoimpl.X.CompressGZIP(file_modules_fundraising_v1_genesis_proto_rawDescData) + }) + return file_modules_fundraising_v1_genesis_proto_rawDescData +} + +var file_modules_fundraising_v1_genesis_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_modules_fundraising_v1_genesis_proto_goTypes = []interface{}{ + (*GenesisState)(nil), // 0: modules.fundraising.v1.GenesisState + (*Params)(nil), // 1: modules.fundraising.v1.Params + (*anypb.Any)(nil), // 2: google.protobuf.Any + (*AllowedBidder)(nil), // 3: modules.fundraising.v1.AllowedBidder + (*Bid)(nil), // 4: modules.fundraising.v1.Bid + (*VestingQueue)(nil), // 5: modules.fundraising.v1.VestingQueue +} +var file_modules_fundraising_v1_genesis_proto_depIdxs = []int32{ + 1, // 0: modules.fundraising.v1.GenesisState.params:type_name -> modules.fundraising.v1.Params + 2, // 1: modules.fundraising.v1.GenesisState.auctionList:type_name -> google.protobuf.Any + 3, // 2: modules.fundraising.v1.GenesisState.allowedBidderList:type_name -> modules.fundraising.v1.AllowedBidder + 4, // 3: modules.fundraising.v1.GenesisState.bidList:type_name -> modules.fundraising.v1.Bid + 5, // 4: modules.fundraising.v1.GenesisState.vestingQueueList:type_name -> modules.fundraising.v1.VestingQueue + 5, // [5:5] is the sub-list for method output_type + 5, // [5:5] is the sub-list for method input_type + 5, // [5:5] is the sub-list for extension type_name + 5, // [5:5] is the sub-list for extension extendee + 0, // [0:5] is the sub-list for field type_name +} + +func init() { file_modules_fundraising_v1_genesis_proto_init() } +func file_modules_fundraising_v1_genesis_proto_init() { + if File_modules_fundraising_v1_genesis_proto != nil { + return + } + file_modules_fundraising_v1_allowed_bidder_proto_init() + file_modules_fundraising_v1_auction_proto_init() + file_modules_fundraising_v1_bid_proto_init() + file_modules_fundraising_v1_params_proto_init() + file_modules_fundraising_v1_vesting_queue_proto_init() + if !protoimpl.UnsafeEnabled { + file_modules_fundraising_v1_genesis_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenesisState); 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{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_modules_fundraising_v1_genesis_proto_rawDesc, + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_modules_fundraising_v1_genesis_proto_goTypes, + DependencyIndexes: file_modules_fundraising_v1_genesis_proto_depIdxs, + MessageInfos: file_modules_fundraising_v1_genesis_proto_msgTypes, + }.Build() + File_modules_fundraising_v1_genesis_proto = out.File + file_modules_fundraising_v1_genesis_proto_rawDesc = nil + file_modules_fundraising_v1_genesis_proto_goTypes = nil + file_modules_fundraising_v1_genesis_proto_depIdxs = nil +} diff --git a/api/modules/fundraising/v1/params.pulsar.go b/api/modules/fundraising/v1/params.pulsar.go new file mode 100644 index 0000000..e1ec66d --- /dev/null +++ b/api/modules/fundraising/v1/params.pulsar.go @@ -0,0 +1,890 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package fundraisingv1 + +import ( + _ "cosmossdk.io/api/amino" + v1beta1 "cosmossdk.io/api/cosmos/base/v1beta1" + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + runtime "github.com/cosmos/cosmos-proto/runtime" + _ "github.com/cosmos/gogoproto/gogoproto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + io "io" + reflect "reflect" + sync "sync" +) + +var _ protoreflect.List = (*_Params_1_list)(nil) + +type _Params_1_list struct { + list *[]*v1beta1.Coin +} + +func (x *_Params_1_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_Params_1_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) +} + +func (x *_Params_1_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*v1beta1.Coin) + (*x.list)[i] = concreteValue +} + +func (x *_Params_1_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*v1beta1.Coin) + *x.list = append(*x.list, concreteValue) +} + +func (x *_Params_1_list) AppendMutable() protoreflect.Value { + v := new(v1beta1.Coin) + *x.list = append(*x.list, v) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_Params_1_list) Truncate(n int) { + for i := n; i < len(*x.list); i++ { + (*x.list)[i] = nil + } + *x.list = (*x.list)[:n] +} + +func (x *_Params_1_list) NewElement() protoreflect.Value { + v := new(v1beta1.Coin) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_Params_1_list) IsValid() bool { + return x.list != nil +} + +var _ protoreflect.List = (*_Params_2_list)(nil) + +type _Params_2_list struct { + list *[]*v1beta1.Coin +} + +func (x *_Params_2_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_Params_2_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) +} + +func (x *_Params_2_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*v1beta1.Coin) + (*x.list)[i] = concreteValue +} + +func (x *_Params_2_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*v1beta1.Coin) + *x.list = append(*x.list, concreteValue) +} + +func (x *_Params_2_list) AppendMutable() protoreflect.Value { + v := new(v1beta1.Coin) + *x.list = append(*x.list, v) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_Params_2_list) Truncate(n int) { + for i := n; i < len(*x.list); i++ { + (*x.list)[i] = nil + } + *x.list = (*x.list)[:n] +} + +func (x *_Params_2_list) NewElement() protoreflect.Value { + v := new(v1beta1.Coin) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_Params_2_list) IsValid() bool { + return x.list != nil +} + +var ( + md_Params protoreflect.MessageDescriptor + fd_Params_auction_creation_fee protoreflect.FieldDescriptor + fd_Params_place_bid_fee protoreflect.FieldDescriptor + fd_Params_extended_period protoreflect.FieldDescriptor +) + +func init() { + file_modules_fundraising_v1_params_proto_init() + md_Params = File_modules_fundraising_v1_params_proto.Messages().ByName("Params") + fd_Params_auction_creation_fee = md_Params.Fields().ByName("auction_creation_fee") + fd_Params_place_bid_fee = md_Params.Fields().ByName("place_bid_fee") + fd_Params_extended_period = md_Params.Fields().ByName("extended_period") +} + +var _ protoreflect.Message = (*fastReflection_Params)(nil) + +type fastReflection_Params Params + +func (x *Params) ProtoReflect() protoreflect.Message { + return (*fastReflection_Params)(x) +} + +func (x *Params) slowProtoReflect() protoreflect.Message { + mi := &file_modules_fundraising_v1_params_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_Params_messageType fastReflection_Params_messageType +var _ protoreflect.MessageType = fastReflection_Params_messageType{} + +type fastReflection_Params_messageType struct{} + +func (x fastReflection_Params_messageType) Zero() protoreflect.Message { + return (*fastReflection_Params)(nil) +} +func (x fastReflection_Params_messageType) New() protoreflect.Message { + return new(fastReflection_Params) +} +func (x fastReflection_Params_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_Params +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_Params) Descriptor() protoreflect.MessageDescriptor { + return md_Params +} + +// 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_Params) Type() protoreflect.MessageType { + return _fastReflection_Params_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_Params) New() protoreflect.Message { + return new(fastReflection_Params) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_Params) Interface() protoreflect.ProtoMessage { + return (*Params)(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_Params) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if len(x.AuctionCreationFee) != 0 { + value := protoreflect.ValueOfList(&_Params_1_list{list: &x.AuctionCreationFee}) + if !f(fd_Params_auction_creation_fee, value) { + return + } + } + if len(x.PlaceBidFee) != 0 { + value := protoreflect.ValueOfList(&_Params_2_list{list: &x.PlaceBidFee}) + if !f(fd_Params_place_bid_fee, value) { + return + } + } + if x.ExtendedPeriod != uint32(0) { + value := protoreflect.ValueOfUint32(x.ExtendedPeriod) + if !f(fd_Params_extended_period, 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_Params) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "modules.fundraising.v1.Params.auction_creation_fee": + return len(x.AuctionCreationFee) != 0 + case "modules.fundraising.v1.Params.place_bid_fee": + return len(x.PlaceBidFee) != 0 + case "modules.fundraising.v1.Params.extended_period": + return x.ExtendedPeriod != uint32(0) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.Params")) + } + panic(fmt.Errorf("message modules.fundraising.v1.Params 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_Params) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "modules.fundraising.v1.Params.auction_creation_fee": + x.AuctionCreationFee = nil + case "modules.fundraising.v1.Params.place_bid_fee": + x.PlaceBidFee = nil + case "modules.fundraising.v1.Params.extended_period": + x.ExtendedPeriod = uint32(0) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.Params")) + } + panic(fmt.Errorf("message modules.fundraising.v1.Params 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_Params) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "modules.fundraising.v1.Params.auction_creation_fee": + if len(x.AuctionCreationFee) == 0 { + return protoreflect.ValueOfList(&_Params_1_list{}) + } + listValue := &_Params_1_list{list: &x.AuctionCreationFee} + return protoreflect.ValueOfList(listValue) + case "modules.fundraising.v1.Params.place_bid_fee": + if len(x.PlaceBidFee) == 0 { + return protoreflect.ValueOfList(&_Params_2_list{}) + } + listValue := &_Params_2_list{list: &x.PlaceBidFee} + return protoreflect.ValueOfList(listValue) + case "modules.fundraising.v1.Params.extended_period": + value := x.ExtendedPeriod + return protoreflect.ValueOfUint32(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.Params")) + } + panic(fmt.Errorf("message modules.fundraising.v1.Params 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_Params) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "modules.fundraising.v1.Params.auction_creation_fee": + lv := value.List() + clv := lv.(*_Params_1_list) + x.AuctionCreationFee = *clv.list + case "modules.fundraising.v1.Params.place_bid_fee": + lv := value.List() + clv := lv.(*_Params_2_list) + x.PlaceBidFee = *clv.list + case "modules.fundraising.v1.Params.extended_period": + x.ExtendedPeriod = uint32(value.Uint()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.Params")) + } + panic(fmt.Errorf("message modules.fundraising.v1.Params 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_Params) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.Params.auction_creation_fee": + if x.AuctionCreationFee == nil { + x.AuctionCreationFee = []*v1beta1.Coin{} + } + value := &_Params_1_list{list: &x.AuctionCreationFee} + return protoreflect.ValueOfList(value) + case "modules.fundraising.v1.Params.place_bid_fee": + if x.PlaceBidFee == nil { + x.PlaceBidFee = []*v1beta1.Coin{} + } + value := &_Params_2_list{list: &x.PlaceBidFee} + return protoreflect.ValueOfList(value) + case "modules.fundraising.v1.Params.extended_period": + panic(fmt.Errorf("field extended_period of message modules.fundraising.v1.Params is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.Params")) + } + panic(fmt.Errorf("message modules.fundraising.v1.Params 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_Params) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.Params.auction_creation_fee": + list := []*v1beta1.Coin{} + return protoreflect.ValueOfList(&_Params_1_list{list: &list}) + case "modules.fundraising.v1.Params.place_bid_fee": + list := []*v1beta1.Coin{} + return protoreflect.ValueOfList(&_Params_2_list{list: &list}) + case "modules.fundraising.v1.Params.extended_period": + return protoreflect.ValueOfUint32(uint32(0)) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.Params")) + } + panic(fmt.Errorf("message modules.fundraising.v1.Params 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_Params) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in modules.fundraising.v1.Params", 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_Params) 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_Params) 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_Params) 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_Params) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*Params) + 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.AuctionCreationFee) > 0 { + for _, e := range x.AuctionCreationFee { + l = options.Size(e) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if len(x.PlaceBidFee) > 0 { + for _, e := range x.PlaceBidFee { + l = options.Size(e) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if x.ExtendedPeriod != 0 { + n += 1 + runtime.Sov(uint64(x.ExtendedPeriod)) + } + 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().(*Params) + 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 x.ExtendedPeriod != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.ExtendedPeriod)) + i-- + dAtA[i] = 0x18 + } + if len(x.PlaceBidFee) > 0 { + for iNdEx := len(x.PlaceBidFee) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.PlaceBidFee[iNdEx]) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x12 + } + } + if len(x.AuctionCreationFee) > 0 { + for iNdEx := len(x.AuctionCreationFee) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.AuctionCreationFee[iNdEx]) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + 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().(*Params) + 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: Params: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Params: 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 AuctionCreationFee", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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.AuctionCreationFee = append(x.AuctionCreationFee, &v1beta1.Coin{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.AuctionCreationFee[len(x.AuctionCreationFee)-1]); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field PlaceBidFee", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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.PlaceBidFee = append(x.PlaceBidFee, &v1beta1.Coin{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.PlaceBidFee[len(x.PlaceBidFee)-1]); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 3: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ExtendedPeriod", wireType) + } + x.ExtendedPeriod = 0 + 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++ + x.ExtendedPeriod |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: modules/fundraising/v1/params.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Params defines the parameters for the module. +type Params struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // auction_creation_fee specifies the fee for auction creation. + // this prevents from spamming attack and it is collected in the community + // pool + AuctionCreationFee []*v1beta1.Coin `protobuf:"bytes,1,rep,name=auction_creation_fee,json=auctionCreationFee,proto3" json:"auction_creation_fee,omitempty"` + // place_bid_fee specifies the fee for placing a bid for an auction. + // this prevents from spamming attack and it is collected in the community + // pool + PlaceBidFee []*v1beta1.Coin `protobuf:"bytes,2,rep,name=place_bid_fee,json=placeBidFee,proto3" json:"place_bid_fee,omitempty"` + // extended_period specifies the extended period that determines how long + // the extended auction round lasts + ExtendedPeriod uint32 `protobuf:"varint,3,opt,name=extended_period,json=extendedPeriod,proto3" json:"extended_period,omitempty"` +} + +func (x *Params) Reset() { + *x = Params{} + if protoimpl.UnsafeEnabled { + mi := &file_modules_fundraising_v1_params_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Params) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Params) ProtoMessage() {} + +// Deprecated: Use Params.ProtoReflect.Descriptor instead. +func (*Params) Descriptor() ([]byte, []int) { + return file_modules_fundraising_v1_params_proto_rawDescGZIP(), []int{0} +} + +func (x *Params) GetAuctionCreationFee() []*v1beta1.Coin { + if x != nil { + return x.AuctionCreationFee + } + return nil +} + +func (x *Params) GetPlaceBidFee() []*v1beta1.Coin { + if x != nil { + return x.PlaceBidFee + } + return nil +} + +func (x *Params) GetExtendedPeriod() uint32 { + if x != nil { + return x.ExtendedPeriod + } + return 0 +} + +var File_modules_fundraising_v1_params_proto protoreflect.FileDescriptor + +var file_modules_fundraising_v1_params_proto_rawDesc = []byte{ + 0x0a, 0x23, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, + 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, + 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x1a, 0x11, 0x61, + 0x6d, 0x69, 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x1e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x19, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67, + 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x22, 0xfa, 0x02, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x93, 0x01, 0x0a, + 0x14, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x66, 0x65, 0x65, 0x18, 0x01, 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, 0x12, + 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, + 0x65, 0x65, 0x12, 0x85, 0x01, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x62, 0x69, 0x64, + 0x5f, 0x66, 0x65, 0x65, 0x18, 0x02, 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, 0x0b, 0x70, + 0x6c, 0x61, 0x63, 0x65, 0x42, 0x69, 0x64, 0x46, 0x65, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, + 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x50, 0x65, 0x72, + 0x69, 0x6f, 0x64, 0x3a, 0x29, 0xe8, 0xa0, 0x1f, 0x01, 0x8a, 0xe7, 0xb0, 0x2a, 0x20, 0x66, 0x75, + 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2f, 0x78, 0x2f, 0x66, 0x75, 0x6e, 0x64, + 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0xda, + 0x01, 0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, + 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x35, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, + 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, + 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x3b, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, + 0x67, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x4d, 0x46, 0x58, 0xaa, 0x02, 0x16, 0x4d, 0x6f, 0x64, 0x75, + 0x6c, 0x65, 0x73, 0x2e, 0x46, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, + 0x56, 0x31, 0xca, 0x02, 0x16, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x5c, 0x46, 0x75, 0x6e, + 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x22, 0x4d, 0x6f, + 0x64, 0x75, 0x6c, 0x65, 0x73, 0x5c, 0x46, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, + 0x67, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0xea, 0x02, 0x18, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x3a, 0x3a, 0x46, 0x75, 0x6e, 0x64, + 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, +} + +var ( + file_modules_fundraising_v1_params_proto_rawDescOnce sync.Once + file_modules_fundraising_v1_params_proto_rawDescData = file_modules_fundraising_v1_params_proto_rawDesc +) + +func file_modules_fundraising_v1_params_proto_rawDescGZIP() []byte { + file_modules_fundraising_v1_params_proto_rawDescOnce.Do(func() { + file_modules_fundraising_v1_params_proto_rawDescData = protoimpl.X.CompressGZIP(file_modules_fundraising_v1_params_proto_rawDescData) + }) + return file_modules_fundraising_v1_params_proto_rawDescData +} + +var file_modules_fundraising_v1_params_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_modules_fundraising_v1_params_proto_goTypes = []interface{}{ + (*Params)(nil), // 0: modules.fundraising.v1.Params + (*v1beta1.Coin)(nil), // 1: cosmos.base.v1beta1.Coin +} +var file_modules_fundraising_v1_params_proto_depIdxs = []int32{ + 1, // 0: modules.fundraising.v1.Params.auction_creation_fee:type_name -> cosmos.base.v1beta1.Coin + 1, // 1: modules.fundraising.v1.Params.place_bid_fee:type_name -> cosmos.base.v1beta1.Coin + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_modules_fundraising_v1_params_proto_init() } +func file_modules_fundraising_v1_params_proto_init() { + if File_modules_fundraising_v1_params_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_modules_fundraising_v1_params_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Params); 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{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_modules_fundraising_v1_params_proto_rawDesc, + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_modules_fundraising_v1_params_proto_goTypes, + DependencyIndexes: file_modules_fundraising_v1_params_proto_depIdxs, + MessageInfos: file_modules_fundraising_v1_params_proto_msgTypes, + }.Build() + File_modules_fundraising_v1_params_proto = out.File + file_modules_fundraising_v1_params_proto_rawDesc = nil + file_modules_fundraising_v1_params_proto_goTypes = nil + file_modules_fundraising_v1_params_proto_depIdxs = nil +} diff --git a/api/modules/fundraising/v1/query.pulsar.go b/api/modules/fundraising/v1/query.pulsar.go new file mode 100644 index 0000000..de3eb71 --- /dev/null +++ b/api/modules/fundraising/v1/query.pulsar.go @@ -0,0 +1,9121 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package fundraisingv1 + +import ( + _ "cosmossdk.io/api/amino" + v1beta1 "cosmossdk.io/api/cosmos/base/query/v1beta1" + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + runtime "github.com/cosmos/cosmos-proto/runtime" + _ "github.com/cosmos/gogoproto/gogoproto" + _ "google.golang.org/genproto/googleapis/api/annotations" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + anypb "google.golang.org/protobuf/types/known/anypb" + io "io" + reflect "reflect" + sync "sync" +) + +var ( + md_QueryParamsRequest protoreflect.MessageDescriptor +) + +func init() { + file_modules_fundraising_v1_query_proto_init() + md_QueryParamsRequest = File_modules_fundraising_v1_query_proto.Messages().ByName("QueryParamsRequest") +} + +var _ protoreflect.Message = (*fastReflection_QueryParamsRequest)(nil) + +type fastReflection_QueryParamsRequest QueryParamsRequest + +func (x *QueryParamsRequest) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryParamsRequest)(x) +} + +func (x *QueryParamsRequest) slowProtoReflect() protoreflect.Message { + mi := &file_modules_fundraising_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_QueryParamsRequest_messageType fastReflection_QueryParamsRequest_messageType +var _ protoreflect.MessageType = fastReflection_QueryParamsRequest_messageType{} + +type fastReflection_QueryParamsRequest_messageType struct{} + +func (x fastReflection_QueryParamsRequest_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryParamsRequest)(nil) +} +func (x fastReflection_QueryParamsRequest_messageType) New() protoreflect.Message { + return new(fastReflection_QueryParamsRequest) +} +func (x fastReflection_QueryParamsRequest_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryParamsRequest +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryParamsRequest) Descriptor() protoreflect.MessageDescriptor { + return md_QueryParamsRequest +} + +// 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_QueryParamsRequest) Type() protoreflect.MessageType { + return _fastReflection_QueryParamsRequest_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryParamsRequest) New() protoreflect.Message { + return new(fastReflection_QueryParamsRequest) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryParamsRequest) Interface() protoreflect.ProtoMessage { + return (*QueryParamsRequest)(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_QueryParamsRequest) 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_QueryParamsRequest) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryParamsRequest")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryParamsRequest 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_QueryParamsRequest) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryParamsRequest")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryParamsRequest 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_QueryParamsRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryParamsRequest")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryParamsRequest 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_QueryParamsRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryParamsRequest")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryParamsRequest 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_QueryParamsRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryParamsRequest")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryParamsRequest 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_QueryParamsRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryParamsRequest")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryParamsRequest 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_QueryParamsRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in modules.fundraising.v1.QueryParamsRequest", 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_QueryParamsRequest) 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_QueryParamsRequest) 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_QueryParamsRequest) 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_QueryParamsRequest) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryParamsRequest) + 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().(*QueryParamsRequest) + 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().(*QueryParamsRequest) + 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: QueryParamsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryParamsRequest: 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 ( + md_QueryParamsResponse protoreflect.MessageDescriptor + fd_QueryParamsResponse_params protoreflect.FieldDescriptor +) + +func init() { + file_modules_fundraising_v1_query_proto_init() + md_QueryParamsResponse = File_modules_fundraising_v1_query_proto.Messages().ByName("QueryParamsResponse") + fd_QueryParamsResponse_params = md_QueryParamsResponse.Fields().ByName("params") +} + +var _ protoreflect.Message = (*fastReflection_QueryParamsResponse)(nil) + +type fastReflection_QueryParamsResponse QueryParamsResponse + +func (x *QueryParamsResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryParamsResponse)(x) +} + +func (x *QueryParamsResponse) slowProtoReflect() protoreflect.Message { + mi := &file_modules_fundraising_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_QueryParamsResponse_messageType fastReflection_QueryParamsResponse_messageType +var _ protoreflect.MessageType = fastReflection_QueryParamsResponse_messageType{} + +type fastReflection_QueryParamsResponse_messageType struct{} + +func (x fastReflection_QueryParamsResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryParamsResponse)(nil) +} +func (x fastReflection_QueryParamsResponse_messageType) New() protoreflect.Message { + return new(fastReflection_QueryParamsResponse) +} +func (x fastReflection_QueryParamsResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryParamsResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryParamsResponse) Descriptor() protoreflect.MessageDescriptor { + return md_QueryParamsResponse +} + +// 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_QueryParamsResponse) Type() protoreflect.MessageType { + return _fastReflection_QueryParamsResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryParamsResponse) New() protoreflect.Message { + return new(fastReflection_QueryParamsResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryParamsResponse) Interface() protoreflect.ProtoMessage { + return (*QueryParamsResponse)(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_QueryParamsResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Params != nil { + value := protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + if !f(fd_QueryParamsResponse_params, 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_QueryParamsResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "modules.fundraising.v1.QueryParamsResponse.params": + return x.Params != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryParamsResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryParamsResponse 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_QueryParamsResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "modules.fundraising.v1.QueryParamsResponse.params": + x.Params = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryParamsResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryParamsResponse 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_QueryParamsResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "modules.fundraising.v1.QueryParamsResponse.params": + value := x.Params + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryParamsResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryParamsResponse 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_QueryParamsResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "modules.fundraising.v1.QueryParamsResponse.params": + x.Params = value.Message().Interface().(*Params) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryParamsResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryParamsResponse 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_QueryParamsResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.QueryParamsResponse.params": + if x.Params == nil { + x.Params = new(Params) + } + return protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryParamsResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryParamsResponse 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_QueryParamsResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.QueryParamsResponse.params": + m := new(Params) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryParamsResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryParamsResponse 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_QueryParamsResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in modules.fundraising.v1.QueryParamsResponse", 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_QueryParamsResponse) 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_QueryParamsResponse) 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_QueryParamsResponse) 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_QueryParamsResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryParamsResponse) + 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.Params != nil { + l = options.Size(x.Params) + 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().(*QueryParamsResponse) + 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 x.Params != nil { + encoded, err := options.Marshal(x.Params) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + 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().(*QueryParamsResponse) + 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: QueryParamsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryParamsResponse: 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 Params", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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 + } + if x.Params == nil { + x.Params = &Params{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Params); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + 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_QueryAllAuctionRequest protoreflect.MessageDescriptor + fd_QueryAllAuctionRequest_status protoreflect.FieldDescriptor + fd_QueryAllAuctionRequest_type protoreflect.FieldDescriptor + fd_QueryAllAuctionRequest_pagination protoreflect.FieldDescriptor +) + +func init() { + file_modules_fundraising_v1_query_proto_init() + md_QueryAllAuctionRequest = File_modules_fundraising_v1_query_proto.Messages().ByName("QueryAllAuctionRequest") + fd_QueryAllAuctionRequest_status = md_QueryAllAuctionRequest.Fields().ByName("status") + fd_QueryAllAuctionRequest_type = md_QueryAllAuctionRequest.Fields().ByName("type") + fd_QueryAllAuctionRequest_pagination = md_QueryAllAuctionRequest.Fields().ByName("pagination") +} + +var _ protoreflect.Message = (*fastReflection_QueryAllAuctionRequest)(nil) + +type fastReflection_QueryAllAuctionRequest QueryAllAuctionRequest + +func (x *QueryAllAuctionRequest) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryAllAuctionRequest)(x) +} + +func (x *QueryAllAuctionRequest) slowProtoReflect() protoreflect.Message { + mi := &file_modules_fundraising_v1_query_proto_msgTypes[2] + 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_QueryAllAuctionRequest_messageType fastReflection_QueryAllAuctionRequest_messageType +var _ protoreflect.MessageType = fastReflection_QueryAllAuctionRequest_messageType{} + +type fastReflection_QueryAllAuctionRequest_messageType struct{} + +func (x fastReflection_QueryAllAuctionRequest_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryAllAuctionRequest)(nil) +} +func (x fastReflection_QueryAllAuctionRequest_messageType) New() protoreflect.Message { + return new(fastReflection_QueryAllAuctionRequest) +} +func (x fastReflection_QueryAllAuctionRequest_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryAllAuctionRequest +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryAllAuctionRequest) Descriptor() protoreflect.MessageDescriptor { + return md_QueryAllAuctionRequest +} + +// 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_QueryAllAuctionRequest) Type() protoreflect.MessageType { + return _fastReflection_QueryAllAuctionRequest_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryAllAuctionRequest) New() protoreflect.Message { + return new(fastReflection_QueryAllAuctionRequest) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryAllAuctionRequest) Interface() protoreflect.ProtoMessage { + return (*QueryAllAuctionRequest)(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_QueryAllAuctionRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Status != "" { + value := protoreflect.ValueOfString(x.Status) + if !f(fd_QueryAllAuctionRequest_status, value) { + return + } + } + if x.Type_ != "" { + value := protoreflect.ValueOfString(x.Type_) + if !f(fd_QueryAllAuctionRequest_type, value) { + return + } + } + if x.Pagination != nil { + value := protoreflect.ValueOfMessage(x.Pagination.ProtoReflect()) + if !f(fd_QueryAllAuctionRequest_pagination, 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_QueryAllAuctionRequest) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "modules.fundraising.v1.QueryAllAuctionRequest.status": + return x.Status != "" + case "modules.fundraising.v1.QueryAllAuctionRequest.type": + return x.Type_ != "" + case "modules.fundraising.v1.QueryAllAuctionRequest.pagination": + return x.Pagination != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryAllAuctionRequest")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryAllAuctionRequest 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_QueryAllAuctionRequest) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "modules.fundraising.v1.QueryAllAuctionRequest.status": + x.Status = "" + case "modules.fundraising.v1.QueryAllAuctionRequest.type": + x.Type_ = "" + case "modules.fundraising.v1.QueryAllAuctionRequest.pagination": + x.Pagination = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryAllAuctionRequest")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryAllAuctionRequest 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_QueryAllAuctionRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "modules.fundraising.v1.QueryAllAuctionRequest.status": + value := x.Status + return protoreflect.ValueOfString(value) + case "modules.fundraising.v1.QueryAllAuctionRequest.type": + value := x.Type_ + return protoreflect.ValueOfString(value) + case "modules.fundraising.v1.QueryAllAuctionRequest.pagination": + value := x.Pagination + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryAllAuctionRequest")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryAllAuctionRequest 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_QueryAllAuctionRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "modules.fundraising.v1.QueryAllAuctionRequest.status": + x.Status = value.Interface().(string) + case "modules.fundraising.v1.QueryAllAuctionRequest.type": + x.Type_ = value.Interface().(string) + case "modules.fundraising.v1.QueryAllAuctionRequest.pagination": + x.Pagination = value.Message().Interface().(*v1beta1.PageRequest) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryAllAuctionRequest")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryAllAuctionRequest 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_QueryAllAuctionRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.QueryAllAuctionRequest.pagination": + if x.Pagination == nil { + x.Pagination = new(v1beta1.PageRequest) + } + return protoreflect.ValueOfMessage(x.Pagination.ProtoReflect()) + case "modules.fundraising.v1.QueryAllAuctionRequest.status": + panic(fmt.Errorf("field status of message modules.fundraising.v1.QueryAllAuctionRequest is not mutable")) + case "modules.fundraising.v1.QueryAllAuctionRequest.type": + panic(fmt.Errorf("field type of message modules.fundraising.v1.QueryAllAuctionRequest is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryAllAuctionRequest")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryAllAuctionRequest 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_QueryAllAuctionRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.QueryAllAuctionRequest.status": + return protoreflect.ValueOfString("") + case "modules.fundraising.v1.QueryAllAuctionRequest.type": + return protoreflect.ValueOfString("") + case "modules.fundraising.v1.QueryAllAuctionRequest.pagination": + m := new(v1beta1.PageRequest) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryAllAuctionRequest")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryAllAuctionRequest 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_QueryAllAuctionRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in modules.fundraising.v1.QueryAllAuctionRequest", 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_QueryAllAuctionRequest) 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_QueryAllAuctionRequest) 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_QueryAllAuctionRequest) 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_QueryAllAuctionRequest) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryAllAuctionRequest) + 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.Status) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Type_) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.Pagination != nil { + l = options.Size(x.Pagination) + 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().(*QueryAllAuctionRequest) + 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 x.Pagination != nil { + encoded, err := options.Marshal(x.Pagination) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x1a + } + if len(x.Type_) > 0 { + i -= len(x.Type_) + copy(dAtA[i:], x.Type_) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Type_))) + i-- + dAtA[i] = 0x12 + } + if len(x.Status) > 0 { + i -= len(x.Status) + copy(dAtA[i:], x.Status) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Status))) + 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().(*QueryAllAuctionRequest) + 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: QueryAllAuctionRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryAllAuctionRequest: 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 Status", 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.Status = 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 Type_", 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.Type_ = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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 + } + if x.Pagination == nil { + x.Pagination = &v1beta1.PageRequest{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Pagination); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + 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 _ protoreflect.List = (*_QueryAllAuctionResponse_1_list)(nil) + +type _QueryAllAuctionResponse_1_list struct { + list *[]*anypb.Any +} + +func (x *_QueryAllAuctionResponse_1_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_QueryAllAuctionResponse_1_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) +} + +func (x *_QueryAllAuctionResponse_1_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*anypb.Any) + (*x.list)[i] = concreteValue +} + +func (x *_QueryAllAuctionResponse_1_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*anypb.Any) + *x.list = append(*x.list, concreteValue) +} + +func (x *_QueryAllAuctionResponse_1_list) AppendMutable() protoreflect.Value { + v := new(anypb.Any) + *x.list = append(*x.list, v) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_QueryAllAuctionResponse_1_list) Truncate(n int) { + for i := n; i < len(*x.list); i++ { + (*x.list)[i] = nil + } + *x.list = (*x.list)[:n] +} + +func (x *_QueryAllAuctionResponse_1_list) NewElement() protoreflect.Value { + v := new(anypb.Any) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_QueryAllAuctionResponse_1_list) IsValid() bool { + return x.list != nil +} + +var ( + md_QueryAllAuctionResponse protoreflect.MessageDescriptor + fd_QueryAllAuctionResponse_auction protoreflect.FieldDescriptor + fd_QueryAllAuctionResponse_pagination protoreflect.FieldDescriptor +) + +func init() { + file_modules_fundraising_v1_query_proto_init() + md_QueryAllAuctionResponse = File_modules_fundraising_v1_query_proto.Messages().ByName("QueryAllAuctionResponse") + fd_QueryAllAuctionResponse_auction = md_QueryAllAuctionResponse.Fields().ByName("auction") + fd_QueryAllAuctionResponse_pagination = md_QueryAllAuctionResponse.Fields().ByName("pagination") +} + +var _ protoreflect.Message = (*fastReflection_QueryAllAuctionResponse)(nil) + +type fastReflection_QueryAllAuctionResponse QueryAllAuctionResponse + +func (x *QueryAllAuctionResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryAllAuctionResponse)(x) +} + +func (x *QueryAllAuctionResponse) slowProtoReflect() protoreflect.Message { + mi := &file_modules_fundraising_v1_query_proto_msgTypes[3] + 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_QueryAllAuctionResponse_messageType fastReflection_QueryAllAuctionResponse_messageType +var _ protoreflect.MessageType = fastReflection_QueryAllAuctionResponse_messageType{} + +type fastReflection_QueryAllAuctionResponse_messageType struct{} + +func (x fastReflection_QueryAllAuctionResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryAllAuctionResponse)(nil) +} +func (x fastReflection_QueryAllAuctionResponse_messageType) New() protoreflect.Message { + return new(fastReflection_QueryAllAuctionResponse) +} +func (x fastReflection_QueryAllAuctionResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryAllAuctionResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryAllAuctionResponse) Descriptor() protoreflect.MessageDescriptor { + return md_QueryAllAuctionResponse +} + +// 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_QueryAllAuctionResponse) Type() protoreflect.MessageType { + return _fastReflection_QueryAllAuctionResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryAllAuctionResponse) New() protoreflect.Message { + return new(fastReflection_QueryAllAuctionResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryAllAuctionResponse) Interface() protoreflect.ProtoMessage { + return (*QueryAllAuctionResponse)(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_QueryAllAuctionResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if len(x.Auction) != 0 { + value := protoreflect.ValueOfList(&_QueryAllAuctionResponse_1_list{list: &x.Auction}) + if !f(fd_QueryAllAuctionResponse_auction, value) { + return + } + } + if x.Pagination != nil { + value := protoreflect.ValueOfMessage(x.Pagination.ProtoReflect()) + if !f(fd_QueryAllAuctionResponse_pagination, 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_QueryAllAuctionResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "modules.fundraising.v1.QueryAllAuctionResponse.auction": + return len(x.Auction) != 0 + case "modules.fundraising.v1.QueryAllAuctionResponse.pagination": + return x.Pagination != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryAllAuctionResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryAllAuctionResponse 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_QueryAllAuctionResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "modules.fundraising.v1.QueryAllAuctionResponse.auction": + x.Auction = nil + case "modules.fundraising.v1.QueryAllAuctionResponse.pagination": + x.Pagination = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryAllAuctionResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryAllAuctionResponse 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_QueryAllAuctionResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "modules.fundraising.v1.QueryAllAuctionResponse.auction": + if len(x.Auction) == 0 { + return protoreflect.ValueOfList(&_QueryAllAuctionResponse_1_list{}) + } + listValue := &_QueryAllAuctionResponse_1_list{list: &x.Auction} + return protoreflect.ValueOfList(listValue) + case "modules.fundraising.v1.QueryAllAuctionResponse.pagination": + value := x.Pagination + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryAllAuctionResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryAllAuctionResponse 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_QueryAllAuctionResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "modules.fundraising.v1.QueryAllAuctionResponse.auction": + lv := value.List() + clv := lv.(*_QueryAllAuctionResponse_1_list) + x.Auction = *clv.list + case "modules.fundraising.v1.QueryAllAuctionResponse.pagination": + x.Pagination = value.Message().Interface().(*v1beta1.PageResponse) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryAllAuctionResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryAllAuctionResponse 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_QueryAllAuctionResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.QueryAllAuctionResponse.auction": + if x.Auction == nil { + x.Auction = []*anypb.Any{} + } + value := &_QueryAllAuctionResponse_1_list{list: &x.Auction} + return protoreflect.ValueOfList(value) + case "modules.fundraising.v1.QueryAllAuctionResponse.pagination": + if x.Pagination == nil { + x.Pagination = new(v1beta1.PageResponse) + } + return protoreflect.ValueOfMessage(x.Pagination.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryAllAuctionResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryAllAuctionResponse 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_QueryAllAuctionResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.QueryAllAuctionResponse.auction": + list := []*anypb.Any{} + return protoreflect.ValueOfList(&_QueryAllAuctionResponse_1_list{list: &list}) + case "modules.fundraising.v1.QueryAllAuctionResponse.pagination": + m := new(v1beta1.PageResponse) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryAllAuctionResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryAllAuctionResponse 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_QueryAllAuctionResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in modules.fundraising.v1.QueryAllAuctionResponse", 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_QueryAllAuctionResponse) 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_QueryAllAuctionResponse) 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_QueryAllAuctionResponse) 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_QueryAllAuctionResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryAllAuctionResponse) + 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.Auction) > 0 { + for _, e := range x.Auction { + l = options.Size(e) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if x.Pagination != nil { + l = options.Size(x.Pagination) + 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().(*QueryAllAuctionResponse) + 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 x.Pagination != nil { + encoded, err := options.Marshal(x.Pagination) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x12 + } + if len(x.Auction) > 0 { + for iNdEx := len(x.Auction) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.Auction[iNdEx]) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + 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().(*QueryAllAuctionResponse) + 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: QueryAllAuctionResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryAllAuctionResponse: 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 Auction", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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.Auction = append(x.Auction, &anypb.Any{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Auction[len(x.Auction)-1]); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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 + } + if x.Pagination == nil { + x.Pagination = &v1beta1.PageResponse{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Pagination); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + 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_QueryGetAuctionRequest protoreflect.MessageDescriptor + fd_QueryGetAuctionRequest_auction_id protoreflect.FieldDescriptor +) + +func init() { + file_modules_fundraising_v1_query_proto_init() + md_QueryGetAuctionRequest = File_modules_fundraising_v1_query_proto.Messages().ByName("QueryGetAuctionRequest") + fd_QueryGetAuctionRequest_auction_id = md_QueryGetAuctionRequest.Fields().ByName("auction_id") +} + +var _ protoreflect.Message = (*fastReflection_QueryGetAuctionRequest)(nil) + +type fastReflection_QueryGetAuctionRequest QueryGetAuctionRequest + +func (x *QueryGetAuctionRequest) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryGetAuctionRequest)(x) +} + +func (x *QueryGetAuctionRequest) slowProtoReflect() protoreflect.Message { + mi := &file_modules_fundraising_v1_query_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_QueryGetAuctionRequest_messageType fastReflection_QueryGetAuctionRequest_messageType +var _ protoreflect.MessageType = fastReflection_QueryGetAuctionRequest_messageType{} + +type fastReflection_QueryGetAuctionRequest_messageType struct{} + +func (x fastReflection_QueryGetAuctionRequest_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryGetAuctionRequest)(nil) +} +func (x fastReflection_QueryGetAuctionRequest_messageType) New() protoreflect.Message { + return new(fastReflection_QueryGetAuctionRequest) +} +func (x fastReflection_QueryGetAuctionRequest_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryGetAuctionRequest +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryGetAuctionRequest) Descriptor() protoreflect.MessageDescriptor { + return md_QueryGetAuctionRequest +} + +// 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_QueryGetAuctionRequest) Type() protoreflect.MessageType { + return _fastReflection_QueryGetAuctionRequest_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryGetAuctionRequest) New() protoreflect.Message { + return new(fastReflection_QueryGetAuctionRequest) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryGetAuctionRequest) Interface() protoreflect.ProtoMessage { + return (*QueryGetAuctionRequest)(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_QueryGetAuctionRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.AuctionId != uint64(0) { + value := protoreflect.ValueOfUint64(x.AuctionId) + if !f(fd_QueryGetAuctionRequest_auction_id, 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_QueryGetAuctionRequest) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "modules.fundraising.v1.QueryGetAuctionRequest.auction_id": + return x.AuctionId != uint64(0) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryGetAuctionRequest")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryGetAuctionRequest 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_QueryGetAuctionRequest) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "modules.fundraising.v1.QueryGetAuctionRequest.auction_id": + x.AuctionId = uint64(0) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryGetAuctionRequest")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryGetAuctionRequest 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_QueryGetAuctionRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "modules.fundraising.v1.QueryGetAuctionRequest.auction_id": + value := x.AuctionId + return protoreflect.ValueOfUint64(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryGetAuctionRequest")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryGetAuctionRequest 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_QueryGetAuctionRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "modules.fundraising.v1.QueryGetAuctionRequest.auction_id": + x.AuctionId = value.Uint() + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryGetAuctionRequest")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryGetAuctionRequest 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_QueryGetAuctionRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.QueryGetAuctionRequest.auction_id": + panic(fmt.Errorf("field auction_id of message modules.fundraising.v1.QueryGetAuctionRequest is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryGetAuctionRequest")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryGetAuctionRequest 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_QueryGetAuctionRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.QueryGetAuctionRequest.auction_id": + return protoreflect.ValueOfUint64(uint64(0)) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryGetAuctionRequest")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryGetAuctionRequest 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_QueryGetAuctionRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in modules.fundraising.v1.QueryGetAuctionRequest", 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_QueryGetAuctionRequest) 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_QueryGetAuctionRequest) 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_QueryGetAuctionRequest) 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_QueryGetAuctionRequest) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryGetAuctionRequest) + 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.AuctionId != 0 { + n += 1 + runtime.Sov(uint64(x.AuctionId)) + } + 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().(*QueryGetAuctionRequest) + 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 x.AuctionId != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.AuctionId)) + i-- + dAtA[i] = 0x8 + } + 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().(*QueryGetAuctionRequest) + 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: QueryGetAuctionRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryGetAuctionRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field AuctionId", wireType) + } + x.AuctionId = 0 + 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++ + x.AuctionId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + 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_QueryGetAuctionResponse protoreflect.MessageDescriptor + fd_QueryGetAuctionResponse_auction protoreflect.FieldDescriptor +) + +func init() { + file_modules_fundraising_v1_query_proto_init() + md_QueryGetAuctionResponse = File_modules_fundraising_v1_query_proto.Messages().ByName("QueryGetAuctionResponse") + fd_QueryGetAuctionResponse_auction = md_QueryGetAuctionResponse.Fields().ByName("auction") +} + +var _ protoreflect.Message = (*fastReflection_QueryGetAuctionResponse)(nil) + +type fastReflection_QueryGetAuctionResponse QueryGetAuctionResponse + +func (x *QueryGetAuctionResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryGetAuctionResponse)(x) +} + +func (x *QueryGetAuctionResponse) slowProtoReflect() protoreflect.Message { + mi := &file_modules_fundraising_v1_query_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_QueryGetAuctionResponse_messageType fastReflection_QueryGetAuctionResponse_messageType +var _ protoreflect.MessageType = fastReflection_QueryGetAuctionResponse_messageType{} + +type fastReflection_QueryGetAuctionResponse_messageType struct{} + +func (x fastReflection_QueryGetAuctionResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryGetAuctionResponse)(nil) +} +func (x fastReflection_QueryGetAuctionResponse_messageType) New() protoreflect.Message { + return new(fastReflection_QueryGetAuctionResponse) +} +func (x fastReflection_QueryGetAuctionResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryGetAuctionResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryGetAuctionResponse) Descriptor() protoreflect.MessageDescriptor { + return md_QueryGetAuctionResponse +} + +// 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_QueryGetAuctionResponse) Type() protoreflect.MessageType { + return _fastReflection_QueryGetAuctionResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryGetAuctionResponse) New() protoreflect.Message { + return new(fastReflection_QueryGetAuctionResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryGetAuctionResponse) Interface() protoreflect.ProtoMessage { + return (*QueryGetAuctionResponse)(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_QueryGetAuctionResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Auction != nil { + value := protoreflect.ValueOfMessage(x.Auction.ProtoReflect()) + if !f(fd_QueryGetAuctionResponse_auction, 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_QueryGetAuctionResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "modules.fundraising.v1.QueryGetAuctionResponse.auction": + return x.Auction != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryGetAuctionResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryGetAuctionResponse 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_QueryGetAuctionResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "modules.fundraising.v1.QueryGetAuctionResponse.auction": + x.Auction = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryGetAuctionResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryGetAuctionResponse 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_QueryGetAuctionResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "modules.fundraising.v1.QueryGetAuctionResponse.auction": + value := x.Auction + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryGetAuctionResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryGetAuctionResponse 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_QueryGetAuctionResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "modules.fundraising.v1.QueryGetAuctionResponse.auction": + x.Auction = value.Message().Interface().(*anypb.Any) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryGetAuctionResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryGetAuctionResponse 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_QueryGetAuctionResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.QueryGetAuctionResponse.auction": + if x.Auction == nil { + x.Auction = new(anypb.Any) + } + return protoreflect.ValueOfMessage(x.Auction.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryGetAuctionResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryGetAuctionResponse 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_QueryGetAuctionResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.QueryGetAuctionResponse.auction": + m := new(anypb.Any) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryGetAuctionResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryGetAuctionResponse 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_QueryGetAuctionResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in modules.fundraising.v1.QueryGetAuctionResponse", 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_QueryGetAuctionResponse) 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_QueryGetAuctionResponse) 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_QueryGetAuctionResponse) 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_QueryGetAuctionResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryGetAuctionResponse) + 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.Auction != nil { + l = options.Size(x.Auction) + 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().(*QueryGetAuctionResponse) + 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 x.Auction != nil { + encoded, err := options.Marshal(x.Auction) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + 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().(*QueryGetAuctionResponse) + 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: QueryGetAuctionResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryGetAuctionResponse: 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 Auction", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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 + } + if x.Auction == nil { + x.Auction = &anypb.Any{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Auction); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + 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_QueryAllAllowedBidderRequest protoreflect.MessageDescriptor + fd_QueryAllAllowedBidderRequest_auction_id protoreflect.FieldDescriptor + fd_QueryAllAllowedBidderRequest_pagination protoreflect.FieldDescriptor +) + +func init() { + file_modules_fundraising_v1_query_proto_init() + md_QueryAllAllowedBidderRequest = File_modules_fundraising_v1_query_proto.Messages().ByName("QueryAllAllowedBidderRequest") + fd_QueryAllAllowedBidderRequest_auction_id = md_QueryAllAllowedBidderRequest.Fields().ByName("auction_id") + fd_QueryAllAllowedBidderRequest_pagination = md_QueryAllAllowedBidderRequest.Fields().ByName("pagination") +} + +var _ protoreflect.Message = (*fastReflection_QueryAllAllowedBidderRequest)(nil) + +type fastReflection_QueryAllAllowedBidderRequest QueryAllAllowedBidderRequest + +func (x *QueryAllAllowedBidderRequest) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryAllAllowedBidderRequest)(x) +} + +func (x *QueryAllAllowedBidderRequest) slowProtoReflect() protoreflect.Message { + mi := &file_modules_fundraising_v1_query_proto_msgTypes[6] + 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_QueryAllAllowedBidderRequest_messageType fastReflection_QueryAllAllowedBidderRequest_messageType +var _ protoreflect.MessageType = fastReflection_QueryAllAllowedBidderRequest_messageType{} + +type fastReflection_QueryAllAllowedBidderRequest_messageType struct{} + +func (x fastReflection_QueryAllAllowedBidderRequest_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryAllAllowedBidderRequest)(nil) +} +func (x fastReflection_QueryAllAllowedBidderRequest_messageType) New() protoreflect.Message { + return new(fastReflection_QueryAllAllowedBidderRequest) +} +func (x fastReflection_QueryAllAllowedBidderRequest_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryAllAllowedBidderRequest +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryAllAllowedBidderRequest) Descriptor() protoreflect.MessageDescriptor { + return md_QueryAllAllowedBidderRequest +} + +// 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_QueryAllAllowedBidderRequest) Type() protoreflect.MessageType { + return _fastReflection_QueryAllAllowedBidderRequest_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryAllAllowedBidderRequest) New() protoreflect.Message { + return new(fastReflection_QueryAllAllowedBidderRequest) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryAllAllowedBidderRequest) Interface() protoreflect.ProtoMessage { + return (*QueryAllAllowedBidderRequest)(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_QueryAllAllowedBidderRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.AuctionId != uint64(0) { + value := protoreflect.ValueOfUint64(x.AuctionId) + if !f(fd_QueryAllAllowedBidderRequest_auction_id, value) { + return + } + } + if x.Pagination != nil { + value := protoreflect.ValueOfMessage(x.Pagination.ProtoReflect()) + if !f(fd_QueryAllAllowedBidderRequest_pagination, 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_QueryAllAllowedBidderRequest) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "modules.fundraising.v1.QueryAllAllowedBidderRequest.auction_id": + return x.AuctionId != uint64(0) + case "modules.fundraising.v1.QueryAllAllowedBidderRequest.pagination": + return x.Pagination != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryAllAllowedBidderRequest")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryAllAllowedBidderRequest 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_QueryAllAllowedBidderRequest) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "modules.fundraising.v1.QueryAllAllowedBidderRequest.auction_id": + x.AuctionId = uint64(0) + case "modules.fundraising.v1.QueryAllAllowedBidderRequest.pagination": + x.Pagination = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryAllAllowedBidderRequest")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryAllAllowedBidderRequest 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_QueryAllAllowedBidderRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "modules.fundraising.v1.QueryAllAllowedBidderRequest.auction_id": + value := x.AuctionId + return protoreflect.ValueOfUint64(value) + case "modules.fundraising.v1.QueryAllAllowedBidderRequest.pagination": + value := x.Pagination + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryAllAllowedBidderRequest")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryAllAllowedBidderRequest 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_QueryAllAllowedBidderRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "modules.fundraising.v1.QueryAllAllowedBidderRequest.auction_id": + x.AuctionId = value.Uint() + case "modules.fundraising.v1.QueryAllAllowedBidderRequest.pagination": + x.Pagination = value.Message().Interface().(*v1beta1.PageRequest) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryAllAllowedBidderRequest")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryAllAllowedBidderRequest 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_QueryAllAllowedBidderRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.QueryAllAllowedBidderRequest.pagination": + if x.Pagination == nil { + x.Pagination = new(v1beta1.PageRequest) + } + return protoreflect.ValueOfMessage(x.Pagination.ProtoReflect()) + case "modules.fundraising.v1.QueryAllAllowedBidderRequest.auction_id": + panic(fmt.Errorf("field auction_id of message modules.fundraising.v1.QueryAllAllowedBidderRequest is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryAllAllowedBidderRequest")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryAllAllowedBidderRequest 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_QueryAllAllowedBidderRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.QueryAllAllowedBidderRequest.auction_id": + return protoreflect.ValueOfUint64(uint64(0)) + case "modules.fundraising.v1.QueryAllAllowedBidderRequest.pagination": + m := new(v1beta1.PageRequest) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryAllAllowedBidderRequest")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryAllAllowedBidderRequest 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_QueryAllAllowedBidderRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in modules.fundraising.v1.QueryAllAllowedBidderRequest", 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_QueryAllAllowedBidderRequest) 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_QueryAllAllowedBidderRequest) 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_QueryAllAllowedBidderRequest) 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_QueryAllAllowedBidderRequest) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryAllAllowedBidderRequest) + 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.AuctionId != 0 { + n += 1 + runtime.Sov(uint64(x.AuctionId)) + } + if x.Pagination != nil { + l = options.Size(x.Pagination) + 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().(*QueryAllAllowedBidderRequest) + 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 x.Pagination != nil { + encoded, err := options.Marshal(x.Pagination) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x12 + } + if x.AuctionId != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.AuctionId)) + i-- + dAtA[i] = 0x8 + } + 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().(*QueryAllAllowedBidderRequest) + 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: QueryAllAllowedBidderRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryAllAllowedBidderRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field AuctionId", wireType) + } + x.AuctionId = 0 + 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++ + x.AuctionId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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 + } + if x.Pagination == nil { + x.Pagination = &v1beta1.PageRequest{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Pagination); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + 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 _ protoreflect.List = (*_QueryAllAllowedBidderResponse_1_list)(nil) + +type _QueryAllAllowedBidderResponse_1_list struct { + list *[]*AllowedBidder +} + +func (x *_QueryAllAllowedBidderResponse_1_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_QueryAllAllowedBidderResponse_1_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) +} + +func (x *_QueryAllAllowedBidderResponse_1_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*AllowedBidder) + (*x.list)[i] = concreteValue +} + +func (x *_QueryAllAllowedBidderResponse_1_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*AllowedBidder) + *x.list = append(*x.list, concreteValue) +} + +func (x *_QueryAllAllowedBidderResponse_1_list) AppendMutable() protoreflect.Value { + v := new(AllowedBidder) + *x.list = append(*x.list, v) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_QueryAllAllowedBidderResponse_1_list) Truncate(n int) { + for i := n; i < len(*x.list); i++ { + (*x.list)[i] = nil + } + *x.list = (*x.list)[:n] +} + +func (x *_QueryAllAllowedBidderResponse_1_list) NewElement() protoreflect.Value { + v := new(AllowedBidder) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_QueryAllAllowedBidderResponse_1_list) IsValid() bool { + return x.list != nil +} + +var ( + md_QueryAllAllowedBidderResponse protoreflect.MessageDescriptor + fd_QueryAllAllowedBidderResponse_allowed_bidder protoreflect.FieldDescriptor + fd_QueryAllAllowedBidderResponse_pagination protoreflect.FieldDescriptor +) + +func init() { + file_modules_fundraising_v1_query_proto_init() + md_QueryAllAllowedBidderResponse = File_modules_fundraising_v1_query_proto.Messages().ByName("QueryAllAllowedBidderResponse") + fd_QueryAllAllowedBidderResponse_allowed_bidder = md_QueryAllAllowedBidderResponse.Fields().ByName("allowed_bidder") + fd_QueryAllAllowedBidderResponse_pagination = md_QueryAllAllowedBidderResponse.Fields().ByName("pagination") +} + +var _ protoreflect.Message = (*fastReflection_QueryAllAllowedBidderResponse)(nil) + +type fastReflection_QueryAllAllowedBidderResponse QueryAllAllowedBidderResponse + +func (x *QueryAllAllowedBidderResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryAllAllowedBidderResponse)(x) +} + +func (x *QueryAllAllowedBidderResponse) slowProtoReflect() protoreflect.Message { + mi := &file_modules_fundraising_v1_query_proto_msgTypes[7] + 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_QueryAllAllowedBidderResponse_messageType fastReflection_QueryAllAllowedBidderResponse_messageType +var _ protoreflect.MessageType = fastReflection_QueryAllAllowedBidderResponse_messageType{} + +type fastReflection_QueryAllAllowedBidderResponse_messageType struct{} + +func (x fastReflection_QueryAllAllowedBidderResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryAllAllowedBidderResponse)(nil) +} +func (x fastReflection_QueryAllAllowedBidderResponse_messageType) New() protoreflect.Message { + return new(fastReflection_QueryAllAllowedBidderResponse) +} +func (x fastReflection_QueryAllAllowedBidderResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryAllAllowedBidderResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryAllAllowedBidderResponse) Descriptor() protoreflect.MessageDescriptor { + return md_QueryAllAllowedBidderResponse +} + +// 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_QueryAllAllowedBidderResponse) Type() protoreflect.MessageType { + return _fastReflection_QueryAllAllowedBidderResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryAllAllowedBidderResponse) New() protoreflect.Message { + return new(fastReflection_QueryAllAllowedBidderResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryAllAllowedBidderResponse) Interface() protoreflect.ProtoMessage { + return (*QueryAllAllowedBidderResponse)(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_QueryAllAllowedBidderResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if len(x.AllowedBidder) != 0 { + value := protoreflect.ValueOfList(&_QueryAllAllowedBidderResponse_1_list{list: &x.AllowedBidder}) + if !f(fd_QueryAllAllowedBidderResponse_allowed_bidder, value) { + return + } + } + if x.Pagination != nil { + value := protoreflect.ValueOfMessage(x.Pagination.ProtoReflect()) + if !f(fd_QueryAllAllowedBidderResponse_pagination, 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_QueryAllAllowedBidderResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "modules.fundraising.v1.QueryAllAllowedBidderResponse.allowed_bidder": + return len(x.AllowedBidder) != 0 + case "modules.fundraising.v1.QueryAllAllowedBidderResponse.pagination": + return x.Pagination != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryAllAllowedBidderResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryAllAllowedBidderResponse 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_QueryAllAllowedBidderResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "modules.fundraising.v1.QueryAllAllowedBidderResponse.allowed_bidder": + x.AllowedBidder = nil + case "modules.fundraising.v1.QueryAllAllowedBidderResponse.pagination": + x.Pagination = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryAllAllowedBidderResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryAllAllowedBidderResponse 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_QueryAllAllowedBidderResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "modules.fundraising.v1.QueryAllAllowedBidderResponse.allowed_bidder": + if len(x.AllowedBidder) == 0 { + return protoreflect.ValueOfList(&_QueryAllAllowedBidderResponse_1_list{}) + } + listValue := &_QueryAllAllowedBidderResponse_1_list{list: &x.AllowedBidder} + return protoreflect.ValueOfList(listValue) + case "modules.fundraising.v1.QueryAllAllowedBidderResponse.pagination": + value := x.Pagination + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryAllAllowedBidderResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryAllAllowedBidderResponse 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_QueryAllAllowedBidderResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "modules.fundraising.v1.QueryAllAllowedBidderResponse.allowed_bidder": + lv := value.List() + clv := lv.(*_QueryAllAllowedBidderResponse_1_list) + x.AllowedBidder = *clv.list + case "modules.fundraising.v1.QueryAllAllowedBidderResponse.pagination": + x.Pagination = value.Message().Interface().(*v1beta1.PageResponse) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryAllAllowedBidderResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryAllAllowedBidderResponse 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_QueryAllAllowedBidderResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.QueryAllAllowedBidderResponse.allowed_bidder": + if x.AllowedBidder == nil { + x.AllowedBidder = []*AllowedBidder{} + } + value := &_QueryAllAllowedBidderResponse_1_list{list: &x.AllowedBidder} + return protoreflect.ValueOfList(value) + case "modules.fundraising.v1.QueryAllAllowedBidderResponse.pagination": + if x.Pagination == nil { + x.Pagination = new(v1beta1.PageResponse) + } + return protoreflect.ValueOfMessage(x.Pagination.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryAllAllowedBidderResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryAllAllowedBidderResponse 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_QueryAllAllowedBidderResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.QueryAllAllowedBidderResponse.allowed_bidder": + list := []*AllowedBidder{} + return protoreflect.ValueOfList(&_QueryAllAllowedBidderResponse_1_list{list: &list}) + case "modules.fundraising.v1.QueryAllAllowedBidderResponse.pagination": + m := new(v1beta1.PageResponse) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryAllAllowedBidderResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryAllAllowedBidderResponse 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_QueryAllAllowedBidderResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in modules.fundraising.v1.QueryAllAllowedBidderResponse", 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_QueryAllAllowedBidderResponse) 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_QueryAllAllowedBidderResponse) 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_QueryAllAllowedBidderResponse) 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_QueryAllAllowedBidderResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryAllAllowedBidderResponse) + 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.AllowedBidder) > 0 { + for _, e := range x.AllowedBidder { + l = options.Size(e) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if x.Pagination != nil { + l = options.Size(x.Pagination) + 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().(*QueryAllAllowedBidderResponse) + 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 x.Pagination != nil { + encoded, err := options.Marshal(x.Pagination) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x12 + } + if len(x.AllowedBidder) > 0 { + for iNdEx := len(x.AllowedBidder) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.AllowedBidder[iNdEx]) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + 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().(*QueryAllAllowedBidderResponse) + 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: QueryAllAllowedBidderResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryAllAllowedBidderResponse: 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 AllowedBidder", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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.AllowedBidder = append(x.AllowedBidder, &AllowedBidder{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.AllowedBidder[len(x.AllowedBidder)-1]); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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 + } + if x.Pagination == nil { + x.Pagination = &v1beta1.PageResponse{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Pagination); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + 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_QueryGetAllowedBidderRequest protoreflect.MessageDescriptor + fd_QueryGetAllowedBidderRequest_auction_id protoreflect.FieldDescriptor + fd_QueryGetAllowedBidderRequest_bidder protoreflect.FieldDescriptor +) + +func init() { + file_modules_fundraising_v1_query_proto_init() + md_QueryGetAllowedBidderRequest = File_modules_fundraising_v1_query_proto.Messages().ByName("QueryGetAllowedBidderRequest") + fd_QueryGetAllowedBidderRequest_auction_id = md_QueryGetAllowedBidderRequest.Fields().ByName("auction_id") + fd_QueryGetAllowedBidderRequest_bidder = md_QueryGetAllowedBidderRequest.Fields().ByName("bidder") +} + +var _ protoreflect.Message = (*fastReflection_QueryGetAllowedBidderRequest)(nil) + +type fastReflection_QueryGetAllowedBidderRequest QueryGetAllowedBidderRequest + +func (x *QueryGetAllowedBidderRequest) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryGetAllowedBidderRequest)(x) +} + +func (x *QueryGetAllowedBidderRequest) slowProtoReflect() protoreflect.Message { + mi := &file_modules_fundraising_v1_query_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryGetAllowedBidderRequest_messageType fastReflection_QueryGetAllowedBidderRequest_messageType +var _ protoreflect.MessageType = fastReflection_QueryGetAllowedBidderRequest_messageType{} + +type fastReflection_QueryGetAllowedBidderRequest_messageType struct{} + +func (x fastReflection_QueryGetAllowedBidderRequest_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryGetAllowedBidderRequest)(nil) +} +func (x fastReflection_QueryGetAllowedBidderRequest_messageType) New() protoreflect.Message { + return new(fastReflection_QueryGetAllowedBidderRequest) +} +func (x fastReflection_QueryGetAllowedBidderRequest_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryGetAllowedBidderRequest +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryGetAllowedBidderRequest) Descriptor() protoreflect.MessageDescriptor { + return md_QueryGetAllowedBidderRequest +} + +// 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_QueryGetAllowedBidderRequest) Type() protoreflect.MessageType { + return _fastReflection_QueryGetAllowedBidderRequest_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryGetAllowedBidderRequest) New() protoreflect.Message { + return new(fastReflection_QueryGetAllowedBidderRequest) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryGetAllowedBidderRequest) Interface() protoreflect.ProtoMessage { + return (*QueryGetAllowedBidderRequest)(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_QueryGetAllowedBidderRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.AuctionId != uint64(0) { + value := protoreflect.ValueOfUint64(x.AuctionId) + if !f(fd_QueryGetAllowedBidderRequest_auction_id, value) { + return + } + } + if x.Bidder != "" { + value := protoreflect.ValueOfString(x.Bidder) + if !f(fd_QueryGetAllowedBidderRequest_bidder, 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_QueryGetAllowedBidderRequest) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "modules.fundraising.v1.QueryGetAllowedBidderRequest.auction_id": + return x.AuctionId != uint64(0) + case "modules.fundraising.v1.QueryGetAllowedBidderRequest.bidder": + return x.Bidder != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryGetAllowedBidderRequest")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryGetAllowedBidderRequest 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_QueryGetAllowedBidderRequest) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "modules.fundraising.v1.QueryGetAllowedBidderRequest.auction_id": + x.AuctionId = uint64(0) + case "modules.fundraising.v1.QueryGetAllowedBidderRequest.bidder": + x.Bidder = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryGetAllowedBidderRequest")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryGetAllowedBidderRequest 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_QueryGetAllowedBidderRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "modules.fundraising.v1.QueryGetAllowedBidderRequest.auction_id": + value := x.AuctionId + return protoreflect.ValueOfUint64(value) + case "modules.fundraising.v1.QueryGetAllowedBidderRequest.bidder": + value := x.Bidder + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryGetAllowedBidderRequest")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryGetAllowedBidderRequest 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_QueryGetAllowedBidderRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "modules.fundraising.v1.QueryGetAllowedBidderRequest.auction_id": + x.AuctionId = value.Uint() + case "modules.fundraising.v1.QueryGetAllowedBidderRequest.bidder": + x.Bidder = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryGetAllowedBidderRequest")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryGetAllowedBidderRequest 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_QueryGetAllowedBidderRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.QueryGetAllowedBidderRequest.auction_id": + panic(fmt.Errorf("field auction_id of message modules.fundraising.v1.QueryGetAllowedBidderRequest is not mutable")) + case "modules.fundraising.v1.QueryGetAllowedBidderRequest.bidder": + panic(fmt.Errorf("field bidder of message modules.fundraising.v1.QueryGetAllowedBidderRequest is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryGetAllowedBidderRequest")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryGetAllowedBidderRequest 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_QueryGetAllowedBidderRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.QueryGetAllowedBidderRequest.auction_id": + return protoreflect.ValueOfUint64(uint64(0)) + case "modules.fundraising.v1.QueryGetAllowedBidderRequest.bidder": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryGetAllowedBidderRequest")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryGetAllowedBidderRequest 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_QueryGetAllowedBidderRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in modules.fundraising.v1.QueryGetAllowedBidderRequest", 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_QueryGetAllowedBidderRequest) 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_QueryGetAllowedBidderRequest) 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_QueryGetAllowedBidderRequest) 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_QueryGetAllowedBidderRequest) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryGetAllowedBidderRequest) + 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.AuctionId != 0 { + n += 1 + runtime.Sov(uint64(x.AuctionId)) + } + l = len(x.Bidder) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryGetAllowedBidderRequest) + 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.Bidder) > 0 { + i -= len(x.Bidder) + copy(dAtA[i:], x.Bidder) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Bidder))) + i-- + dAtA[i] = 0x12 + } + if x.AuctionId != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.AuctionId)) + i-- + dAtA[i] = 0x8 + } + 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().(*QueryGetAllowedBidderRequest) + 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: QueryGetAllowedBidderRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryGetAllowedBidderRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field AuctionId", wireType) + } + x.AuctionId = 0 + 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++ + x.AuctionId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Bidder", 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.Bidder = 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_QueryGetAllowedBidderResponse protoreflect.MessageDescriptor + fd_QueryGetAllowedBidderResponse_allowed_bidder protoreflect.FieldDescriptor +) + +func init() { + file_modules_fundraising_v1_query_proto_init() + md_QueryGetAllowedBidderResponse = File_modules_fundraising_v1_query_proto.Messages().ByName("QueryGetAllowedBidderResponse") + fd_QueryGetAllowedBidderResponse_allowed_bidder = md_QueryGetAllowedBidderResponse.Fields().ByName("allowed_bidder") +} + +var _ protoreflect.Message = (*fastReflection_QueryGetAllowedBidderResponse)(nil) + +type fastReflection_QueryGetAllowedBidderResponse QueryGetAllowedBidderResponse + +func (x *QueryGetAllowedBidderResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryGetAllowedBidderResponse)(x) +} + +func (x *QueryGetAllowedBidderResponse) slowProtoReflect() protoreflect.Message { + mi := &file_modules_fundraising_v1_query_proto_msgTypes[9] + 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_QueryGetAllowedBidderResponse_messageType fastReflection_QueryGetAllowedBidderResponse_messageType +var _ protoreflect.MessageType = fastReflection_QueryGetAllowedBidderResponse_messageType{} + +type fastReflection_QueryGetAllowedBidderResponse_messageType struct{} + +func (x fastReflection_QueryGetAllowedBidderResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryGetAllowedBidderResponse)(nil) +} +func (x fastReflection_QueryGetAllowedBidderResponse_messageType) New() protoreflect.Message { + return new(fastReflection_QueryGetAllowedBidderResponse) +} +func (x fastReflection_QueryGetAllowedBidderResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryGetAllowedBidderResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryGetAllowedBidderResponse) Descriptor() protoreflect.MessageDescriptor { + return md_QueryGetAllowedBidderResponse +} + +// 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_QueryGetAllowedBidderResponse) Type() protoreflect.MessageType { + return _fastReflection_QueryGetAllowedBidderResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryGetAllowedBidderResponse) New() protoreflect.Message { + return new(fastReflection_QueryGetAllowedBidderResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryGetAllowedBidderResponse) Interface() protoreflect.ProtoMessage { + return (*QueryGetAllowedBidderResponse)(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_QueryGetAllowedBidderResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.AllowedBidder != nil { + value := protoreflect.ValueOfMessage(x.AllowedBidder.ProtoReflect()) + if !f(fd_QueryGetAllowedBidderResponse_allowed_bidder, 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_QueryGetAllowedBidderResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "modules.fundraising.v1.QueryGetAllowedBidderResponse.allowed_bidder": + return x.AllowedBidder != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryGetAllowedBidderResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryGetAllowedBidderResponse 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_QueryGetAllowedBidderResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "modules.fundraising.v1.QueryGetAllowedBidderResponse.allowed_bidder": + x.AllowedBidder = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryGetAllowedBidderResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryGetAllowedBidderResponse 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_QueryGetAllowedBidderResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "modules.fundraising.v1.QueryGetAllowedBidderResponse.allowed_bidder": + value := x.AllowedBidder + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryGetAllowedBidderResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryGetAllowedBidderResponse 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_QueryGetAllowedBidderResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "modules.fundraising.v1.QueryGetAllowedBidderResponse.allowed_bidder": + x.AllowedBidder = value.Message().Interface().(*AllowedBidder) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryGetAllowedBidderResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryGetAllowedBidderResponse 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_QueryGetAllowedBidderResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.QueryGetAllowedBidderResponse.allowed_bidder": + if x.AllowedBidder == nil { + x.AllowedBidder = new(AllowedBidder) + } + return protoreflect.ValueOfMessage(x.AllowedBidder.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryGetAllowedBidderResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryGetAllowedBidderResponse 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_QueryGetAllowedBidderResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.QueryGetAllowedBidderResponse.allowed_bidder": + m := new(AllowedBidder) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryGetAllowedBidderResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryGetAllowedBidderResponse 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_QueryGetAllowedBidderResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in modules.fundraising.v1.QueryGetAllowedBidderResponse", 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_QueryGetAllowedBidderResponse) 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_QueryGetAllowedBidderResponse) 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_QueryGetAllowedBidderResponse) 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_QueryGetAllowedBidderResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryGetAllowedBidderResponse) + 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.AllowedBidder != nil { + l = options.Size(x.AllowedBidder) + 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().(*QueryGetAllowedBidderResponse) + 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 x.AllowedBidder != nil { + encoded, err := options.Marshal(x.AllowedBidder) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + 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().(*QueryGetAllowedBidderResponse) + 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: QueryGetAllowedBidderResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryGetAllowedBidderResponse: 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 AllowedBidder", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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 + } + if x.AllowedBidder == nil { + x.AllowedBidder = &AllowedBidder{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.AllowedBidder); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + 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_QueryGetBidRequest protoreflect.MessageDescriptor + fd_QueryGetBidRequest_auction_id protoreflect.FieldDescriptor + fd_QueryGetBidRequest_bid_id protoreflect.FieldDescriptor +) + +func init() { + file_modules_fundraising_v1_query_proto_init() + md_QueryGetBidRequest = File_modules_fundraising_v1_query_proto.Messages().ByName("QueryGetBidRequest") + fd_QueryGetBidRequest_auction_id = md_QueryGetBidRequest.Fields().ByName("auction_id") + fd_QueryGetBidRequest_bid_id = md_QueryGetBidRequest.Fields().ByName("bid_id") +} + +var _ protoreflect.Message = (*fastReflection_QueryGetBidRequest)(nil) + +type fastReflection_QueryGetBidRequest QueryGetBidRequest + +func (x *QueryGetBidRequest) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryGetBidRequest)(x) +} + +func (x *QueryGetBidRequest) slowProtoReflect() protoreflect.Message { + mi := &file_modules_fundraising_v1_query_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryGetBidRequest_messageType fastReflection_QueryGetBidRequest_messageType +var _ protoreflect.MessageType = fastReflection_QueryGetBidRequest_messageType{} + +type fastReflection_QueryGetBidRequest_messageType struct{} + +func (x fastReflection_QueryGetBidRequest_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryGetBidRequest)(nil) +} +func (x fastReflection_QueryGetBidRequest_messageType) New() protoreflect.Message { + return new(fastReflection_QueryGetBidRequest) +} +func (x fastReflection_QueryGetBidRequest_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryGetBidRequest +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryGetBidRequest) Descriptor() protoreflect.MessageDescriptor { + return md_QueryGetBidRequest +} + +// 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_QueryGetBidRequest) Type() protoreflect.MessageType { + return _fastReflection_QueryGetBidRequest_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryGetBidRequest) New() protoreflect.Message { + return new(fastReflection_QueryGetBidRequest) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryGetBidRequest) Interface() protoreflect.ProtoMessage { + return (*QueryGetBidRequest)(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_QueryGetBidRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.AuctionId != uint64(0) { + value := protoreflect.ValueOfUint64(x.AuctionId) + if !f(fd_QueryGetBidRequest_auction_id, value) { + return + } + } + if x.BidId != uint64(0) { + value := protoreflect.ValueOfUint64(x.BidId) + if !f(fd_QueryGetBidRequest_bid_id, 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_QueryGetBidRequest) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "modules.fundraising.v1.QueryGetBidRequest.auction_id": + return x.AuctionId != uint64(0) + case "modules.fundraising.v1.QueryGetBidRequest.bid_id": + return x.BidId != uint64(0) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryGetBidRequest")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryGetBidRequest 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_QueryGetBidRequest) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "modules.fundraising.v1.QueryGetBidRequest.auction_id": + x.AuctionId = uint64(0) + case "modules.fundraising.v1.QueryGetBidRequest.bid_id": + x.BidId = uint64(0) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryGetBidRequest")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryGetBidRequest 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_QueryGetBidRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "modules.fundraising.v1.QueryGetBidRequest.auction_id": + value := x.AuctionId + return protoreflect.ValueOfUint64(value) + case "modules.fundraising.v1.QueryGetBidRequest.bid_id": + value := x.BidId + return protoreflect.ValueOfUint64(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryGetBidRequest")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryGetBidRequest 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_QueryGetBidRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "modules.fundraising.v1.QueryGetBidRequest.auction_id": + x.AuctionId = value.Uint() + case "modules.fundraising.v1.QueryGetBidRequest.bid_id": + x.BidId = value.Uint() + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryGetBidRequest")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryGetBidRequest 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_QueryGetBidRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.QueryGetBidRequest.auction_id": + panic(fmt.Errorf("field auction_id of message modules.fundraising.v1.QueryGetBidRequest is not mutable")) + case "modules.fundraising.v1.QueryGetBidRequest.bid_id": + panic(fmt.Errorf("field bid_id of message modules.fundraising.v1.QueryGetBidRequest is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryGetBidRequest")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryGetBidRequest 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_QueryGetBidRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.QueryGetBidRequest.auction_id": + return protoreflect.ValueOfUint64(uint64(0)) + case "modules.fundraising.v1.QueryGetBidRequest.bid_id": + return protoreflect.ValueOfUint64(uint64(0)) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryGetBidRequest")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryGetBidRequest 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_QueryGetBidRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in modules.fundraising.v1.QueryGetBidRequest", 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_QueryGetBidRequest) 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_QueryGetBidRequest) 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_QueryGetBidRequest) 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_QueryGetBidRequest) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryGetBidRequest) + 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.AuctionId != 0 { + n += 1 + runtime.Sov(uint64(x.AuctionId)) + } + if x.BidId != 0 { + n += 1 + runtime.Sov(uint64(x.BidId)) + } + 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().(*QueryGetBidRequest) + 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 x.BidId != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.BidId)) + i-- + dAtA[i] = 0x10 + } + if x.AuctionId != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.AuctionId)) + i-- + dAtA[i] = 0x8 + } + 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().(*QueryGetBidRequest) + 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: QueryGetBidRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryGetBidRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field AuctionId", wireType) + } + x.AuctionId = 0 + 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++ + x.AuctionId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field BidId", wireType) + } + x.BidId = 0 + 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++ + x.BidId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + 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_QueryGetBidResponse protoreflect.MessageDescriptor + fd_QueryGetBidResponse_bid protoreflect.FieldDescriptor +) + +func init() { + file_modules_fundraising_v1_query_proto_init() + md_QueryGetBidResponse = File_modules_fundraising_v1_query_proto.Messages().ByName("QueryGetBidResponse") + fd_QueryGetBidResponse_bid = md_QueryGetBidResponse.Fields().ByName("bid") +} + +var _ protoreflect.Message = (*fastReflection_QueryGetBidResponse)(nil) + +type fastReflection_QueryGetBidResponse QueryGetBidResponse + +func (x *QueryGetBidResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryGetBidResponse)(x) +} + +func (x *QueryGetBidResponse) slowProtoReflect() protoreflect.Message { + mi := &file_modules_fundraising_v1_query_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryGetBidResponse_messageType fastReflection_QueryGetBidResponse_messageType +var _ protoreflect.MessageType = fastReflection_QueryGetBidResponse_messageType{} + +type fastReflection_QueryGetBidResponse_messageType struct{} + +func (x fastReflection_QueryGetBidResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryGetBidResponse)(nil) +} +func (x fastReflection_QueryGetBidResponse_messageType) New() protoreflect.Message { + return new(fastReflection_QueryGetBidResponse) +} +func (x fastReflection_QueryGetBidResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryGetBidResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryGetBidResponse) Descriptor() protoreflect.MessageDescriptor { + return md_QueryGetBidResponse +} + +// 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_QueryGetBidResponse) Type() protoreflect.MessageType { + return _fastReflection_QueryGetBidResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryGetBidResponse) New() protoreflect.Message { + return new(fastReflection_QueryGetBidResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryGetBidResponse) Interface() protoreflect.ProtoMessage { + return (*QueryGetBidResponse)(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_QueryGetBidResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Bid != nil { + value := protoreflect.ValueOfMessage(x.Bid.ProtoReflect()) + if !f(fd_QueryGetBidResponse_bid, 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_QueryGetBidResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "modules.fundraising.v1.QueryGetBidResponse.bid": + return x.Bid != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryGetBidResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryGetBidResponse 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_QueryGetBidResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "modules.fundraising.v1.QueryGetBidResponse.bid": + x.Bid = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryGetBidResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryGetBidResponse 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_QueryGetBidResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "modules.fundraising.v1.QueryGetBidResponse.bid": + value := x.Bid + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryGetBidResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryGetBidResponse 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_QueryGetBidResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "modules.fundraising.v1.QueryGetBidResponse.bid": + x.Bid = value.Message().Interface().(*Bid) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryGetBidResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryGetBidResponse 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_QueryGetBidResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.QueryGetBidResponse.bid": + if x.Bid == nil { + x.Bid = new(Bid) + } + return protoreflect.ValueOfMessage(x.Bid.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryGetBidResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryGetBidResponse 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_QueryGetBidResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.QueryGetBidResponse.bid": + m := new(Bid) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryGetBidResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryGetBidResponse 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_QueryGetBidResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in modules.fundraising.v1.QueryGetBidResponse", 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_QueryGetBidResponse) 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_QueryGetBidResponse) 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_QueryGetBidResponse) 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_QueryGetBidResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryGetBidResponse) + 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.Bid != nil { + l = options.Size(x.Bid) + 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().(*QueryGetBidResponse) + 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 x.Bid != nil { + encoded, err := options.Marshal(x.Bid) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + 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().(*QueryGetBidResponse) + 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: QueryGetBidResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryGetBidResponse: 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 Bid", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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 + } + if x.Bid == nil { + x.Bid = &Bid{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Bid); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + 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_QueryAllBidRequest protoreflect.MessageDescriptor + fd_QueryAllBidRequest_auction_id protoreflect.FieldDescriptor + fd_QueryAllBidRequest_bidder protoreflect.FieldDescriptor + fd_QueryAllBidRequest_is_matched protoreflect.FieldDescriptor + fd_QueryAllBidRequest_pagination protoreflect.FieldDescriptor +) + +func init() { + file_modules_fundraising_v1_query_proto_init() + md_QueryAllBidRequest = File_modules_fundraising_v1_query_proto.Messages().ByName("QueryAllBidRequest") + fd_QueryAllBidRequest_auction_id = md_QueryAllBidRequest.Fields().ByName("auction_id") + fd_QueryAllBidRequest_bidder = md_QueryAllBidRequest.Fields().ByName("bidder") + fd_QueryAllBidRequest_is_matched = md_QueryAllBidRequest.Fields().ByName("is_matched") + fd_QueryAllBidRequest_pagination = md_QueryAllBidRequest.Fields().ByName("pagination") +} + +var _ protoreflect.Message = (*fastReflection_QueryAllBidRequest)(nil) + +type fastReflection_QueryAllBidRequest QueryAllBidRequest + +func (x *QueryAllBidRequest) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryAllBidRequest)(x) +} + +func (x *QueryAllBidRequest) slowProtoReflect() protoreflect.Message { + mi := &file_modules_fundraising_v1_query_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryAllBidRequest_messageType fastReflection_QueryAllBidRequest_messageType +var _ protoreflect.MessageType = fastReflection_QueryAllBidRequest_messageType{} + +type fastReflection_QueryAllBidRequest_messageType struct{} + +func (x fastReflection_QueryAllBidRequest_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryAllBidRequest)(nil) +} +func (x fastReflection_QueryAllBidRequest_messageType) New() protoreflect.Message { + return new(fastReflection_QueryAllBidRequest) +} +func (x fastReflection_QueryAllBidRequest_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryAllBidRequest +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryAllBidRequest) Descriptor() protoreflect.MessageDescriptor { + return md_QueryAllBidRequest +} + +// 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_QueryAllBidRequest) Type() protoreflect.MessageType { + return _fastReflection_QueryAllBidRequest_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryAllBidRequest) New() protoreflect.Message { + return new(fastReflection_QueryAllBidRequest) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryAllBidRequest) Interface() protoreflect.ProtoMessage { + return (*QueryAllBidRequest)(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_QueryAllBidRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.AuctionId != uint64(0) { + value := protoreflect.ValueOfUint64(x.AuctionId) + if !f(fd_QueryAllBidRequest_auction_id, value) { + return + } + } + if x.Bidder != "" { + value := protoreflect.ValueOfString(x.Bidder) + if !f(fd_QueryAllBidRequest_bidder, value) { + return + } + } + if x.IsMatched != "" { + value := protoreflect.ValueOfString(x.IsMatched) + if !f(fd_QueryAllBidRequest_is_matched, value) { + return + } + } + if x.Pagination != nil { + value := protoreflect.ValueOfMessage(x.Pagination.ProtoReflect()) + if !f(fd_QueryAllBidRequest_pagination, 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_QueryAllBidRequest) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "modules.fundraising.v1.QueryAllBidRequest.auction_id": + return x.AuctionId != uint64(0) + case "modules.fundraising.v1.QueryAllBidRequest.bidder": + return x.Bidder != "" + case "modules.fundraising.v1.QueryAllBidRequest.is_matched": + return x.IsMatched != "" + case "modules.fundraising.v1.QueryAllBidRequest.pagination": + return x.Pagination != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryAllBidRequest")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryAllBidRequest 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_QueryAllBidRequest) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "modules.fundraising.v1.QueryAllBidRequest.auction_id": + x.AuctionId = uint64(0) + case "modules.fundraising.v1.QueryAllBidRequest.bidder": + x.Bidder = "" + case "modules.fundraising.v1.QueryAllBidRequest.is_matched": + x.IsMatched = "" + case "modules.fundraising.v1.QueryAllBidRequest.pagination": + x.Pagination = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryAllBidRequest")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryAllBidRequest 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_QueryAllBidRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "modules.fundraising.v1.QueryAllBidRequest.auction_id": + value := x.AuctionId + return protoreflect.ValueOfUint64(value) + case "modules.fundraising.v1.QueryAllBidRequest.bidder": + value := x.Bidder + return protoreflect.ValueOfString(value) + case "modules.fundraising.v1.QueryAllBidRequest.is_matched": + value := x.IsMatched + return protoreflect.ValueOfString(value) + case "modules.fundraising.v1.QueryAllBidRequest.pagination": + value := x.Pagination + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryAllBidRequest")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryAllBidRequest 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_QueryAllBidRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "modules.fundraising.v1.QueryAllBidRequest.auction_id": + x.AuctionId = value.Uint() + case "modules.fundraising.v1.QueryAllBidRequest.bidder": + x.Bidder = value.Interface().(string) + case "modules.fundraising.v1.QueryAllBidRequest.is_matched": + x.IsMatched = value.Interface().(string) + case "modules.fundraising.v1.QueryAllBidRequest.pagination": + x.Pagination = value.Message().Interface().(*v1beta1.PageRequest) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryAllBidRequest")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryAllBidRequest 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_QueryAllBidRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.QueryAllBidRequest.pagination": + if x.Pagination == nil { + x.Pagination = new(v1beta1.PageRequest) + } + return protoreflect.ValueOfMessage(x.Pagination.ProtoReflect()) + case "modules.fundraising.v1.QueryAllBidRequest.auction_id": + panic(fmt.Errorf("field auction_id of message modules.fundraising.v1.QueryAllBidRequest is not mutable")) + case "modules.fundraising.v1.QueryAllBidRequest.bidder": + panic(fmt.Errorf("field bidder of message modules.fundraising.v1.QueryAllBidRequest is not mutable")) + case "modules.fundraising.v1.QueryAllBidRequest.is_matched": + panic(fmt.Errorf("field is_matched of message modules.fundraising.v1.QueryAllBidRequest is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryAllBidRequest")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryAllBidRequest 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_QueryAllBidRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.QueryAllBidRequest.auction_id": + return protoreflect.ValueOfUint64(uint64(0)) + case "modules.fundraising.v1.QueryAllBidRequest.bidder": + return protoreflect.ValueOfString("") + case "modules.fundraising.v1.QueryAllBidRequest.is_matched": + return protoreflect.ValueOfString("") + case "modules.fundraising.v1.QueryAllBidRequest.pagination": + m := new(v1beta1.PageRequest) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryAllBidRequest")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryAllBidRequest 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_QueryAllBidRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in modules.fundraising.v1.QueryAllBidRequest", 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_QueryAllBidRequest) 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_QueryAllBidRequest) 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_QueryAllBidRequest) 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_QueryAllBidRequest) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryAllBidRequest) + 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.AuctionId != 0 { + n += 1 + runtime.Sov(uint64(x.AuctionId)) + } + l = len(x.Bidder) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.IsMatched) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.Pagination != nil { + l = options.Size(x.Pagination) + 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().(*QueryAllBidRequest) + 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 x.Pagination != nil { + encoded, err := options.Marshal(x.Pagination) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x22 + } + if len(x.IsMatched) > 0 { + i -= len(x.IsMatched) + copy(dAtA[i:], x.IsMatched) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.IsMatched))) + i-- + dAtA[i] = 0x1a + } + if len(x.Bidder) > 0 { + i -= len(x.Bidder) + copy(dAtA[i:], x.Bidder) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Bidder))) + i-- + dAtA[i] = 0x12 + } + if x.AuctionId != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.AuctionId)) + i-- + dAtA[i] = 0x8 + } + 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().(*QueryAllBidRequest) + 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: QueryAllBidRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryAllBidRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field AuctionId", wireType) + } + x.AuctionId = 0 + 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++ + x.AuctionId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Bidder", 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.Bidder = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field IsMatched", 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.IsMatched = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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 + } + if x.Pagination == nil { + x.Pagination = &v1beta1.PageRequest{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Pagination); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + 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 _ protoreflect.List = (*_QueryAllBidResponse_1_list)(nil) + +type _QueryAllBidResponse_1_list struct { + list *[]*Bid +} + +func (x *_QueryAllBidResponse_1_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_QueryAllBidResponse_1_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) +} + +func (x *_QueryAllBidResponse_1_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*Bid) + (*x.list)[i] = concreteValue +} + +func (x *_QueryAllBidResponse_1_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*Bid) + *x.list = append(*x.list, concreteValue) +} + +func (x *_QueryAllBidResponse_1_list) AppendMutable() protoreflect.Value { + v := new(Bid) + *x.list = append(*x.list, v) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_QueryAllBidResponse_1_list) Truncate(n int) { + for i := n; i < len(*x.list); i++ { + (*x.list)[i] = nil + } + *x.list = (*x.list)[:n] +} + +func (x *_QueryAllBidResponse_1_list) NewElement() protoreflect.Value { + v := new(Bid) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_QueryAllBidResponse_1_list) IsValid() bool { + return x.list != nil +} + +var ( + md_QueryAllBidResponse protoreflect.MessageDescriptor + fd_QueryAllBidResponse_bid protoreflect.FieldDescriptor + fd_QueryAllBidResponse_pagination protoreflect.FieldDescriptor +) + +func init() { + file_modules_fundraising_v1_query_proto_init() + md_QueryAllBidResponse = File_modules_fundraising_v1_query_proto.Messages().ByName("QueryAllBidResponse") + fd_QueryAllBidResponse_bid = md_QueryAllBidResponse.Fields().ByName("bid") + fd_QueryAllBidResponse_pagination = md_QueryAllBidResponse.Fields().ByName("pagination") +} + +var _ protoreflect.Message = (*fastReflection_QueryAllBidResponse)(nil) + +type fastReflection_QueryAllBidResponse QueryAllBidResponse + +func (x *QueryAllBidResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryAllBidResponse)(x) +} + +func (x *QueryAllBidResponse) slowProtoReflect() protoreflect.Message { + mi := &file_modules_fundraising_v1_query_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryAllBidResponse_messageType fastReflection_QueryAllBidResponse_messageType +var _ protoreflect.MessageType = fastReflection_QueryAllBidResponse_messageType{} + +type fastReflection_QueryAllBidResponse_messageType struct{} + +func (x fastReflection_QueryAllBidResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryAllBidResponse)(nil) +} +func (x fastReflection_QueryAllBidResponse_messageType) New() protoreflect.Message { + return new(fastReflection_QueryAllBidResponse) +} +func (x fastReflection_QueryAllBidResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryAllBidResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryAllBidResponse) Descriptor() protoreflect.MessageDescriptor { + return md_QueryAllBidResponse +} + +// 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_QueryAllBidResponse) Type() protoreflect.MessageType { + return _fastReflection_QueryAllBidResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryAllBidResponse) New() protoreflect.Message { + return new(fastReflection_QueryAllBidResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryAllBidResponse) Interface() protoreflect.ProtoMessage { + return (*QueryAllBidResponse)(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_QueryAllBidResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if len(x.Bid) != 0 { + value := protoreflect.ValueOfList(&_QueryAllBidResponse_1_list{list: &x.Bid}) + if !f(fd_QueryAllBidResponse_bid, value) { + return + } + } + if x.Pagination != nil { + value := protoreflect.ValueOfMessage(x.Pagination.ProtoReflect()) + if !f(fd_QueryAllBidResponse_pagination, 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_QueryAllBidResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "modules.fundraising.v1.QueryAllBidResponse.bid": + return len(x.Bid) != 0 + case "modules.fundraising.v1.QueryAllBidResponse.pagination": + return x.Pagination != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryAllBidResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryAllBidResponse 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_QueryAllBidResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "modules.fundraising.v1.QueryAllBidResponse.bid": + x.Bid = nil + case "modules.fundraising.v1.QueryAllBidResponse.pagination": + x.Pagination = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryAllBidResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryAllBidResponse 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_QueryAllBidResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "modules.fundraising.v1.QueryAllBidResponse.bid": + if len(x.Bid) == 0 { + return protoreflect.ValueOfList(&_QueryAllBidResponse_1_list{}) + } + listValue := &_QueryAllBidResponse_1_list{list: &x.Bid} + return protoreflect.ValueOfList(listValue) + case "modules.fundraising.v1.QueryAllBidResponse.pagination": + value := x.Pagination + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryAllBidResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryAllBidResponse 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_QueryAllBidResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "modules.fundraising.v1.QueryAllBidResponse.bid": + lv := value.List() + clv := lv.(*_QueryAllBidResponse_1_list) + x.Bid = *clv.list + case "modules.fundraising.v1.QueryAllBidResponse.pagination": + x.Pagination = value.Message().Interface().(*v1beta1.PageResponse) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryAllBidResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryAllBidResponse 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_QueryAllBidResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.QueryAllBidResponse.bid": + if x.Bid == nil { + x.Bid = []*Bid{} + } + value := &_QueryAllBidResponse_1_list{list: &x.Bid} + return protoreflect.ValueOfList(value) + case "modules.fundraising.v1.QueryAllBidResponse.pagination": + if x.Pagination == nil { + x.Pagination = new(v1beta1.PageResponse) + } + return protoreflect.ValueOfMessage(x.Pagination.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryAllBidResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryAllBidResponse 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_QueryAllBidResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.QueryAllBidResponse.bid": + list := []*Bid{} + return protoreflect.ValueOfList(&_QueryAllBidResponse_1_list{list: &list}) + case "modules.fundraising.v1.QueryAllBidResponse.pagination": + m := new(v1beta1.PageResponse) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryAllBidResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryAllBidResponse 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_QueryAllBidResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in modules.fundraising.v1.QueryAllBidResponse", 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_QueryAllBidResponse) 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_QueryAllBidResponse) 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_QueryAllBidResponse) 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_QueryAllBidResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryAllBidResponse) + 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.Bid) > 0 { + for _, e := range x.Bid { + l = options.Size(e) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if x.Pagination != nil { + l = options.Size(x.Pagination) + 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().(*QueryAllBidResponse) + 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 x.Pagination != nil { + encoded, err := options.Marshal(x.Pagination) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x12 + } + if len(x.Bid) > 0 { + for iNdEx := len(x.Bid) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.Bid[iNdEx]) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + 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().(*QueryAllBidResponse) + 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: QueryAllBidResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryAllBidResponse: 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 Bid", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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.Bid = append(x.Bid, &Bid{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Bid[len(x.Bid)-1]); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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 + } + if x.Pagination == nil { + x.Pagination = &v1beta1.PageResponse{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Pagination); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + 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_QueryAllVestingQueueRequest protoreflect.MessageDescriptor + fd_QueryAllVestingQueueRequest_auction_id protoreflect.FieldDescriptor + fd_QueryAllVestingQueueRequest_pagination protoreflect.FieldDescriptor +) + +func init() { + file_modules_fundraising_v1_query_proto_init() + md_QueryAllVestingQueueRequest = File_modules_fundraising_v1_query_proto.Messages().ByName("QueryAllVestingQueueRequest") + fd_QueryAllVestingQueueRequest_auction_id = md_QueryAllVestingQueueRequest.Fields().ByName("auction_id") + fd_QueryAllVestingQueueRequest_pagination = md_QueryAllVestingQueueRequest.Fields().ByName("pagination") +} + +var _ protoreflect.Message = (*fastReflection_QueryAllVestingQueueRequest)(nil) + +type fastReflection_QueryAllVestingQueueRequest QueryAllVestingQueueRequest + +func (x *QueryAllVestingQueueRequest) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryAllVestingQueueRequest)(x) +} + +func (x *QueryAllVestingQueueRequest) slowProtoReflect() protoreflect.Message { + mi := &file_modules_fundraising_v1_query_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryAllVestingQueueRequest_messageType fastReflection_QueryAllVestingQueueRequest_messageType +var _ protoreflect.MessageType = fastReflection_QueryAllVestingQueueRequest_messageType{} + +type fastReflection_QueryAllVestingQueueRequest_messageType struct{} + +func (x fastReflection_QueryAllVestingQueueRequest_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryAllVestingQueueRequest)(nil) +} +func (x fastReflection_QueryAllVestingQueueRequest_messageType) New() protoreflect.Message { + return new(fastReflection_QueryAllVestingQueueRequest) +} +func (x fastReflection_QueryAllVestingQueueRequest_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryAllVestingQueueRequest +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryAllVestingQueueRequest) Descriptor() protoreflect.MessageDescriptor { + return md_QueryAllVestingQueueRequest +} + +// 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_QueryAllVestingQueueRequest) Type() protoreflect.MessageType { + return _fastReflection_QueryAllVestingQueueRequest_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryAllVestingQueueRequest) New() protoreflect.Message { + return new(fastReflection_QueryAllVestingQueueRequest) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryAllVestingQueueRequest) Interface() protoreflect.ProtoMessage { + return (*QueryAllVestingQueueRequest)(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_QueryAllVestingQueueRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.AuctionId != uint64(0) { + value := protoreflect.ValueOfUint64(x.AuctionId) + if !f(fd_QueryAllVestingQueueRequest_auction_id, value) { + return + } + } + if x.Pagination != nil { + value := protoreflect.ValueOfMessage(x.Pagination.ProtoReflect()) + if !f(fd_QueryAllVestingQueueRequest_pagination, 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_QueryAllVestingQueueRequest) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "modules.fundraising.v1.QueryAllVestingQueueRequest.auction_id": + return x.AuctionId != uint64(0) + case "modules.fundraising.v1.QueryAllVestingQueueRequest.pagination": + return x.Pagination != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryAllVestingQueueRequest")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryAllVestingQueueRequest 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_QueryAllVestingQueueRequest) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "modules.fundraising.v1.QueryAllVestingQueueRequest.auction_id": + x.AuctionId = uint64(0) + case "modules.fundraising.v1.QueryAllVestingQueueRequest.pagination": + x.Pagination = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryAllVestingQueueRequest")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryAllVestingQueueRequest 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_QueryAllVestingQueueRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "modules.fundraising.v1.QueryAllVestingQueueRequest.auction_id": + value := x.AuctionId + return protoreflect.ValueOfUint64(value) + case "modules.fundraising.v1.QueryAllVestingQueueRequest.pagination": + value := x.Pagination + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryAllVestingQueueRequest")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryAllVestingQueueRequest 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_QueryAllVestingQueueRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "modules.fundraising.v1.QueryAllVestingQueueRequest.auction_id": + x.AuctionId = value.Uint() + case "modules.fundraising.v1.QueryAllVestingQueueRequest.pagination": + x.Pagination = value.Message().Interface().(*v1beta1.PageRequest) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryAllVestingQueueRequest")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryAllVestingQueueRequest 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_QueryAllVestingQueueRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.QueryAllVestingQueueRequest.pagination": + if x.Pagination == nil { + x.Pagination = new(v1beta1.PageRequest) + } + return protoreflect.ValueOfMessage(x.Pagination.ProtoReflect()) + case "modules.fundraising.v1.QueryAllVestingQueueRequest.auction_id": + panic(fmt.Errorf("field auction_id of message modules.fundraising.v1.QueryAllVestingQueueRequest is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryAllVestingQueueRequest")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryAllVestingQueueRequest 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_QueryAllVestingQueueRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.QueryAllVestingQueueRequest.auction_id": + return protoreflect.ValueOfUint64(uint64(0)) + case "modules.fundraising.v1.QueryAllVestingQueueRequest.pagination": + m := new(v1beta1.PageRequest) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryAllVestingQueueRequest")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryAllVestingQueueRequest 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_QueryAllVestingQueueRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in modules.fundraising.v1.QueryAllVestingQueueRequest", 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_QueryAllVestingQueueRequest) 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_QueryAllVestingQueueRequest) 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_QueryAllVestingQueueRequest) 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_QueryAllVestingQueueRequest) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryAllVestingQueueRequest) + 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.AuctionId != 0 { + n += 1 + runtime.Sov(uint64(x.AuctionId)) + } + if x.Pagination != nil { + l = options.Size(x.Pagination) + 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().(*QueryAllVestingQueueRequest) + 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 x.Pagination != nil { + encoded, err := options.Marshal(x.Pagination) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x12 + } + if x.AuctionId != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.AuctionId)) + i-- + dAtA[i] = 0x8 + } + 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().(*QueryAllVestingQueueRequest) + 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: QueryAllVestingQueueRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryAllVestingQueueRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field AuctionId", wireType) + } + x.AuctionId = 0 + 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++ + x.AuctionId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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 + } + if x.Pagination == nil { + x.Pagination = &v1beta1.PageRequest{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Pagination); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + 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 _ protoreflect.List = (*_QueryAllVestingQueueResponse_1_list)(nil) + +type _QueryAllVestingQueueResponse_1_list struct { + list *[]*VestingQueue +} + +func (x *_QueryAllVestingQueueResponse_1_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_QueryAllVestingQueueResponse_1_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) +} + +func (x *_QueryAllVestingQueueResponse_1_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*VestingQueue) + (*x.list)[i] = concreteValue +} + +func (x *_QueryAllVestingQueueResponse_1_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*VestingQueue) + *x.list = append(*x.list, concreteValue) +} + +func (x *_QueryAllVestingQueueResponse_1_list) AppendMutable() protoreflect.Value { + v := new(VestingQueue) + *x.list = append(*x.list, v) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_QueryAllVestingQueueResponse_1_list) Truncate(n int) { + for i := n; i < len(*x.list); i++ { + (*x.list)[i] = nil + } + *x.list = (*x.list)[:n] +} + +func (x *_QueryAllVestingQueueResponse_1_list) NewElement() protoreflect.Value { + v := new(VestingQueue) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_QueryAllVestingQueueResponse_1_list) IsValid() bool { + return x.list != nil +} + +var ( + md_QueryAllVestingQueueResponse protoreflect.MessageDescriptor + fd_QueryAllVestingQueueResponse_vestingQueue protoreflect.FieldDescriptor + fd_QueryAllVestingQueueResponse_pagination protoreflect.FieldDescriptor +) + +func init() { + file_modules_fundraising_v1_query_proto_init() + md_QueryAllVestingQueueResponse = File_modules_fundraising_v1_query_proto.Messages().ByName("QueryAllVestingQueueResponse") + fd_QueryAllVestingQueueResponse_vestingQueue = md_QueryAllVestingQueueResponse.Fields().ByName("vestingQueue") + fd_QueryAllVestingQueueResponse_pagination = md_QueryAllVestingQueueResponse.Fields().ByName("pagination") +} + +var _ protoreflect.Message = (*fastReflection_QueryAllVestingQueueResponse)(nil) + +type fastReflection_QueryAllVestingQueueResponse QueryAllVestingQueueResponse + +func (x *QueryAllVestingQueueResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryAllVestingQueueResponse)(x) +} + +func (x *QueryAllVestingQueueResponse) slowProtoReflect() protoreflect.Message { + mi := &file_modules_fundraising_v1_query_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryAllVestingQueueResponse_messageType fastReflection_QueryAllVestingQueueResponse_messageType +var _ protoreflect.MessageType = fastReflection_QueryAllVestingQueueResponse_messageType{} + +type fastReflection_QueryAllVestingQueueResponse_messageType struct{} + +func (x fastReflection_QueryAllVestingQueueResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryAllVestingQueueResponse)(nil) +} +func (x fastReflection_QueryAllVestingQueueResponse_messageType) New() protoreflect.Message { + return new(fastReflection_QueryAllVestingQueueResponse) +} +func (x fastReflection_QueryAllVestingQueueResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryAllVestingQueueResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryAllVestingQueueResponse) Descriptor() protoreflect.MessageDescriptor { + return md_QueryAllVestingQueueResponse +} + +// 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_QueryAllVestingQueueResponse) Type() protoreflect.MessageType { + return _fastReflection_QueryAllVestingQueueResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryAllVestingQueueResponse) New() protoreflect.Message { + return new(fastReflection_QueryAllVestingQueueResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryAllVestingQueueResponse) Interface() protoreflect.ProtoMessage { + return (*QueryAllVestingQueueResponse)(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_QueryAllVestingQueueResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if len(x.VestingQueue) != 0 { + value := protoreflect.ValueOfList(&_QueryAllVestingQueueResponse_1_list{list: &x.VestingQueue}) + if !f(fd_QueryAllVestingQueueResponse_vestingQueue, value) { + return + } + } + if x.Pagination != nil { + value := protoreflect.ValueOfMessage(x.Pagination.ProtoReflect()) + if !f(fd_QueryAllVestingQueueResponse_pagination, 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_QueryAllVestingQueueResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "modules.fundraising.v1.QueryAllVestingQueueResponse.vestingQueue": + return len(x.VestingQueue) != 0 + case "modules.fundraising.v1.QueryAllVestingQueueResponse.pagination": + return x.Pagination != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryAllVestingQueueResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryAllVestingQueueResponse 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_QueryAllVestingQueueResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "modules.fundraising.v1.QueryAllVestingQueueResponse.vestingQueue": + x.VestingQueue = nil + case "modules.fundraising.v1.QueryAllVestingQueueResponse.pagination": + x.Pagination = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryAllVestingQueueResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryAllVestingQueueResponse 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_QueryAllVestingQueueResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "modules.fundraising.v1.QueryAllVestingQueueResponse.vestingQueue": + if len(x.VestingQueue) == 0 { + return protoreflect.ValueOfList(&_QueryAllVestingQueueResponse_1_list{}) + } + listValue := &_QueryAllVestingQueueResponse_1_list{list: &x.VestingQueue} + return protoreflect.ValueOfList(listValue) + case "modules.fundraising.v1.QueryAllVestingQueueResponse.pagination": + value := x.Pagination + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryAllVestingQueueResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryAllVestingQueueResponse 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_QueryAllVestingQueueResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "modules.fundraising.v1.QueryAllVestingQueueResponse.vestingQueue": + lv := value.List() + clv := lv.(*_QueryAllVestingQueueResponse_1_list) + x.VestingQueue = *clv.list + case "modules.fundraising.v1.QueryAllVestingQueueResponse.pagination": + x.Pagination = value.Message().Interface().(*v1beta1.PageResponse) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryAllVestingQueueResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryAllVestingQueueResponse 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_QueryAllVestingQueueResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.QueryAllVestingQueueResponse.vestingQueue": + if x.VestingQueue == nil { + x.VestingQueue = []*VestingQueue{} + } + value := &_QueryAllVestingQueueResponse_1_list{list: &x.VestingQueue} + return protoreflect.ValueOfList(value) + case "modules.fundraising.v1.QueryAllVestingQueueResponse.pagination": + if x.Pagination == nil { + x.Pagination = new(v1beta1.PageResponse) + } + return protoreflect.ValueOfMessage(x.Pagination.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryAllVestingQueueResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryAllVestingQueueResponse 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_QueryAllVestingQueueResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.QueryAllVestingQueueResponse.vestingQueue": + list := []*VestingQueue{} + return protoreflect.ValueOfList(&_QueryAllVestingQueueResponse_1_list{list: &list}) + case "modules.fundraising.v1.QueryAllVestingQueueResponse.pagination": + m := new(v1beta1.PageResponse) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.QueryAllVestingQueueResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.QueryAllVestingQueueResponse 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_QueryAllVestingQueueResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in modules.fundraising.v1.QueryAllVestingQueueResponse", 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_QueryAllVestingQueueResponse) 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_QueryAllVestingQueueResponse) 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_QueryAllVestingQueueResponse) 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_QueryAllVestingQueueResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryAllVestingQueueResponse) + 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.VestingQueue) > 0 { + for _, e := range x.VestingQueue { + l = options.Size(e) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if x.Pagination != nil { + l = options.Size(x.Pagination) + 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().(*QueryAllVestingQueueResponse) + 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 x.Pagination != nil { + encoded, err := options.Marshal(x.Pagination) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x12 + } + if len(x.VestingQueue) > 0 { + for iNdEx := len(x.VestingQueue) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.VestingQueue[iNdEx]) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + 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().(*QueryAllVestingQueueResponse) + 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: QueryAllVestingQueueResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryAllVestingQueueResponse: 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 VestingQueue", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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.VestingQueue = append(x.VestingQueue, &VestingQueue{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.VestingQueue[len(x.VestingQueue)-1]); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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 + } + if x.Pagination == nil { + x.Pagination = &v1beta1.PageResponse{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Pagination); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: modules/fundraising/v1/query.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// QueryParamsRequest is request type for the Query/Params RPC method. +type QueryParamsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *QueryParamsRequest) Reset() { + *x = QueryParamsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_modules_fundraising_v1_query_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryParamsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryParamsRequest) ProtoMessage() {} + +// Deprecated: Use QueryParamsRequest.ProtoReflect.Descriptor instead. +func (*QueryParamsRequest) Descriptor() ([]byte, []int) { + return file_modules_fundraising_v1_query_proto_rawDescGZIP(), []int{0} +} + +// QueryParamsResponse is response type for the Query/Params RPC method. +type QueryParamsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // params holds all the parameters of this module. + Params *Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params,omitempty"` +} + +func (x *QueryParamsResponse) Reset() { + *x = QueryParamsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_modules_fundraising_v1_query_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryParamsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryParamsResponse) ProtoMessage() {} + +// Deprecated: Use QueryParamsResponse.ProtoReflect.Descriptor instead. +func (*QueryParamsResponse) Descriptor() ([]byte, []int) { + return file_modules_fundraising_v1_query_proto_rawDescGZIP(), []int{1} +} + +func (x *QueryParamsResponse) GetParams() *Params { + if x != nil { + return x.Params + } + return nil +} + +// QueryAllAuctionRequest is request type for the Query/Auctions RPC method. +type QueryAllAuctionRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` + Type_ string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` + Pagination *v1beta1.PageRequest `protobuf:"bytes,3,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (x *QueryAllAuctionRequest) Reset() { + *x = QueryAllAuctionRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_modules_fundraising_v1_query_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryAllAuctionRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryAllAuctionRequest) ProtoMessage() {} + +// Deprecated: Use QueryAllAuctionRequest.ProtoReflect.Descriptor instead. +func (*QueryAllAuctionRequest) Descriptor() ([]byte, []int) { + return file_modules_fundraising_v1_query_proto_rawDescGZIP(), []int{2} +} + +func (x *QueryAllAuctionRequest) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *QueryAllAuctionRequest) GetType_() string { + if x != nil { + return x.Type_ + } + return "" +} + +func (x *QueryAllAuctionRequest) GetPagination() *v1beta1.PageRequest { + if x != nil { + return x.Pagination + } + return nil +} + +// QueryAllAuctionResponse is response type for the Query/Auctions RPC method. +type QueryAllAuctionResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // auctions specifies the existing auctions + Auction []*anypb.Any `protobuf:"bytes,1,rep,name=auction,proto3" json:"auction,omitempty"` + // pagination defines the pagination in the response + Pagination *v1beta1.PageResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (x *QueryAllAuctionResponse) Reset() { + *x = QueryAllAuctionResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_modules_fundraising_v1_query_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryAllAuctionResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryAllAuctionResponse) ProtoMessage() {} + +// Deprecated: Use QueryAllAuctionResponse.ProtoReflect.Descriptor instead. +func (*QueryAllAuctionResponse) Descriptor() ([]byte, []int) { + return file_modules_fundraising_v1_query_proto_rawDescGZIP(), []int{3} +} + +func (x *QueryAllAuctionResponse) GetAuction() []*anypb.Any { + if x != nil { + return x.Auction + } + return nil +} + +func (x *QueryAllAuctionResponse) GetPagination() *v1beta1.PageResponse { + if x != nil { + return x.Pagination + } + return nil +} + +// QueryGetAuctionRequest is the request type for the Query/Auction RPC method. +type QueryGetAuctionRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AuctionId uint64 `protobuf:"varint,1,opt,name=auction_id,json=auctionId,proto3" json:"auction_id,omitempty"` +} + +func (x *QueryGetAuctionRequest) Reset() { + *x = QueryGetAuctionRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_modules_fundraising_v1_query_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryGetAuctionRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryGetAuctionRequest) ProtoMessage() {} + +// Deprecated: Use QueryGetAuctionRequest.ProtoReflect.Descriptor instead. +func (*QueryGetAuctionRequest) Descriptor() ([]byte, []int) { + return file_modules_fundraising_v1_query_proto_rawDescGZIP(), []int{4} +} + +func (x *QueryGetAuctionRequest) GetAuctionId() uint64 { + if x != nil { + return x.AuctionId + } + return 0 +} + +// QueryGetAuctionResponse is the response type for the Query/Auction RPC method. +type QueryGetAuctionResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Auction *anypb.Any `protobuf:"bytes,1,opt,name=auction,proto3" json:"auction,omitempty"` +} + +func (x *QueryGetAuctionResponse) Reset() { + *x = QueryGetAuctionResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_modules_fundraising_v1_query_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryGetAuctionResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryGetAuctionResponse) ProtoMessage() {} + +// Deprecated: Use QueryGetAuctionResponse.ProtoReflect.Descriptor instead. +func (*QueryGetAuctionResponse) Descriptor() ([]byte, []int) { + return file_modules_fundraising_v1_query_proto_rawDescGZIP(), []int{5} +} + +func (x *QueryGetAuctionResponse) GetAuction() *anypb.Any { + if x != nil { + return x.Auction + } + return nil +} + +// QueryAllowedBidderRequest is the request type for the Query/AllowedBidder RPC method. +type QueryAllAllowedBidderRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AuctionId uint64 `protobuf:"varint,1,opt,name=auction_id,json=auctionId,proto3" json:"auction_id,omitempty"` + Pagination *v1beta1.PageRequest `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (x *QueryAllAllowedBidderRequest) Reset() { + *x = QueryAllAllowedBidderRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_modules_fundraising_v1_query_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryAllAllowedBidderRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryAllAllowedBidderRequest) ProtoMessage() {} + +// Deprecated: Use QueryAllAllowedBidderRequest.ProtoReflect.Descriptor instead. +func (*QueryAllAllowedBidderRequest) Descriptor() ([]byte, []int) { + return file_modules_fundraising_v1_query_proto_rawDescGZIP(), []int{6} +} + +func (x *QueryAllAllowedBidderRequest) GetAuctionId() uint64 { + if x != nil { + return x.AuctionId + } + return 0 +} + +func (x *QueryAllAllowedBidderRequest) GetPagination() *v1beta1.PageRequest { + if x != nil { + return x.Pagination + } + return nil +} + +// QueryAllowedBidderResponse is the response type for the Query/AllowedBidder RPC method. +type QueryAllAllowedBidderResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AllowedBidder []*AllowedBidder `protobuf:"bytes,1,rep,name=allowed_bidder,json=allowedBidder,proto3" json:"allowed_bidder,omitempty"` + // pagination defines the pagination in the response + Pagination *v1beta1.PageResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (x *QueryAllAllowedBidderResponse) Reset() { + *x = QueryAllAllowedBidderResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_modules_fundraising_v1_query_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryAllAllowedBidderResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryAllAllowedBidderResponse) ProtoMessage() {} + +// Deprecated: Use QueryAllAllowedBidderResponse.ProtoReflect.Descriptor instead. +func (*QueryAllAllowedBidderResponse) Descriptor() ([]byte, []int) { + return file_modules_fundraising_v1_query_proto_rawDescGZIP(), []int{7} +} + +func (x *QueryAllAllowedBidderResponse) GetAllowedBidder() []*AllowedBidder { + if x != nil { + return x.AllowedBidder + } + return nil +} + +func (x *QueryAllAllowedBidderResponse) GetPagination() *v1beta1.PageResponse { + if x != nil { + return x.Pagination + } + return nil +} + +// QueryAllowedBidderRequest is the request type for the Query/AllowedBidder RPC +// method. +type QueryGetAllowedBidderRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AuctionId uint64 `protobuf:"varint,1,opt,name=auction_id,json=auctionId,proto3" json:"auction_id,omitempty"` + Bidder string `protobuf:"bytes,2,opt,name=bidder,proto3" json:"bidder,omitempty"` +} + +func (x *QueryGetAllowedBidderRequest) Reset() { + *x = QueryGetAllowedBidderRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_modules_fundraising_v1_query_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryGetAllowedBidderRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryGetAllowedBidderRequest) ProtoMessage() {} + +// Deprecated: Use QueryGetAllowedBidderRequest.ProtoReflect.Descriptor instead. +func (*QueryGetAllowedBidderRequest) Descriptor() ([]byte, []int) { + return file_modules_fundraising_v1_query_proto_rawDescGZIP(), []int{8} +} + +func (x *QueryGetAllowedBidderRequest) GetAuctionId() uint64 { + if x != nil { + return x.AuctionId + } + return 0 +} + +func (x *QueryGetAllowedBidderRequest) GetBidder() string { + if x != nil { + return x.Bidder + } + return "" +} + +// QueryAllowedBidderResponse is the response type for the Query/AllowedBidder +// RPC method. +type QueryGetAllowedBidderResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AllowedBidder *AllowedBidder `protobuf:"bytes,1,opt,name=allowed_bidder,json=allowedBidder,proto3" json:"allowed_bidder,omitempty"` +} + +func (x *QueryGetAllowedBidderResponse) Reset() { + *x = QueryGetAllowedBidderResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_modules_fundraising_v1_query_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryGetAllowedBidderResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryGetAllowedBidderResponse) ProtoMessage() {} + +// Deprecated: Use QueryGetAllowedBidderResponse.ProtoReflect.Descriptor instead. +func (*QueryGetAllowedBidderResponse) Descriptor() ([]byte, []int) { + return file_modules_fundraising_v1_query_proto_rawDescGZIP(), []int{9} +} + +func (x *QueryGetAllowedBidderResponse) GetAllowedBidder() *AllowedBidder { + if x != nil { + return x.AllowedBidder + } + return nil +} + +// QueryGetBidRequest is the request type for the Query/Sequence RPC method. +type QueryGetBidRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AuctionId uint64 `protobuf:"varint,1,opt,name=auction_id,json=auctionId,proto3" json:"auction_id,omitempty"` + BidId uint64 `protobuf:"varint,2,opt,name=bid_id,json=bidId,proto3" json:"bid_id,omitempty"` +} + +func (x *QueryGetBidRequest) Reset() { + *x = QueryGetBidRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_modules_fundraising_v1_query_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryGetBidRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryGetBidRequest) ProtoMessage() {} + +// Deprecated: Use QueryGetBidRequest.ProtoReflect.Descriptor instead. +func (*QueryGetBidRequest) Descriptor() ([]byte, []int) { + return file_modules_fundraising_v1_query_proto_rawDescGZIP(), []int{10} +} + +func (x *QueryGetBidRequest) GetAuctionId() uint64 { + if x != nil { + return x.AuctionId + } + return 0 +} + +func (x *QueryGetBidRequest) GetBidId() uint64 { + if x != nil { + return x.BidId + } + return 0 +} + +// QueryGetBidResponse is response type for the Query/Sequence RPC method. +type QueryGetBidResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // bid specifies specific bid + Bid *Bid `protobuf:"bytes,1,opt,name=bid,proto3" json:"bid,omitempty"` +} + +func (x *QueryGetBidResponse) Reset() { + *x = QueryGetBidResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_modules_fundraising_v1_query_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryGetBidResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryGetBidResponse) ProtoMessage() {} + +// Deprecated: Use QueryGetBidResponse.ProtoReflect.Descriptor instead. +func (*QueryGetBidResponse) Descriptor() ([]byte, []int) { + return file_modules_fundraising_v1_query_proto_rawDescGZIP(), []int{11} +} + +func (x *QueryGetBidResponse) GetBid() *Bid { + if x != nil { + return x.Bid + } + return nil +} + +// QueryBidsRequest is request type for the Query/Bids RPC method. +type QueryAllBidRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AuctionId uint64 `protobuf:"varint,1,opt,name=auction_id,json=auctionId,proto3" json:"auction_id,omitempty"` + Bidder string `protobuf:"bytes,2,opt,name=bidder,proto3" json:"bidder,omitempty"` + IsMatched string `protobuf:"bytes,3,opt,name=is_matched,json=isMatched,proto3" json:"is_matched,omitempty"` + Pagination *v1beta1.PageRequest `protobuf:"bytes,4,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (x *QueryAllBidRequest) Reset() { + *x = QueryAllBidRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_modules_fundraising_v1_query_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryAllBidRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryAllBidRequest) ProtoMessage() {} + +// Deprecated: Use QueryAllBidRequest.ProtoReflect.Descriptor instead. +func (*QueryAllBidRequest) Descriptor() ([]byte, []int) { + return file_modules_fundraising_v1_query_proto_rawDescGZIP(), []int{12} +} + +func (x *QueryAllBidRequest) GetAuctionId() uint64 { + if x != nil { + return x.AuctionId + } + return 0 +} + +func (x *QueryAllBidRequest) GetBidder() string { + if x != nil { + return x.Bidder + } + return "" +} + +func (x *QueryAllBidRequest) GetIsMatched() string { + if x != nil { + return x.IsMatched + } + return "" +} + +func (x *QueryAllBidRequest) GetPagination() *v1beta1.PageRequest { + if x != nil { + return x.Pagination + } + return nil +} + +// QueryBidsResponse is response type for the Query/Bids RPC method. +type QueryAllBidResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // bids specifies the existing bids + Bid []*Bid `protobuf:"bytes,1,rep,name=bid,proto3" json:"bid,omitempty"` + // pagination defines the pagination in the response + Pagination *v1beta1.PageResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (x *QueryAllBidResponse) Reset() { + *x = QueryAllBidResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_modules_fundraising_v1_query_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryAllBidResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryAllBidResponse) ProtoMessage() {} + +// Deprecated: Use QueryAllBidResponse.ProtoReflect.Descriptor instead. +func (*QueryAllBidResponse) Descriptor() ([]byte, []int) { + return file_modules_fundraising_v1_query_proto_rawDescGZIP(), []int{13} +} + +func (x *QueryAllBidResponse) GetBid() []*Bid { + if x != nil { + return x.Bid + } + return nil +} + +func (x *QueryAllBidResponse) GetPagination() *v1beta1.PageResponse { + if x != nil { + return x.Pagination + } + return nil +} + +// QueryAllVestingQueueRequest is request type for the Query/Vestings RPC method. +type QueryAllVestingQueueRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AuctionId uint64 `protobuf:"varint,1,opt,name=auction_id,json=auctionId,proto3" json:"auction_id,omitempty"` + Pagination *v1beta1.PageRequest `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (x *QueryAllVestingQueueRequest) Reset() { + *x = QueryAllVestingQueueRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_modules_fundraising_v1_query_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryAllVestingQueueRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryAllVestingQueueRequest) ProtoMessage() {} + +// Deprecated: Use QueryAllVestingQueueRequest.ProtoReflect.Descriptor instead. +func (*QueryAllVestingQueueRequest) Descriptor() ([]byte, []int) { + return file_modules_fundraising_v1_query_proto_rawDescGZIP(), []int{14} +} + +func (x *QueryAllVestingQueueRequest) GetAuctionId() uint64 { + if x != nil { + return x.AuctionId + } + return 0 +} + +func (x *QueryAllVestingQueueRequest) GetPagination() *v1beta1.PageRequest { + if x != nil { + return x.Pagination + } + return nil +} + +// QueryAllVestingQueueResponse is response type for the Query/Vestings RPC method. +type QueryAllVestingQueueResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // vestings specifies the existing vestings + VestingQueue []*VestingQueue `protobuf:"bytes,1,rep,name=vestingQueue,proto3" json:"vestingQueue,omitempty"` + Pagination *v1beta1.PageResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (x *QueryAllVestingQueueResponse) Reset() { + *x = QueryAllVestingQueueResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_modules_fundraising_v1_query_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryAllVestingQueueResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryAllVestingQueueResponse) ProtoMessage() {} + +// Deprecated: Use QueryAllVestingQueueResponse.ProtoReflect.Descriptor instead. +func (*QueryAllVestingQueueResponse) Descriptor() ([]byte, []int) { + return file_modules_fundraising_v1_query_proto_rawDescGZIP(), []int{15} +} + +func (x *QueryAllVestingQueueResponse) GetVestingQueue() []*VestingQueue { + if x != nil { + return x.VestingQueue + } + return nil +} + +func (x *QueryAllVestingQueueResponse) GetPagination() *v1beta1.PageResponse { + if x != nil { + return x.Pagination + } + return nil +} + +var File_modules_fundraising_v1_query_proto protoreflect.FileDescriptor + +var file_modules_fundraising_v1_query_proto_rawDesc = []byte{ + 0x0a, 0x22, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, + 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, + 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x1a, 0x11, 0x61, 0x6d, + 0x69, 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x2a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x70, 0x61, 0x67, 0x69, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 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, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2b, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x66, + 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x6c, + 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x62, 0x69, 0x64, 0x64, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x24, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x66, 0x75, 0x6e, 0x64, + 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x75, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, + 0x73, 0x2f, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, + 0x2f, 0x62, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6d, 0x6f, 0x64, 0x75, + 0x6c, 0x65, 0x73, 0x2f, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2f, + 0x76, 0x31, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x2a, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, + 0x73, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x76, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, + 0x71, 0x75, 0x65, 0x75, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x14, 0x0a, 0x12, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x22, 0x58, 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, + 0x65, 0x73, 0x2e, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x76, + 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, + 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x8c, 0x01, 0x0a, 0x16, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x6c, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, + 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x12, 0x46, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, + 0x62, 0x61, 0x73, 0x65, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, + 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa0, 0x01, 0x0a, 0x17, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x6c, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x07, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x42, 0x0c, 0xca, + 0xb4, 0x2d, 0x08, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x52, 0x07, 0x61, 0x75, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x47, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x37, 0x0a, + 0x16, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x65, 0x74, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x75, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x61, 0x75, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x57, 0x0a, 0x17, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, + 0x65, 0x74, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x3c, 0x0a, 0x07, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x42, 0x0c, 0xca, 0xb4, 0x2d, 0x08, 0x41, 0x75, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x52, 0x07, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, + 0x85, 0x01, 0x0a, 0x1c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x6c, 0x41, 0x6c, 0x6c, 0x6f, + 0x77, 0x65, 0x64, 0x42, 0x69, 0x64, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, + 0x46, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, + 0x65, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, + 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x70, 0x61, 0x67, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xbc, 0x01, 0x0a, 0x1d, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x41, 0x6c, 0x6c, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x42, 0x69, 0x64, 0x64, 0x65, + 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52, 0x0a, 0x0e, 0x61, 0x6c, 0x6c, + 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x62, 0x69, 0x64, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x25, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, 0x6e, 0x64, + 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x77, + 0x65, 0x64, 0x42, 0x69, 0x64, 0x64, 0x65, 0x72, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x0d, + 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x42, 0x69, 0x64, 0x64, 0x65, 0x72, 0x12, 0x47, 0x0a, + 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, + 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, + 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x55, 0x0a, 0x1c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, + 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x42, 0x69, 0x64, 0x64, 0x65, 0x72, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x61, 0x75, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x69, 0x64, 0x64, 0x65, 0x72, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x69, 0x64, 0x64, 0x65, 0x72, 0x22, 0x73, 0x0a, + 0x1d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, + 0x42, 0x69, 0x64, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52, + 0x0a, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x62, 0x69, 0x64, 0x64, 0x65, 0x72, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, + 0x2e, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, + 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x42, 0x69, 0x64, 0x64, 0x65, 0x72, 0x42, 0x04, 0xc8, + 0xde, 0x1f, 0x00, 0x52, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x42, 0x69, 0x64, 0x64, + 0x65, 0x72, 0x22, 0x4a, 0x0a, 0x12, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x65, 0x74, 0x42, 0x69, + 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x75, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x61, 0x75, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x64, 0x5f, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x62, 0x69, 0x64, 0x49, 0x64, 0x22, 0x4a, + 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x65, 0x74, 0x42, 0x69, 0x64, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x03, 0x62, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, 0x6e, + 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x64, 0x42, + 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x03, 0x62, 0x69, 0x64, 0x22, 0xb2, 0x01, 0x0a, 0x12, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x6c, 0x42, 0x69, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x12, 0x16, 0x0a, 0x06, 0x62, 0x69, 0x64, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x62, 0x69, 0x64, 0x64, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x6d, + 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x73, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x12, 0x46, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, + 0x93, 0x01, 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x6c, 0x42, 0x69, 0x64, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x03, 0x62, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, + 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, + 0x64, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x03, 0x62, 0x69, 0x64, 0x12, 0x47, 0x0a, 0x0a, + 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x27, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x67, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x84, 0x01, 0x0a, 0x1b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, + 0x6c, 0x6c, 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x75, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x61, 0x75, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x46, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb7, 0x01, 0x0a, + 0x1c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x6c, 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, + 0x51, 0x75, 0x65, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, + 0x0c, 0x76, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x75, 0x65, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, + 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x73, + 0x74, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x75, 0x65, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, + 0x0c, 0x76, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x75, 0x65, 0x12, 0x47, 0x0a, + 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, + 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, + 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0x93, 0x0b, 0x0a, 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x12, 0x90, 0x01, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2a, 0x2e, 0x6d, 0x6f, + 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, + 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, + 0x73, 0x2e, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, + 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x12, 0x25, 0x2f, 0x69, + 0x67, 0x6e, 0x69, 0x74, 0x65, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x66, 0x75, + 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x12, 0x9b, 0x01, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x75, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, + 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x41, 0x6c, 0x6c, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, + 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x41, 0x6c, 0x6c, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x12, 0x23, 0x2f, 0x69, + 0x67, 0x6e, 0x69, 0x74, 0x65, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x66, 0x75, + 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2f, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0xa7, 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x2e, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, 0x6e, 0x64, 0x72, + 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, + 0x65, 0x74, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x2f, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, 0x6e, 0x64, 0x72, + 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, + 0x65, 0x74, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x38, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x12, 0x30, 0x2f, 0x69, 0x67, 0x6e, 0x69, + 0x74, 0x65, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x66, 0x75, 0x6e, 0x64, 0x72, + 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2f, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x7b, + 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xc9, 0x01, 0x0a, 0x11, + 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x42, 0x69, 0x64, 0x64, 0x65, + 0x72, 0x12, 0x34, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, 0x6e, 0x64, + 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x41, 0x6c, 0x6c, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x42, 0x69, 0x64, 0x64, 0x65, 0x72, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, + 0x73, 0x2e, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, + 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x6c, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, + 0x42, 0x69, 0x64, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x47, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x12, 0x3f, 0x2f, 0x69, 0x67, 0x6e, 0x69, 0x74, 0x65, 0x2f, + 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, + 0x69, 0x6e, 0x67, 0x2f, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x7b, 0x61, 0x75, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, + 0x5f, 0x62, 0x69, 0x64, 0x64, 0x65, 0x72, 0x12, 0xd1, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x41, + 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x42, 0x69, 0x64, 0x64, 0x65, 0x72, 0x12, 0x34, 0x2e, 0x6d, + 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, + 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x65, 0x74, 0x41, 0x6c, + 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x42, 0x69, 0x64, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, 0x6e, + 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x42, 0x69, 0x64, 0x64, 0x65, + 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x50, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x4a, 0x12, 0x48, 0x2f, 0x69, 0x67, 0x6e, 0x69, 0x74, 0x65, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, + 0x65, 0x73, 0x2f, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2f, 0x61, + 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x7b, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x62, 0x69, 0x64, 0x64, + 0x65, 0x72, 0x2f, 0x7b, 0x62, 0x69, 0x64, 0x64, 0x65, 0x72, 0x7d, 0x12, 0xa0, 0x01, 0x0a, 0x07, + 0x4c, 0x69, 0x73, 0x74, 0x42, 0x69, 0x64, 0x12, 0x2a, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, + 0x73, 0x2e, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, + 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x6c, 0x42, 0x69, 0x64, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, + 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x41, 0x6c, 0x6c, 0x42, 0x69, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x12, 0x34, 0x2f, 0x69, 0x67, 0x6e, 0x69, 0x74, + 0x65, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, + 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2f, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x7b, 0x61, + 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x62, 0x69, 0x64, 0x12, 0xa8, + 0x01, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x42, 0x69, 0x64, 0x12, 0x2a, 0x2e, 0x6d, 0x6f, 0x64, 0x75, + 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, + 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x65, 0x74, 0x42, 0x69, 0x64, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, + 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x47, 0x65, 0x74, 0x42, 0x69, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x45, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x12, 0x3d, 0x2f, 0x69, 0x67, 0x6e, + 0x69, 0x74, 0x65, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x66, 0x75, 0x6e, 0x64, + 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2f, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2f, + 0x7b, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x62, 0x69, 0x64, + 0x2f, 0x7b, 0x62, 0x69, 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xc0, 0x01, 0x0a, 0x10, 0x4c, 0x69, + 0x73, 0x74, 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x75, 0x65, 0x12, 0x33, + 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, + 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x6c, + 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, + 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x41, 0x6c, 0x6c, 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x75, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x41, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x3b, 0x12, 0x39, 0x2f, 0x69, 0x67, 0x6e, 0x69, 0x74, 0x65, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, + 0x65, 0x73, 0x2f, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2f, 0x61, + 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x7b, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x76, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0xd9, 0x01, 0x0a, + 0x1a, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, 0x6e, + 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x42, 0x0a, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x35, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x6f, 0x64, 0x75, + 0x6c, 0x65, 0x73, 0x2f, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2f, + 0x76, 0x31, 0x3b, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x76, 0x31, + 0xa2, 0x02, 0x03, 0x4d, 0x46, 0x58, 0xaa, 0x02, 0x16, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, + 0x2e, 0x46, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x31, 0xca, + 0x02, 0x16, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x5c, 0x46, 0x75, 0x6e, 0x64, 0x72, 0x61, + 0x69, 0x73, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x22, 0x4d, 0x6f, 0x64, 0x75, 0x6c, + 0x65, 0x73, 0x5c, 0x46, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x5c, 0x56, + 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x18, + 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x3a, 0x3a, 0x46, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, + 0x73, 0x69, 0x6e, 0x67, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_modules_fundraising_v1_query_proto_rawDescOnce sync.Once + file_modules_fundraising_v1_query_proto_rawDescData = file_modules_fundraising_v1_query_proto_rawDesc +) + +func file_modules_fundraising_v1_query_proto_rawDescGZIP() []byte { + file_modules_fundraising_v1_query_proto_rawDescOnce.Do(func() { + file_modules_fundraising_v1_query_proto_rawDescData = protoimpl.X.CompressGZIP(file_modules_fundraising_v1_query_proto_rawDescData) + }) + return file_modules_fundraising_v1_query_proto_rawDescData +} + +var file_modules_fundraising_v1_query_proto_msgTypes = make([]protoimpl.MessageInfo, 16) +var file_modules_fundraising_v1_query_proto_goTypes = []interface{}{ + (*QueryParamsRequest)(nil), // 0: modules.fundraising.v1.QueryParamsRequest + (*QueryParamsResponse)(nil), // 1: modules.fundraising.v1.QueryParamsResponse + (*QueryAllAuctionRequest)(nil), // 2: modules.fundraising.v1.QueryAllAuctionRequest + (*QueryAllAuctionResponse)(nil), // 3: modules.fundraising.v1.QueryAllAuctionResponse + (*QueryGetAuctionRequest)(nil), // 4: modules.fundraising.v1.QueryGetAuctionRequest + (*QueryGetAuctionResponse)(nil), // 5: modules.fundraising.v1.QueryGetAuctionResponse + (*QueryAllAllowedBidderRequest)(nil), // 6: modules.fundraising.v1.QueryAllAllowedBidderRequest + (*QueryAllAllowedBidderResponse)(nil), // 7: modules.fundraising.v1.QueryAllAllowedBidderResponse + (*QueryGetAllowedBidderRequest)(nil), // 8: modules.fundraising.v1.QueryGetAllowedBidderRequest + (*QueryGetAllowedBidderResponse)(nil), // 9: modules.fundraising.v1.QueryGetAllowedBidderResponse + (*QueryGetBidRequest)(nil), // 10: modules.fundraising.v1.QueryGetBidRequest + (*QueryGetBidResponse)(nil), // 11: modules.fundraising.v1.QueryGetBidResponse + (*QueryAllBidRequest)(nil), // 12: modules.fundraising.v1.QueryAllBidRequest + (*QueryAllBidResponse)(nil), // 13: modules.fundraising.v1.QueryAllBidResponse + (*QueryAllVestingQueueRequest)(nil), // 14: modules.fundraising.v1.QueryAllVestingQueueRequest + (*QueryAllVestingQueueResponse)(nil), // 15: modules.fundraising.v1.QueryAllVestingQueueResponse + (*Params)(nil), // 16: modules.fundraising.v1.Params + (*v1beta1.PageRequest)(nil), // 17: cosmos.base.query.v1beta1.PageRequest + (*anypb.Any)(nil), // 18: google.protobuf.Any + (*v1beta1.PageResponse)(nil), // 19: cosmos.base.query.v1beta1.PageResponse + (*AllowedBidder)(nil), // 20: modules.fundraising.v1.AllowedBidder + (*Bid)(nil), // 21: modules.fundraising.v1.Bid + (*VestingQueue)(nil), // 22: modules.fundraising.v1.VestingQueue +} +var file_modules_fundraising_v1_query_proto_depIdxs = []int32{ + 16, // 0: modules.fundraising.v1.QueryParamsResponse.params:type_name -> modules.fundraising.v1.Params + 17, // 1: modules.fundraising.v1.QueryAllAuctionRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest + 18, // 2: modules.fundraising.v1.QueryAllAuctionResponse.auction:type_name -> google.protobuf.Any + 19, // 3: modules.fundraising.v1.QueryAllAuctionResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse + 18, // 4: modules.fundraising.v1.QueryGetAuctionResponse.auction:type_name -> google.protobuf.Any + 17, // 5: modules.fundraising.v1.QueryAllAllowedBidderRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest + 20, // 6: modules.fundraising.v1.QueryAllAllowedBidderResponse.allowed_bidder:type_name -> modules.fundraising.v1.AllowedBidder + 19, // 7: modules.fundraising.v1.QueryAllAllowedBidderResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse + 20, // 8: modules.fundraising.v1.QueryGetAllowedBidderResponse.allowed_bidder:type_name -> modules.fundraising.v1.AllowedBidder + 21, // 9: modules.fundraising.v1.QueryGetBidResponse.bid:type_name -> modules.fundraising.v1.Bid + 17, // 10: modules.fundraising.v1.QueryAllBidRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest + 21, // 11: modules.fundraising.v1.QueryAllBidResponse.bid:type_name -> modules.fundraising.v1.Bid + 19, // 12: modules.fundraising.v1.QueryAllBidResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse + 17, // 13: modules.fundraising.v1.QueryAllVestingQueueRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest + 22, // 14: modules.fundraising.v1.QueryAllVestingQueueResponse.vestingQueue:type_name -> modules.fundraising.v1.VestingQueue + 19, // 15: modules.fundraising.v1.QueryAllVestingQueueResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse + 0, // 16: modules.fundraising.v1.Query.Params:input_type -> modules.fundraising.v1.QueryParamsRequest + 2, // 17: modules.fundraising.v1.Query.ListAuction:input_type -> modules.fundraising.v1.QueryAllAuctionRequest + 4, // 18: modules.fundraising.v1.Query.GetAuction:input_type -> modules.fundraising.v1.QueryGetAuctionRequest + 6, // 19: modules.fundraising.v1.Query.ListAllowedBidder:input_type -> modules.fundraising.v1.QueryAllAllowedBidderRequest + 8, // 20: modules.fundraising.v1.Query.GetAllowedBidder:input_type -> modules.fundraising.v1.QueryGetAllowedBidderRequest + 12, // 21: modules.fundraising.v1.Query.ListBid:input_type -> modules.fundraising.v1.QueryAllBidRequest + 10, // 22: modules.fundraising.v1.Query.GetBid:input_type -> modules.fundraising.v1.QueryGetBidRequest + 14, // 23: modules.fundraising.v1.Query.ListVestingQueue:input_type -> modules.fundraising.v1.QueryAllVestingQueueRequest + 1, // 24: modules.fundraising.v1.Query.Params:output_type -> modules.fundraising.v1.QueryParamsResponse + 3, // 25: modules.fundraising.v1.Query.ListAuction:output_type -> modules.fundraising.v1.QueryAllAuctionResponse + 5, // 26: modules.fundraising.v1.Query.GetAuction:output_type -> modules.fundraising.v1.QueryGetAuctionResponse + 7, // 27: modules.fundraising.v1.Query.ListAllowedBidder:output_type -> modules.fundraising.v1.QueryAllAllowedBidderResponse + 9, // 28: modules.fundraising.v1.Query.GetAllowedBidder:output_type -> modules.fundraising.v1.QueryGetAllowedBidderResponse + 13, // 29: modules.fundraising.v1.Query.ListBid:output_type -> modules.fundraising.v1.QueryAllBidResponse + 11, // 30: modules.fundraising.v1.Query.GetBid:output_type -> modules.fundraising.v1.QueryGetBidResponse + 15, // 31: modules.fundraising.v1.Query.ListVestingQueue:output_type -> modules.fundraising.v1.QueryAllVestingQueueResponse + 24, // [24:32] is the sub-list for method output_type + 16, // [16:24] is the sub-list for method input_type + 16, // [16:16] is the sub-list for extension type_name + 16, // [16:16] is the sub-list for extension extendee + 0, // [0:16] is the sub-list for field type_name +} + +func init() { file_modules_fundraising_v1_query_proto_init() } +func file_modules_fundraising_v1_query_proto_init() { + if File_modules_fundraising_v1_query_proto != nil { + return + } + file_modules_fundraising_v1_allowed_bidder_proto_init() + file_modules_fundraising_v1_auction_proto_init() + file_modules_fundraising_v1_bid_proto_init() + file_modules_fundraising_v1_params_proto_init() + file_modules_fundraising_v1_vesting_queue_proto_init() + if !protoimpl.UnsafeEnabled { + file_modules_fundraising_v1_query_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryParamsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_modules_fundraising_v1_query_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryParamsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_modules_fundraising_v1_query_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryAllAuctionRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_modules_fundraising_v1_query_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryAllAuctionResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_modules_fundraising_v1_query_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryGetAuctionRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_modules_fundraising_v1_query_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryGetAuctionResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_modules_fundraising_v1_query_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryAllAllowedBidderRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_modules_fundraising_v1_query_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryAllAllowedBidderResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_modules_fundraising_v1_query_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryGetAllowedBidderRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_modules_fundraising_v1_query_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryGetAllowedBidderResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_modules_fundraising_v1_query_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryGetBidRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_modules_fundraising_v1_query_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryGetBidResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_modules_fundraising_v1_query_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryAllBidRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_modules_fundraising_v1_query_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryAllBidResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_modules_fundraising_v1_query_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryAllVestingQueueRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_modules_fundraising_v1_query_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryAllVestingQueueResponse); 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{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_modules_fundraising_v1_query_proto_rawDesc, + NumEnums: 0, + NumMessages: 16, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_modules_fundraising_v1_query_proto_goTypes, + DependencyIndexes: file_modules_fundraising_v1_query_proto_depIdxs, + MessageInfos: file_modules_fundraising_v1_query_proto_msgTypes, + }.Build() + File_modules_fundraising_v1_query_proto = out.File + file_modules_fundraising_v1_query_proto_rawDesc = nil + file_modules_fundraising_v1_query_proto_goTypes = nil + file_modules_fundraising_v1_query_proto_depIdxs = nil +} diff --git a/api/modules/fundraising/v1/query_grpc.pb.go b/api/modules/fundraising/v1/query_grpc.pb.go new file mode 100644 index 0000000..877ce95 --- /dev/null +++ b/api/modules/fundraising/v1/query_grpc.pb.go @@ -0,0 +1,378 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.3.0 +// - protoc (unknown) +// source: modules/fundraising/v1/query.proto + +package fundraisingv1 + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +const ( + Query_Params_FullMethodName = "/modules.fundraising.v1.Query/Params" + Query_ListAuction_FullMethodName = "/modules.fundraising.v1.Query/ListAuction" + Query_GetAuction_FullMethodName = "/modules.fundraising.v1.Query/GetAuction" + Query_ListAllowedBidder_FullMethodName = "/modules.fundraising.v1.Query/ListAllowedBidder" + Query_GetAllowedBidder_FullMethodName = "/modules.fundraising.v1.Query/GetAllowedBidder" + Query_ListBid_FullMethodName = "/modules.fundraising.v1.Query/ListBid" + Query_GetBid_FullMethodName = "/modules.fundraising.v1.Query/GetBid" + Query_ListVestingQueue_FullMethodName = "/modules.fundraising.v1.Query/ListVestingQueue" +) + +// QueryClient is the client API for Query service. +// +// 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 { + // Parameters queries the parameters of the module. + Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) + // Queries a list of Auction items. + ListAuction(ctx context.Context, in *QueryAllAuctionRequest, opts ...grpc.CallOption) (*QueryAllAuctionResponse, error) + GetAuction(ctx context.Context, in *QueryGetAuctionRequest, opts ...grpc.CallOption) (*QueryGetAuctionResponse, error) + // Queries a list of AllowedBidder items. + ListAllowedBidder(ctx context.Context, in *QueryAllAllowedBidderRequest, opts ...grpc.CallOption) (*QueryAllAllowedBidderResponse, error) + GetAllowedBidder(ctx context.Context, in *QueryGetAllowedBidderRequest, opts ...grpc.CallOption) (*QueryGetAllowedBidderResponse, error) + // Queries a list of Bid items. + ListBid(ctx context.Context, in *QueryAllBidRequest, opts ...grpc.CallOption) (*QueryAllBidResponse, error) + GetBid(ctx context.Context, in *QueryGetBidRequest, opts ...grpc.CallOption) (*QueryGetBidResponse, error) + // Queries a list of VestingQueue items. + ListVestingQueue(ctx context.Context, in *QueryAllVestingQueueRequest, opts ...grpc.CallOption) (*QueryAllVestingQueueResponse, error) +} + +type queryClient struct { + cc grpc.ClientConnInterface +} + +func NewQueryClient(cc grpc.ClientConnInterface) QueryClient { + return &queryClient{cc} +} + +func (c *queryClient) Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) { + out := new(QueryParamsResponse) + err := c.cc.Invoke(ctx, Query_Params_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) ListAuction(ctx context.Context, in *QueryAllAuctionRequest, opts ...grpc.CallOption) (*QueryAllAuctionResponse, error) { + out := new(QueryAllAuctionResponse) + err := c.cc.Invoke(ctx, Query_ListAuction_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) GetAuction(ctx context.Context, in *QueryGetAuctionRequest, opts ...grpc.CallOption) (*QueryGetAuctionResponse, error) { + out := new(QueryGetAuctionResponse) + err := c.cc.Invoke(ctx, Query_GetAuction_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) ListAllowedBidder(ctx context.Context, in *QueryAllAllowedBidderRequest, opts ...grpc.CallOption) (*QueryAllAllowedBidderResponse, error) { + out := new(QueryAllAllowedBidderResponse) + err := c.cc.Invoke(ctx, Query_ListAllowedBidder_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) GetAllowedBidder(ctx context.Context, in *QueryGetAllowedBidderRequest, opts ...grpc.CallOption) (*QueryGetAllowedBidderResponse, error) { + out := new(QueryGetAllowedBidderResponse) + err := c.cc.Invoke(ctx, Query_GetAllowedBidder_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) ListBid(ctx context.Context, in *QueryAllBidRequest, opts ...grpc.CallOption) (*QueryAllBidResponse, error) { + out := new(QueryAllBidResponse) + err := c.cc.Invoke(ctx, Query_ListBid_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) GetBid(ctx context.Context, in *QueryGetBidRequest, opts ...grpc.CallOption) (*QueryGetBidResponse, error) { + out := new(QueryGetBidResponse) + err := c.cc.Invoke(ctx, Query_GetBid_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) ListVestingQueue(ctx context.Context, in *QueryAllVestingQueueRequest, opts ...grpc.CallOption) (*QueryAllVestingQueueResponse, error) { + out := new(QueryAllVestingQueueResponse) + err := c.cc.Invoke(ctx, Query_ListVestingQueue_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// QueryServer is the server API for Query service. +// All implementations must embed UnimplementedQueryServer +// for forward compatibility +type QueryServer interface { + // Parameters queries the parameters of the module. + Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error) + // Queries a list of Auction items. + ListAuction(context.Context, *QueryAllAuctionRequest) (*QueryAllAuctionResponse, error) + GetAuction(context.Context, *QueryGetAuctionRequest) (*QueryGetAuctionResponse, error) + // Queries a list of AllowedBidder items. + ListAllowedBidder(context.Context, *QueryAllAllowedBidderRequest) (*QueryAllAllowedBidderResponse, error) + GetAllowedBidder(context.Context, *QueryGetAllowedBidderRequest) (*QueryGetAllowedBidderResponse, error) + // Queries a list of Bid items. + ListBid(context.Context, *QueryAllBidRequest) (*QueryAllBidResponse, error) + GetBid(context.Context, *QueryGetBidRequest) (*QueryGetBidResponse, error) + // Queries a list of VestingQueue items. + ListVestingQueue(context.Context, *QueryAllVestingQueueRequest) (*QueryAllVestingQueueResponse, error) + mustEmbedUnimplementedQueryServer() +} + +// UnimplementedQueryServer must be embedded to have forward compatible implementations. +type UnimplementedQueryServer struct { +} + +func (UnimplementedQueryServer) Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Params not implemented") +} +func (UnimplementedQueryServer) ListAuction(context.Context, *QueryAllAuctionRequest) (*QueryAllAuctionResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListAuction not implemented") +} +func (UnimplementedQueryServer) GetAuction(context.Context, *QueryGetAuctionRequest) (*QueryGetAuctionResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetAuction not implemented") +} +func (UnimplementedQueryServer) ListAllowedBidder(context.Context, *QueryAllAllowedBidderRequest) (*QueryAllAllowedBidderResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListAllowedBidder not implemented") +} +func (UnimplementedQueryServer) GetAllowedBidder(context.Context, *QueryGetAllowedBidderRequest) (*QueryGetAllowedBidderResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetAllowedBidder not implemented") +} +func (UnimplementedQueryServer) ListBid(context.Context, *QueryAllBidRequest) (*QueryAllBidResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListBid not implemented") +} +func (UnimplementedQueryServer) GetBid(context.Context, *QueryGetBidRequest) (*QueryGetBidResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetBid not implemented") +} +func (UnimplementedQueryServer) ListVestingQueue(context.Context, *QueryAllVestingQueueRequest) (*QueryAllVestingQueueResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListVestingQueue not implemented") +} +func (UnimplementedQueryServer) mustEmbedUnimplementedQueryServer() {} + +// UnsafeQueryServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to QueryServer will +// result in compilation errors. +type UnsafeQueryServer interface { + mustEmbedUnimplementedQueryServer() +} + +func RegisterQueryServer(s grpc.ServiceRegistrar, srv QueryServer) { + s.RegisterService(&Query_ServiceDesc, srv) +} + +func _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryParamsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).Params(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Query_Params_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Params(ctx, req.(*QueryParamsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_ListAuction_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryAllAuctionRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).ListAuction(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Query_ListAuction_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).ListAuction(ctx, req.(*QueryAllAuctionRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_GetAuction_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryGetAuctionRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).GetAuction(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Query_GetAuction_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).GetAuction(ctx, req.(*QueryGetAuctionRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_ListAllowedBidder_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryAllAllowedBidderRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).ListAllowedBidder(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Query_ListAllowedBidder_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).ListAllowedBidder(ctx, req.(*QueryAllAllowedBidderRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_GetAllowedBidder_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryGetAllowedBidderRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).GetAllowedBidder(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Query_GetAllowedBidder_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).GetAllowedBidder(ctx, req.(*QueryGetAllowedBidderRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_ListBid_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryAllBidRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).ListBid(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Query_ListBid_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).ListBid(ctx, req.(*QueryAllBidRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_GetBid_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryGetBidRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).GetBid(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Query_GetBid_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).GetBid(ctx, req.(*QueryGetBidRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_ListVestingQueue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryAllVestingQueueRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).ListVestingQueue(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Query_ListVestingQueue_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).ListVestingQueue(ctx, req.(*QueryAllVestingQueueRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// Query_ServiceDesc is the grpc.ServiceDesc for Query service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Query_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "modules.fundraising.v1.Query", + HandlerType: (*QueryServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Params", + Handler: _Query_Params_Handler, + }, + { + MethodName: "ListAuction", + Handler: _Query_ListAuction_Handler, + }, + { + MethodName: "GetAuction", + Handler: _Query_GetAuction_Handler, + }, + { + MethodName: "ListAllowedBidder", + Handler: _Query_ListAllowedBidder_Handler, + }, + { + MethodName: "GetAllowedBidder", + Handler: _Query_GetAllowedBidder_Handler, + }, + { + MethodName: "ListBid", + Handler: _Query_ListBid_Handler, + }, + { + MethodName: "GetBid", + Handler: _Query_GetBid_Handler, + }, + { + MethodName: "ListVestingQueue", + Handler: _Query_ListVestingQueue_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "modules/fundraising/v1/query.proto", +} diff --git a/api/modules/fundraising/v1/tx.pulsar.go b/api/modules/fundraising/v1/tx.pulsar.go new file mode 100644 index 0000000..ddd413c --- /dev/null +++ b/api/modules/fundraising/v1/tx.pulsar.go @@ -0,0 +1,8549 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package fundraisingv1 + +import ( + _ "cosmossdk.io/api/amino" + v1beta1 "cosmossdk.io/api/cosmos/base/v1beta1" + _ "cosmossdk.io/api/cosmos/msg/v1" + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + runtime "github.com/cosmos/cosmos-proto/runtime" + _ "github.com/cosmos/gogoproto/gogoproto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + io "io" + reflect "reflect" + sync "sync" +) + +var ( + md_MsgUpdateParams protoreflect.MessageDescriptor + fd_MsgUpdateParams_authority protoreflect.FieldDescriptor + fd_MsgUpdateParams_params protoreflect.FieldDescriptor +) + +func init() { + file_modules_fundraising_v1_tx_proto_init() + md_MsgUpdateParams = File_modules_fundraising_v1_tx_proto.Messages().ByName("MsgUpdateParams") + fd_MsgUpdateParams_authority = md_MsgUpdateParams.Fields().ByName("authority") + fd_MsgUpdateParams_params = md_MsgUpdateParams.Fields().ByName("params") +} + +var _ protoreflect.Message = (*fastReflection_MsgUpdateParams)(nil) + +type fastReflection_MsgUpdateParams MsgUpdateParams + +func (x *MsgUpdateParams) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgUpdateParams)(x) +} + +func (x *MsgUpdateParams) slowProtoReflect() protoreflect.Message { + mi := &file_modules_fundraising_v1_tx_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_MsgUpdateParams_messageType fastReflection_MsgUpdateParams_messageType +var _ protoreflect.MessageType = fastReflection_MsgUpdateParams_messageType{} + +type fastReflection_MsgUpdateParams_messageType struct{} + +func (x fastReflection_MsgUpdateParams_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgUpdateParams)(nil) +} +func (x fastReflection_MsgUpdateParams_messageType) New() protoreflect.Message { + return new(fastReflection_MsgUpdateParams) +} +func (x fastReflection_MsgUpdateParams_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgUpdateParams +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgUpdateParams) Descriptor() protoreflect.MessageDescriptor { + return md_MsgUpdateParams +} + +// 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_MsgUpdateParams) Type() protoreflect.MessageType { + return _fastReflection_MsgUpdateParams_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgUpdateParams) New() protoreflect.Message { + return new(fastReflection_MsgUpdateParams) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgUpdateParams) Interface() protoreflect.ProtoMessage { + return (*MsgUpdateParams)(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_MsgUpdateParams) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Authority != "" { + value := protoreflect.ValueOfString(x.Authority) + if !f(fd_MsgUpdateParams_authority, value) { + return + } + } + if x.Params != nil { + value := protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + if !f(fd_MsgUpdateParams_params, 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_MsgUpdateParams) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "modules.fundraising.v1.MsgUpdateParams.authority": + return x.Authority != "" + case "modules.fundraising.v1.MsgUpdateParams.params": + return x.Params != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgUpdateParams")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgUpdateParams 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_MsgUpdateParams) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "modules.fundraising.v1.MsgUpdateParams.authority": + x.Authority = "" + case "modules.fundraising.v1.MsgUpdateParams.params": + x.Params = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgUpdateParams")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgUpdateParams 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_MsgUpdateParams) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "modules.fundraising.v1.MsgUpdateParams.authority": + value := x.Authority + return protoreflect.ValueOfString(value) + case "modules.fundraising.v1.MsgUpdateParams.params": + value := x.Params + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgUpdateParams")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgUpdateParams 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_MsgUpdateParams) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "modules.fundraising.v1.MsgUpdateParams.authority": + x.Authority = value.Interface().(string) + case "modules.fundraising.v1.MsgUpdateParams.params": + x.Params = value.Message().Interface().(*Params) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgUpdateParams")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgUpdateParams 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_MsgUpdateParams) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.MsgUpdateParams.params": + if x.Params == nil { + x.Params = new(Params) + } + return protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + case "modules.fundraising.v1.MsgUpdateParams.authority": + panic(fmt.Errorf("field authority of message modules.fundraising.v1.MsgUpdateParams is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgUpdateParams")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgUpdateParams 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_MsgUpdateParams) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.MsgUpdateParams.authority": + return protoreflect.ValueOfString("") + case "modules.fundraising.v1.MsgUpdateParams.params": + m := new(Params) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgUpdateParams")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgUpdateParams 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_MsgUpdateParams) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in modules.fundraising.v1.MsgUpdateParams", 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_MsgUpdateParams) 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_MsgUpdateParams) 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_MsgUpdateParams) 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_MsgUpdateParams) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgUpdateParams) + 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.Authority) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.Params != nil { + l = options.Size(x.Params) + 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().(*MsgUpdateParams) + 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 x.Params != nil { + encoded, err := options.Marshal(x.Params) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x12 + } + 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 { + 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().(*MsgUpdateParams) + 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: MsgUpdateParams: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgUpdateParams: 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 + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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 + } + if x.Params == nil { + x.Params = &Params{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Params); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + 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_MsgUpdateParamsResponse protoreflect.MessageDescriptor +) + +func init() { + file_modules_fundraising_v1_tx_proto_init() + md_MsgUpdateParamsResponse = File_modules_fundraising_v1_tx_proto.Messages().ByName("MsgUpdateParamsResponse") +} + +var _ protoreflect.Message = (*fastReflection_MsgUpdateParamsResponse)(nil) + +type fastReflection_MsgUpdateParamsResponse MsgUpdateParamsResponse + +func (x *MsgUpdateParamsResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgUpdateParamsResponse)(x) +} + +func (x *MsgUpdateParamsResponse) slowProtoReflect() protoreflect.Message { + mi := &file_modules_fundraising_v1_tx_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_MsgUpdateParamsResponse_messageType fastReflection_MsgUpdateParamsResponse_messageType +var _ protoreflect.MessageType = fastReflection_MsgUpdateParamsResponse_messageType{} + +type fastReflection_MsgUpdateParamsResponse_messageType struct{} + +func (x fastReflection_MsgUpdateParamsResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgUpdateParamsResponse)(nil) +} +func (x fastReflection_MsgUpdateParamsResponse_messageType) New() protoreflect.Message { + return new(fastReflection_MsgUpdateParamsResponse) +} +func (x fastReflection_MsgUpdateParamsResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgUpdateParamsResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgUpdateParamsResponse) Descriptor() protoreflect.MessageDescriptor { + return md_MsgUpdateParamsResponse +} + +// 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_MsgUpdateParamsResponse) Type() protoreflect.MessageType { + return _fastReflection_MsgUpdateParamsResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgUpdateParamsResponse) New() protoreflect.Message { + return new(fastReflection_MsgUpdateParamsResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgUpdateParamsResponse) Interface() protoreflect.ProtoMessage { + return (*MsgUpdateParamsResponse)(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_MsgUpdateParamsResponse) 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_MsgUpdateParamsResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgUpdateParamsResponse 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_MsgUpdateParamsResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgUpdateParamsResponse 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_MsgUpdateParamsResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgUpdateParamsResponse 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_MsgUpdateParamsResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgUpdateParamsResponse 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_MsgUpdateParamsResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgUpdateParamsResponse 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_MsgUpdateParamsResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgUpdateParamsResponse 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_MsgUpdateParamsResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in modules.fundraising.v1.MsgUpdateParamsResponse", 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_MsgUpdateParamsResponse) 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_MsgUpdateParamsResponse) 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_MsgUpdateParamsResponse) 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_MsgUpdateParamsResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgUpdateParamsResponse) + 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().(*MsgUpdateParamsResponse) + 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().(*MsgUpdateParamsResponse) + 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: MsgUpdateParamsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgUpdateParamsResponse: 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 = (*_MsgCreateFixedPriceAuction_5_list)(nil) + +type _MsgCreateFixedPriceAuction_5_list struct { + list *[]*VestingSchedule +} + +func (x *_MsgCreateFixedPriceAuction_5_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_MsgCreateFixedPriceAuction_5_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) +} + +func (x *_MsgCreateFixedPriceAuction_5_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*VestingSchedule) + (*x.list)[i] = concreteValue +} + +func (x *_MsgCreateFixedPriceAuction_5_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*VestingSchedule) + *x.list = append(*x.list, concreteValue) +} + +func (x *_MsgCreateFixedPriceAuction_5_list) AppendMutable() protoreflect.Value { + v := new(VestingSchedule) + *x.list = append(*x.list, v) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_MsgCreateFixedPriceAuction_5_list) Truncate(n int) { + for i := n; i < len(*x.list); i++ { + (*x.list)[i] = nil + } + *x.list = (*x.list)[:n] +} + +func (x *_MsgCreateFixedPriceAuction_5_list) NewElement() protoreflect.Value { + v := new(VestingSchedule) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_MsgCreateFixedPriceAuction_5_list) IsValid() bool { + return x.list != nil +} + +var ( + md_MsgCreateFixedPriceAuction protoreflect.MessageDescriptor + fd_MsgCreateFixedPriceAuction_auctioneer protoreflect.FieldDescriptor + fd_MsgCreateFixedPriceAuction_start_price protoreflect.FieldDescriptor + fd_MsgCreateFixedPriceAuction_selling_coin protoreflect.FieldDescriptor + fd_MsgCreateFixedPriceAuction_paying_coin_denom protoreflect.FieldDescriptor + fd_MsgCreateFixedPriceAuction_vesting_schedules protoreflect.FieldDescriptor + fd_MsgCreateFixedPriceAuction_start_time protoreflect.FieldDescriptor + fd_MsgCreateFixedPriceAuction_end_time protoreflect.FieldDescriptor +) + +func init() { + file_modules_fundraising_v1_tx_proto_init() + md_MsgCreateFixedPriceAuction = File_modules_fundraising_v1_tx_proto.Messages().ByName("MsgCreateFixedPriceAuction") + fd_MsgCreateFixedPriceAuction_auctioneer = md_MsgCreateFixedPriceAuction.Fields().ByName("auctioneer") + fd_MsgCreateFixedPriceAuction_start_price = md_MsgCreateFixedPriceAuction.Fields().ByName("start_price") + fd_MsgCreateFixedPriceAuction_selling_coin = md_MsgCreateFixedPriceAuction.Fields().ByName("selling_coin") + fd_MsgCreateFixedPriceAuction_paying_coin_denom = md_MsgCreateFixedPriceAuction.Fields().ByName("paying_coin_denom") + fd_MsgCreateFixedPriceAuction_vesting_schedules = md_MsgCreateFixedPriceAuction.Fields().ByName("vesting_schedules") + fd_MsgCreateFixedPriceAuction_start_time = md_MsgCreateFixedPriceAuction.Fields().ByName("start_time") + fd_MsgCreateFixedPriceAuction_end_time = md_MsgCreateFixedPriceAuction.Fields().ByName("end_time") +} + +var _ protoreflect.Message = (*fastReflection_MsgCreateFixedPriceAuction)(nil) + +type fastReflection_MsgCreateFixedPriceAuction MsgCreateFixedPriceAuction + +func (x *MsgCreateFixedPriceAuction) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgCreateFixedPriceAuction)(x) +} + +func (x *MsgCreateFixedPriceAuction) slowProtoReflect() protoreflect.Message { + mi := &file_modules_fundraising_v1_tx_proto_msgTypes[2] + 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_MsgCreateFixedPriceAuction_messageType fastReflection_MsgCreateFixedPriceAuction_messageType +var _ protoreflect.MessageType = fastReflection_MsgCreateFixedPriceAuction_messageType{} + +type fastReflection_MsgCreateFixedPriceAuction_messageType struct{} + +func (x fastReflection_MsgCreateFixedPriceAuction_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgCreateFixedPriceAuction)(nil) +} +func (x fastReflection_MsgCreateFixedPriceAuction_messageType) New() protoreflect.Message { + return new(fastReflection_MsgCreateFixedPriceAuction) +} +func (x fastReflection_MsgCreateFixedPriceAuction_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgCreateFixedPriceAuction +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgCreateFixedPriceAuction) Descriptor() protoreflect.MessageDescriptor { + return md_MsgCreateFixedPriceAuction +} + +// 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_MsgCreateFixedPriceAuction) Type() protoreflect.MessageType { + return _fastReflection_MsgCreateFixedPriceAuction_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgCreateFixedPriceAuction) New() protoreflect.Message { + return new(fastReflection_MsgCreateFixedPriceAuction) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgCreateFixedPriceAuction) Interface() protoreflect.ProtoMessage { + return (*MsgCreateFixedPriceAuction)(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_MsgCreateFixedPriceAuction) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Auctioneer != "" { + value := protoreflect.ValueOfString(x.Auctioneer) + if !f(fd_MsgCreateFixedPriceAuction_auctioneer, value) { + return + } + } + if x.StartPrice != "" { + value := protoreflect.ValueOfString(x.StartPrice) + if !f(fd_MsgCreateFixedPriceAuction_start_price, value) { + return + } + } + if x.SellingCoin != nil { + value := protoreflect.ValueOfMessage(x.SellingCoin.ProtoReflect()) + if !f(fd_MsgCreateFixedPriceAuction_selling_coin, value) { + return + } + } + if x.PayingCoinDenom != "" { + value := protoreflect.ValueOfString(x.PayingCoinDenom) + if !f(fd_MsgCreateFixedPriceAuction_paying_coin_denom, value) { + return + } + } + if len(x.VestingSchedules) != 0 { + value := protoreflect.ValueOfList(&_MsgCreateFixedPriceAuction_5_list{list: &x.VestingSchedules}) + if !f(fd_MsgCreateFixedPriceAuction_vesting_schedules, value) { + return + } + } + if x.StartTime != nil { + value := protoreflect.ValueOfMessage(x.StartTime.ProtoReflect()) + if !f(fd_MsgCreateFixedPriceAuction_start_time, value) { + return + } + } + if x.EndTime != nil { + value := protoreflect.ValueOfMessage(x.EndTime.ProtoReflect()) + if !f(fd_MsgCreateFixedPriceAuction_end_time, 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_MsgCreateFixedPriceAuction) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "modules.fundraising.v1.MsgCreateFixedPriceAuction.auctioneer": + return x.Auctioneer != "" + case "modules.fundraising.v1.MsgCreateFixedPriceAuction.start_price": + return x.StartPrice != "" + case "modules.fundraising.v1.MsgCreateFixedPriceAuction.selling_coin": + return x.SellingCoin != nil + case "modules.fundraising.v1.MsgCreateFixedPriceAuction.paying_coin_denom": + return x.PayingCoinDenom != "" + case "modules.fundraising.v1.MsgCreateFixedPriceAuction.vesting_schedules": + return len(x.VestingSchedules) != 0 + case "modules.fundraising.v1.MsgCreateFixedPriceAuction.start_time": + return x.StartTime != nil + case "modules.fundraising.v1.MsgCreateFixedPriceAuction.end_time": + return x.EndTime != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgCreateFixedPriceAuction")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgCreateFixedPriceAuction 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_MsgCreateFixedPriceAuction) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "modules.fundraising.v1.MsgCreateFixedPriceAuction.auctioneer": + x.Auctioneer = "" + case "modules.fundraising.v1.MsgCreateFixedPriceAuction.start_price": + x.StartPrice = "" + case "modules.fundraising.v1.MsgCreateFixedPriceAuction.selling_coin": + x.SellingCoin = nil + case "modules.fundraising.v1.MsgCreateFixedPriceAuction.paying_coin_denom": + x.PayingCoinDenom = "" + case "modules.fundraising.v1.MsgCreateFixedPriceAuction.vesting_schedules": + x.VestingSchedules = nil + case "modules.fundraising.v1.MsgCreateFixedPriceAuction.start_time": + x.StartTime = nil + case "modules.fundraising.v1.MsgCreateFixedPriceAuction.end_time": + x.EndTime = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgCreateFixedPriceAuction")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgCreateFixedPriceAuction 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_MsgCreateFixedPriceAuction) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "modules.fundraising.v1.MsgCreateFixedPriceAuction.auctioneer": + value := x.Auctioneer + return protoreflect.ValueOfString(value) + case "modules.fundraising.v1.MsgCreateFixedPriceAuction.start_price": + value := x.StartPrice + return protoreflect.ValueOfString(value) + case "modules.fundraising.v1.MsgCreateFixedPriceAuction.selling_coin": + value := x.SellingCoin + return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "modules.fundraising.v1.MsgCreateFixedPriceAuction.paying_coin_denom": + value := x.PayingCoinDenom + return protoreflect.ValueOfString(value) + case "modules.fundraising.v1.MsgCreateFixedPriceAuction.vesting_schedules": + if len(x.VestingSchedules) == 0 { + return protoreflect.ValueOfList(&_MsgCreateFixedPriceAuction_5_list{}) + } + listValue := &_MsgCreateFixedPriceAuction_5_list{list: &x.VestingSchedules} + return protoreflect.ValueOfList(listValue) + case "modules.fundraising.v1.MsgCreateFixedPriceAuction.start_time": + value := x.StartTime + return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "modules.fundraising.v1.MsgCreateFixedPriceAuction.end_time": + value := x.EndTime + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgCreateFixedPriceAuction")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgCreateFixedPriceAuction 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_MsgCreateFixedPriceAuction) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "modules.fundraising.v1.MsgCreateFixedPriceAuction.auctioneer": + x.Auctioneer = value.Interface().(string) + case "modules.fundraising.v1.MsgCreateFixedPriceAuction.start_price": + x.StartPrice = value.Interface().(string) + case "modules.fundraising.v1.MsgCreateFixedPriceAuction.selling_coin": + x.SellingCoin = value.Message().Interface().(*v1beta1.Coin) + case "modules.fundraising.v1.MsgCreateFixedPriceAuction.paying_coin_denom": + x.PayingCoinDenom = value.Interface().(string) + case "modules.fundraising.v1.MsgCreateFixedPriceAuction.vesting_schedules": + lv := value.List() + clv := lv.(*_MsgCreateFixedPriceAuction_5_list) + x.VestingSchedules = *clv.list + case "modules.fundraising.v1.MsgCreateFixedPriceAuction.start_time": + x.StartTime = value.Message().Interface().(*timestamppb.Timestamp) + case "modules.fundraising.v1.MsgCreateFixedPriceAuction.end_time": + x.EndTime = value.Message().Interface().(*timestamppb.Timestamp) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgCreateFixedPriceAuction")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgCreateFixedPriceAuction 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_MsgCreateFixedPriceAuction) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.MsgCreateFixedPriceAuction.selling_coin": + if x.SellingCoin == nil { + x.SellingCoin = new(v1beta1.Coin) + } + return protoreflect.ValueOfMessage(x.SellingCoin.ProtoReflect()) + case "modules.fundraising.v1.MsgCreateFixedPriceAuction.vesting_schedules": + if x.VestingSchedules == nil { + x.VestingSchedules = []*VestingSchedule{} + } + value := &_MsgCreateFixedPriceAuction_5_list{list: &x.VestingSchedules} + return protoreflect.ValueOfList(value) + case "modules.fundraising.v1.MsgCreateFixedPriceAuction.start_time": + if x.StartTime == nil { + x.StartTime = new(timestamppb.Timestamp) + } + return protoreflect.ValueOfMessage(x.StartTime.ProtoReflect()) + case "modules.fundraising.v1.MsgCreateFixedPriceAuction.end_time": + if x.EndTime == nil { + x.EndTime = new(timestamppb.Timestamp) + } + return protoreflect.ValueOfMessage(x.EndTime.ProtoReflect()) + case "modules.fundraising.v1.MsgCreateFixedPriceAuction.auctioneer": + panic(fmt.Errorf("field auctioneer of message modules.fundraising.v1.MsgCreateFixedPriceAuction is not mutable")) + case "modules.fundraising.v1.MsgCreateFixedPriceAuction.start_price": + panic(fmt.Errorf("field start_price of message modules.fundraising.v1.MsgCreateFixedPriceAuction is not mutable")) + case "modules.fundraising.v1.MsgCreateFixedPriceAuction.paying_coin_denom": + panic(fmt.Errorf("field paying_coin_denom of message modules.fundraising.v1.MsgCreateFixedPriceAuction is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgCreateFixedPriceAuction")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgCreateFixedPriceAuction 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_MsgCreateFixedPriceAuction) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.MsgCreateFixedPriceAuction.auctioneer": + return protoreflect.ValueOfString("") + case "modules.fundraising.v1.MsgCreateFixedPriceAuction.start_price": + return protoreflect.ValueOfString("") + case "modules.fundraising.v1.MsgCreateFixedPriceAuction.selling_coin": + m := new(v1beta1.Coin) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "modules.fundraising.v1.MsgCreateFixedPriceAuction.paying_coin_denom": + return protoreflect.ValueOfString("") + case "modules.fundraising.v1.MsgCreateFixedPriceAuction.vesting_schedules": + list := []*VestingSchedule{} + return protoreflect.ValueOfList(&_MsgCreateFixedPriceAuction_5_list{list: &list}) + case "modules.fundraising.v1.MsgCreateFixedPriceAuction.start_time": + m := new(timestamppb.Timestamp) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "modules.fundraising.v1.MsgCreateFixedPriceAuction.end_time": + m := new(timestamppb.Timestamp) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgCreateFixedPriceAuction")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgCreateFixedPriceAuction 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_MsgCreateFixedPriceAuction) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in modules.fundraising.v1.MsgCreateFixedPriceAuction", 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_MsgCreateFixedPriceAuction) 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_MsgCreateFixedPriceAuction) 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_MsgCreateFixedPriceAuction) 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_MsgCreateFixedPriceAuction) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgCreateFixedPriceAuction) + 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.Auctioneer) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.StartPrice) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.SellingCoin != nil { + l = options.Size(x.SellingCoin) + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.PayingCoinDenom) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if len(x.VestingSchedules) > 0 { + for _, e := range x.VestingSchedules { + l = options.Size(e) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if x.StartTime != nil { + l = options.Size(x.StartTime) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.EndTime != nil { + l = options.Size(x.EndTime) + 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().(*MsgCreateFixedPriceAuction) + 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 x.EndTime != nil { + encoded, err := options.Marshal(x.EndTime) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x3a + } + if x.StartTime != nil { + encoded, err := options.Marshal(x.StartTime) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x32 + } + if len(x.VestingSchedules) > 0 { + for iNdEx := len(x.VestingSchedules) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.VestingSchedules[iNdEx]) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x2a + } + } + if len(x.PayingCoinDenom) > 0 { + i -= len(x.PayingCoinDenom) + copy(dAtA[i:], x.PayingCoinDenom) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.PayingCoinDenom))) + i-- + dAtA[i] = 0x22 + } + if x.SellingCoin != nil { + encoded, err := options.Marshal(x.SellingCoin) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x1a + } + if len(x.StartPrice) > 0 { + i -= len(x.StartPrice) + copy(dAtA[i:], x.StartPrice) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.StartPrice))) + i-- + dAtA[i] = 0x12 + } + if len(x.Auctioneer) > 0 { + i -= len(x.Auctioneer) + copy(dAtA[i:], x.Auctioneer) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Auctioneer))) + 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().(*MsgCreateFixedPriceAuction) + 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: MsgCreateFixedPriceAuction: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgCreateFixedPriceAuction: 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 Auctioneer", 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.Auctioneer = 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 StartPrice", 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.StartPrice = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field SellingCoin", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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 + } + if x.SellingCoin == nil { + x.SellingCoin = &v1beta1.Coin{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.SellingCoin); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field PayingCoinDenom", 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.PayingCoinDenom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field VestingSchedules", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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.VestingSchedules = append(x.VestingSchedules, &VestingSchedule{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.VestingSchedules[len(x.VestingSchedules)-1]); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field StartTime", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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 + } + if x.StartTime == nil { + x.StartTime = ×tamppb.Timestamp{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.StartTime); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field EndTime", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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 + } + if x.EndTime == nil { + x.EndTime = ×tamppb.Timestamp{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.EndTime); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + 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_MsgCreateFixedPriceAuctionResponse protoreflect.MessageDescriptor +) + +func init() { + file_modules_fundraising_v1_tx_proto_init() + md_MsgCreateFixedPriceAuctionResponse = File_modules_fundraising_v1_tx_proto.Messages().ByName("MsgCreateFixedPriceAuctionResponse") +} + +var _ protoreflect.Message = (*fastReflection_MsgCreateFixedPriceAuctionResponse)(nil) + +type fastReflection_MsgCreateFixedPriceAuctionResponse MsgCreateFixedPriceAuctionResponse + +func (x *MsgCreateFixedPriceAuctionResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgCreateFixedPriceAuctionResponse)(x) +} + +func (x *MsgCreateFixedPriceAuctionResponse) slowProtoReflect() protoreflect.Message { + mi := &file_modules_fundraising_v1_tx_proto_msgTypes[3] + 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_MsgCreateFixedPriceAuctionResponse_messageType fastReflection_MsgCreateFixedPriceAuctionResponse_messageType +var _ protoreflect.MessageType = fastReflection_MsgCreateFixedPriceAuctionResponse_messageType{} + +type fastReflection_MsgCreateFixedPriceAuctionResponse_messageType struct{} + +func (x fastReflection_MsgCreateFixedPriceAuctionResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgCreateFixedPriceAuctionResponse)(nil) +} +func (x fastReflection_MsgCreateFixedPriceAuctionResponse_messageType) New() protoreflect.Message { + return new(fastReflection_MsgCreateFixedPriceAuctionResponse) +} +func (x fastReflection_MsgCreateFixedPriceAuctionResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgCreateFixedPriceAuctionResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgCreateFixedPriceAuctionResponse) Descriptor() protoreflect.MessageDescriptor { + return md_MsgCreateFixedPriceAuctionResponse +} + +// 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_MsgCreateFixedPriceAuctionResponse) Type() protoreflect.MessageType { + return _fastReflection_MsgCreateFixedPriceAuctionResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgCreateFixedPriceAuctionResponse) New() protoreflect.Message { + return new(fastReflection_MsgCreateFixedPriceAuctionResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgCreateFixedPriceAuctionResponse) Interface() protoreflect.ProtoMessage { + return (*MsgCreateFixedPriceAuctionResponse)(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_MsgCreateFixedPriceAuctionResponse) 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_MsgCreateFixedPriceAuctionResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgCreateFixedPriceAuctionResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgCreateFixedPriceAuctionResponse 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_MsgCreateFixedPriceAuctionResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgCreateFixedPriceAuctionResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgCreateFixedPriceAuctionResponse 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_MsgCreateFixedPriceAuctionResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgCreateFixedPriceAuctionResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgCreateFixedPriceAuctionResponse 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_MsgCreateFixedPriceAuctionResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgCreateFixedPriceAuctionResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgCreateFixedPriceAuctionResponse 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_MsgCreateFixedPriceAuctionResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgCreateFixedPriceAuctionResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgCreateFixedPriceAuctionResponse 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_MsgCreateFixedPriceAuctionResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgCreateFixedPriceAuctionResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgCreateFixedPriceAuctionResponse 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_MsgCreateFixedPriceAuctionResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in modules.fundraising.v1.MsgCreateFixedPriceAuctionResponse", 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_MsgCreateFixedPriceAuctionResponse) 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_MsgCreateFixedPriceAuctionResponse) 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_MsgCreateFixedPriceAuctionResponse) 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_MsgCreateFixedPriceAuctionResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgCreateFixedPriceAuctionResponse) + 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().(*MsgCreateFixedPriceAuctionResponse) + 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().(*MsgCreateFixedPriceAuctionResponse) + 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: MsgCreateFixedPriceAuctionResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgCreateFixedPriceAuctionResponse: 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 = (*_MsgCreateBatchAuction_6_list)(nil) + +type _MsgCreateBatchAuction_6_list struct { + list *[]*VestingSchedule +} + +func (x *_MsgCreateBatchAuction_6_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_MsgCreateBatchAuction_6_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) +} + +func (x *_MsgCreateBatchAuction_6_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*VestingSchedule) + (*x.list)[i] = concreteValue +} + +func (x *_MsgCreateBatchAuction_6_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*VestingSchedule) + *x.list = append(*x.list, concreteValue) +} + +func (x *_MsgCreateBatchAuction_6_list) AppendMutable() protoreflect.Value { + v := new(VestingSchedule) + *x.list = append(*x.list, v) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_MsgCreateBatchAuction_6_list) Truncate(n int) { + for i := n; i < len(*x.list); i++ { + (*x.list)[i] = nil + } + *x.list = (*x.list)[:n] +} + +func (x *_MsgCreateBatchAuction_6_list) NewElement() protoreflect.Value { + v := new(VestingSchedule) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_MsgCreateBatchAuction_6_list) IsValid() bool { + return x.list != nil +} + +var ( + md_MsgCreateBatchAuction protoreflect.MessageDescriptor + fd_MsgCreateBatchAuction_auctioneer protoreflect.FieldDescriptor + fd_MsgCreateBatchAuction_start_price protoreflect.FieldDescriptor + fd_MsgCreateBatchAuction_min_bid_price protoreflect.FieldDescriptor + fd_MsgCreateBatchAuction_selling_coin protoreflect.FieldDescriptor + fd_MsgCreateBatchAuction_paying_coin_denom protoreflect.FieldDescriptor + fd_MsgCreateBatchAuction_vesting_schedules protoreflect.FieldDescriptor + fd_MsgCreateBatchAuction_max_extended_round protoreflect.FieldDescriptor + fd_MsgCreateBatchAuction_extended_round_rate protoreflect.FieldDescriptor + fd_MsgCreateBatchAuction_start_time protoreflect.FieldDescriptor + fd_MsgCreateBatchAuction_end_time protoreflect.FieldDescriptor +) + +func init() { + file_modules_fundraising_v1_tx_proto_init() + md_MsgCreateBatchAuction = File_modules_fundraising_v1_tx_proto.Messages().ByName("MsgCreateBatchAuction") + fd_MsgCreateBatchAuction_auctioneer = md_MsgCreateBatchAuction.Fields().ByName("auctioneer") + fd_MsgCreateBatchAuction_start_price = md_MsgCreateBatchAuction.Fields().ByName("start_price") + fd_MsgCreateBatchAuction_min_bid_price = md_MsgCreateBatchAuction.Fields().ByName("min_bid_price") + fd_MsgCreateBatchAuction_selling_coin = md_MsgCreateBatchAuction.Fields().ByName("selling_coin") + fd_MsgCreateBatchAuction_paying_coin_denom = md_MsgCreateBatchAuction.Fields().ByName("paying_coin_denom") + fd_MsgCreateBatchAuction_vesting_schedules = md_MsgCreateBatchAuction.Fields().ByName("vesting_schedules") + fd_MsgCreateBatchAuction_max_extended_round = md_MsgCreateBatchAuction.Fields().ByName("max_extended_round") + fd_MsgCreateBatchAuction_extended_round_rate = md_MsgCreateBatchAuction.Fields().ByName("extended_round_rate") + fd_MsgCreateBatchAuction_start_time = md_MsgCreateBatchAuction.Fields().ByName("start_time") + fd_MsgCreateBatchAuction_end_time = md_MsgCreateBatchAuction.Fields().ByName("end_time") +} + +var _ protoreflect.Message = (*fastReflection_MsgCreateBatchAuction)(nil) + +type fastReflection_MsgCreateBatchAuction MsgCreateBatchAuction + +func (x *MsgCreateBatchAuction) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgCreateBatchAuction)(x) +} + +func (x *MsgCreateBatchAuction) slowProtoReflect() protoreflect.Message { + mi := &file_modules_fundraising_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_MsgCreateBatchAuction_messageType fastReflection_MsgCreateBatchAuction_messageType +var _ protoreflect.MessageType = fastReflection_MsgCreateBatchAuction_messageType{} + +type fastReflection_MsgCreateBatchAuction_messageType struct{} + +func (x fastReflection_MsgCreateBatchAuction_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgCreateBatchAuction)(nil) +} +func (x fastReflection_MsgCreateBatchAuction_messageType) New() protoreflect.Message { + return new(fastReflection_MsgCreateBatchAuction) +} +func (x fastReflection_MsgCreateBatchAuction_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgCreateBatchAuction +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgCreateBatchAuction) Descriptor() protoreflect.MessageDescriptor { + return md_MsgCreateBatchAuction +} + +// 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_MsgCreateBatchAuction) Type() protoreflect.MessageType { + return _fastReflection_MsgCreateBatchAuction_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgCreateBatchAuction) New() protoreflect.Message { + return new(fastReflection_MsgCreateBatchAuction) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgCreateBatchAuction) Interface() protoreflect.ProtoMessage { + return (*MsgCreateBatchAuction)(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_MsgCreateBatchAuction) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Auctioneer != "" { + value := protoreflect.ValueOfString(x.Auctioneer) + if !f(fd_MsgCreateBatchAuction_auctioneer, value) { + return + } + } + if x.StartPrice != "" { + value := protoreflect.ValueOfString(x.StartPrice) + if !f(fd_MsgCreateBatchAuction_start_price, value) { + return + } + } + if x.MinBidPrice != "" { + value := protoreflect.ValueOfString(x.MinBidPrice) + if !f(fd_MsgCreateBatchAuction_min_bid_price, value) { + return + } + } + if x.SellingCoin != nil { + value := protoreflect.ValueOfMessage(x.SellingCoin.ProtoReflect()) + if !f(fd_MsgCreateBatchAuction_selling_coin, value) { + return + } + } + if x.PayingCoinDenom != "" { + value := protoreflect.ValueOfString(x.PayingCoinDenom) + if !f(fd_MsgCreateBatchAuction_paying_coin_denom, value) { + return + } + } + if len(x.VestingSchedules) != 0 { + value := protoreflect.ValueOfList(&_MsgCreateBatchAuction_6_list{list: &x.VestingSchedules}) + if !f(fd_MsgCreateBatchAuction_vesting_schedules, value) { + return + } + } + if x.MaxExtendedRound != uint32(0) { + value := protoreflect.ValueOfUint32(x.MaxExtendedRound) + if !f(fd_MsgCreateBatchAuction_max_extended_round, value) { + return + } + } + if x.ExtendedRoundRate != "" { + value := protoreflect.ValueOfString(x.ExtendedRoundRate) + if !f(fd_MsgCreateBatchAuction_extended_round_rate, value) { + return + } + } + if x.StartTime != nil { + value := protoreflect.ValueOfMessage(x.StartTime.ProtoReflect()) + if !f(fd_MsgCreateBatchAuction_start_time, value) { + return + } + } + if x.EndTime != nil { + value := protoreflect.ValueOfMessage(x.EndTime.ProtoReflect()) + if !f(fd_MsgCreateBatchAuction_end_time, 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_MsgCreateBatchAuction) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "modules.fundraising.v1.MsgCreateBatchAuction.auctioneer": + return x.Auctioneer != "" + case "modules.fundraising.v1.MsgCreateBatchAuction.start_price": + return x.StartPrice != "" + case "modules.fundraising.v1.MsgCreateBatchAuction.min_bid_price": + return x.MinBidPrice != "" + case "modules.fundraising.v1.MsgCreateBatchAuction.selling_coin": + return x.SellingCoin != nil + case "modules.fundraising.v1.MsgCreateBatchAuction.paying_coin_denom": + return x.PayingCoinDenom != "" + case "modules.fundraising.v1.MsgCreateBatchAuction.vesting_schedules": + return len(x.VestingSchedules) != 0 + case "modules.fundraising.v1.MsgCreateBatchAuction.max_extended_round": + return x.MaxExtendedRound != uint32(0) + case "modules.fundraising.v1.MsgCreateBatchAuction.extended_round_rate": + return x.ExtendedRoundRate != "" + case "modules.fundraising.v1.MsgCreateBatchAuction.start_time": + return x.StartTime != nil + case "modules.fundraising.v1.MsgCreateBatchAuction.end_time": + return x.EndTime != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgCreateBatchAuction")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgCreateBatchAuction 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_MsgCreateBatchAuction) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "modules.fundraising.v1.MsgCreateBatchAuction.auctioneer": + x.Auctioneer = "" + case "modules.fundraising.v1.MsgCreateBatchAuction.start_price": + x.StartPrice = "" + case "modules.fundraising.v1.MsgCreateBatchAuction.min_bid_price": + x.MinBidPrice = "" + case "modules.fundraising.v1.MsgCreateBatchAuction.selling_coin": + x.SellingCoin = nil + case "modules.fundraising.v1.MsgCreateBatchAuction.paying_coin_denom": + x.PayingCoinDenom = "" + case "modules.fundraising.v1.MsgCreateBatchAuction.vesting_schedules": + x.VestingSchedules = nil + case "modules.fundraising.v1.MsgCreateBatchAuction.max_extended_round": + x.MaxExtendedRound = uint32(0) + case "modules.fundraising.v1.MsgCreateBatchAuction.extended_round_rate": + x.ExtendedRoundRate = "" + case "modules.fundraising.v1.MsgCreateBatchAuction.start_time": + x.StartTime = nil + case "modules.fundraising.v1.MsgCreateBatchAuction.end_time": + x.EndTime = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgCreateBatchAuction")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgCreateBatchAuction 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_MsgCreateBatchAuction) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "modules.fundraising.v1.MsgCreateBatchAuction.auctioneer": + value := x.Auctioneer + return protoreflect.ValueOfString(value) + case "modules.fundraising.v1.MsgCreateBatchAuction.start_price": + value := x.StartPrice + return protoreflect.ValueOfString(value) + case "modules.fundraising.v1.MsgCreateBatchAuction.min_bid_price": + value := x.MinBidPrice + return protoreflect.ValueOfString(value) + case "modules.fundraising.v1.MsgCreateBatchAuction.selling_coin": + value := x.SellingCoin + return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "modules.fundraising.v1.MsgCreateBatchAuction.paying_coin_denom": + value := x.PayingCoinDenom + return protoreflect.ValueOfString(value) + case "modules.fundraising.v1.MsgCreateBatchAuction.vesting_schedules": + if len(x.VestingSchedules) == 0 { + return protoreflect.ValueOfList(&_MsgCreateBatchAuction_6_list{}) + } + listValue := &_MsgCreateBatchAuction_6_list{list: &x.VestingSchedules} + return protoreflect.ValueOfList(listValue) + case "modules.fundraising.v1.MsgCreateBatchAuction.max_extended_round": + value := x.MaxExtendedRound + return protoreflect.ValueOfUint32(value) + case "modules.fundraising.v1.MsgCreateBatchAuction.extended_round_rate": + value := x.ExtendedRoundRate + return protoreflect.ValueOfString(value) + case "modules.fundraising.v1.MsgCreateBatchAuction.start_time": + value := x.StartTime + return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "modules.fundraising.v1.MsgCreateBatchAuction.end_time": + value := x.EndTime + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgCreateBatchAuction")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgCreateBatchAuction 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_MsgCreateBatchAuction) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "modules.fundraising.v1.MsgCreateBatchAuction.auctioneer": + x.Auctioneer = value.Interface().(string) + case "modules.fundraising.v1.MsgCreateBatchAuction.start_price": + x.StartPrice = value.Interface().(string) + case "modules.fundraising.v1.MsgCreateBatchAuction.min_bid_price": + x.MinBidPrice = value.Interface().(string) + case "modules.fundraising.v1.MsgCreateBatchAuction.selling_coin": + x.SellingCoin = value.Message().Interface().(*v1beta1.Coin) + case "modules.fundraising.v1.MsgCreateBatchAuction.paying_coin_denom": + x.PayingCoinDenom = value.Interface().(string) + case "modules.fundraising.v1.MsgCreateBatchAuction.vesting_schedules": + lv := value.List() + clv := lv.(*_MsgCreateBatchAuction_6_list) + x.VestingSchedules = *clv.list + case "modules.fundraising.v1.MsgCreateBatchAuction.max_extended_round": + x.MaxExtendedRound = uint32(value.Uint()) + case "modules.fundraising.v1.MsgCreateBatchAuction.extended_round_rate": + x.ExtendedRoundRate = value.Interface().(string) + case "modules.fundraising.v1.MsgCreateBatchAuction.start_time": + x.StartTime = value.Message().Interface().(*timestamppb.Timestamp) + case "modules.fundraising.v1.MsgCreateBatchAuction.end_time": + x.EndTime = value.Message().Interface().(*timestamppb.Timestamp) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgCreateBatchAuction")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgCreateBatchAuction 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_MsgCreateBatchAuction) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.MsgCreateBatchAuction.selling_coin": + if x.SellingCoin == nil { + x.SellingCoin = new(v1beta1.Coin) + } + return protoreflect.ValueOfMessage(x.SellingCoin.ProtoReflect()) + case "modules.fundraising.v1.MsgCreateBatchAuction.vesting_schedules": + if x.VestingSchedules == nil { + x.VestingSchedules = []*VestingSchedule{} + } + value := &_MsgCreateBatchAuction_6_list{list: &x.VestingSchedules} + return protoreflect.ValueOfList(value) + case "modules.fundraising.v1.MsgCreateBatchAuction.start_time": + if x.StartTime == nil { + x.StartTime = new(timestamppb.Timestamp) + } + return protoreflect.ValueOfMessage(x.StartTime.ProtoReflect()) + case "modules.fundraising.v1.MsgCreateBatchAuction.end_time": + if x.EndTime == nil { + x.EndTime = new(timestamppb.Timestamp) + } + return protoreflect.ValueOfMessage(x.EndTime.ProtoReflect()) + case "modules.fundraising.v1.MsgCreateBatchAuction.auctioneer": + panic(fmt.Errorf("field auctioneer of message modules.fundraising.v1.MsgCreateBatchAuction is not mutable")) + case "modules.fundraising.v1.MsgCreateBatchAuction.start_price": + panic(fmt.Errorf("field start_price of message modules.fundraising.v1.MsgCreateBatchAuction is not mutable")) + case "modules.fundraising.v1.MsgCreateBatchAuction.min_bid_price": + panic(fmt.Errorf("field min_bid_price of message modules.fundraising.v1.MsgCreateBatchAuction is not mutable")) + case "modules.fundraising.v1.MsgCreateBatchAuction.paying_coin_denom": + panic(fmt.Errorf("field paying_coin_denom of message modules.fundraising.v1.MsgCreateBatchAuction is not mutable")) + case "modules.fundraising.v1.MsgCreateBatchAuction.max_extended_round": + panic(fmt.Errorf("field max_extended_round of message modules.fundraising.v1.MsgCreateBatchAuction is not mutable")) + case "modules.fundraising.v1.MsgCreateBatchAuction.extended_round_rate": + panic(fmt.Errorf("field extended_round_rate of message modules.fundraising.v1.MsgCreateBatchAuction is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgCreateBatchAuction")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgCreateBatchAuction 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_MsgCreateBatchAuction) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.MsgCreateBatchAuction.auctioneer": + return protoreflect.ValueOfString("") + case "modules.fundraising.v1.MsgCreateBatchAuction.start_price": + return protoreflect.ValueOfString("") + case "modules.fundraising.v1.MsgCreateBatchAuction.min_bid_price": + return protoreflect.ValueOfString("") + case "modules.fundraising.v1.MsgCreateBatchAuction.selling_coin": + m := new(v1beta1.Coin) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "modules.fundraising.v1.MsgCreateBatchAuction.paying_coin_denom": + return protoreflect.ValueOfString("") + case "modules.fundraising.v1.MsgCreateBatchAuction.vesting_schedules": + list := []*VestingSchedule{} + return protoreflect.ValueOfList(&_MsgCreateBatchAuction_6_list{list: &list}) + case "modules.fundraising.v1.MsgCreateBatchAuction.max_extended_round": + return protoreflect.ValueOfUint32(uint32(0)) + case "modules.fundraising.v1.MsgCreateBatchAuction.extended_round_rate": + return protoreflect.ValueOfString("") + case "modules.fundraising.v1.MsgCreateBatchAuction.start_time": + m := new(timestamppb.Timestamp) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "modules.fundraising.v1.MsgCreateBatchAuction.end_time": + m := new(timestamppb.Timestamp) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgCreateBatchAuction")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgCreateBatchAuction 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_MsgCreateBatchAuction) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in modules.fundraising.v1.MsgCreateBatchAuction", 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_MsgCreateBatchAuction) 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_MsgCreateBatchAuction) 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_MsgCreateBatchAuction) 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_MsgCreateBatchAuction) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgCreateBatchAuction) + 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.Auctioneer) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.StartPrice) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.MinBidPrice) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.SellingCoin != nil { + l = options.Size(x.SellingCoin) + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.PayingCoinDenom) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if len(x.VestingSchedules) > 0 { + for _, e := range x.VestingSchedules { + l = options.Size(e) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if x.MaxExtendedRound != 0 { + n += 1 + runtime.Sov(uint64(x.MaxExtendedRound)) + } + l = len(x.ExtendedRoundRate) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.StartTime != nil { + l = options.Size(x.StartTime) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.EndTime != nil { + l = options.Size(x.EndTime) + 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().(*MsgCreateBatchAuction) + 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 x.EndTime != nil { + encoded, err := options.Marshal(x.EndTime) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x52 + } + if x.StartTime != nil { + encoded, err := options.Marshal(x.StartTime) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x4a + } + if len(x.ExtendedRoundRate) > 0 { + i -= len(x.ExtendedRoundRate) + copy(dAtA[i:], x.ExtendedRoundRate) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.ExtendedRoundRate))) + i-- + dAtA[i] = 0x42 + } + if x.MaxExtendedRound != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.MaxExtendedRound)) + i-- + dAtA[i] = 0x38 + } + if len(x.VestingSchedules) > 0 { + for iNdEx := len(x.VestingSchedules) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.VestingSchedules[iNdEx]) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x32 + } + } + if len(x.PayingCoinDenom) > 0 { + i -= len(x.PayingCoinDenom) + copy(dAtA[i:], x.PayingCoinDenom) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.PayingCoinDenom))) + i-- + dAtA[i] = 0x2a + } + if x.SellingCoin != nil { + encoded, err := options.Marshal(x.SellingCoin) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x22 + } + if len(x.MinBidPrice) > 0 { + i -= len(x.MinBidPrice) + copy(dAtA[i:], x.MinBidPrice) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.MinBidPrice))) + i-- + dAtA[i] = 0x1a + } + if len(x.StartPrice) > 0 { + i -= len(x.StartPrice) + copy(dAtA[i:], x.StartPrice) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.StartPrice))) + i-- + dAtA[i] = 0x12 + } + if len(x.Auctioneer) > 0 { + i -= len(x.Auctioneer) + copy(dAtA[i:], x.Auctioneer) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Auctioneer))) + 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().(*MsgCreateBatchAuction) + 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: MsgCreateBatchAuction: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgCreateBatchAuction: 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 Auctioneer", 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.Auctioneer = 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 StartPrice", 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.StartPrice = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field MinBidPrice", 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.MinBidPrice = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field SellingCoin", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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 + } + if x.SellingCoin == nil { + x.SellingCoin = &v1beta1.Coin{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.SellingCoin); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field PayingCoinDenom", 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.PayingCoinDenom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field VestingSchedules", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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.VestingSchedules = append(x.VestingSchedules, &VestingSchedule{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.VestingSchedules[len(x.VestingSchedules)-1]); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 7: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field MaxExtendedRound", wireType) + } + x.MaxExtendedRound = 0 + 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++ + x.MaxExtendedRound |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 8: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ExtendedRoundRate", 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.ExtendedRoundRate = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 9: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field StartTime", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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 + } + if x.StartTime == nil { + x.StartTime = ×tamppb.Timestamp{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.StartTime); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 10: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field EndTime", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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 + } + if x.EndTime == nil { + x.EndTime = ×tamppb.Timestamp{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.EndTime); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + 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_MsgCreateBatchAuctionResponse protoreflect.MessageDescriptor +) + +func init() { + file_modules_fundraising_v1_tx_proto_init() + md_MsgCreateBatchAuctionResponse = File_modules_fundraising_v1_tx_proto.Messages().ByName("MsgCreateBatchAuctionResponse") +} + +var _ protoreflect.Message = (*fastReflection_MsgCreateBatchAuctionResponse)(nil) + +type fastReflection_MsgCreateBatchAuctionResponse MsgCreateBatchAuctionResponse + +func (x *MsgCreateBatchAuctionResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgCreateBatchAuctionResponse)(x) +} + +func (x *MsgCreateBatchAuctionResponse) slowProtoReflect() protoreflect.Message { + mi := &file_modules_fundraising_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_MsgCreateBatchAuctionResponse_messageType fastReflection_MsgCreateBatchAuctionResponse_messageType +var _ protoreflect.MessageType = fastReflection_MsgCreateBatchAuctionResponse_messageType{} + +type fastReflection_MsgCreateBatchAuctionResponse_messageType struct{} + +func (x fastReflection_MsgCreateBatchAuctionResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgCreateBatchAuctionResponse)(nil) +} +func (x fastReflection_MsgCreateBatchAuctionResponse_messageType) New() protoreflect.Message { + return new(fastReflection_MsgCreateBatchAuctionResponse) +} +func (x fastReflection_MsgCreateBatchAuctionResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgCreateBatchAuctionResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgCreateBatchAuctionResponse) Descriptor() protoreflect.MessageDescriptor { + return md_MsgCreateBatchAuctionResponse +} + +// 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_MsgCreateBatchAuctionResponse) Type() protoreflect.MessageType { + return _fastReflection_MsgCreateBatchAuctionResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgCreateBatchAuctionResponse) New() protoreflect.Message { + return new(fastReflection_MsgCreateBatchAuctionResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgCreateBatchAuctionResponse) Interface() protoreflect.ProtoMessage { + return (*MsgCreateBatchAuctionResponse)(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_MsgCreateBatchAuctionResponse) 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_MsgCreateBatchAuctionResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgCreateBatchAuctionResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgCreateBatchAuctionResponse 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_MsgCreateBatchAuctionResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgCreateBatchAuctionResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgCreateBatchAuctionResponse 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_MsgCreateBatchAuctionResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgCreateBatchAuctionResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgCreateBatchAuctionResponse 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_MsgCreateBatchAuctionResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgCreateBatchAuctionResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgCreateBatchAuctionResponse 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_MsgCreateBatchAuctionResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgCreateBatchAuctionResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgCreateBatchAuctionResponse 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_MsgCreateBatchAuctionResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgCreateBatchAuctionResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgCreateBatchAuctionResponse 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_MsgCreateBatchAuctionResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in modules.fundraising.v1.MsgCreateBatchAuctionResponse", 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_MsgCreateBatchAuctionResponse) 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_MsgCreateBatchAuctionResponse) 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_MsgCreateBatchAuctionResponse) 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_MsgCreateBatchAuctionResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgCreateBatchAuctionResponse) + 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().(*MsgCreateBatchAuctionResponse) + 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().(*MsgCreateBatchAuctionResponse) + 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: MsgCreateBatchAuctionResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgCreateBatchAuctionResponse: 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 ( + md_MsgCancelAuction protoreflect.MessageDescriptor + fd_MsgCancelAuction_auctioneer protoreflect.FieldDescriptor + fd_MsgCancelAuction_auction_id protoreflect.FieldDescriptor +) + +func init() { + file_modules_fundraising_v1_tx_proto_init() + md_MsgCancelAuction = File_modules_fundraising_v1_tx_proto.Messages().ByName("MsgCancelAuction") + fd_MsgCancelAuction_auctioneer = md_MsgCancelAuction.Fields().ByName("auctioneer") + fd_MsgCancelAuction_auction_id = md_MsgCancelAuction.Fields().ByName("auction_id") +} + +var _ protoreflect.Message = (*fastReflection_MsgCancelAuction)(nil) + +type fastReflection_MsgCancelAuction MsgCancelAuction + +func (x *MsgCancelAuction) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgCancelAuction)(x) +} + +func (x *MsgCancelAuction) slowProtoReflect() protoreflect.Message { + mi := &file_modules_fundraising_v1_tx_proto_msgTypes[6] + 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_MsgCancelAuction_messageType fastReflection_MsgCancelAuction_messageType +var _ protoreflect.MessageType = fastReflection_MsgCancelAuction_messageType{} + +type fastReflection_MsgCancelAuction_messageType struct{} + +func (x fastReflection_MsgCancelAuction_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgCancelAuction)(nil) +} +func (x fastReflection_MsgCancelAuction_messageType) New() protoreflect.Message { + return new(fastReflection_MsgCancelAuction) +} +func (x fastReflection_MsgCancelAuction_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgCancelAuction +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgCancelAuction) Descriptor() protoreflect.MessageDescriptor { + return md_MsgCancelAuction +} + +// 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_MsgCancelAuction) Type() protoreflect.MessageType { + return _fastReflection_MsgCancelAuction_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgCancelAuction) New() protoreflect.Message { + return new(fastReflection_MsgCancelAuction) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgCancelAuction) Interface() protoreflect.ProtoMessage { + return (*MsgCancelAuction)(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_MsgCancelAuction) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Auctioneer != "" { + value := protoreflect.ValueOfString(x.Auctioneer) + if !f(fd_MsgCancelAuction_auctioneer, value) { + return + } + } + if x.AuctionId != uint64(0) { + value := protoreflect.ValueOfUint64(x.AuctionId) + if !f(fd_MsgCancelAuction_auction_id, 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_MsgCancelAuction) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "modules.fundraising.v1.MsgCancelAuction.auctioneer": + return x.Auctioneer != "" + case "modules.fundraising.v1.MsgCancelAuction.auction_id": + return x.AuctionId != uint64(0) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgCancelAuction")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgCancelAuction 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_MsgCancelAuction) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "modules.fundraising.v1.MsgCancelAuction.auctioneer": + x.Auctioneer = "" + case "modules.fundraising.v1.MsgCancelAuction.auction_id": + x.AuctionId = uint64(0) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgCancelAuction")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgCancelAuction 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_MsgCancelAuction) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "modules.fundraising.v1.MsgCancelAuction.auctioneer": + value := x.Auctioneer + return protoreflect.ValueOfString(value) + case "modules.fundraising.v1.MsgCancelAuction.auction_id": + value := x.AuctionId + return protoreflect.ValueOfUint64(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgCancelAuction")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgCancelAuction 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_MsgCancelAuction) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "modules.fundraising.v1.MsgCancelAuction.auctioneer": + x.Auctioneer = value.Interface().(string) + case "modules.fundraising.v1.MsgCancelAuction.auction_id": + x.AuctionId = value.Uint() + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgCancelAuction")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgCancelAuction 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_MsgCancelAuction) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.MsgCancelAuction.auctioneer": + panic(fmt.Errorf("field auctioneer of message modules.fundraising.v1.MsgCancelAuction is not mutable")) + case "modules.fundraising.v1.MsgCancelAuction.auction_id": + panic(fmt.Errorf("field auction_id of message modules.fundraising.v1.MsgCancelAuction is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgCancelAuction")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgCancelAuction 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_MsgCancelAuction) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.MsgCancelAuction.auctioneer": + return protoreflect.ValueOfString("") + case "modules.fundraising.v1.MsgCancelAuction.auction_id": + return protoreflect.ValueOfUint64(uint64(0)) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgCancelAuction")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgCancelAuction 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_MsgCancelAuction) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in modules.fundraising.v1.MsgCancelAuction", 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_MsgCancelAuction) 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_MsgCancelAuction) 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_MsgCancelAuction) 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_MsgCancelAuction) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgCancelAuction) + 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.Auctioneer) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.AuctionId != 0 { + n += 1 + runtime.Sov(uint64(x.AuctionId)) + } + 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().(*MsgCancelAuction) + 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 x.AuctionId != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.AuctionId)) + i-- + dAtA[i] = 0x10 + } + if len(x.Auctioneer) > 0 { + i -= len(x.Auctioneer) + copy(dAtA[i:], x.Auctioneer) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Auctioneer))) + 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().(*MsgCancelAuction) + 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: MsgCancelAuction: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgCancelAuction: 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 Auctioneer", 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.Auctioneer = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field AuctionId", wireType) + } + x.AuctionId = 0 + 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++ + x.AuctionId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + 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_MsgCancelAuctionResponse protoreflect.MessageDescriptor +) + +func init() { + file_modules_fundraising_v1_tx_proto_init() + md_MsgCancelAuctionResponse = File_modules_fundraising_v1_tx_proto.Messages().ByName("MsgCancelAuctionResponse") +} + +var _ protoreflect.Message = (*fastReflection_MsgCancelAuctionResponse)(nil) + +type fastReflection_MsgCancelAuctionResponse MsgCancelAuctionResponse + +func (x *MsgCancelAuctionResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgCancelAuctionResponse)(x) +} + +func (x *MsgCancelAuctionResponse) slowProtoReflect() protoreflect.Message { + mi := &file_modules_fundraising_v1_tx_proto_msgTypes[7] + 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_MsgCancelAuctionResponse_messageType fastReflection_MsgCancelAuctionResponse_messageType +var _ protoreflect.MessageType = fastReflection_MsgCancelAuctionResponse_messageType{} + +type fastReflection_MsgCancelAuctionResponse_messageType struct{} + +func (x fastReflection_MsgCancelAuctionResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgCancelAuctionResponse)(nil) +} +func (x fastReflection_MsgCancelAuctionResponse_messageType) New() protoreflect.Message { + return new(fastReflection_MsgCancelAuctionResponse) +} +func (x fastReflection_MsgCancelAuctionResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgCancelAuctionResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgCancelAuctionResponse) Descriptor() protoreflect.MessageDescriptor { + return md_MsgCancelAuctionResponse +} + +// 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_MsgCancelAuctionResponse) Type() protoreflect.MessageType { + return _fastReflection_MsgCancelAuctionResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgCancelAuctionResponse) New() protoreflect.Message { + return new(fastReflection_MsgCancelAuctionResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgCancelAuctionResponse) Interface() protoreflect.ProtoMessage { + return (*MsgCancelAuctionResponse)(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_MsgCancelAuctionResponse) 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_MsgCancelAuctionResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgCancelAuctionResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgCancelAuctionResponse 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_MsgCancelAuctionResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgCancelAuctionResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgCancelAuctionResponse 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_MsgCancelAuctionResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgCancelAuctionResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgCancelAuctionResponse 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_MsgCancelAuctionResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgCancelAuctionResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgCancelAuctionResponse 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_MsgCancelAuctionResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgCancelAuctionResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgCancelAuctionResponse 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_MsgCancelAuctionResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgCancelAuctionResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgCancelAuctionResponse 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_MsgCancelAuctionResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in modules.fundraising.v1.MsgCancelAuctionResponse", 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_MsgCancelAuctionResponse) 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_MsgCancelAuctionResponse) 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_MsgCancelAuctionResponse) 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_MsgCancelAuctionResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgCancelAuctionResponse) + 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().(*MsgCancelAuctionResponse) + 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().(*MsgCancelAuctionResponse) + 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: MsgCancelAuctionResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgCancelAuctionResponse: 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 ( + md_MsgPlaceBid protoreflect.MessageDescriptor + fd_MsgPlaceBid_auction_id protoreflect.FieldDescriptor + fd_MsgPlaceBid_bidder protoreflect.FieldDescriptor + fd_MsgPlaceBid_bid_type protoreflect.FieldDescriptor + fd_MsgPlaceBid_price protoreflect.FieldDescriptor + fd_MsgPlaceBid_coin protoreflect.FieldDescriptor +) + +func init() { + file_modules_fundraising_v1_tx_proto_init() + md_MsgPlaceBid = File_modules_fundraising_v1_tx_proto.Messages().ByName("MsgPlaceBid") + fd_MsgPlaceBid_auction_id = md_MsgPlaceBid.Fields().ByName("auction_id") + fd_MsgPlaceBid_bidder = md_MsgPlaceBid.Fields().ByName("bidder") + fd_MsgPlaceBid_bid_type = md_MsgPlaceBid.Fields().ByName("bid_type") + fd_MsgPlaceBid_price = md_MsgPlaceBid.Fields().ByName("price") + fd_MsgPlaceBid_coin = md_MsgPlaceBid.Fields().ByName("coin") +} + +var _ protoreflect.Message = (*fastReflection_MsgPlaceBid)(nil) + +type fastReflection_MsgPlaceBid MsgPlaceBid + +func (x *MsgPlaceBid) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgPlaceBid)(x) +} + +func (x *MsgPlaceBid) slowProtoReflect() protoreflect.Message { + mi := &file_modules_fundraising_v1_tx_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgPlaceBid_messageType fastReflection_MsgPlaceBid_messageType +var _ protoreflect.MessageType = fastReflection_MsgPlaceBid_messageType{} + +type fastReflection_MsgPlaceBid_messageType struct{} + +func (x fastReflection_MsgPlaceBid_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgPlaceBid)(nil) +} +func (x fastReflection_MsgPlaceBid_messageType) New() protoreflect.Message { + return new(fastReflection_MsgPlaceBid) +} +func (x fastReflection_MsgPlaceBid_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgPlaceBid +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgPlaceBid) Descriptor() protoreflect.MessageDescriptor { + return md_MsgPlaceBid +} + +// 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_MsgPlaceBid) Type() protoreflect.MessageType { + return _fastReflection_MsgPlaceBid_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgPlaceBid) New() protoreflect.Message { + return new(fastReflection_MsgPlaceBid) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgPlaceBid) Interface() protoreflect.ProtoMessage { + return (*MsgPlaceBid)(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_MsgPlaceBid) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.AuctionId != uint64(0) { + value := protoreflect.ValueOfUint64(x.AuctionId) + if !f(fd_MsgPlaceBid_auction_id, value) { + return + } + } + if x.Bidder != "" { + value := protoreflect.ValueOfString(x.Bidder) + if !f(fd_MsgPlaceBid_bidder, value) { + return + } + } + if x.BidType != 0 { + value := protoreflect.ValueOfEnum((protoreflect.EnumNumber)(x.BidType)) + if !f(fd_MsgPlaceBid_bid_type, value) { + return + } + } + if x.Price != "" { + value := protoreflect.ValueOfString(x.Price) + if !f(fd_MsgPlaceBid_price, value) { + return + } + } + if x.Coin != nil { + value := protoreflect.ValueOfMessage(x.Coin.ProtoReflect()) + if !f(fd_MsgPlaceBid_coin, 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_MsgPlaceBid) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "modules.fundraising.v1.MsgPlaceBid.auction_id": + return x.AuctionId != uint64(0) + case "modules.fundraising.v1.MsgPlaceBid.bidder": + return x.Bidder != "" + case "modules.fundraising.v1.MsgPlaceBid.bid_type": + return x.BidType != 0 + case "modules.fundraising.v1.MsgPlaceBid.price": + return x.Price != "" + case "modules.fundraising.v1.MsgPlaceBid.coin": + return x.Coin != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgPlaceBid")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgPlaceBid 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_MsgPlaceBid) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "modules.fundraising.v1.MsgPlaceBid.auction_id": + x.AuctionId = uint64(0) + case "modules.fundraising.v1.MsgPlaceBid.bidder": + x.Bidder = "" + case "modules.fundraising.v1.MsgPlaceBid.bid_type": + x.BidType = 0 + case "modules.fundraising.v1.MsgPlaceBid.price": + x.Price = "" + case "modules.fundraising.v1.MsgPlaceBid.coin": + x.Coin = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgPlaceBid")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgPlaceBid 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_MsgPlaceBid) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "modules.fundraising.v1.MsgPlaceBid.auction_id": + value := x.AuctionId + return protoreflect.ValueOfUint64(value) + case "modules.fundraising.v1.MsgPlaceBid.bidder": + value := x.Bidder + return protoreflect.ValueOfString(value) + case "modules.fundraising.v1.MsgPlaceBid.bid_type": + value := x.BidType + return protoreflect.ValueOfEnum((protoreflect.EnumNumber)(value)) + case "modules.fundraising.v1.MsgPlaceBid.price": + value := x.Price + return protoreflect.ValueOfString(value) + case "modules.fundraising.v1.MsgPlaceBid.coin": + value := x.Coin + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgPlaceBid")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgPlaceBid 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_MsgPlaceBid) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "modules.fundraising.v1.MsgPlaceBid.auction_id": + x.AuctionId = value.Uint() + case "modules.fundraising.v1.MsgPlaceBid.bidder": + x.Bidder = value.Interface().(string) + case "modules.fundraising.v1.MsgPlaceBid.bid_type": + x.BidType = (BidType)(value.Enum()) + case "modules.fundraising.v1.MsgPlaceBid.price": + x.Price = value.Interface().(string) + case "modules.fundraising.v1.MsgPlaceBid.coin": + x.Coin = value.Message().Interface().(*v1beta1.Coin) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgPlaceBid")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgPlaceBid 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_MsgPlaceBid) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.MsgPlaceBid.coin": + if x.Coin == nil { + x.Coin = new(v1beta1.Coin) + } + return protoreflect.ValueOfMessage(x.Coin.ProtoReflect()) + case "modules.fundraising.v1.MsgPlaceBid.auction_id": + panic(fmt.Errorf("field auction_id of message modules.fundraising.v1.MsgPlaceBid is not mutable")) + case "modules.fundraising.v1.MsgPlaceBid.bidder": + panic(fmt.Errorf("field bidder of message modules.fundraising.v1.MsgPlaceBid is not mutable")) + case "modules.fundraising.v1.MsgPlaceBid.bid_type": + panic(fmt.Errorf("field bid_type of message modules.fundraising.v1.MsgPlaceBid is not mutable")) + case "modules.fundraising.v1.MsgPlaceBid.price": + panic(fmt.Errorf("field price of message modules.fundraising.v1.MsgPlaceBid is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgPlaceBid")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgPlaceBid 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_MsgPlaceBid) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.MsgPlaceBid.auction_id": + return protoreflect.ValueOfUint64(uint64(0)) + case "modules.fundraising.v1.MsgPlaceBid.bidder": + return protoreflect.ValueOfString("") + case "modules.fundraising.v1.MsgPlaceBid.bid_type": + return protoreflect.ValueOfEnum(0) + case "modules.fundraising.v1.MsgPlaceBid.price": + return protoreflect.ValueOfString("") + case "modules.fundraising.v1.MsgPlaceBid.coin": + m := new(v1beta1.Coin) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgPlaceBid")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgPlaceBid 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_MsgPlaceBid) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in modules.fundraising.v1.MsgPlaceBid", 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_MsgPlaceBid) 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_MsgPlaceBid) 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_MsgPlaceBid) 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_MsgPlaceBid) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgPlaceBid) + 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.AuctionId != 0 { + n += 1 + runtime.Sov(uint64(x.AuctionId)) + } + l = len(x.Bidder) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.BidType != 0 { + n += 1 + runtime.Sov(uint64(x.BidType)) + } + l = len(x.Price) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.Coin != nil { + l = options.Size(x.Coin) + 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().(*MsgPlaceBid) + 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 x.Coin != nil { + encoded, err := options.Marshal(x.Coin) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x2a + } + if len(x.Price) > 0 { + i -= len(x.Price) + copy(dAtA[i:], x.Price) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Price))) + i-- + dAtA[i] = 0x22 + } + if x.BidType != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.BidType)) + i-- + dAtA[i] = 0x18 + } + if len(x.Bidder) > 0 { + i -= len(x.Bidder) + copy(dAtA[i:], x.Bidder) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Bidder))) + i-- + dAtA[i] = 0x12 + } + if x.AuctionId != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.AuctionId)) + i-- + dAtA[i] = 0x8 + } + 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().(*MsgPlaceBid) + 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: MsgPlaceBid: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgPlaceBid: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field AuctionId", wireType) + } + x.AuctionId = 0 + 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++ + x.AuctionId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Bidder", 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.Bidder = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field BidType", wireType) + } + x.BidType = 0 + 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++ + x.BidType |= BidType(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Price", 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.Price = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Coin", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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 + } + if x.Coin == nil { + x.Coin = &v1beta1.Coin{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Coin); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + 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_MsgPlaceBidResponse protoreflect.MessageDescriptor +) + +func init() { + file_modules_fundraising_v1_tx_proto_init() + md_MsgPlaceBidResponse = File_modules_fundraising_v1_tx_proto.Messages().ByName("MsgPlaceBidResponse") +} + +var _ protoreflect.Message = (*fastReflection_MsgPlaceBidResponse)(nil) + +type fastReflection_MsgPlaceBidResponse MsgPlaceBidResponse + +func (x *MsgPlaceBidResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgPlaceBidResponse)(x) +} + +func (x *MsgPlaceBidResponse) slowProtoReflect() protoreflect.Message { + mi := &file_modules_fundraising_v1_tx_proto_msgTypes[9] + 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_MsgPlaceBidResponse_messageType fastReflection_MsgPlaceBidResponse_messageType +var _ protoreflect.MessageType = fastReflection_MsgPlaceBidResponse_messageType{} + +type fastReflection_MsgPlaceBidResponse_messageType struct{} + +func (x fastReflection_MsgPlaceBidResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgPlaceBidResponse)(nil) +} +func (x fastReflection_MsgPlaceBidResponse_messageType) New() protoreflect.Message { + return new(fastReflection_MsgPlaceBidResponse) +} +func (x fastReflection_MsgPlaceBidResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgPlaceBidResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgPlaceBidResponse) Descriptor() protoreflect.MessageDescriptor { + return md_MsgPlaceBidResponse +} + +// 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_MsgPlaceBidResponse) Type() protoreflect.MessageType { + return _fastReflection_MsgPlaceBidResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgPlaceBidResponse) New() protoreflect.Message { + return new(fastReflection_MsgPlaceBidResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgPlaceBidResponse) Interface() protoreflect.ProtoMessage { + return (*MsgPlaceBidResponse)(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_MsgPlaceBidResponse) 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_MsgPlaceBidResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgPlaceBidResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgPlaceBidResponse 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_MsgPlaceBidResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgPlaceBidResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgPlaceBidResponse 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_MsgPlaceBidResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgPlaceBidResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgPlaceBidResponse 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_MsgPlaceBidResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgPlaceBidResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgPlaceBidResponse 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_MsgPlaceBidResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgPlaceBidResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgPlaceBidResponse 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_MsgPlaceBidResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgPlaceBidResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgPlaceBidResponse 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_MsgPlaceBidResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in modules.fundraising.v1.MsgPlaceBidResponse", 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_MsgPlaceBidResponse) 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_MsgPlaceBidResponse) 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_MsgPlaceBidResponse) 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_MsgPlaceBidResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgPlaceBidResponse) + 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().(*MsgPlaceBidResponse) + 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().(*MsgPlaceBidResponse) + 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: MsgPlaceBidResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgPlaceBidResponse: 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 ( + md_MsgModifyBid protoreflect.MessageDescriptor + fd_MsgModifyBid_auction_id protoreflect.FieldDescriptor + fd_MsgModifyBid_bidder protoreflect.FieldDescriptor + fd_MsgModifyBid_bid_id protoreflect.FieldDescriptor + fd_MsgModifyBid_price protoreflect.FieldDescriptor + fd_MsgModifyBid_coin protoreflect.FieldDescriptor +) + +func init() { + file_modules_fundraising_v1_tx_proto_init() + md_MsgModifyBid = File_modules_fundraising_v1_tx_proto.Messages().ByName("MsgModifyBid") + fd_MsgModifyBid_auction_id = md_MsgModifyBid.Fields().ByName("auction_id") + fd_MsgModifyBid_bidder = md_MsgModifyBid.Fields().ByName("bidder") + fd_MsgModifyBid_bid_id = md_MsgModifyBid.Fields().ByName("bid_id") + fd_MsgModifyBid_price = md_MsgModifyBid.Fields().ByName("price") + fd_MsgModifyBid_coin = md_MsgModifyBid.Fields().ByName("coin") +} + +var _ protoreflect.Message = (*fastReflection_MsgModifyBid)(nil) + +type fastReflection_MsgModifyBid MsgModifyBid + +func (x *MsgModifyBid) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgModifyBid)(x) +} + +func (x *MsgModifyBid) slowProtoReflect() protoreflect.Message { + mi := &file_modules_fundraising_v1_tx_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgModifyBid_messageType fastReflection_MsgModifyBid_messageType +var _ protoreflect.MessageType = fastReflection_MsgModifyBid_messageType{} + +type fastReflection_MsgModifyBid_messageType struct{} + +func (x fastReflection_MsgModifyBid_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgModifyBid)(nil) +} +func (x fastReflection_MsgModifyBid_messageType) New() protoreflect.Message { + return new(fastReflection_MsgModifyBid) +} +func (x fastReflection_MsgModifyBid_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgModifyBid +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgModifyBid) Descriptor() protoreflect.MessageDescriptor { + return md_MsgModifyBid +} + +// 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_MsgModifyBid) Type() protoreflect.MessageType { + return _fastReflection_MsgModifyBid_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgModifyBid) New() protoreflect.Message { + return new(fastReflection_MsgModifyBid) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgModifyBid) Interface() protoreflect.ProtoMessage { + return (*MsgModifyBid)(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_MsgModifyBid) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.AuctionId != uint64(0) { + value := protoreflect.ValueOfUint64(x.AuctionId) + if !f(fd_MsgModifyBid_auction_id, value) { + return + } + } + if x.Bidder != "" { + value := protoreflect.ValueOfString(x.Bidder) + if !f(fd_MsgModifyBid_bidder, value) { + return + } + } + if x.BidId != uint64(0) { + value := protoreflect.ValueOfUint64(x.BidId) + if !f(fd_MsgModifyBid_bid_id, value) { + return + } + } + if x.Price != "" { + value := protoreflect.ValueOfString(x.Price) + if !f(fd_MsgModifyBid_price, value) { + return + } + } + if x.Coin != nil { + value := protoreflect.ValueOfMessage(x.Coin.ProtoReflect()) + if !f(fd_MsgModifyBid_coin, 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_MsgModifyBid) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "modules.fundraising.v1.MsgModifyBid.auction_id": + return x.AuctionId != uint64(0) + case "modules.fundraising.v1.MsgModifyBid.bidder": + return x.Bidder != "" + case "modules.fundraising.v1.MsgModifyBid.bid_id": + return x.BidId != uint64(0) + case "modules.fundraising.v1.MsgModifyBid.price": + return x.Price != "" + case "modules.fundraising.v1.MsgModifyBid.coin": + return x.Coin != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgModifyBid")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgModifyBid 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_MsgModifyBid) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "modules.fundraising.v1.MsgModifyBid.auction_id": + x.AuctionId = uint64(0) + case "modules.fundraising.v1.MsgModifyBid.bidder": + x.Bidder = "" + case "modules.fundraising.v1.MsgModifyBid.bid_id": + x.BidId = uint64(0) + case "modules.fundraising.v1.MsgModifyBid.price": + x.Price = "" + case "modules.fundraising.v1.MsgModifyBid.coin": + x.Coin = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgModifyBid")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgModifyBid 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_MsgModifyBid) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "modules.fundraising.v1.MsgModifyBid.auction_id": + value := x.AuctionId + return protoreflect.ValueOfUint64(value) + case "modules.fundraising.v1.MsgModifyBid.bidder": + value := x.Bidder + return protoreflect.ValueOfString(value) + case "modules.fundraising.v1.MsgModifyBid.bid_id": + value := x.BidId + return protoreflect.ValueOfUint64(value) + case "modules.fundraising.v1.MsgModifyBid.price": + value := x.Price + return protoreflect.ValueOfString(value) + case "modules.fundraising.v1.MsgModifyBid.coin": + value := x.Coin + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgModifyBid")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgModifyBid 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_MsgModifyBid) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "modules.fundraising.v1.MsgModifyBid.auction_id": + x.AuctionId = value.Uint() + case "modules.fundraising.v1.MsgModifyBid.bidder": + x.Bidder = value.Interface().(string) + case "modules.fundraising.v1.MsgModifyBid.bid_id": + x.BidId = value.Uint() + case "modules.fundraising.v1.MsgModifyBid.price": + x.Price = value.Interface().(string) + case "modules.fundraising.v1.MsgModifyBid.coin": + x.Coin = value.Message().Interface().(*v1beta1.Coin) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgModifyBid")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgModifyBid 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_MsgModifyBid) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.MsgModifyBid.coin": + if x.Coin == nil { + x.Coin = new(v1beta1.Coin) + } + return protoreflect.ValueOfMessage(x.Coin.ProtoReflect()) + case "modules.fundraising.v1.MsgModifyBid.auction_id": + panic(fmt.Errorf("field auction_id of message modules.fundraising.v1.MsgModifyBid is not mutable")) + case "modules.fundraising.v1.MsgModifyBid.bidder": + panic(fmt.Errorf("field bidder of message modules.fundraising.v1.MsgModifyBid is not mutable")) + case "modules.fundraising.v1.MsgModifyBid.bid_id": + panic(fmt.Errorf("field bid_id of message modules.fundraising.v1.MsgModifyBid is not mutable")) + case "modules.fundraising.v1.MsgModifyBid.price": + panic(fmt.Errorf("field price of message modules.fundraising.v1.MsgModifyBid is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgModifyBid")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgModifyBid 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_MsgModifyBid) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.MsgModifyBid.auction_id": + return protoreflect.ValueOfUint64(uint64(0)) + case "modules.fundraising.v1.MsgModifyBid.bidder": + return protoreflect.ValueOfString("") + case "modules.fundraising.v1.MsgModifyBid.bid_id": + return protoreflect.ValueOfUint64(uint64(0)) + case "modules.fundraising.v1.MsgModifyBid.price": + return protoreflect.ValueOfString("") + case "modules.fundraising.v1.MsgModifyBid.coin": + m := new(v1beta1.Coin) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgModifyBid")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgModifyBid 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_MsgModifyBid) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in modules.fundraising.v1.MsgModifyBid", 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_MsgModifyBid) 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_MsgModifyBid) 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_MsgModifyBid) 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_MsgModifyBid) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgModifyBid) + 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.AuctionId != 0 { + n += 1 + runtime.Sov(uint64(x.AuctionId)) + } + l = len(x.Bidder) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.BidId != 0 { + n += 1 + runtime.Sov(uint64(x.BidId)) + } + l = len(x.Price) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.Coin != nil { + l = options.Size(x.Coin) + 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().(*MsgModifyBid) + 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 x.Coin != nil { + encoded, err := options.Marshal(x.Coin) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x2a + } + if len(x.Price) > 0 { + i -= len(x.Price) + copy(dAtA[i:], x.Price) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Price))) + i-- + dAtA[i] = 0x22 + } + if x.BidId != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.BidId)) + i-- + dAtA[i] = 0x18 + } + if len(x.Bidder) > 0 { + i -= len(x.Bidder) + copy(dAtA[i:], x.Bidder) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Bidder))) + i-- + dAtA[i] = 0x12 + } + if x.AuctionId != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.AuctionId)) + i-- + dAtA[i] = 0x8 + } + 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().(*MsgModifyBid) + 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: MsgModifyBid: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgModifyBid: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field AuctionId", wireType) + } + x.AuctionId = 0 + 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++ + x.AuctionId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Bidder", 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.Bidder = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field BidId", wireType) + } + x.BidId = 0 + 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++ + x.BidId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Price", 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.Price = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Coin", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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 + } + if x.Coin == nil { + x.Coin = &v1beta1.Coin{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Coin); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + 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_MsgModifyBidResponse protoreflect.MessageDescriptor +) + +func init() { + file_modules_fundraising_v1_tx_proto_init() + md_MsgModifyBidResponse = File_modules_fundraising_v1_tx_proto.Messages().ByName("MsgModifyBidResponse") +} + +var _ protoreflect.Message = (*fastReflection_MsgModifyBidResponse)(nil) + +type fastReflection_MsgModifyBidResponse MsgModifyBidResponse + +func (x *MsgModifyBidResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgModifyBidResponse)(x) +} + +func (x *MsgModifyBidResponse) slowProtoReflect() protoreflect.Message { + mi := &file_modules_fundraising_v1_tx_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgModifyBidResponse_messageType fastReflection_MsgModifyBidResponse_messageType +var _ protoreflect.MessageType = fastReflection_MsgModifyBidResponse_messageType{} + +type fastReflection_MsgModifyBidResponse_messageType struct{} + +func (x fastReflection_MsgModifyBidResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgModifyBidResponse)(nil) +} +func (x fastReflection_MsgModifyBidResponse_messageType) New() protoreflect.Message { + return new(fastReflection_MsgModifyBidResponse) +} +func (x fastReflection_MsgModifyBidResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgModifyBidResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgModifyBidResponse) Descriptor() protoreflect.MessageDescriptor { + return md_MsgModifyBidResponse +} + +// 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_MsgModifyBidResponse) Type() protoreflect.MessageType { + return _fastReflection_MsgModifyBidResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgModifyBidResponse) New() protoreflect.Message { + return new(fastReflection_MsgModifyBidResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgModifyBidResponse) Interface() protoreflect.ProtoMessage { + return (*MsgModifyBidResponse)(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_MsgModifyBidResponse) 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_MsgModifyBidResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgModifyBidResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgModifyBidResponse 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_MsgModifyBidResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgModifyBidResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgModifyBidResponse 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_MsgModifyBidResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgModifyBidResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgModifyBidResponse 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_MsgModifyBidResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgModifyBidResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgModifyBidResponse 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_MsgModifyBidResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgModifyBidResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgModifyBidResponse 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_MsgModifyBidResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgModifyBidResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgModifyBidResponse 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_MsgModifyBidResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in modules.fundraising.v1.MsgModifyBidResponse", 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_MsgModifyBidResponse) 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_MsgModifyBidResponse) 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_MsgModifyBidResponse) 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_MsgModifyBidResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgModifyBidResponse) + 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().(*MsgModifyBidResponse) + 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().(*MsgModifyBidResponse) + 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: MsgModifyBidResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgModifyBidResponse: 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 ( + md_MsgAddAllowedBidder protoreflect.MessageDescriptor + fd_MsgAddAllowedBidder_auction_id protoreflect.FieldDescriptor + fd_MsgAddAllowedBidder_allowed_bidder protoreflect.FieldDescriptor +) + +func init() { + file_modules_fundraising_v1_tx_proto_init() + md_MsgAddAllowedBidder = File_modules_fundraising_v1_tx_proto.Messages().ByName("MsgAddAllowedBidder") + fd_MsgAddAllowedBidder_auction_id = md_MsgAddAllowedBidder.Fields().ByName("auction_id") + fd_MsgAddAllowedBidder_allowed_bidder = md_MsgAddAllowedBidder.Fields().ByName("allowed_bidder") +} + +var _ protoreflect.Message = (*fastReflection_MsgAddAllowedBidder)(nil) + +type fastReflection_MsgAddAllowedBidder MsgAddAllowedBidder + +func (x *MsgAddAllowedBidder) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgAddAllowedBidder)(x) +} + +func (x *MsgAddAllowedBidder) slowProtoReflect() protoreflect.Message { + mi := &file_modules_fundraising_v1_tx_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgAddAllowedBidder_messageType fastReflection_MsgAddAllowedBidder_messageType +var _ protoreflect.MessageType = fastReflection_MsgAddAllowedBidder_messageType{} + +type fastReflection_MsgAddAllowedBidder_messageType struct{} + +func (x fastReflection_MsgAddAllowedBidder_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgAddAllowedBidder)(nil) +} +func (x fastReflection_MsgAddAllowedBidder_messageType) New() protoreflect.Message { + return new(fastReflection_MsgAddAllowedBidder) +} +func (x fastReflection_MsgAddAllowedBidder_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgAddAllowedBidder +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgAddAllowedBidder) Descriptor() protoreflect.MessageDescriptor { + return md_MsgAddAllowedBidder +} + +// 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_MsgAddAllowedBidder) Type() protoreflect.MessageType { + return _fastReflection_MsgAddAllowedBidder_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgAddAllowedBidder) New() protoreflect.Message { + return new(fastReflection_MsgAddAllowedBidder) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgAddAllowedBidder) Interface() protoreflect.ProtoMessage { + return (*MsgAddAllowedBidder)(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_MsgAddAllowedBidder) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.AuctionId != uint64(0) { + value := protoreflect.ValueOfUint64(x.AuctionId) + if !f(fd_MsgAddAllowedBidder_auction_id, value) { + return + } + } + if x.AllowedBidder != nil { + value := protoreflect.ValueOfMessage(x.AllowedBidder.ProtoReflect()) + if !f(fd_MsgAddAllowedBidder_allowed_bidder, 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_MsgAddAllowedBidder) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "modules.fundraising.v1.MsgAddAllowedBidder.auction_id": + return x.AuctionId != uint64(0) + case "modules.fundraising.v1.MsgAddAllowedBidder.allowed_bidder": + return x.AllowedBidder != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgAddAllowedBidder")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgAddAllowedBidder 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_MsgAddAllowedBidder) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "modules.fundraising.v1.MsgAddAllowedBidder.auction_id": + x.AuctionId = uint64(0) + case "modules.fundraising.v1.MsgAddAllowedBidder.allowed_bidder": + x.AllowedBidder = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgAddAllowedBidder")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgAddAllowedBidder 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_MsgAddAllowedBidder) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "modules.fundraising.v1.MsgAddAllowedBidder.auction_id": + value := x.AuctionId + return protoreflect.ValueOfUint64(value) + case "modules.fundraising.v1.MsgAddAllowedBidder.allowed_bidder": + value := x.AllowedBidder + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgAddAllowedBidder")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgAddAllowedBidder 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_MsgAddAllowedBidder) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "modules.fundraising.v1.MsgAddAllowedBidder.auction_id": + x.AuctionId = value.Uint() + case "modules.fundraising.v1.MsgAddAllowedBidder.allowed_bidder": + x.AllowedBidder = value.Message().Interface().(*AllowedBidder) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgAddAllowedBidder")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgAddAllowedBidder 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_MsgAddAllowedBidder) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.MsgAddAllowedBidder.allowed_bidder": + if x.AllowedBidder == nil { + x.AllowedBidder = new(AllowedBidder) + } + return protoreflect.ValueOfMessage(x.AllowedBidder.ProtoReflect()) + case "modules.fundraising.v1.MsgAddAllowedBidder.auction_id": + panic(fmt.Errorf("field auction_id of message modules.fundraising.v1.MsgAddAllowedBidder is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgAddAllowedBidder")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgAddAllowedBidder 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_MsgAddAllowedBidder) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.MsgAddAllowedBidder.auction_id": + return protoreflect.ValueOfUint64(uint64(0)) + case "modules.fundraising.v1.MsgAddAllowedBidder.allowed_bidder": + m := new(AllowedBidder) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgAddAllowedBidder")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgAddAllowedBidder 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_MsgAddAllowedBidder) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in modules.fundraising.v1.MsgAddAllowedBidder", 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_MsgAddAllowedBidder) 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_MsgAddAllowedBidder) 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_MsgAddAllowedBidder) 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_MsgAddAllowedBidder) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgAddAllowedBidder) + 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.AuctionId != 0 { + n += 1 + runtime.Sov(uint64(x.AuctionId)) + } + if x.AllowedBidder != nil { + l = options.Size(x.AllowedBidder) + 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().(*MsgAddAllowedBidder) + 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 x.AllowedBidder != nil { + encoded, err := options.Marshal(x.AllowedBidder) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x12 + } + if x.AuctionId != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.AuctionId)) + i-- + dAtA[i] = 0x8 + } + 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().(*MsgAddAllowedBidder) + 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: MsgAddAllowedBidder: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgAddAllowedBidder: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field AuctionId", wireType) + } + x.AuctionId = 0 + 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++ + x.AuctionId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field AllowedBidder", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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 + } + if x.AllowedBidder == nil { + x.AllowedBidder = &AllowedBidder{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.AllowedBidder); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + 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_MsgAddAllowedBidderResponse protoreflect.MessageDescriptor +) + +func init() { + file_modules_fundraising_v1_tx_proto_init() + md_MsgAddAllowedBidderResponse = File_modules_fundraising_v1_tx_proto.Messages().ByName("MsgAddAllowedBidderResponse") +} + +var _ protoreflect.Message = (*fastReflection_MsgAddAllowedBidderResponse)(nil) + +type fastReflection_MsgAddAllowedBidderResponse MsgAddAllowedBidderResponse + +func (x *MsgAddAllowedBidderResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgAddAllowedBidderResponse)(x) +} + +func (x *MsgAddAllowedBidderResponse) slowProtoReflect() protoreflect.Message { + mi := &file_modules_fundraising_v1_tx_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgAddAllowedBidderResponse_messageType fastReflection_MsgAddAllowedBidderResponse_messageType +var _ protoreflect.MessageType = fastReflection_MsgAddAllowedBidderResponse_messageType{} + +type fastReflection_MsgAddAllowedBidderResponse_messageType struct{} + +func (x fastReflection_MsgAddAllowedBidderResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgAddAllowedBidderResponse)(nil) +} +func (x fastReflection_MsgAddAllowedBidderResponse_messageType) New() protoreflect.Message { + return new(fastReflection_MsgAddAllowedBidderResponse) +} +func (x fastReflection_MsgAddAllowedBidderResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgAddAllowedBidderResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgAddAllowedBidderResponse) Descriptor() protoreflect.MessageDescriptor { + return md_MsgAddAllowedBidderResponse +} + +// 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_MsgAddAllowedBidderResponse) Type() protoreflect.MessageType { + return _fastReflection_MsgAddAllowedBidderResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgAddAllowedBidderResponse) New() protoreflect.Message { + return new(fastReflection_MsgAddAllowedBidderResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgAddAllowedBidderResponse) Interface() protoreflect.ProtoMessage { + return (*MsgAddAllowedBidderResponse)(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_MsgAddAllowedBidderResponse) 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_MsgAddAllowedBidderResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgAddAllowedBidderResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgAddAllowedBidderResponse 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_MsgAddAllowedBidderResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgAddAllowedBidderResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgAddAllowedBidderResponse 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_MsgAddAllowedBidderResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgAddAllowedBidderResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgAddAllowedBidderResponse 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_MsgAddAllowedBidderResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgAddAllowedBidderResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgAddAllowedBidderResponse 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_MsgAddAllowedBidderResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgAddAllowedBidderResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgAddAllowedBidderResponse 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_MsgAddAllowedBidderResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.MsgAddAllowedBidderResponse")) + } + panic(fmt.Errorf("message modules.fundraising.v1.MsgAddAllowedBidderResponse 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_MsgAddAllowedBidderResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in modules.fundraising.v1.MsgAddAllowedBidderResponse", 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_MsgAddAllowedBidderResponse) 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_MsgAddAllowedBidderResponse) 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_MsgAddAllowedBidderResponse) 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_MsgAddAllowedBidderResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgAddAllowedBidderResponse) + 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().(*MsgAddAllowedBidderResponse) + 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().(*MsgAddAllowedBidderResponse) + 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: MsgAddAllowedBidderResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgAddAllowedBidderResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: modules/fundraising/v1/tx.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// MsgUpdateParams is the Msg/UpdateParams request type. +type MsgUpdateParams struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // authority is the address that controls the module (defaults to x/gov unless overwritten). + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` + // NOTE: All parameters must be supplied. + Params *Params `protobuf:"bytes,2,opt,name=params,proto3" json:"params,omitempty"` +} + +func (x *MsgUpdateParams) Reset() { + *x = MsgUpdateParams{} + if protoimpl.UnsafeEnabled { + mi := &file_modules_fundraising_v1_tx_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgUpdateParams) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgUpdateParams) ProtoMessage() {} + +// Deprecated: Use MsgUpdateParams.ProtoReflect.Descriptor instead. +func (*MsgUpdateParams) Descriptor() ([]byte, []int) { + return file_modules_fundraising_v1_tx_proto_rawDescGZIP(), []int{0} +} + +func (x *MsgUpdateParams) GetAuthority() string { + if x != nil { + return x.Authority + } + return "" +} + +func (x *MsgUpdateParams) GetParams() *Params { + if x != nil { + return x.Params + } + return nil +} + +// MsgUpdateParamsResponse defines the response structure for executing a +// MsgUpdateParams message. +type MsgUpdateParamsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *MsgUpdateParamsResponse) Reset() { + *x = MsgUpdateParamsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_modules_fundraising_v1_tx_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgUpdateParamsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgUpdateParamsResponse) ProtoMessage() {} + +// Deprecated: Use MsgUpdateParamsResponse.ProtoReflect.Descriptor instead. +func (*MsgUpdateParamsResponse) Descriptor() ([]byte, []int) { + return file_modules_fundraising_v1_tx_proto_rawDescGZIP(), []int{1} +} + +// MsgCreateFixedPriceAuction defines a SDK message for creating a fixed price +// auction. +type MsgCreateFixedPriceAuction struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // auctioneer specifies the bech32-encoded address that creates the auction + Auctioneer string `protobuf:"bytes,1,opt,name=auctioneer,proto3" json:"auctioneer,omitempty"` + // start_price specifies the starting price of the auction + StartPrice string `protobuf:"bytes,2,opt,name=start_price,json=startPrice,proto3" json:"start_price,omitempty"` + // selling_coin specifies the selling coin for the auction + SellingCoin *v1beta1.Coin `protobuf:"bytes,3,opt,name=selling_coin,json=sellingCoin,proto3" json:"selling_coin,omitempty"` + // paying_coin_denom specifies the paying coin denom that bidders use to bid + // for + PayingCoinDenom string `protobuf:"bytes,4,opt,name=paying_coin_denom,json=payingCoinDenom,proto3" json:"paying_coin_denom,omitempty"` + // vesting_schedules specifies the vesting schedules for the auction + VestingSchedules []*VestingSchedule `protobuf:"bytes,5,rep,name=vesting_schedules,json=vestingSchedules,proto3" json:"vesting_schedules,omitempty"` + // start_time specifies the start time of the plan + StartTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` + // end_time specifies the end time of the plan + EndTime *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` +} + +func (x *MsgCreateFixedPriceAuction) Reset() { + *x = MsgCreateFixedPriceAuction{} + if protoimpl.UnsafeEnabled { + mi := &file_modules_fundraising_v1_tx_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgCreateFixedPriceAuction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgCreateFixedPriceAuction) ProtoMessage() {} + +// Deprecated: Use MsgCreateFixedPriceAuction.ProtoReflect.Descriptor instead. +func (*MsgCreateFixedPriceAuction) Descriptor() ([]byte, []int) { + return file_modules_fundraising_v1_tx_proto_rawDescGZIP(), []int{2} +} + +func (x *MsgCreateFixedPriceAuction) GetAuctioneer() string { + if x != nil { + return x.Auctioneer + } + return "" +} + +func (x *MsgCreateFixedPriceAuction) GetStartPrice() string { + if x != nil { + return x.StartPrice + } + return "" +} + +func (x *MsgCreateFixedPriceAuction) GetSellingCoin() *v1beta1.Coin { + if x != nil { + return x.SellingCoin + } + return nil +} + +func (x *MsgCreateFixedPriceAuction) GetPayingCoinDenom() string { + if x != nil { + return x.PayingCoinDenom + } + return "" +} + +func (x *MsgCreateFixedPriceAuction) GetVestingSchedules() []*VestingSchedule { + if x != nil { + return x.VestingSchedules + } + return nil +} + +func (x *MsgCreateFixedPriceAuction) GetStartTime() *timestamppb.Timestamp { + if x != nil { + return x.StartTime + } + return nil +} + +func (x *MsgCreateFixedPriceAuction) GetEndTime() *timestamppb.Timestamp { + if x != nil { + return x.EndTime + } + return nil +} + +// MsgCreateFixedPriceAuctionResponse defines the +// Msg/MsgCreateFixedPriceAuctionResponse response type. +type MsgCreateFixedPriceAuctionResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *MsgCreateFixedPriceAuctionResponse) Reset() { + *x = MsgCreateFixedPriceAuctionResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_modules_fundraising_v1_tx_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgCreateFixedPriceAuctionResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgCreateFixedPriceAuctionResponse) ProtoMessage() {} + +// Deprecated: Use MsgCreateFixedPriceAuctionResponse.ProtoReflect.Descriptor instead. +func (*MsgCreateFixedPriceAuctionResponse) Descriptor() ([]byte, []int) { + return file_modules_fundraising_v1_tx_proto_rawDescGZIP(), []int{3} +} + +// MsgCreateBatchAuction defines a SDK message for creating an batch +// auction. +// +// See: +// https://github.com/ignite/modules/tree/main/x/fundraising/spec/04_messages.md +type MsgCreateBatchAuction struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // auctioneer specifies the bech32-encoded address that creates the auction + Auctioneer string `protobuf:"bytes,1,opt,name=auctioneer,proto3" json:"auctioneer,omitempty"` + // start_price specifies the starting price of the auction + StartPrice string `protobuf:"bytes,2,opt,name=start_price,json=startPrice,proto3" json:"start_price,omitempty"` + // min_bid_price specifies the minibum bid price + MinBidPrice string `protobuf:"bytes,3,opt,name=min_bid_price,json=minBidPrice,proto3" json:"min_bid_price,omitempty"` + // selling_coin specifies the selling coin for the auction + SellingCoin *v1beta1.Coin `protobuf:"bytes,4,opt,name=selling_coin,json=sellingCoin,proto3" json:"selling_coin,omitempty"` + // paying_coin_denom specifies the paying coin denom that bidders use to bid + // for + PayingCoinDenom string `protobuf:"bytes,5,opt,name=paying_coin_denom,json=payingCoinDenom,proto3" json:"paying_coin_denom,omitempty"` + // vesting_schedules specifies the vesting schedules for the auction + VestingSchedules []*VestingSchedule `protobuf:"bytes,6,rep,name=vesting_schedules,json=vestingSchedules,proto3" json:"vesting_schedules,omitempty"` + // maximum_extended_round specifies the maximum number of extended rounds for + // the auction + MaxExtendedRound uint32 `protobuf:"varint,7,opt,name=max_extended_round,json=maxExtendedRound,proto3" json:"max_extended_round,omitempty"` + // extended_round_rate specifies the rate that decides if the auction needs + // another round + ExtendedRoundRate string `protobuf:"bytes,8,opt,name=extended_round_rate,json=extendedRoundRate,proto3" json:"extended_round_rate,omitempty"` + // start_time specifies the start time of the plan + StartTime *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` + // end_time specifies the end time of the plan + EndTime *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` +} + +func (x *MsgCreateBatchAuction) Reset() { + *x = MsgCreateBatchAuction{} + if protoimpl.UnsafeEnabled { + mi := &file_modules_fundraising_v1_tx_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgCreateBatchAuction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgCreateBatchAuction) ProtoMessage() {} + +// Deprecated: Use MsgCreateBatchAuction.ProtoReflect.Descriptor instead. +func (*MsgCreateBatchAuction) Descriptor() ([]byte, []int) { + return file_modules_fundraising_v1_tx_proto_rawDescGZIP(), []int{4} +} + +func (x *MsgCreateBatchAuction) GetAuctioneer() string { + if x != nil { + return x.Auctioneer + } + return "" +} + +func (x *MsgCreateBatchAuction) GetStartPrice() string { + if x != nil { + return x.StartPrice + } + return "" +} + +func (x *MsgCreateBatchAuction) GetMinBidPrice() string { + if x != nil { + return x.MinBidPrice + } + return "" +} + +func (x *MsgCreateBatchAuction) GetSellingCoin() *v1beta1.Coin { + if x != nil { + return x.SellingCoin + } + return nil +} + +func (x *MsgCreateBatchAuction) GetPayingCoinDenom() string { + if x != nil { + return x.PayingCoinDenom + } + return "" +} + +func (x *MsgCreateBatchAuction) GetVestingSchedules() []*VestingSchedule { + if x != nil { + return x.VestingSchedules + } + return nil +} + +func (x *MsgCreateBatchAuction) GetMaxExtendedRound() uint32 { + if x != nil { + return x.MaxExtendedRound + } + return 0 +} + +func (x *MsgCreateBatchAuction) GetExtendedRoundRate() string { + if x != nil { + return x.ExtendedRoundRate + } + return "" +} + +func (x *MsgCreateBatchAuction) GetStartTime() *timestamppb.Timestamp { + if x != nil { + return x.StartTime + } + return nil +} + +func (x *MsgCreateBatchAuction) GetEndTime() *timestamppb.Timestamp { + if x != nil { + return x.EndTime + } + return nil +} + +// MsgCreateBatchAuctionResponse defines the +// Msg/MsgCreateBatchAuctionResponse response type. +type MsgCreateBatchAuctionResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *MsgCreateBatchAuctionResponse) Reset() { + *x = MsgCreateBatchAuctionResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_modules_fundraising_v1_tx_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgCreateBatchAuctionResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgCreateBatchAuctionResponse) ProtoMessage() {} + +// Deprecated: Use MsgCreateBatchAuctionResponse.ProtoReflect.Descriptor instead. +func (*MsgCreateBatchAuctionResponse) Descriptor() ([]byte, []int) { + return file_modules_fundraising_v1_tx_proto_rawDescGZIP(), []int{5} +} + +// MsgCancelAuction defines a SDK message for cancelling the auction. +// Cancelling is only allowed when the auction hasn't started yet. +type MsgCancelAuction struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // auctioneer specifies the bech32-encoded address that is in charge of the + // auction + Auctioneer string `protobuf:"bytes,1,opt,name=auctioneer,proto3" json:"auctioneer,omitempty"` + // auction_id specifies the auction id + AuctionId uint64 `protobuf:"varint,2,opt,name=auction_id,json=auctionId,proto3" json:"auction_id,omitempty"` +} + +func (x *MsgCancelAuction) Reset() { + *x = MsgCancelAuction{} + if protoimpl.UnsafeEnabled { + mi := &file_modules_fundraising_v1_tx_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgCancelAuction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgCancelAuction) ProtoMessage() {} + +// Deprecated: Use MsgCancelAuction.ProtoReflect.Descriptor instead. +func (*MsgCancelAuction) Descriptor() ([]byte, []int) { + return file_modules_fundraising_v1_tx_proto_rawDescGZIP(), []int{6} +} + +func (x *MsgCancelAuction) GetAuctioneer() string { + if x != nil { + return x.Auctioneer + } + return "" +} + +func (x *MsgCancelAuction) GetAuctionId() uint64 { + if x != nil { + return x.AuctionId + } + return 0 +} + +// MsgCancelAuctionResponse defines the Msg/MsgCancelAuctionResponse +// response type. +type MsgCancelAuctionResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *MsgCancelAuctionResponse) Reset() { + *x = MsgCancelAuctionResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_modules_fundraising_v1_tx_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgCancelAuctionResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgCancelAuctionResponse) ProtoMessage() {} + +// Deprecated: Use MsgCancelAuctionResponse.ProtoReflect.Descriptor instead. +func (*MsgCancelAuctionResponse) Descriptor() ([]byte, []int) { + return file_modules_fundraising_v1_tx_proto_rawDescGZIP(), []int{7} +} + +// MsgPlaceBid defines a SDK message for placing a bid for the auction. +type MsgPlaceBid struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // auction_id specifies the auction id + AuctionId uint64 `protobuf:"varint,1,opt,name=auction_id,json=auctionId,proto3" json:"auction_id,omitempty"` + // bidder specifies the bech32-encoded address that bids for the auction + Bidder string `protobuf:"bytes,2,opt,name=bidder,proto3" json:"bidder,omitempty"` + // type specifies the bid type; type 1 is fixed price, 2 is how-much-worth, 3 + // is how-many-coins + BidType BidType `protobuf:"varint,3,opt,name=bid_type,json=bidType,proto3,enum=modules.fundraising.v1.BidType" json:"bid_type,omitempty"` + // price specifies the bid price. + // The bid price must be the start price for fixed price auction whereas + // the bide price can be any value that the bidder places. + Price string `protobuf:"bytes,4,opt,name=price,proto3" json:"price,omitempty"` + // coin specifies the paying amount of coin or the selling amount that the + // bidder bids + Coin *v1beta1.Coin `protobuf:"bytes,5,opt,name=coin,proto3" json:"coin,omitempty"` +} + +func (x *MsgPlaceBid) Reset() { + *x = MsgPlaceBid{} + if protoimpl.UnsafeEnabled { + mi := &file_modules_fundraising_v1_tx_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgPlaceBid) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgPlaceBid) ProtoMessage() {} + +// Deprecated: Use MsgPlaceBid.ProtoReflect.Descriptor instead. +func (*MsgPlaceBid) Descriptor() ([]byte, []int) { + return file_modules_fundraising_v1_tx_proto_rawDescGZIP(), []int{8} +} + +func (x *MsgPlaceBid) GetAuctionId() uint64 { + if x != nil { + return x.AuctionId + } + return 0 +} + +func (x *MsgPlaceBid) GetBidder() string { + if x != nil { + return x.Bidder + } + return "" +} + +func (x *MsgPlaceBid) GetBidType() BidType { + if x != nil { + return x.BidType + } + return BidType_BID_TYPE_UNSPECIFIED +} + +func (x *MsgPlaceBid) GetPrice() string { + if x != nil { + return x.Price + } + return "" +} + +func (x *MsgPlaceBid) GetCoin() *v1beta1.Coin { + if x != nil { + return x.Coin + } + return nil +} + +// MsgPlaceBidResponse defines the Msg/MsgPlaceBidResponse response type. +type MsgPlaceBidResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *MsgPlaceBidResponse) Reset() { + *x = MsgPlaceBidResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_modules_fundraising_v1_tx_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgPlaceBidResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgPlaceBidResponse) ProtoMessage() {} + +// Deprecated: Use MsgPlaceBidResponse.ProtoReflect.Descriptor instead. +func (*MsgPlaceBidResponse) Descriptor() ([]byte, []int) { + return file_modules_fundraising_v1_tx_proto_rawDescGZIP(), []int{9} +} + +// MsgModifyBid defines a SDK message for modifying an existing bid for the +// auction. +type MsgModifyBid struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // auction_id specifies the auction id + AuctionId uint64 `protobuf:"varint,1,opt,name=auction_id,json=auctionId,proto3" json:"auction_id,omitempty"` + // bidder specifies the bech32-encoded address that bids for the auction + Bidder string `protobuf:"bytes,2,opt,name=bidder,proto3" json:"bidder,omitempty"` + // bid_id specifies the bid id + BidId uint64 `protobuf:"varint,3,opt,name=bid_id,json=bidId,proto3" json:"bid_id,omitempty"` + // price specifies the bid price. + // the bide price must be above or equal to the original value that the bidder + // placed. + Price string `protobuf:"bytes,4,opt,name=price,proto3" json:"price,omitempty"` + // coin specifies the paying amount of coin or the selling amount that the + // bidder bids + Coin *v1beta1.Coin `protobuf:"bytes,5,opt,name=coin,proto3" json:"coin,omitempty"` +} + +func (x *MsgModifyBid) Reset() { + *x = MsgModifyBid{} + if protoimpl.UnsafeEnabled { + mi := &file_modules_fundraising_v1_tx_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgModifyBid) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgModifyBid) ProtoMessage() {} + +// Deprecated: Use MsgModifyBid.ProtoReflect.Descriptor instead. +func (*MsgModifyBid) Descriptor() ([]byte, []int) { + return file_modules_fundraising_v1_tx_proto_rawDescGZIP(), []int{10} +} + +func (x *MsgModifyBid) GetAuctionId() uint64 { + if x != nil { + return x.AuctionId + } + return 0 +} + +func (x *MsgModifyBid) GetBidder() string { + if x != nil { + return x.Bidder + } + return "" +} + +func (x *MsgModifyBid) GetBidId() uint64 { + if x != nil { + return x.BidId + } + return 0 +} + +func (x *MsgModifyBid) GetPrice() string { + if x != nil { + return x.Price + } + return "" +} + +func (x *MsgModifyBid) GetCoin() *v1beta1.Coin { + if x != nil { + return x.Coin + } + return nil +} + +// MsgModifyBidResponse defines the Msg/MsgModifyBidResponse response type. +type MsgModifyBidResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *MsgModifyBidResponse) Reset() { + *x = MsgModifyBidResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_modules_fundraising_v1_tx_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgModifyBidResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgModifyBidResponse) ProtoMessage() {} + +// Deprecated: Use MsgModifyBidResponse.ProtoReflect.Descriptor instead. +func (*MsgModifyBidResponse) Descriptor() ([]byte, []int) { + return file_modules_fundraising_v1_tx_proto_rawDescGZIP(), []int{11} +} + +// MsgAddAllowedBidder defines a SDK message for adding an allowed bidder to the +// auction. +type MsgAddAllowedBidder struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // auction_id specifies the auction id + AuctionId uint64 `protobuf:"varint,1,opt,name=auction_id,json=auctionId,proto3" json:"auction_id,omitempty"` + // allowed_bidder specifies the bidder who is allowed to bid and their maximum + // bid amount + AllowedBidder *AllowedBidder `protobuf:"bytes,2,opt,name=allowed_bidder,json=allowedBidder,proto3" json:"allowed_bidder,omitempty"` +} + +func (x *MsgAddAllowedBidder) Reset() { + *x = MsgAddAllowedBidder{} + if protoimpl.UnsafeEnabled { + mi := &file_modules_fundraising_v1_tx_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgAddAllowedBidder) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgAddAllowedBidder) ProtoMessage() {} + +// Deprecated: Use MsgAddAllowedBidder.ProtoReflect.Descriptor instead. +func (*MsgAddAllowedBidder) Descriptor() ([]byte, []int) { + return file_modules_fundraising_v1_tx_proto_rawDescGZIP(), []int{12} +} + +func (x *MsgAddAllowedBidder) GetAuctionId() uint64 { + if x != nil { + return x.AuctionId + } + return 0 +} + +func (x *MsgAddAllowedBidder) GetAllowedBidder() *AllowedBidder { + if x != nil { + return x.AllowedBidder + } + return nil +} + +// MsgAddAllowedBidderResponse defines the Msg/MsgAddAllowedBidderResponse response type. +type MsgAddAllowedBidderResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *MsgAddAllowedBidderResponse) Reset() { + *x = MsgAddAllowedBidderResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_modules_fundraising_v1_tx_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgAddAllowedBidderResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgAddAllowedBidderResponse) ProtoMessage() {} + +// Deprecated: Use MsgAddAllowedBidderResponse.ProtoReflect.Descriptor instead. +func (*MsgAddAllowedBidderResponse) Descriptor() ([]byte, []int) { + return file_modules_fundraising_v1_tx_proto_rawDescGZIP(), []int{13} +} + +var File_modules_fundraising_v1_tx_proto protoreflect.FileDescriptor + +var file_modules_fundraising_v1_tx_proto_rawDesc = []byte{ + 0x0a, 0x1f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, + 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x12, 0x16, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, 0x6e, 0x64, 0x72, + 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x1a, 0x11, 0x61, 0x6d, 0x69, 0x6e, 0x6f, + 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x6d, 0x73, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x73, 0x67, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2b, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, + 0x2f, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, + 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x62, 0x69, 0x64, 0x64, 0x65, 0x72, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x66, 0x75, + 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x75, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x6d, 0x6f, 0x64, 0x75, + 0x6c, 0x65, 0x73, 0x2f, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2f, + 0x76, 0x31, 0x2f, 0x62, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6d, 0x6f, + 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, + 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x22, 0xca, 0x01, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x74, 0x79, 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, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x41, 0x0a, + 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, + 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, + 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x09, 0xc8, + 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x3a, 0x3c, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x8a, 0xe7, 0xb0, 0x2a, 0x29, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, + 0x2f, 0x78, 0x2f, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2f, 0x4d, + 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x19, + 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb5, 0x04, 0x0a, 0x1a, 0x4d, 0x73, + 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x69, 0x78, 0x65, 0x64, 0x50, 0x72, 0x69, 0x63, + 0x65, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x75, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x65, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x75, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x65, 0x65, 0x72, 0x12, 0x52, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x31, 0xc8, + 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, + 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x44, + 0x65, 0x63, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, + 0x52, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x83, 0x01, 0x0a, + 0x0c, 0x73, 0x65, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, + 0x01, 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, 0x45, + 0xc8, 0xde, 0x1f, 0x00, 0xaa, 0xdf, 0x1f, 0x27, 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, 0x9a, + 0xe7, 0xb0, 0x2a, 0x0c, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x73, + 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0b, 0x73, 0x65, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x43, 0x6f, + 0x69, 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x70, 0x61, 0x79, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x69, + 0x6e, 0x5f, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, + 0x61, 0x79, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x69, 0x6e, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x5a, + 0x0a, 0x11, 0x76, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, + 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6d, 0x6f, 0x64, 0x75, + 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, + 0x76, 0x31, 0x2e, 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, + 0x6c, 0x65, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x10, 0x76, 0x65, 0x73, 0x74, 0x69, 0x6e, + 0x67, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xc8, 0xde, 0x1f, 0x00, + 0x90, 0xdf, 0x1f, 0x01, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x3f, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xc8, + 0xde, 0x1f, 0x00, 0x90, 0xdf, 0x1f, 0x01, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, + 0x3a, 0x0f, 0x82, 0xe7, 0xb0, 0x2a, 0x0a, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x65, 0x65, + 0x72, 0x22, 0x24, 0x0a, 0x22, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x69, + 0x78, 0x65, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x98, 0x06, 0x0a, 0x15, 0x4d, 0x73, 0x67, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x65, 0x65, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x65, 0x65, + 0x72, 0x12, 0x52, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x31, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x1b, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, + 0x68, 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x44, 0x65, 0x63, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x55, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x5f, 0x62, 0x69, 0x64, + 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x31, 0xc8, 0xde, + 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, + 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x44, 0x65, + 0x63, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, + 0x0b, 0x6d, 0x69, 0x6e, 0x42, 0x69, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x83, 0x01, 0x0a, + 0x0c, 0x73, 0x65, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, + 0x01, 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, 0x45, + 0xc8, 0xde, 0x1f, 0x00, 0xaa, 0xdf, 0x1f, 0x27, 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, 0x9a, + 0xe7, 0xb0, 0x2a, 0x0c, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x73, + 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0b, 0x73, 0x65, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x43, 0x6f, + 0x69, 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x70, 0x61, 0x79, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x69, + 0x6e, 0x5f, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, + 0x61, 0x79, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x69, 0x6e, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x5a, + 0x0a, 0x11, 0x76, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, + 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6d, 0x6f, 0x64, 0x75, + 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, + 0x76, 0x31, 0x2e, 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, + 0x6c, 0x65, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x10, 0x76, 0x65, 0x73, 0x74, 0x69, 0x6e, + 0x67, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x6d, 0x61, + 0x78, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x72, 0x6f, 0x75, 0x6e, 0x64, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x6d, 0x61, 0x78, 0x45, 0x78, 0x74, 0x65, 0x6e, + 0x64, 0x65, 0x64, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x61, 0x0a, 0x13, 0x65, 0x78, 0x74, 0x65, + 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x31, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x1b, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, + 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x44, 0x65, 0x63, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x11, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, + 0x65, 0x64, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x61, 0x74, 0x65, 0x12, 0x43, 0x0a, 0x0a, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xc8, 0xde, 0x1f, + 0x00, 0x90, 0xdf, 0x1f, 0x01, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x3f, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, + 0xc8, 0xde, 0x1f, 0x00, 0x90, 0xdf, 0x1f, 0x01, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, + 0x65, 0x3a, 0x0f, 0x82, 0xe7, 0xb0, 0x2a, 0x0a, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x65, + 0x65, 0x72, 0x22, 0x1f, 0x0a, 0x1d, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, + 0x61, 0x74, 0x63, 0x68, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x62, 0x0a, 0x10, 0x4d, 0x73, 0x67, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, + 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x75, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x65, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x75, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x65, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x75, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x61, 0x75, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x3a, 0x0f, 0x82, 0xe7, 0xb0, 0x2a, 0x0a, 0x61, 0x75, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x65, 0x65, 0x72, 0x22, 0x1a, 0x0a, 0x18, 0x4d, 0x73, 0x67, 0x43, 0x61, + 0x6e, 0x63, 0x65, 0x6c, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0xcc, 0x02, 0x0a, 0x0b, 0x4d, 0x73, 0x67, 0x50, 0x6c, 0x61, 0x63, 0x65, + 0x42, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x69, 0x64, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x62, 0x69, 0x64, 0x64, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x08, 0x62, 0x69, + 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x6d, + 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, + 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x62, + 0x69, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x47, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x31, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x1b, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, + 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x44, 0x65, 0x63, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, + 0x74, 0x0a, 0x04, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 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, 0x45, 0xc8, 0xde, 0x1f, 0x00, 0xaa, 0xdf, + 0x1f, 0x27, 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, 0x9a, 0xe7, 0xb0, 0x2a, 0x0c, 0x6c, 0x65, + 0x67, 0x61, 0x63, 0x79, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, + 0x04, 0x63, 0x6f, 0x69, 0x6e, 0x3a, 0x0b, 0x82, 0xe7, 0xb0, 0x2a, 0x06, 0x62, 0x69, 0x64, 0x64, + 0x65, 0x72, 0x22, 0x15, 0x0a, 0x13, 0x4d, 0x73, 0x67, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x42, 0x69, + 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa8, 0x02, 0x0a, 0x0c, 0x4d, 0x73, + 0x67, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x42, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x75, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, + 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x69, 0x64, + 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x69, 0x64, 0x64, 0x65, + 0x72, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x05, 0x62, 0x69, 0x64, 0x49, 0x64, 0x12, 0x47, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x31, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, + 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, + 0x74, 0x68, 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x44, 0x65, 0x63, 0xd2, 0xb4, 0x2d, 0x0a, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, + 0x65, 0x12, 0x74, 0x0a, 0x04, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 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, 0x45, 0xc8, 0xde, 0x1f, 0x00, + 0xaa, 0xdf, 0x1f, 0x27, 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, 0x9a, 0xe7, 0xb0, 0x2a, 0x0c, + 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0xa8, 0xe7, 0xb0, 0x2a, + 0x01, 0x52, 0x04, 0x63, 0x6f, 0x69, 0x6e, 0x3a, 0x0b, 0x82, 0xe7, 0xb0, 0x2a, 0x06, 0x62, 0x69, + 0x64, 0x64, 0x65, 0x72, 0x22, 0x16, 0x0a, 0x14, 0x4d, 0x73, 0x67, 0x4d, 0x6f, 0x64, 0x69, 0x66, + 0x79, 0x42, 0x69, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9d, 0x01, 0x0a, + 0x13, 0x4d, 0x73, 0x67, 0x41, 0x64, 0x64, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x42, 0x69, + 0x64, 0x64, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x12, 0x52, 0x0a, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x62, + 0x69, 0x64, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6d, 0x6f, + 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, + 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x42, 0x69, 0x64, 0x64, + 0x65, 0x72, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, + 0x64, 0x42, 0x69, 0x64, 0x64, 0x65, 0x72, 0x3a, 0x13, 0x82, 0xe7, 0xb0, 0x2a, 0x0e, 0x61, 0x6c, + 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x62, 0x69, 0x64, 0x64, 0x65, 0x72, 0x22, 0x1d, 0x0a, 0x1b, + 0x4d, 0x73, 0x67, 0x41, 0x64, 0x64, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x42, 0x69, 0x64, + 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xa0, 0x06, 0x0a, 0x03, + 0x4d, 0x73, 0x67, 0x12, 0x68, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x12, 0x27, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, + 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x2f, 0x2e, 0x6d, + 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, + 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x89, 0x01, + 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x69, 0x78, 0x65, 0x64, 0x50, 0x72, 0x69, + 0x63, 0x65, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x2e, 0x6d, 0x6f, 0x64, 0x75, + 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, + 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x69, 0x78, 0x65, + 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x3a, 0x2e, + 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, + 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x46, 0x69, 0x78, 0x65, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7a, 0x0a, 0x12, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x2d, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, + 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x35, + 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, + 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6b, 0x0a, 0x0d, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x41, + 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, + 0x2e, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, + 0x4d, 0x73, 0x67, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x1a, 0x30, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, 0x6e, 0x64, 0x72, + 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x61, 0x6e, + 0x63, 0x65, 0x6c, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x42, 0x69, 0x64, 0x12, 0x23, + 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, + 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x50, 0x6c, 0x61, 0x63, 0x65, + 0x42, 0x69, 0x64, 0x1a, 0x2b, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, + 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, + 0x50, 0x6c, 0x61, 0x63, 0x65, 0x42, 0x69, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x5f, 0x0a, 0x09, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x42, 0x69, 0x64, 0x12, 0x24, 0x2e, + 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, + 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, + 0x42, 0x69, 0x64, 0x1a, 0x2c, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, + 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, + 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x42, 0x69, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x74, 0x0a, 0x10, 0x41, 0x64, 0x64, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x42, + 0x69, 0x64, 0x64, 0x65, 0x72, 0x12, 0x2b, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, + 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, + 0x73, 0x67, 0x41, 0x64, 0x64, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x42, 0x69, 0x64, 0x64, + 0x65, 0x72, 0x1a, 0x33, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, 0x6e, + 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x41, + 0x64, 0x64, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x42, 0x69, 0x64, 0x64, 0x65, 0x72, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0xd6, + 0x01, 0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, + 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x42, 0x07, 0x54, + 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x35, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, + 0x65, 0x73, 0x2f, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2f, 0x76, + 0x31, 0x3b, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x76, 0x31, 0xa2, + 0x02, 0x03, 0x4d, 0x46, 0x58, 0xaa, 0x02, 0x16, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, + 0x46, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x31, 0xca, 0x02, + 0x16, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x5c, 0x46, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, + 0x73, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x22, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, + 0x73, 0x5c, 0x46, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, + 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x18, 0x4d, + 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x3a, 0x3a, 0x46, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, + 0x69, 0x6e, 0x67, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_modules_fundraising_v1_tx_proto_rawDescOnce sync.Once + file_modules_fundraising_v1_tx_proto_rawDescData = file_modules_fundraising_v1_tx_proto_rawDesc +) + +func file_modules_fundraising_v1_tx_proto_rawDescGZIP() []byte { + file_modules_fundraising_v1_tx_proto_rawDescOnce.Do(func() { + file_modules_fundraising_v1_tx_proto_rawDescData = protoimpl.X.CompressGZIP(file_modules_fundraising_v1_tx_proto_rawDescData) + }) + return file_modules_fundraising_v1_tx_proto_rawDescData +} + +var file_modules_fundraising_v1_tx_proto_msgTypes = make([]protoimpl.MessageInfo, 14) +var file_modules_fundraising_v1_tx_proto_goTypes = []interface{}{ + (*MsgUpdateParams)(nil), // 0: modules.fundraising.v1.MsgUpdateParams + (*MsgUpdateParamsResponse)(nil), // 1: modules.fundraising.v1.MsgUpdateParamsResponse + (*MsgCreateFixedPriceAuction)(nil), // 2: modules.fundraising.v1.MsgCreateFixedPriceAuction + (*MsgCreateFixedPriceAuctionResponse)(nil), // 3: modules.fundraising.v1.MsgCreateFixedPriceAuctionResponse + (*MsgCreateBatchAuction)(nil), // 4: modules.fundraising.v1.MsgCreateBatchAuction + (*MsgCreateBatchAuctionResponse)(nil), // 5: modules.fundraising.v1.MsgCreateBatchAuctionResponse + (*MsgCancelAuction)(nil), // 6: modules.fundraising.v1.MsgCancelAuction + (*MsgCancelAuctionResponse)(nil), // 7: modules.fundraising.v1.MsgCancelAuctionResponse + (*MsgPlaceBid)(nil), // 8: modules.fundraising.v1.MsgPlaceBid + (*MsgPlaceBidResponse)(nil), // 9: modules.fundraising.v1.MsgPlaceBidResponse + (*MsgModifyBid)(nil), // 10: modules.fundraising.v1.MsgModifyBid + (*MsgModifyBidResponse)(nil), // 11: modules.fundraising.v1.MsgModifyBidResponse + (*MsgAddAllowedBidder)(nil), // 12: modules.fundraising.v1.MsgAddAllowedBidder + (*MsgAddAllowedBidderResponse)(nil), // 13: modules.fundraising.v1.MsgAddAllowedBidderResponse + (*Params)(nil), // 14: modules.fundraising.v1.Params + (*v1beta1.Coin)(nil), // 15: cosmos.base.v1beta1.Coin + (*VestingSchedule)(nil), // 16: modules.fundraising.v1.VestingSchedule + (*timestamppb.Timestamp)(nil), // 17: google.protobuf.Timestamp + (BidType)(0), // 18: modules.fundraising.v1.BidType + (*AllowedBidder)(nil), // 19: modules.fundraising.v1.AllowedBidder +} +var file_modules_fundraising_v1_tx_proto_depIdxs = []int32{ + 14, // 0: modules.fundraising.v1.MsgUpdateParams.params:type_name -> modules.fundraising.v1.Params + 15, // 1: modules.fundraising.v1.MsgCreateFixedPriceAuction.selling_coin:type_name -> cosmos.base.v1beta1.Coin + 16, // 2: modules.fundraising.v1.MsgCreateFixedPriceAuction.vesting_schedules:type_name -> modules.fundraising.v1.VestingSchedule + 17, // 3: modules.fundraising.v1.MsgCreateFixedPriceAuction.start_time:type_name -> google.protobuf.Timestamp + 17, // 4: modules.fundraising.v1.MsgCreateFixedPriceAuction.end_time:type_name -> google.protobuf.Timestamp + 15, // 5: modules.fundraising.v1.MsgCreateBatchAuction.selling_coin:type_name -> cosmos.base.v1beta1.Coin + 16, // 6: modules.fundraising.v1.MsgCreateBatchAuction.vesting_schedules:type_name -> modules.fundraising.v1.VestingSchedule + 17, // 7: modules.fundraising.v1.MsgCreateBatchAuction.start_time:type_name -> google.protobuf.Timestamp + 17, // 8: modules.fundraising.v1.MsgCreateBatchAuction.end_time:type_name -> google.protobuf.Timestamp + 18, // 9: modules.fundraising.v1.MsgPlaceBid.bid_type:type_name -> modules.fundraising.v1.BidType + 15, // 10: modules.fundraising.v1.MsgPlaceBid.coin:type_name -> cosmos.base.v1beta1.Coin + 15, // 11: modules.fundraising.v1.MsgModifyBid.coin:type_name -> cosmos.base.v1beta1.Coin + 19, // 12: modules.fundraising.v1.MsgAddAllowedBidder.allowed_bidder:type_name -> modules.fundraising.v1.AllowedBidder + 0, // 13: modules.fundraising.v1.Msg.UpdateParams:input_type -> modules.fundraising.v1.MsgUpdateParams + 2, // 14: modules.fundraising.v1.Msg.CreateFixedPriceAuction:input_type -> modules.fundraising.v1.MsgCreateFixedPriceAuction + 4, // 15: modules.fundraising.v1.Msg.CreateBatchAuction:input_type -> modules.fundraising.v1.MsgCreateBatchAuction + 6, // 16: modules.fundraising.v1.Msg.CancelAuction:input_type -> modules.fundraising.v1.MsgCancelAuction + 8, // 17: modules.fundraising.v1.Msg.PlaceBid:input_type -> modules.fundraising.v1.MsgPlaceBid + 10, // 18: modules.fundraising.v1.Msg.ModifyBid:input_type -> modules.fundraising.v1.MsgModifyBid + 12, // 19: modules.fundraising.v1.Msg.AddAllowedBidder:input_type -> modules.fundraising.v1.MsgAddAllowedBidder + 1, // 20: modules.fundraising.v1.Msg.UpdateParams:output_type -> modules.fundraising.v1.MsgUpdateParamsResponse + 3, // 21: modules.fundraising.v1.Msg.CreateFixedPriceAuction:output_type -> modules.fundraising.v1.MsgCreateFixedPriceAuctionResponse + 5, // 22: modules.fundraising.v1.Msg.CreateBatchAuction:output_type -> modules.fundraising.v1.MsgCreateBatchAuctionResponse + 7, // 23: modules.fundraising.v1.Msg.CancelAuction:output_type -> modules.fundraising.v1.MsgCancelAuctionResponse + 9, // 24: modules.fundraising.v1.Msg.PlaceBid:output_type -> modules.fundraising.v1.MsgPlaceBidResponse + 11, // 25: modules.fundraising.v1.Msg.ModifyBid:output_type -> modules.fundraising.v1.MsgModifyBidResponse + 13, // 26: modules.fundraising.v1.Msg.AddAllowedBidder:output_type -> modules.fundraising.v1.MsgAddAllowedBidderResponse + 20, // [20:27] is the sub-list for method output_type + 13, // [13:20] is the sub-list for method input_type + 13, // [13:13] is the sub-list for extension type_name + 13, // [13:13] is the sub-list for extension extendee + 0, // [0:13] is the sub-list for field type_name +} + +func init() { file_modules_fundraising_v1_tx_proto_init() } +func file_modules_fundraising_v1_tx_proto_init() { + if File_modules_fundraising_v1_tx_proto != nil { + return + } + file_modules_fundraising_v1_allowed_bidder_proto_init() + file_modules_fundraising_v1_auction_proto_init() + file_modules_fundraising_v1_bid_proto_init() + file_modules_fundraising_v1_params_proto_init() + if !protoimpl.UnsafeEnabled { + file_modules_fundraising_v1_tx_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgUpdateParams); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_modules_fundraising_v1_tx_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgUpdateParamsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_modules_fundraising_v1_tx_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgCreateFixedPriceAuction); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_modules_fundraising_v1_tx_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgCreateFixedPriceAuctionResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_modules_fundraising_v1_tx_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgCreateBatchAuction); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_modules_fundraising_v1_tx_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgCreateBatchAuctionResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_modules_fundraising_v1_tx_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgCancelAuction); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_modules_fundraising_v1_tx_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgCancelAuctionResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_modules_fundraising_v1_tx_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgPlaceBid); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_modules_fundraising_v1_tx_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgPlaceBidResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_modules_fundraising_v1_tx_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgModifyBid); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_modules_fundraising_v1_tx_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgModifyBidResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_modules_fundraising_v1_tx_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgAddAllowedBidder); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_modules_fundraising_v1_tx_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgAddAllowedBidderResponse); 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{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_modules_fundraising_v1_tx_proto_rawDesc, + NumEnums: 0, + NumMessages: 14, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_modules_fundraising_v1_tx_proto_goTypes, + DependencyIndexes: file_modules_fundraising_v1_tx_proto_depIdxs, + MessageInfos: file_modules_fundraising_v1_tx_proto_msgTypes, + }.Build() + File_modules_fundraising_v1_tx_proto = out.File + file_modules_fundraising_v1_tx_proto_rawDesc = nil + file_modules_fundraising_v1_tx_proto_goTypes = nil + file_modules_fundraising_v1_tx_proto_depIdxs = nil +} diff --git a/api/modules/fundraising/v1/tx_grpc.pb.go b/api/modules/fundraising/v1/tx_grpc.pb.go new file mode 100644 index 0000000..07e453b --- /dev/null +++ b/api/modules/fundraising/v1/tx_grpc.pb.go @@ -0,0 +1,349 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.3.0 +// - protoc (unknown) +// source: modules/fundraising/v1/tx.proto + +package fundraisingv1 + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +const ( + Msg_UpdateParams_FullMethodName = "/modules.fundraising.v1.Msg/UpdateParams" + Msg_CreateFixedPriceAuction_FullMethodName = "/modules.fundraising.v1.Msg/CreateFixedPriceAuction" + Msg_CreateBatchAuction_FullMethodName = "/modules.fundraising.v1.Msg/CreateBatchAuction" + Msg_CancelAuction_FullMethodName = "/modules.fundraising.v1.Msg/CancelAuction" + Msg_PlaceBid_FullMethodName = "/modules.fundraising.v1.Msg/PlaceBid" + Msg_ModifyBid_FullMethodName = "/modules.fundraising.v1.Msg/ModifyBid" + Msg_AddAllowedBidder_FullMethodName = "/modules.fundraising.v1.Msg/AddAllowedBidder" +) + +// MsgClient is the client API for Msg service. +// +// 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 MsgClient interface { + // UpdateParams defines a (governance) operation for updating the module + // parameters. The authority defaults to the x/gov module account. + UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) + // CreateFixedPriceAuction submits a create fixed price auction message. + CreateFixedPriceAuction(ctx context.Context, in *MsgCreateFixedPriceAuction, opts ...grpc.CallOption) (*MsgCreateFixedPriceAuctionResponse, error) + // CreateBatchAuction submits a create batch auction message. + CreateBatchAuction(ctx context.Context, in *MsgCreateBatchAuction, opts ...grpc.CallOption) (*MsgCreateBatchAuctionResponse, error) + // CancelAuction defines a method to cancel the auction message. + CancelAuction(ctx context.Context, in *MsgCancelAuction, opts ...grpc.CallOption) (*MsgCancelAuctionResponse, error) + // PlaceBid defines a method to place a bid message. + PlaceBid(ctx context.Context, in *MsgPlaceBid, opts ...grpc.CallOption) (*MsgPlaceBidResponse, error) + // ModifyBid defines a method to modify the bid message. + ModifyBid(ctx context.Context, in *MsgModifyBid, opts ...grpc.CallOption) (*MsgModifyBidResponse, error) + // AddAllowedBidder defines a method sto add a single allowed bidder message. + // This is for the testing purpose and it must not be used in mainnet. + AddAllowedBidder(ctx context.Context, in *MsgAddAllowedBidder, opts ...grpc.CallOption) (*MsgAddAllowedBidderResponse, error) +} + +type msgClient struct { + cc grpc.ClientConnInterface +} + +func NewMsgClient(cc grpc.ClientConnInterface) MsgClient { + return &msgClient{cc} +} + +func (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) { + out := new(MsgUpdateParamsResponse) + err := c.cc.Invoke(ctx, Msg_UpdateParams_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) CreateFixedPriceAuction(ctx context.Context, in *MsgCreateFixedPriceAuction, opts ...grpc.CallOption) (*MsgCreateFixedPriceAuctionResponse, error) { + out := new(MsgCreateFixedPriceAuctionResponse) + err := c.cc.Invoke(ctx, Msg_CreateFixedPriceAuction_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) CreateBatchAuction(ctx context.Context, in *MsgCreateBatchAuction, opts ...grpc.CallOption) (*MsgCreateBatchAuctionResponse, error) { + out := new(MsgCreateBatchAuctionResponse) + err := c.cc.Invoke(ctx, Msg_CreateBatchAuction_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) CancelAuction(ctx context.Context, in *MsgCancelAuction, opts ...grpc.CallOption) (*MsgCancelAuctionResponse, error) { + out := new(MsgCancelAuctionResponse) + err := c.cc.Invoke(ctx, Msg_CancelAuction_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) PlaceBid(ctx context.Context, in *MsgPlaceBid, opts ...grpc.CallOption) (*MsgPlaceBidResponse, error) { + out := new(MsgPlaceBidResponse) + err := c.cc.Invoke(ctx, Msg_PlaceBid_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) ModifyBid(ctx context.Context, in *MsgModifyBid, opts ...grpc.CallOption) (*MsgModifyBidResponse, error) { + out := new(MsgModifyBidResponse) + err := c.cc.Invoke(ctx, Msg_ModifyBid_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) AddAllowedBidder(ctx context.Context, in *MsgAddAllowedBidder, opts ...grpc.CallOption) (*MsgAddAllowedBidderResponse, error) { + out := new(MsgAddAllowedBidderResponse) + err := c.cc.Invoke(ctx, Msg_AddAllowedBidder_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 { + // UpdateParams defines a (governance) operation for updating the module + // parameters. The authority defaults to the x/gov module account. + UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) + // CreateFixedPriceAuction submits a create fixed price auction message. + CreateFixedPriceAuction(context.Context, *MsgCreateFixedPriceAuction) (*MsgCreateFixedPriceAuctionResponse, error) + // CreateBatchAuction submits a create batch auction message. + CreateBatchAuction(context.Context, *MsgCreateBatchAuction) (*MsgCreateBatchAuctionResponse, error) + // CancelAuction defines a method to cancel the auction message. + CancelAuction(context.Context, *MsgCancelAuction) (*MsgCancelAuctionResponse, error) + // PlaceBid defines a method to place a bid message. + PlaceBid(context.Context, *MsgPlaceBid) (*MsgPlaceBidResponse, error) + // ModifyBid defines a method to modify the bid message. + ModifyBid(context.Context, *MsgModifyBid) (*MsgModifyBidResponse, error) + // AddAllowedBidder defines a method sto add a single allowed bidder message. + // This is for the testing purpose and it must not be used in mainnet. + AddAllowedBidder(context.Context, *MsgAddAllowedBidder) (*MsgAddAllowedBidderResponse, error) + mustEmbedUnimplementedMsgServer() +} + +// UnimplementedMsgServer must be embedded to have forward compatible implementations. +type UnimplementedMsgServer struct { +} + +func (UnimplementedMsgServer) UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateParams not implemented") +} +func (UnimplementedMsgServer) CreateFixedPriceAuction(context.Context, *MsgCreateFixedPriceAuction) (*MsgCreateFixedPriceAuctionResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateFixedPriceAuction not implemented") +} +func (UnimplementedMsgServer) CreateBatchAuction(context.Context, *MsgCreateBatchAuction) (*MsgCreateBatchAuctionResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateBatchAuction not implemented") +} +func (UnimplementedMsgServer) CancelAuction(context.Context, *MsgCancelAuction) (*MsgCancelAuctionResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CancelAuction not implemented") +} +func (UnimplementedMsgServer) PlaceBid(context.Context, *MsgPlaceBid) (*MsgPlaceBidResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method PlaceBid not implemented") +} +func (UnimplementedMsgServer) ModifyBid(context.Context, *MsgModifyBid) (*MsgModifyBidResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ModifyBid not implemented") +} +func (UnimplementedMsgServer) AddAllowedBidder(context.Context, *MsgAddAllowedBidder) (*MsgAddAllowedBidderResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method AddAllowedBidder not implemented") +} +func (UnimplementedMsgServer) mustEmbedUnimplementedMsgServer() {} + +// UnsafeMsgServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to MsgServer will +// result in compilation errors. +type UnsafeMsgServer interface { + mustEmbedUnimplementedMsgServer() +} + +func RegisterMsgServer(s grpc.ServiceRegistrar, srv MsgServer) { + s.RegisterService(&Msg_ServiceDesc, srv) +} + +func _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgUpdateParams) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).UpdateParams(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Msg_UpdateParams_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).UpdateParams(ctx, req.(*MsgUpdateParams)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_CreateFixedPriceAuction_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgCreateFixedPriceAuction) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).CreateFixedPriceAuction(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Msg_CreateFixedPriceAuction_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).CreateFixedPriceAuction(ctx, req.(*MsgCreateFixedPriceAuction)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_CreateBatchAuction_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgCreateBatchAuction) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).CreateBatchAuction(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Msg_CreateBatchAuction_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).CreateBatchAuction(ctx, req.(*MsgCreateBatchAuction)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_CancelAuction_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgCancelAuction) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).CancelAuction(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Msg_CancelAuction_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).CancelAuction(ctx, req.(*MsgCancelAuction)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_PlaceBid_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgPlaceBid) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).PlaceBid(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Msg_PlaceBid_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).PlaceBid(ctx, req.(*MsgPlaceBid)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_ModifyBid_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgModifyBid) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).ModifyBid(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Msg_ModifyBid_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).ModifyBid(ctx, req.(*MsgModifyBid)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_AddAllowedBidder_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgAddAllowedBidder) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).AddAllowedBidder(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Msg_AddAllowedBidder_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).AddAllowedBidder(ctx, req.(*MsgAddAllowedBidder)) + } + 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) +var Msg_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "modules.fundraising.v1.Msg", + HandlerType: (*MsgServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "UpdateParams", + Handler: _Msg_UpdateParams_Handler, + }, + { + MethodName: "CreateFixedPriceAuction", + Handler: _Msg_CreateFixedPriceAuction_Handler, + }, + { + MethodName: "CreateBatchAuction", + Handler: _Msg_CreateBatchAuction_Handler, + }, + { + MethodName: "CancelAuction", + Handler: _Msg_CancelAuction_Handler, + }, + { + MethodName: "PlaceBid", + Handler: _Msg_PlaceBid_Handler, + }, + { + MethodName: "ModifyBid", + Handler: _Msg_ModifyBid_Handler, + }, + { + MethodName: "AddAllowedBidder", + Handler: _Msg_AddAllowedBidder_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "modules/fundraising/v1/tx.proto", +} diff --git a/api/modules/fundraising/v1/vesting_queue.pulsar.go b/api/modules/fundraising/v1/vesting_queue.pulsar.go new file mode 100644 index 0000000..c3d87b3 --- /dev/null +++ b/api/modules/fundraising/v1/vesting_queue.pulsar.go @@ -0,0 +1,903 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package fundraisingv1 + +import ( + _ "cosmossdk.io/api/amino" + v1beta1 "cosmossdk.io/api/cosmos/base/v1beta1" + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + runtime "github.com/cosmos/cosmos-proto/runtime" + _ "github.com/cosmos/gogoproto/gogoproto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + io "io" + reflect "reflect" + sync "sync" +) + +var ( + md_VestingQueue protoreflect.MessageDescriptor + fd_VestingQueue_auction_id protoreflect.FieldDescriptor + fd_VestingQueue_auctioneer protoreflect.FieldDescriptor + fd_VestingQueue_paying_coin protoreflect.FieldDescriptor + fd_VestingQueue_release_time protoreflect.FieldDescriptor + fd_VestingQueue_released protoreflect.FieldDescriptor +) + +func init() { + file_modules_fundraising_v1_vesting_queue_proto_init() + md_VestingQueue = File_modules_fundraising_v1_vesting_queue_proto.Messages().ByName("VestingQueue") + fd_VestingQueue_auction_id = md_VestingQueue.Fields().ByName("auction_id") + fd_VestingQueue_auctioneer = md_VestingQueue.Fields().ByName("auctioneer") + fd_VestingQueue_paying_coin = md_VestingQueue.Fields().ByName("paying_coin") + fd_VestingQueue_release_time = md_VestingQueue.Fields().ByName("release_time") + fd_VestingQueue_released = md_VestingQueue.Fields().ByName("released") +} + +var _ protoreflect.Message = (*fastReflection_VestingQueue)(nil) + +type fastReflection_VestingQueue VestingQueue + +func (x *VestingQueue) ProtoReflect() protoreflect.Message { + return (*fastReflection_VestingQueue)(x) +} + +func (x *VestingQueue) slowProtoReflect() protoreflect.Message { + mi := &file_modules_fundraising_v1_vesting_queue_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_VestingQueue_messageType fastReflection_VestingQueue_messageType +var _ protoreflect.MessageType = fastReflection_VestingQueue_messageType{} + +type fastReflection_VestingQueue_messageType struct{} + +func (x fastReflection_VestingQueue_messageType) Zero() protoreflect.Message { + return (*fastReflection_VestingQueue)(nil) +} +func (x fastReflection_VestingQueue_messageType) New() protoreflect.Message { + return new(fastReflection_VestingQueue) +} +func (x fastReflection_VestingQueue_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_VestingQueue +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_VestingQueue) Descriptor() protoreflect.MessageDescriptor { + return md_VestingQueue +} + +// 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_VestingQueue) Type() protoreflect.MessageType { + return _fastReflection_VestingQueue_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_VestingQueue) New() protoreflect.Message { + return new(fastReflection_VestingQueue) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_VestingQueue) Interface() protoreflect.ProtoMessage { + return (*VestingQueue)(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_VestingQueue) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.AuctionId != uint64(0) { + value := protoreflect.ValueOfUint64(x.AuctionId) + if !f(fd_VestingQueue_auction_id, value) { + return + } + } + if x.Auctioneer != "" { + value := protoreflect.ValueOfString(x.Auctioneer) + if !f(fd_VestingQueue_auctioneer, value) { + return + } + } + if x.PayingCoin != nil { + value := protoreflect.ValueOfMessage(x.PayingCoin.ProtoReflect()) + if !f(fd_VestingQueue_paying_coin, value) { + return + } + } + if x.ReleaseTime != nil { + value := protoreflect.ValueOfMessage(x.ReleaseTime.ProtoReflect()) + if !f(fd_VestingQueue_release_time, value) { + return + } + } + if x.Released != false { + value := protoreflect.ValueOfBool(x.Released) + if !f(fd_VestingQueue_released, 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_VestingQueue) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "modules.fundraising.v1.VestingQueue.auction_id": + return x.AuctionId != uint64(0) + case "modules.fundraising.v1.VestingQueue.auctioneer": + return x.Auctioneer != "" + case "modules.fundraising.v1.VestingQueue.paying_coin": + return x.PayingCoin != nil + case "modules.fundraising.v1.VestingQueue.release_time": + return x.ReleaseTime != nil + case "modules.fundraising.v1.VestingQueue.released": + return x.Released != false + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.VestingQueue")) + } + panic(fmt.Errorf("message modules.fundraising.v1.VestingQueue 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_VestingQueue) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "modules.fundraising.v1.VestingQueue.auction_id": + x.AuctionId = uint64(0) + case "modules.fundraising.v1.VestingQueue.auctioneer": + x.Auctioneer = "" + case "modules.fundraising.v1.VestingQueue.paying_coin": + x.PayingCoin = nil + case "modules.fundraising.v1.VestingQueue.release_time": + x.ReleaseTime = nil + case "modules.fundraising.v1.VestingQueue.released": + x.Released = false + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.VestingQueue")) + } + panic(fmt.Errorf("message modules.fundraising.v1.VestingQueue 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_VestingQueue) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "modules.fundraising.v1.VestingQueue.auction_id": + value := x.AuctionId + return protoreflect.ValueOfUint64(value) + case "modules.fundraising.v1.VestingQueue.auctioneer": + value := x.Auctioneer + return protoreflect.ValueOfString(value) + case "modules.fundraising.v1.VestingQueue.paying_coin": + value := x.PayingCoin + return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "modules.fundraising.v1.VestingQueue.release_time": + value := x.ReleaseTime + return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "modules.fundraising.v1.VestingQueue.released": + value := x.Released + return protoreflect.ValueOfBool(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.VestingQueue")) + } + panic(fmt.Errorf("message modules.fundraising.v1.VestingQueue 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_VestingQueue) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "modules.fundraising.v1.VestingQueue.auction_id": + x.AuctionId = value.Uint() + case "modules.fundraising.v1.VestingQueue.auctioneer": + x.Auctioneer = value.Interface().(string) + case "modules.fundraising.v1.VestingQueue.paying_coin": + x.PayingCoin = value.Message().Interface().(*v1beta1.Coin) + case "modules.fundraising.v1.VestingQueue.release_time": + x.ReleaseTime = value.Message().Interface().(*timestamppb.Timestamp) + case "modules.fundraising.v1.VestingQueue.released": + x.Released = value.Bool() + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.VestingQueue")) + } + panic(fmt.Errorf("message modules.fundraising.v1.VestingQueue 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_VestingQueue) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.VestingQueue.paying_coin": + if x.PayingCoin == nil { + x.PayingCoin = new(v1beta1.Coin) + } + return protoreflect.ValueOfMessage(x.PayingCoin.ProtoReflect()) + case "modules.fundraising.v1.VestingQueue.release_time": + if x.ReleaseTime == nil { + x.ReleaseTime = new(timestamppb.Timestamp) + } + return protoreflect.ValueOfMessage(x.ReleaseTime.ProtoReflect()) + case "modules.fundraising.v1.VestingQueue.auction_id": + panic(fmt.Errorf("field auction_id of message modules.fundraising.v1.VestingQueue is not mutable")) + case "modules.fundraising.v1.VestingQueue.auctioneer": + panic(fmt.Errorf("field auctioneer of message modules.fundraising.v1.VestingQueue is not mutable")) + case "modules.fundraising.v1.VestingQueue.released": + panic(fmt.Errorf("field released of message modules.fundraising.v1.VestingQueue is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.VestingQueue")) + } + panic(fmt.Errorf("message modules.fundraising.v1.VestingQueue 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_VestingQueue) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "modules.fundraising.v1.VestingQueue.auction_id": + return protoreflect.ValueOfUint64(uint64(0)) + case "modules.fundraising.v1.VestingQueue.auctioneer": + return protoreflect.ValueOfString("") + case "modules.fundraising.v1.VestingQueue.paying_coin": + m := new(v1beta1.Coin) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "modules.fundraising.v1.VestingQueue.release_time": + m := new(timestamppb.Timestamp) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "modules.fundraising.v1.VestingQueue.released": + return protoreflect.ValueOfBool(false) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: modules.fundraising.v1.VestingQueue")) + } + panic(fmt.Errorf("message modules.fundraising.v1.VestingQueue 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_VestingQueue) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in modules.fundraising.v1.VestingQueue", 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_VestingQueue) 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_VestingQueue) 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_VestingQueue) 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_VestingQueue) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*VestingQueue) + 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.AuctionId != 0 { + n += 1 + runtime.Sov(uint64(x.AuctionId)) + } + l = len(x.Auctioneer) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.PayingCoin != nil { + l = options.Size(x.PayingCoin) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.ReleaseTime != nil { + l = options.Size(x.ReleaseTime) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.Released { + n += 2 + } + 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().(*VestingQueue) + 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 x.Released { + i-- + if x.Released { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x28 + } + if x.ReleaseTime != nil { + encoded, err := options.Marshal(x.ReleaseTime) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x22 + } + if x.PayingCoin != nil { + encoded, err := options.Marshal(x.PayingCoin) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x1a + } + if len(x.Auctioneer) > 0 { + i -= len(x.Auctioneer) + copy(dAtA[i:], x.Auctioneer) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Auctioneer))) + i-- + dAtA[i] = 0x12 + } + if x.AuctionId != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.AuctionId)) + i-- + dAtA[i] = 0x8 + } + 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().(*VestingQueue) + 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: VestingQueue: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: VestingQueue: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field AuctionId", wireType) + } + x.AuctionId = 0 + 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++ + x.AuctionId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Auctioneer", 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.Auctioneer = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field PayingCoin", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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 + } + if x.PayingCoin == nil { + x.PayingCoin = &v1beta1.Coin{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.PayingCoin); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ReleaseTime", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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 + } + if x.ReleaseTime == nil { + x.ReleaseTime = ×tamppb.Timestamp{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.ReleaseTime); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 5: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Released", wireType) + } + var v int + 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++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + x.Released = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: modules/fundraising/v1/vesting_queue.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// VestingQueue defines the vesting queue. +type VestingQueue struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // auction_id specifies the id of the auction + AuctionId uint64 `protobuf:"varint,1,opt,name=auction_id,json=auctionId,proto3" json:"auction_id,omitempty"` + // auctioneer specifies the bech32-encoded address that creates the auction + Auctioneer string `protobuf:"bytes,2,opt,name=auctioneer,proto3" json:"auctioneer,omitempty"` + // paying_coin specifies the paying amount of coin + PayingCoin *v1beta1.Coin `protobuf:"bytes,3,opt,name=paying_coin,json=payingCoin,proto3" json:"paying_coin,omitempty"` + // release_time specifies the timestamp of the vesting schedule + ReleaseTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=release_time,json=releaseTime,proto3" json:"release_time,omitempty"` + // released specifies the status of distribution + Released bool `protobuf:"varint,5,opt,name=released,proto3" json:"released,omitempty"` +} + +func (x *VestingQueue) Reset() { + *x = VestingQueue{} + if protoimpl.UnsafeEnabled { + mi := &file_modules_fundraising_v1_vesting_queue_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *VestingQueue) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VestingQueue) ProtoMessage() {} + +// Deprecated: Use VestingQueue.ProtoReflect.Descriptor instead. +func (*VestingQueue) Descriptor() ([]byte, []int) { + return file_modules_fundraising_v1_vesting_queue_proto_rawDescGZIP(), []int{0} +} + +func (x *VestingQueue) GetAuctionId() uint64 { + if x != nil { + return x.AuctionId + } + return 0 +} + +func (x *VestingQueue) GetAuctioneer() string { + if x != nil { + return x.Auctioneer + } + return "" +} + +func (x *VestingQueue) GetPayingCoin() *v1beta1.Coin { + if x != nil { + return x.PayingCoin + } + return nil +} + +func (x *VestingQueue) GetReleaseTime() *timestamppb.Timestamp { + if x != nil { + return x.ReleaseTime + } + return nil +} + +func (x *VestingQueue) GetReleased() bool { + if x != nil { + return x.Released + } + return false +} + +var File_modules_fundraising_v1_vesting_queue_proto protoreflect.FileDescriptor + +var file_modules_fundraising_v1_vesting_queue_proto_rawDesc = []byte{ + 0x0a, 0x2a, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, + 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x76, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, + 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, 0x6d, 0x6f, + 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, + 0x67, 0x2e, 0x76, 0x31, 0x1a, 0x11, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, + 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, + 0x62, 0x61, 0x73, 0x65, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x63, 0x6f, 0x69, + 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, + 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb6, 0x02, 0x0a, 0x0c, 0x56, 0x65, + 0x73, 0x74, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x75, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x75, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, + 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x75, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x65, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, + 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x65, 0x65, 0x72, 0x12, 0x81, 0x01, 0x0a, 0x0b, 0x70, 0x61, + 0x79, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 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, 0x45, 0xc8, 0xde, 0x1f, 0x00, + 0xaa, 0xdf, 0x1f, 0x27, 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, 0x9a, 0xe7, 0xb0, 0x2a, 0x0c, + 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0xa8, 0xe7, 0xb0, 0x2a, + 0x01, 0x52, 0x0a, 0x70, 0x61, 0x79, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x47, 0x0a, + 0x0c, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, + 0x08, 0xc8, 0xde, 0x1f, 0x00, 0x90, 0xdf, 0x1f, 0x01, 0x52, 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, + 0x73, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, + 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, + 0x65, 0x64, 0x42, 0xe0, 0x01, 0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, + 0x65, 0x73, 0x2e, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x76, + 0x31, 0x42, 0x11, 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x75, 0x65, 0x50, + 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x35, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, + 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, + 0x2f, 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x3b, + 0x66, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x76, 0x31, 0xa2, 0x02, 0x03, + 0x4d, 0x46, 0x58, 0xaa, 0x02, 0x16, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x46, 0x75, + 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x16, 0x4d, + 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x5c, 0x46, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, + 0x6e, 0x67, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x22, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x5c, + 0x46, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0x5c, 0x47, + 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x18, 0x4d, 0x6f, 0x64, + 0x75, 0x6c, 0x65, 0x73, 0x3a, 0x3a, 0x46, 0x75, 0x6e, 0x64, 0x72, 0x61, 0x69, 0x73, 0x69, 0x6e, + 0x67, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_modules_fundraising_v1_vesting_queue_proto_rawDescOnce sync.Once + file_modules_fundraising_v1_vesting_queue_proto_rawDescData = file_modules_fundraising_v1_vesting_queue_proto_rawDesc +) + +func file_modules_fundraising_v1_vesting_queue_proto_rawDescGZIP() []byte { + file_modules_fundraising_v1_vesting_queue_proto_rawDescOnce.Do(func() { + file_modules_fundraising_v1_vesting_queue_proto_rawDescData = protoimpl.X.CompressGZIP(file_modules_fundraising_v1_vesting_queue_proto_rawDescData) + }) + return file_modules_fundraising_v1_vesting_queue_proto_rawDescData +} + +var file_modules_fundraising_v1_vesting_queue_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_modules_fundraising_v1_vesting_queue_proto_goTypes = []interface{}{ + (*VestingQueue)(nil), // 0: modules.fundraising.v1.VestingQueue + (*v1beta1.Coin)(nil), // 1: cosmos.base.v1beta1.Coin + (*timestamppb.Timestamp)(nil), // 2: google.protobuf.Timestamp +} +var file_modules_fundraising_v1_vesting_queue_proto_depIdxs = []int32{ + 1, // 0: modules.fundraising.v1.VestingQueue.paying_coin:type_name -> cosmos.base.v1beta1.Coin + 2, // 1: modules.fundraising.v1.VestingQueue.release_time:type_name -> google.protobuf.Timestamp + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_modules_fundraising_v1_vesting_queue_proto_init() } +func file_modules_fundraising_v1_vesting_queue_proto_init() { + if File_modules_fundraising_v1_vesting_queue_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_modules_fundraising_v1_vesting_queue_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VestingQueue); 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{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_modules_fundraising_v1_vesting_queue_proto_rawDesc, + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_modules_fundraising_v1_vesting_queue_proto_goTypes, + DependencyIndexes: file_modules_fundraising_v1_vesting_queue_proto_depIdxs, + MessageInfos: file_modules_fundraising_v1_vesting_queue_proto_msgTypes, + }.Build() + File_modules_fundraising_v1_vesting_queue_proto = out.File + file_modules_fundraising_v1_vesting_queue_proto_rawDesc = nil + file_modules_fundraising_v1_vesting_queue_proto_goTypes = nil + file_modules_fundraising_v1_vesting_queue_proto_depIdxs = nil +} diff --git a/app/app.go b/app/app.go index cd60d70..42d8684 100644 --- a/app/app.go +++ b/app/app.go @@ -73,6 +73,7 @@ import ( "github.com/ignite/modules/docs" claimmodulekeeper "github.com/ignite/modules/x/claim/keeper" + fundraisingmodulekeeper "github.com/ignite/modules/x/fundraising/keeper" mintmodulekeeper "github.com/ignite/modules/x/mint/keeper" ) @@ -133,8 +134,9 @@ type App struct { ScopedICAHostKeeper capabilitykeeper.ScopedKeeper ScopedKeepers map[string]capabilitykeeper.ScopedKeeper - MintKeeper mintmodulekeeper.Keeper - ClaimKeeper claimmodulekeeper.Keeper + MintKeeper mintmodulekeeper.Keeper + ClaimKeeper claimmodulekeeper.Keeper + FundraisingKeeper fundraisingmodulekeeper.Keeper // this line is used by starport scaffolding # stargate/app/keeperDeclaration // simulation manager @@ -239,6 +241,7 @@ func New( &app.GroupKeeper, &app.CircuitBreakerKeeper, &app.ClaimKeeper, + &app.FundraisingKeeper, ); err != nil { panic(err) } diff --git a/app/app_config.go b/app/app_config.go index aad8750..6f63427 100644 --- a/app/app_config.go +++ b/app/app_config.go @@ -63,8 +63,11 @@ import ( minttypes "github.com/ignite/modules/x/mint/types" // cosmos-sdk/ibc modules + fundraisingmodulev1 "github.com/ignite/modules/api/modules/fundraising/module/v1" _ "github.com/ignite/modules/x/claim/module" claimtypes "github.com/ignite/modules/x/claim/types" + _ "github.com/ignite/modules/x/fundraising/module" + fundraisingmoduletypes "github.com/ignite/modules/x/fundraising/types" ) var ( @@ -94,6 +97,7 @@ var ( group.ModuleName, consensustypes.ModuleName, circuittypes.ModuleName, + fundraisingmoduletypes.ModuleName, // this line is used by starport scaffolding # stargate/app/initGenesis } @@ -116,6 +120,7 @@ var ( ibctransfertypes.ModuleName, icatypes.ModuleName, ibcfeetypes.ModuleName, + fundraisingmoduletypes.ModuleName, // this line is used by starport scaffolding # stargate/app/beginBlockers } @@ -133,6 +138,7 @@ var ( capabilitytypes.ModuleName, icatypes.ModuleName, ibcfeetypes.ModuleName, + fundraisingmoduletypes.ModuleName, // this line is used by starport scaffolding # stargate/app/endBlockers } @@ -155,6 +161,7 @@ var ( {Account: icatypes.ModuleName}, {Account: claimtypes.ModuleName, Permissions: []string{authtypes.Minter, authtypes.Burner}}, + {Account: fundraisingmoduletypes.ModuleName, Permissions: []string{authtypes.Minter, authtypes.Burner, authtypes.Staking}}, // this line is used by starport scaffolding # stargate/app/maccPerms } @@ -294,6 +301,10 @@ var ( Name: claimtypes.ModuleName, Config: appconfig.WrapAny(&claimmodulev1.Module{}), }, + { + Name: fundraisingmoduletypes.ModuleName, + Config: appconfig.WrapAny(&fundraisingmodulev1.Module{}), + }, // this line is used by starport scaffolding # stargate/app/moduleConfig }, }) diff --git a/docs/static/openapi.yml b/docs/static/openapi.yml index afdf3c1..c5f0b23 100644 --- a/docs/static/openapi.yml +++ b/docs/static/openapi.yml @@ -1 +1 @@ -{"id":"github.com/ignite/modules","consumes":["application/json"],"produces":["application/json"],"swagger":"2.0","info":{"description":"Chain github.com/ignite/modules REST API","title":"HTTP API Console","contact":{"name":"github.com/ignite/modules"},"version":"version not set"},"paths":{"/cosmos.auth.v1beta1.Msg/UpdateParams":{"post":{"description":"Since: cosmos-sdk 0.47","tags":["Msg"],"summary":"UpdateParams defines a (governance) operation for updating the x/auth module\nparameters. The authority defaults to the x/gov module account.","operationId":"UpgradeMsg_UpdateParams","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.auth.v1beta1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.auth.v1beta1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.authz.v1beta1.Msg/Exec":{"post":{"tags":["Msg"],"summary":"Exec attempts to execute the provided messages using\nauthorizations granted to the grantee. Each message should have only\none signer corresponding to the granter of the authorization.","operationId":"UpgradeMsg_Exec","parameters":[{"description":"MsgExec attempts to execute the provided messages using\nauthorizations granted to the grantee. Each message should have only\none signer corresponding to the granter of the authorization.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.authz.v1beta1.MsgExec"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.authz.v1beta1.MsgExecResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.authz.v1beta1.Msg/Grant":{"post":{"tags":["Msg"],"summary":"Grant grants the provided authorization to the grantee on the granter's\naccount with the provided expiration time. If there is already a grant\nfor the given (granter, grantee, Authorization) triple, then the grant\nwill be overwritten.","operationId":"UpgradeMsg_Grant","parameters":[{"description":"MsgGrant is a request type for Grant method. It declares authorization to the grantee\non behalf of the granter with the provided expiration time.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.authz.v1beta1.MsgGrant"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.authz.v1beta1.MsgGrantResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.authz.v1beta1.Msg/Revoke":{"post":{"tags":["Msg"],"summary":"Revoke revokes any authorization corresponding to the provided method name on the\ngranter's account that has been granted to the grantee.","operationId":"UpgradeMsg_Revoke","parameters":[{"description":"MsgRevoke revokes any authorization with the provided sdk.Msg type on the\ngranter's account with that has been granted to the grantee.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.authz.v1beta1.MsgRevoke"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.authz.v1beta1.MsgRevokeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.autocli.v1.Query/AppOptions":{"post":{"tags":["Query"],"summary":"AppOptions returns the autocli options for all of the modules in an app.","operationId":"UpgradeQuery_AppOptions","parameters":[{"description":"AppOptionsRequest is the RemoteInfoService/AppOptions request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.autocli.v1.AppOptionsRequest"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.autocli.v1.AppOptionsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.bank.v1beta1.Msg/MultiSend":{"post":{"tags":["Msg"],"summary":"MultiSend defines a method for sending coins from some accounts to other accounts.","operationId":"UpgradeMsg_MultiSend","parameters":[{"description":"MsgMultiSend represents an arbitrary multi-in, multi-out send message.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.MsgMultiSend"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.MsgMultiSendResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.bank.v1beta1.Msg/Send":{"post":{"tags":["Msg"],"summary":"Send defines a method for sending coins from one account to another account.","operationId":"UpgradeMsg_Send","parameters":[{"description":"MsgSend represents a message to send coins from one account to another.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.MsgSend"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.MsgSendResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.bank.v1beta1.Msg/SetSendEnabled":{"post":{"description":"Since: cosmos-sdk 0.47","tags":["Msg"],"summary":"SetSendEnabled is a governance operation for setting the SendEnabled flag\non any number of Denoms. Only the entries to add or update should be\nincluded. Entries that already exist in the store, but that aren't\nincluded in this message, will be left unchanged.","operationId":"UpgradeMsg_SetSendEnabled","parameters":[{"description":"MsgSetSendEnabled is the Msg/SetSendEnabled request type.\n\nOnly entries to add/update/delete need to be included.\nExisting SendEnabled entries that are not included in this\nmessage are left unchanged.\n\nSince: cosmos-sdk 0.47","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.MsgSetSendEnabled"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.MsgSetSendEnabledResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.bank.v1beta1.Msg/UpdateParams":{"post":{"description":"Since: cosmos-sdk 0.47","tags":["Msg"],"summary":"UpdateParams defines a governance operation for updating the x/bank module parameters.\nThe authority is defined in the keeper.","operationId":"UpgradeMsg_UpdateParamsMixin32","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.circuit.v1.Msg/AuthorizeCircuitBreaker":{"post":{"tags":["Msg"],"summary":"AuthorizeCircuitBreaker allows a super-admin to grant (or revoke) another\naccount's circuit breaker permissions.","operationId":"UpgradeMsg_AuthorizeCircuitBreaker","parameters":[{"description":"MsgAuthorizeCircuitBreaker defines the Msg/AuthorizeCircuitBreaker request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.circuit.v1.MsgAuthorizeCircuitBreaker"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.circuit.v1.MsgAuthorizeCircuitBreakerResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.circuit.v1.Msg/ResetCircuitBreaker":{"post":{"tags":["Msg"],"summary":"ResetCircuitBreaker resumes processing of Msg's in the state machine that\nhave been been paused using TripCircuitBreaker.","operationId":"UpgradeMsg_ResetCircuitBreaker","parameters":[{"description":"MsgResetCircuitBreaker defines the Msg/ResetCircuitBreaker request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.circuit.v1.MsgResetCircuitBreaker"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.circuit.v1.MsgResetCircuitBreakerResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.circuit.v1.Msg/TripCircuitBreaker":{"post":{"tags":["Msg"],"summary":"TripCircuitBreaker pauses processing of Msg's in the state machine.","operationId":"UpgradeMsg_TripCircuitBreaker","parameters":[{"description":"MsgTripCircuitBreaker defines the Msg/TripCircuitBreaker request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.circuit.v1.MsgTripCircuitBreaker"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.circuit.v1.MsgTripCircuitBreakerResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.consensus.v1.Msg/UpdateParams":{"post":{"description":"Since: cosmos-sdk 0.47","tags":["Msg"],"summary":"UpdateParams defines a governance operation for updating the x/consensus module parameters.\nThe authority is defined in the keeper.","operationId":"UpgradeMsg_UpdateParamsMixin45","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.consensus.v1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.consensus.v1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.crisis.v1beta1.Msg/UpdateParams":{"post":{"description":"Since: cosmos-sdk 0.47","tags":["Msg"],"summary":"UpdateParams defines a governance operation for updating the x/crisis module\nparameters. The authority is defined in the keeper.","operationId":"UpgradeMsg_UpdateParamsMixin47","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.crisis.v1beta1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.crisis.v1beta1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.crisis.v1beta1.Msg/VerifyInvariant":{"post":{"tags":["Msg"],"summary":"VerifyInvariant defines a method to verify a particular invariant.","operationId":"UpgradeMsg_VerifyInvariant","parameters":[{"description":"MsgVerifyInvariant represents a message to verify a particular invariance.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.crisis.v1beta1.MsgVerifyInvariant"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.crisis.v1beta1.MsgVerifyInvariantResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.distribution.v1beta1.Msg/CommunityPoolSpend":{"post":{"description":"Since: cosmos-sdk 0.47","tags":["Msg"],"summary":"CommunityPoolSpend defines a governance operation for sending tokens from\nthe community pool in the x/distribution module to another account, which\ncould be the governance module itself. The authority is defined in the\nkeeper.","operationId":"UpgradeMsg_CommunityPoolSpend","parameters":[{"description":"MsgCommunityPoolSpend defines a message for sending tokens from the community\npool to another account. This message is typically executed via a governance\nproposal with the governance module being the executing authority.\n\nSince: cosmos-sdk 0.47","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgCommunityPoolSpend"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgCommunityPoolSpendResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.distribution.v1beta1.Msg/DepositValidatorRewardsPool":{"post":{"description":"Since: cosmos-sdk 0.50","tags":["Msg"],"summary":"DepositValidatorRewardsPool defines a method to provide additional rewards\nto delegators to a specific validator.","operationId":"UpgradeMsg_DepositValidatorRewardsPool","parameters":[{"description":"DepositValidatorRewardsPool defines the request structure to provide\nadditional rewards to delegators from a specific validator.\n\nSince: cosmos-sdk 0.50","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgDepositValidatorRewardsPool"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgDepositValidatorRewardsPoolResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.distribution.v1beta1.Msg/FundCommunityPool":{"post":{"tags":["Msg"],"summary":"FundCommunityPool defines a method to allow an account to directly\nfund the community pool.","operationId":"UpgradeMsg_FundCommunityPool","parameters":[{"description":"MsgFundCommunityPool allows an account to directly\nfund the community pool.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgFundCommunityPool"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgFundCommunityPoolResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.distribution.v1beta1.Msg/SetWithdrawAddress":{"post":{"tags":["Msg"],"summary":"SetWithdrawAddress defines a method to change the withdraw address\nfor a delegator (or validator self-delegation).","operationId":"UpgradeMsg_SetWithdrawAddress","parameters":[{"description":"MsgSetWithdrawAddress sets the withdraw address for\na delegator (or validator self-delegation).","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgSetWithdrawAddress"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgSetWithdrawAddressResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.distribution.v1beta1.Msg/UpdateParams":{"post":{"description":"Since: cosmos-sdk 0.47","tags":["Msg"],"summary":"UpdateParams defines a governance operation for updating the x/distribution\nmodule parameters. The authority is defined in the keeper.","operationId":"UpgradeMsg_UpdateParamsMixin58","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.distribution.v1beta1.Msg/WithdrawDelegatorReward":{"post":{"tags":["Msg"],"summary":"WithdrawDelegatorReward defines a method to withdraw rewards of delegator\nfrom a single validator.","operationId":"UpgradeMsg_WithdrawDelegatorReward","parameters":[{"description":"MsgWithdrawDelegatorReward represents delegation withdrawal to a delegator\nfrom a single validator.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgWithdrawDelegatorRewardResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.distribution.v1beta1.Msg/WithdrawValidatorCommission":{"post":{"tags":["Msg"],"summary":"WithdrawValidatorCommission defines a method to withdraw the\nfull commission to the validator address.","operationId":"UpgradeMsg_WithdrawValidatorCommission","parameters":[{"description":"MsgWithdrawValidatorCommission withdraws the full commission to the validator\naddress.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgWithdrawValidatorCommission"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgWithdrawValidatorCommissionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.evidence.v1beta1.Msg/SubmitEvidence":{"post":{"tags":["Msg"],"summary":"SubmitEvidence submits an arbitrary Evidence of misbehavior such as equivocation or\ncounterfactual signing.","operationId":"UpgradeMsg_SubmitEvidence","parameters":[{"description":"MsgSubmitEvidence represents a message that supports submitting arbitrary\nEvidence of misbehavior such as equivocation or counterfactual signing.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.evidence.v1beta1.MsgSubmitEvidence"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evidence.v1beta1.MsgSubmitEvidenceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.feegrant.v1beta1.Msg/GrantAllowance":{"post":{"tags":["Msg"],"summary":"GrantAllowance grants fee allowance to the grantee on the granter's\naccount with the provided expiration time.","operationId":"UpgradeMsg_GrantAllowance","parameters":[{"description":"MsgGrantAllowance adds permission for Grantee to spend up to Allowance\nof fees from the account of Granter.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.feegrant.v1beta1.MsgGrantAllowance"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.feegrant.v1beta1.MsgGrantAllowanceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.feegrant.v1beta1.Msg/PruneAllowances":{"post":{"description":"Since cosmos-sdk 0.50","tags":["Msg"],"summary":"PruneAllowances prunes expired fee allowances, currently up to 75 at a time.","operationId":"UpgradeMsg_PruneAllowances","parameters":[{"description":"MsgPruneAllowances prunes expired fee allowances.\n\nSince cosmos-sdk 0.50","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.feegrant.v1beta1.MsgPruneAllowances"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.feegrant.v1beta1.MsgPruneAllowancesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.feegrant.v1beta1.Msg/RevokeAllowance":{"post":{"tags":["Msg"],"summary":"RevokeAllowance revokes any fee allowance of granter's account that\nhas been granted to the grantee.","operationId":"UpgradeMsg_RevokeAllowance","parameters":[{"description":"MsgRevokeAllowance removes any existing Allowance from Granter to Grantee.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.feegrant.v1beta1.MsgRevokeAllowance"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.feegrant.v1beta1.MsgRevokeAllowanceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.gov.v1.Msg/CancelProposal":{"post":{"description":"Since: cosmos-sdk 0.50","tags":["Msg"],"summary":"CancelProposal defines a method to cancel governance proposal","operationId":"UpgradeMsg_CancelProposal","parameters":[{"description":"MsgCancelProposal is the Msg/CancelProposal request type.\n\nSince: cosmos-sdk 0.50","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgCancelProposal"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgCancelProposalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.gov.v1.Msg/Deposit":{"post":{"tags":["Msg"],"summary":"Deposit defines a method to add deposit on a specific proposal.","operationId":"UpgradeMsg_Deposit","parameters":[{"description":"MsgDeposit defines a message to submit a deposit to an existing proposal.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgDeposit"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgDepositResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.gov.v1.Msg/ExecLegacyContent":{"post":{"tags":["Msg"],"summary":"ExecLegacyContent defines a Msg to be in included in a MsgSubmitProposal\nto execute a legacy content-based proposal.","operationId":"UpgradeMsg_ExecLegacyContent","parameters":[{"description":"MsgExecLegacyContent is used to wrap the legacy content field into a message.\nThis ensures backwards compatibility with v1beta1.MsgSubmitProposal.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgExecLegacyContent"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgExecLegacyContentResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.gov.v1.Msg/SubmitProposal":{"post":{"tags":["Msg"],"summary":"SubmitProposal defines a method to create new proposal given the messages.","operationId":"UpgradeMsg_SubmitProposal","parameters":[{"description":"MsgSubmitProposal defines an sdk.Msg type that supports submitting arbitrary\nproposal Content.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgSubmitProposal"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgSubmitProposalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.gov.v1.Msg/UpdateParams":{"post":{"description":"Since: cosmos-sdk 0.47","tags":["Msg"],"summary":"UpdateParams defines a governance operation for updating the x/gov module\nparameters. The authority is defined in the keeper.","operationId":"UpgradeMsg_UpdateParamsMixin71","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.gov.v1.Msg/Vote":{"post":{"tags":["Msg"],"summary":"Vote defines a method to add a vote on a specific proposal.","operationId":"UpgradeMsg_Vote","parameters":[{"description":"MsgVote defines a message to cast a vote.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgVote"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgVoteResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.gov.v1.Msg/VoteWeighted":{"post":{"tags":["Msg"],"summary":"VoteWeighted defines a method to add a weighted vote on a specific proposal.","operationId":"UpgradeMsg_VoteWeighted","parameters":[{"description":"MsgVoteWeighted defines a message to cast a vote.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgVoteWeighted"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgVoteWeightedResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.gov.v1beta1.Msg/Deposit":{"post":{"tags":["Msg"],"summary":"Deposit defines a method to add deposit on a specific proposal.","operationId":"UpgradeMsg_DepositMixin75","parameters":[{"description":"MsgDeposit defines a message to submit a deposit to an existing proposal.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.MsgDeposit"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.MsgDepositResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.gov.v1beta1.Msg/SubmitProposal":{"post":{"tags":["Msg"],"summary":"SubmitProposal defines a method to create new proposal given a content.","operationId":"UpgradeMsg_SubmitProposalMixin75","parameters":[{"description":"MsgSubmitProposal defines an sdk.Msg type that supports submitting arbitrary\nproposal Content.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.MsgSubmitProposal"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.MsgSubmitProposalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.gov.v1beta1.Msg/Vote":{"post":{"tags":["Msg"],"summary":"Vote defines a method to add a vote on a specific proposal.","operationId":"UpgradeMsg_VoteMixin75","parameters":[{"description":"MsgVote defines a message to cast a vote.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.MsgVote"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.MsgVoteResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.gov.v1beta1.Msg/VoteWeighted":{"post":{"description":"Since: cosmos-sdk 0.43","tags":["Msg"],"summary":"VoteWeighted defines a method to add a weighted vote on a specific proposal.","operationId":"UpgradeMsg_VoteWeightedMixin75","parameters":[{"description":"MsgVoteWeighted defines a message to cast a vote.\n\nSince: cosmos-sdk 0.43","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.MsgVoteWeighted"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.MsgVoteWeightedResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/CreateGroup":{"post":{"tags":["Msg"],"summary":"CreateGroup creates a new group with an admin account address, a list of members and some optional metadata.","operationId":"UpgradeMsg_CreateGroup","parameters":[{"description":"MsgCreateGroup is the Msg/CreateGroup request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgCreateGroup"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgCreateGroupResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/CreateGroupPolicy":{"post":{"tags":["Msg"],"summary":"CreateGroupPolicy creates a new group policy using given DecisionPolicy.","operationId":"UpgradeMsg_CreateGroupPolicy","parameters":[{"description":"MsgCreateGroupPolicy is the Msg/CreateGroupPolicy request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgCreateGroupPolicy"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgCreateGroupPolicyResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/CreateGroupWithPolicy":{"post":{"tags":["Msg"],"summary":"CreateGroupWithPolicy creates a new group with policy.","operationId":"UpgradeMsg_CreateGroupWithPolicy","parameters":[{"description":"MsgCreateGroupWithPolicy is the Msg/CreateGroupWithPolicy request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgCreateGroupWithPolicy"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgCreateGroupWithPolicyResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/Exec":{"post":{"tags":["Msg"],"summary":"Exec executes a proposal.","operationId":"UpgradeMsg_ExecMixin79","parameters":[{"description":"MsgExec is the Msg/Exec request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgExec"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgExecResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/LeaveGroup":{"post":{"tags":["Msg"],"summary":"LeaveGroup allows a group member to leave the group.","operationId":"UpgradeMsg_LeaveGroup","parameters":[{"description":"MsgLeaveGroup is the Msg/LeaveGroup request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgLeaveGroup"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgLeaveGroupResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/SubmitProposal":{"post":{"tags":["Msg"],"summary":"SubmitProposal submits a new proposal.","operationId":"UpgradeMsg_SubmitProposalMixin79","parameters":[{"description":"MsgSubmitProposal is the Msg/SubmitProposal request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgSubmitProposal"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgSubmitProposalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/UpdateGroupAdmin":{"post":{"tags":["Msg"],"summary":"UpdateGroupAdmin updates the group admin with given group id and previous admin address.","operationId":"UpgradeMsg_UpdateGroupAdmin","parameters":[{"description":"MsgUpdateGroupAdmin is the Msg/UpdateGroupAdmin request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgUpdateGroupAdmin"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgUpdateGroupAdminResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/UpdateGroupMembers":{"post":{"tags":["Msg"],"summary":"UpdateGroupMembers updates the group members with given group id and admin address.","operationId":"UpgradeMsg_UpdateGroupMembers","parameters":[{"description":"MsgUpdateGroupMembers is the Msg/UpdateGroupMembers request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgUpdateGroupMembers"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgUpdateGroupMembersResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/UpdateGroupMetadata":{"post":{"tags":["Msg"],"summary":"UpdateGroupMetadata updates the group metadata with given group id and admin address.","operationId":"UpgradeMsg_UpdateGroupMetadata","parameters":[{"description":"MsgUpdateGroupMetadata is the Msg/UpdateGroupMetadata request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgUpdateGroupMetadata"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgUpdateGroupMetadataResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/UpdateGroupPolicyAdmin":{"post":{"tags":["Msg"],"summary":"UpdateGroupPolicyAdmin updates a group policy admin.","operationId":"UpgradeMsg_UpdateGroupPolicyAdmin","parameters":[{"description":"MsgUpdateGroupPolicyAdmin is the Msg/UpdateGroupPolicyAdmin request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgUpdateGroupPolicyAdmin"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgUpdateGroupPolicyAdminResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/UpdateGroupPolicyDecisionPolicy":{"post":{"tags":["Msg"],"summary":"UpdateGroupPolicyDecisionPolicy allows a group policy's decision policy to be updated.","operationId":"UpgradeMsg_UpdateGroupPolicyDecisionPolicy","parameters":[{"description":"MsgUpdateGroupPolicyDecisionPolicy is the Msg/UpdateGroupPolicyDecisionPolicy request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgUpdateGroupPolicyDecisionPolicy"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgUpdateGroupPolicyDecisionPolicyResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/UpdateGroupPolicyMetadata":{"post":{"tags":["Msg"],"summary":"UpdateGroupPolicyMetadata updates a group policy metadata.","operationId":"UpgradeMsg_UpdateGroupPolicyMetadata","parameters":[{"description":"MsgUpdateGroupPolicyMetadata is the Msg/UpdateGroupPolicyMetadata request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgUpdateGroupPolicyMetadata"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgUpdateGroupPolicyMetadataResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/Vote":{"post":{"tags":["Msg"],"summary":"Vote allows a voter to vote on a proposal.","operationId":"UpgradeMsg_VoteMixin79","parameters":[{"description":"MsgVote is the Msg/Vote request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgVote"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgVoteResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/WithdrawProposal":{"post":{"tags":["Msg"],"summary":"WithdrawProposal withdraws a proposal.","operationId":"UpgradeMsg_WithdrawProposal","parameters":[{"description":"MsgWithdrawProposal is the Msg/WithdrawProposal request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgWithdrawProposal"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgWithdrawProposalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.mint.v1beta1.Msg/UpdateParams":{"post":{"description":"Since: cosmos-sdk 0.47","tags":["Msg"],"summary":"UpdateParams defines a governance operation for updating the x/mint module\nparameters. The authority is defaults to the x/gov module account.","operationId":"UpgradeMsg_UpdateParamsMixin84","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.mint.v1beta1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.mint.v1beta1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.nft.v1beta1.Msg/Send":{"post":{"tags":["Msg"],"summary":"Send defines a method to send a nft from one account to another account.","operationId":"UpgradeMsg_SendMixin90","parameters":[{"description":"MsgSend represents a message to send a nft from one account to another account.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.nft.v1beta1.MsgSend"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.nft.v1beta1.MsgSendResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.slashing.v1beta1.Msg/Unjail":{"post":{"tags":["Msg"],"summary":"Unjail defines a method for unjailing a jailed validator, thus returning\nthem into the bonded validator set, so they can begin receiving provisions\nand rewards again.","operationId":"UpgradeMsg_Unjail","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.slashing.v1beta1.MsgUnjail"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.slashing.v1beta1.MsgUnjailResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.slashing.v1beta1.Msg/UpdateParams":{"post":{"description":"Since: cosmos-sdk 0.47","tags":["Msg"],"summary":"UpdateParams defines a governance operation for updating the x/slashing module\nparameters. The authority defaults to the x/gov module account.","operationId":"UpgradeMsg_UpdateParamsMixin97","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.slashing.v1beta1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.slashing.v1beta1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.staking.v1beta1.Msg/BeginRedelegate":{"post":{"tags":["Msg"],"summary":"BeginRedelegate defines a method for performing a redelegation\nof coins from a delegator and source validator to a destination validator.","operationId":"UpgradeMsg_BeginRedelegate","parameters":[{"description":"MsgBeginRedelegate defines a SDK message for performing a redelegation\nof coins from a delegator and source validator to a destination validator.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgBeginRedelegate"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgBeginRedelegateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.staking.v1beta1.Msg/CancelUnbondingDelegation":{"post":{"description":"Since: cosmos-sdk 0.46","tags":["Msg"],"summary":"CancelUnbondingDelegation defines a method for performing canceling the unbonding delegation\nand delegate back to previous validator.","operationId":"UpgradeMsg_CancelUnbondingDelegation","parameters":[{"description":"Since: cosmos-sdk 0.46","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgCancelUnbondingDelegation"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgCancelUnbondingDelegationResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.staking.v1beta1.Msg/CreateValidator":{"post":{"tags":["Msg"],"summary":"CreateValidator defines a method for creating a new validator.","operationId":"UpgradeMsg_CreateValidator","parameters":[{"description":"MsgCreateValidator defines a SDK message for creating a new validator.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgCreateValidator"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgCreateValidatorResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.staking.v1beta1.Msg/Delegate":{"post":{"tags":["Msg"],"summary":"Delegate defines a method for performing a delegation of coins\nfrom a delegator to a validator.","operationId":"UpgradeMsg_Delegate","parameters":[{"description":"MsgDelegate defines a SDK message for performing a delegation of coins\nfrom a delegator to a validator.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgDelegate"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgDelegateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.staking.v1beta1.Msg/EditValidator":{"post":{"tags":["Msg"],"summary":"EditValidator defines a method for editing an existing validator.","operationId":"UpgradeMsg_EditValidator","parameters":[{"description":"MsgEditValidator defines a SDK message for editing an existing validator.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgEditValidator"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgEditValidatorResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.staking.v1beta1.Msg/Undelegate":{"post":{"tags":["Msg"],"summary":"Undelegate defines a method for performing an undelegation from a\ndelegate and a validator.","operationId":"UpgradeMsg_Undelegate","parameters":[{"description":"MsgUndelegate defines a SDK message for performing an undelegation from a\ndelegate and a validator.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgUndelegate"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgUndelegateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.staking.v1beta1.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines an operation for updating the x/staking module\nparameters.\nSince: cosmos-sdk 0.47","operationId":"UpgradeMsg_UpdateParamsMixin102","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.store.streaming.abci.ABCIListenerService/ListenCommit":{"post":{"tags":["ABCIListenerService"],"summary":"ListenCommit is the corresponding endpoint for ABCIListener.ListenCommit","operationId":"UpgradeABCIListenerService_ListenCommit","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.store.streaming.abci.ListenCommitRequest"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.store.streaming.abci.ListenCommitResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.store.streaming.abci.ABCIListenerService/ListenFinalizeBlock":{"post":{"tags":["ABCIListenerService"],"summary":"ListenFinalizeBlock is the corresponding endpoint for ABCIListener.ListenEndBlock","operationId":"UpgradeABCIListenerService_ListenFinalizeBlock","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.store.streaming.abci.ListenFinalizeBlockRequest"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.store.streaming.abci.ListenFinalizeBlockResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.upgrade.v1beta1.Msg/CancelUpgrade":{"post":{"description":"Since: cosmos-sdk 0.46","tags":["Msg"],"summary":"CancelUpgrade is a governance operation for cancelling a previously\napproved software upgrade.","operationId":"UpgradeMsg_CancelUpgrade","parameters":[{"description":"MsgCancelUpgrade is the Msg/CancelUpgrade request type.\n\nSince: cosmos-sdk 0.46","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.upgrade.v1beta1.MsgCancelUpgrade"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.upgrade.v1beta1.MsgCancelUpgradeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.upgrade.v1beta1.Msg/SoftwareUpgrade":{"post":{"description":"Since: cosmos-sdk 0.46","tags":["Msg"],"summary":"SoftwareUpgrade is a governance operation for initiating a software upgrade.","operationId":"UpgradeMsg_SoftwareUpgrade","parameters":[{"description":"MsgSoftwareUpgrade is the Msg/SoftwareUpgrade request type.\n\nSince: cosmos-sdk 0.46","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.upgrade.v1beta1.MsgSoftwareUpgrade"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.upgrade.v1beta1.MsgSoftwareUpgradeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.vesting.v1beta1.Msg/CreatePeriodicVestingAccount":{"post":{"description":"Since: cosmos-sdk 0.46","tags":["Msg"],"summary":"CreatePeriodicVestingAccount defines a method that enables creating a\nperiodic vesting account.","operationId":"UpgradeMsg_CreatePeriodicVestingAccount","parameters":[{"description":"MsgCreateVestingAccount defines a message that enables creating a vesting\naccount.\n\nSince: cosmos-sdk 0.46","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.vesting.v1beta1.MsgCreatePeriodicVestingAccount"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.vesting.v1beta1.MsgCreatePeriodicVestingAccountResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.vesting.v1beta1.Msg/CreatePermanentLockedAccount":{"post":{"description":"Since: cosmos-sdk 0.46","tags":["Msg"],"summary":"CreatePermanentLockedAccount defines a method that enables creating a permanent\nlocked account.","operationId":"UpgradeMsg_CreatePermanentLockedAccount","parameters":[{"description":"MsgCreatePermanentLockedAccount defines a message that enables creating a permanent\nlocked account.\n\nSince: cosmos-sdk 0.46","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.vesting.v1beta1.MsgCreatePermanentLockedAccount"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.vesting.v1beta1.MsgCreatePermanentLockedAccountResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.vesting.v1beta1.Msg/CreateVestingAccount":{"post":{"tags":["Msg"],"summary":"CreateVestingAccount defines a method that enables creating a vesting\naccount.","operationId":"UpgradeMsg_CreateVestingAccount","parameters":[{"description":"MsgCreateVestingAccount defines a message that enables creating a vesting\naccount.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.vesting.v1beta1.MsgCreateVestingAccount"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.vesting.v1beta1.MsgCreateVestingAccountResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/auth/v1beta1/account_info/{address}":{"get":{"description":"Since: cosmos-sdk 0.47","tags":["Query"],"summary":"AccountInfo queries account info which is common to all account types.","operationId":"UpgradeQuery_AccountInfo","parameters":[{"type":"string","description":"address is the account address string.","name":"address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.auth.v1beta1.QueryAccountInfoResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/auth/v1beta1/accounts":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.\n\nSince: cosmos-sdk 0.43","tags":["Query"],"summary":"Accounts returns all the existing accounts.","operationId":"UpgradeQuery_Accounts","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.auth.v1beta1.QueryAccountsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/auth/v1beta1/accounts/{address}":{"get":{"tags":["Query"],"summary":"Account returns account details based on address.","operationId":"UpgradeQuery_Account","parameters":[{"type":"string","description":"address defines the address to query for.","name":"address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.auth.v1beta1.QueryAccountResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/auth/v1beta1/address_by_id/{id}":{"get":{"description":"Since: cosmos-sdk 0.46.2","tags":["Query"],"summary":"AccountAddressByID returns account address based on account number.","operationId":"UpgradeQuery_AccountAddressByID","parameters":[{"type":"string","format":"int64","description":"Deprecated, use account_id instead\n\nid is the account number of the address to be queried. This field\nshould have been an uint64 (like all account numbers), and will be\nupdated to uint64 in a future version of the auth query.","name":"id","in":"path","required":true},{"type":"string","format":"uint64","description":"account_id is the account number of the address to be queried.\n\nSince: cosmos-sdk 0.47","name":"account_id","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.auth.v1beta1.QueryAccountAddressByIDResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/auth/v1beta1/bech32":{"get":{"description":"Since: cosmos-sdk 0.46","tags":["Query"],"summary":"Bech32Prefix queries bech32Prefix","operationId":"UpgradeQuery_Bech32Prefix","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.auth.v1beta1.Bech32PrefixResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/auth/v1beta1/bech32/{address_bytes}":{"get":{"description":"Since: cosmos-sdk 0.46","tags":["Query"],"summary":"AddressBytesToString converts Account Address bytes to string","operationId":"UpgradeQuery_AddressBytesToString","parameters":[{"type":"string","format":"byte","name":"address_bytes","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.auth.v1beta1.AddressBytesToStringResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/auth/v1beta1/bech32/{address_string}":{"get":{"description":"Since: cosmos-sdk 0.46","tags":["Query"],"summary":"AddressStringToBytes converts Address string to bytes","operationId":"UpgradeQuery_AddressStringToBytes","parameters":[{"type":"string","name":"address_string","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.auth.v1beta1.AddressStringToBytesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/auth/v1beta1/module_accounts":{"get":{"description":"Since: cosmos-sdk 0.46","tags":["Query"],"summary":"ModuleAccounts returns all the existing module accounts.","operationId":"UpgradeQuery_ModuleAccounts","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.auth.v1beta1.QueryModuleAccountsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/auth/v1beta1/module_accounts/{name}":{"get":{"tags":["Query"],"summary":"ModuleAccountByName returns the module account info by module name","operationId":"UpgradeQuery_ModuleAccountByName","parameters":[{"type":"string","name":"name","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.auth.v1beta1.QueryModuleAccountByNameResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/auth/v1beta1/params":{"get":{"tags":["Query"],"summary":"Params queries all parameters.","operationId":"UpgradeQuery_Params","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.auth.v1beta1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/authz/v1beta1/grants":{"get":{"tags":["Query"],"summary":"Returns list of `Authorization`, granted to the grantee by the granter.","operationId":"UpgradeQuery_Grants","parameters":[{"type":"string","name":"granter","in":"query"},{"type":"string","name":"grantee","in":"query"},{"type":"string","description":"Optional, msg_type_url, when set, will query only grants matching given msg type.","name":"msg_type_url","in":"query"},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.authz.v1beta1.QueryGrantsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/authz/v1beta1/grants/grantee/{grantee}":{"get":{"description":"Since: cosmos-sdk 0.46","tags":["Query"],"summary":"GranteeGrants returns a list of `GrantAuthorization` by grantee.","operationId":"UpgradeQuery_GranteeGrants","parameters":[{"type":"string","name":"grantee","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.authz.v1beta1.QueryGranteeGrantsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/authz/v1beta1/grants/granter/{granter}":{"get":{"description":"Since: cosmos-sdk 0.46","tags":["Query"],"summary":"GranterGrants returns list of `GrantAuthorization`, granted by granter.","operationId":"UpgradeQuery_GranterGrants","parameters":[{"type":"string","name":"granter","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.authz.v1beta1.QueryGranterGrantsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/balances/{address}":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.","tags":["Query"],"summary":"AllBalances queries the balance of all coins for a single account.","operationId":"UpgradeQuery_AllBalances","parameters":[{"type":"string","description":"address is the address to query balances for.","name":"address","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"},{"type":"boolean","description":"resolve_denom is the flag to resolve the denom into a human-readable form from the metadata.\n\nSince: cosmos-sdk 0.50","name":"resolve_denom","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QueryAllBalancesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/balances/{address}/by_denom":{"get":{"tags":["Query"],"summary":"Balance queries the balance of a single coin for a single account.","operationId":"UpgradeQuery_Balance","parameters":[{"type":"string","description":"address is the address to query balances for.","name":"address","in":"path","required":true},{"type":"string","description":"denom is the coin denom to query balances for.","name":"denom","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QueryBalanceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/denom_owners/{denom}":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.\n\nSince: cosmos-sdk 0.46","tags":["Query"],"summary":"DenomOwners queries for all account addresses that own a particular token\ndenomination.","operationId":"UpgradeQuery_DenomOwners","parameters":[{"type":"string","description":"denom defines the coin denomination to query all account holders for.","name":"denom","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QueryDenomOwnersResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/denom_owners_by_query":{"get":{"description":"Since: cosmos-sdk 0.50.3","tags":["Query"],"summary":"DenomOwnersByQuery queries for all account addresses that own a particular token\ndenomination.","operationId":"UpgradeQuery_DenomOwnersByQuery","parameters":[{"type":"string","description":"denom defines the coin denomination to query all account holders for.","name":"denom","in":"query"},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QueryDenomOwnersByQueryResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/denoms_metadata":{"get":{"tags":["Query"],"summary":"DenomsMetadata queries the client metadata for all registered coin\ndenominations.","operationId":"UpgradeQuery_DenomsMetadata","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QueryDenomsMetadataResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/denoms_metadata/{denom}":{"get":{"tags":["Query"],"summary":"DenomMetadata queries the client metadata of a given coin denomination.","operationId":"UpgradeQuery_DenomMetadata","parameters":[{"type":"string","description":"denom is the coin denom to query the metadata for.","name":"denom","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QueryDenomMetadataResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/denoms_metadata_by_query_string":{"get":{"tags":["Query"],"summary":"DenomMetadataByQueryString queries the client metadata of a given coin denomination.","operationId":"UpgradeQuery_DenomMetadataByQueryString","parameters":[{"type":"string","description":"denom is the coin denom to query the metadata for.","name":"denom","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QueryDenomMetadataByQueryStringResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/params":{"get":{"tags":["Query"],"summary":"Params queries the parameters of x/bank module.","operationId":"UpgradeQuery_ParamsMixin31","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/send_enabled":{"get":{"description":"This query only returns denominations that have specific SendEnabled settings.\nAny denomination that does not have a specific setting will use the default\nparams.default_send_enabled, and will not be returned by this query.\n\nSince: cosmos-sdk 0.47","tags":["Query"],"summary":"SendEnabled queries for SendEnabled entries.","operationId":"UpgradeQuery_SendEnabled","parameters":[{"type":"array","items":{"type":"string"},"collectionFormat":"multi","description":"denoms is the specific denoms you want look up. Leave empty to get all entries.","name":"denoms","in":"query"},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QuerySendEnabledResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/spendable_balances/{address}":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.\n\nSince: cosmos-sdk 0.46","tags":["Query"],"summary":"SpendableBalances queries the spendable balance of all coins for a single\naccount.","operationId":"UpgradeQuery_SpendableBalances","parameters":[{"type":"string","description":"address is the address to query spendable balances for.","name":"address","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QuerySpendableBalancesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/spendable_balances/{address}/by_denom":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.\n\nSince: cosmos-sdk 0.47","tags":["Query"],"summary":"SpendableBalanceByDenom queries the spendable balance of a single denom for\na single account.","operationId":"UpgradeQuery_SpendableBalanceByDenom","parameters":[{"type":"string","description":"address is the address to query balances for.","name":"address","in":"path","required":true},{"type":"string","description":"denom is the coin denom to query balances for.","name":"denom","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QuerySpendableBalanceByDenomResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/supply":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.","tags":["Query"],"summary":"TotalSupply queries the total supply of all coins.","operationId":"UpgradeQuery_TotalSupply","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QueryTotalSupplyResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/supply/by_denom":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.","tags":["Query"],"summary":"SupplyOf queries the supply of a single coin.","operationId":"UpgradeQuery_SupplyOf","parameters":[{"type":"string","description":"denom is the coin denom to query balances for.","name":"denom","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QuerySupplyOfResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/node/v1beta1/config":{"get":{"tags":["Service"],"summary":"Config queries for the operator configuration.","operationId":"UpgradeService_Config","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.node.v1beta1.ConfigResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/node/v1beta1/status":{"get":{"tags":["Service"],"summary":"Status queries for the node status.","operationId":"UpgradeService_Status","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.node.v1beta1.StatusResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/reflection/v1beta1/app_descriptor/authn":{"get":{"tags":["ReflectionService"],"summary":"GetAuthnDescriptor returns information on how to authenticate transactions in the application\nNOTE: this RPC is still experimental and might be subject to breaking changes or removal in\nfuture releases of the cosmos-sdk.","operationId":"UpgradeReflectionService_GetAuthnDescriptor","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.reflection.v2alpha1.GetAuthnDescriptorResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/reflection/v1beta1/app_descriptor/chain":{"get":{"tags":["ReflectionService"],"summary":"GetChainDescriptor returns the description of the chain","operationId":"UpgradeReflectionService_GetChainDescriptor","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.reflection.v2alpha1.GetChainDescriptorResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/reflection/v1beta1/app_descriptor/codec":{"get":{"tags":["ReflectionService"],"summary":"GetCodecDescriptor returns the descriptor of the codec of the application","operationId":"UpgradeReflectionService_GetCodecDescriptor","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.reflection.v2alpha1.GetCodecDescriptorResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/reflection/v1beta1/app_descriptor/configuration":{"get":{"tags":["ReflectionService"],"summary":"GetConfigurationDescriptor returns the descriptor for the sdk.Config of the application","operationId":"UpgradeReflectionService_GetConfigurationDescriptor","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.reflection.v2alpha1.GetConfigurationDescriptorResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/reflection/v1beta1/app_descriptor/query_services":{"get":{"tags":["ReflectionService"],"summary":"GetQueryServicesDescriptor returns the available gRPC queryable services of the application","operationId":"UpgradeReflectionService_GetQueryServicesDescriptor","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.reflection.v2alpha1.GetQueryServicesDescriptorResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/reflection/v1beta1/app_descriptor/tx_descriptor":{"get":{"tags":["ReflectionService"],"summary":"GetTxDescriptor returns information on the used transaction object and available msgs that can be used","operationId":"UpgradeReflectionService_GetTxDescriptor","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.reflection.v2alpha1.GetTxDescriptorResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/reflection/v1beta1/interfaces":{"get":{"tags":["ReflectionService"],"summary":"ListAllInterfaces lists all the interfaces registered in the interface\nregistry.","operationId":"UpgradeReflectionService_ListAllInterfaces","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.reflection.v1beta1.ListAllInterfacesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/reflection/v1beta1/interfaces/{interface_name}/implementations":{"get":{"tags":["ReflectionService"],"summary":"ListImplementations list all the concrete types that implement a given\ninterface.","operationId":"UpgradeReflectionService_ListImplementations","parameters":[{"type":"string","description":"interface_name defines the interface to query the implementations for.","name":"interface_name","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.reflection.v1beta1.ListImplementationsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/tendermint/v1beta1/abci_query":{"get":{"description":"Since: cosmos-sdk 0.46","tags":["Service"],"summary":"ABCIQuery defines a query handler that supports ABCI queries directly to the\napplication, bypassing Tendermint completely. The ABCI query must contain\na valid and supported path, including app, custom, p2p, and store.","operationId":"UpgradeService_ABCIQuery","parameters":[{"type":"string","format":"byte","name":"data","in":"query"},{"type":"string","name":"path","in":"query"},{"type":"string","format":"int64","name":"height","in":"query"},{"type":"boolean","name":"prove","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.tendermint.v1beta1.ABCIQueryResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/tendermint/v1beta1/blocks/latest":{"get":{"tags":["Service"],"summary":"GetLatestBlock returns the latest block.","operationId":"UpgradeService_GetLatestBlock","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.tendermint.v1beta1.GetLatestBlockResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/tendermint/v1beta1/blocks/{height}":{"get":{"tags":["Service"],"summary":"GetBlockByHeight queries block for given height.","operationId":"UpgradeService_GetBlockByHeight","parameters":[{"type":"string","format":"int64","name":"height","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.tendermint.v1beta1.GetBlockByHeightResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/tendermint/v1beta1/node_info":{"get":{"tags":["Service"],"summary":"GetNodeInfo queries the current node info.","operationId":"UpgradeService_GetNodeInfo","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.tendermint.v1beta1.GetNodeInfoResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/tendermint/v1beta1/syncing":{"get":{"tags":["Service"],"summary":"GetSyncing queries node syncing.","operationId":"UpgradeService_GetSyncing","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.tendermint.v1beta1.GetSyncingResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/tendermint/v1beta1/validatorsets/latest":{"get":{"tags":["Service"],"summary":"GetLatestValidatorSet queries latest validator-set.","operationId":"UpgradeService_GetLatestValidatorSet","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.tendermint.v1beta1.GetLatestValidatorSetResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/tendermint/v1beta1/validatorsets/{height}":{"get":{"tags":["Service"],"summary":"GetValidatorSetByHeight queries validator-set at a given height.","operationId":"UpgradeService_GetValidatorSetByHeight","parameters":[{"type":"string","format":"int64","name":"height","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.tendermint.v1beta1.GetValidatorSetByHeightResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/circuit/v1/accounts":{"get":{"tags":["Query"],"summary":"Account returns account permissions.","operationId":"UpgradeQuery_AccountsMixin41","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.circuit.v1.AccountsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/circuit/v1/accounts/{address}":{"get":{"tags":["Query"],"summary":"Account returns account permissions.","operationId":"UpgradeQuery_AccountMixin41","parameters":[{"type":"string","name":"address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.circuit.v1.AccountResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/circuit/v1/disable_list":{"get":{"tags":["Query"],"summary":"DisabledList returns a list of disabled message urls","operationId":"UpgradeQuery_DisabledList","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.circuit.v1.DisabledListResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/consensus/v1/params":{"get":{"tags":["Query"],"summary":"Params queries the parameters of x/consensus module.","operationId":"UpgradeQuery_ParamsMixin44","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.consensus.v1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/distribution/v1beta1/community_pool":{"get":{"tags":["Query"],"summary":"CommunityPool queries the community pool coins.","operationId":"UpgradeQuery_CommunityPool","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.QueryCommunityPoolResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/distribution/v1beta1/delegators/{delegator_address}/rewards":{"get":{"tags":["Query"],"summary":"DelegationTotalRewards queries the total rewards accrued by each\nvalidator.","operationId":"UpgradeQuery_DelegationTotalRewards","parameters":[{"type":"string","description":"delegator_address defines the delegator address to query for.","name":"delegator_address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.QueryDelegationTotalRewardsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/distribution/v1beta1/delegators/{delegator_address}/rewards/{validator_address}":{"get":{"tags":["Query"],"summary":"DelegationRewards queries the total rewards accrued by a delegation.","operationId":"UpgradeQuery_DelegationRewards","parameters":[{"type":"string","description":"delegator_address defines the delegator address to query for.","name":"delegator_address","in":"path","required":true},{"type":"string","description":"validator_address defines the validator address to query for.","name":"validator_address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.QueryDelegationRewardsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/distribution/v1beta1/delegators/{delegator_address}/validators":{"get":{"tags":["Query"],"summary":"DelegatorValidators queries the validators of a delegator.","operationId":"UpgradeQuery_DelegatorValidators","parameters":[{"type":"string","description":"delegator_address defines the delegator address to query for.","name":"delegator_address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.QueryDelegatorValidatorsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/distribution/v1beta1/delegators/{delegator_address}/withdraw_address":{"get":{"tags":["Query"],"summary":"DelegatorWithdrawAddress queries withdraw address of a delegator.","operationId":"UpgradeQuery_DelegatorWithdrawAddress","parameters":[{"type":"string","description":"delegator_address defines the delegator address to query for.","name":"delegator_address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.QueryDelegatorWithdrawAddressResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/distribution/v1beta1/params":{"get":{"tags":["Query"],"summary":"Params queries params of the distribution module.","operationId":"UpgradeQuery_ParamsMixin57","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/distribution/v1beta1/validators/{validator_address}":{"get":{"tags":["Query"],"summary":"ValidatorDistributionInfo queries validator commission and self-delegation rewards for validator","operationId":"UpgradeQuery_ValidatorDistributionInfo","parameters":[{"type":"string","description":"validator_address defines the validator address to query for.","name":"validator_address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.QueryValidatorDistributionInfoResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/distribution/v1beta1/validators/{validator_address}/commission":{"get":{"tags":["Query"],"summary":"ValidatorCommission queries accumulated commission for a validator.","operationId":"UpgradeQuery_ValidatorCommission","parameters":[{"type":"string","description":"validator_address defines the validator address to query for.","name":"validator_address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.QueryValidatorCommissionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/distribution/v1beta1/validators/{validator_address}/outstanding_rewards":{"get":{"tags":["Query"],"summary":"ValidatorOutstandingRewards queries rewards of a validator address.","operationId":"UpgradeQuery_ValidatorOutstandingRewards","parameters":[{"type":"string","description":"validator_address defines the validator address to query for.","name":"validator_address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.QueryValidatorOutstandingRewardsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/distribution/v1beta1/validators/{validator_address}/slashes":{"get":{"tags":["Query"],"summary":"ValidatorSlashes queries slash events of a validator.","operationId":"UpgradeQuery_ValidatorSlashes","parameters":[{"type":"string","description":"validator_address defines the validator address to query for.","name":"validator_address","in":"path","required":true},{"type":"string","format":"uint64","description":"starting_height defines the optional starting height to query the slashes.","name":"starting_height","in":"query"},{"type":"string","format":"uint64","description":"starting_height defines the optional ending height to query the slashes.","name":"ending_height","in":"query"},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.QueryValidatorSlashesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/evidence/v1beta1/evidence":{"get":{"tags":["Query"],"summary":"AllEvidence queries all evidence.","operationId":"UpgradeQuery_AllEvidence","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evidence.v1beta1.QueryAllEvidenceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/evidence/v1beta1/evidence/{hash}":{"get":{"tags":["Query"],"summary":"Evidence queries evidence based on evidence hash.","operationId":"UpgradeQuery_Evidence","parameters":[{"type":"string","description":"hash defines the evidence hash of the requested evidence.\n\nSince: cosmos-sdk 0.47","name":"hash","in":"path","required":true},{"type":"string","format":"byte","description":"evidence_hash defines the hash of the requested evidence.\nDeprecated: Use hash, a HEX encoded string, instead.","name":"evidence_hash","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evidence.v1beta1.QueryEvidenceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/feegrant/v1beta1/allowance/{granter}/{grantee}":{"get":{"tags":["Query"],"summary":"Allowance returns granted allwance to the grantee by the granter.","operationId":"UpgradeQuery_Allowance","parameters":[{"type":"string","description":"granter is the address of the user granting an allowance of their funds.","name":"granter","in":"path","required":true},{"type":"string","description":"grantee is the address of the user being granted an allowance of another user's funds.","name":"grantee","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.feegrant.v1beta1.QueryAllowanceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/feegrant/v1beta1/allowances/{grantee}":{"get":{"tags":["Query"],"summary":"Allowances returns all the grants for the given grantee address.","operationId":"UpgradeQuery_Allowances","parameters":[{"type":"string","name":"grantee","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.feegrant.v1beta1.QueryAllowancesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/feegrant/v1beta1/issued/{granter}":{"get":{"description":"Since: cosmos-sdk 0.46","tags":["Query"],"summary":"AllowancesByGranter returns all the grants given by an address","operationId":"UpgradeQuery_AllowancesByGranter","parameters":[{"type":"string","name":"granter","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.feegrant.v1beta1.QueryAllowancesByGranterResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1/constitution":{"get":{"tags":["Query"],"summary":"Constitution queries the chain's constitution.","operationId":"UpgradeQuery_Constitution","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.QueryConstitutionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1/params/{params_type}":{"get":{"tags":["Query"],"summary":"Params queries all parameters of the gov module.","operationId":"UpgradeQuery_ParamsMixin70","parameters":[{"type":"string","description":"params_type defines which parameters to query for, can be one of \"voting\",\n\"tallying\" or \"deposit\".","name":"params_type","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1/proposals":{"get":{"tags":["Query"],"summary":"Proposals queries all proposals based on given status.","operationId":"UpgradeQuery_Proposals","parameters":[{"enum":["PROPOSAL_STATUS_UNSPECIFIED","PROPOSAL_STATUS_DEPOSIT_PERIOD","PROPOSAL_STATUS_VOTING_PERIOD","PROPOSAL_STATUS_PASSED","PROPOSAL_STATUS_REJECTED","PROPOSAL_STATUS_FAILED"],"type":"string","default":"PROPOSAL_STATUS_UNSPECIFIED","description":"proposal_status defines the status of the proposals.\n\n - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status.\n - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit\nperiod.\n - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting\nperiod.\n - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has\npassed.\n - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has\nbeen rejected.\n - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has\nfailed.","name":"proposal_status","in":"query"},{"type":"string","description":"voter defines the voter address for the proposals.","name":"voter","in":"query"},{"type":"string","description":"depositor defines the deposit addresses from the proposals.","name":"depositor","in":"query"},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.QueryProposalsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1/proposals/{proposal_id}":{"get":{"tags":["Query"],"summary":"Proposal queries proposal details based on ProposalID.","operationId":"UpgradeQuery_Proposal","parameters":[{"type":"string","format":"uint64","description":"proposal_id defines the unique id of the proposal.","name":"proposal_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.QueryProposalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1/proposals/{proposal_id}/deposits":{"get":{"tags":["Query"],"summary":"Deposits queries all deposits of a single proposal.","operationId":"UpgradeQuery_Deposits","parameters":[{"type":"string","format":"uint64","description":"proposal_id defines the unique id of the proposal.","name":"proposal_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.QueryDepositsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1/proposals/{proposal_id}/deposits/{depositor}":{"get":{"tags":["Query"],"summary":"Deposit queries single deposit information based on proposalID, depositAddr.","operationId":"UpgradeQuery_Deposit","parameters":[{"type":"string","format":"uint64","description":"proposal_id defines the unique id of the proposal.","name":"proposal_id","in":"path","required":true},{"type":"string","description":"depositor defines the deposit addresses from the proposals.","name":"depositor","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.QueryDepositResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1/proposals/{proposal_id}/tally":{"get":{"tags":["Query"],"summary":"TallyResult queries the tally of a proposal vote.","operationId":"UpgradeQuery_TallyResult","parameters":[{"type":"string","format":"uint64","description":"proposal_id defines the unique id of the proposal.","name":"proposal_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.QueryTallyResultResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1/proposals/{proposal_id}/votes":{"get":{"tags":["Query"],"summary":"Votes queries votes of a given proposal.","operationId":"UpgradeQuery_Votes","parameters":[{"type":"string","format":"uint64","description":"proposal_id defines the unique id of the proposal.","name":"proposal_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.QueryVotesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1/proposals/{proposal_id}/votes/{voter}":{"get":{"tags":["Query"],"summary":"Vote queries voted information based on proposalID, voterAddr.","operationId":"UpgradeQuery_Vote","parameters":[{"type":"string","format":"uint64","description":"proposal_id defines the unique id of the proposal.","name":"proposal_id","in":"path","required":true},{"type":"string","description":"voter defines the voter address for the proposals.","name":"voter","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.QueryVoteResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1beta1/params/{params_type}":{"get":{"tags":["Query"],"summary":"Params queries all parameters of the gov module.","operationId":"UpgradeQuery_ParamsMixin74","parameters":[{"type":"string","description":"params_type defines which parameters to query for, can be one of \"voting\",\n\"tallying\" or \"deposit\".","name":"params_type","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1beta1/proposals":{"get":{"tags":["Query"],"summary":"Proposals queries all proposals based on given status.","operationId":"UpgradeQuery_ProposalsMixin74","parameters":[{"enum":["PROPOSAL_STATUS_UNSPECIFIED","PROPOSAL_STATUS_DEPOSIT_PERIOD","PROPOSAL_STATUS_VOTING_PERIOD","PROPOSAL_STATUS_PASSED","PROPOSAL_STATUS_REJECTED","PROPOSAL_STATUS_FAILED"],"type":"string","default":"PROPOSAL_STATUS_UNSPECIFIED","description":"proposal_status defines the status of the proposals.\n\n - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status.\n - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit\nperiod.\n - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting\nperiod.\n - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has\npassed.\n - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has\nbeen rejected.\n - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has\nfailed.","name":"proposal_status","in":"query"},{"type":"string","description":"voter defines the voter address for the proposals.","name":"voter","in":"query"},{"type":"string","description":"depositor defines the deposit addresses from the proposals.","name":"depositor","in":"query"},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.QueryProposalsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1beta1/proposals/{proposal_id}":{"get":{"tags":["Query"],"summary":"Proposal queries proposal details based on ProposalID.","operationId":"UpgradeQuery_ProposalMixin74","parameters":[{"type":"string","format":"uint64","description":"proposal_id defines the unique id of the proposal.","name":"proposal_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.QueryProposalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1beta1/proposals/{proposal_id}/deposits":{"get":{"tags":["Query"],"summary":"Deposits queries all deposits of a single proposal.","operationId":"UpgradeQuery_DepositsMixin74","parameters":[{"type":"string","format":"uint64","description":"proposal_id defines the unique id of the proposal.","name":"proposal_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.QueryDepositsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1beta1/proposals/{proposal_id}/deposits/{depositor}":{"get":{"tags":["Query"],"summary":"Deposit queries single deposit information based on proposalID, depositor address.","operationId":"UpgradeQuery_DepositMixin74","parameters":[{"type":"string","format":"uint64","description":"proposal_id defines the unique id of the proposal.","name":"proposal_id","in":"path","required":true},{"type":"string","description":"depositor defines the deposit addresses from the proposals.","name":"depositor","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.QueryDepositResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1beta1/proposals/{proposal_id}/tally":{"get":{"tags":["Query"],"summary":"TallyResult queries the tally of a proposal vote.","operationId":"UpgradeQuery_TallyResultMixin74","parameters":[{"type":"string","format":"uint64","description":"proposal_id defines the unique id of the proposal.","name":"proposal_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.QueryTallyResultResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1beta1/proposals/{proposal_id}/votes":{"get":{"tags":["Query"],"summary":"Votes queries votes of a given proposal.","operationId":"UpgradeQuery_VotesMixin74","parameters":[{"type":"string","format":"uint64","description":"proposal_id defines the unique id of the proposal.","name":"proposal_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.QueryVotesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1beta1/proposals/{proposal_id}/votes/{voter}":{"get":{"tags":["Query"],"summary":"Vote queries voted information based on proposalID, voterAddr.","operationId":"UpgradeQuery_VoteMixin74","parameters":[{"type":"string","format":"uint64","description":"proposal_id defines the unique id of the proposal.","name":"proposal_id","in":"path","required":true},{"type":"string","description":"voter defines the voter address for the proposals.","name":"voter","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.QueryVoteResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/group_info/{group_id}":{"get":{"tags":["Query"],"summary":"GroupInfo queries group info based on group id.","operationId":"UpgradeQuery_GroupInfo","parameters":[{"type":"string","format":"uint64","description":"group_id is the unique ID of the group.","name":"group_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryGroupInfoResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/group_members/{group_id}":{"get":{"tags":["Query"],"summary":"GroupMembers queries members of a group by group id.","operationId":"UpgradeQuery_GroupMembers","parameters":[{"type":"string","format":"uint64","description":"group_id is the unique ID of the group.","name":"group_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryGroupMembersResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/group_policies_by_admin/{admin}":{"get":{"tags":["Query"],"summary":"GroupPoliciesByAdmin queries group policies by admin address.","operationId":"UpgradeQuery_GroupPoliciesByAdmin","parameters":[{"type":"string","description":"admin is the admin address of the group policy.","name":"admin","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryGroupPoliciesByAdminResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/group_policies_by_group/{group_id}":{"get":{"tags":["Query"],"summary":"GroupPoliciesByGroup queries group policies by group id.","operationId":"UpgradeQuery_GroupPoliciesByGroup","parameters":[{"type":"string","format":"uint64","description":"group_id is the unique ID of the group policy's group.","name":"group_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryGroupPoliciesByGroupResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/group_policy_info/{address}":{"get":{"tags":["Query"],"summary":"GroupPolicyInfo queries group policy info based on account address of group policy.","operationId":"UpgradeQuery_GroupPolicyInfo","parameters":[{"type":"string","description":"address is the account address of the group policy.","name":"address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryGroupPolicyInfoResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/groups":{"get":{"description":"Since: cosmos-sdk 0.47.1","tags":["Query"],"summary":"Groups queries all groups in state.","operationId":"UpgradeQuery_Groups","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryGroupsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/groups_by_admin/{admin}":{"get":{"tags":["Query"],"summary":"GroupsByAdmin queries groups by admin address.","operationId":"UpgradeQuery_GroupsByAdmin","parameters":[{"type":"string","description":"admin is the account address of a group's admin.","name":"admin","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryGroupsByAdminResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/groups_by_member/{address}":{"get":{"tags":["Query"],"summary":"GroupsByMember queries groups by member address.","operationId":"UpgradeQuery_GroupsByMember","parameters":[{"type":"string","description":"address is the group member address.","name":"address","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryGroupsByMemberResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/proposal/{proposal_id}":{"get":{"tags":["Query"],"summary":"Proposal queries a proposal based on proposal id.","operationId":"UpgradeQuery_ProposalMixin78","parameters":[{"type":"string","format":"uint64","description":"proposal_id is the unique ID of a proposal.","name":"proposal_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryProposalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/proposals/{proposal_id}/tally":{"get":{"tags":["Query"],"summary":"TallyResult returns the tally result of a proposal. If the proposal is\nstill in voting period, then this query computes the current tally state,\nwhich might not be final. On the other hand, if the proposal is final,\nthen it simply returns the `final_tally_result` state stored in the\nproposal itself.","operationId":"UpgradeQuery_TallyResultMixin78","parameters":[{"type":"string","format":"uint64","description":"proposal_id is the unique id of a proposal.","name":"proposal_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryTallyResultResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/proposals_by_group_policy/{address}":{"get":{"tags":["Query"],"summary":"ProposalsByGroupPolicy queries proposals based on account address of group policy.","operationId":"UpgradeQuery_ProposalsByGroupPolicy","parameters":[{"type":"string","description":"address is the account address of the group policy related to proposals.","name":"address","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryProposalsByGroupPolicyResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/vote_by_proposal_voter/{proposal_id}/{voter}":{"get":{"tags":["Query"],"summary":"VoteByProposalVoter queries a vote by proposal id and voter.","operationId":"UpgradeQuery_VoteByProposalVoter","parameters":[{"type":"string","format":"uint64","description":"proposal_id is the unique ID of a proposal.","name":"proposal_id","in":"path","required":true},{"type":"string","description":"voter is a proposal voter account address.","name":"voter","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryVoteByProposalVoterResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/votes_by_proposal/{proposal_id}":{"get":{"tags":["Query"],"summary":"VotesByProposal queries a vote by proposal id.","operationId":"UpgradeQuery_VotesByProposal","parameters":[{"type":"string","format":"uint64","description":"proposal_id is the unique ID of a proposal.","name":"proposal_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryVotesByProposalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/votes_by_voter/{voter}":{"get":{"tags":["Query"],"summary":"VotesByVoter queries a vote by voter.","operationId":"UpgradeQuery_VotesByVoter","parameters":[{"type":"string","description":"voter is a proposal voter account address.","name":"voter","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryVotesByVoterResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/mint/v1beta1/annual_provisions":{"get":{"tags":["Query"],"summary":"AnnualProvisions current minting annual provisions value.","operationId":"UpgradeQuery_AnnualProvisions","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.mint.v1beta1.QueryAnnualProvisionsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/mint/v1beta1/inflation":{"get":{"tags":["Query"],"summary":"Inflation returns the current minting inflation value.","operationId":"UpgradeQuery_Inflation","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.mint.v1beta1.QueryInflationResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/mint/v1beta1/params":{"get":{"tags":["Query"],"summary":"Params returns the total set of minting parameters.","operationId":"UpgradeQuery_ParamsMixin83","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.mint.v1beta1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/nft/v1beta1/balance/{owner}/{class_id}":{"get":{"tags":["Query"],"summary":"Balance queries the number of NFTs of a given class owned by the owner, same as balanceOf in ERC721","operationId":"UpgradeQuery_BalanceMixin89","parameters":[{"type":"string","description":"owner is the owner address of the nft","name":"owner","in":"path","required":true},{"type":"string","description":"class_id associated with the nft","name":"class_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.nft.v1beta1.QueryBalanceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/nft/v1beta1/classes":{"get":{"tags":["Query"],"summary":"Classes queries all NFT classes","operationId":"UpgradeQuery_Classes","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.nft.v1beta1.QueryClassesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/nft/v1beta1/classes/{class_id}":{"get":{"tags":["Query"],"summary":"Class queries an NFT class based on its id","operationId":"UpgradeQuery_Class","parameters":[{"type":"string","description":"class_id associated with the nft","name":"class_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.nft.v1beta1.QueryClassResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/nft/v1beta1/nfts":{"get":{"tags":["Query"],"summary":"NFTs queries all NFTs of a given class or owner,choose at least one of the two, similar to tokenByIndex in\nERC721Enumerable","operationId":"UpgradeQuery_NFTs","parameters":[{"type":"string","description":"class_id associated with the nft","name":"class_id","in":"query"},{"type":"string","description":"owner is the owner address of the nft","name":"owner","in":"query"},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.nft.v1beta1.QueryNFTsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/nft/v1beta1/nfts/{class_id}/{id}":{"get":{"tags":["Query"],"summary":"NFT queries an NFT based on its class and id.","operationId":"UpgradeQuery_NFT","parameters":[{"type":"string","description":"class_id associated with the nft","name":"class_id","in":"path","required":true},{"type":"string","description":"id is a unique identifier of the NFT","name":"id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.nft.v1beta1.QueryNFTResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/nft/v1beta1/owner/{class_id}/{id}":{"get":{"tags":["Query"],"summary":"Owner queries the owner of the NFT based on its class and id, same as ownerOf in ERC721","operationId":"UpgradeQuery_Owner","parameters":[{"type":"string","description":"class_id associated with the nft","name":"class_id","in":"path","required":true},{"type":"string","description":"id is a unique identifier of the NFT","name":"id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.nft.v1beta1.QueryOwnerResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/nft/v1beta1/supply/{class_id}":{"get":{"tags":["Query"],"summary":"Supply queries the number of NFTs from the given class, same as totalSupply of ERC721.","operationId":"UpgradeQuery_Supply","parameters":[{"type":"string","description":"class_id associated with the nft","name":"class_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.nft.v1beta1.QuerySupplyResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/params/v1beta1/params":{"get":{"tags":["Query"],"summary":"Params queries a specific parameter of a module, given its subspace and\nkey.","operationId":"UpgradeQuery_ParamsMixin92","parameters":[{"type":"string","description":"subspace defines the module to query the parameter for.","name":"subspace","in":"query"},{"type":"string","description":"key defines the key of the parameter in the subspace.","name":"key","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.params.v1beta1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/params/v1beta1/subspaces":{"get":{"description":"Since: cosmos-sdk 0.46","tags":["Query"],"summary":"Subspaces queries for all registered subspaces and all keys for a subspace.","operationId":"UpgradeQuery_Subspaces","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.params.v1beta1.QuerySubspacesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/slashing/v1beta1/params":{"get":{"tags":["Query"],"summary":"Params queries the parameters of slashing module","operationId":"UpgradeQuery_ParamsMixin95","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.slashing.v1beta1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/slashing/v1beta1/signing_infos":{"get":{"tags":["Query"],"summary":"SigningInfos queries signing info of all validators","operationId":"UpgradeQuery_SigningInfos","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.slashing.v1beta1.QuerySigningInfosResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/slashing/v1beta1/signing_infos/{cons_address}":{"get":{"tags":["Query"],"summary":"SigningInfo queries the signing info of given cons address","operationId":"UpgradeQuery_SigningInfo","parameters":[{"type":"string","description":"cons_address is the address to query signing info of","name":"cons_address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.slashing.v1beta1.QuerySigningInfoResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/delegations/{delegator_addr}":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.","tags":["Query"],"summary":"DelegatorDelegations queries all delegations of a given delegator address.","operationId":"UpgradeQuery_DelegatorDelegations","parameters":[{"type":"string","description":"delegator_addr defines the delegator address to query for.","name":"delegator_addr","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryDelegatorDelegationsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/delegators/{delegator_addr}/redelegations":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.","tags":["Query"],"summary":"Redelegations queries redelegations of given address.","operationId":"UpgradeQuery_Redelegations","parameters":[{"type":"string","description":"delegator_addr defines the delegator address to query for.","name":"delegator_addr","in":"path","required":true},{"type":"string","description":"src_validator_addr defines the validator address to redelegate from.","name":"src_validator_addr","in":"query"},{"type":"string","description":"dst_validator_addr defines the validator address to redelegate to.","name":"dst_validator_addr","in":"query"},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryRedelegationsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/delegators/{delegator_addr}/unbonding_delegations":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.","tags":["Query"],"summary":"DelegatorUnbondingDelegations queries all unbonding delegations of a given\ndelegator address.","operationId":"UpgradeQuery_DelegatorUnbondingDelegations","parameters":[{"type":"string","description":"delegator_addr defines the delegator address to query for.","name":"delegator_addr","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryDelegatorUnbondingDelegationsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/delegators/{delegator_addr}/validators":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.","tags":["Query"],"summary":"DelegatorValidators queries all validators info for given delegator\naddress.","operationId":"UpgradeQuery_DelegatorValidatorsMixin100","parameters":[{"type":"string","description":"delegator_addr defines the delegator address to query for.","name":"delegator_addr","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryDelegatorValidatorsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/delegators/{delegator_addr}/validators/{validator_addr}":{"get":{"tags":["Query"],"summary":"DelegatorValidator queries validator info for given delegator validator\npair.","operationId":"UpgradeQuery_DelegatorValidator","parameters":[{"type":"string","description":"delegator_addr defines the delegator address to query for.","name":"delegator_addr","in":"path","required":true},{"type":"string","description":"validator_addr defines the validator address to query for.","name":"validator_addr","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryDelegatorValidatorResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/historical_info/{height}":{"get":{"tags":["Query"],"summary":"HistoricalInfo queries the historical info for given height.","operationId":"UpgradeQuery_HistoricalInfo","parameters":[{"type":"string","format":"int64","description":"height defines at which height to query the historical info.","name":"height","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryHistoricalInfoResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/params":{"get":{"tags":["Query"],"summary":"Parameters queries the staking parameters.","operationId":"UpgradeQuery_ParamsMixin100","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/pool":{"get":{"tags":["Query"],"summary":"Pool queries the pool info.","operationId":"UpgradeQuery_Pool","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryPoolResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/validators":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.","tags":["Query"],"summary":"Validators queries all validators that match the given status.","operationId":"UpgradeQuery_Validators","parameters":[{"type":"string","description":"status enables to query for validators matching a given status.","name":"status","in":"query"},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryValidatorsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/validators/{validator_addr}":{"get":{"tags":["Query"],"summary":"Validator queries validator info for given validator address.","operationId":"UpgradeQuery_Validator","parameters":[{"type":"string","description":"validator_addr defines the validator address to query for.","name":"validator_addr","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryValidatorResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/validators/{validator_addr}/delegations":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.","tags":["Query"],"summary":"ValidatorDelegations queries delegate info for given validator.","operationId":"UpgradeQuery_ValidatorDelegations","parameters":[{"type":"string","description":"validator_addr defines the validator address to query for.","name":"validator_addr","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryValidatorDelegationsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/validators/{validator_addr}/delegations/{delegator_addr}":{"get":{"tags":["Query"],"summary":"Delegation queries delegate info for given validator delegator pair.","operationId":"UpgradeQuery_Delegation","parameters":[{"type":"string","description":"validator_addr defines the validator address to query for.","name":"validator_addr","in":"path","required":true},{"type":"string","description":"delegator_addr defines the delegator address to query for.","name":"delegator_addr","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryDelegationResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/validators/{validator_addr}/delegations/{delegator_addr}/unbonding_delegation":{"get":{"tags":["Query"],"summary":"UnbondingDelegation queries unbonding info for given validator delegator\npair.","operationId":"UpgradeQuery_UnbondingDelegation","parameters":[{"type":"string","description":"validator_addr defines the validator address to query for.","name":"validator_addr","in":"path","required":true},{"type":"string","description":"delegator_addr defines the delegator address to query for.","name":"delegator_addr","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryUnbondingDelegationResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/validators/{validator_addr}/unbonding_delegations":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.","tags":["Query"],"summary":"ValidatorUnbondingDelegations queries unbonding delegations of a validator.","operationId":"UpgradeQuery_ValidatorUnbondingDelegations","parameters":[{"type":"string","description":"validator_addr defines the validator address to query for.","name":"validator_addr","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryValidatorUnbondingDelegationsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/tx/v1beta1/decode":{"post":{"description":"Since: cosmos-sdk 0.47","tags":["Service"],"summary":"TxDecode decodes the transaction.","operationId":"UpgradeService_TxDecode","parameters":[{"description":"TxDecodeRequest is the request type for the Service.TxDecode\nRPC method.\n\nSince: cosmos-sdk 0.47","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.TxDecodeRequest"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.TxDecodeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/tx/v1beta1/decode/amino":{"post":{"description":"Since: cosmos-sdk 0.47","tags":["Service"],"summary":"TxDecodeAmino decodes an Amino transaction from encoded bytes to JSON.","operationId":"UpgradeService_TxDecodeAmino","parameters":[{"description":"TxDecodeAminoRequest is the request type for the Service.TxDecodeAmino\nRPC method.\n\nSince: cosmos-sdk 0.47","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.TxDecodeAminoRequest"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.TxDecodeAminoResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/tx/v1beta1/encode":{"post":{"description":"Since: cosmos-sdk 0.47","tags":["Service"],"summary":"TxEncode encodes the transaction.","operationId":"UpgradeService_TxEncode","parameters":[{"description":"TxEncodeRequest is the request type for the Service.TxEncode\nRPC method.\n\nSince: cosmos-sdk 0.47","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.TxEncodeRequest"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.TxEncodeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/tx/v1beta1/encode/amino":{"post":{"description":"Since: cosmos-sdk 0.47","tags":["Service"],"summary":"TxEncodeAmino encodes an Amino transaction from JSON to encoded bytes.","operationId":"UpgradeService_TxEncodeAmino","parameters":[{"description":"TxEncodeAminoRequest is the request type for the Service.TxEncodeAmino\nRPC method.\n\nSince: cosmos-sdk 0.47","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.TxEncodeAminoRequest"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.TxEncodeAminoResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/tx/v1beta1/simulate":{"post":{"tags":["Service"],"summary":"Simulate simulates executing a transaction for estimating gas usage.","operationId":"UpgradeService_Simulate","parameters":[{"description":"SimulateRequest is the request type for the Service.Simulate\nRPC method.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.SimulateRequest"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.SimulateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/tx/v1beta1/txs":{"get":{"tags":["Service"],"summary":"GetTxsEvent fetches txs by event.","operationId":"UpgradeService_GetTxsEvent","parameters":[{"type":"array","items":{"type":"string"},"collectionFormat":"multi","description":"events is the list of transaction event type.\nDeprecated post v0.47.x: use query instead, which should contain a valid\nevents query.","name":"events","in":"query"},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"},{"enum":["ORDER_BY_UNSPECIFIED","ORDER_BY_ASC","ORDER_BY_DESC"],"type":"string","default":"ORDER_BY_UNSPECIFIED","description":" - ORDER_BY_UNSPECIFIED: ORDER_BY_UNSPECIFIED specifies an unknown sorting order. OrderBy defaults\nto ASC in this case.\n - ORDER_BY_ASC: ORDER_BY_ASC defines ascending order\n - ORDER_BY_DESC: ORDER_BY_DESC defines descending order","name":"order_by","in":"query"},{"type":"string","format":"uint64","description":"page is the page number to query, starts at 1. If not provided, will\ndefault to first page.","name":"page","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"limit","in":"query"},{"type":"string","description":"query defines the transaction event query that is proxied to Tendermint's\nTxSearch RPC method. The query must be valid.\n\nSince cosmos-sdk 0.50","name":"query","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.GetTxsEventResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}},"post":{"tags":["Service"],"summary":"BroadcastTx broadcast transaction.","operationId":"UpgradeService_BroadcastTx","parameters":[{"description":"BroadcastTxRequest is the request type for the Service.BroadcastTxRequest\nRPC method.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.BroadcastTxRequest"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.BroadcastTxResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/tx/v1beta1/txs/block/{height}":{"get":{"description":"Since: cosmos-sdk 0.45.2","tags":["Service"],"summary":"GetBlockWithTxs fetches a block with decoded txs.","operationId":"UpgradeService_GetBlockWithTxs","parameters":[{"type":"string","format":"int64","description":"height is the height of the block to query.","name":"height","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.GetBlockWithTxsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/tx/v1beta1/txs/{hash}":{"get":{"tags":["Service"],"summary":"GetTx fetches a tx by hash.","operationId":"UpgradeService_GetTx","parameters":[{"type":"string","description":"hash is the tx hash to query, encoded as a hex string.","name":"hash","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.GetTxResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/upgrade/v1beta1/applied_plan/{name}":{"get":{"tags":["Query"],"summary":"AppliedPlan queries a previously applied upgrade plan by its name.","operationId":"UpgradeQuery_AppliedPlan","parameters":[{"type":"string","description":"name is the name of the applied plan to query for.","name":"name","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.upgrade.v1beta1.QueryAppliedPlanResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/upgrade/v1beta1/authority":{"get":{"description":"Since: cosmos-sdk 0.46","tags":["Query"],"summary":"Returns the account with authority to conduct upgrades","operationId":"UpgradeQuery_Authority","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.upgrade.v1beta1.QueryAuthorityResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/upgrade/v1beta1/current_plan":{"get":{"tags":["Query"],"summary":"CurrentPlan queries the current upgrade plan.","operationId":"UpgradeQuery_CurrentPlan","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.upgrade.v1beta1.QueryCurrentPlanResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/upgrade/v1beta1/module_versions":{"get":{"description":"Since: cosmos-sdk 0.43","tags":["Query"],"summary":"ModuleVersions queries the list of module versions from state.","operationId":"UpgradeQuery_ModuleVersions","parameters":[{"type":"string","description":"module_name is a field to query a specific module\nconsensus version from state. Leaving this empty will\nfetch the full list of module versions from state","name":"module_name","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.upgrade.v1beta1.QueryModuleVersionsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/upgrade/v1beta1/upgraded_consensus_state/{last_height}":{"get":{"tags":["Query"],"summary":"UpgradedConsensusState queries the consensus state that will serve\nas a trusted kernel for the next version of this chain. It will only be\nstored at the last height of this chain.\nUpgradedConsensusState RPC not supported with legacy querier\nThis rpc is deprecated now that IBC has its own replacement\n(https://github.com/cosmos/ibc-go/blob/2c880a22e9f9cc75f62b527ca94aa75ce1106001/proto/ibc/core/client/v1/query.proto#L54)","operationId":"UpgradeQuery_UpgradedConsensusState","parameters":[{"type":"string","format":"int64","description":"last height of the current chain must be sent in request\nas this is the height under which next consensus state is stored","name":"last_height","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.upgrade.v1beta1.QueryUpgradedConsensusStateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.applications.fee.v1.Msg/PayPacketFee":{"post":{"tags":["Msg"],"summary":"PayPacketFee defines a rpc handler method for MsgPayPacketFee\nPayPacketFee is an open callback that may be called by any module/user that wishes to escrow funds in order to\nincentivize the relaying of the packet at the next sequence\nNOTE: This method is intended to be used within a multi msg transaction, where the subsequent msg that follows\ninitiates the lifecycle of the incentivized packet","operationId":"FeeMsg_PayPacketFee","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.applications.fee.v1.MsgPayPacketFee"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.fee.v1.MsgPayPacketFeeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.applications.fee.v1.Msg/PayPacketFeeAsync":{"post":{"tags":["Msg"],"summary":"PayPacketFeeAsync defines a rpc handler method for MsgPayPacketFeeAsync\nPayPacketFeeAsync is an open callback that may be called by any module/user that wishes to escrow funds in order to\nincentivize the relaying of a known packet (i.e. at a particular sequence)","operationId":"FeeMsg_PayPacketFeeAsync","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.applications.fee.v1.MsgPayPacketFeeAsync"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.fee.v1.MsgPayPacketFeeAsyncResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.applications.fee.v1.Msg/RegisterCounterpartyPayee":{"post":{"tags":["Msg"],"summary":"RegisterCounterpartyPayee defines a rpc handler method for MsgRegisterCounterpartyPayee\nRegisterCounterpartyPayee is called by the relayer on each channelEnd and allows them to specify the counterparty\npayee address before relaying. This ensures they will be properly compensated for forward relaying since\nthe destination chain must include the registered counterparty payee address in the acknowledgement. This function\nmay be called more than once by a relayer, in which case, the latest counterparty payee address is always used.","operationId":"FeeMsg_RegisterCounterpartyPayee","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.applications.fee.v1.MsgRegisterCounterpartyPayee"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.fee.v1.MsgRegisterCounterpartyPayeeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.applications.fee.v1.Msg/RegisterPayee":{"post":{"tags":["Msg"],"summary":"RegisterPayee defines a rpc handler method for MsgRegisterPayee\nRegisterPayee is called by the relayer on each channelEnd and allows them to set an optional\npayee to which reverse and timeout relayer packet fees will be paid out. The payee should be registered on\nthe source chain from which packets originate as this is where fee distribution takes place. This function may be\ncalled more than once by a relayer, in which case, the latest payee is always used.","operationId":"FeeMsg_RegisterPayee","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.applications.fee.v1.MsgRegisterPayee"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.fee.v1.MsgRegisterPayeeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.applications.interchain_accounts.controller.v1.Msg/RegisterInterchainAccount":{"post":{"tags":["Msg"],"summary":"RegisterInterchainAccount defines a rpc handler for MsgRegisterInterchainAccount.","operationId":"FeeMsg_RegisterInterchainAccount","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.controller.v1.MsgRegisterInterchainAccount"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.controller.v1.MsgRegisterInterchainAccountResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.applications.interchain_accounts.controller.v1.Msg/SendTx":{"post":{"tags":["Msg"],"summary":"SendTx defines a rpc handler for MsgSendTx.","operationId":"FeeMsg_SendTx","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.controller.v1.MsgSendTx"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.controller.v1.MsgSendTxResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.applications.interchain_accounts.controller.v1.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines a rpc handler for MsgUpdateParams.","operationId":"FeeMsg_UpdateParams","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.controller.v1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.controller.v1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.applications.interchain_accounts.host.v1.Msg/ModuleQuerySafe":{"post":{"tags":["Msg"],"summary":"ModuleQuerySafe defines a rpc handler for MsgModuleQuerySafe.","operationId":"FeeMsg_ModuleQuerySafe","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.host.v1.MsgModuleQuerySafe"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.host.v1.MsgModuleQuerySafeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.applications.interchain_accounts.host.v1.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines a rpc handler for MsgUpdateParams.","operationId":"FeeMsg_UpdateParamsMixin141","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.host.v1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.host.v1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.applications.transfer.v1.Msg/Transfer":{"post":{"tags":["Msg"],"summary":"Transfer defines a rpc handler method for MsgTransfer.","operationId":"FeeMsg_Transfer","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.applications.transfer.v1.MsgTransfer"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.transfer.v1.MsgTransferResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.applications.transfer.v1.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines a rpc handler for MsgUpdateParams.","operationId":"FeeMsg_UpdateParamsMixin149","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.applications.transfer.v1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.transfer.v1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/Acknowledgement":{"post":{"tags":["Msg"],"summary":"Acknowledgement defines a rpc handler method for MsgAcknowledgement.","operationId":"FeeMsg_Acknowledgement","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgAcknowledgement"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgAcknowledgementResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/ChannelCloseConfirm":{"post":{"tags":["Msg"],"summary":"ChannelCloseConfirm defines a rpc handler method for\nMsgChannelCloseConfirm.","operationId":"FeeMsg_ChannelCloseConfirm","parameters":[{"description":"MsgChannelCloseConfirm defines a msg sent by a Relayer to Chain B\nto acknowledge the change of channel state to CLOSED on Chain A.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelCloseConfirm"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelCloseConfirmResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/ChannelCloseInit":{"post":{"tags":["Msg"],"summary":"ChannelCloseInit defines a rpc handler method for MsgChannelCloseInit.","operationId":"FeeMsg_ChannelCloseInit","parameters":[{"description":"MsgChannelCloseInit defines a msg sent by a Relayer to Chain A\nto close a channel with Chain B.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelCloseInit"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelCloseInitResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/ChannelOpenAck":{"post":{"tags":["Msg"],"summary":"ChannelOpenAck defines a rpc handler method for MsgChannelOpenAck.","operationId":"FeeMsg_ChannelOpenAck","parameters":[{"description":"MsgChannelOpenAck defines a msg sent by a Relayer to Chain A to acknowledge\nthe change of channel state to TRYOPEN on Chain B.\nWARNING: a channel upgrade MUST NOT initialize an upgrade for this channel\nin the same block as executing this message otherwise the counterparty will\nbe incapable of opening.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelOpenAck"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelOpenAckResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/ChannelOpenConfirm":{"post":{"tags":["Msg"],"summary":"ChannelOpenConfirm defines a rpc handler method for MsgChannelOpenConfirm.","operationId":"FeeMsg_ChannelOpenConfirm","parameters":[{"description":"MsgChannelOpenConfirm defines a msg sent by a Relayer to Chain B to\nacknowledge the change of channel state to OPEN on Chain A.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelOpenConfirm"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelOpenConfirmResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/ChannelOpenInit":{"post":{"tags":["Msg"],"summary":"ChannelOpenInit defines a rpc handler method for MsgChannelOpenInit.","operationId":"FeeMsg_ChannelOpenInit","parameters":[{"description":"MsgChannelOpenInit defines an sdk.Msg to initialize a channel handshake. It\nis called by a relayer on Chain A.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelOpenInit"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelOpenInitResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/ChannelOpenTry":{"post":{"tags":["Msg"],"summary":"ChannelOpenTry defines a rpc handler method for MsgChannelOpenTry.","operationId":"FeeMsg_ChannelOpenTry","parameters":[{"description":"MsgChannelOpenInit defines a msg sent by a Relayer to try to open a channel\non Chain B. The version field within the Channel field has been deprecated. Its\nvalue will be ignored by core IBC.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelOpenTry"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelOpenTryResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/ChannelUpgradeAck":{"post":{"tags":["Msg"],"summary":"ChannelUpgradeAck defines a rpc handler method for MsgChannelUpgradeAck.","operationId":"FeeMsg_ChannelUpgradeAck","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelUpgradeAck"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelUpgradeAckResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/ChannelUpgradeCancel":{"post":{"tags":["Msg"],"summary":"ChannelUpgradeCancel defines a rpc handler method for MsgChannelUpgradeCancel.","operationId":"FeeMsg_ChannelUpgradeCancel","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelUpgradeCancel"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelUpgradeCancelResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/ChannelUpgradeConfirm":{"post":{"tags":["Msg"],"summary":"ChannelUpgradeConfirm defines a rpc handler method for MsgChannelUpgradeConfirm.","operationId":"FeeMsg_ChannelUpgradeConfirm","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelUpgradeConfirm"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelUpgradeConfirmResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/ChannelUpgradeInit":{"post":{"tags":["Msg"],"summary":"ChannelUpgradeInit defines a rpc handler method for MsgChannelUpgradeInit.","operationId":"FeeMsg_ChannelUpgradeInit","parameters":[{"description":"MsgChannelUpgradeInit defines the request type for the ChannelUpgradeInit rpc\nWARNING: Initializing a channel upgrade in the same block as opening the channel\nmay result in the counterparty being incapable of opening.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelUpgradeInit"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelUpgradeInitResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/ChannelUpgradeOpen":{"post":{"tags":["Msg"],"summary":"ChannelUpgradeOpen defines a rpc handler method for MsgChannelUpgradeOpen.","operationId":"FeeMsg_ChannelUpgradeOpen","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelUpgradeOpen"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelUpgradeOpenResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/ChannelUpgradeTimeout":{"post":{"tags":["Msg"],"summary":"ChannelUpgradeTimeout defines a rpc handler method for MsgChannelUpgradeTimeout.","operationId":"FeeMsg_ChannelUpgradeTimeout","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelUpgradeTimeout"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelUpgradeTimeoutResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/ChannelUpgradeTry":{"post":{"tags":["Msg"],"summary":"ChannelUpgradeTry defines a rpc handler method for MsgChannelUpgradeTry.","operationId":"FeeMsg_ChannelUpgradeTry","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelUpgradeTry"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelUpgradeTryResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/PruneAcknowledgements":{"post":{"tags":["Msg"],"summary":"PruneAcknowledgements defines a rpc handler method for MsgPruneAcknowledgements.","operationId":"FeeMsg_PruneAcknowledgements","parameters":[{"description":"MsgPruneAcknowledgements defines the request type for the PruneAcknowledgements rpc.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgPruneAcknowledgements"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgPruneAcknowledgementsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/RecvPacket":{"post":{"tags":["Msg"],"summary":"RecvPacket defines a rpc handler method for MsgRecvPacket.","operationId":"FeeMsg_RecvPacket","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgRecvPacket"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgRecvPacketResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/Timeout":{"post":{"tags":["Msg"],"summary":"Timeout defines a rpc handler method for MsgTimeout.","operationId":"FeeMsg_Timeout","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgTimeout"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgTimeoutResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/TimeoutOnClose":{"post":{"tags":["Msg"],"summary":"TimeoutOnClose defines a rpc handler method for MsgTimeoutOnClose.","operationId":"FeeMsg_TimeoutOnClose","parameters":[{"description":"MsgTimeoutOnClose timed-out packet upon counterparty channel closure.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgTimeoutOnClose"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgTimeoutOnCloseResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/UpdateChannelParams":{"post":{"tags":["Msg"],"summary":"UpdateChannelParams defines a rpc handler method for MsgUpdateParams.","operationId":"FeeMsg_UpdateChannelParams","parameters":[{"description":"MsgUpdateParams is the MsgUpdateParams request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.client.v1.Msg/CreateClient":{"post":{"tags":["Msg"],"summary":"CreateClient defines a rpc handler method for MsgCreateClient.","operationId":"FeeMsg_CreateClient","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgCreateClient"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgCreateClientResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.client.v1.Msg/IBCSoftwareUpgrade":{"post":{"tags":["Msg"],"summary":"IBCSoftwareUpgrade defines a rpc handler method for MsgIBCSoftwareUpgrade.","operationId":"FeeMsg_IBCSoftwareUpgrade","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgIBCSoftwareUpgrade"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgIBCSoftwareUpgradeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.client.v1.Msg/RecoverClient":{"post":{"tags":["Msg"],"summary":"RecoverClient defines a rpc handler method for MsgRecoverClient.","operationId":"FeeMsg_RecoverClient","parameters":[{"description":"MsgRecoverClient defines the message used to recover a frozen or expired client.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgRecoverClient"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgRecoverClientResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.client.v1.Msg/SubmitMisbehaviour":{"post":{"tags":["Msg"],"summary":"SubmitMisbehaviour defines a rpc handler method for MsgSubmitMisbehaviour.","operationId":"FeeMsg_SubmitMisbehaviour","parameters":[{"description":"MsgSubmitMisbehaviour defines an sdk.Msg type that submits Evidence for\nlight client misbehaviour.\nThis message has been deprecated. Use MsgUpdateClient instead.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgSubmitMisbehaviour"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgSubmitMisbehaviourResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.client.v1.Msg/UpdateClient":{"post":{"tags":["Msg"],"summary":"UpdateClient defines a rpc handler method for MsgUpdateClient.","operationId":"FeeMsg_UpdateClient","parameters":[{"description":"MsgUpdateClient defines an sdk.Msg to update a IBC client state using\nthe given client message.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgUpdateClient"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgUpdateClientResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.client.v1.Msg/UpdateClientParams":{"post":{"tags":["Msg"],"summary":"UpdateClientParams defines a rpc handler method for MsgUpdateParams.","operationId":"FeeMsg_UpdateClientParams","parameters":[{"description":"MsgUpdateParams defines the sdk.Msg type to update the client parameters.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.client.v1.Msg/UpgradeClient":{"post":{"tags":["Msg"],"summary":"UpgradeClient defines a rpc handler method for MsgUpgradeClient.","operationId":"FeeMsg_UpgradeClient","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgUpgradeClient"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgUpgradeClientResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.connection.v1.Msg/ConnectionOpenAck":{"post":{"tags":["Msg"],"summary":"ConnectionOpenAck defines a rpc handler method for MsgConnectionOpenAck.","operationId":"FeeMsg_ConnectionOpenAck","parameters":[{"description":"MsgConnectionOpenAck defines a msg sent by a Relayer to Chain A to\nacknowledge the change of connection state to TRYOPEN on Chain B.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.connection.v1.MsgConnectionOpenAck"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.connection.v1.MsgConnectionOpenAckResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.connection.v1.Msg/ConnectionOpenConfirm":{"post":{"tags":["Msg"],"summary":"ConnectionOpenConfirm defines a rpc handler method for\nMsgConnectionOpenConfirm.","operationId":"FeeMsg_ConnectionOpenConfirm","parameters":[{"description":"MsgConnectionOpenConfirm defines a msg sent by a Relayer to Chain B to\nacknowledge the change of connection state to OPEN on Chain A.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.connection.v1.MsgConnectionOpenConfirm"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.connection.v1.MsgConnectionOpenConfirmResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.connection.v1.Msg/ConnectionOpenInit":{"post":{"tags":["Msg"],"summary":"ConnectionOpenInit defines a rpc handler method for MsgConnectionOpenInit.","operationId":"FeeMsg_ConnectionOpenInit","parameters":[{"description":"MsgConnectionOpenInit defines the msg sent by an account on Chain A to\ninitialize a connection with Chain B.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.connection.v1.MsgConnectionOpenInit"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.connection.v1.MsgConnectionOpenInitResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.connection.v1.Msg/ConnectionOpenTry":{"post":{"tags":["Msg"],"summary":"ConnectionOpenTry defines a rpc handler method for MsgConnectionOpenTry.","operationId":"FeeMsg_ConnectionOpenTry","parameters":[{"description":"MsgConnectionOpenTry defines a msg sent by a Relayer to try to open a\nconnection on Chain B.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.connection.v1.MsgConnectionOpenTry"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.connection.v1.MsgConnectionOpenTryResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.connection.v1.Msg/UpdateConnectionParams":{"post":{"tags":["Msg"],"summary":"UpdateConnectionParams defines a rpc handler method for\nMsgUpdateParams.","operationId":"FeeMsg_UpdateConnectionParams","parameters":[{"description":"MsgUpdateParams defines the sdk.Msg type to update the connection parameters.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.connection.v1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.connection.v1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.lightclients.wasm.v1.Msg/MigrateContract":{"post":{"tags":["Msg"],"summary":"MigrateContract defines a rpc handler method for MsgMigrateContract.","operationId":"FeeMsg_MigrateContract","parameters":[{"description":"MsgMigrateContract defines the request type for the MigrateContract rpc.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.lightclients.wasm.v1.MsgMigrateContract"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.lightclients.wasm.v1.MsgMigrateContractResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.lightclients.wasm.v1.Msg/RemoveChecksum":{"post":{"tags":["Msg"],"summary":"RemoveChecksum defines a rpc handler method for MsgRemoveChecksum.","operationId":"FeeMsg_RemoveChecksum","parameters":[{"description":"MsgRemoveChecksum defines the request type for the MsgRemoveChecksum rpc.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.lightclients.wasm.v1.MsgRemoveChecksum"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.lightclients.wasm.v1.MsgRemoveChecksumResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.lightclients.wasm.v1.Msg/StoreCode":{"post":{"tags":["Msg"],"summary":"StoreCode defines a rpc handler method for MsgStoreCode.","operationId":"FeeMsg_StoreCode","parameters":[{"description":"MsgStoreCode defines the request type for the StoreCode rpc.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.lightclients.wasm.v1.MsgStoreCode"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.lightclients.wasm.v1.MsgStoreCodeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/fee/v1/channels/{channel_id}/ports/{port_id}/fee_enabled":{"get":{"tags":["Query"],"summary":"FeeEnabledChannel returns true if the provided port and channel identifiers belong to a fee enabled channel","operationId":"FeeQuery_FeeEnabledChannel","parameters":[{"type":"string","description":"unique channel identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"unique port identifier","name":"port_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.fee.v1.QueryFeeEnabledChannelResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/fee/v1/channels/{channel_id}/ports/{port_id}/incentivized_packets":{"get":{"tags":["Query"],"summary":"Gets all incentivized packets for a specific channel","operationId":"FeeQuery_IncentivizedPacketsForChannel","parameters":[{"type":"string","name":"channel_id","in":"path","required":true},{"type":"string","name":"port_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"},{"type":"string","format":"uint64","description":"Height to query at","name":"query_height","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.fee.v1.QueryIncentivizedPacketsForChannelResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/fee/v1/channels/{channel_id}/relayers/{relayer}/counterparty_payee":{"get":{"tags":["Query"],"summary":"CounterpartyPayee returns the registered counterparty payee for forward relaying","operationId":"FeeQuery_CounterpartyPayee","parameters":[{"type":"string","description":"unique channel identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"the relayer address to which the counterparty is registered","name":"relayer","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.fee.v1.QueryCounterpartyPayeeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/fee/v1/channels/{channel_id}/relayers/{relayer}/payee":{"get":{"tags":["Query"],"summary":"Payee returns the registered payee address for a specific channel given the relayer address","operationId":"FeeQuery_Payee","parameters":[{"type":"string","description":"unique channel identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"the relayer address to which the distribution address is registered","name":"relayer","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.fee.v1.QueryPayeeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/fee/v1/channels/{packet_id.channel_id}/ports/{packet_id.port_id}/sequences/{packet_id.sequence}/incentivized_packet":{"get":{"tags":["Query"],"summary":"IncentivizedPacket returns all packet fees for a packet given its identifier","operationId":"FeeQuery_IncentivizedPacket","parameters":[{"type":"string","description":"channel unique identifier","name":"packet_id.channel_id","in":"path","required":true},{"type":"string","description":"channel port identifier","name":"packet_id.port_id","in":"path","required":true},{"type":"string","format":"uint64","description":"packet sequence","name":"packet_id.sequence","in":"path","required":true},{"type":"string","format":"uint64","description":"block height at which to query","name":"query_height","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.fee.v1.QueryIncentivizedPacketResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/fee/v1/channels/{packet_id.channel_id}/ports/{packet_id.port_id}/sequences/{packet_id.sequence}/total_ack_fees":{"get":{"tags":["Query"],"summary":"TotalAckFees returns the total acknowledgement fees for a packet given its identifier","operationId":"FeeQuery_TotalAckFees","parameters":[{"type":"string","description":"channel unique identifier","name":"packet_id.channel_id","in":"path","required":true},{"type":"string","description":"channel port identifier","name":"packet_id.port_id","in":"path","required":true},{"type":"string","format":"uint64","description":"packet sequence","name":"packet_id.sequence","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.fee.v1.QueryTotalAckFeesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/fee/v1/channels/{packet_id.channel_id}/ports/{packet_id.port_id}/sequences/{packet_id.sequence}/total_recv_fees":{"get":{"tags":["Query"],"summary":"TotalRecvFees returns the total receive fees for a packet given its identifier","operationId":"FeeQuery_TotalRecvFees","parameters":[{"type":"string","description":"channel unique identifier","name":"packet_id.channel_id","in":"path","required":true},{"type":"string","description":"channel port identifier","name":"packet_id.port_id","in":"path","required":true},{"type":"string","format":"uint64","description":"packet sequence","name":"packet_id.sequence","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.fee.v1.QueryTotalRecvFeesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/fee/v1/channels/{packet_id.channel_id}/ports/{packet_id.port_id}/sequences/{packet_id.sequence}/total_timeout_fees":{"get":{"tags":["Query"],"summary":"TotalTimeoutFees returns the total timeout fees for a packet given its identifier","operationId":"FeeQuery_TotalTimeoutFees","parameters":[{"type":"string","description":"channel unique identifier","name":"packet_id.channel_id","in":"path","required":true},{"type":"string","description":"channel port identifier","name":"packet_id.port_id","in":"path","required":true},{"type":"string","format":"uint64","description":"packet sequence","name":"packet_id.sequence","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.fee.v1.QueryTotalTimeoutFeesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/fee/v1/fee_enabled":{"get":{"tags":["Query"],"summary":"FeeEnabledChannels returns a list of all fee enabled channels","operationId":"FeeQuery_FeeEnabledChannels","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"},{"type":"string","format":"uint64","description":"block height at which to query","name":"query_height","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.fee.v1.QueryFeeEnabledChannelsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/fee/v1/incentivized_packets":{"get":{"tags":["Query"],"summary":"IncentivizedPackets returns all incentivized packets and their associated fees","operationId":"FeeQuery_IncentivizedPackets","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"},{"type":"string","format":"uint64","description":"block height at which to query","name":"query_height","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.fee.v1.QueryIncentivizedPacketsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/interchain_accounts/controller/v1/owners/{owner}/connections/{connection_id}":{"get":{"tags":["Query"],"summary":"InterchainAccount returns the interchain account address for a given owner address on a given connection","operationId":"FeeQuery_InterchainAccount","parameters":[{"type":"string","name":"owner","in":"path","required":true},{"type":"string","name":"connection_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.controller.v1.QueryInterchainAccountResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/interchain_accounts/controller/v1/params":{"get":{"tags":["Query"],"summary":"Params queries all parameters of the ICA controller submodule.","operationId":"FeeQuery_Params","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.controller.v1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/interchain_accounts/host/v1/params":{"get":{"tags":["Query"],"summary":"Params queries all parameters of the ICA host submodule.","operationId":"FeeQuery_ParamsMixin140","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.host.v1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/transfer/v1/channels/{channel_id}/ports/{port_id}/escrow_address":{"get":{"tags":["Query"],"summary":"EscrowAddress returns the escrow address for a particular port and channel id.","operationId":"FeeQuery_EscrowAddress","parameters":[{"type":"string","description":"unique channel identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"unique port identifier","name":"port_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.transfer.v1.QueryEscrowAddressResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/transfer/v1/denom_hashes/{trace}":{"get":{"tags":["Query"],"summary":"DenomHash queries a denomination hash information.","operationId":"FeeQuery_DenomHash","parameters":[{"pattern":".+","type":"string","description":"The denomination trace ([port_id]/[channel_id])+/[denom]","name":"trace","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.transfer.v1.QueryDenomHashResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/transfer/v1/denom_traces":{"get":{"tags":["Query"],"summary":"DenomTraces queries all denomination traces.","operationId":"FeeQuery_DenomTraces","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.transfer.v1.QueryDenomTracesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/transfer/v1/denom_traces/{hash}":{"get":{"tags":["Query"],"summary":"DenomTrace queries a denomination trace information.","operationId":"FeeQuery_DenomTrace","parameters":[{"pattern":".+","type":"string","description":"hash (in hex format) or denom (full denom with ibc prefix) of the denomination trace information.","name":"hash","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.transfer.v1.QueryDenomTraceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/transfer/v1/denoms/{denom}/total_escrow":{"get":{"tags":["Query"],"summary":"TotalEscrowForDenom returns the total amount of tokens in escrow based on the denom.","operationId":"FeeQuery_TotalEscrowForDenom","parameters":[{"pattern":".+","type":"string","name":"denom","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.transfer.v1.QueryTotalEscrowForDenomResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/transfer/v1/params":{"get":{"tags":["Query"],"summary":"Params queries all parameters of the ibc-transfer module.","operationId":"FeeQuery_ParamsMixin147","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.transfer.v1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels":{"get":{"tags":["Query"],"summary":"Channels queries all the IBC channels of a chain.","operationId":"FeeQuery_Channels","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryChannelsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}":{"get":{"tags":["Query"],"summary":"Channel queries an IBC Channel.","operationId":"FeeQuery_Channel","parameters":[{"type":"string","description":"channel unique identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"port unique identifier","name":"port_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryChannelResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/client_state":{"get":{"tags":["Query"],"summary":"ChannelClientState queries for the client state for the channel associated\nwith the provided channel identifiers.","operationId":"FeeQuery_ChannelClientState","parameters":[{"type":"string","description":"channel unique identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"port unique identifier","name":"port_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryChannelClientStateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/consensus_state/revision/{revision_number}/height/{revision_height}":{"get":{"tags":["Query"],"summary":"ChannelConsensusState queries for the consensus state for the channel\nassociated with the provided channel identifiers.","operationId":"FeeQuery_ChannelConsensusState","parameters":[{"type":"string","description":"channel unique identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"port unique identifier","name":"port_id","in":"path","required":true},{"type":"string","format":"uint64","description":"revision number of the consensus state","name":"revision_number","in":"path","required":true},{"type":"string","format":"uint64","description":"revision height of the consensus state","name":"revision_height","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryChannelConsensusStateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/next_sequence":{"get":{"tags":["Query"],"summary":"NextSequenceReceive returns the next receive sequence for a given channel.","operationId":"FeeQuery_NextSequenceReceive","parameters":[{"type":"string","description":"channel unique identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"port unique identifier","name":"port_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryNextSequenceReceiveResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/next_sequence_send":{"get":{"tags":["Query"],"summary":"NextSequenceSend returns the next send sequence for a given channel.","operationId":"FeeQuery_NextSequenceSend","parameters":[{"type":"string","description":"channel unique identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"port unique identifier","name":"port_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryNextSequenceSendResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_acknowledgements":{"get":{"tags":["Query"],"summary":"PacketAcknowledgements returns all the packet acknowledgements associated\nwith a channel.","operationId":"FeeQuery_PacketAcknowledgements","parameters":[{"type":"string","description":"channel unique identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"port unique identifier","name":"port_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"},{"type":"array","items":{"type":"string","format":"uint64"},"collectionFormat":"multi","description":"list of packet sequences","name":"packet_commitment_sequences","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryPacketAcknowledgementsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_acks/{sequence}":{"get":{"tags":["Query"],"summary":"PacketAcknowledgement queries a stored packet acknowledgement hash.","operationId":"FeeQuery_PacketAcknowledgement","parameters":[{"type":"string","description":"channel unique identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"port unique identifier","name":"port_id","in":"path","required":true},{"type":"string","format":"uint64","description":"packet sequence","name":"sequence","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryPacketAcknowledgementResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments":{"get":{"tags":["Query"],"summary":"PacketCommitments returns all the packet commitments hashes associated\nwith a channel.","operationId":"FeeQuery_PacketCommitments","parameters":[{"type":"string","description":"channel unique identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"port unique identifier","name":"port_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryPacketCommitmentsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments/{packet_ack_sequences}/unreceived_acks":{"get":{"tags":["Query"],"summary":"UnreceivedAcks returns all the unreceived IBC acknowledgements associated\nwith a channel and sequences.","operationId":"FeeQuery_UnreceivedAcks","parameters":[{"type":"string","description":"channel unique identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"port unique identifier","name":"port_id","in":"path","required":true},{"minItems":1,"type":"array","items":{"type":"string","format":"uint64"},"collectionFormat":"csv","description":"list of acknowledgement sequences","name":"packet_ack_sequences","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryUnreceivedAcksResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments/{packet_commitment_sequences}/unreceived_packets":{"get":{"tags":["Query"],"summary":"UnreceivedPackets returns all the unreceived IBC packets associated with a\nchannel and sequences.","operationId":"FeeQuery_UnreceivedPackets","parameters":[{"type":"string","description":"channel unique identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"port unique identifier","name":"port_id","in":"path","required":true},{"minItems":1,"type":"array","items":{"type":"string","format":"uint64"},"collectionFormat":"csv","description":"list of packet sequences","name":"packet_commitment_sequences","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryUnreceivedPacketsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments/{sequence}":{"get":{"tags":["Query"],"summary":"PacketCommitment queries a stored packet commitment hash.","operationId":"FeeQuery_PacketCommitment","parameters":[{"type":"string","description":"channel unique identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"port unique identifier","name":"port_id","in":"path","required":true},{"type":"string","format":"uint64","description":"packet sequence","name":"sequence","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryPacketCommitmentResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_receipts/{sequence}":{"get":{"tags":["Query"],"summary":"PacketReceipt queries if a given packet sequence has been received on the\nqueried chain","operationId":"FeeQuery_PacketReceipt","parameters":[{"type":"string","description":"channel unique identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"port unique identifier","name":"port_id","in":"path","required":true},{"type":"string","format":"uint64","description":"packet sequence","name":"sequence","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryPacketReceiptResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/upgrade":{"get":{"tags":["Query"],"summary":"Upgrade returns the upgrade for a given port and channel id.","operationId":"FeeQuery_Upgrade","parameters":[{"type":"string","name":"channel_id","in":"path","required":true},{"type":"string","name":"port_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryUpgradeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/upgrade_error":{"get":{"tags":["Query"],"summary":"UpgradeError returns the error receipt if the upgrade handshake failed.","operationId":"FeeQuery_UpgradeError","parameters":[{"type":"string","name":"channel_id","in":"path","required":true},{"type":"string","name":"port_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryUpgradeErrorResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/connections/{connection}/channels":{"get":{"tags":["Query"],"summary":"ConnectionChannels queries all the channels associated with a connection\nend.","operationId":"FeeQuery_ConnectionChannels","parameters":[{"type":"string","description":"connection unique identifier","name":"connection","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryConnectionChannelsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/params":{"get":{"tags":["Query"],"summary":"ChannelParams queries all parameters of the ibc channel submodule.","operationId":"FeeQuery_ChannelParams","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryChannelParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/client/v1/client_states":{"get":{"tags":["Query"],"summary":"ClientStates queries all the IBC light clients of a chain.","operationId":"FeeQuery_ClientStates","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.QueryClientStatesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/client/v1/client_states/{client_id}":{"get":{"tags":["Query"],"summary":"ClientState queries an IBC light client.","operationId":"FeeQuery_ClientState","parameters":[{"type":"string","description":"client state unique identifier","name":"client_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.QueryClientStateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/client/v1/client_status/{client_id}":{"get":{"tags":["Query"],"summary":"Status queries the status of an IBC client.","operationId":"FeeQuery_ClientStatus","parameters":[{"type":"string","description":"client unique identifier","name":"client_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.QueryClientStatusResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/client/v1/consensus_states/{client_id}":{"get":{"tags":["Query"],"summary":"ConsensusStates queries all the consensus state associated with a given\nclient.","operationId":"FeeQuery_ConsensusStates","parameters":[{"type":"string","description":"client identifier","name":"client_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.QueryConsensusStatesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/client/v1/consensus_states/{client_id}/heights":{"get":{"tags":["Query"],"summary":"ConsensusStateHeights queries the height of every consensus states associated with a given client.","operationId":"FeeQuery_ConsensusStateHeights","parameters":[{"type":"string","description":"client identifier","name":"client_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.QueryConsensusStateHeightsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/client/v1/consensus_states/{client_id}/revision/{revision_number}/height/{revision_height}":{"get":{"tags":["Query"],"summary":"ConsensusState queries a consensus state associated with a client state at\na given height.","operationId":"FeeQuery_ConsensusState","parameters":[{"type":"string","description":"client identifier","name":"client_id","in":"path","required":true},{"type":"string","format":"uint64","description":"consensus state revision number","name":"revision_number","in":"path","required":true},{"type":"string","format":"uint64","description":"consensus state revision height","name":"revision_height","in":"path","required":true},{"type":"boolean","description":"latest_height overrrides the height field and queries the latest stored\nConsensusState","name":"latest_height","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.QueryConsensusStateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/client/v1/params":{"get":{"tags":["Query"],"summary":"ClientParams queries all parameters of the ibc client submodule.","operationId":"FeeQuery_ClientParams","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.QueryClientParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/client/v1/upgraded_client_states":{"get":{"tags":["Query"],"summary":"UpgradedClientState queries an Upgraded IBC light client.","operationId":"FeeQuery_UpgradedClientState","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.QueryUpgradedClientStateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/client/v1/upgraded_consensus_states":{"get":{"tags":["Query"],"summary":"UpgradedConsensusState queries an Upgraded IBC consensus state.","operationId":"FeeQuery_UpgradedConsensusState","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.QueryUpgradedConsensusStateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/client/v1/verify_membership":{"post":{"tags":["Query"],"summary":"VerifyMembership queries an IBC light client for proof verification of a value at a given key path.","operationId":"FeeQuery_VerifyMembership","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.client.v1.QueryVerifyMembershipRequest"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.QueryVerifyMembershipResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/connection/v1/client_connections/{client_id}":{"get":{"tags":["Query"],"summary":"ClientConnections queries the connection paths associated with a client\nstate.","operationId":"FeeQuery_ClientConnections","parameters":[{"type":"string","description":"client identifier associated with a connection","name":"client_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.connection.v1.QueryClientConnectionsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/connection/v1/connections":{"get":{"tags":["Query"],"summary":"Connections queries all the IBC connections of a chain.","operationId":"FeeQuery_Connections","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.connection.v1.QueryConnectionsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/connection/v1/connections/{connection_id}":{"get":{"tags":["Query"],"summary":"Connection queries an IBC connection end.","operationId":"FeeQuery_Connection","parameters":[{"type":"string","description":"connection unique identifier","name":"connection_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.connection.v1.QueryConnectionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/connection/v1/connections/{connection_id}/client_state":{"get":{"tags":["Query"],"summary":"ConnectionClientState queries the client state associated with the\nconnection.","operationId":"FeeQuery_ConnectionClientState","parameters":[{"type":"string","description":"connection identifier","name":"connection_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.connection.v1.QueryConnectionClientStateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/connection/v1/connections/{connection_id}/consensus_state/revision/{revision_number}/height/{revision_height}":{"get":{"tags":["Query"],"summary":"ConnectionConsensusState queries the consensus state associated with the\nconnection.","operationId":"FeeQuery_ConnectionConsensusState","parameters":[{"type":"string","description":"connection identifier","name":"connection_id","in":"path","required":true},{"type":"string","format":"uint64","name":"revision_number","in":"path","required":true},{"type":"string","format":"uint64","name":"revision_height","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.connection.v1.QueryConnectionConsensusStateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/connection/v1/params":{"get":{"tags":["Query"],"summary":"ConnectionParams queries all parameters of the ibc connection submodule.","operationId":"FeeQuery_ConnectionParams","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.connection.v1.QueryConnectionParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/lightclients/wasm/v1/checksums":{"get":{"tags":["Query"],"summary":"Get all Wasm checksums","operationId":"FeeQuery_Checksums","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.lightclients.wasm.v1.QueryChecksumsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/lightclients/wasm/v1/checksums/{checksum}/code":{"get":{"tags":["Query"],"summary":"Get Wasm code for given checksum","operationId":"FeeQuery_Code","parameters":[{"type":"string","description":"checksum is a hex encoded string of the code stored.","name":"checksum","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.lightclients.wasm.v1.QueryCodeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ignite/modules/claim/airdrop_supply":{"get":{"tags":["Query"],"summary":"Queries a AirdropSupply by index.","operationId":"GithubComignitemodulesQuery_GetAirdropSupply","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/modules.claim.v1.QueryGetAirdropSupplyResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ignite/modules/claim/claim_record":{"get":{"tags":["Query"],"operationId":"GithubComignitemodulesQuery_ListClaimRecord","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/modules.claim.v1.QueryAllClaimRecordResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ignite/modules/claim/claim_record/{address}":{"get":{"tags":["Query"],"summary":"Queries a list of ClaimRecord items.","operationId":"GithubComignitemodulesQuery_GetClaimRecord","parameters":[{"type":"string","name":"address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/modules.claim.v1.QueryGetClaimRecordResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ignite/modules/claim/initial_claim":{"get":{"tags":["Query"],"summary":"Queries a InitialClaim by index.","operationId":"GithubComignitemodulesQuery_GetInitialClaim","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/modules.claim.v1.QueryGetInitialClaimResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ignite/modules/claim/mission":{"get":{"tags":["Query"],"operationId":"GithubComignitemodulesQuery_ListMission","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/modules.claim.v1.QueryAllMissionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ignite/modules/claim/mission/{id}":{"get":{"tags":["Query"],"summary":"Queries a list of Mission items.","operationId":"GithubComignitemodulesQuery_GetMission","parameters":[{"type":"string","format":"uint64","name":"id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/modules.claim.v1.QueryGetMissionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ignite/modules/claim/v1/params":{"get":{"tags":["Query"],"summary":"Parameters queries the parameters of the module.","operationId":"GithubComignitemodulesQuery_Params","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/modules.claim.v1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ignite/modules/mint/annual_provisions":{"get":{"tags":["Query"],"summary":"Queries a list of AnnualProvisions items.","operationId":"GithubComignitemodulesQuery_AnnualProvisions","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/modules.mint.v1.QueryAnnualProvisionsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ignite/modules/mint/inflation":{"get":{"tags":["Query"],"summary":"Queries a list of Inflation items.","operationId":"GithubComignitemodulesQuery_Inflation","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/modules.mint.v1.QueryInflationResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ignite/modules/mint/v1/params":{"get":{"tags":["Query"],"summary":"Parameters queries the parameters of the module.","operationId":"GithubComignitemodulesQuery_ParamsMixin14","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/modules.mint.v1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/modules.claim.v1.Msg/Claim":{"post":{"tags":["Msg"],"operationId":"GithubComignitemodulesMsg_Claim","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/modules.claim.v1.MsgClaim"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/modules.claim.v1.MsgClaimResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/modules.claim.v1.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines a (governance) operation for updating the module\nparameters. The authority defaults to the x/gov module account.","operationId":"GithubComignitemodulesMsg_UpdateParams","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/modules.claim.v1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/modules.claim.v1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/modules.mint.v1.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines a (governance) operation for updating the module\nparameters. The authority defaults to the x/gov module account.","operationId":"GithubComignitemodulesMsg_UpdateParamsMixin15","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/modules.mint.v1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/modules.mint.v1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/ApplySnapshotChunk":{"post":{"tags":["ABCI"],"operationId":"UpgradeABCI_ApplySnapshotChunk","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestApplySnapshotChunk"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseApplySnapshotChunk"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/CheckTx":{"post":{"tags":["ABCI"],"operationId":"UpgradeABCI_CheckTx","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestCheckTx"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseCheckTx"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/Commit":{"post":{"tags":["ABCI"],"operationId":"UpgradeABCI_Commit","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestCommit"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseCommit"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/Echo":{"post":{"tags":["ABCI"],"operationId":"UpgradeABCI_Echo","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestEcho"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseEcho"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/ExtendVote":{"post":{"tags":["ABCI"],"operationId":"UpgradeABCI_ExtendVote","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestExtendVote"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseExtendVote"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/FinalizeBlock":{"post":{"tags":["ABCI"],"operationId":"UpgradeABCI_FinalizeBlock","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestFinalizeBlock"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseFinalizeBlock"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/Flush":{"post":{"tags":["ABCI"],"operationId":"UpgradeABCI_Flush","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestFlush"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseFlush"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/Info":{"post":{"tags":["ABCI"],"operationId":"UpgradeABCI_Info","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestInfo"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseInfo"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/InitChain":{"post":{"tags":["ABCI"],"operationId":"UpgradeABCI_InitChain","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestInitChain"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseInitChain"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/ListSnapshots":{"post":{"tags":["ABCI"],"operationId":"UpgradeABCI_ListSnapshots","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestListSnapshots"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseListSnapshots"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/LoadSnapshotChunk":{"post":{"tags":["ABCI"],"operationId":"UpgradeABCI_LoadSnapshotChunk","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestLoadSnapshotChunk"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseLoadSnapshotChunk"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/OfferSnapshot":{"post":{"tags":["ABCI"],"operationId":"UpgradeABCI_OfferSnapshot","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestOfferSnapshot"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseOfferSnapshot"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/PrepareProposal":{"post":{"tags":["ABCI"],"operationId":"UpgradeABCI_PrepareProposal","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestPrepareProposal"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponsePrepareProposal"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/ProcessProposal":{"post":{"tags":["ABCI"],"operationId":"UpgradeABCI_ProcessProposal","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestProcessProposal"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseProcessProposal"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/Query":{"post":{"tags":["ABCI"],"operationId":"UpgradeABCI_Query","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestQuery"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseQuery"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/VerifyVoteExtension":{"post":{"tags":["ABCI"],"operationId":"UpgradeABCI_VerifyVoteExtension","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestVerifyVoteExtension"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseVerifyVoteExtension"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}}},"definitions":{"cosmos.auth.v1beta1.AddressBytesToStringResponse":{"description":"AddressBytesToStringResponse is the response type for AddressString rpc method.\n\nSince: cosmos-sdk 0.46","type":"object","properties":{"address_string":{"type":"string"}}},"cosmos.auth.v1beta1.AddressStringToBytesResponse":{"description":"AddressStringToBytesResponse is the response type for AddressBytes rpc method.\n\nSince: cosmos-sdk 0.46","type":"object","properties":{"address_bytes":{"type":"string","format":"byte"}}},"cosmos.auth.v1beta1.BaseAccount":{"description":"BaseAccount defines a base account type. It contains all the necessary fields\nfor basic account functionality. Any custom account type should extend this\ntype for additional functionality (e.g. vesting).","type":"object","properties":{"account_number":{"type":"string","format":"uint64"},"address":{"type":"string"},"pub_key":{"$ref":"#/definitions/google.protobuf.Any"},"sequence":{"type":"string","format":"uint64"}}},"cosmos.auth.v1beta1.Bech32PrefixResponse":{"description":"Bech32PrefixResponse is the response type for Bech32Prefix rpc method.\n\nSince: cosmos-sdk 0.46","type":"object","properties":{"bech32_prefix":{"type":"string"}}},"cosmos.auth.v1beta1.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the x/auth parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/cosmos.auth.v1beta1.Params"}}},"cosmos.auth.v1beta1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.\n\nSince: cosmos-sdk 0.47","type":"object"},"cosmos.auth.v1beta1.Params":{"description":"Params defines the parameters for the auth module.","type":"object","properties":{"max_memo_characters":{"type":"string","format":"uint64"},"sig_verify_cost_ed25519":{"type":"string","format":"uint64"},"sig_verify_cost_secp256k1":{"type":"string","format":"uint64"},"tx_sig_limit":{"type":"string","format":"uint64"},"tx_size_cost_per_byte":{"type":"string","format":"uint64"}}},"cosmos.auth.v1beta1.QueryAccountAddressByIDResponse":{"description":"Since: cosmos-sdk 0.46.2","type":"object","title":"QueryAccountAddressByIDResponse is the response type for AccountAddressByID rpc method","properties":{"account_address":{"type":"string"}}},"cosmos.auth.v1beta1.QueryAccountInfoResponse":{"description":"QueryAccountInfoResponse is the Query/AccountInfo response type.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"info":{"description":"info is the account info which is represented by BaseAccount.","$ref":"#/definitions/cosmos.auth.v1beta1.BaseAccount"}}},"cosmos.auth.v1beta1.QueryAccountResponse":{"description":"QueryAccountResponse is the response type for the Query/Account RPC method.","type":"object","properties":{"account":{"description":"account defines the account of the corresponding address.","$ref":"#/definitions/google.protobuf.Any"}}},"cosmos.auth.v1beta1.QueryAccountsResponse":{"description":"QueryAccountsResponse is the response type for the Query/Accounts RPC method.\n\nSince: cosmos-sdk 0.43","type":"object","properties":{"accounts":{"type":"array","title":"accounts are the existing accounts","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.auth.v1beta1.QueryModuleAccountByNameResponse":{"description":"QueryModuleAccountByNameResponse is the response type for the Query/ModuleAccountByName RPC method.","type":"object","properties":{"account":{"$ref":"#/definitions/google.protobuf.Any"}}},"cosmos.auth.v1beta1.QueryModuleAccountsResponse":{"description":"QueryModuleAccountsResponse is the response type for the Query/ModuleAccounts RPC method.\n\nSince: cosmos-sdk 0.46","type":"object","properties":{"accounts":{"type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}}}},"cosmos.auth.v1beta1.QueryParamsResponse":{"description":"QueryParamsResponse is the response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params defines the parameters of the module.","$ref":"#/definitions/cosmos.auth.v1beta1.Params"}}},"cosmos.authz.v1beta1.Grant":{"description":"Grant gives permissions to execute\nthe provide method with expiration time.","type":"object","properties":{"authorization":{"$ref":"#/definitions/google.protobuf.Any"},"expiration":{"type":"string","format":"date-time","title":"time when the grant will expire and will be pruned. If null, then the grant\ndoesn't have a time expiration (other conditions in `authorization`\nmay apply to invalidate the grant)"}}},"cosmos.authz.v1beta1.GrantAuthorization":{"type":"object","title":"GrantAuthorization extends a grant with both the addresses of the grantee and granter.\nIt is used in genesis.proto and query.proto","properties":{"authorization":{"$ref":"#/definitions/google.protobuf.Any"},"expiration":{"type":"string","format":"date-time"},"grantee":{"type":"string"},"granter":{"type":"string"}}},"cosmos.authz.v1beta1.MsgExec":{"description":"MsgExec attempts to execute the provided messages using\nauthorizations granted to the grantee. Each message should have only\none signer corresponding to the granter of the authorization.","type":"object","properties":{"grantee":{"type":"string"},"msgs":{"description":"Execute Msg.\nThe x/authz will try to find a grant matching (msg.signers[0], grantee, MsgTypeURL(msg))\ntriple and validate it.","type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}}}},"cosmos.authz.v1beta1.MsgExecResponse":{"description":"MsgExecResponse defines the Msg/MsgExecResponse response type.","type":"object","properties":{"results":{"type":"array","items":{"type":"string","format":"byte"}}}},"cosmos.authz.v1beta1.MsgGrant":{"description":"MsgGrant is a request type for Grant method. It declares authorization to the grantee\non behalf of the granter with the provided expiration time.","type":"object","properties":{"grant":{"$ref":"#/definitions/cosmos.authz.v1beta1.Grant"},"grantee":{"type":"string"},"granter":{"type":"string"}}},"cosmos.authz.v1beta1.MsgGrantResponse":{"description":"MsgGrantResponse defines the Msg/MsgGrant response type.","type":"object"},"cosmos.authz.v1beta1.MsgRevoke":{"description":"MsgRevoke revokes any authorization with the provided sdk.Msg type on the\ngranter's account with that has been granted to the grantee.","type":"object","properties":{"grantee":{"type":"string"},"granter":{"type":"string"},"msg_type_url":{"type":"string"}}},"cosmos.authz.v1beta1.MsgRevokeResponse":{"description":"MsgRevokeResponse defines the Msg/MsgRevokeResponse response type.","type":"object"},"cosmos.authz.v1beta1.QueryGranteeGrantsResponse":{"description":"QueryGranteeGrantsResponse is the response type for the Query/GranteeGrants RPC method.","type":"object","properties":{"grants":{"description":"grants is a list of grants granted to the grantee.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.authz.v1beta1.GrantAuthorization"}},"pagination":{"description":"pagination defines an pagination for the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.authz.v1beta1.QueryGranterGrantsResponse":{"description":"QueryGranterGrantsResponse is the response type for the Query/GranterGrants RPC method.","type":"object","properties":{"grants":{"description":"grants is a list of grants granted by the granter.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.authz.v1beta1.GrantAuthorization"}},"pagination":{"description":"pagination defines an pagination for the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.authz.v1beta1.QueryGrantsResponse":{"description":"QueryGrantsResponse is the response type for the Query/Authorizations RPC method.","type":"object","properties":{"grants":{"description":"authorizations is a list of grants granted for grantee by granter.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.authz.v1beta1.Grant"}},"pagination":{"description":"pagination defines an pagination for the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.autocli.v1.AppOptionsRequest":{"description":"AppOptionsRequest is the RemoteInfoService/AppOptions request type.","type":"object"},"cosmos.autocli.v1.AppOptionsResponse":{"description":"AppOptionsResponse is the RemoteInfoService/AppOptions response type.","type":"object","properties":{"module_options":{"description":"module_options is a map of module name to autocli module options.","type":"object","additionalProperties":{"$ref":"#/definitions/cosmos.autocli.v1.ModuleOptions"}}}},"cosmos.autocli.v1.FlagOptions":{"description":"FlagOptions are options for flags generated from rpc request fields.\nBy default, all request fields are configured as flags based on the\nkebab-case name of the field. Fields can be turned into positional arguments\ninstead by using RpcCommandOptions.positional_args.","type":"object","properties":{"default_value":{"description":"default_value is the default value as text.","type":"string"},"deprecated":{"description":"deprecated is the usage text to show if this flag is deprecated.","type":"string"},"hidden":{"type":"boolean","title":"hidden hides the flag from help/usage text"},"name":{"description":"name is an alternate name to use for the field flag.","type":"string"},"shorthand":{"description":"shorthand is a one-letter abbreviated flag.","type":"string"},"shorthand_deprecated":{"description":"shorthand_deprecated is the usage text to show if the shorthand of this flag is deprecated.","type":"string"},"usage":{"description":"usage is the help message.","type":"string"}}},"cosmos.autocli.v1.ModuleOptions":{"description":"ModuleOptions describes the CLI options for a Cosmos SDK module.","type":"object","properties":{"query":{"description":"query describes the queries commands for the module.","$ref":"#/definitions/cosmos.autocli.v1.ServiceCommandDescriptor"},"tx":{"description":"tx describes the tx commands for the module.","$ref":"#/definitions/cosmos.autocli.v1.ServiceCommandDescriptor"}}},"cosmos.autocli.v1.PositionalArgDescriptor":{"description":"PositionalArgDescriptor describes a positional argument.","type":"object","properties":{"proto_field":{"description":"proto_field specifies the proto field to use as the positional arg. Any\nfields used as positional args will not have a flag generated.","type":"string"},"varargs":{"description":"varargs makes a positional parameter a varargs parameter. This can only be\napplied to last positional parameter and the proto_field must a repeated\nfield.","type":"boolean"}}},"cosmos.autocli.v1.RpcCommandOptions":{"description":"RpcCommandOptions specifies options for commands generated from protobuf\nrpc methods.","type":"object","properties":{"alias":{"description":"alias is an array of aliases that can be used instead of the first word in Use.","type":"array","items":{"type":"string"}},"deprecated":{"description":"deprecated defines, if this command is deprecated and should print this string when used.","type":"string"},"example":{"description":"example is examples of how to use the command.","type":"string"},"flag_options":{"description":"flag_options are options for flags generated from rpc request fields.\nBy default all request fields are configured as flags. They can\nalso be configured as positional args instead using positional_args.","type":"object","additionalProperties":{"$ref":"#/definitions/cosmos.autocli.v1.FlagOptions"}},"long":{"description":"long is the long message shown in the 'help \u003cthis-command\u003e' output.","type":"string"},"positional_args":{"description":"positional_args specifies positional arguments for the command.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.autocli.v1.PositionalArgDescriptor"}},"rpc_method":{"description":"rpc_method is short name of the protobuf rpc method that this command is\ngenerated from.","type":"string"},"short":{"description":"short is the short description shown in the 'help' output.","type":"string"},"skip":{"description":"skip specifies whether to skip this rpc method when generating commands.","type":"boolean"},"suggest_for":{"description":"suggest_for is an array of command names for which this command will be suggested -\nsimilar to aliases but only suggests.","type":"array","items":{"type":"string"}},"use":{"description":"use is the one-line usage method. It also allows specifying an alternate\nname for the command as the first word of the usage text.\n\nBy default the name of an rpc command is the kebab-case short name of the\nrpc method.","type":"string"},"version":{"description":"version defines the version for this command. If this value is non-empty and the command does not\ndefine a \"version\" flag, a \"version\" boolean flag will be added to the command and, if specified,\nwill print content of the \"Version\" variable. A shorthand \"v\" flag will also be added if the\ncommand does not define one.","type":"string"}}},"cosmos.autocli.v1.ServiceCommandDescriptor":{"description":"ServiceCommandDescriptor describes a CLI command based on a protobuf service.","type":"object","properties":{"rpc_command_options":{"description":"rpc_command_options are options for commands generated from rpc methods.\nIf no options are specified for a given rpc method on the service, a\ncommand will be generated for that method with the default options.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.autocli.v1.RpcCommandOptions"}},"service":{"description":"service is the fully qualified name of the protobuf service to build\nthe command from. It can be left empty if sub_commands are used instead\nwhich may be the case if a module provides multiple tx and/or query services.","type":"string"},"sub_commands":{"description":"sub_commands is a map of optional sub-commands for this command based on\ndifferent protobuf services. The map key is used as the name of the\nsub-command.","type":"object","additionalProperties":{"$ref":"#/definitions/cosmos.autocli.v1.ServiceCommandDescriptor"}}}},"cosmos.bank.v1beta1.DenomOwner":{"description":"DenomOwner defines structure representing an account that owns or holds a\nparticular denominated token. It contains the account address and account\nbalance of the denominated token.\n\nSince: cosmos-sdk 0.46","type":"object","properties":{"address":{"description":"address defines the address that owns a particular denomination.","type":"string"},"balance":{"description":"balance is the balance of the denominated coin for an account.","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"cosmos.bank.v1beta1.DenomUnit":{"description":"DenomUnit represents a struct that describes a given\ndenomination unit of the basic token.","type":"object","properties":{"aliases":{"type":"array","title":"aliases is a list of string aliases for the given denom","items":{"type":"string"}},"denom":{"description":"denom represents the string name of the given denom unit (e.g uatom).","type":"string"},"exponent":{"description":"exponent represents power of 10 exponent that one must\nraise the base_denom to in order to equal the given DenomUnit's denom\n1 denom = 10^exponent base_denom\n(e.g. with a base_denom of uatom, one can create a DenomUnit of 'atom' with\nexponent = 6, thus: 1 atom = 10^6 uatom).","type":"integer","format":"int64"}}},"cosmos.bank.v1beta1.Input":{"description":"Input models transaction input.","type":"object","properties":{"address":{"type":"string"},"coins":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"cosmos.bank.v1beta1.Metadata":{"description":"Metadata represents a struct that describes\na basic token.","type":"object","properties":{"base":{"description":"base represents the base denom (should be the DenomUnit with exponent = 0).","type":"string"},"denom_units":{"type":"array","title":"denom_units represents the list of DenomUnit's for a given coin","items":{"type":"object","$ref":"#/definitions/cosmos.bank.v1beta1.DenomUnit"}},"description":{"type":"string"},"display":{"description":"display indicates the suggested denom that should be\ndisplayed in clients.","type":"string"},"name":{"description":"Since: cosmos-sdk 0.43","type":"string","title":"name defines the name of the token (eg: Cosmos Atom)"},"symbol":{"description":"symbol is the token symbol usually shown on exchanges (eg: ATOM). This can\nbe the same as the display.\n\nSince: cosmos-sdk 0.43","type":"string"},"uri":{"description":"URI to a document (on or off-chain) that contains additional information. Optional.\n\nSince: cosmos-sdk 0.46","type":"string"},"uri_hash":{"description":"URIHash is a sha256 hash of a document pointed by URI. It's used to verify that\nthe document didn't change. Optional.\n\nSince: cosmos-sdk 0.46","type":"string"}}},"cosmos.bank.v1beta1.MsgMultiSend":{"description":"MsgMultiSend represents an arbitrary multi-in, multi-out send message.","type":"object","properties":{"inputs":{"description":"Inputs, despite being `repeated`, only allows one sender input. This is\nchecked in MsgMultiSend's ValidateBasic.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.bank.v1beta1.Input"}},"outputs":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.bank.v1beta1.Output"}}}},"cosmos.bank.v1beta1.MsgMultiSendResponse":{"description":"MsgMultiSendResponse defines the Msg/MultiSend response type.","type":"object"},"cosmos.bank.v1beta1.MsgSend":{"description":"MsgSend represents a message to send coins from one account to another.","type":"object","properties":{"amount":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"from_address":{"type":"string"},"to_address":{"type":"string"}}},"cosmos.bank.v1beta1.MsgSendResponse":{"description":"MsgSendResponse defines the Msg/Send response type.","type":"object"},"cosmos.bank.v1beta1.MsgSetSendEnabled":{"description":"MsgSetSendEnabled is the Msg/SetSendEnabled request type.\n\nOnly entries to add/update/delete need to be included.\nExisting SendEnabled entries that are not included in this\nmessage are left unchanged.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"authority":{"description":"authority is the address that controls the module.","type":"string"},"send_enabled":{"description":"send_enabled is the list of entries to add or update.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.bank.v1beta1.SendEnabled"}},"use_default_for":{"description":"use_default_for is a list of denoms that should use the params.default_send_enabled value.\nDenoms listed here will have their SendEnabled entries deleted.\nIf a denom is included that doesn't have a SendEnabled entry,\nit will be ignored.","type":"array","items":{"type":"string"}}}},"cosmos.bank.v1beta1.MsgSetSendEnabledResponse":{"description":"MsgSetSendEnabledResponse defines the Msg/SetSendEnabled response type.\n\nSince: cosmos-sdk 0.47","type":"object"},"cosmos.bank.v1beta1.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the x/bank parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/cosmos.bank.v1beta1.Params"}}},"cosmos.bank.v1beta1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.\n\nSince: cosmos-sdk 0.47","type":"object"},"cosmos.bank.v1beta1.Output":{"description":"Output models transaction outputs.","type":"object","properties":{"address":{"type":"string"},"coins":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"cosmos.bank.v1beta1.Params":{"description":"Params defines the parameters for the bank module.","type":"object","properties":{"default_send_enabled":{"type":"boolean"},"send_enabled":{"description":"Deprecated: Use of SendEnabled in params is deprecated.\nFor genesis, use the newly added send_enabled field in the genesis object.\nStorage, lookup, and manipulation of this information is now in the keeper.\n\nAs of cosmos-sdk 0.47, this only exists for backwards compatibility of genesis files.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.bank.v1beta1.SendEnabled"}}}},"cosmos.bank.v1beta1.QueryAllBalancesResponse":{"description":"QueryAllBalancesResponse is the response type for the Query/AllBalances RPC\nmethod.","type":"object","properties":{"balances":{"description":"balances is the balances of all the coins.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.bank.v1beta1.QueryBalanceResponse":{"description":"QueryBalanceResponse is the response type for the Query/Balance RPC method.","type":"object","properties":{"balance":{"description":"balance is the balance of the coin.","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"cosmos.bank.v1beta1.QueryDenomMetadataByQueryStringResponse":{"description":"QueryDenomMetadataByQueryStringResponse is the response type for the Query/DenomMetadata RPC\nmethod. Identical with QueryDenomMetadataResponse but receives denom as query string in request.","type":"object","properties":{"metadata":{"description":"metadata describes and provides all the client information for the requested token.","$ref":"#/definitions/cosmos.bank.v1beta1.Metadata"}}},"cosmos.bank.v1beta1.QueryDenomMetadataResponse":{"description":"QueryDenomMetadataResponse is the response type for the Query/DenomMetadata RPC\nmethod.","type":"object","properties":{"metadata":{"description":"metadata describes and provides all the client information for the requested token.","$ref":"#/definitions/cosmos.bank.v1beta1.Metadata"}}},"cosmos.bank.v1beta1.QueryDenomOwnersByQueryResponse":{"description":"QueryDenomOwnersByQueryResponse defines the RPC response of a DenomOwnersByQuery RPC query.\n\nSince: cosmos-sdk 0.50.3","type":"object","properties":{"denom_owners":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.bank.v1beta1.DenomOwner"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.bank.v1beta1.QueryDenomOwnersResponse":{"description":"QueryDenomOwnersResponse defines the RPC response of a DenomOwners RPC query.\n\nSince: cosmos-sdk 0.46","type":"object","properties":{"denom_owners":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.bank.v1beta1.DenomOwner"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.bank.v1beta1.QueryDenomsMetadataResponse":{"description":"QueryDenomsMetadataResponse is the response type for the Query/DenomsMetadata RPC\nmethod.","type":"object","properties":{"metadatas":{"description":"metadata provides the client information for all the registered tokens.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.bank.v1beta1.Metadata"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.bank.v1beta1.QueryParamsResponse":{"description":"QueryParamsResponse defines the response type for querying x/bank parameters.","type":"object","properties":{"params":{"description":"params provides the parameters of the bank module.","$ref":"#/definitions/cosmos.bank.v1beta1.Params"}}},"cosmos.bank.v1beta1.QuerySendEnabledResponse":{"description":"QuerySendEnabledResponse defines the RPC response of a SendEnable query.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response. This field is only\npopulated if the denoms field in the request is empty.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"send_enabled":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.bank.v1beta1.SendEnabled"}}}},"cosmos.bank.v1beta1.QuerySpendableBalanceByDenomResponse":{"description":"QuerySpendableBalanceByDenomResponse defines the gRPC response structure for\nquerying an account's spendable balance for a specific denom.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"balance":{"description":"balance is the balance of the coin.","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"cosmos.bank.v1beta1.QuerySpendableBalancesResponse":{"description":"QuerySpendableBalancesResponse defines the gRPC response structure for querying\nan account's spendable balances.\n\nSince: cosmos-sdk 0.46","type":"object","properties":{"balances":{"description":"balances is the spendable balances of all the coins.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.bank.v1beta1.QuerySupplyOfResponse":{"description":"QuerySupplyOfResponse is the response type for the Query/SupplyOf RPC method.","type":"object","properties":{"amount":{"description":"amount is the supply of the coin.","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"cosmos.bank.v1beta1.QueryTotalSupplyResponse":{"type":"object","title":"QueryTotalSupplyResponse is the response type for the Query/TotalSupply RPC\nmethod","properties":{"pagination":{"description":"pagination defines the pagination in the response.\n\nSince: cosmos-sdk 0.43","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"supply":{"type":"array","title":"supply is the supply of the coins","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"cosmos.bank.v1beta1.SendEnabled":{"description":"SendEnabled maps coin denom to a send_enabled status (whether a denom is\nsendable).","type":"object","properties":{"denom":{"type":"string"},"enabled":{"type":"boolean"}}},"cosmos.base.abci.v1beta1.ABCIMessageLog":{"description":"ABCIMessageLog defines a structure containing an indexed tx ABCI message log.","type":"object","properties":{"events":{"description":"Events contains a slice of Event objects that were emitted during some\nexecution.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.abci.v1beta1.StringEvent"}},"log":{"type":"string"},"msg_index":{"type":"integer","format":"int64"}}},"cosmos.base.abci.v1beta1.Attribute":{"description":"Attribute defines an attribute wrapper where the key and value are\nstrings instead of raw bytes.","type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}}},"cosmos.base.abci.v1beta1.GasInfo":{"description":"GasInfo defines tx execution gas context.","type":"object","properties":{"gas_used":{"description":"GasUsed is the amount of gas actually consumed.","type":"string","format":"uint64"},"gas_wanted":{"description":"GasWanted is the maximum units of work we allow this tx to perform.","type":"string","format":"uint64"}}},"cosmos.base.abci.v1beta1.Result":{"description":"Result is the union of ResponseFormat and ResponseCheckTx.","type":"object","properties":{"data":{"description":"Data is any data returned from message or handler execution. It MUST be\nlength prefixed in order to separate data from multiple message executions.\nDeprecated. This field is still populated, but prefer msg_response instead\nbecause it also contains the Msg response typeURL.","type":"string","format":"byte"},"events":{"description":"Events contains a slice of Event objects that were emitted during message\nor handler execution.","type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.Event"}},"log":{"description":"Log contains the log information from message or handler execution.","type":"string"},"msg_responses":{"description":"msg_responses contains the Msg handler responses type packed in Anys.\n\nSince: cosmos-sdk 0.46","type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}}}},"cosmos.base.abci.v1beta1.StringEvent":{"description":"StringEvent defines en Event object wrapper where all the attributes\ncontain key/value pairs that are strings instead of raw bytes.","type":"object","properties":{"attributes":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.abci.v1beta1.Attribute"}},"type":{"type":"string"}}},"cosmos.base.abci.v1beta1.TxResponse":{"description":"TxResponse defines a structure containing relevant tx data and metadata. The\ntags are stringified and the log is JSON decoded.","type":"object","properties":{"code":{"description":"Response code.","type":"integer","format":"int64"},"codespace":{"type":"string","title":"Namespace for the Code"},"data":{"description":"Result bytes, if any.","type":"string"},"events":{"description":"Events defines all the events emitted by processing a transaction. Note,\nthese events include those emitted by processing all the messages and those\nemitted from the ante. Whereas Logs contains the events, with\nadditional metadata, emitted only by processing the messages.\n\nSince: cosmos-sdk 0.42.11, 0.44.5, 0.45","type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.Event"}},"gas_used":{"description":"Amount of gas consumed by transaction.","type":"string","format":"int64"},"gas_wanted":{"description":"Amount of gas requested for transaction.","type":"string","format":"int64"},"height":{"type":"string","format":"int64","title":"The block height"},"info":{"description":"Additional information. May be non-deterministic.","type":"string"},"logs":{"description":"The output of the application's logger (typed). May be non-deterministic.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.abci.v1beta1.ABCIMessageLog"}},"raw_log":{"description":"The output of the application's logger (raw string). May be\nnon-deterministic.","type":"string"},"timestamp":{"description":"Time of the previous block. For heights \u003e 1, it's the weighted median of\nthe timestamps of the valid votes in the block.LastCommit. For height == 1,\nit's genesis time.","type":"string"},"tx":{"description":"The request transaction bytes.","$ref":"#/definitions/google.protobuf.Any"},"txhash":{"description":"The transaction hash.","type":"string"}}},"cosmos.base.node.v1beta1.ConfigResponse":{"description":"ConfigResponse defines the response structure for the Config gRPC query.","type":"object","properties":{"halt_height":{"type":"string","format":"uint64"},"minimum_gas_price":{"type":"string"},"pruning_interval":{"type":"string"},"pruning_keep_recent":{"type":"string"}}},"cosmos.base.node.v1beta1.StatusResponse":{"description":"StateResponse defines the response structure for the status of a node.","type":"object","properties":{"app_hash":{"type":"string","format":"byte","title":"app hash of the current block"},"earliest_store_height":{"type":"string","format":"uint64","title":"earliest block height available in the store"},"height":{"type":"string","format":"uint64","title":"current block height"},"timestamp":{"type":"string","format":"date-time","title":"block height timestamp"},"validator_hash":{"type":"string","format":"byte","title":"validator hash provided by the consensus header"}}},"cosmos.base.query.v1beta1.PageRequest":{"description":"message SomeRequest {\n Foo some_parameter = 1;\n PageRequest pagination = 2;\n }","type":"object","title":"PageRequest is to be embedded in gRPC request messages for efficient\npagination. Ex:","properties":{"count_total":{"description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","type":"boolean"},"key":{"description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","type":"string","format":"byte"},"limit":{"description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","type":"string","format":"uint64"},"offset":{"description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","type":"string","format":"uint64"},"reverse":{"description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","type":"boolean"}}},"cosmos.base.query.v1beta1.PageResponse":{"description":"PageResponse is to be embedded in gRPC response messages where the\ncorresponding request message has used PageRequest.\n\n message SomeResponse {\n repeated Bar results = 1;\n PageResponse page = 2;\n }","type":"object","properties":{"next_key":{"description":"next_key is the key to be passed to PageRequest.key to\nquery the next page most efficiently. It will be empty if\nthere are no more results.","type":"string","format":"byte"},"total":{"type":"string","format":"uint64","title":"total is total number of results available if PageRequest.count_total\nwas set, its value is undefined otherwise"}}},"cosmos.base.reflection.v1beta1.ListAllInterfacesResponse":{"description":"ListAllInterfacesResponse is the response type of the ListAllInterfaces RPC.","type":"object","properties":{"interface_names":{"description":"interface_names is an array of all the registered interfaces.","type":"array","items":{"type":"string"}}}},"cosmos.base.reflection.v1beta1.ListImplementationsResponse":{"description":"ListImplementationsResponse is the response type of the ListImplementations\nRPC.","type":"object","properties":{"implementation_message_names":{"type":"array","items":{"type":"string"}}}},"cosmos.base.reflection.v2alpha1.AuthnDescriptor":{"type":"object","title":"AuthnDescriptor provides information on how to sign transactions without relying\non the online RPCs GetTxMetadata and CombineUnsignedTxAndSignatures","properties":{"sign_modes":{"type":"array","title":"sign_modes defines the supported signature algorithm","items":{"type":"object","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.SigningModeDescriptor"}}}},"cosmos.base.reflection.v2alpha1.ChainDescriptor":{"type":"object","title":"ChainDescriptor describes chain information of the application","properties":{"id":{"type":"string","title":"id is the chain id"}}},"cosmos.base.reflection.v2alpha1.CodecDescriptor":{"type":"object","title":"CodecDescriptor describes the registered interfaces and provides metadata information on the types","properties":{"interfaces":{"type":"array","title":"interfaces is a list of the registerted interfaces descriptors","items":{"type":"object","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.InterfaceDescriptor"}}}},"cosmos.base.reflection.v2alpha1.ConfigurationDescriptor":{"type":"object","title":"ConfigurationDescriptor contains metadata information on the sdk.Config","properties":{"bech32_account_address_prefix":{"type":"string","title":"bech32_account_address_prefix is the account address prefix"}}},"cosmos.base.reflection.v2alpha1.GetAuthnDescriptorResponse":{"type":"object","title":"GetAuthnDescriptorResponse is the response returned by the GetAuthnDescriptor RPC","properties":{"authn":{"title":"authn describes how to authenticate to the application when sending transactions","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.AuthnDescriptor"}}},"cosmos.base.reflection.v2alpha1.GetChainDescriptorResponse":{"type":"object","title":"GetChainDescriptorResponse is the response returned by the GetChainDescriptor RPC","properties":{"chain":{"title":"chain describes application chain information","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.ChainDescriptor"}}},"cosmos.base.reflection.v2alpha1.GetCodecDescriptorResponse":{"type":"object","title":"GetCodecDescriptorResponse is the response returned by the GetCodecDescriptor RPC","properties":{"codec":{"title":"codec describes the application codec such as registered interfaces and implementations","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.CodecDescriptor"}}},"cosmos.base.reflection.v2alpha1.GetConfigurationDescriptorResponse":{"type":"object","title":"GetConfigurationDescriptorResponse is the response returned by the GetConfigurationDescriptor RPC","properties":{"config":{"title":"config describes the application's sdk.Config","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.ConfigurationDescriptor"}}},"cosmos.base.reflection.v2alpha1.GetQueryServicesDescriptorResponse":{"type":"object","title":"GetQueryServicesDescriptorResponse is the response returned by the GetQueryServicesDescriptor RPC","properties":{"queries":{"title":"queries provides information on the available queryable services","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.QueryServicesDescriptor"}}},"cosmos.base.reflection.v2alpha1.GetTxDescriptorResponse":{"type":"object","title":"GetTxDescriptorResponse is the response returned by the GetTxDescriptor RPC","properties":{"tx":{"title":"tx provides information on msgs that can be forwarded to the application\nalongside the accepted transaction protobuf type","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.TxDescriptor"}}},"cosmos.base.reflection.v2alpha1.InterfaceAcceptingMessageDescriptor":{"type":"object","title":"InterfaceAcceptingMessageDescriptor describes a protobuf message which contains\nan interface represented as a google.protobuf.Any","properties":{"field_descriptor_names":{"type":"array","title":"field_descriptor_names is a list of the protobuf name (not fullname) of the field\nwhich contains the interface as google.protobuf.Any (the interface is the same, but\nit can be in multiple fields of the same proto message)","items":{"type":"string"}},"fullname":{"type":"string","title":"fullname is the protobuf fullname of the type containing the interface"}}},"cosmos.base.reflection.v2alpha1.InterfaceDescriptor":{"type":"object","title":"InterfaceDescriptor describes the implementation of an interface","properties":{"fullname":{"type":"string","title":"fullname is the name of the interface"},"interface_accepting_messages":{"type":"array","title":"interface_accepting_messages contains information regarding the proto messages which contain the interface as\ngoogle.protobuf.Any field","items":{"type":"object","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.InterfaceAcceptingMessageDescriptor"}},"interface_implementers":{"type":"array","title":"interface_implementers is a list of the descriptors of the interface implementers","items":{"type":"object","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.InterfaceImplementerDescriptor"}}}},"cosmos.base.reflection.v2alpha1.InterfaceImplementerDescriptor":{"type":"object","title":"InterfaceImplementerDescriptor describes an interface implementer","properties":{"fullname":{"type":"string","title":"fullname is the protobuf queryable name of the interface implementer"},"type_url":{"type":"string","title":"type_url defines the type URL used when marshalling the type as any\nthis is required so we can provide type safe google.protobuf.Any marshalling and\nunmarshalling, making sure that we don't accept just 'any' type\nin our interface fields"}}},"cosmos.base.reflection.v2alpha1.MsgDescriptor":{"type":"object","title":"MsgDescriptor describes a cosmos-sdk message that can be delivered with a transaction","properties":{"msg_type_url":{"description":"msg_type_url contains the TypeURL of a sdk.Msg.","type":"string"}}},"cosmos.base.reflection.v2alpha1.QueryMethodDescriptor":{"type":"object","title":"QueryMethodDescriptor describes a queryable method of a query service\nno other info is provided beside method name and tendermint queryable path\nbecause it would be redundant with the grpc reflection service","properties":{"full_query_path":{"type":"string","title":"full_query_path is the path that can be used to query\nthis method via tendermint abci.Query"},"name":{"type":"string","title":"name is the protobuf name (not fullname) of the method"}}},"cosmos.base.reflection.v2alpha1.QueryServiceDescriptor":{"type":"object","title":"QueryServiceDescriptor describes a cosmos-sdk queryable service","properties":{"fullname":{"type":"string","title":"fullname is the protobuf fullname of the service descriptor"},"is_module":{"type":"boolean","title":"is_module describes if this service is actually exposed by an application's module"},"methods":{"type":"array","title":"methods provides a list of query service methods","items":{"type":"object","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.QueryMethodDescriptor"}}}},"cosmos.base.reflection.v2alpha1.QueryServicesDescriptor":{"type":"object","title":"QueryServicesDescriptor contains the list of cosmos-sdk queriable services","properties":{"query_services":{"type":"array","title":"query_services is a list of cosmos-sdk QueryServiceDescriptor","items":{"type":"object","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.QueryServiceDescriptor"}}}},"cosmos.base.reflection.v2alpha1.SigningModeDescriptor":{"type":"object","title":"SigningModeDescriptor provides information on a signing flow of the application\nNOTE(fdymylja): here we could go as far as providing an entire flow on how\nto sign a message given a SigningModeDescriptor, but it's better to think about\nthis another time","properties":{"authn_info_provider_method_fullname":{"type":"string","title":"authn_info_provider_method_fullname defines the fullname of the method to call to get\nthe metadata required to authenticate using the provided sign_modes"},"name":{"type":"string","title":"name defines the unique name of the signing mode"},"number":{"type":"integer","format":"int32","title":"number is the unique int32 identifier for the sign_mode enum"}}},"cosmos.base.reflection.v2alpha1.TxDescriptor":{"type":"object","title":"TxDescriptor describes the accepted transaction type","properties":{"fullname":{"description":"fullname is the protobuf fullname of the raw transaction type (for instance the tx.Tx type)\nit is not meant to support polymorphism of transaction types, it is supposed to be used by\nreflection clients to understand if they can handle a specific transaction type in an application.","type":"string"},"msgs":{"type":"array","title":"msgs lists the accepted application messages (sdk.Msg)","items":{"type":"object","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.MsgDescriptor"}}}},"cosmos.base.tendermint.v1beta1.ABCIQueryResponse":{"description":"ABCIQueryResponse defines the response structure for the ABCIQuery gRPC query.\n\nNote: This type is a duplicate of the ResponseQuery proto type defined in\nTendermint.","type":"object","properties":{"code":{"type":"integer","format":"int64"},"codespace":{"type":"string"},"height":{"type":"string","format":"int64"},"index":{"type":"string","format":"int64"},"info":{"type":"string","title":"nondeterministic"},"key":{"type":"string","format":"byte"},"log":{"type":"string","title":"nondeterministic"},"proof_ops":{"$ref":"#/definitions/cosmos.base.tendermint.v1beta1.ProofOps"},"value":{"type":"string","format":"byte"}}},"cosmos.base.tendermint.v1beta1.Block":{"description":"Block is tendermint type Block, with the Header proposer address\nfield converted to bech32 string.","type":"object","properties":{"data":{"$ref":"#/definitions/tendermint.types.Data"},"evidence":{"$ref":"#/definitions/tendermint.types.EvidenceList"},"header":{"$ref":"#/definitions/cosmos.base.tendermint.v1beta1.Header"},"last_commit":{"$ref":"#/definitions/tendermint.types.Commit"}}},"cosmos.base.tendermint.v1beta1.GetBlockByHeightResponse":{"description":"GetBlockByHeightResponse is the response type for the Query/GetBlockByHeight RPC method.","type":"object","properties":{"block":{"title":"Deprecated: please use `sdk_block` instead","$ref":"#/definitions/tendermint.types.Block"},"block_id":{"$ref":"#/definitions/tendermint.types.BlockID"},"sdk_block":{"title":"Since: cosmos-sdk 0.47","$ref":"#/definitions/cosmos.base.tendermint.v1beta1.Block"}}},"cosmos.base.tendermint.v1beta1.GetLatestBlockResponse":{"description":"GetLatestBlockResponse is the response type for the Query/GetLatestBlock RPC method.","type":"object","properties":{"block":{"title":"Deprecated: please use `sdk_block` instead","$ref":"#/definitions/tendermint.types.Block"},"block_id":{"$ref":"#/definitions/tendermint.types.BlockID"},"sdk_block":{"title":"Since: cosmos-sdk 0.47","$ref":"#/definitions/cosmos.base.tendermint.v1beta1.Block"}}},"cosmos.base.tendermint.v1beta1.GetLatestValidatorSetResponse":{"description":"GetLatestValidatorSetResponse is the response type for the Query/GetValidatorSetByHeight RPC method.","type":"object","properties":{"block_height":{"type":"string","format":"int64"},"pagination":{"description":"pagination defines an pagination for the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"validators":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.tendermint.v1beta1.Validator"}}}},"cosmos.base.tendermint.v1beta1.GetNodeInfoResponse":{"description":"GetNodeInfoResponse is the response type for the Query/GetNodeInfo RPC method.","type":"object","properties":{"application_version":{"$ref":"#/definitions/cosmos.base.tendermint.v1beta1.VersionInfo"},"default_node_info":{"$ref":"#/definitions/tendermint.p2p.DefaultNodeInfo"}}},"cosmos.base.tendermint.v1beta1.GetSyncingResponse":{"description":"GetSyncingResponse is the response type for the Query/GetSyncing RPC method.","type":"object","properties":{"syncing":{"type":"boolean"}}},"cosmos.base.tendermint.v1beta1.GetValidatorSetByHeightResponse":{"description":"GetValidatorSetByHeightResponse is the response type for the Query/GetValidatorSetByHeight RPC method.","type":"object","properties":{"block_height":{"type":"string","format":"int64"},"pagination":{"description":"pagination defines an pagination for the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"validators":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.tendermint.v1beta1.Validator"}}}},"cosmos.base.tendermint.v1beta1.Header":{"description":"Header defines the structure of a Tendermint block header.","type":"object","properties":{"app_hash":{"type":"string","format":"byte","title":"state after txs from the previous block"},"chain_id":{"type":"string"},"consensus_hash":{"type":"string","format":"byte","title":"consensus params for current block"},"data_hash":{"type":"string","format":"byte","title":"transactions"},"evidence_hash":{"description":"evidence included in the block","type":"string","format":"byte","title":"consensus info"},"height":{"type":"string","format":"int64"},"last_block_id":{"title":"prev block info","$ref":"#/definitions/tendermint.types.BlockID"},"last_commit_hash":{"description":"commit from validators from the last block","type":"string","format":"byte","title":"hashes of block data"},"last_results_hash":{"type":"string","format":"byte","title":"root hash of all results from the txs from the previous block"},"next_validators_hash":{"type":"string","format":"byte","title":"validators for the next block"},"proposer_address":{"description":"proposer_address is the original block proposer address, formatted as a Bech32 string.\nIn Tendermint, this type is `bytes`, but in the SDK, we convert it to a Bech32 string\nfor better UX.\n\noriginal proposer of the block","type":"string"},"time":{"type":"string","format":"date-time"},"validators_hash":{"description":"validators for the current block","type":"string","format":"byte","title":"hashes from the app output from the prev block"},"version":{"title":"basic block info","$ref":"#/definitions/tendermint.version.Consensus"}}},"cosmos.base.tendermint.v1beta1.Module":{"type":"object","title":"Module is the type for VersionInfo","properties":{"path":{"type":"string","title":"module path"},"sum":{"type":"string","title":"checksum"},"version":{"type":"string","title":"module version"}}},"cosmos.base.tendermint.v1beta1.ProofOp":{"description":"ProofOp defines an operation used for calculating Merkle root. The data could\nbe arbitrary format, providing necessary data for example neighbouring node\nhash.\n\nNote: This type is a duplicate of the ProofOp proto type defined in Tendermint.","type":"object","properties":{"data":{"type":"string","format":"byte"},"key":{"type":"string","format":"byte"},"type":{"type":"string"}}},"cosmos.base.tendermint.v1beta1.ProofOps":{"description":"ProofOps is Merkle proof defined by the list of ProofOps.\n\nNote: This type is a duplicate of the ProofOps proto type defined in Tendermint.","type":"object","properties":{"ops":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.tendermint.v1beta1.ProofOp"}}}},"cosmos.base.tendermint.v1beta1.Validator":{"description":"Validator is the type for the validator-set.","type":"object","properties":{"address":{"type":"string"},"proposer_priority":{"type":"string","format":"int64"},"pub_key":{"$ref":"#/definitions/google.protobuf.Any"},"voting_power":{"type":"string","format":"int64"}}},"cosmos.base.tendermint.v1beta1.VersionInfo":{"description":"VersionInfo is the type for the GetNodeInfoResponse message.","type":"object","properties":{"app_name":{"type":"string"},"build_deps":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.tendermint.v1beta1.Module"}},"build_tags":{"type":"string"},"cosmos_sdk_version":{"type":"string","title":"Since: cosmos-sdk 0.43"},"git_commit":{"type":"string"},"go_version":{"type":"string"},"name":{"type":"string"},"version":{"type":"string"}}},"cosmos.base.v1beta1.Coin":{"description":"Coin defines a token with a denomination and an amount.\n\nNOTE: The amount field is an Int which implements the custom method\nsignatures required by gogoproto.","type":"object","properties":{"amount":{"type":"string"},"denom":{"type":"string"}}},"cosmos.base.v1beta1.DecCoin":{"description":"DecCoin defines a token with a denomination and a decimal amount.\n\nNOTE: The amount field is an Dec which implements the custom method\nsignatures required by gogoproto.","type":"object","properties":{"amount":{"type":"string"},"denom":{"type":"string"}}},"cosmos.circuit.v1.AccountResponse":{"description":"AccountResponse is the response type for the Query/Account RPC method.","type":"object","properties":{"permission":{"$ref":"#/definitions/cosmos.circuit.v1.Permissions"}}},"cosmos.circuit.v1.AccountsResponse":{"description":"AccountsResponse is the response type for the Query/Accounts RPC method.","type":"object","properties":{"accounts":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.circuit.v1.GenesisAccountPermissions"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.circuit.v1.DisabledListResponse":{"description":"DisabledListResponse is the response type for the Query/DisabledList RPC method.","type":"object","properties":{"disabled_list":{"type":"array","items":{"type":"string"}}}},"cosmos.circuit.v1.GenesisAccountPermissions":{"type":"object","title":"GenesisAccountPermissions is the account permissions for the circuit breaker in genesis","properties":{"address":{"type":"string"},"permissions":{"$ref":"#/definitions/cosmos.circuit.v1.Permissions"}}},"cosmos.circuit.v1.MsgAuthorizeCircuitBreaker":{"description":"MsgAuthorizeCircuitBreaker defines the Msg/AuthorizeCircuitBreaker request type.","type":"object","properties":{"grantee":{"description":"grantee is the account authorized with the provided permissions.","type":"string"},"granter":{"description":"granter is the granter of the circuit breaker permissions and must have\nLEVEL_SUPER_ADMIN.","type":"string"},"permissions":{"description":"permissions are the circuit breaker permissions that the grantee receives.\nThese will overwrite any existing permissions. LEVEL_NONE_UNSPECIFIED can\nbe specified to revoke all permissions.","$ref":"#/definitions/cosmos.circuit.v1.Permissions"}}},"cosmos.circuit.v1.MsgAuthorizeCircuitBreakerResponse":{"description":"MsgAuthorizeCircuitBreakerResponse defines the Msg/AuthorizeCircuitBreaker response type.","type":"object","properties":{"success":{"type":"boolean"}}},"cosmos.circuit.v1.MsgResetCircuitBreaker":{"description":"MsgResetCircuitBreaker defines the Msg/ResetCircuitBreaker request type.","type":"object","properties":{"authority":{"description":"authority is the account authorized to trip or reset the circuit breaker.","type":"string"},"msg_type_urls":{"description":"msg_type_urls specifies a list of Msg type URLs to resume processing. If\nit is left empty all Msg processing for type URLs that the account is\nauthorized to trip will resume.","type":"array","items":{"type":"string"}}}},"cosmos.circuit.v1.MsgResetCircuitBreakerResponse":{"description":"MsgResetCircuitBreakerResponse defines the Msg/ResetCircuitBreaker response type.","type":"object","properties":{"success":{"type":"boolean"}}},"cosmos.circuit.v1.MsgTripCircuitBreaker":{"description":"MsgTripCircuitBreaker defines the Msg/TripCircuitBreaker request type.","type":"object","properties":{"authority":{"description":"authority is the account authorized to trip the circuit breaker.","type":"string"},"msg_type_urls":{"description":"msg_type_urls specifies a list of type URLs to immediately stop processing.\nIF IT IS LEFT EMPTY, ALL MSG PROCESSING WILL STOP IMMEDIATELY.\nThis value is validated against the authority's permissions and if the\nauthority does not have permissions to trip the specified msg type URLs\n(or all URLs), the operation will fail.","type":"array","items":{"type":"string"}}}},"cosmos.circuit.v1.MsgTripCircuitBreakerResponse":{"description":"MsgTripCircuitBreakerResponse defines the Msg/TripCircuitBreaker response type.","type":"object","properties":{"success":{"type":"boolean"}}},"cosmos.circuit.v1.Permissions":{"description":"Permissions are the permissions that an account has to trip\nor reset the circuit breaker.","type":"object","properties":{"level":{"description":"level is the level of permissions granted to this account.","$ref":"#/definitions/cosmos.circuit.v1.Permissions.Level"},"limit_type_urls":{"description":"limit_type_urls is used with LEVEL_SOME_MSGS to limit the lists of Msg type\nURLs that the account can trip. It is an error to use limit_type_urls with\na level other than LEVEL_SOME_MSGS.","type":"array","items":{"type":"string"}}}},"cosmos.circuit.v1.Permissions.Level":{"description":"Level is the permission level.\n\n - LEVEL_NONE_UNSPECIFIED: LEVEL_NONE_UNSPECIFIED indicates that the account will have no circuit\nbreaker permissions.\n - LEVEL_SOME_MSGS: LEVEL_SOME_MSGS indicates that the account will have permission to\ntrip or reset the circuit breaker for some Msg type URLs. If this level\nis chosen, a non-empty list of Msg type URLs must be provided in\nlimit_type_urls.\n - LEVEL_ALL_MSGS: LEVEL_ALL_MSGS indicates that the account can trip or reset the circuit\nbreaker for Msg's of all type URLs.\n - LEVEL_SUPER_ADMIN: LEVEL_SUPER_ADMIN indicates that the account can take all circuit breaker\nactions and can grant permissions to other accounts.","type":"string","default":"LEVEL_NONE_UNSPECIFIED","enum":["LEVEL_NONE_UNSPECIFIED","LEVEL_SOME_MSGS","LEVEL_ALL_MSGS","LEVEL_SUPER_ADMIN"]},"cosmos.consensus.v1.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","type":"object","properties":{"abci":{"title":"Since: cosmos-sdk 0.50","$ref":"#/definitions/tendermint.types.ABCIParams"},"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"block":{"description":"params defines the x/consensus parameters to update.\nVersionsParams is not included in this Msg because it is tracked\nsepararately in x/upgrade.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/tendermint.types.BlockParams"},"evidence":{"$ref":"#/definitions/tendermint.types.EvidenceParams"},"validator":{"$ref":"#/definitions/tendermint.types.ValidatorParams"}}},"cosmos.consensus.v1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"cosmos.consensus.v1.QueryParamsResponse":{"description":"QueryParamsResponse defines the response type for querying x/consensus parameters.","type":"object","properties":{"params":{"description":"params are the tendermint consensus params stored in the consensus module.\nPlease note that `params.version` is not populated in this response, it is\ntracked separately in the x/upgrade module.","$ref":"#/definitions/tendermint.types.ConsensusParams"}}},"cosmos.crisis.v1beta1.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"constant_fee":{"description":"constant_fee defines the x/crisis parameter.","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"cosmos.crisis.v1beta1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.\n\nSince: cosmos-sdk 0.47","type":"object"},"cosmos.crisis.v1beta1.MsgVerifyInvariant":{"description":"MsgVerifyInvariant represents a message to verify a particular invariance.","type":"object","properties":{"invariant_module_name":{"description":"name of the invariant module.","type":"string"},"invariant_route":{"description":"invariant_route is the msg's invariant route.","type":"string"},"sender":{"description":"sender is the account address of private key to send coins to fee collector account.","type":"string"}}},"cosmos.crisis.v1beta1.MsgVerifyInvariantResponse":{"description":"MsgVerifyInvariantResponse defines the Msg/VerifyInvariant response type.","type":"object"},"cosmos.crypto.multisig.v1beta1.CompactBitArray":{"description":"CompactBitArray is an implementation of a space efficient bit array.\nThis is used to ensure that the encoded data takes up a minimal amount of\nspace after proto encoding.\nThis is not thread safe, and is not intended for concurrent usage.","type":"object","properties":{"elems":{"type":"string","format":"byte"},"extra_bits_stored":{"type":"integer","format":"int64"}}},"cosmos.distribution.v1beta1.DelegationDelegatorReward":{"description":"DelegationDelegatorReward represents the properties\nof a delegator's delegation reward.","type":"object","properties":{"reward":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.DecCoin"}},"validator_address":{"type":"string"}}},"cosmos.distribution.v1beta1.MsgCommunityPoolSpend":{"description":"MsgCommunityPoolSpend defines a message for sending tokens from the community\npool to another account. This message is typically executed via a governance\nproposal with the governance module being the executing authority.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"amount":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"recipient":{"type":"string"}}},"cosmos.distribution.v1beta1.MsgCommunityPoolSpendResponse":{"description":"MsgCommunityPoolSpendResponse defines the response to executing a\nMsgCommunityPoolSpend message.\n\nSince: cosmos-sdk 0.47","type":"object"},"cosmos.distribution.v1beta1.MsgDepositValidatorRewardsPool":{"description":"DepositValidatorRewardsPool defines the request structure to provide\nadditional rewards to delegators from a specific validator.\n\nSince: cosmos-sdk 0.50","type":"object","properties":{"amount":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"depositor":{"type":"string"},"validator_address":{"type":"string"}}},"cosmos.distribution.v1beta1.MsgDepositValidatorRewardsPoolResponse":{"description":"MsgDepositValidatorRewardsPoolResponse defines the response to executing a\nMsgDepositValidatorRewardsPool message.\n\nSince: cosmos-sdk 0.50","type":"object"},"cosmos.distribution.v1beta1.MsgFundCommunityPool":{"description":"MsgFundCommunityPool allows an account to directly\nfund the community pool.","type":"object","properties":{"amount":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"depositor":{"type":"string"}}},"cosmos.distribution.v1beta1.MsgFundCommunityPoolResponse":{"description":"MsgFundCommunityPoolResponse defines the Msg/FundCommunityPool response type.","type":"object"},"cosmos.distribution.v1beta1.MsgSetWithdrawAddress":{"description":"MsgSetWithdrawAddress sets the withdraw address for\na delegator (or validator self-delegation).","type":"object","properties":{"delegator_address":{"type":"string"},"withdraw_address":{"type":"string"}}},"cosmos.distribution.v1beta1.MsgSetWithdrawAddressResponse":{"description":"MsgSetWithdrawAddressResponse defines the Msg/SetWithdrawAddress response\ntype.","type":"object"},"cosmos.distribution.v1beta1.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the x/distribution parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/cosmos.distribution.v1beta1.Params"}}},"cosmos.distribution.v1beta1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.\n\nSince: cosmos-sdk 0.47","type":"object"},"cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward":{"description":"MsgWithdrawDelegatorReward represents delegation withdrawal to a delegator\nfrom a single validator.","type":"object","properties":{"delegator_address":{"type":"string"},"validator_address":{"type":"string"}}},"cosmos.distribution.v1beta1.MsgWithdrawDelegatorRewardResponse":{"description":"MsgWithdrawDelegatorRewardResponse defines the Msg/WithdrawDelegatorReward\nresponse type.","type":"object","properties":{"amount":{"type":"array","title":"Since: cosmos-sdk 0.46","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"cosmos.distribution.v1beta1.MsgWithdrawValidatorCommission":{"description":"MsgWithdrawValidatorCommission withdraws the full commission to the validator\naddress.","type":"object","properties":{"validator_address":{"type":"string"}}},"cosmos.distribution.v1beta1.MsgWithdrawValidatorCommissionResponse":{"description":"MsgWithdrawValidatorCommissionResponse defines the\nMsg/WithdrawValidatorCommission response type.","type":"object","properties":{"amount":{"type":"array","title":"Since: cosmos-sdk 0.46","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"cosmos.distribution.v1beta1.Params":{"description":"Params defines the set of params for the distribution module.","type":"object","properties":{"base_proposer_reward":{"description":"Deprecated: The base_proposer_reward field is deprecated and is no longer used\nin the x/distribution module's reward mechanism.","type":"string"},"bonus_proposer_reward":{"description":"Deprecated: The bonus_proposer_reward field is deprecated and is no longer used\nin the x/distribution module's reward mechanism.","type":"string"},"community_tax":{"type":"string"},"withdraw_addr_enabled":{"type":"boolean"}}},"cosmos.distribution.v1beta1.QueryCommunityPoolResponse":{"description":"QueryCommunityPoolResponse is the response type for the Query/CommunityPool\nRPC method.","type":"object","properties":{"pool":{"description":"pool defines community pool's coins.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.DecCoin"}}}},"cosmos.distribution.v1beta1.QueryDelegationRewardsResponse":{"description":"QueryDelegationRewardsResponse is the response type for the\nQuery/DelegationRewards RPC method.","type":"object","properties":{"rewards":{"description":"rewards defines the rewards accrued by a delegation.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.DecCoin"}}}},"cosmos.distribution.v1beta1.QueryDelegationTotalRewardsResponse":{"description":"QueryDelegationTotalRewardsResponse is the response type for the\nQuery/DelegationTotalRewards RPC method.","type":"object","properties":{"rewards":{"description":"rewards defines all the rewards accrued by a delegator.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.distribution.v1beta1.DelegationDelegatorReward"}},"total":{"description":"total defines the sum of all the rewards.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.DecCoin"}}}},"cosmos.distribution.v1beta1.QueryDelegatorValidatorsResponse":{"description":"QueryDelegatorValidatorsResponse is the response type for the\nQuery/DelegatorValidators RPC method.","type":"object","properties":{"validators":{"description":"validators defines the validators a delegator is delegating for.","type":"array","items":{"type":"string"}}}},"cosmos.distribution.v1beta1.QueryDelegatorWithdrawAddressResponse":{"description":"QueryDelegatorWithdrawAddressResponse is the response type for the\nQuery/DelegatorWithdrawAddress RPC method.","type":"object","properties":{"withdraw_address":{"description":"withdraw_address defines the delegator address to query for.","type":"string"}}},"cosmos.distribution.v1beta1.QueryParamsResponse":{"description":"QueryParamsResponse is the response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params defines the parameters of the module.","$ref":"#/definitions/cosmos.distribution.v1beta1.Params"}}},"cosmos.distribution.v1beta1.QueryValidatorCommissionResponse":{"type":"object","title":"QueryValidatorCommissionResponse is the response type for the\nQuery/ValidatorCommission RPC method","properties":{"commission":{"description":"commission defines the commission the validator received.","$ref":"#/definitions/cosmos.distribution.v1beta1.ValidatorAccumulatedCommission"}}},"cosmos.distribution.v1beta1.QueryValidatorDistributionInfoResponse":{"description":"QueryValidatorDistributionInfoResponse is the response type for the Query/ValidatorDistributionInfo RPC method.","type":"object","properties":{"commission":{"description":"commission defines the commission the validator received.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.DecCoin"}},"operator_address":{"description":"operator_address defines the validator operator address.","type":"string"},"self_bond_rewards":{"description":"self_bond_rewards defines the self delegations rewards.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.DecCoin"}}}},"cosmos.distribution.v1beta1.QueryValidatorOutstandingRewardsResponse":{"description":"QueryValidatorOutstandingRewardsResponse is the response type for the\nQuery/ValidatorOutstandingRewards RPC method.","type":"object","properties":{"rewards":{"$ref":"#/definitions/cosmos.distribution.v1beta1.ValidatorOutstandingRewards"}}},"cosmos.distribution.v1beta1.QueryValidatorSlashesResponse":{"description":"QueryValidatorSlashesResponse is the response type for the\nQuery/ValidatorSlashes RPC method.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"slashes":{"description":"slashes defines the slashes the validator received.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.distribution.v1beta1.ValidatorSlashEvent"}}}},"cosmos.distribution.v1beta1.ValidatorAccumulatedCommission":{"description":"ValidatorAccumulatedCommission represents accumulated commission\nfor a validator kept as a running counter, can be withdrawn at any time.","type":"object","properties":{"commission":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.DecCoin"}}}},"cosmos.distribution.v1beta1.ValidatorOutstandingRewards":{"description":"ValidatorOutstandingRewards represents outstanding (un-withdrawn) rewards\nfor a validator inexpensive to track, allows simple sanity checks.","type":"object","properties":{"rewards":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.DecCoin"}}}},"cosmos.distribution.v1beta1.ValidatorSlashEvent":{"description":"ValidatorSlashEvent represents a validator slash event.\nHeight is implicit within the store key.\nThis is needed to calculate appropriate amount of staking tokens\nfor delegations which are withdrawn after a slash has occurred.","type":"object","properties":{"fraction":{"type":"string"},"validator_period":{"type":"string","format":"uint64"}}},"cosmos.evidence.v1beta1.MsgSubmitEvidence":{"description":"MsgSubmitEvidence represents a message that supports submitting arbitrary\nEvidence of misbehavior such as equivocation or counterfactual signing.","type":"object","properties":{"evidence":{"description":"evidence defines the evidence of misbehavior.","$ref":"#/definitions/google.protobuf.Any"},"submitter":{"description":"submitter is the signer account address of evidence.","type":"string"}}},"cosmos.evidence.v1beta1.MsgSubmitEvidenceResponse":{"description":"MsgSubmitEvidenceResponse defines the Msg/SubmitEvidence response type.","type":"object","properties":{"hash":{"description":"hash defines the hash of the evidence.","type":"string","format":"byte"}}},"cosmos.evidence.v1beta1.QueryAllEvidenceResponse":{"description":"QueryAllEvidenceResponse is the response type for the Query/AllEvidence RPC\nmethod.","type":"object","properties":{"evidence":{"description":"evidence returns all evidences.","type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.evidence.v1beta1.QueryEvidenceResponse":{"description":"QueryEvidenceResponse is the response type for the Query/Evidence RPC method.","type":"object","properties":{"evidence":{"description":"evidence returns the requested evidence.","$ref":"#/definitions/google.protobuf.Any"}}},"cosmos.feegrant.v1beta1.Grant":{"type":"object","title":"Grant is stored in the KVStore to record a grant with full context","properties":{"allowance":{"description":"allowance can be any of basic, periodic, allowed fee allowance.","$ref":"#/definitions/google.protobuf.Any"},"grantee":{"description":"grantee is the address of the user being granted an allowance of another user's funds.","type":"string"},"granter":{"description":"granter is the address of the user granting an allowance of their funds.","type":"string"}}},"cosmos.feegrant.v1beta1.MsgGrantAllowance":{"description":"MsgGrantAllowance adds permission for Grantee to spend up to Allowance\nof fees from the account of Granter.","type":"object","properties":{"allowance":{"description":"allowance can be any of basic, periodic, allowed fee allowance.","$ref":"#/definitions/google.protobuf.Any"},"grantee":{"description":"grantee is the address of the user being granted an allowance of another user's funds.","type":"string"},"granter":{"description":"granter is the address of the user granting an allowance of their funds.","type":"string"}}},"cosmos.feegrant.v1beta1.MsgGrantAllowanceResponse":{"description":"MsgGrantAllowanceResponse defines the Msg/GrantAllowanceResponse response type.","type":"object"},"cosmos.feegrant.v1beta1.MsgPruneAllowances":{"description":"MsgPruneAllowances prunes expired fee allowances.\n\nSince cosmos-sdk 0.50","type":"object","properties":{"pruner":{"description":"pruner is the address of the user pruning expired allowances.","type":"string"}}},"cosmos.feegrant.v1beta1.MsgPruneAllowancesResponse":{"description":"MsgPruneAllowancesResponse defines the Msg/PruneAllowancesResponse response type.\n\nSince cosmos-sdk 0.50","type":"object"},"cosmos.feegrant.v1beta1.MsgRevokeAllowance":{"description":"MsgRevokeAllowance removes any existing Allowance from Granter to Grantee.","type":"object","properties":{"grantee":{"description":"grantee is the address of the user being granted an allowance of another user's funds.","type":"string"},"granter":{"description":"granter is the address of the user granting an allowance of their funds.","type":"string"}}},"cosmos.feegrant.v1beta1.MsgRevokeAllowanceResponse":{"description":"MsgRevokeAllowanceResponse defines the Msg/RevokeAllowanceResponse response type.","type":"object"},"cosmos.feegrant.v1beta1.QueryAllowanceResponse":{"description":"QueryAllowanceResponse is the response type for the Query/Allowance RPC method.","type":"object","properties":{"allowance":{"description":"allowance is a allowance granted for grantee by granter.","$ref":"#/definitions/cosmos.feegrant.v1beta1.Grant"}}},"cosmos.feegrant.v1beta1.QueryAllowancesByGranterResponse":{"description":"QueryAllowancesByGranterResponse is the response type for the Query/AllowancesByGranter RPC method.\n\nSince: cosmos-sdk 0.46","type":"object","properties":{"allowances":{"description":"allowances that have been issued by the granter.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.feegrant.v1beta1.Grant"}},"pagination":{"description":"pagination defines an pagination for the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.feegrant.v1beta1.QueryAllowancesResponse":{"description":"QueryAllowancesResponse is the response type for the Query/Allowances RPC method.","type":"object","properties":{"allowances":{"description":"allowances are allowance's granted for grantee by granter.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.feegrant.v1beta1.Grant"}},"pagination":{"description":"pagination defines an pagination for the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.gov.v1.Deposit":{"description":"Deposit defines an amount deposited by an account address to an active\nproposal.","type":"object","properties":{"amount":{"description":"amount to be deposited by depositor.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"depositor":{"description":"depositor defines the deposit addresses from the proposals.","type":"string"},"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"}}},"cosmos.gov.v1.DepositParams":{"description":"DepositParams defines the params for deposits on governance proposals.","type":"object","properties":{"max_deposit_period":{"description":"Maximum period for Atom holders to deposit on a proposal. Initial value: 2\nmonths.","type":"string"},"min_deposit":{"description":"Minimum deposit for a proposal to enter voting period.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"cosmos.gov.v1.MsgCancelProposal":{"description":"MsgCancelProposal is the Msg/CancelProposal request type.\n\nSince: cosmos-sdk 0.50","type":"object","properties":{"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"},"proposer":{"description":"proposer is the account address of the proposer.","type":"string"}}},"cosmos.gov.v1.MsgCancelProposalResponse":{"description":"MsgCancelProposalResponse defines the response structure for executing a\nMsgCancelProposal message.\n\nSince: cosmos-sdk 0.50","type":"object","properties":{"canceled_height":{"description":"canceled_height defines the block height at which the proposal is canceled.","type":"string","format":"uint64"},"canceled_time":{"description":"canceled_time is the time when proposal is canceled.","type":"string","format":"date-time"},"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"}}},"cosmos.gov.v1.MsgDeposit":{"description":"MsgDeposit defines a message to submit a deposit to an existing proposal.","type":"object","properties":{"amount":{"description":"amount to be deposited by depositor.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"depositor":{"description":"depositor defines the deposit addresses from the proposals.","type":"string"},"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"}}},"cosmos.gov.v1.MsgDepositResponse":{"description":"MsgDepositResponse defines the Msg/Deposit response type.","type":"object"},"cosmos.gov.v1.MsgExecLegacyContent":{"description":"MsgExecLegacyContent is used to wrap the legacy content field into a message.\nThis ensures backwards compatibility with v1beta1.MsgSubmitProposal.","type":"object","properties":{"authority":{"description":"authority must be the gov module address.","type":"string"},"content":{"description":"content is the proposal's content.","$ref":"#/definitions/google.protobuf.Any"}}},"cosmos.gov.v1.MsgExecLegacyContentResponse":{"description":"MsgExecLegacyContentResponse defines the Msg/ExecLegacyContent response type.","type":"object"},"cosmos.gov.v1.MsgSubmitProposal":{"description":"MsgSubmitProposal defines an sdk.Msg type that supports submitting arbitrary\nproposal Content.","type":"object","properties":{"expedited":{"description":"Since: cosmos-sdk 0.50","type":"boolean","title":"expedited defines if the proposal is expedited or not"},"initial_deposit":{"description":"initial_deposit is the deposit value that must be paid at proposal submission.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"messages":{"description":"messages are the arbitrary messages to be executed if proposal passes.","type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}},"metadata":{"description":"metadata is any arbitrary metadata attached to the proposal.","type":"string"},"proposer":{"description":"proposer is the account address of the proposer.","type":"string"},"summary":{"description":"Since: cosmos-sdk 0.47","type":"string","title":"summary is the summary of the proposal"},"title":{"description":"title is the title of the proposal.\n\nSince: cosmos-sdk 0.47","type":"string"}}},"cosmos.gov.v1.MsgSubmitProposalResponse":{"description":"MsgSubmitProposalResponse defines the Msg/SubmitProposal response type.","type":"object","properties":{"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"}}},"cosmos.gov.v1.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the x/gov parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/cosmos.gov.v1.Params"}}},"cosmos.gov.v1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.\n\nSince: cosmos-sdk 0.47","type":"object"},"cosmos.gov.v1.MsgVote":{"description":"MsgVote defines a message to cast a vote.","type":"object","properties":{"metadata":{"description":"metadata is any arbitrary metadata attached to the Vote.","type":"string"},"option":{"description":"option defines the vote option.","$ref":"#/definitions/cosmos.gov.v1.VoteOption"},"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"},"voter":{"description":"voter is the voter address for the proposal.","type":"string"}}},"cosmos.gov.v1.MsgVoteResponse":{"description":"MsgVoteResponse defines the Msg/Vote response type.","type":"object"},"cosmos.gov.v1.MsgVoteWeighted":{"description":"MsgVoteWeighted defines a message to cast a vote.","type":"object","properties":{"metadata":{"description":"metadata is any arbitrary metadata attached to the VoteWeighted.","type":"string"},"options":{"description":"options defines the weighted vote options.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.gov.v1.WeightedVoteOption"}},"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"},"voter":{"description":"voter is the voter address for the proposal.","type":"string"}}},"cosmos.gov.v1.MsgVoteWeightedResponse":{"description":"MsgVoteWeightedResponse defines the Msg/VoteWeighted response type.","type":"object"},"cosmos.gov.v1.Params":{"description":"Params defines the parameters for the x/gov module.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"burn_proposal_deposit_prevote":{"type":"boolean","title":"burn deposits if the proposal does not enter voting period"},"burn_vote_quorum":{"type":"boolean","title":"burn deposits if a proposal does not meet quorum"},"burn_vote_veto":{"type":"boolean","title":"burn deposits if quorum with vote type no_veto is met"},"expedited_min_deposit":{"description":"Minimum expedited deposit for a proposal to enter voting period.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"expedited_threshold":{"description":"Minimum proportion of Yes votes for proposal to pass. Default value: 0.67.\n\nSince: cosmos-sdk 0.50","type":"string"},"expedited_voting_period":{"description":"Duration of the voting period of an expedited proposal.\n\nSince: cosmos-sdk 0.50","type":"string"},"max_deposit_period":{"description":"Maximum period for Atom holders to deposit on a proposal. Initial value: 2\nmonths.","type":"string"},"min_deposit":{"description":"Minimum deposit for a proposal to enter voting period.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"min_deposit_ratio":{"description":"The ratio representing the proportion of the deposit value minimum that must be met when making a deposit.\nDefault value: 0.01. Meaning that for a chain with a min_deposit of 100stake, a deposit of 1stake would be\nrequired.\n\nSince: cosmos-sdk 0.50","type":"string"},"min_initial_deposit_ratio":{"description":"The ratio representing the proportion of the deposit value that must be paid at proposal submission.","type":"string"},"proposal_cancel_dest":{"description":"The address which will receive (proposal_cancel_ratio * deposit) proposal deposits.\nIf empty, the (proposal_cancel_ratio * deposit) proposal deposits will be burned.\n\nSince: cosmos-sdk 0.50","type":"string"},"proposal_cancel_ratio":{"description":"The cancel ratio which will not be returned back to the depositors when a proposal is cancelled.\n\nSince: cosmos-sdk 0.50","type":"string"},"quorum":{"description":"Minimum percentage of total stake needed to vote for a result to be\n considered valid.","type":"string"},"threshold":{"description":"Minimum proportion of Yes votes for proposal to pass. Default value: 0.5.","type":"string"},"veto_threshold":{"description":"Minimum value of Veto votes to Total votes ratio for proposal to be\n vetoed. Default value: 1/3.","type":"string"},"voting_period":{"description":"Duration of the voting period.","type":"string"}}},"cosmos.gov.v1.Proposal":{"description":"Proposal defines the core field members of a governance proposal.","type":"object","properties":{"deposit_end_time":{"description":"deposit_end_time is the end time for deposition.","type":"string","format":"date-time"},"expedited":{"description":"Since: cosmos-sdk 0.50","type":"boolean","title":"expedited defines if the proposal is expedited"},"failed_reason":{"description":"Since: cosmos-sdk 0.50","type":"string","title":"failed_reason defines the reason why the proposal failed"},"final_tally_result":{"description":"final_tally_result is the final tally result of the proposal. When\nquerying a proposal via gRPC, this field is not populated until the\nproposal's voting period has ended.","$ref":"#/definitions/cosmos.gov.v1.TallyResult"},"id":{"description":"id defines the unique id of the proposal.","type":"string","format":"uint64"},"messages":{"description":"messages are the arbitrary messages to be executed if the proposal passes.","type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}},"metadata":{"type":"string","title":"metadata is any arbitrary metadata attached to the proposal.\nthe recommended format of the metadata is to be found here:\nhttps://docs.cosmos.network/v0.47/modules/gov#proposal-3"},"proposer":{"description":"Since: cosmos-sdk 0.47","type":"string","title":"proposer is the address of the proposal sumbitter"},"status":{"description":"status defines the proposal status.","$ref":"#/definitions/cosmos.gov.v1.ProposalStatus"},"submit_time":{"description":"submit_time is the time of proposal submission.","type":"string","format":"date-time"},"summary":{"description":"Since: cosmos-sdk 0.47","type":"string","title":"summary is a short summary of the proposal"},"title":{"description":"Since: cosmos-sdk 0.47","type":"string","title":"title is the title of the proposal"},"total_deposit":{"description":"total_deposit is the total deposit on the proposal.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"voting_end_time":{"description":"voting_end_time is the end time of voting on a proposal.","type":"string","format":"date-time"},"voting_start_time":{"description":"voting_start_time is the starting time to vote on a proposal.","type":"string","format":"date-time"}}},"cosmos.gov.v1.ProposalStatus":{"description":"ProposalStatus enumerates the valid statuses of a proposal.\n\n - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status.\n - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit\nperiod.\n - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting\nperiod.\n - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has\npassed.\n - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has\nbeen rejected.\n - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has\nfailed.","type":"string","default":"PROPOSAL_STATUS_UNSPECIFIED","enum":["PROPOSAL_STATUS_UNSPECIFIED","PROPOSAL_STATUS_DEPOSIT_PERIOD","PROPOSAL_STATUS_VOTING_PERIOD","PROPOSAL_STATUS_PASSED","PROPOSAL_STATUS_REJECTED","PROPOSAL_STATUS_FAILED"]},"cosmos.gov.v1.QueryConstitutionResponse":{"type":"object","title":"QueryConstitutionResponse is the response type for the Query/Constitution RPC method","properties":{"constitution":{"type":"string"}}},"cosmos.gov.v1.QueryDepositResponse":{"description":"QueryDepositResponse is the response type for the Query/Deposit RPC method.","type":"object","properties":{"deposit":{"description":"deposit defines the requested deposit.","$ref":"#/definitions/cosmos.gov.v1.Deposit"}}},"cosmos.gov.v1.QueryDepositsResponse":{"description":"QueryDepositsResponse is the response type for the Query/Deposits RPC method.","type":"object","properties":{"deposits":{"description":"deposits defines the requested deposits.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.gov.v1.Deposit"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.gov.v1.QueryParamsResponse":{"description":"QueryParamsResponse is the response type for the Query/Params RPC method.","type":"object","properties":{"deposit_params":{"description":"Deprecated: Prefer to use `params` instead.\ndeposit_params defines the parameters related to deposit.","$ref":"#/definitions/cosmos.gov.v1.DepositParams"},"params":{"description":"params defines all the paramaters of x/gov module.\n\nSince: cosmos-sdk 0.47","$ref":"#/definitions/cosmos.gov.v1.Params"},"tally_params":{"description":"Deprecated: Prefer to use `params` instead.\ntally_params defines the parameters related to tally.","$ref":"#/definitions/cosmos.gov.v1.TallyParams"},"voting_params":{"description":"Deprecated: Prefer to use `params` instead.\nvoting_params defines the parameters related to voting.","$ref":"#/definitions/cosmos.gov.v1.VotingParams"}}},"cosmos.gov.v1.QueryProposalResponse":{"description":"QueryProposalResponse is the response type for the Query/Proposal RPC method.","type":"object","properties":{"proposal":{"description":"proposal is the requested governance proposal.","$ref":"#/definitions/cosmos.gov.v1.Proposal"}}},"cosmos.gov.v1.QueryProposalsResponse":{"description":"QueryProposalsResponse is the response type for the Query/Proposals RPC\nmethod.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"proposals":{"description":"proposals defines all the requested governance proposals.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.gov.v1.Proposal"}}}},"cosmos.gov.v1.QueryTallyResultResponse":{"description":"QueryTallyResultResponse is the response type for the Query/Tally RPC method.","type":"object","properties":{"tally":{"description":"tally defines the requested tally.","$ref":"#/definitions/cosmos.gov.v1.TallyResult"}}},"cosmos.gov.v1.QueryVoteResponse":{"description":"QueryVoteResponse is the response type for the Query/Vote RPC method.","type":"object","properties":{"vote":{"description":"vote defines the queried vote.","$ref":"#/definitions/cosmos.gov.v1.Vote"}}},"cosmos.gov.v1.QueryVotesResponse":{"description":"QueryVotesResponse is the response type for the Query/Votes RPC method.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"votes":{"description":"votes defines the queried votes.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.gov.v1.Vote"}}}},"cosmos.gov.v1.TallyParams":{"description":"TallyParams defines the params for tallying votes on governance proposals.","type":"object","properties":{"quorum":{"description":"Minimum percentage of total stake needed to vote for a result to be\nconsidered valid.","type":"string"},"threshold":{"description":"Minimum proportion of Yes votes for proposal to pass. Default value: 0.5.","type":"string"},"veto_threshold":{"description":"Minimum value of Veto votes to Total votes ratio for proposal to be\nvetoed. Default value: 1/3.","type":"string"}}},"cosmos.gov.v1.TallyResult":{"description":"TallyResult defines a standard tally for a governance proposal.","type":"object","properties":{"abstain_count":{"description":"abstain_count is the number of abstain votes on a proposal.","type":"string"},"no_count":{"description":"no_count is the number of no votes on a proposal.","type":"string"},"no_with_veto_count":{"description":"no_with_veto_count is the number of no with veto votes on a proposal.","type":"string"},"yes_count":{"description":"yes_count is the number of yes votes on a proposal.","type":"string"}}},"cosmos.gov.v1.Vote":{"description":"Vote defines a vote on a governance proposal.\nA Vote consists of a proposal ID, the voter, and the vote option.","type":"object","properties":{"metadata":{"type":"string","title":"metadata is any arbitrary metadata attached to the vote.\nthe recommended format of the metadata is to be found here: https://docs.cosmos.network/v0.47/modules/gov#vote-5"},"options":{"description":"options is the weighted vote options.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.gov.v1.WeightedVoteOption"}},"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"},"voter":{"description":"voter is the voter address of the proposal.","type":"string"}}},"cosmos.gov.v1.VoteOption":{"description":"VoteOption enumerates the valid vote options for a given governance proposal.\n\n - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option.\n - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option.\n - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option.\n - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option.\n - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option.","type":"string","default":"VOTE_OPTION_UNSPECIFIED","enum":["VOTE_OPTION_UNSPECIFIED","VOTE_OPTION_YES","VOTE_OPTION_ABSTAIN","VOTE_OPTION_NO","VOTE_OPTION_NO_WITH_VETO"]},"cosmos.gov.v1.VotingParams":{"description":"VotingParams defines the params for voting on governance proposals.","type":"object","properties":{"voting_period":{"description":"Duration of the voting period.","type":"string"}}},"cosmos.gov.v1.WeightedVoteOption":{"description":"WeightedVoteOption defines a unit of vote for vote split.","type":"object","properties":{"option":{"description":"option defines the valid vote options, it must not contain duplicate vote options.","$ref":"#/definitions/cosmos.gov.v1.VoteOption"},"weight":{"description":"weight is the vote weight associated with the vote option.","type":"string"}}},"cosmos.gov.v1beta1.Deposit":{"description":"Deposit defines an amount deposited by an account address to an active\nproposal.","type":"object","properties":{"amount":{"description":"amount to be deposited by depositor.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"depositor":{"description":"depositor defines the deposit addresses from the proposals.","type":"string"},"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"}}},"cosmos.gov.v1beta1.DepositParams":{"description":"DepositParams defines the params for deposits on governance proposals.","type":"object","properties":{"max_deposit_period":{"description":"Maximum period for Atom holders to deposit on a proposal. Initial value: 2\nmonths.","type":"string"},"min_deposit":{"description":"Minimum deposit for a proposal to enter voting period.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"cosmos.gov.v1beta1.MsgDeposit":{"description":"MsgDeposit defines a message to submit a deposit to an existing proposal.","type":"object","properties":{"amount":{"description":"amount to be deposited by depositor.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"depositor":{"description":"depositor defines the deposit addresses from the proposals.","type":"string"},"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"}}},"cosmos.gov.v1beta1.MsgDepositResponse":{"description":"MsgDepositResponse defines the Msg/Deposit response type.","type":"object"},"cosmos.gov.v1beta1.MsgSubmitProposal":{"description":"MsgSubmitProposal defines an sdk.Msg type that supports submitting arbitrary\nproposal Content.","type":"object","properties":{"content":{"description":"content is the proposal's content.","$ref":"#/definitions/google.protobuf.Any"},"initial_deposit":{"description":"initial_deposit is the deposit value that must be paid at proposal submission.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"proposer":{"description":"proposer is the account address of the proposer.","type":"string"}}},"cosmos.gov.v1beta1.MsgSubmitProposalResponse":{"description":"MsgSubmitProposalResponse defines the Msg/SubmitProposal response type.","type":"object","properties":{"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"}}},"cosmos.gov.v1beta1.MsgVote":{"description":"MsgVote defines a message to cast a vote.","type":"object","properties":{"option":{"description":"option defines the vote option.","$ref":"#/definitions/cosmos.gov.v1beta1.VoteOption"},"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"},"voter":{"description":"voter is the voter address for the proposal.","type":"string"}}},"cosmos.gov.v1beta1.MsgVoteResponse":{"description":"MsgVoteResponse defines the Msg/Vote response type.","type":"object"},"cosmos.gov.v1beta1.MsgVoteWeighted":{"description":"MsgVoteWeighted defines a message to cast a vote.\n\nSince: cosmos-sdk 0.43","type":"object","properties":{"options":{"description":"options defines the weighted vote options.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.gov.v1beta1.WeightedVoteOption"}},"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"},"voter":{"description":"voter is the voter address for the proposal.","type":"string"}}},"cosmos.gov.v1beta1.MsgVoteWeightedResponse":{"description":"MsgVoteWeightedResponse defines the Msg/VoteWeighted response type.\n\nSince: cosmos-sdk 0.43","type":"object"},"cosmos.gov.v1beta1.Proposal":{"description":"Proposal defines the core field members of a governance proposal.","type":"object","properties":{"content":{"description":"content is the proposal's content.","$ref":"#/definitions/google.protobuf.Any"},"deposit_end_time":{"description":"deposit_end_time is the end time for deposition.","type":"string","format":"date-time"},"final_tally_result":{"description":"final_tally_result is the final tally result of the proposal. When\nquerying a proposal via gRPC, this field is not populated until the\nproposal's voting period has ended.","$ref":"#/definitions/cosmos.gov.v1beta1.TallyResult"},"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"},"status":{"description":"status defines the proposal status.","$ref":"#/definitions/cosmos.gov.v1beta1.ProposalStatus"},"submit_time":{"description":"submit_time is the time of proposal submission.","type":"string","format":"date-time"},"total_deposit":{"description":"total_deposit is the total deposit on the proposal.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"voting_end_time":{"description":"voting_end_time is the end time of voting on a proposal.","type":"string","format":"date-time"},"voting_start_time":{"description":"voting_start_time is the starting time to vote on a proposal.","type":"string","format":"date-time"}}},"cosmos.gov.v1beta1.ProposalStatus":{"description":"ProposalStatus enumerates the valid statuses of a proposal.\n\n - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status.\n - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit\nperiod.\n - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting\nperiod.\n - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has\npassed.\n - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has\nbeen rejected.\n - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has\nfailed.","type":"string","default":"PROPOSAL_STATUS_UNSPECIFIED","enum":["PROPOSAL_STATUS_UNSPECIFIED","PROPOSAL_STATUS_DEPOSIT_PERIOD","PROPOSAL_STATUS_VOTING_PERIOD","PROPOSAL_STATUS_PASSED","PROPOSAL_STATUS_REJECTED","PROPOSAL_STATUS_FAILED"]},"cosmos.gov.v1beta1.QueryDepositResponse":{"description":"QueryDepositResponse is the response type for the Query/Deposit RPC method.","type":"object","properties":{"deposit":{"description":"deposit defines the requested deposit.","$ref":"#/definitions/cosmos.gov.v1beta1.Deposit"}}},"cosmos.gov.v1beta1.QueryDepositsResponse":{"description":"QueryDepositsResponse is the response type for the Query/Deposits RPC method.","type":"object","properties":{"deposits":{"description":"deposits defines the requested deposits.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.gov.v1beta1.Deposit"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.gov.v1beta1.QueryParamsResponse":{"description":"QueryParamsResponse is the response type for the Query/Params RPC method.","type":"object","properties":{"deposit_params":{"description":"deposit_params defines the parameters related to deposit.","$ref":"#/definitions/cosmos.gov.v1beta1.DepositParams"},"tally_params":{"description":"tally_params defines the parameters related to tally.","$ref":"#/definitions/cosmos.gov.v1beta1.TallyParams"},"voting_params":{"description":"voting_params defines the parameters related to voting.","$ref":"#/definitions/cosmos.gov.v1beta1.VotingParams"}}},"cosmos.gov.v1beta1.QueryProposalResponse":{"description":"QueryProposalResponse is the response type for the Query/Proposal RPC method.","type":"object","properties":{"proposal":{"$ref":"#/definitions/cosmos.gov.v1beta1.Proposal"}}},"cosmos.gov.v1beta1.QueryProposalsResponse":{"description":"QueryProposalsResponse is the response type for the Query/Proposals RPC\nmethod.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"proposals":{"description":"proposals defines all the requested governance proposals.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.gov.v1beta1.Proposal"}}}},"cosmos.gov.v1beta1.QueryTallyResultResponse":{"description":"QueryTallyResultResponse is the response type for the Query/Tally RPC method.","type":"object","properties":{"tally":{"description":"tally defines the requested tally.","$ref":"#/definitions/cosmos.gov.v1beta1.TallyResult"}}},"cosmos.gov.v1beta1.QueryVoteResponse":{"description":"QueryVoteResponse is the response type for the Query/Vote RPC method.","type":"object","properties":{"vote":{"description":"vote defines the queried vote.","$ref":"#/definitions/cosmos.gov.v1beta1.Vote"}}},"cosmos.gov.v1beta1.QueryVotesResponse":{"description":"QueryVotesResponse is the response type for the Query/Votes RPC method.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"votes":{"description":"votes defines the queried votes.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.gov.v1beta1.Vote"}}}},"cosmos.gov.v1beta1.TallyParams":{"description":"TallyParams defines the params for tallying votes on governance proposals.","type":"object","properties":{"quorum":{"description":"Minimum percentage of total stake needed to vote for a result to be\nconsidered valid.","type":"string","format":"byte"},"threshold":{"description":"Minimum proportion of Yes votes for proposal to pass. Default value: 0.5.","type":"string","format":"byte"},"veto_threshold":{"description":"Minimum value of Veto votes to Total votes ratio for proposal to be\nvetoed. Default value: 1/3.","type":"string","format":"byte"}}},"cosmos.gov.v1beta1.TallyResult":{"description":"TallyResult defines a standard tally for a governance proposal.","type":"object","properties":{"abstain":{"description":"abstain is the number of abstain votes on a proposal.","type":"string"},"no":{"description":"no is the number of no votes on a proposal.","type":"string"},"no_with_veto":{"description":"no_with_veto is the number of no with veto votes on a proposal.","type":"string"},"yes":{"description":"yes is the number of yes votes on a proposal.","type":"string"}}},"cosmos.gov.v1beta1.Vote":{"description":"Vote defines a vote on a governance proposal.\nA Vote consists of a proposal ID, the voter, and the vote option.","type":"object","properties":{"option":{"description":"Deprecated: Prefer to use `options` instead. This field is set in queries\nif and only if `len(options) == 1` and that option has weight 1. In all\nother cases, this field will default to VOTE_OPTION_UNSPECIFIED.","$ref":"#/definitions/cosmos.gov.v1beta1.VoteOption"},"options":{"description":"options is the weighted vote options.\n\nSince: cosmos-sdk 0.43","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.gov.v1beta1.WeightedVoteOption"}},"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"},"voter":{"description":"voter is the voter address of the proposal.","type":"string"}}},"cosmos.gov.v1beta1.VoteOption":{"description":"VoteOption enumerates the valid vote options for a given governance proposal.\n\n - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option.\n - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option.\n - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option.\n - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option.\n - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option.","type":"string","default":"VOTE_OPTION_UNSPECIFIED","enum":["VOTE_OPTION_UNSPECIFIED","VOTE_OPTION_YES","VOTE_OPTION_ABSTAIN","VOTE_OPTION_NO","VOTE_OPTION_NO_WITH_VETO"]},"cosmos.gov.v1beta1.VotingParams":{"description":"VotingParams defines the params for voting on governance proposals.","type":"object","properties":{"voting_period":{"description":"Duration of the voting period.","type":"string"}}},"cosmos.gov.v1beta1.WeightedVoteOption":{"description":"WeightedVoteOption defines a unit of vote for vote split.\n\nSince: cosmos-sdk 0.43","type":"object","properties":{"option":{"description":"option defines the valid vote options, it must not contain duplicate vote options.","$ref":"#/definitions/cosmos.gov.v1beta1.VoteOption"},"weight":{"description":"weight is the vote weight associated with the vote option.","type":"string"}}},"cosmos.group.v1.Exec":{"description":"Exec defines modes of execution of a proposal on creation or on new vote.\n\n - EXEC_UNSPECIFIED: An empty value means that there should be a separate\nMsgExec request for the proposal to execute.\n - EXEC_TRY: Try to execute the proposal immediately.\nIf the proposal is not allowed per the DecisionPolicy,\nthe proposal will still be open and could\nbe executed at a later point.","type":"string","default":"EXEC_UNSPECIFIED","enum":["EXEC_UNSPECIFIED","EXEC_TRY"]},"cosmos.group.v1.GroupInfo":{"description":"GroupInfo represents the high-level on-chain information for a group.","type":"object","properties":{"admin":{"description":"admin is the account address of the group's admin.","type":"string"},"created_at":{"description":"created_at is a timestamp specifying when a group was created.","type":"string","format":"date-time"},"id":{"description":"id is the unique ID of the group.","type":"string","format":"uint64"},"metadata":{"type":"string","title":"metadata is any arbitrary metadata to attached to the group.\nthe recommended format of the metadata is to be found here: https://docs.cosmos.network/v0.47/modules/group#group-1"},"total_weight":{"description":"total_weight is the sum of the group members' weights.","type":"string"},"version":{"type":"string","format":"uint64","title":"version is used to track changes to a group's membership structure that\nwould break existing proposals. Whenever any members weight is changed,\nor any member is added or removed this version is incremented and will\ncause proposals based on older versions of this group to fail"}}},"cosmos.group.v1.GroupMember":{"description":"GroupMember represents the relationship between a group and a member.","type":"object","properties":{"group_id":{"description":"group_id is the unique ID of the group.","type":"string","format":"uint64"},"member":{"description":"member is the member data.","$ref":"#/definitions/cosmos.group.v1.Member"}}},"cosmos.group.v1.GroupPolicyInfo":{"description":"GroupPolicyInfo represents the high-level on-chain information for a group policy.","type":"object","properties":{"address":{"description":"address is the account address of group policy.","type":"string"},"admin":{"description":"admin is the account address of the group admin.","type":"string"},"created_at":{"description":"created_at is a timestamp specifying when a group policy was created.","type":"string","format":"date-time"},"decision_policy":{"description":"decision_policy specifies the group policy's decision policy.","$ref":"#/definitions/google.protobuf.Any"},"group_id":{"description":"group_id is the unique ID of the group.","type":"string","format":"uint64"},"metadata":{"type":"string","title":"metadata is any arbitrary metadata attached to the group policy.\nthe recommended format of the metadata is to be found here:\nhttps://docs.cosmos.network/v0.47/modules/group#decision-policy-1"},"version":{"description":"version is used to track changes to a group's GroupPolicyInfo structure that\nwould create a different result on a running proposal.","type":"string","format":"uint64"}}},"cosmos.group.v1.Member":{"description":"Member represents a group member with an account address,\nnon-zero weight, metadata and added_at timestamp.","type":"object","properties":{"added_at":{"description":"added_at is a timestamp specifying when a member was added.","type":"string","format":"date-time"},"address":{"description":"address is the member's account address.","type":"string"},"metadata":{"description":"metadata is any arbitrary metadata attached to the member.","type":"string"},"weight":{"description":"weight is the member's voting weight that should be greater than 0.","type":"string"}}},"cosmos.group.v1.MemberRequest":{"description":"MemberRequest represents a group member to be used in Msg server requests.\nContrary to `Member`, it doesn't have any `added_at` field\nsince this field cannot be set as part of requests.","type":"object","properties":{"address":{"description":"address is the member's account address.","type":"string"},"metadata":{"description":"metadata is any arbitrary metadata attached to the member.","type":"string"},"weight":{"description":"weight is the member's voting weight that should be greater than 0.","type":"string"}}},"cosmos.group.v1.MsgCreateGroup":{"description":"MsgCreateGroup is the Msg/CreateGroup request type.","type":"object","properties":{"admin":{"description":"admin is the account address of the group admin.","type":"string"},"members":{"description":"members defines the group members.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.group.v1.MemberRequest"}},"metadata":{"description":"metadata is any arbitrary metadata to attached to the group.","type":"string"}}},"cosmos.group.v1.MsgCreateGroupPolicy":{"description":"MsgCreateGroupPolicy is the Msg/CreateGroupPolicy request type.","type":"object","properties":{"admin":{"description":"admin is the account address of the group admin.","type":"string"},"decision_policy":{"description":"decision_policy specifies the group policy's decision policy.","$ref":"#/definitions/google.protobuf.Any"},"group_id":{"description":"group_id is the unique ID of the group.","type":"string","format":"uint64"},"metadata":{"description":"metadata is any arbitrary metadata attached to the group policy.","type":"string"}}},"cosmos.group.v1.MsgCreateGroupPolicyResponse":{"description":"MsgCreateGroupPolicyResponse is the Msg/CreateGroupPolicy response type.","type":"object","properties":{"address":{"description":"address is the account address of the newly created group policy.","type":"string"}}},"cosmos.group.v1.MsgCreateGroupResponse":{"description":"MsgCreateGroupResponse is the Msg/CreateGroup response type.","type":"object","properties":{"group_id":{"description":"group_id is the unique ID of the newly created group.","type":"string","format":"uint64"}}},"cosmos.group.v1.MsgCreateGroupWithPolicy":{"description":"MsgCreateGroupWithPolicy is the Msg/CreateGroupWithPolicy request type.","type":"object","properties":{"admin":{"description":"admin is the account address of the group and group policy admin.","type":"string"},"decision_policy":{"description":"decision_policy specifies the group policy's decision policy.","$ref":"#/definitions/google.protobuf.Any"},"group_metadata":{"description":"group_metadata is any arbitrary metadata attached to the group.","type":"string"},"group_policy_as_admin":{"description":"group_policy_as_admin is a boolean field, if set to true, the group policy account address will be used as group\nand group policy admin.","type":"boolean"},"group_policy_metadata":{"description":"group_policy_metadata is any arbitrary metadata attached to the group policy.","type":"string"},"members":{"description":"members defines the group members.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.group.v1.MemberRequest"}}}},"cosmos.group.v1.MsgCreateGroupWithPolicyResponse":{"description":"MsgCreateGroupWithPolicyResponse is the Msg/CreateGroupWithPolicy response type.","type":"object","properties":{"group_id":{"description":"group_id is the unique ID of the newly created group with policy.","type":"string","format":"uint64"},"group_policy_address":{"description":"group_policy_address is the account address of the newly created group policy.","type":"string"}}},"cosmos.group.v1.MsgExec":{"description":"MsgExec is the Msg/Exec request type.","type":"object","properties":{"executor":{"description":"executor is the account address used to execute the proposal.","type":"string"},"proposal_id":{"description":"proposal is the unique ID of the proposal.","type":"string","format":"uint64"}}},"cosmos.group.v1.MsgExecResponse":{"description":"MsgExecResponse is the Msg/Exec request type.","type":"object","properties":{"result":{"description":"result is the final result of the proposal execution.","$ref":"#/definitions/cosmos.group.v1.ProposalExecutorResult"}}},"cosmos.group.v1.MsgLeaveGroup":{"description":"MsgLeaveGroup is the Msg/LeaveGroup request type.","type":"object","properties":{"address":{"description":"address is the account address of the group member.","type":"string"},"group_id":{"description":"group_id is the unique ID of the group.","type":"string","format":"uint64"}}},"cosmos.group.v1.MsgLeaveGroupResponse":{"description":"MsgLeaveGroupResponse is the Msg/LeaveGroup response type.","type":"object"},"cosmos.group.v1.MsgSubmitProposal":{"description":"MsgSubmitProposal is the Msg/SubmitProposal request type.","type":"object","properties":{"exec":{"description":"exec defines the mode of execution of the proposal,\nwhether it should be executed immediately on creation or not.\nIf so, proposers signatures are considered as Yes votes.","$ref":"#/definitions/cosmos.group.v1.Exec"},"group_policy_address":{"description":"group_policy_address is the account address of group policy.","type":"string"},"messages":{"description":"messages is a list of `sdk.Msg`s that will be executed if the proposal passes.","type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}},"metadata":{"description":"metadata is any arbitrary metadata attached to the proposal.","type":"string"},"proposers":{"description":"proposers are the account addresses of the proposers.\nProposers signatures will be counted as yes votes.","type":"array","items":{"type":"string"}},"summary":{"description":"summary is the summary of the proposal.\n\nSince: cosmos-sdk 0.47","type":"string"},"title":{"description":"title is the title of the proposal.\n\nSince: cosmos-sdk 0.47","type":"string"}}},"cosmos.group.v1.MsgSubmitProposalResponse":{"description":"MsgSubmitProposalResponse is the Msg/SubmitProposal response type.","type":"object","properties":{"proposal_id":{"description":"proposal is the unique ID of the proposal.","type":"string","format":"uint64"}}},"cosmos.group.v1.MsgUpdateGroupAdmin":{"description":"MsgUpdateGroupAdmin is the Msg/UpdateGroupAdmin request type.","type":"object","properties":{"admin":{"description":"admin is the current account address of the group admin.","type":"string"},"group_id":{"description":"group_id is the unique ID of the group.","type":"string","format":"uint64"},"new_admin":{"description":"new_admin is the group new admin account address.","type":"string"}}},"cosmos.group.v1.MsgUpdateGroupAdminResponse":{"description":"MsgUpdateGroupAdminResponse is the Msg/UpdateGroupAdmin response type.","type":"object"},"cosmos.group.v1.MsgUpdateGroupMembers":{"description":"MsgUpdateGroupMembers is the Msg/UpdateGroupMembers request type.","type":"object","properties":{"admin":{"description":"admin is the account address of the group admin.","type":"string"},"group_id":{"description":"group_id is the unique ID of the group.","type":"string","format":"uint64"},"member_updates":{"description":"member_updates is the list of members to update,\nset weight to 0 to remove a member.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.group.v1.MemberRequest"}}}},"cosmos.group.v1.MsgUpdateGroupMembersResponse":{"description":"MsgUpdateGroupMembersResponse is the Msg/UpdateGroupMembers response type.","type":"object"},"cosmos.group.v1.MsgUpdateGroupMetadata":{"description":"MsgUpdateGroupMetadata is the Msg/UpdateGroupMetadata request type.","type":"object","properties":{"admin":{"description":"admin is the account address of the group admin.","type":"string"},"group_id":{"description":"group_id is the unique ID of the group.","type":"string","format":"uint64"},"metadata":{"description":"metadata is the updated group's metadata.","type":"string"}}},"cosmos.group.v1.MsgUpdateGroupMetadataResponse":{"description":"MsgUpdateGroupMetadataResponse is the Msg/UpdateGroupMetadata response type.","type":"object"},"cosmos.group.v1.MsgUpdateGroupPolicyAdmin":{"description":"MsgUpdateGroupPolicyAdmin is the Msg/UpdateGroupPolicyAdmin request type.","type":"object","properties":{"admin":{"description":"admin is the account address of the group admin.","type":"string"},"group_policy_address":{"description":"group_policy_address is the account address of the group policy.","type":"string"},"new_admin":{"description":"new_admin is the new group policy admin.","type":"string"}}},"cosmos.group.v1.MsgUpdateGroupPolicyAdminResponse":{"description":"MsgUpdateGroupPolicyAdminResponse is the Msg/UpdateGroupPolicyAdmin response type.","type":"object"},"cosmos.group.v1.MsgUpdateGroupPolicyDecisionPolicy":{"description":"MsgUpdateGroupPolicyDecisionPolicy is the Msg/UpdateGroupPolicyDecisionPolicy request type.","type":"object","properties":{"admin":{"description":"admin is the account address of the group admin.","type":"string"},"decision_policy":{"description":"decision_policy is the updated group policy's decision policy.","$ref":"#/definitions/google.protobuf.Any"},"group_policy_address":{"description":"group_policy_address is the account address of group policy.","type":"string"}}},"cosmos.group.v1.MsgUpdateGroupPolicyDecisionPolicyResponse":{"description":"MsgUpdateGroupPolicyDecisionPolicyResponse is the Msg/UpdateGroupPolicyDecisionPolicy response type.","type":"object"},"cosmos.group.v1.MsgUpdateGroupPolicyMetadata":{"description":"MsgUpdateGroupPolicyMetadata is the Msg/UpdateGroupPolicyMetadata request type.","type":"object","properties":{"admin":{"description":"admin is the account address of the group admin.","type":"string"},"group_policy_address":{"description":"group_policy_address is the account address of group policy.","type":"string"},"metadata":{"description":"metadata is the group policy metadata to be updated.","type":"string"}}},"cosmos.group.v1.MsgUpdateGroupPolicyMetadataResponse":{"description":"MsgUpdateGroupPolicyMetadataResponse is the Msg/UpdateGroupPolicyMetadata response type.","type":"object"},"cosmos.group.v1.MsgVote":{"description":"MsgVote is the Msg/Vote request type.","type":"object","properties":{"exec":{"description":"exec defines whether the proposal should be executed\nimmediately after voting or not.","$ref":"#/definitions/cosmos.group.v1.Exec"},"metadata":{"description":"metadata is any arbitrary metadata attached to the vote.","type":"string"},"option":{"description":"option is the voter's choice on the proposal.","$ref":"#/definitions/cosmos.group.v1.VoteOption"},"proposal_id":{"description":"proposal is the unique ID of the proposal.","type":"string","format":"uint64"},"voter":{"description":"voter is the voter account address.","type":"string"}}},"cosmos.group.v1.MsgVoteResponse":{"description":"MsgVoteResponse is the Msg/Vote response type.","type":"object"},"cosmos.group.v1.MsgWithdrawProposal":{"description":"MsgWithdrawProposal is the Msg/WithdrawProposal request type.","type":"object","properties":{"address":{"description":"address is the admin of the group policy or one of the proposer of the proposal.","type":"string"},"proposal_id":{"description":"proposal is the unique ID of the proposal.","type":"string","format":"uint64"}}},"cosmos.group.v1.MsgWithdrawProposalResponse":{"description":"MsgWithdrawProposalResponse is the Msg/WithdrawProposal response type.","type":"object"},"cosmos.group.v1.Proposal":{"description":"Proposal defines a group proposal. Any member of a group can submit a proposal\nfor a group policy to decide upon.\nA proposal consists of a set of `sdk.Msg`s that will be executed if the proposal\npasses as well as some optional metadata associated with the proposal.","type":"object","properties":{"executor_result":{"description":"executor_result is the final result of the proposal execution. Initial value is NotRun.","$ref":"#/definitions/cosmos.group.v1.ProposalExecutorResult"},"final_tally_result":{"description":"final_tally_result contains the sums of all weighted votes for this\nproposal for each vote option. It is empty at submission, and only\npopulated after tallying, at voting period end or at proposal execution,\nwhichever happens first.","$ref":"#/definitions/cosmos.group.v1.TallyResult"},"group_policy_address":{"description":"group_policy_address is the account address of group policy.","type":"string"},"group_policy_version":{"description":"group_policy_version tracks the version of the group policy at proposal submission.\nWhen a decision policy is changed, existing proposals from previous policy\nversions will become invalid with the `ABORTED` status.\nThis field is here for informational purposes only.","type":"string","format":"uint64"},"group_version":{"description":"group_version tracks the version of the group at proposal submission.\nThis field is here for informational purposes only.","type":"string","format":"uint64"},"id":{"description":"id is the unique id of the proposal.","type":"string","format":"uint64"},"messages":{"description":"messages is a list of `sdk.Msg`s that will be executed if the proposal passes.","type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}},"metadata":{"type":"string","title":"metadata is any arbitrary metadata attached to the proposal.\nthe recommended format of the metadata is to be found here:\nhttps://docs.cosmos.network/v0.47/modules/group#proposal-4"},"proposers":{"description":"proposers are the account addresses of the proposers.","type":"array","items":{"type":"string"}},"status":{"description":"status represents the high level position in the life cycle of the proposal. Initial value is Submitted.","$ref":"#/definitions/cosmos.group.v1.ProposalStatus"},"submit_time":{"description":"submit_time is a timestamp specifying when a proposal was submitted.","type":"string","format":"date-time"},"summary":{"description":"Since: cosmos-sdk 0.47","type":"string","title":"summary is a short summary of the proposal"},"title":{"description":"Since: cosmos-sdk 0.47","type":"string","title":"title is the title of the proposal"},"voting_period_end":{"description":"voting_period_end is the timestamp before which voting must be done.\nUnless a successful MsgExec is called before (to execute a proposal whose\ntally is successful before the voting period ends), tallying will be done\nat this point, and the `final_tally_result`and `status` fields will be\naccordingly updated.","type":"string","format":"date-time"}}},"cosmos.group.v1.ProposalExecutorResult":{"description":"ProposalExecutorResult defines types of proposal executor results.\n\n - PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED: An empty value is not allowed.\n - PROPOSAL_EXECUTOR_RESULT_NOT_RUN: We have not yet run the executor.\n - PROPOSAL_EXECUTOR_RESULT_SUCCESS: The executor was successful and proposed action updated state.\n - PROPOSAL_EXECUTOR_RESULT_FAILURE: The executor returned an error and proposed action didn't update state.","type":"string","default":"PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED","enum":["PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED","PROPOSAL_EXECUTOR_RESULT_NOT_RUN","PROPOSAL_EXECUTOR_RESULT_SUCCESS","PROPOSAL_EXECUTOR_RESULT_FAILURE"]},"cosmos.group.v1.ProposalStatus":{"description":"ProposalStatus defines proposal statuses.\n\n - PROPOSAL_STATUS_UNSPECIFIED: An empty value is invalid and not allowed.\n - PROPOSAL_STATUS_SUBMITTED: Initial status of a proposal when submitted.\n - PROPOSAL_STATUS_ACCEPTED: Final status of a proposal when the final tally is done and the outcome\npasses the group policy's decision policy.\n - PROPOSAL_STATUS_REJECTED: Final status of a proposal when the final tally is done and the outcome\nis rejected by the group policy's decision policy.\n - PROPOSAL_STATUS_ABORTED: Final status of a proposal when the group policy is modified before the\nfinal tally.\n - PROPOSAL_STATUS_WITHDRAWN: A proposal can be withdrawn before the voting start time by the owner.\nWhen this happens the final status is Withdrawn.","type":"string","default":"PROPOSAL_STATUS_UNSPECIFIED","enum":["PROPOSAL_STATUS_UNSPECIFIED","PROPOSAL_STATUS_SUBMITTED","PROPOSAL_STATUS_ACCEPTED","PROPOSAL_STATUS_REJECTED","PROPOSAL_STATUS_ABORTED","PROPOSAL_STATUS_WITHDRAWN"]},"cosmos.group.v1.QueryGroupInfoResponse":{"description":"QueryGroupInfoResponse is the Query/GroupInfo response type.","type":"object","properties":{"info":{"description":"info is the GroupInfo of the group.","$ref":"#/definitions/cosmos.group.v1.GroupInfo"}}},"cosmos.group.v1.QueryGroupMembersResponse":{"description":"QueryGroupMembersResponse is the Query/GroupMembersResponse response type.","type":"object","properties":{"members":{"description":"members are the members of the group with given group_id.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.group.v1.GroupMember"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.group.v1.QueryGroupPoliciesByAdminResponse":{"description":"QueryGroupPoliciesByAdminResponse is the Query/GroupPoliciesByAdmin response type.","type":"object","properties":{"group_policies":{"description":"group_policies are the group policies info with provided admin.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.group.v1.GroupPolicyInfo"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.group.v1.QueryGroupPoliciesByGroupResponse":{"description":"QueryGroupPoliciesByGroupResponse is the Query/GroupPoliciesByGroup response type.","type":"object","properties":{"group_policies":{"description":"group_policies are the group policies info associated with the provided group.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.group.v1.GroupPolicyInfo"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.group.v1.QueryGroupPolicyInfoResponse":{"description":"QueryGroupPolicyInfoResponse is the Query/GroupPolicyInfo response type.","type":"object","properties":{"info":{"description":"info is the GroupPolicyInfo of the group policy.","$ref":"#/definitions/cosmos.group.v1.GroupPolicyInfo"}}},"cosmos.group.v1.QueryGroupsByAdminResponse":{"description":"QueryGroupsByAdminResponse is the Query/GroupsByAdminResponse response type.","type":"object","properties":{"groups":{"description":"groups are the groups info with the provided admin.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.group.v1.GroupInfo"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.group.v1.QueryGroupsByMemberResponse":{"description":"QueryGroupsByMemberResponse is the Query/GroupsByMember response type.","type":"object","properties":{"groups":{"description":"groups are the groups info with the provided group member.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.group.v1.GroupInfo"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.group.v1.QueryGroupsResponse":{"description":"QueryGroupsResponse is the Query/Groups response type.\n\nSince: cosmos-sdk 0.47.1","type":"object","properties":{"groups":{"description":"`groups` is all the groups present in state.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.group.v1.GroupInfo"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.group.v1.QueryProposalResponse":{"description":"QueryProposalResponse is the Query/Proposal response type.","type":"object","properties":{"proposal":{"description":"proposal is the proposal info.","$ref":"#/definitions/cosmos.group.v1.Proposal"}}},"cosmos.group.v1.QueryProposalsByGroupPolicyResponse":{"description":"QueryProposalsByGroupPolicyResponse is the Query/ProposalByGroupPolicy response type.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"proposals":{"description":"proposals are the proposals with given group policy.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.group.v1.Proposal"}}}},"cosmos.group.v1.QueryTallyResultResponse":{"description":"QueryTallyResultResponse is the Query/TallyResult response type.","type":"object","properties":{"tally":{"description":"tally defines the requested tally.","$ref":"#/definitions/cosmos.group.v1.TallyResult"}}},"cosmos.group.v1.QueryVoteByProposalVoterResponse":{"description":"QueryVoteByProposalVoterResponse is the Query/VoteByProposalVoter response type.","type":"object","properties":{"vote":{"description":"vote is the vote with given proposal_id and voter.","$ref":"#/definitions/cosmos.group.v1.Vote"}}},"cosmos.group.v1.QueryVotesByProposalResponse":{"description":"QueryVotesByProposalResponse is the Query/VotesByProposal response type.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"votes":{"description":"votes are the list of votes for given proposal_id.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.group.v1.Vote"}}}},"cosmos.group.v1.QueryVotesByVoterResponse":{"description":"QueryVotesByVoterResponse is the Query/VotesByVoter response type.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"votes":{"description":"votes are the list of votes by given voter.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.group.v1.Vote"}}}},"cosmos.group.v1.TallyResult":{"description":"TallyResult represents the sum of weighted votes for each vote option.","type":"object","properties":{"abstain_count":{"description":"abstain_count is the weighted sum of abstainers.","type":"string"},"no_count":{"description":"no_count is the weighted sum of no votes.","type":"string"},"no_with_veto_count":{"description":"no_with_veto_count is the weighted sum of veto.","type":"string"},"yes_count":{"description":"yes_count is the weighted sum of yes votes.","type":"string"}}},"cosmos.group.v1.Vote":{"type":"object","title":"Vote represents a vote for a proposal.string metadata","properties":{"metadata":{"type":"string","title":"metadata is any arbitrary metadata attached to the vote.\nthe recommended format of the metadata is to be found here: https://docs.cosmos.network/v0.47/modules/group#vote-2"},"option":{"description":"option is the voter's choice on the proposal.","$ref":"#/definitions/cosmos.group.v1.VoteOption"},"proposal_id":{"description":"proposal is the unique ID of the proposal.","type":"string","format":"uint64"},"submit_time":{"description":"submit_time is the timestamp when the vote was submitted.","type":"string","format":"date-time"},"voter":{"description":"voter is the account address of the voter.","type":"string"}}},"cosmos.group.v1.VoteOption":{"description":"VoteOption enumerates the valid vote options for a given proposal.\n\n - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines an unspecified vote option which will\nreturn an error.\n - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option.\n - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option.\n - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option.\n - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option.","type":"string","default":"VOTE_OPTION_UNSPECIFIED","enum":["VOTE_OPTION_UNSPECIFIED","VOTE_OPTION_YES","VOTE_OPTION_ABSTAIN","VOTE_OPTION_NO","VOTE_OPTION_NO_WITH_VETO"]},"cosmos.mint.v1beta1.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the x/mint parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/cosmos.mint.v1beta1.Params"}}},"cosmos.mint.v1beta1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.\n\nSince: cosmos-sdk 0.47","type":"object"},"cosmos.mint.v1beta1.Params":{"description":"Params defines the parameters for the x/mint module.","type":"object","properties":{"blocks_per_year":{"type":"string","format":"uint64","title":"expected blocks per year"},"goal_bonded":{"type":"string","title":"goal of percent bonded atoms"},"inflation_max":{"type":"string","title":"maximum inflation rate"},"inflation_min":{"type":"string","title":"minimum inflation rate"},"inflation_rate_change":{"type":"string","title":"maximum annual change in inflation rate"},"mint_denom":{"type":"string","title":"type of coin to mint"}}},"cosmos.mint.v1beta1.QueryAnnualProvisionsResponse":{"description":"QueryAnnualProvisionsResponse is the response type for the\nQuery/AnnualProvisions RPC method.","type":"object","properties":{"annual_provisions":{"description":"annual_provisions is the current minting annual provisions value.","type":"string","format":"byte"}}},"cosmos.mint.v1beta1.QueryInflationResponse":{"description":"QueryInflationResponse is the response type for the Query/Inflation RPC\nmethod.","type":"object","properties":{"inflation":{"description":"inflation is the current minting inflation value.","type":"string","format":"byte"}}},"cosmos.mint.v1beta1.QueryParamsResponse":{"description":"QueryParamsResponse is the response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params defines the parameters of the module.","$ref":"#/definitions/cosmos.mint.v1beta1.Params"}}},"cosmos.nft.v1beta1.Class":{"description":"Class defines the class of the nft type.","type":"object","properties":{"data":{"title":"data is the app specific metadata of the NFT class. Optional","$ref":"#/definitions/google.protobuf.Any"},"description":{"type":"string","title":"description is a brief description of nft classification. Optional"},"id":{"type":"string","title":"id defines the unique identifier of the NFT classification, similar to the contract address of ERC721"},"name":{"type":"string","title":"name defines the human-readable name of the NFT classification. Optional"},"symbol":{"type":"string","title":"symbol is an abbreviated name for nft classification. Optional"},"uri":{"type":"string","title":"uri for the class metadata stored off chain. It can define schema for Class and NFT `Data` attributes. Optional"},"uri_hash":{"type":"string","title":"uri_hash is a hash of the document pointed by uri. Optional"}}},"cosmos.nft.v1beta1.MsgSend":{"description":"MsgSend represents a message to send a nft from one account to another account.","type":"object","properties":{"class_id":{"type":"string","title":"class_id defines the unique identifier of the nft classification, similar to the contract address of ERC721"},"id":{"type":"string","title":"id defines the unique identification of nft"},"receiver":{"type":"string","title":"receiver is the receiver address of nft"},"sender":{"type":"string","title":"sender is the address of the owner of nft"}}},"cosmos.nft.v1beta1.MsgSendResponse":{"description":"MsgSendResponse defines the Msg/Send response type.","type":"object"},"cosmos.nft.v1beta1.NFT":{"description":"NFT defines the NFT.","type":"object","properties":{"class_id":{"type":"string","title":"class_id associated with the NFT, similar to the contract address of ERC721"},"data":{"title":"data is an app specific data of the NFT. Optional","$ref":"#/definitions/google.protobuf.Any"},"id":{"type":"string","title":"id is a unique identifier of the NFT"},"uri":{"type":"string","title":"uri for the NFT metadata stored off chain"},"uri_hash":{"type":"string","title":"uri_hash is a hash of the document pointed by uri"}}},"cosmos.nft.v1beta1.QueryBalanceResponse":{"type":"object","title":"QueryBalanceResponse is the response type for the Query/Balance RPC method","properties":{"amount":{"type":"string","format":"uint64","title":"amount is the number of all NFTs of a given class owned by the owner"}}},"cosmos.nft.v1beta1.QueryClassResponse":{"type":"object","title":"QueryClassResponse is the response type for the Query/Class RPC method","properties":{"class":{"description":"class defines the class of the nft type.","$ref":"#/definitions/cosmos.nft.v1beta1.Class"}}},"cosmos.nft.v1beta1.QueryClassesResponse":{"type":"object","title":"QueryClassesResponse is the response type for the Query/Classes RPC method","properties":{"classes":{"description":"class defines the class of the nft type.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.nft.v1beta1.Class"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.nft.v1beta1.QueryNFTResponse":{"type":"object","title":"QueryNFTResponse is the response type for the Query/NFT RPC method","properties":{"nft":{"title":"owner is the owner address of the nft","$ref":"#/definitions/cosmos.nft.v1beta1.NFT"}}},"cosmos.nft.v1beta1.QueryNFTsResponse":{"type":"object","title":"QueryNFTsResponse is the response type for the Query/NFTs RPC methods","properties":{"nfts":{"type":"array","title":"NFT defines the NFT","items":{"type":"object","$ref":"#/definitions/cosmos.nft.v1beta1.NFT"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.nft.v1beta1.QueryOwnerResponse":{"type":"object","title":"QueryOwnerResponse is the response type for the Query/Owner RPC method","properties":{"owner":{"type":"string","title":"owner is the owner address of the nft"}}},"cosmos.nft.v1beta1.QuerySupplyResponse":{"type":"object","title":"QuerySupplyResponse is the response type for the Query/Supply RPC method","properties":{"amount":{"type":"string","format":"uint64","title":"amount is the number of all NFTs from the given class"}}},"cosmos.params.v1beta1.ParamChange":{"description":"ParamChange defines an individual parameter change, for use in\nParameterChangeProposal.","type":"object","properties":{"key":{"type":"string"},"subspace":{"type":"string"},"value":{"type":"string"}}},"cosmos.params.v1beta1.QueryParamsResponse":{"description":"QueryParamsResponse is response type for the Query/Params RPC method.","type":"object","properties":{"param":{"description":"param defines the queried parameter.","$ref":"#/definitions/cosmos.params.v1beta1.ParamChange"}}},"cosmos.params.v1beta1.QuerySubspacesResponse":{"description":"QuerySubspacesResponse defines the response types for querying for all\nregistered subspaces and all keys for a subspace.\n\nSince: cosmos-sdk 0.46","type":"object","properties":{"subspaces":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.params.v1beta1.Subspace"}}}},"cosmos.params.v1beta1.Subspace":{"description":"Subspace defines a parameter subspace name and all the keys that exist for\nthe subspace.\n\nSince: cosmos-sdk 0.46","type":"object","properties":{"keys":{"type":"array","items":{"type":"string"}},"subspace":{"type":"string"}}},"cosmos.slashing.v1beta1.MsgUnjail":{"type":"object","title":"MsgUnjail defines the Msg/Unjail request type","properties":{"validator_addr":{"type":"string"}}},"cosmos.slashing.v1beta1.MsgUnjailResponse":{"type":"object","title":"MsgUnjailResponse defines the Msg/Unjail response type"},"cosmos.slashing.v1beta1.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the x/slashing parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/cosmos.slashing.v1beta1.Params"}}},"cosmos.slashing.v1beta1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.\n\nSince: cosmos-sdk 0.47","type":"object"},"cosmos.slashing.v1beta1.Params":{"description":"Params represents the parameters used for by the slashing module.","type":"object","properties":{"downtime_jail_duration":{"type":"string"},"min_signed_per_window":{"type":"string","format":"byte"},"signed_blocks_window":{"type":"string","format":"int64"},"slash_fraction_double_sign":{"type":"string","format":"byte"},"slash_fraction_downtime":{"type":"string","format":"byte"}}},"cosmos.slashing.v1beta1.QueryParamsResponse":{"type":"object","title":"QueryParamsResponse is the response type for the Query/Params RPC method","properties":{"params":{"$ref":"#/definitions/cosmos.slashing.v1beta1.Params"}}},"cosmos.slashing.v1beta1.QuerySigningInfoResponse":{"type":"object","title":"QuerySigningInfoResponse is the response type for the Query/SigningInfo RPC\nmethod","properties":{"val_signing_info":{"title":"val_signing_info is the signing info of requested val cons address","$ref":"#/definitions/cosmos.slashing.v1beta1.ValidatorSigningInfo"}}},"cosmos.slashing.v1beta1.QuerySigningInfosResponse":{"type":"object","title":"QuerySigningInfosResponse is the response type for the Query/SigningInfos RPC\nmethod","properties":{"info":{"type":"array","title":"info is the signing info of all validators","items":{"type":"object","$ref":"#/definitions/cosmos.slashing.v1beta1.ValidatorSigningInfo"}},"pagination":{"$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.slashing.v1beta1.ValidatorSigningInfo":{"description":"ValidatorSigningInfo defines a validator's signing info for monitoring their\nliveness activity.","type":"object","properties":{"address":{"type":"string"},"index_offset":{"description":"Index which is incremented every time a validator is bonded in a block and\n_may_ have signed a pre-commit or not. This in conjunction with the\nsigned_blocks_window param determines the index in the missed block bitmap.","type":"string","format":"int64"},"jailed_until":{"description":"Timestamp until which the validator is jailed due to liveness downtime.","type":"string","format":"date-time"},"missed_blocks_counter":{"description":"A counter of missed (unsigned) blocks. It is used to avoid unnecessary\nreads in the missed block bitmap.","type":"string","format":"int64"},"start_height":{"type":"string","format":"int64","title":"Height at which validator was first a candidate OR was un-jailed"},"tombstoned":{"description":"Whether or not a validator has been tombstoned (killed out of validator\nset). It is set once the validator commits an equivocation or for any other\nconfigured misbehavior.","type":"boolean"}}},"cosmos.staking.v1beta1.BondStatus":{"description":"BondStatus is the status of a validator.\n\n - BOND_STATUS_UNSPECIFIED: UNSPECIFIED defines an invalid validator status.\n - BOND_STATUS_UNBONDED: UNBONDED defines a validator that is not bonded.\n - BOND_STATUS_UNBONDING: UNBONDING defines a validator that is unbonding.\n - BOND_STATUS_BONDED: BONDED defines a validator that is bonded.","type":"string","default":"BOND_STATUS_UNSPECIFIED","enum":["BOND_STATUS_UNSPECIFIED","BOND_STATUS_UNBONDED","BOND_STATUS_UNBONDING","BOND_STATUS_BONDED"]},"cosmos.staking.v1beta1.Commission":{"description":"Commission defines commission parameters for a given validator.","type":"object","properties":{"commission_rates":{"description":"commission_rates defines the initial commission rates to be used for creating a validator.","$ref":"#/definitions/cosmos.staking.v1beta1.CommissionRates"},"update_time":{"description":"update_time is the last time the commission rate was changed.","type":"string","format":"date-time"}}},"cosmos.staking.v1beta1.CommissionRates":{"description":"CommissionRates defines the initial commission rates to be used for creating\na validator.","type":"object","properties":{"max_change_rate":{"description":"max_change_rate defines the maximum daily increase of the validator commission, as a fraction.","type":"string"},"max_rate":{"description":"max_rate defines the maximum commission rate which validator can ever charge, as a fraction.","type":"string"},"rate":{"description":"rate is the commission rate charged to delegators, as a fraction.","type":"string"}}},"cosmos.staking.v1beta1.Delegation":{"description":"Delegation represents the bond with tokens held by an account. It is\nowned by one delegator, and is associated with the voting power of one\nvalidator.","type":"object","properties":{"delegator_address":{"description":"delegator_address is the encoded address of the delegator.","type":"string"},"shares":{"description":"shares define the delegation shares received.","type":"string"},"validator_address":{"description":"validator_address is the encoded address of the validator.","type":"string"}}},"cosmos.staking.v1beta1.DelegationResponse":{"description":"DelegationResponse is equivalent to Delegation except that it contains a\nbalance in addition to shares which is more suitable for client responses.","type":"object","properties":{"balance":{"$ref":"#/definitions/cosmos.base.v1beta1.Coin"},"delegation":{"$ref":"#/definitions/cosmos.staking.v1beta1.Delegation"}}},"cosmos.staking.v1beta1.Description":{"description":"Description defines a validator description.","type":"object","properties":{"details":{"description":"details define other optional details.","type":"string"},"identity":{"description":"identity defines an optional identity signature (ex. UPort or Keybase).","type":"string"},"moniker":{"description":"moniker defines a human-readable name for the validator.","type":"string"},"security_contact":{"description":"security_contact defines an optional email for security contact.","type":"string"},"website":{"description":"website defines an optional website link.","type":"string"}}},"cosmos.staking.v1beta1.HistoricalInfo":{"description":"HistoricalInfo contains header and validator information for a given block.\nIt is stored as part of staking module's state, which persists the `n` most\nrecent HistoricalInfo\n(`n` is set by the staking module's `historical_entries` parameter).","type":"object","properties":{"header":{"$ref":"#/definitions/tendermint.types.Header"},"valset":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.staking.v1beta1.Validator"}}}},"cosmos.staking.v1beta1.MsgBeginRedelegate":{"description":"MsgBeginRedelegate defines a SDK message for performing a redelegation\nof coins from a delegator and source validator to a destination validator.","type":"object","properties":{"amount":{"$ref":"#/definitions/cosmos.base.v1beta1.Coin"},"delegator_address":{"type":"string"},"validator_dst_address":{"type":"string"},"validator_src_address":{"type":"string"}}},"cosmos.staking.v1beta1.MsgBeginRedelegateResponse":{"description":"MsgBeginRedelegateResponse defines the Msg/BeginRedelegate response type.","type":"object","properties":{"completion_time":{"type":"string","format":"date-time"}}},"cosmos.staking.v1beta1.MsgCancelUnbondingDelegation":{"description":"Since: cosmos-sdk 0.46","type":"object","title":"MsgCancelUnbondingDelegation defines the SDK message for performing a cancel unbonding delegation for delegator","properties":{"amount":{"title":"amount is always less than or equal to unbonding delegation entry balance","$ref":"#/definitions/cosmos.base.v1beta1.Coin"},"creation_height":{"description":"creation_height is the height which the unbonding took place.","type":"string","format":"int64"},"delegator_address":{"type":"string"},"validator_address":{"type":"string"}}},"cosmos.staking.v1beta1.MsgCancelUnbondingDelegationResponse":{"description":"Since: cosmos-sdk 0.46","type":"object","title":"MsgCancelUnbondingDelegationResponse"},"cosmos.staking.v1beta1.MsgCreateValidator":{"description":"MsgCreateValidator defines a SDK message for creating a new validator.","type":"object","properties":{"commission":{"$ref":"#/definitions/cosmos.staking.v1beta1.CommissionRates"},"delegator_address":{"description":"Deprecated: Use of Delegator Address in MsgCreateValidator is deprecated.\nThe validator address bytes and delegator address bytes refer to the same account while creating validator (defer\nonly in bech32 notation).","type":"string"},"description":{"$ref":"#/definitions/cosmos.staking.v1beta1.Description"},"min_self_delegation":{"type":"string"},"pubkey":{"$ref":"#/definitions/google.protobuf.Any"},"validator_address":{"type":"string"},"value":{"$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"cosmos.staking.v1beta1.MsgCreateValidatorResponse":{"description":"MsgCreateValidatorResponse defines the Msg/CreateValidator response type.","type":"object"},"cosmos.staking.v1beta1.MsgDelegate":{"description":"MsgDelegate defines a SDK message for performing a delegation of coins\nfrom a delegator to a validator.","type":"object","properties":{"amount":{"$ref":"#/definitions/cosmos.base.v1beta1.Coin"},"delegator_address":{"type":"string"},"validator_address":{"type":"string"}}},"cosmos.staking.v1beta1.MsgDelegateResponse":{"description":"MsgDelegateResponse defines the Msg/Delegate response type.","type":"object"},"cosmos.staking.v1beta1.MsgEditValidator":{"description":"MsgEditValidator defines a SDK message for editing an existing validator.","type":"object","properties":{"commission_rate":{"type":"string","title":"We pass a reference to the new commission rate and min self delegation as\nit's not mandatory to update. If not updated, the deserialized rate will be\nzero with no way to distinguish if an update was intended.\nREF: #2373"},"description":{"$ref":"#/definitions/cosmos.staking.v1beta1.Description"},"min_self_delegation":{"type":"string"},"validator_address":{"type":"string"}}},"cosmos.staking.v1beta1.MsgEditValidatorResponse":{"description":"MsgEditValidatorResponse defines the Msg/EditValidator response type.","type":"object"},"cosmos.staking.v1beta1.MsgUndelegate":{"description":"MsgUndelegate defines a SDK message for performing an undelegation from a\ndelegate and a validator.","type":"object","properties":{"amount":{"$ref":"#/definitions/cosmos.base.v1beta1.Coin"},"delegator_address":{"type":"string"},"validator_address":{"type":"string"}}},"cosmos.staking.v1beta1.MsgUndelegateResponse":{"description":"MsgUndelegateResponse defines the Msg/Undelegate response type.","type":"object","properties":{"amount":{"description":"Since: cosmos-sdk 0.50","title":"amount returns the amount of undelegated coins","$ref":"#/definitions/cosmos.base.v1beta1.Coin"},"completion_time":{"type":"string","format":"date-time"}}},"cosmos.staking.v1beta1.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the x/staking parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/cosmos.staking.v1beta1.Params"}}},"cosmos.staking.v1beta1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.\n\nSince: cosmos-sdk 0.47","type":"object"},"cosmos.staking.v1beta1.Params":{"description":"Params defines the parameters for the x/staking module.","type":"object","properties":{"bond_denom":{"description":"bond_denom defines the bondable coin denomination.","type":"string"},"historical_entries":{"description":"historical_entries is the number of historical entries to persist.","type":"integer","format":"int64"},"max_entries":{"description":"max_entries is the max entries for either unbonding delegation or redelegation (per pair/trio).","type":"integer","format":"int64"},"max_validators":{"description":"max_validators is the maximum number of validators.","type":"integer","format":"int64"},"min_commission_rate":{"type":"string","title":"min_commission_rate is the chain-wide minimum commission rate that a validator can charge their delegators"},"unbonding_time":{"description":"unbonding_time is the time duration of unbonding.","type":"string"}}},"cosmos.staking.v1beta1.Pool":{"description":"Pool is used for tracking bonded and not-bonded token supply of the bond\ndenomination.","type":"object","properties":{"bonded_tokens":{"type":"string"},"not_bonded_tokens":{"type":"string"}}},"cosmos.staking.v1beta1.QueryDelegationResponse":{"description":"QueryDelegationResponse is response type for the Query/Delegation RPC method.","type":"object","properties":{"delegation_response":{"description":"delegation_responses defines the delegation info of a delegation.","$ref":"#/definitions/cosmos.staking.v1beta1.DelegationResponse"}}},"cosmos.staking.v1beta1.QueryDelegatorDelegationsResponse":{"description":"QueryDelegatorDelegationsResponse is response type for the\nQuery/DelegatorDelegations RPC method.","type":"object","properties":{"delegation_responses":{"description":"delegation_responses defines all the delegations' info of a delegator.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.staking.v1beta1.DelegationResponse"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.staking.v1beta1.QueryDelegatorUnbondingDelegationsResponse":{"description":"QueryUnbondingDelegatorDelegationsResponse is response type for the\nQuery/UnbondingDelegatorDelegations RPC method.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"unbonding_responses":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.staking.v1beta1.UnbondingDelegation"}}}},"cosmos.staking.v1beta1.QueryDelegatorValidatorResponse":{"description":"QueryDelegatorValidatorResponse response type for the\nQuery/DelegatorValidator RPC method.","type":"object","properties":{"validator":{"description":"validator defines the validator info.","$ref":"#/definitions/cosmos.staking.v1beta1.Validator"}}},"cosmos.staking.v1beta1.QueryDelegatorValidatorsResponse":{"description":"QueryDelegatorValidatorsResponse is response type for the\nQuery/DelegatorValidators RPC method.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"validators":{"description":"validators defines the validators' info of a delegator.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.staking.v1beta1.Validator"}}}},"cosmos.staking.v1beta1.QueryHistoricalInfoResponse":{"description":"QueryHistoricalInfoResponse is response type for the Query/HistoricalInfo RPC\nmethod.","type":"object","properties":{"hist":{"description":"hist defines the historical info at the given height.","$ref":"#/definitions/cosmos.staking.v1beta1.HistoricalInfo"}}},"cosmos.staking.v1beta1.QueryParamsResponse":{"description":"QueryParamsResponse is response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params holds all the parameters of this module.","$ref":"#/definitions/cosmos.staking.v1beta1.Params"}}},"cosmos.staking.v1beta1.QueryPoolResponse":{"description":"QueryPoolResponse is response type for the Query/Pool RPC method.","type":"object","properties":{"pool":{"description":"pool defines the pool info.","$ref":"#/definitions/cosmos.staking.v1beta1.Pool"}}},"cosmos.staking.v1beta1.QueryRedelegationsResponse":{"description":"QueryRedelegationsResponse is response type for the Query/Redelegations RPC\nmethod.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"redelegation_responses":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.staking.v1beta1.RedelegationResponse"}}}},"cosmos.staking.v1beta1.QueryUnbondingDelegationResponse":{"description":"QueryDelegationResponse is response type for the Query/UnbondingDelegation\nRPC method.","type":"object","properties":{"unbond":{"description":"unbond defines the unbonding information of a delegation.","$ref":"#/definitions/cosmos.staking.v1beta1.UnbondingDelegation"}}},"cosmos.staking.v1beta1.QueryValidatorDelegationsResponse":{"type":"object","title":"QueryValidatorDelegationsResponse is response type for the\nQuery/ValidatorDelegations RPC method","properties":{"delegation_responses":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.staking.v1beta1.DelegationResponse"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.staking.v1beta1.QueryValidatorResponse":{"type":"object","title":"QueryValidatorResponse is response type for the Query/Validator RPC method","properties":{"validator":{"description":"validator defines the validator info.","$ref":"#/definitions/cosmos.staking.v1beta1.Validator"}}},"cosmos.staking.v1beta1.QueryValidatorUnbondingDelegationsResponse":{"description":"QueryValidatorUnbondingDelegationsResponse is response type for the\nQuery/ValidatorUnbondingDelegations RPC method.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"unbonding_responses":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.staking.v1beta1.UnbondingDelegation"}}}},"cosmos.staking.v1beta1.QueryValidatorsResponse":{"type":"object","title":"QueryValidatorsResponse is response type for the Query/Validators RPC method","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"validators":{"description":"validators contains all the queried validators.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.staking.v1beta1.Validator"}}}},"cosmos.staking.v1beta1.Redelegation":{"description":"Redelegation contains the list of a particular delegator's redelegating bonds\nfrom a particular source validator to a particular destination validator.","type":"object","properties":{"delegator_address":{"description":"delegator_address is the bech32-encoded address of the delegator.","type":"string"},"entries":{"description":"entries are the redelegation entries.\n\nredelegation entries","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.staking.v1beta1.RedelegationEntry"}},"validator_dst_address":{"description":"validator_dst_address is the validator redelegation destination operator address.","type":"string"},"validator_src_address":{"description":"validator_src_address is the validator redelegation source operator address.","type":"string"}}},"cosmos.staking.v1beta1.RedelegationEntry":{"description":"RedelegationEntry defines a redelegation object with relevant metadata.","type":"object","properties":{"completion_time":{"description":"completion_time defines the unix time for redelegation completion.","type":"string","format":"date-time"},"creation_height":{"description":"creation_height defines the height which the redelegation took place.","type":"string","format":"int64"},"initial_balance":{"description":"initial_balance defines the initial balance when redelegation started.","type":"string"},"shares_dst":{"description":"shares_dst is the amount of destination-validator shares created by redelegation.","type":"string"},"unbonding_id":{"type":"string","format":"uint64","title":"Incrementing id that uniquely identifies this entry"},"unbonding_on_hold_ref_count":{"type":"string","format":"int64","title":"Strictly positive if this entry's unbonding has been stopped by external modules"}}},"cosmos.staking.v1beta1.RedelegationEntryResponse":{"description":"RedelegationEntryResponse is equivalent to a RedelegationEntry except that it\ncontains a balance in addition to shares which is more suitable for client\nresponses.","type":"object","properties":{"balance":{"type":"string"},"redelegation_entry":{"$ref":"#/definitions/cosmos.staking.v1beta1.RedelegationEntry"}}},"cosmos.staking.v1beta1.RedelegationResponse":{"description":"RedelegationResponse is equivalent to a Redelegation except that its entries\ncontain a balance in addition to shares which is more suitable for client\nresponses.","type":"object","properties":{"entries":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.staking.v1beta1.RedelegationEntryResponse"}},"redelegation":{"$ref":"#/definitions/cosmos.staking.v1beta1.Redelegation"}}},"cosmos.staking.v1beta1.UnbondingDelegation":{"description":"UnbondingDelegation stores all of a single delegator's unbonding bonds\nfor a single validator in an time-ordered list.","type":"object","properties":{"delegator_address":{"description":"delegator_address is the encoded address of the delegator.","type":"string"},"entries":{"description":"entries are the unbonding delegation entries.\n\nunbonding delegation entries","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.staking.v1beta1.UnbondingDelegationEntry"}},"validator_address":{"description":"validator_address is the encoded address of the validator.","type":"string"}}},"cosmos.staking.v1beta1.UnbondingDelegationEntry":{"description":"UnbondingDelegationEntry defines an unbonding object with relevant metadata.","type":"object","properties":{"balance":{"description":"balance defines the tokens to receive at completion.","type":"string"},"completion_time":{"description":"completion_time is the unix time for unbonding completion.","type":"string","format":"date-time"},"creation_height":{"description":"creation_height is the height which the unbonding took place.","type":"string","format":"int64"},"initial_balance":{"description":"initial_balance defines the tokens initially scheduled to receive at completion.","type":"string"},"unbonding_id":{"type":"string","format":"uint64","title":"Incrementing id that uniquely identifies this entry"},"unbonding_on_hold_ref_count":{"type":"string","format":"int64","title":"Strictly positive if this entry's unbonding has been stopped by external modules"}}},"cosmos.staking.v1beta1.Validator":{"description":"Validator defines a validator, together with the total amount of the\nValidator's bond shares and their exchange rate to coins. Slashing results in\na decrease in the exchange rate, allowing correct calculation of future\nundelegations without iterating over delegators. When coins are delegated to\nthis validator, the validator is credited with a delegation whose number of\nbond shares is based on the amount of coins delegated divided by the current\nexchange rate. Voting power can be calculated as total bonded shares\nmultiplied by exchange rate.","type":"object","properties":{"commission":{"description":"commission defines the commission parameters.","$ref":"#/definitions/cosmos.staking.v1beta1.Commission"},"consensus_pubkey":{"description":"consensus_pubkey is the consensus public key of the validator, as a Protobuf Any.","$ref":"#/definitions/google.protobuf.Any"},"delegator_shares":{"description":"delegator_shares defines total shares issued to a validator's delegators.","type":"string"},"description":{"description":"description defines the description terms for the validator.","$ref":"#/definitions/cosmos.staking.v1beta1.Description"},"jailed":{"description":"jailed defined whether the validator has been jailed from bonded status or not.","type":"boolean"},"min_self_delegation":{"description":"min_self_delegation is the validator's self declared minimum self delegation.\n\nSince: cosmos-sdk 0.46","type":"string"},"operator_address":{"description":"operator_address defines the address of the validator's operator; bech encoded in JSON.","type":"string"},"status":{"description":"status is the validator status (bonded/unbonding/unbonded).","$ref":"#/definitions/cosmos.staking.v1beta1.BondStatus"},"tokens":{"description":"tokens define the delegated tokens (incl. self-delegation).","type":"string"},"unbonding_height":{"description":"unbonding_height defines, if unbonding, the height at which this validator has begun unbonding.","type":"string","format":"int64"},"unbonding_ids":{"type":"array","title":"list of unbonding ids, each uniquely identifing an unbonding of this validator","items":{"type":"string","format":"uint64"}},"unbonding_on_hold_ref_count":{"type":"string","format":"int64","title":"strictly positive if this validator's unbonding has been stopped by external modules"},"unbonding_time":{"description":"unbonding_time defines, if unbonding, the min time for the validator to complete unbonding.","type":"string","format":"date-time"}}},"cosmos.store.streaming.abci.ListenCommitRequest":{"type":"object","title":"ListenCommitRequest is the request type for the ListenCommit RPC method","properties":{"block_height":{"type":"string","format":"int64","title":"explicitly pass in block height as ResponseCommit does not contain this info"},"change_set":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.store.v1beta1.StoreKVPair"}},"res":{"$ref":"#/definitions/tendermint.abci.ResponseCommit"}}},"cosmos.store.streaming.abci.ListenCommitResponse":{"type":"object","title":"ListenCommitResponse is the response type for the ListenCommit RPC method"},"cosmos.store.streaming.abci.ListenFinalizeBlockRequest":{"type":"object","title":"ListenEndBlockRequest is the request type for the ListenEndBlock RPC method","properties":{"req":{"$ref":"#/definitions/tendermint.abci.RequestFinalizeBlock"},"res":{"$ref":"#/definitions/tendermint.abci.ResponseFinalizeBlock"}}},"cosmos.store.streaming.abci.ListenFinalizeBlockResponse":{"type":"object","title":"ListenEndBlockResponse is the response type for the ListenEndBlock RPC method"},"cosmos.store.v1beta1.StoreKVPair":{"description":"Since: cosmos-sdk 0.43","type":"object","title":"StoreKVPair is a KVStore KVPair used for listening to state changes (Sets and Deletes)\nIt optionally includes the StoreKey for the originating KVStore and a Boolean flag to distinguish between Sets and\nDeletes","properties":{"delete":{"type":"boolean","title":"true indicates a delete operation, false indicates a set operation"},"key":{"type":"string","format":"byte"},"store_key":{"type":"string","title":"the store key for the KVStore this pair originates from"},"value":{"type":"string","format":"byte"}}},"cosmos.tx.signing.v1beta1.SignMode":{"description":"SignMode represents a signing mode with its own security guarantees.\n\nThis enum should be considered a registry of all known sign modes\nin the Cosmos ecosystem. Apps are not expected to support all known\nsign modes. Apps that would like to support custom sign modes are\nencouraged to open a small PR against this file to add a new case\nto this SignMode enum describing their sign mode so that different\napps have a consistent version of this enum.\n\n - SIGN_MODE_UNSPECIFIED: SIGN_MODE_UNSPECIFIED specifies an unknown signing mode and will be\nrejected.\n - SIGN_MODE_DIRECT: SIGN_MODE_DIRECT specifies a signing mode which uses SignDoc and is\nverified with raw bytes from Tx.\n - SIGN_MODE_TEXTUAL: SIGN_MODE_TEXTUAL is a future signing mode that will verify some\nhuman-readable textual representation on top of the binary representation\nfrom SIGN_MODE_DIRECT.\n\nSince: cosmos-sdk 0.50\n - SIGN_MODE_DIRECT_AUX: SIGN_MODE_DIRECT_AUX specifies a signing mode which uses\nSignDocDirectAux. As opposed to SIGN_MODE_DIRECT, this sign mode does not\nrequire signers signing over other signers' `signer_info`.\n\nSince: cosmos-sdk 0.46\n - SIGN_MODE_LEGACY_AMINO_JSON: SIGN_MODE_LEGACY_AMINO_JSON is a backwards compatibility mode which uses\nAmino JSON and will be removed in the future.\n - SIGN_MODE_EIP_191: SIGN_MODE_EIP_191 specifies the sign mode for EIP 191 signing on the Cosmos\nSDK. Ref: https://eips.ethereum.org/EIPS/eip-191\n\nCurrently, SIGN_MODE_EIP_191 is registered as a SignMode enum variant,\nbut is not implemented on the SDK by default. To enable EIP-191, you need\nto pass a custom `TxConfig` that has an implementation of\n`SignModeHandler` for EIP-191. The SDK may decide to fully support\nEIP-191 in the future.\n\nSince: cosmos-sdk 0.45.2","type":"string","default":"SIGN_MODE_UNSPECIFIED","enum":["SIGN_MODE_UNSPECIFIED","SIGN_MODE_DIRECT","SIGN_MODE_TEXTUAL","SIGN_MODE_DIRECT_AUX","SIGN_MODE_LEGACY_AMINO_JSON","SIGN_MODE_EIP_191"]},"cosmos.tx.v1beta1.AuthInfo":{"description":"AuthInfo describes the fee and signer modes that are used to sign a\ntransaction.","type":"object","properties":{"fee":{"description":"Fee is the fee and gas limit for the transaction. The first signer is the\nprimary signer and the one which pays the fee. The fee can be calculated\nbased on the cost of evaluating the body and doing signature verification\nof the signers. This can be estimated via simulation.","$ref":"#/definitions/cosmos.tx.v1beta1.Fee"},"signer_infos":{"description":"signer_infos defines the signing modes for the required signers. The number\nand order of elements must match the required signers from TxBody's\nmessages. The first element is the primary signer and the one which pays\nthe fee.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.tx.v1beta1.SignerInfo"}},"tip":{"description":"Tip is the optional tip used for transactions fees paid in another denom.\n\nThis field is ignored if the chain didn't enable tips, i.e. didn't add the\n`TipDecorator` in its posthandler.\n\nSince: cosmos-sdk 0.46","$ref":"#/definitions/cosmos.tx.v1beta1.Tip"}}},"cosmos.tx.v1beta1.BroadcastMode":{"description":"BroadcastMode specifies the broadcast mode for the TxService.Broadcast RPC\nmethod.\n\n - BROADCAST_MODE_UNSPECIFIED: zero-value for mode ordering\n - BROADCAST_MODE_BLOCK: DEPRECATED: use BROADCAST_MODE_SYNC instead,\nBROADCAST_MODE_BLOCK is not supported by the SDK from v0.47.x onwards.\n - BROADCAST_MODE_SYNC: BROADCAST_MODE_SYNC defines a tx broadcasting mode where the client waits\nfor a CheckTx execution response only.\n - BROADCAST_MODE_ASYNC: BROADCAST_MODE_ASYNC defines a tx broadcasting mode where the client\nreturns immediately.","type":"string","default":"BROADCAST_MODE_UNSPECIFIED","enum":["BROADCAST_MODE_UNSPECIFIED","BROADCAST_MODE_BLOCK","BROADCAST_MODE_SYNC","BROADCAST_MODE_ASYNC"]},"cosmos.tx.v1beta1.BroadcastTxRequest":{"description":"BroadcastTxRequest is the request type for the Service.BroadcastTxRequest\nRPC method.","type":"object","properties":{"mode":{"$ref":"#/definitions/cosmos.tx.v1beta1.BroadcastMode"},"tx_bytes":{"description":"tx_bytes is the raw transaction.","type":"string","format":"byte"}}},"cosmos.tx.v1beta1.BroadcastTxResponse":{"description":"BroadcastTxResponse is the response type for the\nService.BroadcastTx method.","type":"object","properties":{"tx_response":{"description":"tx_response is the queried TxResponses.","$ref":"#/definitions/cosmos.base.abci.v1beta1.TxResponse"}}},"cosmos.tx.v1beta1.Fee":{"description":"Fee includes the amount of coins paid in fees and the maximum\ngas to be used by the transaction. The ratio yields an effective \"gasprice\",\nwhich must be above some miminum to be accepted into the mempool.","type":"object","properties":{"amount":{"type":"array","title":"amount is the amount of coins to be paid as a fee","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"gas_limit":{"type":"string","format":"uint64","title":"gas_limit is the maximum gas that can be used in transaction processing\nbefore an out of gas error occurs"},"granter":{"type":"string","title":"if set, the fee payer (either the first signer or the value of the payer field) requests that a fee grant be used\nto pay fees instead of the fee payer's own balance. If an appropriate fee grant does not exist or the chain does\nnot support fee grants, this will fail"},"payer":{"description":"if unset, the first signer is responsible for paying the fees. If set, the specified account must pay the fees.\nthe payer must be a tx signer (and thus have signed this field in AuthInfo).\nsetting this field does *not* change the ordering of required signers for the transaction.","type":"string"}}},"cosmos.tx.v1beta1.GetBlockWithTxsResponse":{"description":"GetBlockWithTxsResponse is the response type for the Service.GetBlockWithTxs\nmethod.\n\nSince: cosmos-sdk 0.45.2","type":"object","properties":{"block":{"$ref":"#/definitions/tendermint.types.Block"},"block_id":{"$ref":"#/definitions/tendermint.types.BlockID"},"pagination":{"description":"pagination defines a pagination for the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"txs":{"description":"txs are the transactions in the block.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.tx.v1beta1.Tx"}}}},"cosmos.tx.v1beta1.GetTxResponse":{"description":"GetTxResponse is the response type for the Service.GetTx method.","type":"object","properties":{"tx":{"description":"tx is the queried transaction.","$ref":"#/definitions/cosmos.tx.v1beta1.Tx"},"tx_response":{"description":"tx_response is the queried TxResponses.","$ref":"#/definitions/cosmos.base.abci.v1beta1.TxResponse"}}},"cosmos.tx.v1beta1.GetTxsEventResponse":{"description":"GetTxsEventResponse is the response type for the Service.TxsByEvents\nRPC method.","type":"object","properties":{"pagination":{"description":"pagination defines a pagination for the response.\nDeprecated post v0.46.x: use total instead.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"total":{"type":"string","format":"uint64","title":"total is total number of results available"},"tx_responses":{"description":"tx_responses is the list of queried TxResponses.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.abci.v1beta1.TxResponse"}},"txs":{"description":"txs is the list of queried transactions.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.tx.v1beta1.Tx"}}}},"cosmos.tx.v1beta1.ModeInfo":{"description":"ModeInfo describes the signing mode of a single or nested multisig signer.","type":"object","properties":{"multi":{"title":"multi represents a nested multisig signer","$ref":"#/definitions/cosmos.tx.v1beta1.ModeInfo.Multi"},"single":{"title":"single represents a single signer","$ref":"#/definitions/cosmos.tx.v1beta1.ModeInfo.Single"}}},"cosmos.tx.v1beta1.ModeInfo.Multi":{"type":"object","title":"Multi is the mode info for a multisig public key","properties":{"bitarray":{"title":"bitarray specifies which keys within the multisig are signing","$ref":"#/definitions/cosmos.crypto.multisig.v1beta1.CompactBitArray"},"mode_infos":{"type":"array","title":"mode_infos is the corresponding modes of the signers of the multisig\nwhich could include nested multisig public keys","items":{"type":"object","$ref":"#/definitions/cosmos.tx.v1beta1.ModeInfo"}}}},"cosmos.tx.v1beta1.ModeInfo.Single":{"type":"object","title":"Single is the mode info for a single signer. It is structured as a message\nto allow for additional fields such as locale for SIGN_MODE_TEXTUAL in the\nfuture","properties":{"mode":{"title":"mode is the signing mode of the single signer","$ref":"#/definitions/cosmos.tx.signing.v1beta1.SignMode"}}},"cosmos.tx.v1beta1.OrderBy":{"description":"- ORDER_BY_UNSPECIFIED: ORDER_BY_UNSPECIFIED specifies an unknown sorting order. OrderBy defaults\nto ASC in this case.\n - ORDER_BY_ASC: ORDER_BY_ASC defines ascending order\n - ORDER_BY_DESC: ORDER_BY_DESC defines descending order","type":"string","title":"OrderBy defines the sorting order","default":"ORDER_BY_UNSPECIFIED","enum":["ORDER_BY_UNSPECIFIED","ORDER_BY_ASC","ORDER_BY_DESC"]},"cosmos.tx.v1beta1.SignerInfo":{"description":"SignerInfo describes the public key and signing mode of a single top-level\nsigner.","type":"object","properties":{"mode_info":{"title":"mode_info describes the signing mode of the signer and is a nested\nstructure to support nested multisig pubkey's","$ref":"#/definitions/cosmos.tx.v1beta1.ModeInfo"},"public_key":{"description":"public_key is the public key of the signer. It is optional for accounts\nthat already exist in state. If unset, the verifier can use the required \\\nsigner address for this position and lookup the public key.","$ref":"#/definitions/google.protobuf.Any"},"sequence":{"description":"sequence is the sequence of the account, which describes the\nnumber of committed transactions signed by a given address. It is used to\nprevent replay attacks.","type":"string","format":"uint64"}}},"cosmos.tx.v1beta1.SimulateRequest":{"description":"SimulateRequest is the request type for the Service.Simulate\nRPC method.","type":"object","properties":{"tx":{"description":"tx is the transaction to simulate.\nDeprecated. Send raw tx bytes instead.","$ref":"#/definitions/cosmos.tx.v1beta1.Tx"},"tx_bytes":{"description":"tx_bytes is the raw transaction.\n\nSince: cosmos-sdk 0.43","type":"string","format":"byte"}}},"cosmos.tx.v1beta1.SimulateResponse":{"description":"SimulateResponse is the response type for the\nService.SimulateRPC method.","type":"object","properties":{"gas_info":{"description":"gas_info is the information about gas used in the simulation.","$ref":"#/definitions/cosmos.base.abci.v1beta1.GasInfo"},"result":{"description":"result is the result of the simulation.","$ref":"#/definitions/cosmos.base.abci.v1beta1.Result"}}},"cosmos.tx.v1beta1.Tip":{"description":"Tip is the tip used for meta-transactions.\n\nSince: cosmos-sdk 0.46","type":"object","properties":{"amount":{"type":"array","title":"amount is the amount of the tip","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"tipper":{"type":"string","title":"tipper is the address of the account paying for the tip"}}},"cosmos.tx.v1beta1.Tx":{"description":"Tx is the standard type used for broadcasting transactions.","type":"object","properties":{"auth_info":{"title":"auth_info is the authorization related content of the transaction,\nspecifically signers, signer modes and fee","$ref":"#/definitions/cosmos.tx.v1beta1.AuthInfo"},"body":{"title":"body is the processable content of the transaction","$ref":"#/definitions/cosmos.tx.v1beta1.TxBody"},"signatures":{"description":"signatures is a list of signatures that matches the length and order of\nAuthInfo's signer_infos to allow connecting signature meta information like\npublic key and signing mode by position.","type":"array","items":{"type":"string","format":"byte"}}}},"cosmos.tx.v1beta1.TxBody":{"description":"TxBody is the body of a transaction that all signers sign over.","type":"object","properties":{"extension_options":{"type":"array","title":"extension_options are arbitrary options that can be added by chains\nwhen the default options are not sufficient. If any of these are present\nand can't be handled, the transaction will be rejected","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}},"memo":{"description":"memo is any arbitrary note/comment to be added to the transaction.\nWARNING: in clients, any publicly exposed text should not be called memo,\nbut should be called `note` instead (see https://github.com/cosmos/cosmos-sdk/issues/9122).","type":"string"},"messages":{"description":"messages is a list of messages to be executed. The required signers of\nthose messages define the number and order of elements in AuthInfo's\nsigner_infos and Tx's signatures. Each required signer address is added to\nthe list only the first time it occurs.\nBy convention, the first required signer (usually from the first message)\nis referred to as the primary signer and pays the fee for the whole\ntransaction.","type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}},"non_critical_extension_options":{"type":"array","title":"extension_options are arbitrary options that can be added by chains\nwhen the default options are not sufficient. If any of these are present\nand can't be handled, they will be ignored","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}},"timeout_height":{"type":"string","format":"uint64","title":"timeout is the block height after which this transaction will not\nbe processed by the chain"}}},"cosmos.tx.v1beta1.TxDecodeAminoRequest":{"description":"TxDecodeAminoRequest is the request type for the Service.TxDecodeAmino\nRPC method.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"amino_binary":{"type":"string","format":"byte"}}},"cosmos.tx.v1beta1.TxDecodeAminoResponse":{"description":"TxDecodeAminoResponse is the response type for the Service.TxDecodeAmino\nRPC method.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"amino_json":{"type":"string"}}},"cosmos.tx.v1beta1.TxDecodeRequest":{"description":"TxDecodeRequest is the request type for the Service.TxDecode\nRPC method.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"tx_bytes":{"description":"tx_bytes is the raw transaction.","type":"string","format":"byte"}}},"cosmos.tx.v1beta1.TxDecodeResponse":{"description":"TxDecodeResponse is the response type for the\nService.TxDecode method.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"tx":{"description":"tx is the decoded transaction.","$ref":"#/definitions/cosmos.tx.v1beta1.Tx"}}},"cosmos.tx.v1beta1.TxEncodeAminoRequest":{"description":"TxEncodeAminoRequest is the request type for the Service.TxEncodeAmino\nRPC method.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"amino_json":{"type":"string"}}},"cosmos.tx.v1beta1.TxEncodeAminoResponse":{"description":"TxEncodeAminoResponse is the response type for the Service.TxEncodeAmino\nRPC method.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"amino_binary":{"type":"string","format":"byte"}}},"cosmos.tx.v1beta1.TxEncodeRequest":{"description":"TxEncodeRequest is the request type for the Service.TxEncode\nRPC method.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"tx":{"description":"tx is the transaction to encode.","$ref":"#/definitions/cosmos.tx.v1beta1.Tx"}}},"cosmos.tx.v1beta1.TxEncodeResponse":{"description":"TxEncodeResponse is the response type for the\nService.TxEncode method.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"tx_bytes":{"description":"tx_bytes is the encoded transaction bytes.","type":"string","format":"byte"}}},"cosmos.upgrade.v1beta1.ModuleVersion":{"description":"ModuleVersion specifies a module and its consensus version.\n\nSince: cosmos-sdk 0.43","type":"object","properties":{"name":{"type":"string","title":"name of the app module"},"version":{"type":"string","format":"uint64","title":"consensus version of the app module"}}},"cosmos.upgrade.v1beta1.MsgCancelUpgrade":{"description":"MsgCancelUpgrade is the Msg/CancelUpgrade request type.\n\nSince: cosmos-sdk 0.46","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"}}},"cosmos.upgrade.v1beta1.MsgCancelUpgradeResponse":{"description":"MsgCancelUpgradeResponse is the Msg/CancelUpgrade response type.\n\nSince: cosmos-sdk 0.46","type":"object"},"cosmos.upgrade.v1beta1.MsgSoftwareUpgrade":{"description":"MsgSoftwareUpgrade is the Msg/SoftwareUpgrade request type.\n\nSince: cosmos-sdk 0.46","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"plan":{"description":"plan is the upgrade plan.","$ref":"#/definitions/cosmos.upgrade.v1beta1.Plan"}}},"cosmos.upgrade.v1beta1.MsgSoftwareUpgradeResponse":{"description":"MsgSoftwareUpgradeResponse is the Msg/SoftwareUpgrade response type.\n\nSince: cosmos-sdk 0.46","type":"object"},"cosmos.upgrade.v1beta1.Plan":{"description":"Plan specifies information about a planned upgrade and when it should occur.","type":"object","properties":{"height":{"description":"The height at which the upgrade must be performed.","type":"string","format":"int64"},"info":{"type":"string","title":"Any application specific upgrade info to be included on-chain\nsuch as a git commit that validators could automatically upgrade to"},"name":{"description":"Sets the name for the upgrade. This name will be used by the upgraded\nversion of the software to apply any special \"on-upgrade\" commands during\nthe first BeginBlock method after the upgrade is applied. It is also used\nto detect whether a software version can handle a given upgrade. If no\nupgrade handler with this name has been set in the software, it will be\nassumed that the software is out-of-date when the upgrade Time or Height is\nreached and the software will exit.","type":"string"},"time":{"description":"Deprecated: Time based upgrades have been deprecated. Time based upgrade logic\nhas been removed from the SDK.\nIf this field is not empty, an error will be thrown.","type":"string","format":"date-time"},"upgraded_client_state":{"description":"Deprecated: UpgradedClientState field has been deprecated. IBC upgrade logic has been\nmoved to the IBC module in the sub module 02-client.\nIf this field is not empty, an error will be thrown.","$ref":"#/definitions/google.protobuf.Any"}}},"cosmos.upgrade.v1beta1.QueryAppliedPlanResponse":{"description":"QueryAppliedPlanResponse is the response type for the Query/AppliedPlan RPC\nmethod.","type":"object","properties":{"height":{"description":"height is the block height at which the plan was applied.","type":"string","format":"int64"}}},"cosmos.upgrade.v1beta1.QueryAuthorityResponse":{"description":"Since: cosmos-sdk 0.46","type":"object","title":"QueryAuthorityResponse is the response type for Query/Authority","properties":{"address":{"type":"string"}}},"cosmos.upgrade.v1beta1.QueryCurrentPlanResponse":{"description":"QueryCurrentPlanResponse is the response type for the Query/CurrentPlan RPC\nmethod.","type":"object","properties":{"plan":{"description":"plan is the current upgrade plan.","$ref":"#/definitions/cosmos.upgrade.v1beta1.Plan"}}},"cosmos.upgrade.v1beta1.QueryModuleVersionsResponse":{"description":"QueryModuleVersionsResponse is the response type for the Query/ModuleVersions\nRPC method.\n\nSince: cosmos-sdk 0.43","type":"object","properties":{"module_versions":{"description":"module_versions is a list of module names with their consensus versions.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.upgrade.v1beta1.ModuleVersion"}}}},"cosmos.upgrade.v1beta1.QueryUpgradedConsensusStateResponse":{"description":"QueryUpgradedConsensusStateResponse is the response type for the Query/UpgradedConsensusState\nRPC method.","type":"object","properties":{"upgraded_consensus_state":{"type":"string","format":"byte","title":"Since: cosmos-sdk 0.43"}}},"cosmos.vesting.v1beta1.MsgCreatePeriodicVestingAccount":{"description":"MsgCreateVestingAccount defines a message that enables creating a vesting\naccount.\n\nSince: cosmos-sdk 0.46","type":"object","properties":{"from_address":{"type":"string"},"start_time":{"description":"start of vesting as unix time (in seconds).","type":"string","format":"int64"},"to_address":{"type":"string"},"vesting_periods":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.vesting.v1beta1.Period"}}}},"cosmos.vesting.v1beta1.MsgCreatePeriodicVestingAccountResponse":{"description":"MsgCreateVestingAccountResponse defines the Msg/CreatePeriodicVestingAccount\nresponse type.\n\nSince: cosmos-sdk 0.46","type":"object"},"cosmos.vesting.v1beta1.MsgCreatePermanentLockedAccount":{"description":"MsgCreatePermanentLockedAccount defines a message that enables creating a permanent\nlocked account.\n\nSince: cosmos-sdk 0.46","type":"object","properties":{"amount":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"from_address":{"type":"string"},"to_address":{"type":"string"}}},"cosmos.vesting.v1beta1.MsgCreatePermanentLockedAccountResponse":{"description":"MsgCreatePermanentLockedAccountResponse defines the Msg/CreatePermanentLockedAccount response type.\n\nSince: cosmos-sdk 0.46","type":"object"},"cosmos.vesting.v1beta1.MsgCreateVestingAccount":{"description":"MsgCreateVestingAccount defines a message that enables creating a vesting\naccount.","type":"object","properties":{"amount":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"delayed":{"type":"boolean"},"end_time":{"description":"end of vesting as unix time (in seconds).","type":"string","format":"int64"},"from_address":{"type":"string"},"to_address":{"type":"string"}}},"cosmos.vesting.v1beta1.MsgCreateVestingAccountResponse":{"description":"MsgCreateVestingAccountResponse defines the Msg/CreateVestingAccount response type.","type":"object"},"cosmos.vesting.v1beta1.Period":{"description":"Period defines a length of time and amount of coins that will vest.","type":"object","properties":{"amount":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"length":{"description":"Period duration in seconds.","type":"string","format":"int64"}}},"google.protobuf.Any":{"type":"object","properties":{"@type":{"type":"string"}},"additionalProperties":{}},"google.rpc.Status":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"details":{"type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}},"message":{"type":"string"}}},"ibc.applications.fee.v1.Fee":{"type":"object","title":"Fee defines the ICS29 receive, acknowledgement and timeout fees","properties":{"ack_fee":{"type":"array","title":"the packet acknowledgement fee","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"recv_fee":{"type":"array","title":"the packet receive fee","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"timeout_fee":{"type":"array","title":"the packet timeout fee","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"ibc.applications.fee.v1.FeeEnabledChannel":{"type":"object","title":"FeeEnabledChannel contains the PortID \u0026 ChannelID for a fee enabled channel","properties":{"channel_id":{"type":"string","title":"unique channel identifier"},"port_id":{"type":"string","title":"unique port identifier"}}},"ibc.applications.fee.v1.IdentifiedPacketFees":{"type":"object","title":"IdentifiedPacketFees contains a list of type PacketFee and associated PacketId","properties":{"packet_fees":{"type":"array","title":"list of packet fees","items":{"type":"object","$ref":"#/definitions/ibc.applications.fee.v1.PacketFee"}},"packet_id":{"title":"unique packet identifier comprised of the channel ID, port ID and sequence","$ref":"#/definitions/ibc.core.channel.v1.PacketId"}}},"ibc.applications.fee.v1.MsgPayPacketFee":{"type":"object","title":"MsgPayPacketFee defines the request type for the PayPacketFee rpc\nThis Msg can be used to pay for a packet at the next sequence send \u0026 should be combined with the Msg that will be\npaid for","properties":{"fee":{"title":"fee encapsulates the recv, ack and timeout fees associated with an IBC packet","$ref":"#/definitions/ibc.applications.fee.v1.Fee"},"relayers":{"type":"array","title":"optional list of relayers permitted to the receive packet fees","items":{"type":"string"}},"signer":{"type":"string","title":"account address to refund fee if necessary"},"source_channel_id":{"type":"string","title":"the source channel unique identifer"},"source_port_id":{"type":"string","title":"the source port unique identifier"}}},"ibc.applications.fee.v1.MsgPayPacketFeeAsync":{"type":"object","title":"MsgPayPacketFeeAsync defines the request type for the PayPacketFeeAsync rpc\nThis Msg can be used to pay for a packet at a specified sequence (instead of the next sequence send)","properties":{"packet_fee":{"title":"the packet fee associated with a particular IBC packet","$ref":"#/definitions/ibc.applications.fee.v1.PacketFee"},"packet_id":{"title":"unique packet identifier comprised of the channel ID, port ID and sequence","$ref":"#/definitions/ibc.core.channel.v1.PacketId"}}},"ibc.applications.fee.v1.MsgPayPacketFeeAsyncResponse":{"type":"object","title":"MsgPayPacketFeeAsyncResponse defines the response type for the PayPacketFeeAsync rpc"},"ibc.applications.fee.v1.MsgPayPacketFeeResponse":{"type":"object","title":"MsgPayPacketFeeResponse defines the response type for the PayPacketFee rpc"},"ibc.applications.fee.v1.MsgRegisterCounterpartyPayee":{"type":"object","title":"MsgRegisterCounterpartyPayee defines the request type for the RegisterCounterpartyPayee rpc","properties":{"channel_id":{"type":"string","title":"unique channel identifier"},"counterparty_payee":{"type":"string","title":"the counterparty payee address"},"port_id":{"type":"string","title":"unique port identifier"},"relayer":{"type":"string","title":"the relayer address"}}},"ibc.applications.fee.v1.MsgRegisterCounterpartyPayeeResponse":{"type":"object","title":"MsgRegisterCounterpartyPayeeResponse defines the response type for the RegisterCounterpartyPayee rpc"},"ibc.applications.fee.v1.MsgRegisterPayee":{"type":"object","title":"MsgRegisterPayee defines the request type for the RegisterPayee rpc","properties":{"channel_id":{"type":"string","title":"unique channel identifier"},"payee":{"type":"string","title":"the payee address"},"port_id":{"type":"string","title":"unique port identifier"},"relayer":{"type":"string","title":"the relayer address"}}},"ibc.applications.fee.v1.MsgRegisterPayeeResponse":{"type":"object","title":"MsgRegisterPayeeResponse defines the response type for the RegisterPayee rpc"},"ibc.applications.fee.v1.PacketFee":{"type":"object","title":"PacketFee contains ICS29 relayer fees, refund address and optional list of permitted relayers","properties":{"fee":{"title":"fee encapsulates the recv, ack and timeout fees associated with an IBC packet","$ref":"#/definitions/ibc.applications.fee.v1.Fee"},"refund_address":{"type":"string","title":"the refund address for unspent fees"},"relayers":{"type":"array","title":"optional list of relayers permitted to receive fees","items":{"type":"string"}}}},"ibc.applications.fee.v1.QueryCounterpartyPayeeResponse":{"type":"object","title":"QueryCounterpartyPayeeResponse defines the response type for the CounterpartyPayee rpc","properties":{"counterparty_payee":{"type":"string","title":"the counterparty payee address used to compensate forward relaying"}}},"ibc.applications.fee.v1.QueryFeeEnabledChannelResponse":{"type":"object","title":"QueryFeeEnabledChannelResponse defines the response type for the FeeEnabledChannel rpc","properties":{"fee_enabled":{"type":"boolean","title":"boolean flag representing the fee enabled channel status"}}},"ibc.applications.fee.v1.QueryFeeEnabledChannelsResponse":{"type":"object","title":"QueryFeeEnabledChannelsResponse defines the response type for the FeeEnabledChannels rpc","properties":{"fee_enabled_channels":{"type":"array","title":"list of fee enabled channels","items":{"type":"object","$ref":"#/definitions/ibc.applications.fee.v1.FeeEnabledChannel"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.applications.fee.v1.QueryIncentivizedPacketResponse":{"type":"object","title":"QueryIncentivizedPacketsResponse defines the response type for the IncentivizedPacket rpc","properties":{"incentivized_packet":{"title":"the identified fees for the incentivized packet","$ref":"#/definitions/ibc.applications.fee.v1.IdentifiedPacketFees"}}},"ibc.applications.fee.v1.QueryIncentivizedPacketsForChannelResponse":{"type":"object","title":"QueryIncentivizedPacketsResponse defines the response type for the incentivized packets RPC","properties":{"incentivized_packets":{"type":"array","title":"Map of all incentivized_packets","items":{"type":"object","$ref":"#/definitions/ibc.applications.fee.v1.IdentifiedPacketFees"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.applications.fee.v1.QueryIncentivizedPacketsResponse":{"type":"object","title":"QueryIncentivizedPacketsResponse defines the response type for the IncentivizedPackets rpc","properties":{"incentivized_packets":{"type":"array","title":"list of identified fees for incentivized packets","items":{"type":"object","$ref":"#/definitions/ibc.applications.fee.v1.IdentifiedPacketFees"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.applications.fee.v1.QueryPayeeResponse":{"type":"object","title":"QueryPayeeResponse defines the response type for the Payee rpc","properties":{"payee_address":{"type":"string","title":"the payee address to which packet fees are paid out"}}},"ibc.applications.fee.v1.QueryTotalAckFeesResponse":{"type":"object","title":"QueryTotalAckFeesResponse defines the response type for the TotalAckFees rpc","properties":{"ack_fees":{"type":"array","title":"the total packet acknowledgement fees","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"ibc.applications.fee.v1.QueryTotalRecvFeesResponse":{"type":"object","title":"QueryTotalRecvFeesResponse defines the response type for the TotalRecvFees rpc","properties":{"recv_fees":{"type":"array","title":"the total packet receive fees","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"ibc.applications.fee.v1.QueryTotalTimeoutFeesResponse":{"type":"object","title":"QueryTotalTimeoutFeesResponse defines the response type for the TotalTimeoutFees rpc","properties":{"timeout_fees":{"type":"array","title":"the total packet timeout fees","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"ibc.applications.interchain_accounts.controller.v1.MsgRegisterInterchainAccount":{"type":"object","title":"MsgRegisterInterchainAccount defines the payload for Msg/RegisterAccount","properties":{"connection_id":{"type":"string"},"ordering":{"$ref":"#/definitions/ibc.core.channel.v1.Order"},"owner":{"type":"string"},"version":{"type":"string"}}},"ibc.applications.interchain_accounts.controller.v1.MsgRegisterInterchainAccountResponse":{"type":"object","title":"MsgRegisterInterchainAccountResponse defines the response for Msg/RegisterAccount","properties":{"channel_id":{"type":"string"},"port_id":{"type":"string"}}},"ibc.applications.interchain_accounts.controller.v1.MsgSendTx":{"type":"object","title":"MsgSendTx defines the payload for Msg/SendTx","properties":{"connection_id":{"type":"string"},"owner":{"type":"string"},"packet_data":{"$ref":"#/definitions/ibc.applications.interchain_accounts.v1.InterchainAccountPacketData"},"relative_timeout":{"description":"Relative timeout timestamp provided will be added to the current block time during transaction execution.\nThe timeout timestamp must be non-zero.","type":"string","format":"uint64"}}},"ibc.applications.interchain_accounts.controller.v1.MsgSendTxResponse":{"type":"object","title":"MsgSendTxResponse defines the response for MsgSendTx","properties":{"sequence":{"type":"string","format":"uint64"}}},"ibc.applications.interchain_accounts.controller.v1.MsgUpdateParams":{"type":"object","title":"MsgUpdateParams defines the payload for Msg/UpdateParams","properties":{"params":{"description":"params defines the 27-interchain-accounts/controller parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/ibc.applications.interchain_accounts.controller.v1.Params"},"signer":{"type":"string","title":"signer address"}}},"ibc.applications.interchain_accounts.controller.v1.MsgUpdateParamsResponse":{"type":"object","title":"MsgUpdateParamsResponse defines the response for Msg/UpdateParams"},"ibc.applications.interchain_accounts.controller.v1.Params":{"description":"Params defines the set of on-chain interchain accounts parameters.\nThe following parameters may be used to disable the controller submodule.","type":"object","properties":{"controller_enabled":{"description":"controller_enabled enables or disables the controller submodule.","type":"boolean"}}},"ibc.applications.interchain_accounts.controller.v1.QueryInterchainAccountResponse":{"description":"QueryInterchainAccountResponse the response type for the Query/InterchainAccount RPC method.","type":"object","properties":{"address":{"type":"string"}}},"ibc.applications.interchain_accounts.controller.v1.QueryParamsResponse":{"description":"QueryParamsResponse is the response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params defines the parameters of the module.","$ref":"#/definitions/ibc.applications.interchain_accounts.controller.v1.Params"}}},"ibc.applications.interchain_accounts.host.v1.MsgModuleQuerySafe":{"type":"object","title":"MsgModuleQuerySafe defines the payload for Msg/ModuleQuerySafe","properties":{"requests":{"description":"requests defines the module safe queries to execute.","type":"array","items":{"type":"object","$ref":"#/definitions/ibc.applications.interchain_accounts.host.v1.QueryRequest"}},"signer":{"type":"string","title":"signer address"}}},"ibc.applications.interchain_accounts.host.v1.MsgModuleQuerySafeResponse":{"type":"object","title":"MsgModuleQuerySafeResponse defines the response for Msg/ModuleQuerySafe","properties":{"height":{"type":"string","format":"uint64","title":"height at which the responses were queried"},"responses":{"type":"array","title":"protobuf encoded responses for each query","items":{"type":"string","format":"byte"}}}},"ibc.applications.interchain_accounts.host.v1.MsgUpdateParams":{"type":"object","title":"MsgUpdateParams defines the payload for Msg/UpdateParams","properties":{"params":{"description":"params defines the 27-interchain-accounts/host parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/ibc.applications.interchain_accounts.host.v1.Params"},"signer":{"type":"string","title":"signer address"}}},"ibc.applications.interchain_accounts.host.v1.MsgUpdateParamsResponse":{"type":"object","title":"MsgUpdateParamsResponse defines the response for Msg/UpdateParams"},"ibc.applications.interchain_accounts.host.v1.Params":{"description":"Params defines the set of on-chain interchain accounts parameters.\nThe following parameters may be used to disable the host submodule.","type":"object","properties":{"allow_messages":{"description":"allow_messages defines a list of sdk message typeURLs allowed to be executed on a host chain.","type":"array","items":{"type":"string"}},"host_enabled":{"description":"host_enabled enables or disables the host submodule.","type":"boolean"}}},"ibc.applications.interchain_accounts.host.v1.QueryParamsResponse":{"description":"QueryParamsResponse is the response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params defines the parameters of the module.","$ref":"#/definitions/ibc.applications.interchain_accounts.host.v1.Params"}}},"ibc.applications.interchain_accounts.host.v1.QueryRequest":{"description":"QueryRequest defines the parameters for a particular query request\nby an interchain account.","type":"object","properties":{"data":{"type":"string","format":"byte","title":"data defines the payload of the query request as defined by ADR-021.\nhttps://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-021-protobuf-query-encoding.md#custom-query-registration-and-routing"},"path":{"type":"string","title":"path defines the path of the query request as defined by ADR-021.\nhttps://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-021-protobuf-query-encoding.md#custom-query-registration-and-routing"}}},"ibc.applications.interchain_accounts.v1.InterchainAccountPacketData":{"description":"InterchainAccountPacketData is comprised of a raw transaction, type of transaction and optional memo field.","type":"object","properties":{"data":{"type":"string","format":"byte"},"memo":{"type":"string"},"type":{"$ref":"#/definitions/ibc.applications.interchain_accounts.v1.Type"}}},"ibc.applications.interchain_accounts.v1.Type":{"description":"- TYPE_UNSPECIFIED: Default zero value enumeration\n - TYPE_EXECUTE_TX: Execute a transaction on an interchain accounts host chain","type":"string","title":"Type defines a classification of message issued from a controller chain to its associated interchain accounts\nhost","default":"TYPE_UNSPECIFIED","enum":["TYPE_UNSPECIFIED","TYPE_EXECUTE_TX"]},"ibc.applications.transfer.v1.DenomTrace":{"description":"DenomTrace contains the base denomination for ICS20 fungible tokens and the\nsource tracing information path.","type":"object","properties":{"base_denom":{"description":"base denomination of the relayed fungible token.","type":"string"},"path":{"description":"path defines the chain of port/channel identifiers used for tracing the\nsource of the fungible token.","type":"string"}}},"ibc.applications.transfer.v1.MsgTransfer":{"type":"object","title":"MsgTransfer defines a msg to transfer fungible tokens (i.e Coins) between\nICS20 enabled chains. See ICS Spec here:\nhttps://github.com/cosmos/ibc/tree/master/spec/app/ics-020-fungible-token-transfer#data-structures","properties":{"memo":{"type":"string","title":"optional memo"},"receiver":{"type":"string","title":"the recipient address on the destination chain"},"sender":{"type":"string","title":"the sender address"},"source_channel":{"type":"string","title":"the channel by which the packet will be sent"},"source_port":{"type":"string","title":"the port on which the packet will be sent"},"timeout_height":{"description":"Timeout height relative to the current block height.\nThe timeout is disabled when set to 0.","$ref":"#/definitions/ibc.core.client.v1.Height"},"timeout_timestamp":{"description":"Timeout timestamp in absolute nanoseconds since unix epoch.\nThe timeout is disabled when set to 0.","type":"string","format":"uint64"},"token":{"title":"the tokens to be transferred","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"ibc.applications.transfer.v1.MsgTransferResponse":{"description":"MsgTransferResponse defines the Msg/Transfer response type.","type":"object","properties":{"sequence":{"type":"string","format":"uint64","title":"sequence number of the transfer packet sent"}}},"ibc.applications.transfer.v1.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","type":"object","properties":{"params":{"description":"params defines the transfer parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/ibc.applications.transfer.v1.Params"},"signer":{"type":"string","title":"signer address"}}},"ibc.applications.transfer.v1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"ibc.applications.transfer.v1.Params":{"description":"Params defines the set of IBC transfer parameters.\nNOTE: To prevent a single token from being transferred, set the\nTransfersEnabled parameter to true and then set the bank module's SendEnabled\nparameter for the denomination to false.","type":"object","properties":{"receive_enabled":{"description":"receive_enabled enables or disables all cross-chain token transfers to this\nchain.","type":"boolean"},"send_enabled":{"description":"send_enabled enables or disables all cross-chain token transfers from this\nchain.","type":"boolean"}}},"ibc.applications.transfer.v1.QueryDenomHashResponse":{"description":"QueryDenomHashResponse is the response type for the Query/DenomHash RPC\nmethod.","type":"object","properties":{"hash":{"description":"hash (in hex format) of the denomination trace information.","type":"string"}}},"ibc.applications.transfer.v1.QueryDenomTraceResponse":{"description":"QueryDenomTraceResponse is the response type for the Query/DenomTrace RPC\nmethod.","type":"object","properties":{"denom_trace":{"description":"denom_trace returns the requested denomination trace information.","$ref":"#/definitions/ibc.applications.transfer.v1.DenomTrace"}}},"ibc.applications.transfer.v1.QueryDenomTracesResponse":{"description":"QueryConnectionsResponse is the response type for the Query/DenomTraces RPC\nmethod.","type":"object","properties":{"denom_traces":{"description":"denom_traces returns all denominations trace information.","type":"array","items":{"type":"object","$ref":"#/definitions/ibc.applications.transfer.v1.DenomTrace"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.applications.transfer.v1.QueryEscrowAddressResponse":{"description":"QueryEscrowAddressResponse is the response type of the EscrowAddress RPC method.","type":"object","properties":{"escrow_address":{"type":"string","title":"the escrow account address"}}},"ibc.applications.transfer.v1.QueryParamsResponse":{"description":"QueryParamsResponse is the response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params defines the parameters of the module.","$ref":"#/definitions/ibc.applications.transfer.v1.Params"}}},"ibc.applications.transfer.v1.QueryTotalEscrowForDenomResponse":{"description":"QueryTotalEscrowForDenomResponse is the response type for TotalEscrowForDenom RPC method.","type":"object","properties":{"amount":{"$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"ibc.core.channel.v1.Channel":{"description":"Channel defines pipeline for exactly-once packet delivery between specific\nmodules on separate blockchains, which has at least one end capable of\nsending packets and one end capable of receiving packets.","type":"object","properties":{"connection_hops":{"type":"array","title":"list of connection identifiers, in order, along which packets sent on\nthis channel will travel","items":{"type":"string"}},"counterparty":{"title":"counterparty channel end","$ref":"#/definitions/ibc.core.channel.v1.Counterparty"},"ordering":{"title":"whether the channel is ordered or unordered","$ref":"#/definitions/ibc.core.channel.v1.Order"},"state":{"title":"current state of the channel end","$ref":"#/definitions/ibc.core.channel.v1.State"},"upgrade_sequence":{"type":"string","format":"uint64","title":"upgrade sequence indicates the latest upgrade attempt performed by this channel\nthe value of 0 indicates the channel has never been upgraded"},"version":{"type":"string","title":"opaque channel version, which is agreed upon during the handshake"}}},"ibc.core.channel.v1.Counterparty":{"type":"object","title":"Counterparty defines a channel end counterparty","properties":{"channel_id":{"type":"string","title":"channel end on the counterparty chain"},"port_id":{"description":"port on the counterparty chain which owns the other end of the channel.","type":"string"}}},"ibc.core.channel.v1.ErrorReceipt":{"description":"ErrorReceipt defines a type which encapsulates the upgrade sequence and error associated with the\nupgrade handshake failure. When a channel upgrade handshake is aborted both chains are expected to increment to the\nnext sequence.","type":"object","properties":{"message":{"type":"string","title":"the error message detailing the cause of failure"},"sequence":{"type":"string","format":"uint64","title":"the channel upgrade sequence"}}},"ibc.core.channel.v1.IdentifiedChannel":{"description":"IdentifiedChannel defines a channel with additional port and channel\nidentifier fields.","type":"object","properties":{"channel_id":{"type":"string","title":"channel identifier"},"connection_hops":{"type":"array","title":"list of connection identifiers, in order, along which packets sent on\nthis channel will travel","items":{"type":"string"}},"counterparty":{"title":"counterparty channel end","$ref":"#/definitions/ibc.core.channel.v1.Counterparty"},"ordering":{"title":"whether the channel is ordered or unordered","$ref":"#/definitions/ibc.core.channel.v1.Order"},"port_id":{"type":"string","title":"port identifier"},"state":{"title":"current state of the channel end","$ref":"#/definitions/ibc.core.channel.v1.State"},"upgrade_sequence":{"type":"string","format":"uint64","title":"upgrade sequence indicates the latest upgrade attempt performed by this channel\nthe value of 0 indicates the channel has never been upgraded"},"version":{"type":"string","title":"opaque channel version, which is agreed upon during the handshake"}}},"ibc.core.channel.v1.MsgAcknowledgement":{"type":"object","title":"MsgAcknowledgement receives incoming IBC acknowledgement","properties":{"acknowledgement":{"type":"string","format":"byte"},"packet":{"$ref":"#/definitions/ibc.core.channel.v1.Packet"},"proof_acked":{"type":"string","format":"byte"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgAcknowledgementResponse":{"description":"MsgAcknowledgementResponse defines the Msg/Acknowledgement response type.","type":"object","properties":{"result":{"$ref":"#/definitions/ibc.core.channel.v1.ResponseResultType"}}},"ibc.core.channel.v1.MsgChannelCloseConfirm":{"description":"MsgChannelCloseConfirm defines a msg sent by a Relayer to Chain B\nto acknowledge the change of channel state to CLOSED on Chain A.","type":"object","properties":{"channel_id":{"type":"string"},"counterparty_upgrade_sequence":{"type":"string","format":"uint64"},"port_id":{"type":"string"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"proof_init":{"type":"string","format":"byte"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelCloseConfirmResponse":{"description":"MsgChannelCloseConfirmResponse defines the Msg/ChannelCloseConfirm response\ntype.","type":"object"},"ibc.core.channel.v1.MsgChannelCloseInit":{"description":"MsgChannelCloseInit defines a msg sent by a Relayer to Chain A\nto close a channel with Chain B.","type":"object","properties":{"channel_id":{"type":"string"},"port_id":{"type":"string"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelCloseInitResponse":{"description":"MsgChannelCloseInitResponse defines the Msg/ChannelCloseInit response type.","type":"object"},"ibc.core.channel.v1.MsgChannelOpenAck":{"description":"MsgChannelOpenAck defines a msg sent by a Relayer to Chain A to acknowledge\nthe change of channel state to TRYOPEN on Chain B.\nWARNING: a channel upgrade MUST NOT initialize an upgrade for this channel\nin the same block as executing this message otherwise the counterparty will\nbe incapable of opening.","type":"object","properties":{"channel_id":{"type":"string"},"counterparty_channel_id":{"type":"string"},"counterparty_version":{"type":"string"},"port_id":{"type":"string"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"proof_try":{"type":"string","format":"byte"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelOpenAckResponse":{"description":"MsgChannelOpenAckResponse defines the Msg/ChannelOpenAck response type.","type":"object"},"ibc.core.channel.v1.MsgChannelOpenConfirm":{"description":"MsgChannelOpenConfirm defines a msg sent by a Relayer to Chain B to\nacknowledge the change of channel state to OPEN on Chain A.","type":"object","properties":{"channel_id":{"type":"string"},"port_id":{"type":"string"},"proof_ack":{"type":"string","format":"byte"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelOpenConfirmResponse":{"description":"MsgChannelOpenConfirmResponse defines the Msg/ChannelOpenConfirm response\ntype.","type":"object"},"ibc.core.channel.v1.MsgChannelOpenInit":{"description":"MsgChannelOpenInit defines an sdk.Msg to initialize a channel handshake. It\nis called by a relayer on Chain A.","type":"object","properties":{"channel":{"$ref":"#/definitions/ibc.core.channel.v1.Channel"},"port_id":{"type":"string"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelOpenInitResponse":{"description":"MsgChannelOpenInitResponse defines the Msg/ChannelOpenInit response type.","type":"object","properties":{"channel_id":{"type":"string"},"version":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelOpenTry":{"description":"MsgChannelOpenInit defines a msg sent by a Relayer to try to open a channel\non Chain B. The version field within the Channel field has been deprecated. Its\nvalue will be ignored by core IBC.","type":"object","properties":{"channel":{"description":"NOTE: the version field within the channel has been deprecated. Its value will be ignored by core IBC.","$ref":"#/definitions/ibc.core.channel.v1.Channel"},"counterparty_version":{"type":"string"},"port_id":{"type":"string"},"previous_channel_id":{"description":"Deprecated: this field is unused. Crossing hello's are no longer supported in core IBC.","type":"string"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"proof_init":{"type":"string","format":"byte"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelOpenTryResponse":{"description":"MsgChannelOpenTryResponse defines the Msg/ChannelOpenTry response type.","type":"object","properties":{"channel_id":{"type":"string"},"version":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelUpgradeAck":{"type":"object","title":"MsgChannelUpgradeAck defines the request type for the ChannelUpgradeAck rpc","properties":{"channel_id":{"type":"string"},"counterparty_upgrade":{"$ref":"#/definitions/ibc.core.channel.v1.Upgrade"},"port_id":{"type":"string"},"proof_channel":{"type":"string","format":"byte"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"proof_upgrade":{"type":"string","format":"byte"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelUpgradeAckResponse":{"type":"object","title":"MsgChannelUpgradeAckResponse defines MsgChannelUpgradeAck response type","properties":{"result":{"$ref":"#/definitions/ibc.core.channel.v1.ResponseResultType"}}},"ibc.core.channel.v1.MsgChannelUpgradeCancel":{"type":"object","title":"MsgChannelUpgradeCancel defines the request type for the ChannelUpgradeCancel rpc","properties":{"channel_id":{"type":"string"},"error_receipt":{"$ref":"#/definitions/ibc.core.channel.v1.ErrorReceipt"},"port_id":{"type":"string"},"proof_error_receipt":{"type":"string","format":"byte"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelUpgradeCancelResponse":{"type":"object","title":"MsgChannelUpgradeCancelResponse defines the MsgChannelUpgradeCancel response type"},"ibc.core.channel.v1.MsgChannelUpgradeConfirm":{"type":"object","title":"MsgChannelUpgradeConfirm defines the request type for the ChannelUpgradeConfirm rpc","properties":{"channel_id":{"type":"string"},"counterparty_channel_state":{"$ref":"#/definitions/ibc.core.channel.v1.State"},"counterparty_upgrade":{"$ref":"#/definitions/ibc.core.channel.v1.Upgrade"},"port_id":{"type":"string"},"proof_channel":{"type":"string","format":"byte"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"proof_upgrade":{"type":"string","format":"byte"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelUpgradeConfirmResponse":{"type":"object","title":"MsgChannelUpgradeConfirmResponse defines MsgChannelUpgradeConfirm response type","properties":{"result":{"$ref":"#/definitions/ibc.core.channel.v1.ResponseResultType"}}},"ibc.core.channel.v1.MsgChannelUpgradeInit":{"description":"MsgChannelUpgradeInit defines the request type for the ChannelUpgradeInit rpc\nWARNING: Initializing a channel upgrade in the same block as opening the channel\nmay result in the counterparty being incapable of opening.","type":"object","properties":{"channel_id":{"type":"string"},"fields":{"$ref":"#/definitions/ibc.core.channel.v1.UpgradeFields"},"port_id":{"type":"string"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelUpgradeInitResponse":{"type":"object","title":"MsgChannelUpgradeInitResponse defines the MsgChannelUpgradeInit response type","properties":{"upgrade":{"$ref":"#/definitions/ibc.core.channel.v1.Upgrade"},"upgrade_sequence":{"type":"string","format":"uint64"}}},"ibc.core.channel.v1.MsgChannelUpgradeOpen":{"type":"object","title":"MsgChannelUpgradeOpen defines the request type for the ChannelUpgradeOpen rpc","properties":{"channel_id":{"type":"string"},"counterparty_channel_state":{"$ref":"#/definitions/ibc.core.channel.v1.State"},"counterparty_upgrade_sequence":{"type":"string","format":"uint64"},"port_id":{"type":"string"},"proof_channel":{"type":"string","format":"byte"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelUpgradeOpenResponse":{"type":"object","title":"MsgChannelUpgradeOpenResponse defines the MsgChannelUpgradeOpen response type"},"ibc.core.channel.v1.MsgChannelUpgradeTimeout":{"type":"object","title":"MsgChannelUpgradeTimeout defines the request type for the ChannelUpgradeTimeout rpc","properties":{"channel_id":{"type":"string"},"counterparty_channel":{"$ref":"#/definitions/ibc.core.channel.v1.Channel"},"port_id":{"type":"string"},"proof_channel":{"type":"string","format":"byte"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelUpgradeTimeoutResponse":{"type":"object","title":"MsgChannelUpgradeTimeoutRepsonse defines the MsgChannelUpgradeTimeout response type"},"ibc.core.channel.v1.MsgChannelUpgradeTry":{"type":"object","title":"MsgChannelUpgradeTry defines the request type for the ChannelUpgradeTry rpc","properties":{"channel_id":{"type":"string"},"counterparty_upgrade_fields":{"$ref":"#/definitions/ibc.core.channel.v1.UpgradeFields"},"counterparty_upgrade_sequence":{"type":"string","format":"uint64"},"port_id":{"type":"string"},"proof_channel":{"type":"string","format":"byte"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"proof_upgrade":{"type":"string","format":"byte"},"proposed_upgrade_connection_hops":{"type":"array","items":{"type":"string"}},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelUpgradeTryResponse":{"type":"object","title":"MsgChannelUpgradeTryResponse defines the MsgChannelUpgradeTry response type","properties":{"result":{"$ref":"#/definitions/ibc.core.channel.v1.ResponseResultType"},"upgrade":{"$ref":"#/definitions/ibc.core.channel.v1.Upgrade"},"upgrade_sequence":{"type":"string","format":"uint64"}}},"ibc.core.channel.v1.MsgPruneAcknowledgements":{"description":"MsgPruneAcknowledgements defines the request type for the PruneAcknowledgements rpc.","type":"object","properties":{"channel_id":{"type":"string"},"limit":{"type":"string","format":"uint64"},"port_id":{"type":"string"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgPruneAcknowledgementsResponse":{"description":"MsgPruneAcknowledgementsResponse defines the response type for the PruneAcknowledgements rpc.","type":"object","properties":{"total_pruned_sequences":{"description":"Number of sequences pruned (includes both packet acknowledgements and packet receipts where appropriate).","type":"string","format":"uint64"},"total_remaining_sequences":{"description":"Number of sequences left after pruning.","type":"string","format":"uint64"}}},"ibc.core.channel.v1.MsgRecvPacket":{"type":"object","title":"MsgRecvPacket receives incoming IBC packet","properties":{"packet":{"$ref":"#/definitions/ibc.core.channel.v1.Packet"},"proof_commitment":{"type":"string","format":"byte"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgRecvPacketResponse":{"description":"MsgRecvPacketResponse defines the Msg/RecvPacket response type.","type":"object","properties":{"result":{"$ref":"#/definitions/ibc.core.channel.v1.ResponseResultType"}}},"ibc.core.channel.v1.MsgTimeout":{"type":"object","title":"MsgTimeout receives timed-out packet","properties":{"next_sequence_recv":{"type":"string","format":"uint64"},"packet":{"$ref":"#/definitions/ibc.core.channel.v1.Packet"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"proof_unreceived":{"type":"string","format":"byte"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgTimeoutOnClose":{"description":"MsgTimeoutOnClose timed-out packet upon counterparty channel closure.","type":"object","properties":{"counterparty_upgrade_sequence":{"type":"string","format":"uint64"},"next_sequence_recv":{"type":"string","format":"uint64"},"packet":{"$ref":"#/definitions/ibc.core.channel.v1.Packet"},"proof_close":{"type":"string","format":"byte"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"proof_unreceived":{"type":"string","format":"byte"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgTimeoutOnCloseResponse":{"description":"MsgTimeoutOnCloseResponse defines the Msg/TimeoutOnClose response type.","type":"object","properties":{"result":{"$ref":"#/definitions/ibc.core.channel.v1.ResponseResultType"}}},"ibc.core.channel.v1.MsgTimeoutResponse":{"description":"MsgTimeoutResponse defines the Msg/Timeout response type.","type":"object","properties":{"result":{"$ref":"#/definitions/ibc.core.channel.v1.ResponseResultType"}}},"ibc.core.channel.v1.MsgUpdateParams":{"description":"MsgUpdateParams is the MsgUpdateParams request type.","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the channel parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/ibc.core.channel.v1.Params"}}},"ibc.core.channel.v1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the MsgUpdateParams response type.","type":"object"},"ibc.core.channel.v1.Order":{"description":"- ORDER_NONE_UNSPECIFIED: zero-value for channel ordering\n - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in\nwhich they were sent.\n - ORDER_ORDERED: packets are delivered exactly in the order which they were sent","type":"string","title":"Order defines if a channel is ORDERED or UNORDERED","default":"ORDER_NONE_UNSPECIFIED","enum":["ORDER_NONE_UNSPECIFIED","ORDER_UNORDERED","ORDER_ORDERED"]},"ibc.core.channel.v1.Packet":{"type":"object","title":"Packet defines a type that carries data across different chains through IBC","properties":{"data":{"type":"string","format":"byte","title":"actual opaque bytes transferred directly to the application module"},"destination_channel":{"description":"identifies the channel end on the receiving chain.","type":"string"},"destination_port":{"description":"identifies the port on the receiving chain.","type":"string"},"sequence":{"description":"number corresponds to the order of sends and receives, where a Packet\nwith an earlier sequence number must be sent and received before a Packet\nwith a later sequence number.","type":"string","format":"uint64"},"source_channel":{"description":"identifies the channel end on the sending chain.","type":"string"},"source_port":{"description":"identifies the port on the sending chain.","type":"string"},"timeout_height":{"title":"block height after which the packet times out","$ref":"#/definitions/ibc.core.client.v1.Height"},"timeout_timestamp":{"type":"string","format":"uint64","title":"block timestamp (in nanoseconds) after which the packet times out"}}},"ibc.core.channel.v1.PacketId":{"type":"object","title":"PacketId is an identifer for a unique Packet\nSource chains refer to packets by source port/channel\nDestination chains refer to packets by destination port/channel","properties":{"channel_id":{"type":"string","title":"channel unique identifier"},"port_id":{"type":"string","title":"channel port identifier"},"sequence":{"type":"string","format":"uint64","title":"packet sequence"}}},"ibc.core.channel.v1.PacketState":{"description":"PacketState defines the generic type necessary to retrieve and store\npacket commitments, acknowledgements, and receipts.\nCaller is responsible for knowing the context necessary to interpret this\nstate as a commitment, acknowledgement, or a receipt.","type":"object","properties":{"channel_id":{"description":"channel unique identifier.","type":"string"},"data":{"description":"embedded data that represents packet state.","type":"string","format":"byte"},"port_id":{"description":"channel port identifier.","type":"string"},"sequence":{"description":"packet sequence.","type":"string","format":"uint64"}}},"ibc.core.channel.v1.Params":{"description":"Params defines the set of IBC channel parameters.","type":"object","properties":{"upgrade_timeout":{"description":"the relative timeout after which channel upgrades will time out.","$ref":"#/definitions/ibc.core.channel.v1.Timeout"}}},"ibc.core.channel.v1.QueryChannelClientStateResponse":{"type":"object","title":"QueryChannelClientStateResponse is the Response type for the\nQuery/QueryChannelClientState RPC method","properties":{"identified_client_state":{"title":"client state associated with the channel","$ref":"#/definitions/ibc.core.client.v1.IdentifiedClientState"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.channel.v1.QueryChannelConsensusStateResponse":{"type":"object","title":"QueryChannelClientStateResponse is the Response type for the\nQuery/QueryChannelClientState RPC method","properties":{"client_id":{"type":"string","title":"client ID associated with the consensus state"},"consensus_state":{"title":"consensus state associated with the channel","$ref":"#/definitions/google.protobuf.Any"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.channel.v1.QueryChannelParamsResponse":{"description":"QueryChannelParamsResponse is the response type for the Query/ChannelParams RPC method.","type":"object","properties":{"params":{"description":"params defines the parameters of the module.","$ref":"#/definitions/ibc.core.channel.v1.Params"}}},"ibc.core.channel.v1.QueryChannelResponse":{"description":"QueryChannelResponse is the response type for the Query/Channel RPC method.\nBesides the Channel end, it includes a proof and the height from which the\nproof was retrieved.","type":"object","properties":{"channel":{"title":"channel associated with the request identifiers","$ref":"#/definitions/ibc.core.channel.v1.Channel"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.channel.v1.QueryChannelsResponse":{"description":"QueryChannelsResponse is the response type for the Query/Channels RPC method.","type":"object","properties":{"channels":{"description":"list of stored channels of the chain.","type":"array","items":{"type":"object","$ref":"#/definitions/ibc.core.channel.v1.IdentifiedChannel"}},"height":{"title":"query block height","$ref":"#/definitions/ibc.core.client.v1.Height"},"pagination":{"title":"pagination response","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.core.channel.v1.QueryConnectionChannelsResponse":{"type":"object","title":"QueryConnectionChannelsResponse is the Response type for the\nQuery/QueryConnectionChannels RPC method","properties":{"channels":{"description":"list of channels associated with a connection.","type":"array","items":{"type":"object","$ref":"#/definitions/ibc.core.channel.v1.IdentifiedChannel"}},"height":{"title":"query block height","$ref":"#/definitions/ibc.core.client.v1.Height"},"pagination":{"title":"pagination response","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.core.channel.v1.QueryNextSequenceReceiveResponse":{"type":"object","title":"QuerySequenceResponse is the response type for the\nQuery/QueryNextSequenceReceiveResponse RPC method","properties":{"next_sequence_receive":{"type":"string","format":"uint64","title":"next sequence receive number"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.channel.v1.QueryNextSequenceSendResponse":{"type":"object","title":"QueryNextSequenceSendResponse is the request type for the\nQuery/QueryNextSequenceSend RPC method","properties":{"next_sequence_send":{"type":"string","format":"uint64","title":"next sequence send number"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.channel.v1.QueryPacketAcknowledgementResponse":{"type":"object","title":"QueryPacketAcknowledgementResponse defines the client query response for a\npacket which also includes a proof and the height from which the\nproof was retrieved","properties":{"acknowledgement":{"type":"string","format":"byte","title":"packet associated with the request fields"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.channel.v1.QueryPacketAcknowledgementsResponse":{"type":"object","title":"QueryPacketAcknowledgemetsResponse is the request type for the\nQuery/QueryPacketAcknowledgements RPC method","properties":{"acknowledgements":{"type":"array","items":{"type":"object","$ref":"#/definitions/ibc.core.channel.v1.PacketState"}},"height":{"title":"query block height","$ref":"#/definitions/ibc.core.client.v1.Height"},"pagination":{"title":"pagination response","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.core.channel.v1.QueryPacketCommitmentResponse":{"type":"object","title":"QueryPacketCommitmentResponse defines the client query response for a packet\nwhich also includes a proof and the height from which the proof was\nretrieved","properties":{"commitment":{"type":"string","format":"byte","title":"packet associated with the request fields"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.channel.v1.QueryPacketCommitmentsResponse":{"type":"object","title":"QueryPacketCommitmentsResponse is the request type for the\nQuery/QueryPacketCommitments RPC method","properties":{"commitments":{"type":"array","items":{"type":"object","$ref":"#/definitions/ibc.core.channel.v1.PacketState"}},"height":{"title":"query block height","$ref":"#/definitions/ibc.core.client.v1.Height"},"pagination":{"title":"pagination response","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.core.channel.v1.QueryPacketReceiptResponse":{"type":"object","title":"QueryPacketReceiptResponse defines the client query response for a packet\nreceipt which also includes a proof, and the height from which the proof was\nretrieved","properties":{"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"},"received":{"type":"boolean","title":"success flag for if receipt exists"}}},"ibc.core.channel.v1.QueryUnreceivedAcksResponse":{"type":"object","title":"QueryUnreceivedAcksResponse is the response type for the\nQuery/UnreceivedAcks RPC method","properties":{"height":{"title":"query block height","$ref":"#/definitions/ibc.core.client.v1.Height"},"sequences":{"type":"array","title":"list of unreceived acknowledgement sequences","items":{"type":"string","format":"uint64"}}}},"ibc.core.channel.v1.QueryUnreceivedPacketsResponse":{"type":"object","title":"QueryUnreceivedPacketsResponse is the response type for the\nQuery/UnreceivedPacketCommitments RPC method","properties":{"height":{"title":"query block height","$ref":"#/definitions/ibc.core.client.v1.Height"},"sequences":{"type":"array","title":"list of unreceived packet sequences","items":{"type":"string","format":"uint64"}}}},"ibc.core.channel.v1.QueryUpgradeErrorResponse":{"type":"object","title":"QueryUpgradeErrorResponse is the response type for the Query/QueryUpgradeError RPC method","properties":{"error_receipt":{"$ref":"#/definitions/ibc.core.channel.v1.ErrorReceipt"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.channel.v1.QueryUpgradeResponse":{"type":"object","title":"QueryUpgradeResponse is the response type for the QueryUpgradeResponse RPC method","properties":{"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"},"upgrade":{"$ref":"#/definitions/ibc.core.channel.v1.Upgrade"}}},"ibc.core.channel.v1.ResponseResultType":{"description":"- RESPONSE_RESULT_TYPE_UNSPECIFIED: Default zero value enumeration\n - RESPONSE_RESULT_TYPE_NOOP: The message did not call the IBC application callbacks (because, for example, the packet had already been relayed)\n - RESPONSE_RESULT_TYPE_SUCCESS: The message was executed successfully\n - RESPONSE_RESULT_TYPE_FAILURE: The message was executed unsuccessfully","type":"string","title":"ResponseResultType defines the possible outcomes of the execution of a message","default":"RESPONSE_RESULT_TYPE_UNSPECIFIED","enum":["RESPONSE_RESULT_TYPE_UNSPECIFIED","RESPONSE_RESULT_TYPE_NOOP","RESPONSE_RESULT_TYPE_SUCCESS","RESPONSE_RESULT_TYPE_FAILURE"]},"ibc.core.channel.v1.State":{"description":"State defines if a channel is in one of the following states:\nCLOSED, INIT, TRYOPEN, OPEN, FLUSHING, FLUSHCOMPLETE or UNINITIALIZED.\n\n - STATE_UNINITIALIZED_UNSPECIFIED: Default State\n - STATE_INIT: A channel has just started the opening handshake.\n - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain.\n - STATE_OPEN: A channel has completed the handshake. Open channels are\nready to send and receive packets.\n - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive\npackets.\n - STATE_FLUSHING: A channel has just accepted the upgrade handshake attempt and is flushing in-flight packets.\n - STATE_FLUSHCOMPLETE: A channel has just completed flushing any in-flight packets.","type":"string","default":"STATE_UNINITIALIZED_UNSPECIFIED","enum":["STATE_UNINITIALIZED_UNSPECIFIED","STATE_INIT","STATE_TRYOPEN","STATE_OPEN","STATE_CLOSED","STATE_FLUSHING","STATE_FLUSHCOMPLETE"]},"ibc.core.channel.v1.Timeout":{"description":"Timeout defines an execution deadline structure for 04-channel handlers.\nThis includes packet lifecycle handlers as well as the upgrade handshake handlers.\nA valid Timeout contains either one or both of a timestamp and block height (sequence).","type":"object","properties":{"height":{"title":"block height after which the packet or upgrade times out","$ref":"#/definitions/ibc.core.client.v1.Height"},"timestamp":{"type":"string","format":"uint64","title":"block timestamp (in nanoseconds) after which the packet or upgrade times out"}}},"ibc.core.channel.v1.Upgrade":{"description":"Upgrade is a verifiable type which contains the relevant information\nfor an attempted upgrade. It provides the proposed changes to the channel\nend, the timeout for this upgrade attempt and the next packet sequence\nwhich allows the counterparty to efficiently know the highest sequence it has received.\nThe next sequence send is used for pruning and upgrading from unordered to ordered channels.","type":"object","properties":{"fields":{"$ref":"#/definitions/ibc.core.channel.v1.UpgradeFields"},"next_sequence_send":{"type":"string","format":"uint64"},"timeout":{"$ref":"#/definitions/ibc.core.channel.v1.Timeout"}}},"ibc.core.channel.v1.UpgradeFields":{"description":"UpgradeFields are the fields in a channel end which may be changed\nduring a channel upgrade.","type":"object","properties":{"connection_hops":{"type":"array","items":{"type":"string"}},"ordering":{"$ref":"#/definitions/ibc.core.channel.v1.Order"},"version":{"type":"string"}}},"ibc.core.client.v1.ConsensusStateWithHeight":{"description":"ConsensusStateWithHeight defines a consensus state with an additional height\nfield.","type":"object","properties":{"consensus_state":{"title":"consensus state","$ref":"#/definitions/google.protobuf.Any"},"height":{"title":"consensus state height","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.client.v1.Height":{"description":"Normally the RevisionHeight is incremented at each height while keeping\nRevisionNumber the same. However some consensus algorithms may choose to\nreset the height in certain conditions e.g. hard forks, state-machine\nbreaking changes In these cases, the RevisionNumber is incremented so that\nheight continues to be monitonically increasing even as the RevisionHeight\ngets reset","type":"object","title":"Height is a monotonically increasing data type\nthat can be compared against another Height for the purposes of updating and\nfreezing clients","properties":{"revision_height":{"type":"string","format":"uint64","title":"the height within the given revision"},"revision_number":{"type":"string","format":"uint64","title":"the revision that the client is currently on"}}},"ibc.core.client.v1.IdentifiedClientState":{"description":"IdentifiedClientState defines a client state with an additional client\nidentifier field.","type":"object","properties":{"client_id":{"type":"string","title":"client identifier"},"client_state":{"title":"client state","$ref":"#/definitions/google.protobuf.Any"}}},"ibc.core.client.v1.MsgCreateClient":{"type":"object","title":"MsgCreateClient defines a message to create an IBC client","properties":{"client_state":{"title":"light client state","$ref":"#/definitions/google.protobuf.Any"},"consensus_state":{"description":"consensus state associated with the client that corresponds to a given\nheight.","$ref":"#/definitions/google.protobuf.Any"},"signer":{"type":"string","title":"signer address"}}},"ibc.core.client.v1.MsgCreateClientResponse":{"description":"MsgCreateClientResponse defines the Msg/CreateClient response type.","type":"object"},"ibc.core.client.v1.MsgIBCSoftwareUpgrade":{"type":"object","title":"MsgIBCSoftwareUpgrade defines the message used to schedule an upgrade of an IBC client using a v1 governance proposal","properties":{"plan":{"$ref":"#/definitions/cosmos.upgrade.v1beta1.Plan"},"signer":{"type":"string","title":"signer address"},"upgraded_client_state":{"description":"An UpgradedClientState must be provided to perform an IBC breaking upgrade.\nThis will make the chain commit to the correct upgraded (self) client state\nbefore the upgrade occurs, so that connecting chains can verify that the\nnew upgraded client is valid by verifying a proof on the previous version\nof the chain. This will allow IBC connections to persist smoothly across\nplanned chain upgrades. Correspondingly, the UpgradedClientState field has been\ndeprecated in the Cosmos SDK to allow for this logic to exist solely in\nthe 02-client module.","$ref":"#/definitions/google.protobuf.Any"}}},"ibc.core.client.v1.MsgIBCSoftwareUpgradeResponse":{"description":"MsgIBCSoftwareUpgradeResponse defines the Msg/IBCSoftwareUpgrade response type.","type":"object"},"ibc.core.client.v1.MsgRecoverClient":{"description":"MsgRecoverClient defines the message used to recover a frozen or expired client.","type":"object","properties":{"signer":{"type":"string","title":"signer address"},"subject_client_id":{"type":"string","title":"the client identifier for the client to be updated if the proposal passes"},"substitute_client_id":{"type":"string","title":"the substitute client identifier for the client which will replace the subject\nclient"}}},"ibc.core.client.v1.MsgRecoverClientResponse":{"description":"MsgRecoverClientResponse defines the Msg/RecoverClient response type.","type":"object"},"ibc.core.client.v1.MsgSubmitMisbehaviour":{"description":"MsgSubmitMisbehaviour defines an sdk.Msg type that submits Evidence for\nlight client misbehaviour.\nThis message has been deprecated. Use MsgUpdateClient instead.","type":"object","properties":{"client_id":{"type":"string","title":"client unique identifier"},"misbehaviour":{"title":"misbehaviour used for freezing the light client","$ref":"#/definitions/google.protobuf.Any"},"signer":{"type":"string","title":"signer address"}}},"ibc.core.client.v1.MsgSubmitMisbehaviourResponse":{"description":"MsgSubmitMisbehaviourResponse defines the Msg/SubmitMisbehaviour response\ntype.","type":"object"},"ibc.core.client.v1.MsgUpdateClient":{"description":"MsgUpdateClient defines an sdk.Msg to update a IBC client state using\nthe given client message.","type":"object","properties":{"client_id":{"type":"string","title":"client unique identifier"},"client_message":{"title":"client message to update the light client","$ref":"#/definitions/google.protobuf.Any"},"signer":{"type":"string","title":"signer address"}}},"ibc.core.client.v1.MsgUpdateClientResponse":{"description":"MsgUpdateClientResponse defines the Msg/UpdateClient response type.","type":"object"},"ibc.core.client.v1.MsgUpdateParams":{"description":"MsgUpdateParams defines the sdk.Msg type to update the client parameters.","type":"object","properties":{"params":{"description":"params defines the client parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/ibc.core.client.v1.Params"},"signer":{"type":"string","title":"signer address"}}},"ibc.core.client.v1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the MsgUpdateParams response type.","type":"object"},"ibc.core.client.v1.MsgUpgradeClient":{"type":"object","title":"MsgUpgradeClient defines an sdk.Msg to upgrade an IBC client to a new client\nstate","properties":{"client_id":{"type":"string","title":"client unique identifier"},"client_state":{"title":"upgraded client state","$ref":"#/definitions/google.protobuf.Any"},"consensus_state":{"title":"upgraded consensus state, only contains enough information to serve as a\nbasis of trust in update logic","$ref":"#/definitions/google.protobuf.Any"},"proof_upgrade_client":{"type":"string","format":"byte","title":"proof that old chain committed to new client"},"proof_upgrade_consensus_state":{"type":"string","format":"byte","title":"proof that old chain committed to new consensus state"},"signer":{"type":"string","title":"signer address"}}},"ibc.core.client.v1.MsgUpgradeClientResponse":{"description":"MsgUpgradeClientResponse defines the Msg/UpgradeClient response type.","type":"object"},"ibc.core.client.v1.Params":{"description":"Params defines the set of IBC light client parameters.","type":"object","properties":{"allowed_clients":{"description":"allowed_clients defines the list of allowed client state types which can be created\nand interacted with. If a client type is removed from the allowed clients list, usage\nof this client will be disabled until it is added again to the list.","type":"array","items":{"type":"string"}}}},"ibc.core.client.v1.QueryClientParamsResponse":{"description":"QueryClientParamsResponse is the response type for the Query/ClientParams RPC\nmethod.","type":"object","properties":{"params":{"description":"params defines the parameters of the module.","$ref":"#/definitions/ibc.core.client.v1.Params"}}},"ibc.core.client.v1.QueryClientStateResponse":{"description":"QueryClientStateResponse is the response type for the Query/ClientState RPC\nmethod. Besides the client state, it includes a proof and the height from\nwhich the proof was retrieved.","type":"object","properties":{"client_state":{"title":"client state associated with the request identifier","$ref":"#/definitions/google.protobuf.Any"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.client.v1.QueryClientStatesResponse":{"description":"QueryClientStatesResponse is the response type for the Query/ClientStates RPC\nmethod.","type":"object","properties":{"client_states":{"description":"list of stored ClientStates of the chain.","type":"array","items":{"type":"object","$ref":"#/definitions/ibc.core.client.v1.IdentifiedClientState"}},"pagination":{"title":"pagination response","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.core.client.v1.QueryClientStatusResponse":{"description":"QueryClientStatusResponse is the response type for the Query/ClientStatus RPC\nmethod. It returns the current status of the IBC client.","type":"object","properties":{"status":{"type":"string"}}},"ibc.core.client.v1.QueryConsensusStateHeightsResponse":{"type":"object","title":"QueryConsensusStateHeightsResponse is the response type for the\nQuery/ConsensusStateHeights RPC method","properties":{"consensus_state_heights":{"type":"array","title":"consensus state heights","items":{"type":"object","$ref":"#/definitions/ibc.core.client.v1.Height"}},"pagination":{"title":"pagination response","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.core.client.v1.QueryConsensusStateResponse":{"type":"object","title":"QueryConsensusStateResponse is the response type for the Query/ConsensusState\nRPC method","properties":{"consensus_state":{"title":"consensus state associated with the client identifier at the given height","$ref":"#/definitions/google.protobuf.Any"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.client.v1.QueryConsensusStatesResponse":{"type":"object","title":"QueryConsensusStatesResponse is the response type for the\nQuery/ConsensusStates RPC method","properties":{"consensus_states":{"type":"array","title":"consensus states associated with the identifier","items":{"type":"object","$ref":"#/definitions/ibc.core.client.v1.ConsensusStateWithHeight"}},"pagination":{"title":"pagination response","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.core.client.v1.QueryUpgradedClientStateResponse":{"description":"QueryUpgradedClientStateResponse is the response type for the\nQuery/UpgradedClientState RPC method.","type":"object","properties":{"upgraded_client_state":{"title":"client state associated with the request identifier","$ref":"#/definitions/google.protobuf.Any"}}},"ibc.core.client.v1.QueryUpgradedConsensusStateResponse":{"description":"QueryUpgradedConsensusStateResponse is the response type for the\nQuery/UpgradedConsensusState RPC method.","type":"object","properties":{"upgraded_consensus_state":{"title":"Consensus state associated with the request identifier","$ref":"#/definitions/google.protobuf.Any"}}},"ibc.core.client.v1.QueryVerifyMembershipRequest":{"type":"object","title":"QueryVerifyMembershipRequest is the request type for the Query/VerifyMembership RPC method","properties":{"block_delay":{"type":"string","format":"uint64","title":"optional block delay"},"client_id":{"description":"client unique identifier.","type":"string"},"merkle_path":{"description":"the commitment key path.","$ref":"#/definitions/ibc.core.commitment.v1.MerklePath"},"proof":{"description":"the proof to be verified by the client.","type":"string","format":"byte"},"proof_height":{"description":"the height of the commitment root at which the proof is verified.","$ref":"#/definitions/ibc.core.client.v1.Height"},"time_delay":{"type":"string","format":"uint64","title":"optional time delay"},"value":{"description":"the value which is proven.","type":"string","format":"byte"}}},"ibc.core.client.v1.QueryVerifyMembershipResponse":{"type":"object","title":"QueryVerifyMembershipResponse is the response type for the Query/VerifyMembership RPC method","properties":{"success":{"description":"boolean indicating success or failure of proof verification.","type":"boolean"}}},"ibc.core.commitment.v1.MerklePath":{"type":"object","title":"MerklePath is the path used to verify commitment proofs, which can be an\narbitrary structured object (defined by a commitment type).\nMerklePath is represented from root-to-leaf","properties":{"key_path":{"type":"array","items":{"type":"string"}}}},"ibc.core.commitment.v1.MerklePrefix":{"type":"object","title":"MerklePrefix is merkle path prefixed to the key.\nThe constructed key from the Path and the key will be append(Path.KeyPath,\nappend(Path.KeyPrefix, key...))","properties":{"key_prefix":{"type":"string","format":"byte"}}},"ibc.core.connection.v1.ConnectionEnd":{"description":"ConnectionEnd defines a stateful object on a chain connected to another\nseparate one.\nNOTE: there must only be 2 defined ConnectionEnds to establish\na connection between two chains.","type":"object","properties":{"client_id":{"description":"client associated with this connection.","type":"string"},"counterparty":{"description":"counterparty chain associated with this connection.","$ref":"#/definitions/ibc.core.connection.v1.Counterparty"},"delay_period":{"description":"delay period that must pass before a consensus state can be used for\npacket-verification NOTE: delay period logic is only implemented by some\nclients.","type":"string","format":"uint64"},"state":{"description":"current state of the connection end.","$ref":"#/definitions/ibc.core.connection.v1.State"},"versions":{"description":"IBC version which can be utilised to determine encodings or protocols for\nchannels or packets utilising this connection.","type":"array","items":{"type":"object","$ref":"#/definitions/ibc.core.connection.v1.Version"}}}},"ibc.core.connection.v1.Counterparty":{"description":"Counterparty defines the counterparty chain associated with a connection end.","type":"object","properties":{"client_id":{"description":"identifies the client on the counterparty chain associated with a given\nconnection.","type":"string"},"connection_id":{"description":"identifies the connection end on the counterparty chain associated with a\ngiven connection.","type":"string"},"prefix":{"description":"commitment merkle prefix of the counterparty chain.","$ref":"#/definitions/ibc.core.commitment.v1.MerklePrefix"}}},"ibc.core.connection.v1.IdentifiedConnection":{"description":"IdentifiedConnection defines a connection with additional connection\nidentifier field.","type":"object","properties":{"client_id":{"description":"client associated with this connection.","type":"string"},"counterparty":{"description":"counterparty chain associated with this connection.","$ref":"#/definitions/ibc.core.connection.v1.Counterparty"},"delay_period":{"description":"delay period associated with this connection.","type":"string","format":"uint64"},"id":{"description":"connection identifier.","type":"string"},"state":{"description":"current state of the connection end.","$ref":"#/definitions/ibc.core.connection.v1.State"},"versions":{"type":"array","title":"IBC version which can be utilised to determine encodings or protocols for\nchannels or packets utilising this connection","items":{"type":"object","$ref":"#/definitions/ibc.core.connection.v1.Version"}}}},"ibc.core.connection.v1.MsgConnectionOpenAck":{"description":"MsgConnectionOpenAck defines a msg sent by a Relayer to Chain A to\nacknowledge the change of connection state to TRYOPEN on Chain B.","type":"object","properties":{"client_state":{"$ref":"#/definitions/google.protobuf.Any"},"connection_id":{"type":"string"},"consensus_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"counterparty_connection_id":{"type":"string"},"host_consensus_state_proof":{"type":"string","format":"byte","title":"optional proof data for host state machines that are unable to introspect their own consensus state"},"proof_client":{"type":"string","format":"byte","title":"proof of client state included in message"},"proof_consensus":{"type":"string","format":"byte","title":"proof of client consensus state"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"proof_try":{"type":"string","format":"byte","title":"proof of the initialization the connection on Chain B: `UNITIALIZED -\u003e\nTRYOPEN`"},"signer":{"type":"string"},"version":{"$ref":"#/definitions/ibc.core.connection.v1.Version"}}},"ibc.core.connection.v1.MsgConnectionOpenAckResponse":{"description":"MsgConnectionOpenAckResponse defines the Msg/ConnectionOpenAck response type.","type":"object"},"ibc.core.connection.v1.MsgConnectionOpenConfirm":{"description":"MsgConnectionOpenConfirm defines a msg sent by a Relayer to Chain B to\nacknowledge the change of connection state to OPEN on Chain A.","type":"object","properties":{"connection_id":{"type":"string"},"proof_ack":{"type":"string","format":"byte","title":"proof for the change of the connection state on Chain A: `INIT -\u003e OPEN`"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"signer":{"type":"string"}}},"ibc.core.connection.v1.MsgConnectionOpenConfirmResponse":{"description":"MsgConnectionOpenConfirmResponse defines the Msg/ConnectionOpenConfirm\nresponse type.","type":"object"},"ibc.core.connection.v1.MsgConnectionOpenInit":{"description":"MsgConnectionOpenInit defines the msg sent by an account on Chain A to\ninitialize a connection with Chain B.","type":"object","properties":{"client_id":{"type":"string"},"counterparty":{"$ref":"#/definitions/ibc.core.connection.v1.Counterparty"},"delay_period":{"type":"string","format":"uint64"},"signer":{"type":"string"},"version":{"$ref":"#/definitions/ibc.core.connection.v1.Version"}}},"ibc.core.connection.v1.MsgConnectionOpenInitResponse":{"description":"MsgConnectionOpenInitResponse defines the Msg/ConnectionOpenInit response\ntype.","type":"object"},"ibc.core.connection.v1.MsgConnectionOpenTry":{"description":"MsgConnectionOpenTry defines a msg sent by a Relayer to try to open a\nconnection on Chain B.","type":"object","properties":{"client_id":{"type":"string"},"client_state":{"$ref":"#/definitions/google.protobuf.Any"},"consensus_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"counterparty":{"$ref":"#/definitions/ibc.core.connection.v1.Counterparty"},"counterparty_versions":{"type":"array","items":{"type":"object","$ref":"#/definitions/ibc.core.connection.v1.Version"}},"delay_period":{"type":"string","format":"uint64"},"host_consensus_state_proof":{"type":"string","format":"byte","title":"optional proof data for host state machines that are unable to introspect their own consensus state"},"previous_connection_id":{"description":"Deprecated: this field is unused. Crossing hellos are no longer supported in core IBC.","type":"string"},"proof_client":{"type":"string","format":"byte","title":"proof of client state included in message"},"proof_consensus":{"type":"string","format":"byte","title":"proof of client consensus state"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"proof_init":{"type":"string","format":"byte","title":"proof of the initialization the connection on Chain A: `UNITIALIZED -\u003e\nINIT`"},"signer":{"type":"string"}}},"ibc.core.connection.v1.MsgConnectionOpenTryResponse":{"description":"MsgConnectionOpenTryResponse defines the Msg/ConnectionOpenTry response type.","type":"object"},"ibc.core.connection.v1.MsgUpdateParams":{"description":"MsgUpdateParams defines the sdk.Msg type to update the connection parameters.","type":"object","properties":{"params":{"description":"params defines the connection parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/ibc.core.connection.v1.Params"},"signer":{"type":"string","title":"signer address"}}},"ibc.core.connection.v1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the MsgUpdateParams response type.","type":"object"},"ibc.core.connection.v1.Params":{"description":"Params defines the set of Connection parameters.","type":"object","properties":{"max_expected_time_per_block":{"description":"maximum expected time per block (in nanoseconds), used to enforce block delay. This parameter should reflect the\nlargest amount of time that the chain might reasonably take to produce the next block under normal operating\nconditions. A safe choice is 3-5x the expected time per block.","type":"string","format":"uint64"}}},"ibc.core.connection.v1.QueryClientConnectionsResponse":{"type":"object","title":"QueryClientConnectionsResponse is the response type for the\nQuery/ClientConnections RPC method","properties":{"connection_paths":{"description":"slice of all the connection paths associated with a client.","type":"array","items":{"type":"string"}},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was generated","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.connection.v1.QueryConnectionClientStateResponse":{"type":"object","title":"QueryConnectionClientStateResponse is the response type for the\nQuery/ConnectionClientState RPC method","properties":{"identified_client_state":{"title":"client state associated with the channel","$ref":"#/definitions/ibc.core.client.v1.IdentifiedClientState"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.connection.v1.QueryConnectionConsensusStateResponse":{"type":"object","title":"QueryConnectionConsensusStateResponse is the response type for the\nQuery/ConnectionConsensusState RPC method","properties":{"client_id":{"type":"string","title":"client ID associated with the consensus state"},"consensus_state":{"title":"consensus state associated with the channel","$ref":"#/definitions/google.protobuf.Any"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.connection.v1.QueryConnectionParamsResponse":{"description":"QueryConnectionParamsResponse is the response type for the Query/ConnectionParams RPC method.","type":"object","properties":{"params":{"description":"params defines the parameters of the module.","$ref":"#/definitions/ibc.core.connection.v1.Params"}}},"ibc.core.connection.v1.QueryConnectionResponse":{"description":"QueryConnectionResponse is the response type for the Query/Connection RPC\nmethod. Besides the connection end, it includes a proof and the height from\nwhich the proof was retrieved.","type":"object","properties":{"connection":{"title":"connection associated with the request identifier","$ref":"#/definitions/ibc.core.connection.v1.ConnectionEnd"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.connection.v1.QueryConnectionsResponse":{"description":"QueryConnectionsResponse is the response type for the Query/Connections RPC\nmethod.","type":"object","properties":{"connections":{"description":"list of stored connections of the chain.","type":"array","items":{"type":"object","$ref":"#/definitions/ibc.core.connection.v1.IdentifiedConnection"}},"height":{"title":"query block height","$ref":"#/definitions/ibc.core.client.v1.Height"},"pagination":{"title":"pagination response","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.core.connection.v1.State":{"description":"State defines if a connection is in one of the following states:\nINIT, TRYOPEN, OPEN or UNINITIALIZED.\n\n - STATE_UNINITIALIZED_UNSPECIFIED: Default State\n - STATE_INIT: A connection end has just started the opening handshake.\n - STATE_TRYOPEN: A connection end has acknowledged the handshake step on the counterparty\nchain.\n - STATE_OPEN: A connection end has completed the handshake.","type":"string","default":"STATE_UNINITIALIZED_UNSPECIFIED","enum":["STATE_UNINITIALIZED_UNSPECIFIED","STATE_INIT","STATE_TRYOPEN","STATE_OPEN"]},"ibc.core.connection.v1.Version":{"description":"Version defines the versioning scheme used to negotiate the IBC verison in\nthe connection handshake.","type":"object","properties":{"features":{"type":"array","title":"list of features compatible with the specified identifier","items":{"type":"string"}},"identifier":{"type":"string","title":"unique version identifier"}}},"ibc.lightclients.wasm.v1.MsgMigrateContract":{"description":"MsgMigrateContract defines the request type for the MigrateContract rpc.","type":"object","properties":{"checksum":{"type":"string","format":"byte","title":"checksum is the sha256 hash of the new wasm byte code for the contract"},"client_id":{"type":"string","title":"the client id of the contract"},"msg":{"type":"string","format":"byte","title":"the json encoded message to be passed to the contract on migration"},"signer":{"type":"string","title":"signer address"}}},"ibc.lightclients.wasm.v1.MsgMigrateContractResponse":{"type":"object","title":"MsgMigrateContractResponse defines the response type for the MigrateContract rpc"},"ibc.lightclients.wasm.v1.MsgRemoveChecksum":{"description":"MsgRemoveChecksum defines the request type for the MsgRemoveChecksum rpc.","type":"object","properties":{"checksum":{"type":"string","format":"byte","title":"checksum is the sha256 hash to be removed from the store"},"signer":{"type":"string","title":"signer address"}}},"ibc.lightclients.wasm.v1.MsgRemoveChecksumResponse":{"type":"object","title":"MsgStoreChecksumResponse defines the response type for the StoreCode rpc"},"ibc.lightclients.wasm.v1.MsgStoreCode":{"description":"MsgStoreCode defines the request type for the StoreCode rpc.","type":"object","properties":{"signer":{"type":"string","title":"signer address"},"wasm_byte_code":{"type":"string","format":"byte","title":"wasm byte code of light client contract. It can be raw or gzip compressed"}}},"ibc.lightclients.wasm.v1.MsgStoreCodeResponse":{"type":"object","title":"MsgStoreCodeResponse defines the response type for the StoreCode rpc","properties":{"checksum":{"type":"string","format":"byte","title":"checksum is the sha256 hash of the stored code"}}},"ibc.lightclients.wasm.v1.QueryChecksumsResponse":{"description":"QueryChecksumsResponse is the response type for the Query/Checksums RPC method.","type":"object","properties":{"checksums":{"description":"checksums is a list of the hex encoded checksums of all wasm codes stored.","type":"array","items":{"type":"string"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.lightclients.wasm.v1.QueryCodeResponse":{"description":"QueryCodeResponse is the response type for the Query/Code RPC method.","type":"object","properties":{"data":{"type":"string","format":"byte"}}},"modules.claim.v1.AirdropSupply":{"type":"object","properties":{"supply":{"$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"modules.claim.v1.ClaimRecord":{"type":"object","properties":{"address":{"type":"string"},"claimable":{"type":"string"},"claimedMissions":{"type":"array","items":{"type":"string","format":"uint64"}},"completedMissions":{"type":"array","items":{"type":"string","format":"uint64"}}}},"modules.claim.v1.DecayInformation":{"type":"object","title":"DecayInformation defines the information about decay for the airdrop\nwhen claimable airdrop amount starts to decrease and when it ends","properties":{"decayEnd":{"type":"string","format":"date-time"},"decayStart":{"type":"string","format":"date-time"},"enabled":{"type":"boolean"}}},"modules.claim.v1.InitialClaim":{"type":"object","properties":{"enabled":{"type":"boolean"},"missionID":{"type":"string","format":"uint64"}}},"modules.claim.v1.Mission":{"type":"object","properties":{"description":{"type":"string"},"missionID":{"type":"string","format":"uint64"},"weight":{"type":"string"}}},"modules.claim.v1.MsgClaim":{"type":"object","properties":{"claimer":{"type":"string"},"missionID":{"type":"string","format":"uint64"}}},"modules.claim.v1.MsgClaimResponse":{"type":"object","properties":{"claimed":{"type":"string"}}},"modules.claim.v1.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"NOTE: All parameters must be supplied.","$ref":"#/definitions/modules.claim.v1.Params"}}},"modules.claim.v1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"modules.claim.v1.Params":{"description":"Params defines the parameters for the module.","type":"object","properties":{"airdropStart":{"type":"string","format":"date-time"},"decayInformation":{"$ref":"#/definitions/modules.claim.v1.DecayInformation"}}},"modules.claim.v1.QueryAllClaimRecordResponse":{"type":"object","properties":{"claimRecord":{"type":"array","items":{"type":"object","$ref":"#/definitions/modules.claim.v1.ClaimRecord"}},"pagination":{"$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"modules.claim.v1.QueryAllMissionResponse":{"type":"object","properties":{"Mission":{"type":"array","items":{"type":"object","$ref":"#/definitions/modules.claim.v1.Mission"}},"pagination":{"$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"modules.claim.v1.QueryGetAirdropSupplyResponse":{"type":"object","properties":{"AirdropSupply":{"$ref":"#/definitions/modules.claim.v1.AirdropSupply"}}},"modules.claim.v1.QueryGetClaimRecordResponse":{"type":"object","properties":{"claimRecord":{"$ref":"#/definitions/modules.claim.v1.ClaimRecord"}}},"modules.claim.v1.QueryGetInitialClaimResponse":{"type":"object","properties":{"InitialClaim":{"$ref":"#/definitions/modules.claim.v1.InitialClaim"}}},"modules.claim.v1.QueryGetMissionResponse":{"type":"object","properties":{"Mission":{"$ref":"#/definitions/modules.claim.v1.Mission"}}},"modules.claim.v1.QueryParamsResponse":{"description":"QueryParamsResponse is response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params holds all the parameters of this module.","$ref":"#/definitions/modules.claim.v1.Params"}}},"modules.mint.v1.DistributionProportions":{"type":"object","properties":{"community_pool":{"description":"community_pool defines the proportion of the minted minted_denom that is\nto be allocated to the community pool.","type":"string"},"funded_addresses":{"description":"funded_addresses defines the proportion of the minted minted_denom that is\nto the set of funded addresses.","type":"string"},"staking":{"description":"staking defines the proportion of the minted minted_denom that is to be\nallocated as staking rewards.","type":"string"}}},"modules.mint.v1.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"NOTE: All parameters must be supplied.","$ref":"#/definitions/modules.mint.v1.Params"}}},"modules.mint.v1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"modules.mint.v1.Params":{"description":"Params defines the parameters for the module.","type":"object","properties":{"blocks_per_year":{"type":"string","format":"uint64","title":"expected blocks per year"},"distribution_proportions":{"title":"distribution_proportions defines the proportion of the minted denom","$ref":"#/definitions/modules.mint.v1.DistributionProportions"},"fundedAddresses":{"type":"array","title":"list of funded addresses","items":{"type":"object","$ref":"#/definitions/modules.mint.v1.WeightedAddress"}},"goal_bonded":{"type":"string","title":"goal of percent bonded atoms"},"inflation_max":{"type":"string","title":"maximum inflation rate"},"inflation_min":{"type":"string","title":"minimum inflation rate"},"inflation_rate_change":{"type":"string","title":"maximum annual change in inflation rate"},"mint_denom":{"type":"string","title":"type of coin to mint"}}},"modules.mint.v1.QueryAnnualProvisionsResponse":{"description":"QueryAnnualProvisionsResponse is the current minting annual provisions value.","type":"object","properties":{"annual_provisions":{"type":"string","format":"byte"}}},"modules.mint.v1.QueryInflationResponse":{"description":"QueryInflationResponse is the response type for the Query/Inflation RPC\nmethod.","type":"object","properties":{"inflation":{"description":"inflation is the current minting inflation value.","type":"string","format":"byte"}}},"modules.mint.v1.QueryParamsResponse":{"description":"QueryParamsResponse is response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params holds all the parameters of this module.","$ref":"#/definitions/modules.mint.v1.Params"}}},"modules.mint.v1.WeightedAddress":{"type":"object","properties":{"address":{"type":"string"},"weight":{"type":"string"}}},"tendermint.abci.CheckTxType":{"type":"string","default":"NEW","enum":["NEW","RECHECK"]},"tendermint.abci.CommitInfo":{"type":"object","properties":{"round":{"type":"integer","format":"int32"},"votes":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.VoteInfo"}}}},"tendermint.abci.Event":{"description":"Event allows application developers to attach additional information to\nResponseFinalizeBlock and ResponseCheckTx.\nLater, transactions may be queried using these events.","type":"object","properties":{"attributes":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.EventAttribute"}},"type":{"type":"string"}}},"tendermint.abci.EventAttribute":{"description":"EventAttribute is a single key-value pair, associated with an event.","type":"object","properties":{"index":{"type":"boolean","title":"nondeterministic"},"key":{"type":"string"},"value":{"type":"string"}}},"tendermint.abci.ExecTxResult":{"description":"ExecTxResult contains results of executing one individual transaction.\n\n* Its structure is equivalent to #ResponseDeliverTx which will be deprecated/deleted","type":"object","properties":{"code":{"type":"integer","format":"int64"},"codespace":{"type":"string"},"data":{"type":"string","format":"byte"},"events":{"type":"array","title":"nondeterministic","items":{"type":"object","$ref":"#/definitions/tendermint.abci.Event"}},"gas_used":{"type":"string","format":"int64"},"gas_wanted":{"type":"string","format":"int64"},"info":{"type":"string","title":"nondeterministic"},"log":{"type":"string","title":"nondeterministic"}}},"tendermint.abci.ExtendedCommitInfo":{"description":"ExtendedCommitInfo is similar to CommitInfo except that it is only used in\nthe PrepareProposal request such that CometBFT can provide vote extensions\nto the application.","type":"object","properties":{"round":{"description":"The round at which the block proposer decided in the previous height.","type":"integer","format":"int32"},"votes":{"description":"List of validators' addresses in the last validator set with their voting\ninformation, including vote extensions.","type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.ExtendedVoteInfo"}}}},"tendermint.abci.ExtendedVoteInfo":{"type":"object","properties":{"block_id_flag":{"title":"block_id_flag indicates whether the validator voted for a block, nil, or did not vote at all","$ref":"#/definitions/tendermint.types.BlockIDFlag"},"extension_signature":{"type":"string","format":"byte","title":"Vote extension signature created by CometBFT"},"validator":{"description":"The validator that sent the vote.","$ref":"#/definitions/tendermint.abci.Validator"},"vote_extension":{"description":"Non-deterministic extension provided by the sending validator's application.","type":"string","format":"byte"}}},"tendermint.abci.Misbehavior":{"type":"object","properties":{"height":{"type":"string","format":"int64","title":"The height when the offense occurred"},"time":{"type":"string","format":"date-time","title":"The corresponding time where the offense occurred"},"total_voting_power":{"type":"string","format":"int64","title":"Total voting power of the validator set in case the ABCI application does\nnot store historical validators.\nhttps://github.com/tendermint/tendermint/issues/4581"},"type":{"$ref":"#/definitions/tendermint.abci.MisbehaviorType"},"validator":{"title":"The offending validator","$ref":"#/definitions/tendermint.abci.Validator"}}},"tendermint.abci.MisbehaviorType":{"type":"string","default":"UNKNOWN","enum":["UNKNOWN","DUPLICATE_VOTE","LIGHT_CLIENT_ATTACK"]},"tendermint.abci.RequestApplySnapshotChunk":{"type":"object","title":"Applies a snapshot chunk","properties":{"chunk":{"type":"string","format":"byte"},"index":{"type":"integer","format":"int64"},"sender":{"type":"string"}}},"tendermint.abci.RequestCheckTx":{"type":"object","properties":{"tx":{"type":"string","format":"byte"},"type":{"$ref":"#/definitions/tendermint.abci.CheckTxType"}}},"tendermint.abci.RequestCommit":{"type":"object"},"tendermint.abci.RequestEcho":{"type":"object","properties":{"message":{"type":"string"}}},"tendermint.abci.RequestExtendVote":{"type":"object","title":"Extends a vote with application-injected data","properties":{"hash":{"type":"string","format":"byte","title":"the hash of the block that this vote may be referring to"},"height":{"type":"string","format":"int64","title":"the height of the extended vote"},"misbehavior":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.Misbehavior"}},"next_validators_hash":{"type":"string","format":"byte"},"proposed_last_commit":{"$ref":"#/definitions/tendermint.abci.CommitInfo"},"proposer_address":{"description":"address of the public key of the original proposer of the block.","type":"string","format":"byte"},"time":{"type":"string","format":"date-time","title":"info of the block that this vote may be referring to"},"txs":{"type":"array","items":{"type":"string","format":"byte"}}}},"tendermint.abci.RequestFinalizeBlock":{"type":"object","properties":{"decided_last_commit":{"$ref":"#/definitions/tendermint.abci.CommitInfo"},"hash":{"description":"hash is the merkle root hash of the fields of the decided block.","type":"string","format":"byte"},"height":{"type":"string","format":"int64"},"misbehavior":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.Misbehavior"}},"next_validators_hash":{"type":"string","format":"byte"},"proposer_address":{"description":"proposer_address is the address of the public key of the original proposer of the block.","type":"string","format":"byte"},"time":{"type":"string","format":"date-time"},"txs":{"type":"array","items":{"type":"string","format":"byte"}}}},"tendermint.abci.RequestFlush":{"type":"object"},"tendermint.abci.RequestInfo":{"type":"object","properties":{"abci_version":{"type":"string"},"block_version":{"type":"string","format":"uint64"},"p2p_version":{"type":"string","format":"uint64"},"version":{"type":"string"}}},"tendermint.abci.RequestInitChain":{"type":"object","properties":{"app_state_bytes":{"type":"string","format":"byte"},"chain_id":{"type":"string"},"consensus_params":{"$ref":"#/definitions/tendermint.types.ConsensusParams"},"initial_height":{"type":"string","format":"int64"},"time":{"type":"string","format":"date-time"},"validators":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.ValidatorUpdate"}}}},"tendermint.abci.RequestListSnapshots":{"type":"object","title":"lists available snapshots"},"tendermint.abci.RequestLoadSnapshotChunk":{"type":"object","title":"loads a snapshot chunk","properties":{"chunk":{"type":"integer","format":"int64"},"format":{"type":"integer","format":"int64"},"height":{"type":"string","format":"uint64"}}},"tendermint.abci.RequestOfferSnapshot":{"type":"object","title":"offers a snapshot to the application","properties":{"app_hash":{"type":"string","format":"byte","title":"light client-verified app hash for snapshot height"},"snapshot":{"title":"snapshot offered by peers","$ref":"#/definitions/tendermint.abci.Snapshot"}}},"tendermint.abci.RequestPrepareProposal":{"type":"object","properties":{"height":{"type":"string","format":"int64"},"local_last_commit":{"$ref":"#/definitions/tendermint.abci.ExtendedCommitInfo"},"max_tx_bytes":{"description":"the modified transactions cannot exceed this size.","type":"string","format":"int64"},"misbehavior":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.Misbehavior"}},"next_validators_hash":{"type":"string","format":"byte"},"proposer_address":{"description":"address of the public key of the validator proposing the block.","type":"string","format":"byte"},"time":{"type":"string","format":"date-time"},"txs":{"description":"txs is an array of transactions that will be included in a block,\nsent to the app for possible modifications.","type":"array","items":{"type":"string","format":"byte"}}}},"tendermint.abci.RequestProcessProposal":{"type":"object","properties":{"hash":{"description":"hash is the merkle root hash of the fields of the proposed block.","type":"string","format":"byte"},"height":{"type":"string","format":"int64"},"misbehavior":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.Misbehavior"}},"next_validators_hash":{"type":"string","format":"byte"},"proposed_last_commit":{"$ref":"#/definitions/tendermint.abci.CommitInfo"},"proposer_address":{"description":"address of the public key of the original proposer of the block.","type":"string","format":"byte"},"time":{"type":"string","format":"date-time"},"txs":{"type":"array","items":{"type":"string","format":"byte"}}}},"tendermint.abci.RequestQuery":{"type":"object","properties":{"data":{"type":"string","format":"byte"},"height":{"type":"string","format":"int64"},"path":{"type":"string"},"prove":{"type":"boolean"}}},"tendermint.abci.RequestVerifyVoteExtension":{"type":"object","title":"Verify the vote extension","properties":{"hash":{"type":"string","format":"byte","title":"the hash of the block that this received vote corresponds to"},"height":{"type":"string","format":"int64"},"validator_address":{"type":"string","format":"byte","title":"the validator that signed the vote extension"},"vote_extension":{"type":"string","format":"byte"}}},"tendermint.abci.ResponseApplySnapshotChunk":{"type":"object","properties":{"refetch_chunks":{"type":"array","title":"Chunks to refetch and reapply","items":{"type":"integer","format":"int64"}},"reject_senders":{"type":"array","title":"Chunk senders to reject and ban","items":{"type":"string"}},"result":{"$ref":"#/definitions/tendermint.abci.ResponseApplySnapshotChunk.Result"}}},"tendermint.abci.ResponseApplySnapshotChunk.Result":{"type":"string","title":"- UNKNOWN: Unknown result, abort all snapshot restoration\n - ACCEPT: Chunk successfully accepted\n - ABORT: Abort all snapshot restoration\n - RETRY: Retry chunk (combine with refetch and reject)\n - RETRY_SNAPSHOT: Retry snapshot (combine with refetch and reject)\n - REJECT_SNAPSHOT: Reject this snapshot, try others","default":"UNKNOWN","enum":["UNKNOWN","ACCEPT","ABORT","RETRY","RETRY_SNAPSHOT","REJECT_SNAPSHOT"]},"tendermint.abci.ResponseCheckTx":{"type":"object","properties":{"code":{"type":"integer","format":"int64"},"codespace":{"type":"string"},"data":{"type":"string","format":"byte"},"events":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.Event"}},"gas_used":{"type":"string","format":"int64"},"gas_wanted":{"type":"string","format":"int64"},"info":{"type":"string","title":"nondeterministic"},"log":{"type":"string","title":"nondeterministic"}}},"tendermint.abci.ResponseCommit":{"type":"object","properties":{"retain_height":{"type":"string","format":"int64"}}},"tendermint.abci.ResponseEcho":{"type":"object","properties":{"message":{"type":"string"}}},"tendermint.abci.ResponseExtendVote":{"type":"object","properties":{"vote_extension":{"type":"string","format":"byte"}}},"tendermint.abci.ResponseFinalizeBlock":{"type":"object","properties":{"app_hash":{"description":"app_hash is the hash of the applications' state which is used to confirm that execution of the transactions was\ndeterministic. It is up to the application to decide which algorithm to use.","type":"string","format":"byte"},"consensus_param_updates":{"description":"updates to the consensus params, if any.","$ref":"#/definitions/tendermint.types.ConsensusParams"},"events":{"type":"array","title":"set of block events emmitted as part of executing the block","items":{"type":"object","$ref":"#/definitions/tendermint.abci.Event"}},"tx_results":{"type":"array","title":"the result of executing each transaction including the events\nthe particular transction emitted. This should match the order\nof the transactions delivered in the block itself","items":{"type":"object","$ref":"#/definitions/tendermint.abci.ExecTxResult"}},"validator_updates":{"description":"a list of updates to the validator set. These will reflect the validator set at current height + 2.","type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.ValidatorUpdate"}}}},"tendermint.abci.ResponseFlush":{"type":"object"},"tendermint.abci.ResponseInfo":{"type":"object","properties":{"app_version":{"type":"string","format":"uint64"},"data":{"type":"string"},"last_block_app_hash":{"type":"string","format":"byte"},"last_block_height":{"type":"string","format":"int64"},"version":{"type":"string"}}},"tendermint.abci.ResponseInitChain":{"type":"object","properties":{"app_hash":{"type":"string","format":"byte"},"consensus_params":{"$ref":"#/definitions/tendermint.types.ConsensusParams"},"validators":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.ValidatorUpdate"}}}},"tendermint.abci.ResponseListSnapshots":{"type":"object","properties":{"snapshots":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.Snapshot"}}}},"tendermint.abci.ResponseLoadSnapshotChunk":{"type":"object","properties":{"chunk":{"type":"string","format":"byte"}}},"tendermint.abci.ResponseOfferSnapshot":{"type":"object","properties":{"result":{"$ref":"#/definitions/tendermint.abci.ResponseOfferSnapshot.Result"}}},"tendermint.abci.ResponseOfferSnapshot.Result":{"type":"string","title":"- UNKNOWN: Unknown result, abort all snapshot restoration\n - ACCEPT: Snapshot accepted, apply chunks\n - ABORT: Abort all snapshot restoration\n - REJECT: Reject this specific snapshot, try others\n - REJECT_FORMAT: Reject all snapshots of this format, try others\n - REJECT_SENDER: Reject all snapshots from the sender(s), try others","default":"UNKNOWN","enum":["UNKNOWN","ACCEPT","ABORT","REJECT","REJECT_FORMAT","REJECT_SENDER"]},"tendermint.abci.ResponsePrepareProposal":{"type":"object","properties":{"txs":{"type":"array","items":{"type":"string","format":"byte"}}}},"tendermint.abci.ResponseProcessProposal":{"type":"object","properties":{"status":{"$ref":"#/definitions/tendermint.abci.ResponseProcessProposal.ProposalStatus"}}},"tendermint.abci.ResponseProcessProposal.ProposalStatus":{"type":"string","default":"UNKNOWN","enum":["UNKNOWN","ACCEPT","REJECT"]},"tendermint.abci.ResponseQuery":{"type":"object","properties":{"code":{"type":"integer","format":"int64"},"codespace":{"type":"string"},"height":{"type":"string","format":"int64"},"index":{"type":"string","format":"int64"},"info":{"type":"string","title":"nondeterministic"},"key":{"type":"string","format":"byte"},"log":{"description":"bytes data = 2; // use \"value\" instead.\n\nnondeterministic","type":"string"},"proof_ops":{"$ref":"#/definitions/tendermint.crypto.ProofOps"},"value":{"type":"string","format":"byte"}}},"tendermint.abci.ResponseVerifyVoteExtension":{"type":"object","properties":{"status":{"$ref":"#/definitions/tendermint.abci.ResponseVerifyVoteExtension.VerifyStatus"}}},"tendermint.abci.ResponseVerifyVoteExtension.VerifyStatus":{"description":" - REJECT: Rejecting the vote extension will reject the entire precommit by the sender.\nIncorrectly implementing this thus has liveness implications as it may affect\nCometBFT's ability to receive 2/3+ valid votes to finalize the block.\nHonest nodes should never be rejected.","type":"string","default":"UNKNOWN","enum":["UNKNOWN","ACCEPT","REJECT"]},"tendermint.abci.Snapshot":{"type":"object","properties":{"chunks":{"type":"integer","format":"int64","title":"Number of chunks in the snapshot"},"format":{"type":"integer","format":"int64","title":"The application-specific snapshot format"},"hash":{"type":"string","format":"byte","title":"Arbitrary snapshot hash, equal only if identical"},"height":{"type":"string","format":"uint64","title":"The height at which the snapshot was taken"},"metadata":{"type":"string","format":"byte","title":"Arbitrary application metadata"}}},"tendermint.abci.Validator":{"type":"object","properties":{"address":{"type":"string","format":"byte","title":"The first 20 bytes of SHA256(public key)"},"power":{"description":"The voting power","type":"string","format":"int64","title":"PubKey pub_key = 2 [(gogoproto.nullable)=false];"}}},"tendermint.abci.ValidatorUpdate":{"type":"object","properties":{"power":{"type":"string","format":"int64"},"pub_key":{"$ref":"#/definitions/tendermint.crypto.PublicKey"}}},"tendermint.abci.VoteInfo":{"type":"object","properties":{"block_id_flag":{"$ref":"#/definitions/tendermint.types.BlockIDFlag"},"validator":{"$ref":"#/definitions/tendermint.abci.Validator"}}},"tendermint.crypto.ProofOp":{"type":"object","title":"ProofOp defines an operation used for calculating Merkle root\nThe data could be arbitrary format, providing nessecary data\nfor example neighbouring node hash","properties":{"data":{"type":"string","format":"byte"},"key":{"type":"string","format":"byte"},"type":{"type":"string"}}},"tendermint.crypto.ProofOps":{"type":"object","title":"ProofOps is Merkle proof defined by the list of ProofOps","properties":{"ops":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.crypto.ProofOp"}}}},"tendermint.crypto.PublicKey":{"type":"object","title":"PublicKey defines the keys available for use with Validators","properties":{"ed25519":{"type":"string","format":"byte"},"secp256k1":{"type":"string","format":"byte"}}},"tendermint.p2p.DefaultNodeInfo":{"type":"object","properties":{"channels":{"type":"string","format":"byte"},"default_node_id":{"type":"string"},"listen_addr":{"type":"string"},"moniker":{"type":"string"},"network":{"type":"string"},"other":{"$ref":"#/definitions/tendermint.p2p.DefaultNodeInfoOther"},"protocol_version":{"$ref":"#/definitions/tendermint.p2p.ProtocolVersion"},"version":{"type":"string"}}},"tendermint.p2p.DefaultNodeInfoOther":{"type":"object","properties":{"rpc_address":{"type":"string"},"tx_index":{"type":"string"}}},"tendermint.p2p.ProtocolVersion":{"type":"object","properties":{"app":{"type":"string","format":"uint64"},"block":{"type":"string","format":"uint64"},"p2p":{"type":"string","format":"uint64"}}},"tendermint.types.ABCIParams":{"description":"ABCIParams configure functionality specific to the Application Blockchain Interface.","type":"object","properties":{"vote_extensions_enable_height":{"description":"vote_extensions_enable_height configures the first height during which\nvote extensions will be enabled. During this specified height, and for all\nsubsequent heights, precommit messages that do not contain valid extension data\nwill be considered invalid. Prior to this height, vote extensions will not\nbe used or accepted by validators on the network.\n\nOnce enabled, vote extensions will be created by the application in ExtendVote,\npassed to the application for validation in VerifyVoteExtension and given\nto the application to use when proposing a block during PrepareProposal.","type":"string","format":"int64"}}},"tendermint.types.Block":{"type":"object","properties":{"data":{"$ref":"#/definitions/tendermint.types.Data"},"evidence":{"$ref":"#/definitions/tendermint.types.EvidenceList"},"header":{"$ref":"#/definitions/tendermint.types.Header"},"last_commit":{"$ref":"#/definitions/tendermint.types.Commit"}}},"tendermint.types.BlockID":{"type":"object","title":"BlockID","properties":{"hash":{"type":"string","format":"byte"},"part_set_header":{"$ref":"#/definitions/tendermint.types.PartSetHeader"}}},"tendermint.types.BlockIDFlag":{"description":"- BLOCK_ID_FLAG_UNKNOWN: indicates an error condition\n - BLOCK_ID_FLAG_ABSENT: the vote was not received\n - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority\n - BLOCK_ID_FLAG_NIL: voted for nil","type":"string","title":"BlockIdFlag indicates which BlockID the signature is for","default":"BLOCK_ID_FLAG_UNKNOWN","enum":["BLOCK_ID_FLAG_UNKNOWN","BLOCK_ID_FLAG_ABSENT","BLOCK_ID_FLAG_COMMIT","BLOCK_ID_FLAG_NIL"]},"tendermint.types.BlockParams":{"description":"BlockParams contains limits on the block size.","type":"object","properties":{"max_bytes":{"type":"string","format":"int64","title":"Max block size, in bytes.\nNote: must be greater than 0"},"max_gas":{"type":"string","format":"int64","title":"Max gas per block.\nNote: must be greater or equal to -1"}}},"tendermint.types.Commit":{"description":"Commit contains the evidence that a block was committed by a set of validators.","type":"object","properties":{"block_id":{"$ref":"#/definitions/tendermint.types.BlockID"},"height":{"type":"string","format":"int64"},"round":{"type":"integer","format":"int32"},"signatures":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.types.CommitSig"}}}},"tendermint.types.CommitSig":{"description":"CommitSig is a part of the Vote included in a Commit.","type":"object","properties":{"block_id_flag":{"$ref":"#/definitions/tendermint.types.BlockIDFlag"},"signature":{"type":"string","format":"byte"},"timestamp":{"type":"string","format":"date-time"},"validator_address":{"type":"string","format":"byte"}}},"tendermint.types.ConsensusParams":{"description":"ConsensusParams contains consensus critical parameters that determine the\nvalidity of blocks.","type":"object","properties":{"abci":{"$ref":"#/definitions/tendermint.types.ABCIParams"},"block":{"$ref":"#/definitions/tendermint.types.BlockParams"},"evidence":{"$ref":"#/definitions/tendermint.types.EvidenceParams"},"validator":{"$ref":"#/definitions/tendermint.types.ValidatorParams"},"version":{"$ref":"#/definitions/tendermint.types.VersionParams"}}},"tendermint.types.Data":{"type":"object","title":"Data contains the set of transactions included in the block","properties":{"txs":{"description":"Txs that will be applied by state @ block.Height+1.\nNOTE: not all txs here are valid. We're just agreeing on the order first.\nThis means that block.AppHash does not include these txs.","type":"array","items":{"type":"string","format":"byte"}}}},"tendermint.types.DuplicateVoteEvidence":{"description":"DuplicateVoteEvidence contains evidence of a validator signed two conflicting votes.","type":"object","properties":{"timestamp":{"type":"string","format":"date-time"},"total_voting_power":{"type":"string","format":"int64"},"validator_power":{"type":"string","format":"int64"},"vote_a":{"$ref":"#/definitions/tendermint.types.Vote"},"vote_b":{"$ref":"#/definitions/tendermint.types.Vote"}}},"tendermint.types.Evidence":{"type":"object","properties":{"duplicate_vote_evidence":{"$ref":"#/definitions/tendermint.types.DuplicateVoteEvidence"},"light_client_attack_evidence":{"$ref":"#/definitions/tendermint.types.LightClientAttackEvidence"}}},"tendermint.types.EvidenceList":{"type":"object","properties":{"evidence":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.types.Evidence"}}}},"tendermint.types.EvidenceParams":{"description":"EvidenceParams determine how we handle evidence of malfeasance.","type":"object","properties":{"max_age_duration":{"description":"Max age of evidence, in time.\n\nIt should correspond with an app's \"unbonding period\" or other similar\nmechanism for handling [Nothing-At-Stake\nattacks](https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQ#what-is-the-nothing-at-stake-problem-and-how-can-it-be-fixed).","type":"string"},"max_age_num_blocks":{"description":"Max age of evidence, in blocks.\n\nThe basic formula for calculating this is: MaxAgeDuration / {average block\ntime}.","type":"string","format":"int64"},"max_bytes":{"type":"string","format":"int64","title":"This sets the maximum size of total evidence in bytes that can be committed in a single block.\nand should fall comfortably under the max block bytes.\nDefault is 1048576 or 1MB"}}},"tendermint.types.Header":{"description":"Header defines the structure of a block header.","type":"object","properties":{"app_hash":{"type":"string","format":"byte","title":"state after txs from the previous block"},"chain_id":{"type":"string"},"consensus_hash":{"type":"string","format":"byte","title":"consensus params for current block"},"data_hash":{"type":"string","format":"byte","title":"transactions"},"evidence_hash":{"description":"evidence included in the block","type":"string","format":"byte","title":"consensus info"},"height":{"type":"string","format":"int64"},"last_block_id":{"title":"prev block info","$ref":"#/definitions/tendermint.types.BlockID"},"last_commit_hash":{"description":"commit from validators from the last block","type":"string","format":"byte","title":"hashes of block data"},"last_results_hash":{"type":"string","format":"byte","title":"root hash of all results from the txs from the previous block"},"next_validators_hash":{"type":"string","format":"byte","title":"validators for the next block"},"proposer_address":{"type":"string","format":"byte","title":"original proposer of the block"},"time":{"type":"string","format":"date-time"},"validators_hash":{"description":"validators for the current block","type":"string","format":"byte","title":"hashes from the app output from the prev block"},"version":{"title":"basic block info","$ref":"#/definitions/tendermint.version.Consensus"}}},"tendermint.types.LightBlock":{"type":"object","properties":{"signed_header":{"$ref":"#/definitions/tendermint.types.SignedHeader"},"validator_set":{"$ref":"#/definitions/tendermint.types.ValidatorSet"}}},"tendermint.types.LightClientAttackEvidence":{"description":"LightClientAttackEvidence contains evidence of a set of validators attempting to mislead a light client.","type":"object","properties":{"byzantine_validators":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.types.Validator"}},"common_height":{"type":"string","format":"int64"},"conflicting_block":{"$ref":"#/definitions/tendermint.types.LightBlock"},"timestamp":{"type":"string","format":"date-time"},"total_voting_power":{"type":"string","format":"int64"}}},"tendermint.types.PartSetHeader":{"type":"object","title":"PartsetHeader","properties":{"hash":{"type":"string","format":"byte"},"total":{"type":"integer","format":"int64"}}},"tendermint.types.SignedHeader":{"type":"object","properties":{"commit":{"$ref":"#/definitions/tendermint.types.Commit"},"header":{"$ref":"#/definitions/tendermint.types.Header"}}},"tendermint.types.SignedMsgType":{"description":"SignedMsgType is a type of signed message in the consensus.\n\n - SIGNED_MSG_TYPE_PREVOTE: Votes\n - SIGNED_MSG_TYPE_PROPOSAL: Proposals","type":"string","default":"SIGNED_MSG_TYPE_UNKNOWN","enum":["SIGNED_MSG_TYPE_UNKNOWN","SIGNED_MSG_TYPE_PREVOTE","SIGNED_MSG_TYPE_PRECOMMIT","SIGNED_MSG_TYPE_PROPOSAL"]},"tendermint.types.Validator":{"type":"object","properties":{"address":{"type":"string","format":"byte"},"proposer_priority":{"type":"string","format":"int64"},"pub_key":{"$ref":"#/definitions/tendermint.crypto.PublicKey"},"voting_power":{"type":"string","format":"int64"}}},"tendermint.types.ValidatorParams":{"description":"ValidatorParams restrict the public key types validators can use.\nNOTE: uses ABCI pubkey naming, not Amino names.","type":"object","properties":{"pub_key_types":{"type":"array","items":{"type":"string"}}}},"tendermint.types.ValidatorSet":{"type":"object","properties":{"proposer":{"$ref":"#/definitions/tendermint.types.Validator"},"total_voting_power":{"type":"string","format":"int64"},"validators":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.types.Validator"}}}},"tendermint.types.VersionParams":{"description":"VersionParams contains the ABCI application version.","type":"object","properties":{"app":{"type":"string","format":"uint64"}}},"tendermint.types.Vote":{"description":"Vote represents a prevote or precommit vote from validators for\nconsensus.","type":"object","properties":{"block_id":{"description":"zero if vote is nil.","$ref":"#/definitions/tendermint.types.BlockID"},"extension":{"description":"Vote extension provided by the application. Only valid for precommit\nmessages.","type":"string","format":"byte"},"extension_signature":{"description":"Vote extension signature by the validator if they participated in\nconsensus for the associated block.\nOnly valid for precommit messages.","type":"string","format":"byte"},"height":{"type":"string","format":"int64"},"round":{"type":"integer","format":"int32"},"signature":{"description":"Vote signature by the validator if they participated in consensus for the\nassociated block.","type":"string","format":"byte"},"timestamp":{"type":"string","format":"date-time"},"type":{"$ref":"#/definitions/tendermint.types.SignedMsgType"},"validator_address":{"type":"string","format":"byte"},"validator_index":{"type":"integer","format":"int32"}}},"tendermint.version.Consensus":{"description":"Consensus captures the consensus rules for processing a block in the blockchain,\nincluding all blockchain data structures and the rules of the application's\nstate transition machine.","type":"object","properties":{"app":{"type":"string","format":"uint64"},"block":{"type":"string","format":"uint64"}}}},"tags":[{"name":"Query"},{"name":"Msg"},{"name":"Service"},{"name":"ReflectionService"},{"name":"ABCIListenerService"},{"name":"ABCI"}]} \ No newline at end of file +{"id":"github.com/ignite/modules","consumes":["application/json"],"produces":["application/json"],"swagger":"2.0","info":{"description":"Chain github.com/ignite/modules REST API","title":"HTTP API Console","contact":{"name":"github.com/ignite/modules"},"version":"version not set"},"paths":{"/cosmos.auth.v1beta1.Msg/UpdateParams":{"post":{"description":"Since: cosmos-sdk 0.47","tags":["Msg"],"summary":"UpdateParams defines a (governance) operation for updating the x/auth module\nparameters. The authority defaults to the x/gov module account.","operationId":"FeegrantMsg_UpdateParams","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.auth.v1beta1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.auth.v1beta1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.authz.v1beta1.Msg/Exec":{"post":{"tags":["Msg"],"summary":"Exec attempts to execute the provided messages using\nauthorizations granted to the grantee. Each message should have only\none signer corresponding to the granter of the authorization.","operationId":"FeegrantMsg_Exec","parameters":[{"description":"MsgExec attempts to execute the provided messages using\nauthorizations granted to the grantee. Each message should have only\none signer corresponding to the granter of the authorization.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.authz.v1beta1.MsgExec"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.authz.v1beta1.MsgExecResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.authz.v1beta1.Msg/Grant":{"post":{"tags":["Msg"],"summary":"Grant grants the provided authorization to the grantee on the granter's\naccount with the provided expiration time. If there is already a grant\nfor the given (granter, grantee, Authorization) triple, then the grant\nwill be overwritten.","operationId":"FeegrantMsg_Grant","parameters":[{"description":"MsgGrant is a request type for Grant method. It declares authorization to the grantee\non behalf of the granter with the provided expiration time.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.authz.v1beta1.MsgGrant"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.authz.v1beta1.MsgGrantResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.authz.v1beta1.Msg/Revoke":{"post":{"tags":["Msg"],"summary":"Revoke revokes any authorization corresponding to the provided method name on the\ngranter's account that has been granted to the grantee.","operationId":"FeegrantMsg_Revoke","parameters":[{"description":"MsgRevoke revokes any authorization with the provided sdk.Msg type on the\ngranter's account with that has been granted to the grantee.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.authz.v1beta1.MsgRevoke"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.authz.v1beta1.MsgRevokeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.autocli.v1.Query/AppOptions":{"post":{"tags":["Query"],"summary":"AppOptions returns the autocli options for all of the modules in an app.","operationId":"FeegrantQuery_AppOptions","parameters":[{"description":"AppOptionsRequest is the RemoteInfoService/AppOptions request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.autocli.v1.AppOptionsRequest"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.autocli.v1.AppOptionsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.bank.v1beta1.Msg/MultiSend":{"post":{"tags":["Msg"],"summary":"MultiSend defines a method for sending coins from some accounts to other accounts.","operationId":"FeegrantMsg_MultiSend","parameters":[{"description":"MsgMultiSend represents an arbitrary multi-in, multi-out send message.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.MsgMultiSend"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.MsgMultiSendResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.bank.v1beta1.Msg/Send":{"post":{"tags":["Msg"],"summary":"Send defines a method for sending coins from one account to another account.","operationId":"FeegrantMsg_Send","parameters":[{"description":"MsgSend represents a message to send coins from one account to another.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.MsgSend"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.MsgSendResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.bank.v1beta1.Msg/SetSendEnabled":{"post":{"description":"Since: cosmos-sdk 0.47","tags":["Msg"],"summary":"SetSendEnabled is a governance operation for setting the SendEnabled flag\non any number of Denoms. Only the entries to add or update should be\nincluded. Entries that already exist in the store, but that aren't\nincluded in this message, will be left unchanged.","operationId":"FeegrantMsg_SetSendEnabled","parameters":[{"description":"MsgSetSendEnabled is the Msg/SetSendEnabled request type.\n\nOnly entries to add/update/delete need to be included.\nExisting SendEnabled entries that are not included in this\nmessage are left unchanged.\n\nSince: cosmos-sdk 0.47","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.MsgSetSendEnabled"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.MsgSetSendEnabledResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.bank.v1beta1.Msg/UpdateParams":{"post":{"description":"Since: cosmos-sdk 0.47","tags":["Msg"],"summary":"UpdateParams defines a governance operation for updating the x/bank module parameters.\nThe authority is defined in the keeper.","operationId":"FeegrantMsg_UpdateParamsMixin40","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.circuit.v1.Msg/AuthorizeCircuitBreaker":{"post":{"tags":["Msg"],"summary":"AuthorizeCircuitBreaker allows a super-admin to grant (or revoke) another\naccount's circuit breaker permissions.","operationId":"FeegrantMsg_AuthorizeCircuitBreaker","parameters":[{"description":"MsgAuthorizeCircuitBreaker defines the Msg/AuthorizeCircuitBreaker request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.circuit.v1.MsgAuthorizeCircuitBreaker"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.circuit.v1.MsgAuthorizeCircuitBreakerResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.circuit.v1.Msg/ResetCircuitBreaker":{"post":{"tags":["Msg"],"summary":"ResetCircuitBreaker resumes processing of Msg's in the state machine that\nhave been been paused using TripCircuitBreaker.","operationId":"FeegrantMsg_ResetCircuitBreaker","parameters":[{"description":"MsgResetCircuitBreaker defines the Msg/ResetCircuitBreaker request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.circuit.v1.MsgResetCircuitBreaker"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.circuit.v1.MsgResetCircuitBreakerResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.circuit.v1.Msg/TripCircuitBreaker":{"post":{"tags":["Msg"],"summary":"TripCircuitBreaker pauses processing of Msg's in the state machine.","operationId":"FeegrantMsg_TripCircuitBreaker","parameters":[{"description":"MsgTripCircuitBreaker defines the Msg/TripCircuitBreaker request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.circuit.v1.MsgTripCircuitBreaker"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.circuit.v1.MsgTripCircuitBreakerResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.consensus.v1.Msg/UpdateParams":{"post":{"description":"Since: cosmos-sdk 0.47","tags":["Msg"],"summary":"UpdateParams defines a governance operation for updating the x/consensus module parameters.\nThe authority is defined in the keeper.","operationId":"FeegrantMsg_UpdateParamsMixin53","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.consensus.v1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.consensus.v1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.crisis.v1beta1.Msg/UpdateParams":{"post":{"description":"Since: cosmos-sdk 0.47","tags":["Msg"],"summary":"UpdateParams defines a governance operation for updating the x/crisis module\nparameters. The authority is defined in the keeper.","operationId":"FeegrantMsg_UpdateParamsMixin55","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.crisis.v1beta1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.crisis.v1beta1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.crisis.v1beta1.Msg/VerifyInvariant":{"post":{"tags":["Msg"],"summary":"VerifyInvariant defines a method to verify a particular invariant.","operationId":"FeegrantMsg_VerifyInvariant","parameters":[{"description":"MsgVerifyInvariant represents a message to verify a particular invariance.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.crisis.v1beta1.MsgVerifyInvariant"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.crisis.v1beta1.MsgVerifyInvariantResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.distribution.v1beta1.Msg/CommunityPoolSpend":{"post":{"description":"Since: cosmos-sdk 0.47","tags":["Msg"],"summary":"CommunityPoolSpend defines a governance operation for sending tokens from\nthe community pool in the x/distribution module to another account, which\ncould be the governance module itself. The authority is defined in the\nkeeper.","operationId":"FeegrantMsg_CommunityPoolSpend","parameters":[{"description":"MsgCommunityPoolSpend defines a message for sending tokens from the community\npool to another account. This message is typically executed via a governance\nproposal with the governance module being the executing authority.\n\nSince: cosmos-sdk 0.47","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgCommunityPoolSpend"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgCommunityPoolSpendResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.distribution.v1beta1.Msg/DepositValidatorRewardsPool":{"post":{"description":"Since: cosmos-sdk 0.50","tags":["Msg"],"summary":"DepositValidatorRewardsPool defines a method to provide additional rewards\nto delegators to a specific validator.","operationId":"FeegrantMsg_DepositValidatorRewardsPool","parameters":[{"description":"DepositValidatorRewardsPool defines the request structure to provide\nadditional rewards to delegators from a specific validator.\n\nSince: cosmos-sdk 0.50","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgDepositValidatorRewardsPool"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgDepositValidatorRewardsPoolResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.distribution.v1beta1.Msg/FundCommunityPool":{"post":{"tags":["Msg"],"summary":"FundCommunityPool defines a method to allow an account to directly\nfund the community pool.","operationId":"FeegrantMsg_FundCommunityPool","parameters":[{"description":"MsgFundCommunityPool allows an account to directly\nfund the community pool.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgFundCommunityPool"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgFundCommunityPoolResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.distribution.v1beta1.Msg/SetWithdrawAddress":{"post":{"tags":["Msg"],"summary":"SetWithdrawAddress defines a method to change the withdraw address\nfor a delegator (or validator self-delegation).","operationId":"FeegrantMsg_SetWithdrawAddress","parameters":[{"description":"MsgSetWithdrawAddress sets the withdraw address for\na delegator (or validator self-delegation).","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgSetWithdrawAddress"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgSetWithdrawAddressResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.distribution.v1beta1.Msg/UpdateParams":{"post":{"description":"Since: cosmos-sdk 0.47","tags":["Msg"],"summary":"UpdateParams defines a governance operation for updating the x/distribution\nmodule parameters. The authority is defined in the keeper.","operationId":"FeegrantMsg_UpdateParamsMixin66","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.distribution.v1beta1.Msg/WithdrawDelegatorReward":{"post":{"tags":["Msg"],"summary":"WithdrawDelegatorReward defines a method to withdraw rewards of delegator\nfrom a single validator.","operationId":"FeegrantMsg_WithdrawDelegatorReward","parameters":[{"description":"MsgWithdrawDelegatorReward represents delegation withdrawal to a delegator\nfrom a single validator.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgWithdrawDelegatorRewardResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.distribution.v1beta1.Msg/WithdrawValidatorCommission":{"post":{"tags":["Msg"],"summary":"WithdrawValidatorCommission defines a method to withdraw the\nfull commission to the validator address.","operationId":"FeegrantMsg_WithdrawValidatorCommission","parameters":[{"description":"MsgWithdrawValidatorCommission withdraws the full commission to the validator\naddress.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgWithdrawValidatorCommission"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgWithdrawValidatorCommissionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.evidence.v1beta1.Msg/SubmitEvidence":{"post":{"tags":["Msg"],"summary":"SubmitEvidence submits an arbitrary Evidence of misbehavior such as equivocation or\ncounterfactual signing.","operationId":"FeegrantMsg_SubmitEvidence","parameters":[{"description":"MsgSubmitEvidence represents a message that supports submitting arbitrary\nEvidence of misbehavior such as equivocation or counterfactual signing.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.evidence.v1beta1.MsgSubmitEvidence"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evidence.v1beta1.MsgSubmitEvidenceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.feegrant.v1beta1.Msg/GrantAllowance":{"post":{"tags":["Msg"],"summary":"GrantAllowance grants fee allowance to the grantee on the granter's\naccount with the provided expiration time.","operationId":"FeegrantMsg_GrantAllowance","parameters":[{"description":"MsgGrantAllowance adds permission for Grantee to spend up to Allowance\nof fees from the account of Granter.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.feegrant.v1beta1.MsgGrantAllowance"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.feegrant.v1beta1.MsgGrantAllowanceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.feegrant.v1beta1.Msg/PruneAllowances":{"post":{"description":"Since cosmos-sdk 0.50","tags":["Msg"],"summary":"PruneAllowances prunes expired fee allowances, currently up to 75 at a time.","operationId":"FeegrantMsg_PruneAllowances","parameters":[{"description":"MsgPruneAllowances prunes expired fee allowances.\n\nSince cosmos-sdk 0.50","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.feegrant.v1beta1.MsgPruneAllowances"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.feegrant.v1beta1.MsgPruneAllowancesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.feegrant.v1beta1.Msg/RevokeAllowance":{"post":{"tags":["Msg"],"summary":"RevokeAllowance revokes any fee allowance of granter's account that\nhas been granted to the grantee.","operationId":"FeegrantMsg_RevokeAllowance","parameters":[{"description":"MsgRevokeAllowance removes any existing Allowance from Granter to Grantee.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.feegrant.v1beta1.MsgRevokeAllowance"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.feegrant.v1beta1.MsgRevokeAllowanceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.gov.v1.Msg/CancelProposal":{"post":{"description":"Since: cosmos-sdk 0.50","tags":["Msg"],"summary":"CancelProposal defines a method to cancel governance proposal","operationId":"FeegrantMsg_CancelProposal","parameters":[{"description":"MsgCancelProposal is the Msg/CancelProposal request type.\n\nSince: cosmos-sdk 0.50","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgCancelProposal"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgCancelProposalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.gov.v1.Msg/Deposit":{"post":{"tags":["Msg"],"summary":"Deposit defines a method to add deposit on a specific proposal.","operationId":"FeegrantMsg_Deposit","parameters":[{"description":"MsgDeposit defines a message to submit a deposit to an existing proposal.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgDeposit"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgDepositResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.gov.v1.Msg/ExecLegacyContent":{"post":{"tags":["Msg"],"summary":"ExecLegacyContent defines a Msg to be in included in a MsgSubmitProposal\nto execute a legacy content-based proposal.","operationId":"FeegrantMsg_ExecLegacyContent","parameters":[{"description":"MsgExecLegacyContent is used to wrap the legacy content field into a message.\nThis ensures backwards compatibility with v1beta1.MsgSubmitProposal.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgExecLegacyContent"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgExecLegacyContentResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.gov.v1.Msg/SubmitProposal":{"post":{"tags":["Msg"],"summary":"SubmitProposal defines a method to create new proposal given the messages.","operationId":"FeegrantMsg_SubmitProposal","parameters":[{"description":"MsgSubmitProposal defines an sdk.Msg type that supports submitting arbitrary\nproposal Content.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgSubmitProposal"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgSubmitProposalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.gov.v1.Msg/UpdateParams":{"post":{"description":"Since: cosmos-sdk 0.47","tags":["Msg"],"summary":"UpdateParams defines a governance operation for updating the x/gov module\nparameters. The authority is defined in the keeper.","operationId":"FeegrantMsg_UpdateParamsMixin79","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.gov.v1.Msg/Vote":{"post":{"tags":["Msg"],"summary":"Vote defines a method to add a vote on a specific proposal.","operationId":"FeegrantMsg_Vote","parameters":[{"description":"MsgVote defines a message to cast a vote.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgVote"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgVoteResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.gov.v1.Msg/VoteWeighted":{"post":{"tags":["Msg"],"summary":"VoteWeighted defines a method to add a weighted vote on a specific proposal.","operationId":"FeegrantMsg_VoteWeighted","parameters":[{"description":"MsgVoteWeighted defines a message to cast a vote.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgVoteWeighted"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgVoteWeightedResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.gov.v1beta1.Msg/Deposit":{"post":{"tags":["Msg"],"summary":"Deposit defines a method to add deposit on a specific proposal.","operationId":"FeegrantMsg_DepositMixin83","parameters":[{"description":"MsgDeposit defines a message to submit a deposit to an existing proposal.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.MsgDeposit"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.MsgDepositResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.gov.v1beta1.Msg/SubmitProposal":{"post":{"tags":["Msg"],"summary":"SubmitProposal defines a method to create new proposal given a content.","operationId":"FeegrantMsg_SubmitProposalMixin83","parameters":[{"description":"MsgSubmitProposal defines an sdk.Msg type that supports submitting arbitrary\nproposal Content.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.MsgSubmitProposal"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.MsgSubmitProposalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.gov.v1beta1.Msg/Vote":{"post":{"tags":["Msg"],"summary":"Vote defines a method to add a vote on a specific proposal.","operationId":"FeegrantMsg_VoteMixin83","parameters":[{"description":"MsgVote defines a message to cast a vote.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.MsgVote"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.MsgVoteResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.gov.v1beta1.Msg/VoteWeighted":{"post":{"description":"Since: cosmos-sdk 0.43","tags":["Msg"],"summary":"VoteWeighted defines a method to add a weighted vote on a specific proposal.","operationId":"FeegrantMsg_VoteWeightedMixin83","parameters":[{"description":"MsgVoteWeighted defines a message to cast a vote.\n\nSince: cosmos-sdk 0.43","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.MsgVoteWeighted"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.MsgVoteWeightedResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/CreateGroup":{"post":{"tags":["Msg"],"summary":"CreateGroup creates a new group with an admin account address, a list of members and some optional metadata.","operationId":"FeegrantMsg_CreateGroup","parameters":[{"description":"MsgCreateGroup is the Msg/CreateGroup request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgCreateGroup"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgCreateGroupResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/CreateGroupPolicy":{"post":{"tags":["Msg"],"summary":"CreateGroupPolicy creates a new group policy using given DecisionPolicy.","operationId":"FeegrantMsg_CreateGroupPolicy","parameters":[{"description":"MsgCreateGroupPolicy is the Msg/CreateGroupPolicy request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgCreateGroupPolicy"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgCreateGroupPolicyResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/CreateGroupWithPolicy":{"post":{"tags":["Msg"],"summary":"CreateGroupWithPolicy creates a new group with policy.","operationId":"FeegrantMsg_CreateGroupWithPolicy","parameters":[{"description":"MsgCreateGroupWithPolicy is the Msg/CreateGroupWithPolicy request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgCreateGroupWithPolicy"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgCreateGroupWithPolicyResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/Exec":{"post":{"tags":["Msg"],"summary":"Exec executes a proposal.","operationId":"FeegrantMsg_ExecMixin87","parameters":[{"description":"MsgExec is the Msg/Exec request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgExec"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgExecResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/LeaveGroup":{"post":{"tags":["Msg"],"summary":"LeaveGroup allows a group member to leave the group.","operationId":"FeegrantMsg_LeaveGroup","parameters":[{"description":"MsgLeaveGroup is the Msg/LeaveGroup request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgLeaveGroup"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgLeaveGroupResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/SubmitProposal":{"post":{"tags":["Msg"],"summary":"SubmitProposal submits a new proposal.","operationId":"FeegrantMsg_SubmitProposalMixin87","parameters":[{"description":"MsgSubmitProposal is the Msg/SubmitProposal request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgSubmitProposal"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgSubmitProposalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/UpdateGroupAdmin":{"post":{"tags":["Msg"],"summary":"UpdateGroupAdmin updates the group admin with given group id and previous admin address.","operationId":"FeegrantMsg_UpdateGroupAdmin","parameters":[{"description":"MsgUpdateGroupAdmin is the Msg/UpdateGroupAdmin request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgUpdateGroupAdmin"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgUpdateGroupAdminResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/UpdateGroupMembers":{"post":{"tags":["Msg"],"summary":"UpdateGroupMembers updates the group members with given group id and admin address.","operationId":"FeegrantMsg_UpdateGroupMembers","parameters":[{"description":"MsgUpdateGroupMembers is the Msg/UpdateGroupMembers request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgUpdateGroupMembers"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgUpdateGroupMembersResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/UpdateGroupMetadata":{"post":{"tags":["Msg"],"summary":"UpdateGroupMetadata updates the group metadata with given group id and admin address.","operationId":"FeegrantMsg_UpdateGroupMetadata","parameters":[{"description":"MsgUpdateGroupMetadata is the Msg/UpdateGroupMetadata request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgUpdateGroupMetadata"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgUpdateGroupMetadataResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/UpdateGroupPolicyAdmin":{"post":{"tags":["Msg"],"summary":"UpdateGroupPolicyAdmin updates a group policy admin.","operationId":"FeegrantMsg_UpdateGroupPolicyAdmin","parameters":[{"description":"MsgUpdateGroupPolicyAdmin is the Msg/UpdateGroupPolicyAdmin request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgUpdateGroupPolicyAdmin"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgUpdateGroupPolicyAdminResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/UpdateGroupPolicyDecisionPolicy":{"post":{"tags":["Msg"],"summary":"UpdateGroupPolicyDecisionPolicy allows a group policy's decision policy to be updated.","operationId":"FeegrantMsg_UpdateGroupPolicyDecisionPolicy","parameters":[{"description":"MsgUpdateGroupPolicyDecisionPolicy is the Msg/UpdateGroupPolicyDecisionPolicy request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgUpdateGroupPolicyDecisionPolicy"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgUpdateGroupPolicyDecisionPolicyResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/UpdateGroupPolicyMetadata":{"post":{"tags":["Msg"],"summary":"UpdateGroupPolicyMetadata updates a group policy metadata.","operationId":"FeegrantMsg_UpdateGroupPolicyMetadata","parameters":[{"description":"MsgUpdateGroupPolicyMetadata is the Msg/UpdateGroupPolicyMetadata request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgUpdateGroupPolicyMetadata"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgUpdateGroupPolicyMetadataResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/Vote":{"post":{"tags":["Msg"],"summary":"Vote allows a voter to vote on a proposal.","operationId":"FeegrantMsg_VoteMixin87","parameters":[{"description":"MsgVote is the Msg/Vote request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgVote"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgVoteResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/WithdrawProposal":{"post":{"tags":["Msg"],"summary":"WithdrawProposal withdraws a proposal.","operationId":"FeegrantMsg_WithdrawProposal","parameters":[{"description":"MsgWithdrawProposal is the Msg/WithdrawProposal request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgWithdrawProposal"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgWithdrawProposalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.mint.v1beta1.Msg/UpdateParams":{"post":{"description":"Since: cosmos-sdk 0.47","tags":["Msg"],"summary":"UpdateParams defines a governance operation for updating the x/mint module\nparameters. The authority is defaults to the x/gov module account.","operationId":"FeegrantMsg_UpdateParamsMixin92","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.mint.v1beta1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.mint.v1beta1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.nft.v1beta1.Msg/Send":{"post":{"tags":["Msg"],"summary":"Send defines a method to send a nft from one account to another account.","operationId":"FeegrantMsg_SendMixin98","parameters":[{"description":"MsgSend represents a message to send a nft from one account to another account.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.nft.v1beta1.MsgSend"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.nft.v1beta1.MsgSendResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.slashing.v1beta1.Msg/Unjail":{"post":{"tags":["Msg"],"summary":"Unjail defines a method for unjailing a jailed validator, thus returning\nthem into the bonded validator set, so they can begin receiving provisions\nand rewards again.","operationId":"FeegrantMsg_Unjail","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.slashing.v1beta1.MsgUnjail"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.slashing.v1beta1.MsgUnjailResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.slashing.v1beta1.Msg/UpdateParams":{"post":{"description":"Since: cosmos-sdk 0.47","tags":["Msg"],"summary":"UpdateParams defines a governance operation for updating the x/slashing module\nparameters. The authority defaults to the x/gov module account.","operationId":"FeegrantMsg_UpdateParamsMixin105","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.slashing.v1beta1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.slashing.v1beta1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.staking.v1beta1.Msg/BeginRedelegate":{"post":{"tags":["Msg"],"summary":"BeginRedelegate defines a method for performing a redelegation\nof coins from a delegator and source validator to a destination validator.","operationId":"FeegrantMsg_BeginRedelegate","parameters":[{"description":"MsgBeginRedelegate defines a SDK message for performing a redelegation\nof coins from a delegator and source validator to a destination validator.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgBeginRedelegate"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgBeginRedelegateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.staking.v1beta1.Msg/CancelUnbondingDelegation":{"post":{"description":"Since: cosmos-sdk 0.46","tags":["Msg"],"summary":"CancelUnbondingDelegation defines a method for performing canceling the unbonding delegation\nand delegate back to previous validator.","operationId":"FeegrantMsg_CancelUnbondingDelegation","parameters":[{"description":"Since: cosmos-sdk 0.46","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgCancelUnbondingDelegation"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgCancelUnbondingDelegationResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.staking.v1beta1.Msg/CreateValidator":{"post":{"tags":["Msg"],"summary":"CreateValidator defines a method for creating a new validator.","operationId":"FeegrantMsg_CreateValidator","parameters":[{"description":"MsgCreateValidator defines a SDK message for creating a new validator.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgCreateValidator"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgCreateValidatorResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.staking.v1beta1.Msg/Delegate":{"post":{"tags":["Msg"],"summary":"Delegate defines a method for performing a delegation of coins\nfrom a delegator to a validator.","operationId":"FeegrantMsg_Delegate","parameters":[{"description":"MsgDelegate defines a SDK message for performing a delegation of coins\nfrom a delegator to a validator.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgDelegate"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgDelegateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.staking.v1beta1.Msg/EditValidator":{"post":{"tags":["Msg"],"summary":"EditValidator defines a method for editing an existing validator.","operationId":"FeegrantMsg_EditValidator","parameters":[{"description":"MsgEditValidator defines a SDK message for editing an existing validator.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgEditValidator"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgEditValidatorResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.staking.v1beta1.Msg/Undelegate":{"post":{"tags":["Msg"],"summary":"Undelegate defines a method for performing an undelegation from a\ndelegate and a validator.","operationId":"FeegrantMsg_Undelegate","parameters":[{"description":"MsgUndelegate defines a SDK message for performing an undelegation from a\ndelegate and a validator.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgUndelegate"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgUndelegateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.staking.v1beta1.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines an operation for updating the x/staking module\nparameters.\nSince: cosmos-sdk 0.47","operationId":"FeegrantMsg_UpdateParamsMixin110","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.store.streaming.abci.ABCIListenerService/ListenCommit":{"post":{"tags":["ABCIListenerService"],"summary":"ListenCommit is the corresponding endpoint for ABCIListener.ListenCommit","operationId":"FeegrantABCIListenerService_ListenCommit","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.store.streaming.abci.ListenCommitRequest"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.store.streaming.abci.ListenCommitResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.store.streaming.abci.ABCIListenerService/ListenFinalizeBlock":{"post":{"tags":["ABCIListenerService"],"summary":"ListenFinalizeBlock is the corresponding endpoint for ABCIListener.ListenEndBlock","operationId":"FeegrantABCIListenerService_ListenFinalizeBlock","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.store.streaming.abci.ListenFinalizeBlockRequest"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.store.streaming.abci.ListenFinalizeBlockResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.upgrade.v1beta1.Msg/CancelUpgrade":{"post":{"description":"Since: cosmos-sdk 0.46","tags":["Msg"],"summary":"CancelUpgrade is a governance operation for cancelling a previously\napproved software upgrade.","operationId":"FeegrantMsg_CancelUpgrade","parameters":[{"description":"MsgCancelUpgrade is the Msg/CancelUpgrade request type.\n\nSince: cosmos-sdk 0.46","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.upgrade.v1beta1.MsgCancelUpgrade"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.upgrade.v1beta1.MsgCancelUpgradeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.upgrade.v1beta1.Msg/SoftwareUpgrade":{"post":{"description":"Since: cosmos-sdk 0.46","tags":["Msg"],"summary":"SoftwareUpgrade is a governance operation for initiating a software upgrade.","operationId":"FeegrantMsg_SoftwareUpgrade","parameters":[{"description":"MsgSoftwareUpgrade is the Msg/SoftwareUpgrade request type.\n\nSince: cosmos-sdk 0.46","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.upgrade.v1beta1.MsgSoftwareUpgrade"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.upgrade.v1beta1.MsgSoftwareUpgradeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.vesting.v1beta1.Msg/CreatePeriodicVestingAccount":{"post":{"description":"Since: cosmos-sdk 0.46","tags":["Msg"],"summary":"CreatePeriodicVestingAccount defines a method that enables creating a\nperiodic vesting account.","operationId":"FeegrantMsg_CreatePeriodicVestingAccount","parameters":[{"description":"MsgCreateVestingAccount defines a message that enables creating a vesting\naccount.\n\nSince: cosmos-sdk 0.46","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.vesting.v1beta1.MsgCreatePeriodicVestingAccount"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.vesting.v1beta1.MsgCreatePeriodicVestingAccountResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.vesting.v1beta1.Msg/CreatePermanentLockedAccount":{"post":{"description":"Since: cosmos-sdk 0.46","tags":["Msg"],"summary":"CreatePermanentLockedAccount defines a method that enables creating a permanent\nlocked account.","operationId":"FeegrantMsg_CreatePermanentLockedAccount","parameters":[{"description":"MsgCreatePermanentLockedAccount defines a message that enables creating a permanent\nlocked account.\n\nSince: cosmos-sdk 0.46","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.vesting.v1beta1.MsgCreatePermanentLockedAccount"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.vesting.v1beta1.MsgCreatePermanentLockedAccountResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.vesting.v1beta1.Msg/CreateVestingAccount":{"post":{"tags":["Msg"],"summary":"CreateVestingAccount defines a method that enables creating a vesting\naccount.","operationId":"FeegrantMsg_CreateVestingAccount","parameters":[{"description":"MsgCreateVestingAccount defines a message that enables creating a vesting\naccount.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.vesting.v1beta1.MsgCreateVestingAccount"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.vesting.v1beta1.MsgCreateVestingAccountResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/auth/v1beta1/account_info/{address}":{"get":{"description":"Since: cosmos-sdk 0.47","tags":["Query"],"summary":"AccountInfo queries account info which is common to all account types.","operationId":"FeegrantQuery_AccountInfo","parameters":[{"type":"string","description":"address is the account address string.","name":"address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.auth.v1beta1.QueryAccountInfoResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/auth/v1beta1/accounts":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.\n\nSince: cosmos-sdk 0.43","tags":["Query"],"summary":"Accounts returns all the existing accounts.","operationId":"FeegrantQuery_Accounts","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.auth.v1beta1.QueryAccountsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/auth/v1beta1/accounts/{address}":{"get":{"tags":["Query"],"summary":"Account returns account details based on address.","operationId":"FeegrantQuery_Account","parameters":[{"type":"string","description":"address defines the address to query for.","name":"address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.auth.v1beta1.QueryAccountResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/auth/v1beta1/address_by_id/{id}":{"get":{"description":"Since: cosmos-sdk 0.46.2","tags":["Query"],"summary":"AccountAddressByID returns account address based on account number.","operationId":"FeegrantQuery_AccountAddressByID","parameters":[{"type":"string","format":"int64","description":"Deprecated, use account_id instead\n\nid is the account number of the address to be queried. This field\nshould have been an uint64 (like all account numbers), and will be\nupdated to uint64 in a future version of the auth query.","name":"id","in":"path","required":true},{"type":"string","format":"uint64","description":"account_id is the account number of the address to be queried.\n\nSince: cosmos-sdk 0.47","name":"account_id","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.auth.v1beta1.QueryAccountAddressByIDResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/auth/v1beta1/bech32":{"get":{"description":"Since: cosmos-sdk 0.46","tags":["Query"],"summary":"Bech32Prefix queries bech32Prefix","operationId":"FeegrantQuery_Bech32Prefix","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.auth.v1beta1.Bech32PrefixResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/auth/v1beta1/bech32/{address_bytes}":{"get":{"description":"Since: cosmos-sdk 0.46","tags":["Query"],"summary":"AddressBytesToString converts Account Address bytes to string","operationId":"FeegrantQuery_AddressBytesToString","parameters":[{"type":"string","format":"byte","name":"address_bytes","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.auth.v1beta1.AddressBytesToStringResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/auth/v1beta1/bech32/{address_string}":{"get":{"description":"Since: cosmos-sdk 0.46","tags":["Query"],"summary":"AddressStringToBytes converts Address string to bytes","operationId":"FeegrantQuery_AddressStringToBytes","parameters":[{"type":"string","name":"address_string","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.auth.v1beta1.AddressStringToBytesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/auth/v1beta1/module_accounts":{"get":{"description":"Since: cosmos-sdk 0.46","tags":["Query"],"summary":"ModuleAccounts returns all the existing module accounts.","operationId":"FeegrantQuery_ModuleAccounts","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.auth.v1beta1.QueryModuleAccountsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/auth/v1beta1/module_accounts/{name}":{"get":{"tags":["Query"],"summary":"ModuleAccountByName returns the module account info by module name","operationId":"FeegrantQuery_ModuleAccountByName","parameters":[{"type":"string","name":"name","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.auth.v1beta1.QueryModuleAccountByNameResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/auth/v1beta1/params":{"get":{"tags":["Query"],"summary":"Params queries all parameters.","operationId":"FeegrantQuery_Params","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.auth.v1beta1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/authz/v1beta1/grants":{"get":{"tags":["Query"],"summary":"Returns list of `Authorization`, granted to the grantee by the granter.","operationId":"FeegrantQuery_Grants","parameters":[{"type":"string","name":"granter","in":"query"},{"type":"string","name":"grantee","in":"query"},{"type":"string","description":"Optional, msg_type_url, when set, will query only grants matching given msg type.","name":"msg_type_url","in":"query"},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.authz.v1beta1.QueryGrantsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/authz/v1beta1/grants/grantee/{grantee}":{"get":{"description":"Since: cosmos-sdk 0.46","tags":["Query"],"summary":"GranteeGrants returns a list of `GrantAuthorization` by grantee.","operationId":"FeegrantQuery_GranteeGrants","parameters":[{"type":"string","name":"grantee","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.authz.v1beta1.QueryGranteeGrantsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/authz/v1beta1/grants/granter/{granter}":{"get":{"description":"Since: cosmos-sdk 0.46","tags":["Query"],"summary":"GranterGrants returns list of `GrantAuthorization`, granted by granter.","operationId":"FeegrantQuery_GranterGrants","parameters":[{"type":"string","name":"granter","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.authz.v1beta1.QueryGranterGrantsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/balances/{address}":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.","tags":["Query"],"summary":"AllBalances queries the balance of all coins for a single account.","operationId":"FeegrantQuery_AllBalances","parameters":[{"type":"string","description":"address is the address to query balances for.","name":"address","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"},{"type":"boolean","description":"resolve_denom is the flag to resolve the denom into a human-readable form from the metadata.\n\nSince: cosmos-sdk 0.50","name":"resolve_denom","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QueryAllBalancesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/balances/{address}/by_denom":{"get":{"tags":["Query"],"summary":"Balance queries the balance of a single coin for a single account.","operationId":"FeegrantQuery_Balance","parameters":[{"type":"string","description":"address is the address to query balances for.","name":"address","in":"path","required":true},{"type":"string","description":"denom is the coin denom to query balances for.","name":"denom","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QueryBalanceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/denom_owners/{denom}":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.\n\nSince: cosmos-sdk 0.46","tags":["Query"],"summary":"DenomOwners queries for all account addresses that own a particular token\ndenomination.","operationId":"FeegrantQuery_DenomOwners","parameters":[{"type":"string","description":"denom defines the coin denomination to query all account holders for.","name":"denom","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QueryDenomOwnersResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/denom_owners_by_query":{"get":{"description":"Since: cosmos-sdk 0.50.3","tags":["Query"],"summary":"DenomOwnersByQuery queries for all account addresses that own a particular token\ndenomination.","operationId":"FeegrantQuery_DenomOwnersByQuery","parameters":[{"type":"string","description":"denom defines the coin denomination to query all account holders for.","name":"denom","in":"query"},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QueryDenomOwnersByQueryResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/denoms_metadata":{"get":{"tags":["Query"],"summary":"DenomsMetadata queries the client metadata for all registered coin\ndenominations.","operationId":"FeegrantQuery_DenomsMetadata","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QueryDenomsMetadataResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/denoms_metadata/{denom}":{"get":{"tags":["Query"],"summary":"DenomMetadata queries the client metadata of a given coin denomination.","operationId":"FeegrantQuery_DenomMetadata","parameters":[{"type":"string","description":"denom is the coin denom to query the metadata for.","name":"denom","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QueryDenomMetadataResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/denoms_metadata_by_query_string":{"get":{"tags":["Query"],"summary":"DenomMetadataByQueryString queries the client metadata of a given coin denomination.","operationId":"FeegrantQuery_DenomMetadataByQueryString","parameters":[{"type":"string","description":"denom is the coin denom to query the metadata for.","name":"denom","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QueryDenomMetadataByQueryStringResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/params":{"get":{"tags":["Query"],"summary":"Params queries the parameters of x/bank module.","operationId":"FeegrantQuery_ParamsMixin39","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/send_enabled":{"get":{"description":"This query only returns denominations that have specific SendEnabled settings.\nAny denomination that does not have a specific setting will use the default\nparams.default_send_enabled, and will not be returned by this query.\n\nSince: cosmos-sdk 0.47","tags":["Query"],"summary":"SendEnabled queries for SendEnabled entries.","operationId":"FeegrantQuery_SendEnabled","parameters":[{"type":"array","items":{"type":"string"},"collectionFormat":"multi","description":"denoms is the specific denoms you want look up. Leave empty to get all entries.","name":"denoms","in":"query"},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QuerySendEnabledResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/spendable_balances/{address}":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.\n\nSince: cosmos-sdk 0.46","tags":["Query"],"summary":"SpendableBalances queries the spendable balance of all coins for a single\naccount.","operationId":"FeegrantQuery_SpendableBalances","parameters":[{"type":"string","description":"address is the address to query spendable balances for.","name":"address","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QuerySpendableBalancesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/spendable_balances/{address}/by_denom":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.\n\nSince: cosmos-sdk 0.47","tags":["Query"],"summary":"SpendableBalanceByDenom queries the spendable balance of a single denom for\na single account.","operationId":"FeegrantQuery_SpendableBalanceByDenom","parameters":[{"type":"string","description":"address is the address to query balances for.","name":"address","in":"path","required":true},{"type":"string","description":"denom is the coin denom to query balances for.","name":"denom","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QuerySpendableBalanceByDenomResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/supply":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.","tags":["Query"],"summary":"TotalSupply queries the total supply of all coins.","operationId":"FeegrantQuery_TotalSupply","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QueryTotalSupplyResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/supply/by_denom":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.","tags":["Query"],"summary":"SupplyOf queries the supply of a single coin.","operationId":"FeegrantQuery_SupplyOf","parameters":[{"type":"string","description":"denom is the coin denom to query balances for.","name":"denom","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QuerySupplyOfResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/node/v1beta1/config":{"get":{"tags":["Service"],"summary":"Config queries for the operator configuration.","operationId":"FeegrantService_Config","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.node.v1beta1.ConfigResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/node/v1beta1/status":{"get":{"tags":["Service"],"summary":"Status queries for the node status.","operationId":"FeegrantService_Status","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.node.v1beta1.StatusResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/reflection/v1beta1/app_descriptor/authn":{"get":{"tags":["ReflectionService"],"summary":"GetAuthnDescriptor returns information on how to authenticate transactions in the application\nNOTE: this RPC is still experimental and might be subject to breaking changes or removal in\nfuture releases of the cosmos-sdk.","operationId":"FeegrantReflectionService_GetAuthnDescriptor","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.reflection.v2alpha1.GetAuthnDescriptorResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/reflection/v1beta1/app_descriptor/chain":{"get":{"tags":["ReflectionService"],"summary":"GetChainDescriptor returns the description of the chain","operationId":"FeegrantReflectionService_GetChainDescriptor","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.reflection.v2alpha1.GetChainDescriptorResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/reflection/v1beta1/app_descriptor/codec":{"get":{"tags":["ReflectionService"],"summary":"GetCodecDescriptor returns the descriptor of the codec of the application","operationId":"FeegrantReflectionService_GetCodecDescriptor","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.reflection.v2alpha1.GetCodecDescriptorResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/reflection/v1beta1/app_descriptor/configuration":{"get":{"tags":["ReflectionService"],"summary":"GetConfigurationDescriptor returns the descriptor for the sdk.Config of the application","operationId":"FeegrantReflectionService_GetConfigurationDescriptor","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.reflection.v2alpha1.GetConfigurationDescriptorResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/reflection/v1beta1/app_descriptor/query_services":{"get":{"tags":["ReflectionService"],"summary":"GetQueryServicesDescriptor returns the available gRPC queryable services of the application","operationId":"FeegrantReflectionService_GetQueryServicesDescriptor","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.reflection.v2alpha1.GetQueryServicesDescriptorResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/reflection/v1beta1/app_descriptor/tx_descriptor":{"get":{"tags":["ReflectionService"],"summary":"GetTxDescriptor returns information on the used transaction object and available msgs that can be used","operationId":"FeegrantReflectionService_GetTxDescriptor","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.reflection.v2alpha1.GetTxDescriptorResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/reflection/v1beta1/interfaces":{"get":{"tags":["ReflectionService"],"summary":"ListAllInterfaces lists all the interfaces registered in the interface\nregistry.","operationId":"FeegrantReflectionService_ListAllInterfaces","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.reflection.v1beta1.ListAllInterfacesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/reflection/v1beta1/interfaces/{interface_name}/implementations":{"get":{"tags":["ReflectionService"],"summary":"ListImplementations list all the concrete types that implement a given\ninterface.","operationId":"FeegrantReflectionService_ListImplementations","parameters":[{"type":"string","description":"interface_name defines the interface to query the implementations for.","name":"interface_name","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.reflection.v1beta1.ListImplementationsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/tendermint/v1beta1/abci_query":{"get":{"description":"Since: cosmos-sdk 0.46","tags":["Service"],"summary":"ABCIQuery defines a query handler that supports ABCI queries directly to the\napplication, bypassing Tendermint completely. The ABCI query must contain\na valid and supported path, including app, custom, p2p, and store.","operationId":"FeegrantService_ABCIQuery","parameters":[{"type":"string","format":"byte","name":"data","in":"query"},{"type":"string","name":"path","in":"query"},{"type":"string","format":"int64","name":"height","in":"query"},{"type":"boolean","name":"prove","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.tendermint.v1beta1.ABCIQueryResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/tendermint/v1beta1/blocks/latest":{"get":{"tags":["Service"],"summary":"GetLatestBlock returns the latest block.","operationId":"FeegrantService_GetLatestBlock","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.tendermint.v1beta1.GetLatestBlockResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/tendermint/v1beta1/blocks/{height}":{"get":{"tags":["Service"],"summary":"GetBlockByHeight queries block for given height.","operationId":"FeegrantService_GetBlockByHeight","parameters":[{"type":"string","format":"int64","name":"height","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.tendermint.v1beta1.GetBlockByHeightResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/tendermint/v1beta1/node_info":{"get":{"tags":["Service"],"summary":"GetNodeInfo queries the current node info.","operationId":"FeegrantService_GetNodeInfo","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.tendermint.v1beta1.GetNodeInfoResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/tendermint/v1beta1/syncing":{"get":{"tags":["Service"],"summary":"GetSyncing queries node syncing.","operationId":"FeegrantService_GetSyncing","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.tendermint.v1beta1.GetSyncingResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/tendermint/v1beta1/validatorsets/latest":{"get":{"tags":["Service"],"summary":"GetLatestValidatorSet queries latest validator-set.","operationId":"FeegrantService_GetLatestValidatorSet","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.tendermint.v1beta1.GetLatestValidatorSetResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/tendermint/v1beta1/validatorsets/{height}":{"get":{"tags":["Service"],"summary":"GetValidatorSetByHeight queries validator-set at a given height.","operationId":"FeegrantService_GetValidatorSetByHeight","parameters":[{"type":"string","format":"int64","name":"height","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.tendermint.v1beta1.GetValidatorSetByHeightResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/circuit/v1/accounts":{"get":{"tags":["Query"],"summary":"Account returns account permissions.","operationId":"FeegrantQuery_AccountsMixin49","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.circuit.v1.AccountsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/circuit/v1/accounts/{address}":{"get":{"tags":["Query"],"summary":"Account returns account permissions.","operationId":"FeegrantQuery_AccountMixin49","parameters":[{"type":"string","name":"address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.circuit.v1.AccountResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/circuit/v1/disable_list":{"get":{"tags":["Query"],"summary":"DisabledList returns a list of disabled message urls","operationId":"FeegrantQuery_DisabledList","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.circuit.v1.DisabledListResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/consensus/v1/params":{"get":{"tags":["Query"],"summary":"Params queries the parameters of x/consensus module.","operationId":"FeegrantQuery_ParamsMixin52","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.consensus.v1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/distribution/v1beta1/community_pool":{"get":{"tags":["Query"],"summary":"CommunityPool queries the community pool coins.","operationId":"FeegrantQuery_CommunityPool","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.QueryCommunityPoolResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/distribution/v1beta1/delegators/{delegator_address}/rewards":{"get":{"tags":["Query"],"summary":"DelegationTotalRewards queries the total rewards accrued by each\nvalidator.","operationId":"FeegrantQuery_DelegationTotalRewards","parameters":[{"type":"string","description":"delegator_address defines the delegator address to query for.","name":"delegator_address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.QueryDelegationTotalRewardsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/distribution/v1beta1/delegators/{delegator_address}/rewards/{validator_address}":{"get":{"tags":["Query"],"summary":"DelegationRewards queries the total rewards accrued by a delegation.","operationId":"FeegrantQuery_DelegationRewards","parameters":[{"type":"string","description":"delegator_address defines the delegator address to query for.","name":"delegator_address","in":"path","required":true},{"type":"string","description":"validator_address defines the validator address to query for.","name":"validator_address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.QueryDelegationRewardsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/distribution/v1beta1/delegators/{delegator_address}/validators":{"get":{"tags":["Query"],"summary":"DelegatorValidators queries the validators of a delegator.","operationId":"FeegrantQuery_DelegatorValidators","parameters":[{"type":"string","description":"delegator_address defines the delegator address to query for.","name":"delegator_address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.QueryDelegatorValidatorsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/distribution/v1beta1/delegators/{delegator_address}/withdraw_address":{"get":{"tags":["Query"],"summary":"DelegatorWithdrawAddress queries withdraw address of a delegator.","operationId":"FeegrantQuery_DelegatorWithdrawAddress","parameters":[{"type":"string","description":"delegator_address defines the delegator address to query for.","name":"delegator_address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.QueryDelegatorWithdrawAddressResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/distribution/v1beta1/params":{"get":{"tags":["Query"],"summary":"Params queries params of the distribution module.","operationId":"FeegrantQuery_ParamsMixin65","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/distribution/v1beta1/validators/{validator_address}":{"get":{"tags":["Query"],"summary":"ValidatorDistributionInfo queries validator commission and self-delegation rewards for validator","operationId":"FeegrantQuery_ValidatorDistributionInfo","parameters":[{"type":"string","description":"validator_address defines the validator address to query for.","name":"validator_address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.QueryValidatorDistributionInfoResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/distribution/v1beta1/validators/{validator_address}/commission":{"get":{"tags":["Query"],"summary":"ValidatorCommission queries accumulated commission for a validator.","operationId":"FeegrantQuery_ValidatorCommission","parameters":[{"type":"string","description":"validator_address defines the validator address to query for.","name":"validator_address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.QueryValidatorCommissionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/distribution/v1beta1/validators/{validator_address}/outstanding_rewards":{"get":{"tags":["Query"],"summary":"ValidatorOutstandingRewards queries rewards of a validator address.","operationId":"FeegrantQuery_ValidatorOutstandingRewards","parameters":[{"type":"string","description":"validator_address defines the validator address to query for.","name":"validator_address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.QueryValidatorOutstandingRewardsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/distribution/v1beta1/validators/{validator_address}/slashes":{"get":{"tags":["Query"],"summary":"ValidatorSlashes queries slash events of a validator.","operationId":"FeegrantQuery_ValidatorSlashes","parameters":[{"type":"string","description":"validator_address defines the validator address to query for.","name":"validator_address","in":"path","required":true},{"type":"string","format":"uint64","description":"starting_height defines the optional starting height to query the slashes.","name":"starting_height","in":"query"},{"type":"string","format":"uint64","description":"starting_height defines the optional ending height to query the slashes.","name":"ending_height","in":"query"},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.QueryValidatorSlashesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/evidence/v1beta1/evidence":{"get":{"tags":["Query"],"summary":"AllEvidence queries all evidence.","operationId":"FeegrantQuery_AllEvidence","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evidence.v1beta1.QueryAllEvidenceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/evidence/v1beta1/evidence/{hash}":{"get":{"tags":["Query"],"summary":"Evidence queries evidence based on evidence hash.","operationId":"FeegrantQuery_Evidence","parameters":[{"type":"string","description":"hash defines the evidence hash of the requested evidence.\n\nSince: cosmos-sdk 0.47","name":"hash","in":"path","required":true},{"type":"string","format":"byte","description":"evidence_hash defines the hash of the requested evidence.\nDeprecated: Use hash, a HEX encoded string, instead.","name":"evidence_hash","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evidence.v1beta1.QueryEvidenceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/feegrant/v1beta1/allowance/{granter}/{grantee}":{"get":{"tags":["Query"],"summary":"Allowance returns granted allwance to the grantee by the granter.","operationId":"FeegrantQuery_Allowance","parameters":[{"type":"string","description":"granter is the address of the user granting an allowance of their funds.","name":"granter","in":"path","required":true},{"type":"string","description":"grantee is the address of the user being granted an allowance of another user's funds.","name":"grantee","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.feegrant.v1beta1.QueryAllowanceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/feegrant/v1beta1/allowances/{grantee}":{"get":{"tags":["Query"],"summary":"Allowances returns all the grants for the given grantee address.","operationId":"FeegrantQuery_Allowances","parameters":[{"type":"string","name":"grantee","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.feegrant.v1beta1.QueryAllowancesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/feegrant/v1beta1/issued/{granter}":{"get":{"description":"Since: cosmos-sdk 0.46","tags":["Query"],"summary":"AllowancesByGranter returns all the grants given by an address","operationId":"FeegrantQuery_AllowancesByGranter","parameters":[{"type":"string","name":"granter","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.feegrant.v1beta1.QueryAllowancesByGranterResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1/constitution":{"get":{"tags":["Query"],"summary":"Constitution queries the chain's constitution.","operationId":"FeegrantQuery_Constitution","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.QueryConstitutionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1/params/{params_type}":{"get":{"tags":["Query"],"summary":"Params queries all parameters of the gov module.","operationId":"FeegrantQuery_ParamsMixin78","parameters":[{"type":"string","description":"params_type defines which parameters to query for, can be one of \"voting\",\n\"tallying\" or \"deposit\".","name":"params_type","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1/proposals":{"get":{"tags":["Query"],"summary":"Proposals queries all proposals based on given status.","operationId":"FeegrantQuery_Proposals","parameters":[{"enum":["PROPOSAL_STATUS_UNSPECIFIED","PROPOSAL_STATUS_DEPOSIT_PERIOD","PROPOSAL_STATUS_VOTING_PERIOD","PROPOSAL_STATUS_PASSED","PROPOSAL_STATUS_REJECTED","PROPOSAL_STATUS_FAILED"],"type":"string","default":"PROPOSAL_STATUS_UNSPECIFIED","description":"proposal_status defines the status of the proposals.\n\n - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status.\n - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit\nperiod.\n - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting\nperiod.\n - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has\npassed.\n - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has\nbeen rejected.\n - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has\nfailed.","name":"proposal_status","in":"query"},{"type":"string","description":"voter defines the voter address for the proposals.","name":"voter","in":"query"},{"type":"string","description":"depositor defines the deposit addresses from the proposals.","name":"depositor","in":"query"},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.QueryProposalsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1/proposals/{proposal_id}":{"get":{"tags":["Query"],"summary":"Proposal queries proposal details based on ProposalID.","operationId":"FeegrantQuery_Proposal","parameters":[{"type":"string","format":"uint64","description":"proposal_id defines the unique id of the proposal.","name":"proposal_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.QueryProposalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1/proposals/{proposal_id}/deposits":{"get":{"tags":["Query"],"summary":"Deposits queries all deposits of a single proposal.","operationId":"FeegrantQuery_Deposits","parameters":[{"type":"string","format":"uint64","description":"proposal_id defines the unique id of the proposal.","name":"proposal_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.QueryDepositsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1/proposals/{proposal_id}/deposits/{depositor}":{"get":{"tags":["Query"],"summary":"Deposit queries single deposit information based on proposalID, depositAddr.","operationId":"FeegrantQuery_Deposit","parameters":[{"type":"string","format":"uint64","description":"proposal_id defines the unique id of the proposal.","name":"proposal_id","in":"path","required":true},{"type":"string","description":"depositor defines the deposit addresses from the proposals.","name":"depositor","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.QueryDepositResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1/proposals/{proposal_id}/tally":{"get":{"tags":["Query"],"summary":"TallyResult queries the tally of a proposal vote.","operationId":"FeegrantQuery_TallyResult","parameters":[{"type":"string","format":"uint64","description":"proposal_id defines the unique id of the proposal.","name":"proposal_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.QueryTallyResultResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1/proposals/{proposal_id}/votes":{"get":{"tags":["Query"],"summary":"Votes queries votes of a given proposal.","operationId":"FeegrantQuery_Votes","parameters":[{"type":"string","format":"uint64","description":"proposal_id defines the unique id of the proposal.","name":"proposal_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.QueryVotesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1/proposals/{proposal_id}/votes/{voter}":{"get":{"tags":["Query"],"summary":"Vote queries voted information based on proposalID, voterAddr.","operationId":"FeegrantQuery_Vote","parameters":[{"type":"string","format":"uint64","description":"proposal_id defines the unique id of the proposal.","name":"proposal_id","in":"path","required":true},{"type":"string","description":"voter defines the voter address for the proposals.","name":"voter","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.QueryVoteResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1beta1/params/{params_type}":{"get":{"tags":["Query"],"summary":"Params queries all parameters of the gov module.","operationId":"FeegrantQuery_ParamsMixin82","parameters":[{"type":"string","description":"params_type defines which parameters to query for, can be one of \"voting\",\n\"tallying\" or \"deposit\".","name":"params_type","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1beta1/proposals":{"get":{"tags":["Query"],"summary":"Proposals queries all proposals based on given status.","operationId":"FeegrantQuery_ProposalsMixin82","parameters":[{"enum":["PROPOSAL_STATUS_UNSPECIFIED","PROPOSAL_STATUS_DEPOSIT_PERIOD","PROPOSAL_STATUS_VOTING_PERIOD","PROPOSAL_STATUS_PASSED","PROPOSAL_STATUS_REJECTED","PROPOSAL_STATUS_FAILED"],"type":"string","default":"PROPOSAL_STATUS_UNSPECIFIED","description":"proposal_status defines the status of the proposals.\n\n - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status.\n - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit\nperiod.\n - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting\nperiod.\n - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has\npassed.\n - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has\nbeen rejected.\n - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has\nfailed.","name":"proposal_status","in":"query"},{"type":"string","description":"voter defines the voter address for the proposals.","name":"voter","in":"query"},{"type":"string","description":"depositor defines the deposit addresses from the proposals.","name":"depositor","in":"query"},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.QueryProposalsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1beta1/proposals/{proposal_id}":{"get":{"tags":["Query"],"summary":"Proposal queries proposal details based on ProposalID.","operationId":"FeegrantQuery_ProposalMixin82","parameters":[{"type":"string","format":"uint64","description":"proposal_id defines the unique id of the proposal.","name":"proposal_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.QueryProposalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1beta1/proposals/{proposal_id}/deposits":{"get":{"tags":["Query"],"summary":"Deposits queries all deposits of a single proposal.","operationId":"FeegrantQuery_DepositsMixin82","parameters":[{"type":"string","format":"uint64","description":"proposal_id defines the unique id of the proposal.","name":"proposal_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.QueryDepositsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1beta1/proposals/{proposal_id}/deposits/{depositor}":{"get":{"tags":["Query"],"summary":"Deposit queries single deposit information based on proposalID, depositor address.","operationId":"FeegrantQuery_DepositMixin82","parameters":[{"type":"string","format":"uint64","description":"proposal_id defines the unique id of the proposal.","name":"proposal_id","in":"path","required":true},{"type":"string","description":"depositor defines the deposit addresses from the proposals.","name":"depositor","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.QueryDepositResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1beta1/proposals/{proposal_id}/tally":{"get":{"tags":["Query"],"summary":"TallyResult queries the tally of a proposal vote.","operationId":"FeegrantQuery_TallyResultMixin82","parameters":[{"type":"string","format":"uint64","description":"proposal_id defines the unique id of the proposal.","name":"proposal_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.QueryTallyResultResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1beta1/proposals/{proposal_id}/votes":{"get":{"tags":["Query"],"summary":"Votes queries votes of a given proposal.","operationId":"FeegrantQuery_VotesMixin82","parameters":[{"type":"string","format":"uint64","description":"proposal_id defines the unique id of the proposal.","name":"proposal_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.QueryVotesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1beta1/proposals/{proposal_id}/votes/{voter}":{"get":{"tags":["Query"],"summary":"Vote queries voted information based on proposalID, voterAddr.","operationId":"FeegrantQuery_VoteMixin82","parameters":[{"type":"string","format":"uint64","description":"proposal_id defines the unique id of the proposal.","name":"proposal_id","in":"path","required":true},{"type":"string","description":"voter defines the voter address for the proposals.","name":"voter","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.QueryVoteResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/group_info/{group_id}":{"get":{"tags":["Query"],"summary":"GroupInfo queries group info based on group id.","operationId":"FeegrantQuery_GroupInfo","parameters":[{"type":"string","format":"uint64","description":"group_id is the unique ID of the group.","name":"group_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryGroupInfoResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/group_members/{group_id}":{"get":{"tags":["Query"],"summary":"GroupMembers queries members of a group by group id.","operationId":"FeegrantQuery_GroupMembers","parameters":[{"type":"string","format":"uint64","description":"group_id is the unique ID of the group.","name":"group_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryGroupMembersResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/group_policies_by_admin/{admin}":{"get":{"tags":["Query"],"summary":"GroupPoliciesByAdmin queries group policies by admin address.","operationId":"FeegrantQuery_GroupPoliciesByAdmin","parameters":[{"type":"string","description":"admin is the admin address of the group policy.","name":"admin","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryGroupPoliciesByAdminResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/group_policies_by_group/{group_id}":{"get":{"tags":["Query"],"summary":"GroupPoliciesByGroup queries group policies by group id.","operationId":"FeegrantQuery_GroupPoliciesByGroup","parameters":[{"type":"string","format":"uint64","description":"group_id is the unique ID of the group policy's group.","name":"group_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryGroupPoliciesByGroupResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/group_policy_info/{address}":{"get":{"tags":["Query"],"summary":"GroupPolicyInfo queries group policy info based on account address of group policy.","operationId":"FeegrantQuery_GroupPolicyInfo","parameters":[{"type":"string","description":"address is the account address of the group policy.","name":"address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryGroupPolicyInfoResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/groups":{"get":{"description":"Since: cosmos-sdk 0.47.1","tags":["Query"],"summary":"Groups queries all groups in state.","operationId":"FeegrantQuery_Groups","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryGroupsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/groups_by_admin/{admin}":{"get":{"tags":["Query"],"summary":"GroupsByAdmin queries groups by admin address.","operationId":"FeegrantQuery_GroupsByAdmin","parameters":[{"type":"string","description":"admin is the account address of a group's admin.","name":"admin","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryGroupsByAdminResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/groups_by_member/{address}":{"get":{"tags":["Query"],"summary":"GroupsByMember queries groups by member address.","operationId":"FeegrantQuery_GroupsByMember","parameters":[{"type":"string","description":"address is the group member address.","name":"address","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryGroupsByMemberResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/proposal/{proposal_id}":{"get":{"tags":["Query"],"summary":"Proposal queries a proposal based on proposal id.","operationId":"FeegrantQuery_ProposalMixin86","parameters":[{"type":"string","format":"uint64","description":"proposal_id is the unique ID of a proposal.","name":"proposal_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryProposalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/proposals/{proposal_id}/tally":{"get":{"tags":["Query"],"summary":"TallyResult returns the tally result of a proposal. If the proposal is\nstill in voting period, then this query computes the current tally state,\nwhich might not be final. On the other hand, if the proposal is final,\nthen it simply returns the `final_tally_result` state stored in the\nproposal itself.","operationId":"FeegrantQuery_TallyResultMixin86","parameters":[{"type":"string","format":"uint64","description":"proposal_id is the unique id of a proposal.","name":"proposal_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryTallyResultResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/proposals_by_group_policy/{address}":{"get":{"tags":["Query"],"summary":"ProposalsByGroupPolicy queries proposals based on account address of group policy.","operationId":"FeegrantQuery_ProposalsByGroupPolicy","parameters":[{"type":"string","description":"address is the account address of the group policy related to proposals.","name":"address","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryProposalsByGroupPolicyResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/vote_by_proposal_voter/{proposal_id}/{voter}":{"get":{"tags":["Query"],"summary":"VoteByProposalVoter queries a vote by proposal id and voter.","operationId":"FeegrantQuery_VoteByProposalVoter","parameters":[{"type":"string","format":"uint64","description":"proposal_id is the unique ID of a proposal.","name":"proposal_id","in":"path","required":true},{"type":"string","description":"voter is a proposal voter account address.","name":"voter","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryVoteByProposalVoterResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/votes_by_proposal/{proposal_id}":{"get":{"tags":["Query"],"summary":"VotesByProposal queries a vote by proposal id.","operationId":"FeegrantQuery_VotesByProposal","parameters":[{"type":"string","format":"uint64","description":"proposal_id is the unique ID of a proposal.","name":"proposal_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryVotesByProposalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/votes_by_voter/{voter}":{"get":{"tags":["Query"],"summary":"VotesByVoter queries a vote by voter.","operationId":"FeegrantQuery_VotesByVoter","parameters":[{"type":"string","description":"voter is a proposal voter account address.","name":"voter","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryVotesByVoterResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/mint/v1beta1/annual_provisions":{"get":{"tags":["Query"],"summary":"AnnualProvisions current minting annual provisions value.","operationId":"FeegrantQuery_AnnualProvisions","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.mint.v1beta1.QueryAnnualProvisionsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/mint/v1beta1/inflation":{"get":{"tags":["Query"],"summary":"Inflation returns the current minting inflation value.","operationId":"FeegrantQuery_Inflation","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.mint.v1beta1.QueryInflationResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/mint/v1beta1/params":{"get":{"tags":["Query"],"summary":"Params returns the total set of minting parameters.","operationId":"FeegrantQuery_ParamsMixin91","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.mint.v1beta1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/nft/v1beta1/balance/{owner}/{class_id}":{"get":{"tags":["Query"],"summary":"Balance queries the number of NFTs of a given class owned by the owner, same as balanceOf in ERC721","operationId":"FeegrantQuery_BalanceMixin97","parameters":[{"type":"string","description":"owner is the owner address of the nft","name":"owner","in":"path","required":true},{"type":"string","description":"class_id associated with the nft","name":"class_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.nft.v1beta1.QueryBalanceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/nft/v1beta1/classes":{"get":{"tags":["Query"],"summary":"Classes queries all NFT classes","operationId":"FeegrantQuery_Classes","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.nft.v1beta1.QueryClassesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/nft/v1beta1/classes/{class_id}":{"get":{"tags":["Query"],"summary":"Class queries an NFT class based on its id","operationId":"FeegrantQuery_Class","parameters":[{"type":"string","description":"class_id associated with the nft","name":"class_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.nft.v1beta1.QueryClassResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/nft/v1beta1/nfts":{"get":{"tags":["Query"],"summary":"NFTs queries all NFTs of a given class or owner,choose at least one of the two, similar to tokenByIndex in\nERC721Enumerable","operationId":"FeegrantQuery_NFTs","parameters":[{"type":"string","description":"class_id associated with the nft","name":"class_id","in":"query"},{"type":"string","description":"owner is the owner address of the nft","name":"owner","in":"query"},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.nft.v1beta1.QueryNFTsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/nft/v1beta1/nfts/{class_id}/{id}":{"get":{"tags":["Query"],"summary":"NFT queries an NFT based on its class and id.","operationId":"FeegrantQuery_NFT","parameters":[{"type":"string","description":"class_id associated with the nft","name":"class_id","in":"path","required":true},{"type":"string","description":"id is a unique identifier of the NFT","name":"id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.nft.v1beta1.QueryNFTResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/nft/v1beta1/owner/{class_id}/{id}":{"get":{"tags":["Query"],"summary":"Owner queries the owner of the NFT based on its class and id, same as ownerOf in ERC721","operationId":"FeegrantQuery_Owner","parameters":[{"type":"string","description":"class_id associated with the nft","name":"class_id","in":"path","required":true},{"type":"string","description":"id is a unique identifier of the NFT","name":"id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.nft.v1beta1.QueryOwnerResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/nft/v1beta1/supply/{class_id}":{"get":{"tags":["Query"],"summary":"Supply queries the number of NFTs from the given class, same as totalSupply of ERC721.","operationId":"FeegrantQuery_Supply","parameters":[{"type":"string","description":"class_id associated with the nft","name":"class_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.nft.v1beta1.QuerySupplyResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/params/v1beta1/params":{"get":{"tags":["Query"],"summary":"Params queries a specific parameter of a module, given its subspace and\nkey.","operationId":"FeegrantQuery_ParamsMixin100","parameters":[{"type":"string","description":"subspace defines the module to query the parameter for.","name":"subspace","in":"query"},{"type":"string","description":"key defines the key of the parameter in the subspace.","name":"key","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.params.v1beta1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/params/v1beta1/subspaces":{"get":{"description":"Since: cosmos-sdk 0.46","tags":["Query"],"summary":"Subspaces queries for all registered subspaces and all keys for a subspace.","operationId":"FeegrantQuery_Subspaces","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.params.v1beta1.QuerySubspacesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/slashing/v1beta1/params":{"get":{"tags":["Query"],"summary":"Params queries the parameters of slashing module","operationId":"FeegrantQuery_ParamsMixin103","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.slashing.v1beta1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/slashing/v1beta1/signing_infos":{"get":{"tags":["Query"],"summary":"SigningInfos queries signing info of all validators","operationId":"FeegrantQuery_SigningInfos","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.slashing.v1beta1.QuerySigningInfosResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/slashing/v1beta1/signing_infos/{cons_address}":{"get":{"tags":["Query"],"summary":"SigningInfo queries the signing info of given cons address","operationId":"FeegrantQuery_SigningInfo","parameters":[{"type":"string","description":"cons_address is the address to query signing info of","name":"cons_address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.slashing.v1beta1.QuerySigningInfoResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/delegations/{delegator_addr}":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.","tags":["Query"],"summary":"DelegatorDelegations queries all delegations of a given delegator address.","operationId":"FeegrantQuery_DelegatorDelegations","parameters":[{"type":"string","description":"delegator_addr defines the delegator address to query for.","name":"delegator_addr","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryDelegatorDelegationsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/delegators/{delegator_addr}/redelegations":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.","tags":["Query"],"summary":"Redelegations queries redelegations of given address.","operationId":"FeegrantQuery_Redelegations","parameters":[{"type":"string","description":"delegator_addr defines the delegator address to query for.","name":"delegator_addr","in":"path","required":true},{"type":"string","description":"src_validator_addr defines the validator address to redelegate from.","name":"src_validator_addr","in":"query"},{"type":"string","description":"dst_validator_addr defines the validator address to redelegate to.","name":"dst_validator_addr","in":"query"},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryRedelegationsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/delegators/{delegator_addr}/unbonding_delegations":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.","tags":["Query"],"summary":"DelegatorUnbondingDelegations queries all unbonding delegations of a given\ndelegator address.","operationId":"FeegrantQuery_DelegatorUnbondingDelegations","parameters":[{"type":"string","description":"delegator_addr defines the delegator address to query for.","name":"delegator_addr","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryDelegatorUnbondingDelegationsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/delegators/{delegator_addr}/validators":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.","tags":["Query"],"summary":"DelegatorValidators queries all validators info for given delegator\naddress.","operationId":"FeegrantQuery_DelegatorValidatorsMixin108","parameters":[{"type":"string","description":"delegator_addr defines the delegator address to query for.","name":"delegator_addr","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryDelegatorValidatorsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/delegators/{delegator_addr}/validators/{validator_addr}":{"get":{"tags":["Query"],"summary":"DelegatorValidator queries validator info for given delegator validator\npair.","operationId":"FeegrantQuery_DelegatorValidator","parameters":[{"type":"string","description":"delegator_addr defines the delegator address to query for.","name":"delegator_addr","in":"path","required":true},{"type":"string","description":"validator_addr defines the validator address to query for.","name":"validator_addr","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryDelegatorValidatorResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/historical_info/{height}":{"get":{"tags":["Query"],"summary":"HistoricalInfo queries the historical info for given height.","operationId":"FeegrantQuery_HistoricalInfo","parameters":[{"type":"string","format":"int64","description":"height defines at which height to query the historical info.","name":"height","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryHistoricalInfoResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/params":{"get":{"tags":["Query"],"summary":"Parameters queries the staking parameters.","operationId":"FeegrantQuery_ParamsMixin108","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/pool":{"get":{"tags":["Query"],"summary":"Pool queries the pool info.","operationId":"FeegrantQuery_Pool","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryPoolResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/validators":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.","tags":["Query"],"summary":"Validators queries all validators that match the given status.","operationId":"FeegrantQuery_Validators","parameters":[{"type":"string","description":"status enables to query for validators matching a given status.","name":"status","in":"query"},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryValidatorsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/validators/{validator_addr}":{"get":{"tags":["Query"],"summary":"Validator queries validator info for given validator address.","operationId":"FeegrantQuery_Validator","parameters":[{"type":"string","description":"validator_addr defines the validator address to query for.","name":"validator_addr","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryValidatorResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/validators/{validator_addr}/delegations":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.","tags":["Query"],"summary":"ValidatorDelegations queries delegate info for given validator.","operationId":"FeegrantQuery_ValidatorDelegations","parameters":[{"type":"string","description":"validator_addr defines the validator address to query for.","name":"validator_addr","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryValidatorDelegationsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/validators/{validator_addr}/delegations/{delegator_addr}":{"get":{"tags":["Query"],"summary":"Delegation queries delegate info for given validator delegator pair.","operationId":"FeegrantQuery_Delegation","parameters":[{"type":"string","description":"validator_addr defines the validator address to query for.","name":"validator_addr","in":"path","required":true},{"type":"string","description":"delegator_addr defines the delegator address to query for.","name":"delegator_addr","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryDelegationResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/validators/{validator_addr}/delegations/{delegator_addr}/unbonding_delegation":{"get":{"tags":["Query"],"summary":"UnbondingDelegation queries unbonding info for given validator delegator\npair.","operationId":"FeegrantQuery_UnbondingDelegation","parameters":[{"type":"string","description":"validator_addr defines the validator address to query for.","name":"validator_addr","in":"path","required":true},{"type":"string","description":"delegator_addr defines the delegator address to query for.","name":"delegator_addr","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryUnbondingDelegationResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/validators/{validator_addr}/unbonding_delegations":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.","tags":["Query"],"summary":"ValidatorUnbondingDelegations queries unbonding delegations of a validator.","operationId":"FeegrantQuery_ValidatorUnbondingDelegations","parameters":[{"type":"string","description":"validator_addr defines the validator address to query for.","name":"validator_addr","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryValidatorUnbondingDelegationsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/tx/v1beta1/decode":{"post":{"description":"Since: cosmos-sdk 0.47","tags":["Service"],"summary":"TxDecode decodes the transaction.","operationId":"FeegrantService_TxDecode","parameters":[{"description":"TxDecodeRequest is the request type for the Service.TxDecode\nRPC method.\n\nSince: cosmos-sdk 0.47","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.TxDecodeRequest"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.TxDecodeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/tx/v1beta1/decode/amino":{"post":{"description":"Since: cosmos-sdk 0.47","tags":["Service"],"summary":"TxDecodeAmino decodes an Amino transaction from encoded bytes to JSON.","operationId":"FeegrantService_TxDecodeAmino","parameters":[{"description":"TxDecodeAminoRequest is the request type for the Service.TxDecodeAmino\nRPC method.\n\nSince: cosmos-sdk 0.47","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.TxDecodeAminoRequest"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.TxDecodeAminoResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/tx/v1beta1/encode":{"post":{"description":"Since: cosmos-sdk 0.47","tags":["Service"],"summary":"TxEncode encodes the transaction.","operationId":"FeegrantService_TxEncode","parameters":[{"description":"TxEncodeRequest is the request type for the Service.TxEncode\nRPC method.\n\nSince: cosmos-sdk 0.47","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.TxEncodeRequest"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.TxEncodeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/tx/v1beta1/encode/amino":{"post":{"description":"Since: cosmos-sdk 0.47","tags":["Service"],"summary":"TxEncodeAmino encodes an Amino transaction from JSON to encoded bytes.","operationId":"FeegrantService_TxEncodeAmino","parameters":[{"description":"TxEncodeAminoRequest is the request type for the Service.TxEncodeAmino\nRPC method.\n\nSince: cosmos-sdk 0.47","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.TxEncodeAminoRequest"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.TxEncodeAminoResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/tx/v1beta1/simulate":{"post":{"tags":["Service"],"summary":"Simulate simulates executing a transaction for estimating gas usage.","operationId":"FeegrantService_Simulate","parameters":[{"description":"SimulateRequest is the request type for the Service.Simulate\nRPC method.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.SimulateRequest"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.SimulateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/tx/v1beta1/txs":{"get":{"tags":["Service"],"summary":"GetTxsEvent fetches txs by event.","operationId":"FeegrantService_GetTxsEvent","parameters":[{"type":"array","items":{"type":"string"},"collectionFormat":"multi","description":"events is the list of transaction event type.\nDeprecated post v0.47.x: use query instead, which should contain a valid\nevents query.","name":"events","in":"query"},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"},{"enum":["ORDER_BY_UNSPECIFIED","ORDER_BY_ASC","ORDER_BY_DESC"],"type":"string","default":"ORDER_BY_UNSPECIFIED","description":" - ORDER_BY_UNSPECIFIED: ORDER_BY_UNSPECIFIED specifies an unknown sorting order. OrderBy defaults\nto ASC in this case.\n - ORDER_BY_ASC: ORDER_BY_ASC defines ascending order\n - ORDER_BY_DESC: ORDER_BY_DESC defines descending order","name":"order_by","in":"query"},{"type":"string","format":"uint64","description":"page is the page number to query, starts at 1. If not provided, will\ndefault to first page.","name":"page","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"limit","in":"query"},{"type":"string","description":"query defines the transaction event query that is proxied to Tendermint's\nTxSearch RPC method. The query must be valid.\n\nSince cosmos-sdk 0.50","name":"query","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.GetTxsEventResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}},"post":{"tags":["Service"],"summary":"BroadcastTx broadcast transaction.","operationId":"FeegrantService_BroadcastTx","parameters":[{"description":"BroadcastTxRequest is the request type for the Service.BroadcastTxRequest\nRPC method.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.BroadcastTxRequest"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.BroadcastTxResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/tx/v1beta1/txs/block/{height}":{"get":{"description":"Since: cosmos-sdk 0.45.2","tags":["Service"],"summary":"GetBlockWithTxs fetches a block with decoded txs.","operationId":"FeegrantService_GetBlockWithTxs","parameters":[{"type":"string","format":"int64","description":"height is the height of the block to query.","name":"height","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.GetBlockWithTxsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/tx/v1beta1/txs/{hash}":{"get":{"tags":["Service"],"summary":"GetTx fetches a tx by hash.","operationId":"FeegrantService_GetTx","parameters":[{"type":"string","description":"hash is the tx hash to query, encoded as a hex string.","name":"hash","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.GetTxResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/upgrade/v1beta1/applied_plan/{name}":{"get":{"tags":["Query"],"summary":"AppliedPlan queries a previously applied upgrade plan by its name.","operationId":"FeegrantQuery_AppliedPlan","parameters":[{"type":"string","description":"name is the name of the applied plan to query for.","name":"name","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.upgrade.v1beta1.QueryAppliedPlanResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/upgrade/v1beta1/authority":{"get":{"description":"Since: cosmos-sdk 0.46","tags":["Query"],"summary":"Returns the account with authority to conduct upgrades","operationId":"FeegrantQuery_Authority","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.upgrade.v1beta1.QueryAuthorityResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/upgrade/v1beta1/current_plan":{"get":{"tags":["Query"],"summary":"CurrentPlan queries the current upgrade plan.","operationId":"FeegrantQuery_CurrentPlan","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.upgrade.v1beta1.QueryCurrentPlanResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/upgrade/v1beta1/module_versions":{"get":{"description":"Since: cosmos-sdk 0.43","tags":["Query"],"summary":"ModuleVersions queries the list of module versions from state.","operationId":"FeegrantQuery_ModuleVersions","parameters":[{"type":"string","description":"module_name is a field to query a specific module\nconsensus version from state. Leaving this empty will\nfetch the full list of module versions from state","name":"module_name","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.upgrade.v1beta1.QueryModuleVersionsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/upgrade/v1beta1/upgraded_consensus_state/{last_height}":{"get":{"tags":["Query"],"summary":"UpgradedConsensusState queries the consensus state that will serve\nas a trusted kernel for the next version of this chain. It will only be\nstored at the last height of this chain.\nUpgradedConsensusState RPC not supported with legacy querier\nThis rpc is deprecated now that IBC has its own replacement\n(https://github.com/cosmos/ibc-go/blob/2c880a22e9f9cc75f62b527ca94aa75ce1106001/proto/ibc/core/client/v1/query.proto#L54)","operationId":"FeegrantQuery_UpgradedConsensusState","parameters":[{"type":"string","format":"int64","description":"last height of the current chain must be sent in request\nas this is the height under which next consensus state is stored","name":"last_height","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.upgrade.v1beta1.QueryUpgradedConsensusStateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.applications.fee.v1.Msg/PayPacketFee":{"post":{"tags":["Msg"],"summary":"PayPacketFee defines a rpc handler method for MsgPayPacketFee\nPayPacketFee is an open callback that may be called by any module/user that wishes to escrow funds in order to\nincentivize the relaying of the packet at the next sequence\nNOTE: This method is intended to be used within a multi msg transaction, where the subsequent msg that follows\ninitiates the lifecycle of the incentivized packet","operationId":"FeeMsg_PayPacketFee","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.applications.fee.v1.MsgPayPacketFee"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.fee.v1.MsgPayPacketFeeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.applications.fee.v1.Msg/PayPacketFeeAsync":{"post":{"tags":["Msg"],"summary":"PayPacketFeeAsync defines a rpc handler method for MsgPayPacketFeeAsync\nPayPacketFeeAsync is an open callback that may be called by any module/user that wishes to escrow funds in order to\nincentivize the relaying of a known packet (i.e. at a particular sequence)","operationId":"FeeMsg_PayPacketFeeAsync","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.applications.fee.v1.MsgPayPacketFeeAsync"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.fee.v1.MsgPayPacketFeeAsyncResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.applications.fee.v1.Msg/RegisterCounterpartyPayee":{"post":{"tags":["Msg"],"summary":"RegisterCounterpartyPayee defines a rpc handler method for MsgRegisterCounterpartyPayee\nRegisterCounterpartyPayee is called by the relayer on each channelEnd and allows them to specify the counterparty\npayee address before relaying. This ensures they will be properly compensated for forward relaying since\nthe destination chain must include the registered counterparty payee address in the acknowledgement. This function\nmay be called more than once by a relayer, in which case, the latest counterparty payee address is always used.","operationId":"FeeMsg_RegisterCounterpartyPayee","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.applications.fee.v1.MsgRegisterCounterpartyPayee"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.fee.v1.MsgRegisterCounterpartyPayeeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.applications.fee.v1.Msg/RegisterPayee":{"post":{"tags":["Msg"],"summary":"RegisterPayee defines a rpc handler method for MsgRegisterPayee\nRegisterPayee is called by the relayer on each channelEnd and allows them to set an optional\npayee to which reverse and timeout relayer packet fees will be paid out. The payee should be registered on\nthe source chain from which packets originate as this is where fee distribution takes place. This function may be\ncalled more than once by a relayer, in which case, the latest payee is always used.","operationId":"FeeMsg_RegisterPayee","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.applications.fee.v1.MsgRegisterPayee"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.fee.v1.MsgRegisterPayeeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.applications.interchain_accounts.controller.v1.Msg/RegisterInterchainAccount":{"post":{"tags":["Msg"],"summary":"RegisterInterchainAccount defines a rpc handler for MsgRegisterInterchainAccount.","operationId":"FeeMsg_RegisterInterchainAccount","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.controller.v1.MsgRegisterInterchainAccount"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.controller.v1.MsgRegisterInterchainAccountResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.applications.interchain_accounts.controller.v1.Msg/SendTx":{"post":{"tags":["Msg"],"summary":"SendTx defines a rpc handler for MsgSendTx.","operationId":"FeeMsg_SendTx","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.controller.v1.MsgSendTx"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.controller.v1.MsgSendTxResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.applications.interchain_accounts.controller.v1.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines a rpc handler for MsgUpdateParams.","operationId":"FeeMsg_UpdateParams","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.controller.v1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.controller.v1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.applications.interchain_accounts.host.v1.Msg/ModuleQuerySafe":{"post":{"tags":["Msg"],"summary":"ModuleQuerySafe defines a rpc handler for MsgModuleQuerySafe.","operationId":"FeeMsg_ModuleQuerySafe","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.host.v1.MsgModuleQuerySafe"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.host.v1.MsgModuleQuerySafeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.applications.interchain_accounts.host.v1.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines a rpc handler for MsgUpdateParams.","operationId":"FeeMsg_UpdateParamsMixin149","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.host.v1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.host.v1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.applications.transfer.v1.Msg/Transfer":{"post":{"tags":["Msg"],"summary":"Transfer defines a rpc handler method for MsgTransfer.","operationId":"FeeMsg_Transfer","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.applications.transfer.v1.MsgTransfer"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.transfer.v1.MsgTransferResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.applications.transfer.v1.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines a rpc handler for MsgUpdateParams.","operationId":"FeeMsg_UpdateParamsMixin157","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.applications.transfer.v1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.transfer.v1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/Acknowledgement":{"post":{"tags":["Msg"],"summary":"Acknowledgement defines a rpc handler method for MsgAcknowledgement.","operationId":"FeeMsg_Acknowledgement","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgAcknowledgement"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgAcknowledgementResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/ChannelCloseConfirm":{"post":{"tags":["Msg"],"summary":"ChannelCloseConfirm defines a rpc handler method for\nMsgChannelCloseConfirm.","operationId":"FeeMsg_ChannelCloseConfirm","parameters":[{"description":"MsgChannelCloseConfirm defines a msg sent by a Relayer to Chain B\nto acknowledge the change of channel state to CLOSED on Chain A.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelCloseConfirm"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelCloseConfirmResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/ChannelCloseInit":{"post":{"tags":["Msg"],"summary":"ChannelCloseInit defines a rpc handler method for MsgChannelCloseInit.","operationId":"FeeMsg_ChannelCloseInit","parameters":[{"description":"MsgChannelCloseInit defines a msg sent by a Relayer to Chain A\nto close a channel with Chain B.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelCloseInit"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelCloseInitResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/ChannelOpenAck":{"post":{"tags":["Msg"],"summary":"ChannelOpenAck defines a rpc handler method for MsgChannelOpenAck.","operationId":"FeeMsg_ChannelOpenAck","parameters":[{"description":"MsgChannelOpenAck defines a msg sent by a Relayer to Chain A to acknowledge\nthe change of channel state to TRYOPEN on Chain B.\nWARNING: a channel upgrade MUST NOT initialize an upgrade for this channel\nin the same block as executing this message otherwise the counterparty will\nbe incapable of opening.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelOpenAck"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelOpenAckResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/ChannelOpenConfirm":{"post":{"tags":["Msg"],"summary":"ChannelOpenConfirm defines a rpc handler method for MsgChannelOpenConfirm.","operationId":"FeeMsg_ChannelOpenConfirm","parameters":[{"description":"MsgChannelOpenConfirm defines a msg sent by a Relayer to Chain B to\nacknowledge the change of channel state to OPEN on Chain A.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelOpenConfirm"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelOpenConfirmResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/ChannelOpenInit":{"post":{"tags":["Msg"],"summary":"ChannelOpenInit defines a rpc handler method for MsgChannelOpenInit.","operationId":"FeeMsg_ChannelOpenInit","parameters":[{"description":"MsgChannelOpenInit defines an sdk.Msg to initialize a channel handshake. It\nis called by a relayer on Chain A.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelOpenInit"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelOpenInitResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/ChannelOpenTry":{"post":{"tags":["Msg"],"summary":"ChannelOpenTry defines a rpc handler method for MsgChannelOpenTry.","operationId":"FeeMsg_ChannelOpenTry","parameters":[{"description":"MsgChannelOpenInit defines a msg sent by a Relayer to try to open a channel\non Chain B. The version field within the Channel field has been deprecated. Its\nvalue will be ignored by core IBC.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelOpenTry"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelOpenTryResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/ChannelUpgradeAck":{"post":{"tags":["Msg"],"summary":"ChannelUpgradeAck defines a rpc handler method for MsgChannelUpgradeAck.","operationId":"FeeMsg_ChannelUpgradeAck","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelUpgradeAck"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelUpgradeAckResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/ChannelUpgradeCancel":{"post":{"tags":["Msg"],"summary":"ChannelUpgradeCancel defines a rpc handler method for MsgChannelUpgradeCancel.","operationId":"FeeMsg_ChannelUpgradeCancel","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelUpgradeCancel"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelUpgradeCancelResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/ChannelUpgradeConfirm":{"post":{"tags":["Msg"],"summary":"ChannelUpgradeConfirm defines a rpc handler method for MsgChannelUpgradeConfirm.","operationId":"FeeMsg_ChannelUpgradeConfirm","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelUpgradeConfirm"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelUpgradeConfirmResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/ChannelUpgradeInit":{"post":{"tags":["Msg"],"summary":"ChannelUpgradeInit defines a rpc handler method for MsgChannelUpgradeInit.","operationId":"FeeMsg_ChannelUpgradeInit","parameters":[{"description":"MsgChannelUpgradeInit defines the request type for the ChannelUpgradeInit rpc\nWARNING: Initializing a channel upgrade in the same block as opening the channel\nmay result in the counterparty being incapable of opening.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelUpgradeInit"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelUpgradeInitResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/ChannelUpgradeOpen":{"post":{"tags":["Msg"],"summary":"ChannelUpgradeOpen defines a rpc handler method for MsgChannelUpgradeOpen.","operationId":"FeeMsg_ChannelUpgradeOpen","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelUpgradeOpen"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelUpgradeOpenResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/ChannelUpgradeTimeout":{"post":{"tags":["Msg"],"summary":"ChannelUpgradeTimeout defines a rpc handler method for MsgChannelUpgradeTimeout.","operationId":"FeeMsg_ChannelUpgradeTimeout","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelUpgradeTimeout"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelUpgradeTimeoutResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/ChannelUpgradeTry":{"post":{"tags":["Msg"],"summary":"ChannelUpgradeTry defines a rpc handler method for MsgChannelUpgradeTry.","operationId":"FeeMsg_ChannelUpgradeTry","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelUpgradeTry"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelUpgradeTryResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/PruneAcknowledgements":{"post":{"tags":["Msg"],"summary":"PruneAcknowledgements defines a rpc handler method for MsgPruneAcknowledgements.","operationId":"FeeMsg_PruneAcknowledgements","parameters":[{"description":"MsgPruneAcknowledgements defines the request type for the PruneAcknowledgements rpc.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgPruneAcknowledgements"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgPruneAcknowledgementsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/RecvPacket":{"post":{"tags":["Msg"],"summary":"RecvPacket defines a rpc handler method for MsgRecvPacket.","operationId":"FeeMsg_RecvPacket","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgRecvPacket"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgRecvPacketResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/Timeout":{"post":{"tags":["Msg"],"summary":"Timeout defines a rpc handler method for MsgTimeout.","operationId":"FeeMsg_Timeout","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgTimeout"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgTimeoutResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/TimeoutOnClose":{"post":{"tags":["Msg"],"summary":"TimeoutOnClose defines a rpc handler method for MsgTimeoutOnClose.","operationId":"FeeMsg_TimeoutOnClose","parameters":[{"description":"MsgTimeoutOnClose timed-out packet upon counterparty channel closure.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgTimeoutOnClose"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgTimeoutOnCloseResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/UpdateChannelParams":{"post":{"tags":["Msg"],"summary":"UpdateChannelParams defines a rpc handler method for MsgUpdateParams.","operationId":"FeeMsg_UpdateChannelParams","parameters":[{"description":"MsgUpdateParams is the MsgUpdateParams request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.client.v1.Msg/CreateClient":{"post":{"tags":["Msg"],"summary":"CreateClient defines a rpc handler method for MsgCreateClient.","operationId":"FeeMsg_CreateClient","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgCreateClient"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgCreateClientResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.client.v1.Msg/IBCSoftwareUpgrade":{"post":{"tags":["Msg"],"summary":"IBCSoftwareUpgrade defines a rpc handler method for MsgIBCSoftwareUpgrade.","operationId":"FeeMsg_IBCSoftwareUpgrade","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgIBCSoftwareUpgrade"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgIBCSoftwareUpgradeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.client.v1.Msg/RecoverClient":{"post":{"tags":["Msg"],"summary":"RecoverClient defines a rpc handler method for MsgRecoverClient.","operationId":"FeeMsg_RecoverClient","parameters":[{"description":"MsgRecoverClient defines the message used to recover a frozen or expired client.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgRecoverClient"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgRecoverClientResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.client.v1.Msg/SubmitMisbehaviour":{"post":{"tags":["Msg"],"summary":"SubmitMisbehaviour defines a rpc handler method for MsgSubmitMisbehaviour.","operationId":"FeeMsg_SubmitMisbehaviour","parameters":[{"description":"MsgSubmitMisbehaviour defines an sdk.Msg type that submits Evidence for\nlight client misbehaviour.\nThis message has been deprecated. Use MsgUpdateClient instead.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgSubmitMisbehaviour"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgSubmitMisbehaviourResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.client.v1.Msg/UpdateClient":{"post":{"tags":["Msg"],"summary":"UpdateClient defines a rpc handler method for MsgUpdateClient.","operationId":"FeeMsg_UpdateClient","parameters":[{"description":"MsgUpdateClient defines an sdk.Msg to update a IBC client state using\nthe given client message.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgUpdateClient"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgUpdateClientResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.client.v1.Msg/UpdateClientParams":{"post":{"tags":["Msg"],"summary":"UpdateClientParams defines a rpc handler method for MsgUpdateParams.","operationId":"FeeMsg_UpdateClientParams","parameters":[{"description":"MsgUpdateParams defines the sdk.Msg type to update the client parameters.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.client.v1.Msg/UpgradeClient":{"post":{"tags":["Msg"],"summary":"UpgradeClient defines a rpc handler method for MsgUpgradeClient.","operationId":"FeeMsg_UpgradeClient","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgUpgradeClient"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgUpgradeClientResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.connection.v1.Msg/ConnectionOpenAck":{"post":{"tags":["Msg"],"summary":"ConnectionOpenAck defines a rpc handler method for MsgConnectionOpenAck.","operationId":"FeeMsg_ConnectionOpenAck","parameters":[{"description":"MsgConnectionOpenAck defines a msg sent by a Relayer to Chain A to\nacknowledge the change of connection state to TRYOPEN on Chain B.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.connection.v1.MsgConnectionOpenAck"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.connection.v1.MsgConnectionOpenAckResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.connection.v1.Msg/ConnectionOpenConfirm":{"post":{"tags":["Msg"],"summary":"ConnectionOpenConfirm defines a rpc handler method for\nMsgConnectionOpenConfirm.","operationId":"FeeMsg_ConnectionOpenConfirm","parameters":[{"description":"MsgConnectionOpenConfirm defines a msg sent by a Relayer to Chain B to\nacknowledge the change of connection state to OPEN on Chain A.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.connection.v1.MsgConnectionOpenConfirm"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.connection.v1.MsgConnectionOpenConfirmResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.connection.v1.Msg/ConnectionOpenInit":{"post":{"tags":["Msg"],"summary":"ConnectionOpenInit defines a rpc handler method for MsgConnectionOpenInit.","operationId":"FeeMsg_ConnectionOpenInit","parameters":[{"description":"MsgConnectionOpenInit defines the msg sent by an account on Chain A to\ninitialize a connection with Chain B.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.connection.v1.MsgConnectionOpenInit"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.connection.v1.MsgConnectionOpenInitResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.connection.v1.Msg/ConnectionOpenTry":{"post":{"tags":["Msg"],"summary":"ConnectionOpenTry defines a rpc handler method for MsgConnectionOpenTry.","operationId":"FeeMsg_ConnectionOpenTry","parameters":[{"description":"MsgConnectionOpenTry defines a msg sent by a Relayer to try to open a\nconnection on Chain B.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.connection.v1.MsgConnectionOpenTry"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.connection.v1.MsgConnectionOpenTryResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.connection.v1.Msg/UpdateConnectionParams":{"post":{"tags":["Msg"],"summary":"UpdateConnectionParams defines a rpc handler method for\nMsgUpdateParams.","operationId":"FeeMsg_UpdateConnectionParams","parameters":[{"description":"MsgUpdateParams defines the sdk.Msg type to update the connection parameters.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.connection.v1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.connection.v1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.lightclients.wasm.v1.Msg/MigrateContract":{"post":{"tags":["Msg"],"summary":"MigrateContract defines a rpc handler method for MsgMigrateContract.","operationId":"FeeMsg_MigrateContract","parameters":[{"description":"MsgMigrateContract defines the request type for the MigrateContract rpc.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.lightclients.wasm.v1.MsgMigrateContract"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.lightclients.wasm.v1.MsgMigrateContractResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.lightclients.wasm.v1.Msg/RemoveChecksum":{"post":{"tags":["Msg"],"summary":"RemoveChecksum defines a rpc handler method for MsgRemoveChecksum.","operationId":"FeeMsg_RemoveChecksum","parameters":[{"description":"MsgRemoveChecksum defines the request type for the MsgRemoveChecksum rpc.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.lightclients.wasm.v1.MsgRemoveChecksum"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.lightclients.wasm.v1.MsgRemoveChecksumResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.lightclients.wasm.v1.Msg/StoreCode":{"post":{"tags":["Msg"],"summary":"StoreCode defines a rpc handler method for MsgStoreCode.","operationId":"FeeMsg_StoreCode","parameters":[{"description":"MsgStoreCode defines the request type for the StoreCode rpc.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.lightclients.wasm.v1.MsgStoreCode"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.lightclients.wasm.v1.MsgStoreCodeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/fee/v1/channels/{channel_id}/ports/{port_id}/fee_enabled":{"get":{"tags":["Query"],"summary":"FeeEnabledChannel returns true if the provided port and channel identifiers belong to a fee enabled channel","operationId":"FeeQuery_FeeEnabledChannel","parameters":[{"type":"string","description":"unique channel identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"unique port identifier","name":"port_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.fee.v1.QueryFeeEnabledChannelResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/fee/v1/channels/{channel_id}/ports/{port_id}/incentivized_packets":{"get":{"tags":["Query"],"summary":"Gets all incentivized packets for a specific channel","operationId":"FeeQuery_IncentivizedPacketsForChannel","parameters":[{"type":"string","name":"channel_id","in":"path","required":true},{"type":"string","name":"port_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"},{"type":"string","format":"uint64","description":"Height to query at","name":"query_height","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.fee.v1.QueryIncentivizedPacketsForChannelResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/fee/v1/channels/{channel_id}/relayers/{relayer}/counterparty_payee":{"get":{"tags":["Query"],"summary":"CounterpartyPayee returns the registered counterparty payee for forward relaying","operationId":"FeeQuery_CounterpartyPayee","parameters":[{"type":"string","description":"unique channel identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"the relayer address to which the counterparty is registered","name":"relayer","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.fee.v1.QueryCounterpartyPayeeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/fee/v1/channels/{channel_id}/relayers/{relayer}/payee":{"get":{"tags":["Query"],"summary":"Payee returns the registered payee address for a specific channel given the relayer address","operationId":"FeeQuery_Payee","parameters":[{"type":"string","description":"unique channel identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"the relayer address to which the distribution address is registered","name":"relayer","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.fee.v1.QueryPayeeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/fee/v1/channels/{packet_id.channel_id}/ports/{packet_id.port_id}/sequences/{packet_id.sequence}/incentivized_packet":{"get":{"tags":["Query"],"summary":"IncentivizedPacket returns all packet fees for a packet given its identifier","operationId":"FeeQuery_IncentivizedPacket","parameters":[{"type":"string","description":"channel unique identifier","name":"packet_id.channel_id","in":"path","required":true},{"type":"string","description":"channel port identifier","name":"packet_id.port_id","in":"path","required":true},{"type":"string","format":"uint64","description":"packet sequence","name":"packet_id.sequence","in":"path","required":true},{"type":"string","format":"uint64","description":"block height at which to query","name":"query_height","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.fee.v1.QueryIncentivizedPacketResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/fee/v1/channels/{packet_id.channel_id}/ports/{packet_id.port_id}/sequences/{packet_id.sequence}/total_ack_fees":{"get":{"tags":["Query"],"summary":"TotalAckFees returns the total acknowledgement fees for a packet given its identifier","operationId":"FeeQuery_TotalAckFees","parameters":[{"type":"string","description":"channel unique identifier","name":"packet_id.channel_id","in":"path","required":true},{"type":"string","description":"channel port identifier","name":"packet_id.port_id","in":"path","required":true},{"type":"string","format":"uint64","description":"packet sequence","name":"packet_id.sequence","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.fee.v1.QueryTotalAckFeesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/fee/v1/channels/{packet_id.channel_id}/ports/{packet_id.port_id}/sequences/{packet_id.sequence}/total_recv_fees":{"get":{"tags":["Query"],"summary":"TotalRecvFees returns the total receive fees for a packet given its identifier","operationId":"FeeQuery_TotalRecvFees","parameters":[{"type":"string","description":"channel unique identifier","name":"packet_id.channel_id","in":"path","required":true},{"type":"string","description":"channel port identifier","name":"packet_id.port_id","in":"path","required":true},{"type":"string","format":"uint64","description":"packet sequence","name":"packet_id.sequence","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.fee.v1.QueryTotalRecvFeesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/fee/v1/channels/{packet_id.channel_id}/ports/{packet_id.port_id}/sequences/{packet_id.sequence}/total_timeout_fees":{"get":{"tags":["Query"],"summary":"TotalTimeoutFees returns the total timeout fees for a packet given its identifier","operationId":"FeeQuery_TotalTimeoutFees","parameters":[{"type":"string","description":"channel unique identifier","name":"packet_id.channel_id","in":"path","required":true},{"type":"string","description":"channel port identifier","name":"packet_id.port_id","in":"path","required":true},{"type":"string","format":"uint64","description":"packet sequence","name":"packet_id.sequence","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.fee.v1.QueryTotalTimeoutFeesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/fee/v1/fee_enabled":{"get":{"tags":["Query"],"summary":"FeeEnabledChannels returns a list of all fee enabled channels","operationId":"FeeQuery_FeeEnabledChannels","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"},{"type":"string","format":"uint64","description":"block height at which to query","name":"query_height","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.fee.v1.QueryFeeEnabledChannelsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/fee/v1/incentivized_packets":{"get":{"tags":["Query"],"summary":"IncentivizedPackets returns all incentivized packets and their associated fees","operationId":"FeeQuery_IncentivizedPackets","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"},{"type":"string","format":"uint64","description":"block height at which to query","name":"query_height","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.fee.v1.QueryIncentivizedPacketsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/interchain_accounts/controller/v1/owners/{owner}/connections/{connection_id}":{"get":{"tags":["Query"],"summary":"InterchainAccount returns the interchain account address for a given owner address on a given connection","operationId":"FeeQuery_InterchainAccount","parameters":[{"type":"string","name":"owner","in":"path","required":true},{"type":"string","name":"connection_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.controller.v1.QueryInterchainAccountResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/interchain_accounts/controller/v1/params":{"get":{"tags":["Query"],"summary":"Params queries all parameters of the ICA controller submodule.","operationId":"FeeQuery_Params","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.controller.v1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/interchain_accounts/host/v1/params":{"get":{"tags":["Query"],"summary":"Params queries all parameters of the ICA host submodule.","operationId":"FeeQuery_ParamsMixin148","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.host.v1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/transfer/v1/channels/{channel_id}/ports/{port_id}/escrow_address":{"get":{"tags":["Query"],"summary":"EscrowAddress returns the escrow address for a particular port and channel id.","operationId":"FeeQuery_EscrowAddress","parameters":[{"type":"string","description":"unique channel identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"unique port identifier","name":"port_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.transfer.v1.QueryEscrowAddressResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/transfer/v1/denom_hashes/{trace}":{"get":{"tags":["Query"],"summary":"DenomHash queries a denomination hash information.","operationId":"FeeQuery_DenomHash","parameters":[{"pattern":".+","type":"string","description":"The denomination trace ([port_id]/[channel_id])+/[denom]","name":"trace","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.transfer.v1.QueryDenomHashResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/transfer/v1/denom_traces":{"get":{"tags":["Query"],"summary":"DenomTraces queries all denomination traces.","operationId":"FeeQuery_DenomTraces","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.transfer.v1.QueryDenomTracesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/transfer/v1/denom_traces/{hash}":{"get":{"tags":["Query"],"summary":"DenomTrace queries a denomination trace information.","operationId":"FeeQuery_DenomTrace","parameters":[{"pattern":".+","type":"string","description":"hash (in hex format) or denom (full denom with ibc prefix) of the denomination trace information.","name":"hash","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.transfer.v1.QueryDenomTraceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/transfer/v1/denoms/{denom}/total_escrow":{"get":{"tags":["Query"],"summary":"TotalEscrowForDenom returns the total amount of tokens in escrow based on the denom.","operationId":"FeeQuery_TotalEscrowForDenom","parameters":[{"pattern":".+","type":"string","name":"denom","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.transfer.v1.QueryTotalEscrowForDenomResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/transfer/v1/params":{"get":{"tags":["Query"],"summary":"Params queries all parameters of the ibc-transfer module.","operationId":"FeeQuery_ParamsMixin155","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.transfer.v1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels":{"get":{"tags":["Query"],"summary":"Channels queries all the IBC channels of a chain.","operationId":"FeeQuery_Channels","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryChannelsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}":{"get":{"tags":["Query"],"summary":"Channel queries an IBC Channel.","operationId":"FeeQuery_Channel","parameters":[{"type":"string","description":"channel unique identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"port unique identifier","name":"port_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryChannelResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/client_state":{"get":{"tags":["Query"],"summary":"ChannelClientState queries for the client state for the channel associated\nwith the provided channel identifiers.","operationId":"FeeQuery_ChannelClientState","parameters":[{"type":"string","description":"channel unique identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"port unique identifier","name":"port_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryChannelClientStateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/consensus_state/revision/{revision_number}/height/{revision_height}":{"get":{"tags":["Query"],"summary":"ChannelConsensusState queries for the consensus state for the channel\nassociated with the provided channel identifiers.","operationId":"FeeQuery_ChannelConsensusState","parameters":[{"type":"string","description":"channel unique identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"port unique identifier","name":"port_id","in":"path","required":true},{"type":"string","format":"uint64","description":"revision number of the consensus state","name":"revision_number","in":"path","required":true},{"type":"string","format":"uint64","description":"revision height of the consensus state","name":"revision_height","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryChannelConsensusStateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/next_sequence":{"get":{"tags":["Query"],"summary":"NextSequenceReceive returns the next receive sequence for a given channel.","operationId":"FeeQuery_NextSequenceReceive","parameters":[{"type":"string","description":"channel unique identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"port unique identifier","name":"port_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryNextSequenceReceiveResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/next_sequence_send":{"get":{"tags":["Query"],"summary":"NextSequenceSend returns the next send sequence for a given channel.","operationId":"FeeQuery_NextSequenceSend","parameters":[{"type":"string","description":"channel unique identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"port unique identifier","name":"port_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryNextSequenceSendResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_acknowledgements":{"get":{"tags":["Query"],"summary":"PacketAcknowledgements returns all the packet acknowledgements associated\nwith a channel.","operationId":"FeeQuery_PacketAcknowledgements","parameters":[{"type":"string","description":"channel unique identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"port unique identifier","name":"port_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"},{"type":"array","items":{"type":"string","format":"uint64"},"collectionFormat":"multi","description":"list of packet sequences","name":"packet_commitment_sequences","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryPacketAcknowledgementsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_acks/{sequence}":{"get":{"tags":["Query"],"summary":"PacketAcknowledgement queries a stored packet acknowledgement hash.","operationId":"FeeQuery_PacketAcknowledgement","parameters":[{"type":"string","description":"channel unique identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"port unique identifier","name":"port_id","in":"path","required":true},{"type":"string","format":"uint64","description":"packet sequence","name":"sequence","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryPacketAcknowledgementResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments":{"get":{"tags":["Query"],"summary":"PacketCommitments returns all the packet commitments hashes associated\nwith a channel.","operationId":"FeeQuery_PacketCommitments","parameters":[{"type":"string","description":"channel unique identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"port unique identifier","name":"port_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryPacketCommitmentsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments/{packet_ack_sequences}/unreceived_acks":{"get":{"tags":["Query"],"summary":"UnreceivedAcks returns all the unreceived IBC acknowledgements associated\nwith a channel and sequences.","operationId":"FeeQuery_UnreceivedAcks","parameters":[{"type":"string","description":"channel unique identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"port unique identifier","name":"port_id","in":"path","required":true},{"minItems":1,"type":"array","items":{"type":"string","format":"uint64"},"collectionFormat":"csv","description":"list of acknowledgement sequences","name":"packet_ack_sequences","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryUnreceivedAcksResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments/{packet_commitment_sequences}/unreceived_packets":{"get":{"tags":["Query"],"summary":"UnreceivedPackets returns all the unreceived IBC packets associated with a\nchannel and sequences.","operationId":"FeeQuery_UnreceivedPackets","parameters":[{"type":"string","description":"channel unique identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"port unique identifier","name":"port_id","in":"path","required":true},{"minItems":1,"type":"array","items":{"type":"string","format":"uint64"},"collectionFormat":"csv","description":"list of packet sequences","name":"packet_commitment_sequences","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryUnreceivedPacketsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments/{sequence}":{"get":{"tags":["Query"],"summary":"PacketCommitment queries a stored packet commitment hash.","operationId":"FeeQuery_PacketCommitment","parameters":[{"type":"string","description":"channel unique identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"port unique identifier","name":"port_id","in":"path","required":true},{"type":"string","format":"uint64","description":"packet sequence","name":"sequence","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryPacketCommitmentResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_receipts/{sequence}":{"get":{"tags":["Query"],"summary":"PacketReceipt queries if a given packet sequence has been received on the\nqueried chain","operationId":"FeeQuery_PacketReceipt","parameters":[{"type":"string","description":"channel unique identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"port unique identifier","name":"port_id","in":"path","required":true},{"type":"string","format":"uint64","description":"packet sequence","name":"sequence","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryPacketReceiptResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/upgrade":{"get":{"tags":["Query"],"summary":"Upgrade returns the upgrade for a given port and channel id.","operationId":"FeeQuery_Upgrade","parameters":[{"type":"string","name":"channel_id","in":"path","required":true},{"type":"string","name":"port_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryUpgradeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/upgrade_error":{"get":{"tags":["Query"],"summary":"UpgradeError returns the error receipt if the upgrade handshake failed.","operationId":"FeeQuery_UpgradeError","parameters":[{"type":"string","name":"channel_id","in":"path","required":true},{"type":"string","name":"port_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryUpgradeErrorResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/connections/{connection}/channels":{"get":{"tags":["Query"],"summary":"ConnectionChannels queries all the channels associated with a connection\nend.","operationId":"FeeQuery_ConnectionChannels","parameters":[{"type":"string","description":"connection unique identifier","name":"connection","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryConnectionChannelsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/params":{"get":{"tags":["Query"],"summary":"ChannelParams queries all parameters of the ibc channel submodule.","operationId":"FeeQuery_ChannelParams","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryChannelParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/client/v1/client_states":{"get":{"tags":["Query"],"summary":"ClientStates queries all the IBC light clients of a chain.","operationId":"FeeQuery_ClientStates","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.QueryClientStatesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/client/v1/client_states/{client_id}":{"get":{"tags":["Query"],"summary":"ClientState queries an IBC light client.","operationId":"FeeQuery_ClientState","parameters":[{"type":"string","description":"client state unique identifier","name":"client_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.QueryClientStateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/client/v1/client_status/{client_id}":{"get":{"tags":["Query"],"summary":"Status queries the status of an IBC client.","operationId":"FeeQuery_ClientStatus","parameters":[{"type":"string","description":"client unique identifier","name":"client_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.QueryClientStatusResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/client/v1/consensus_states/{client_id}":{"get":{"tags":["Query"],"summary":"ConsensusStates queries all the consensus state associated with a given\nclient.","operationId":"FeeQuery_ConsensusStates","parameters":[{"type":"string","description":"client identifier","name":"client_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.QueryConsensusStatesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/client/v1/consensus_states/{client_id}/heights":{"get":{"tags":["Query"],"summary":"ConsensusStateHeights queries the height of every consensus states associated with a given client.","operationId":"FeeQuery_ConsensusStateHeights","parameters":[{"type":"string","description":"client identifier","name":"client_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.QueryConsensusStateHeightsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/client/v1/consensus_states/{client_id}/revision/{revision_number}/height/{revision_height}":{"get":{"tags":["Query"],"summary":"ConsensusState queries a consensus state associated with a client state at\na given height.","operationId":"FeeQuery_ConsensusState","parameters":[{"type":"string","description":"client identifier","name":"client_id","in":"path","required":true},{"type":"string","format":"uint64","description":"consensus state revision number","name":"revision_number","in":"path","required":true},{"type":"string","format":"uint64","description":"consensus state revision height","name":"revision_height","in":"path","required":true},{"type":"boolean","description":"latest_height overrrides the height field and queries the latest stored\nConsensusState","name":"latest_height","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.QueryConsensusStateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/client/v1/params":{"get":{"tags":["Query"],"summary":"ClientParams queries all parameters of the ibc client submodule.","operationId":"FeeQuery_ClientParams","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.QueryClientParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/client/v1/upgraded_client_states":{"get":{"tags":["Query"],"summary":"UpgradedClientState queries an Upgraded IBC light client.","operationId":"FeeQuery_UpgradedClientState","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.QueryUpgradedClientStateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/client/v1/upgraded_consensus_states":{"get":{"tags":["Query"],"summary":"UpgradedConsensusState queries an Upgraded IBC consensus state.","operationId":"FeeQuery_UpgradedConsensusState","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.QueryUpgradedConsensusStateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/client/v1/verify_membership":{"post":{"tags":["Query"],"summary":"VerifyMembership queries an IBC light client for proof verification of a value at a given key path.","operationId":"FeeQuery_VerifyMembership","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.client.v1.QueryVerifyMembershipRequest"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.QueryVerifyMembershipResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/connection/v1/client_connections/{client_id}":{"get":{"tags":["Query"],"summary":"ClientConnections queries the connection paths associated with a client\nstate.","operationId":"FeeQuery_ClientConnections","parameters":[{"type":"string","description":"client identifier associated with a connection","name":"client_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.connection.v1.QueryClientConnectionsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/connection/v1/connections":{"get":{"tags":["Query"],"summary":"Connections queries all the IBC connections of a chain.","operationId":"FeeQuery_Connections","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.connection.v1.QueryConnectionsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/connection/v1/connections/{connection_id}":{"get":{"tags":["Query"],"summary":"Connection queries an IBC connection end.","operationId":"FeeQuery_Connection","parameters":[{"type":"string","description":"connection unique identifier","name":"connection_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.connection.v1.QueryConnectionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/connection/v1/connections/{connection_id}/client_state":{"get":{"tags":["Query"],"summary":"ConnectionClientState queries the client state associated with the\nconnection.","operationId":"FeeQuery_ConnectionClientState","parameters":[{"type":"string","description":"connection identifier","name":"connection_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.connection.v1.QueryConnectionClientStateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/connection/v1/connections/{connection_id}/consensus_state/revision/{revision_number}/height/{revision_height}":{"get":{"tags":["Query"],"summary":"ConnectionConsensusState queries the consensus state associated with the\nconnection.","operationId":"FeeQuery_ConnectionConsensusState","parameters":[{"type":"string","description":"connection identifier","name":"connection_id","in":"path","required":true},{"type":"string","format":"uint64","name":"revision_number","in":"path","required":true},{"type":"string","format":"uint64","name":"revision_height","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.connection.v1.QueryConnectionConsensusStateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/connection/v1/params":{"get":{"tags":["Query"],"summary":"ConnectionParams queries all parameters of the ibc connection submodule.","operationId":"FeeQuery_ConnectionParams","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.connection.v1.QueryConnectionParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/lightclients/wasm/v1/checksums":{"get":{"tags":["Query"],"summary":"Get all Wasm checksums","operationId":"FeeQuery_Checksums","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.lightclients.wasm.v1.QueryChecksumsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/lightclients/wasm/v1/checksums/{checksum}/code":{"get":{"tags":["Query"],"summary":"Get Wasm code for given checksum","operationId":"FeeQuery_Code","parameters":[{"type":"string","description":"checksum is a hex encoded string of the code stored.","name":"checksum","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.lightclients.wasm.v1.QueryCodeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ignite/modules/claim/airdrop_supply":{"get":{"tags":["Query"],"summary":"Queries a AirdropSupply by index.","operationId":"GithubComignitemodulesQuery_GetAirdropSupply","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/modules.claim.v1.QueryGetAirdropSupplyResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ignite/modules/claim/claim_record":{"get":{"tags":["Query"],"operationId":"GithubComignitemodulesQuery_ListClaimRecord","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/modules.claim.v1.QueryAllClaimRecordResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ignite/modules/claim/claim_record/{address}":{"get":{"tags":["Query"],"summary":"Queries a list of ClaimRecord items.","operationId":"GithubComignitemodulesQuery_GetClaimRecord","parameters":[{"type":"string","name":"address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/modules.claim.v1.QueryGetClaimRecordResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ignite/modules/claim/initial_claim":{"get":{"tags":["Query"],"summary":"Queries a InitialClaim by index.","operationId":"GithubComignitemodulesQuery_GetInitialClaim","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/modules.claim.v1.QueryGetInitialClaimResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ignite/modules/claim/mission":{"get":{"tags":["Query"],"operationId":"GithubComignitemodulesQuery_ListMission","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/modules.claim.v1.QueryAllMissionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ignite/modules/claim/mission/{id}":{"get":{"tags":["Query"],"summary":"Queries a list of Mission items.","operationId":"GithubComignitemodulesQuery_GetMission","parameters":[{"type":"string","format":"uint64","name":"id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/modules.claim.v1.QueryGetMissionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ignite/modules/claim/v1/params":{"get":{"tags":["Query"],"summary":"Parameters queries the parameters of the module.","operationId":"GithubComignitemodulesQuery_Params","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/modules.claim.v1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ignite/modules/fundraising/auction":{"get":{"tags":["Query"],"summary":"Queries a list of Auction items.","operationId":"GithubComignitemodulesQuery_ListAuction","parameters":[{"type":"string","name":"status","in":"query"},{"type":"string","name":"type","in":"query"},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/modules.fundraising.v1.QueryAllAuctionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ignite/modules/fundraising/auction/{auction_id}":{"get":{"tags":["Query"],"operationId":"GithubComignitemodulesQuery_GetAuction","parameters":[{"type":"string","format":"uint64","name":"auction_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/modules.fundraising.v1.QueryGetAuctionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ignite/modules/fundraising/auction/{auction_id}/allowed_bidder":{"get":{"tags":["Query"],"summary":"Queries a list of AllowedBidder items.","operationId":"GithubComignitemodulesQuery_ListAllowedBidder","parameters":[{"type":"string","format":"uint64","name":"auction_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/modules.fundraising.v1.QueryAllAllowedBidderResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ignite/modules/fundraising/auction/{auction_id}/allowed_bidder/{bidder}":{"get":{"tags":["Query"],"operationId":"GithubComignitemodulesQuery_GetAllowedBidder","parameters":[{"type":"string","format":"uint64","name":"auction_id","in":"path","required":true},{"type":"string","name":"bidder","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/modules.fundraising.v1.QueryGetAllowedBidderResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ignite/modules/fundraising/auction/{auction_id}/bid":{"get":{"tags":["Query"],"summary":"Queries a list of Bid items.","operationId":"GithubComignitemodulesQuery_ListBid","parameters":[{"type":"string","format":"uint64","name":"auction_id","in":"path","required":true},{"type":"string","name":"bidder","in":"query"},{"type":"string","name":"is_matched","in":"query"},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/modules.fundraising.v1.QueryAllBidResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ignite/modules/fundraising/auction/{auction_id}/bid/{bid_id}":{"get":{"tags":["Query"],"operationId":"GithubComignitemodulesQuery_GetBid","parameters":[{"type":"string","format":"uint64","name":"auction_id","in":"path","required":true},{"type":"string","format":"uint64","name":"bid_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/modules.fundraising.v1.QueryGetBidResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ignite/modules/fundraising/auction/{auction_id}/vestings":{"get":{"tags":["Query"],"summary":"Queries a list of VestingQueue items.","operationId":"GithubComignitemodulesQuery_ListVestingQueue","parameters":[{"type":"string","format":"uint64","name":"auction_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/modules.fundraising.v1.QueryAllVestingQueueResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ignite/modules/fundraising/v1/params":{"get":{"tags":["Query"],"summary":"Parameters queries the parameters of the module.","operationId":"GithubComignitemodulesQuery_ParamsMixin15","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/modules.fundraising.v1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ignite/modules/mint/annual_provisions":{"get":{"tags":["Query"],"summary":"Queries a list of AnnualProvisions items.","operationId":"GithubComignitemodulesQuery_AnnualProvisions","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/modules.mint.v1.QueryAnnualProvisionsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ignite/modules/mint/inflation":{"get":{"tags":["Query"],"summary":"Queries a list of Inflation items.","operationId":"GithubComignitemodulesQuery_Inflation","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/modules.mint.v1.QueryInflationResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ignite/modules/mint/v1/params":{"get":{"tags":["Query"],"summary":"Parameters queries the parameters of the module.","operationId":"GithubComignitemodulesQuery_ParamsMixin22","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/modules.mint.v1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/modules.claim.v1.Msg/Claim":{"post":{"tags":["Msg"],"operationId":"GithubComignitemodulesMsg_Claim","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/modules.claim.v1.MsgClaim"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/modules.claim.v1.MsgClaimResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/modules.claim.v1.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines a (governance) operation for updating the module\nparameters. The authority defaults to the x/gov module account.","operationId":"GithubComignitemodulesMsg_UpdateParams","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/modules.claim.v1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/modules.claim.v1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/modules.fundraising.v1.Msg/AddAllowedBidder":{"post":{"tags":["Msg"],"summary":"AddAllowedBidder defines a method sto add a single allowed bidder message.\nThis is for the testing purpose and it must not be used in mainnet.","operationId":"GithubComignitemodulesMsg_AddAllowedBidder","parameters":[{"description":"MsgAddAllowedBidder defines a SDK message for adding an allowed bidder to the\nauction.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/modules.fundraising.v1.MsgAddAllowedBidder"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/modules.fundraising.v1.MsgAddAllowedBidderResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/modules.fundraising.v1.Msg/CancelAuction":{"post":{"tags":["Msg"],"summary":"CancelAuction defines a method to cancel the auction message.","operationId":"GithubComignitemodulesMsg_CancelAuction","parameters":[{"description":"MsgCancelAuction defines a SDK message for cancelling the auction.\nCancelling is only allowed when the auction hasn't started yet.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/modules.fundraising.v1.MsgCancelAuction"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/modules.fundraising.v1.MsgCancelAuctionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/modules.fundraising.v1.Msg/CreateBatchAuction":{"post":{"tags":["Msg"],"summary":"CreateBatchAuction submits a create batch auction message.","operationId":"GithubComignitemodulesMsg_CreateBatchAuction","parameters":[{"description":"MsgCreateBatchAuction defines a SDK message for creating an batch\nauction.\n\nSee:\nhttps://github.com/ignite/modules/tree/main/x/fundraising/spec/04_messages.md","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/modules.fundraising.v1.MsgCreateBatchAuction"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/modules.fundraising.v1.MsgCreateBatchAuctionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/modules.fundraising.v1.Msg/CreateFixedPriceAuction":{"post":{"tags":["Msg"],"summary":"CreateFixedPriceAuction submits a create fixed price auction message.","operationId":"GithubComignitemodulesMsg_CreateFixedPriceAuction","parameters":[{"description":"MsgCreateFixedPriceAuction defines a SDK message for creating a fixed price\nauction.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/modules.fundraising.v1.MsgCreateFixedPriceAuction"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/modules.fundraising.v1.MsgCreateFixedPriceAuctionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/modules.fundraising.v1.Msg/ModifyBid":{"post":{"tags":["Msg"],"summary":"ModifyBid defines a method to modify the bid message.","operationId":"GithubComignitemodulesMsg_ModifyBid","parameters":[{"description":"MsgModifyBid defines a SDK message for modifying an existing bid for the\nauction.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/modules.fundraising.v1.MsgModifyBid"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/modules.fundraising.v1.MsgModifyBidResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/modules.fundraising.v1.Msg/PlaceBid":{"post":{"tags":["Msg"],"summary":"PlaceBid defines a method to place a bid message.","operationId":"GithubComignitemodulesMsg_PlaceBid","parameters":[{"description":"MsgPlaceBid defines a SDK message for placing a bid for the auction.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/modules.fundraising.v1.MsgPlaceBid"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/modules.fundraising.v1.MsgPlaceBidResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/modules.fundraising.v1.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines a (governance) operation for updating the module\nparameters. The authority defaults to the x/gov module account.","operationId":"GithubComignitemodulesMsg_UpdateParamsMixin16","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/modules.fundraising.v1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/modules.fundraising.v1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/modules.mint.v1.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines a (governance) operation for updating the module\nparameters. The authority defaults to the x/gov module account.","operationId":"GithubComignitemodulesMsg_UpdateParamsMixin23","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/modules.mint.v1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/modules.mint.v1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/ApplySnapshotChunk":{"post":{"tags":["ABCI"],"operationId":"FeegrantABCI_ApplySnapshotChunk","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestApplySnapshotChunk"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseApplySnapshotChunk"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/CheckTx":{"post":{"tags":["ABCI"],"operationId":"FeegrantABCI_CheckTx","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestCheckTx"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseCheckTx"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/Commit":{"post":{"tags":["ABCI"],"operationId":"FeegrantABCI_Commit","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestCommit"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseCommit"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/Echo":{"post":{"tags":["ABCI"],"operationId":"FeegrantABCI_Echo","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestEcho"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseEcho"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/ExtendVote":{"post":{"tags":["ABCI"],"operationId":"FeegrantABCI_ExtendVote","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestExtendVote"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseExtendVote"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/FinalizeBlock":{"post":{"tags":["ABCI"],"operationId":"FeegrantABCI_FinalizeBlock","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestFinalizeBlock"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseFinalizeBlock"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/Flush":{"post":{"tags":["ABCI"],"operationId":"FeegrantABCI_Flush","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestFlush"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseFlush"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/Info":{"post":{"tags":["ABCI"],"operationId":"FeegrantABCI_Info","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestInfo"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseInfo"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/InitChain":{"post":{"tags":["ABCI"],"operationId":"FeegrantABCI_InitChain","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestInitChain"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseInitChain"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/ListSnapshots":{"post":{"tags":["ABCI"],"operationId":"FeegrantABCI_ListSnapshots","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestListSnapshots"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseListSnapshots"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/LoadSnapshotChunk":{"post":{"tags":["ABCI"],"operationId":"FeegrantABCI_LoadSnapshotChunk","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestLoadSnapshotChunk"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseLoadSnapshotChunk"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/OfferSnapshot":{"post":{"tags":["ABCI"],"operationId":"FeegrantABCI_OfferSnapshot","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestOfferSnapshot"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseOfferSnapshot"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/PrepareProposal":{"post":{"tags":["ABCI"],"operationId":"FeegrantABCI_PrepareProposal","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestPrepareProposal"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponsePrepareProposal"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/ProcessProposal":{"post":{"tags":["ABCI"],"operationId":"FeegrantABCI_ProcessProposal","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestProcessProposal"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseProcessProposal"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/Query":{"post":{"tags":["ABCI"],"operationId":"FeegrantABCI_Query","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestQuery"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseQuery"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/VerifyVoteExtension":{"post":{"tags":["ABCI"],"operationId":"FeegrantABCI_VerifyVoteExtension","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestVerifyVoteExtension"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseVerifyVoteExtension"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}}},"definitions":{"cosmos.auth.v1beta1.AddressBytesToStringResponse":{"description":"AddressBytesToStringResponse is the response type for AddressString rpc method.\n\nSince: cosmos-sdk 0.46","type":"object","properties":{"address_string":{"type":"string"}}},"cosmos.auth.v1beta1.AddressStringToBytesResponse":{"description":"AddressStringToBytesResponse is the response type for AddressBytes rpc method.\n\nSince: cosmos-sdk 0.46","type":"object","properties":{"address_bytes":{"type":"string","format":"byte"}}},"cosmos.auth.v1beta1.BaseAccount":{"description":"BaseAccount defines a base account type. It contains all the necessary fields\nfor basic account functionality. Any custom account type should extend this\ntype for additional functionality (e.g. vesting).","type":"object","properties":{"account_number":{"type":"string","format":"uint64"},"address":{"type":"string"},"pub_key":{"$ref":"#/definitions/google.protobuf.Any"},"sequence":{"type":"string","format":"uint64"}}},"cosmos.auth.v1beta1.Bech32PrefixResponse":{"description":"Bech32PrefixResponse is the response type for Bech32Prefix rpc method.\n\nSince: cosmos-sdk 0.46","type":"object","properties":{"bech32_prefix":{"type":"string"}}},"cosmos.auth.v1beta1.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the x/auth parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/cosmos.auth.v1beta1.Params"}}},"cosmos.auth.v1beta1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.\n\nSince: cosmos-sdk 0.47","type":"object"},"cosmos.auth.v1beta1.Params":{"description":"Params defines the parameters for the auth module.","type":"object","properties":{"max_memo_characters":{"type":"string","format":"uint64"},"sig_verify_cost_ed25519":{"type":"string","format":"uint64"},"sig_verify_cost_secp256k1":{"type":"string","format":"uint64"},"tx_sig_limit":{"type":"string","format":"uint64"},"tx_size_cost_per_byte":{"type":"string","format":"uint64"}}},"cosmos.auth.v1beta1.QueryAccountAddressByIDResponse":{"description":"Since: cosmos-sdk 0.46.2","type":"object","title":"QueryAccountAddressByIDResponse is the response type for AccountAddressByID rpc method","properties":{"account_address":{"type":"string"}}},"cosmos.auth.v1beta1.QueryAccountInfoResponse":{"description":"QueryAccountInfoResponse is the Query/AccountInfo response type.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"info":{"description":"info is the account info which is represented by BaseAccount.","$ref":"#/definitions/cosmos.auth.v1beta1.BaseAccount"}}},"cosmos.auth.v1beta1.QueryAccountResponse":{"description":"QueryAccountResponse is the response type for the Query/Account RPC method.","type":"object","properties":{"account":{"description":"account defines the account of the corresponding address.","$ref":"#/definitions/google.protobuf.Any"}}},"cosmos.auth.v1beta1.QueryAccountsResponse":{"description":"QueryAccountsResponse is the response type for the Query/Accounts RPC method.\n\nSince: cosmos-sdk 0.43","type":"object","properties":{"accounts":{"type":"array","title":"accounts are the existing accounts","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.auth.v1beta1.QueryModuleAccountByNameResponse":{"description":"QueryModuleAccountByNameResponse is the response type for the Query/ModuleAccountByName RPC method.","type":"object","properties":{"account":{"$ref":"#/definitions/google.protobuf.Any"}}},"cosmos.auth.v1beta1.QueryModuleAccountsResponse":{"description":"QueryModuleAccountsResponse is the response type for the Query/ModuleAccounts RPC method.\n\nSince: cosmos-sdk 0.46","type":"object","properties":{"accounts":{"type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}}}},"cosmos.auth.v1beta1.QueryParamsResponse":{"description":"QueryParamsResponse is the response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params defines the parameters of the module.","$ref":"#/definitions/cosmos.auth.v1beta1.Params"}}},"cosmos.authz.v1beta1.Grant":{"description":"Grant gives permissions to execute\nthe provide method with expiration time.","type":"object","properties":{"authorization":{"$ref":"#/definitions/google.protobuf.Any"},"expiration":{"type":"string","format":"date-time","title":"time when the grant will expire and will be pruned. If null, then the grant\ndoesn't have a time expiration (other conditions in `authorization`\nmay apply to invalidate the grant)"}}},"cosmos.authz.v1beta1.GrantAuthorization":{"type":"object","title":"GrantAuthorization extends a grant with both the addresses of the grantee and granter.\nIt is used in genesis.proto and query.proto","properties":{"authorization":{"$ref":"#/definitions/google.protobuf.Any"},"expiration":{"type":"string","format":"date-time"},"grantee":{"type":"string"},"granter":{"type":"string"}}},"cosmos.authz.v1beta1.MsgExec":{"description":"MsgExec attempts to execute the provided messages using\nauthorizations granted to the grantee. Each message should have only\none signer corresponding to the granter of the authorization.","type":"object","properties":{"grantee":{"type":"string"},"msgs":{"description":"Execute Msg.\nThe x/authz will try to find a grant matching (msg.signers[0], grantee, MsgTypeURL(msg))\ntriple and validate it.","type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}}}},"cosmos.authz.v1beta1.MsgExecResponse":{"description":"MsgExecResponse defines the Msg/MsgExecResponse response type.","type":"object","properties":{"results":{"type":"array","items":{"type":"string","format":"byte"}}}},"cosmos.authz.v1beta1.MsgGrant":{"description":"MsgGrant is a request type for Grant method. It declares authorization to the grantee\non behalf of the granter with the provided expiration time.","type":"object","properties":{"grant":{"$ref":"#/definitions/cosmos.authz.v1beta1.Grant"},"grantee":{"type":"string"},"granter":{"type":"string"}}},"cosmos.authz.v1beta1.MsgGrantResponse":{"description":"MsgGrantResponse defines the Msg/MsgGrant response type.","type":"object"},"cosmos.authz.v1beta1.MsgRevoke":{"description":"MsgRevoke revokes any authorization with the provided sdk.Msg type on the\ngranter's account with that has been granted to the grantee.","type":"object","properties":{"grantee":{"type":"string"},"granter":{"type":"string"},"msg_type_url":{"type":"string"}}},"cosmos.authz.v1beta1.MsgRevokeResponse":{"description":"MsgRevokeResponse defines the Msg/MsgRevokeResponse response type.","type":"object"},"cosmos.authz.v1beta1.QueryGranteeGrantsResponse":{"description":"QueryGranteeGrantsResponse is the response type for the Query/GranteeGrants RPC method.","type":"object","properties":{"grants":{"description":"grants is a list of grants granted to the grantee.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.authz.v1beta1.GrantAuthorization"}},"pagination":{"description":"pagination defines an pagination for the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.authz.v1beta1.QueryGranterGrantsResponse":{"description":"QueryGranterGrantsResponse is the response type for the Query/GranterGrants RPC method.","type":"object","properties":{"grants":{"description":"grants is a list of grants granted by the granter.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.authz.v1beta1.GrantAuthorization"}},"pagination":{"description":"pagination defines an pagination for the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.authz.v1beta1.QueryGrantsResponse":{"description":"QueryGrantsResponse is the response type for the Query/Authorizations RPC method.","type":"object","properties":{"grants":{"description":"authorizations is a list of grants granted for grantee by granter.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.authz.v1beta1.Grant"}},"pagination":{"description":"pagination defines an pagination for the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.autocli.v1.AppOptionsRequest":{"description":"AppOptionsRequest is the RemoteInfoService/AppOptions request type.","type":"object"},"cosmos.autocli.v1.AppOptionsResponse":{"description":"AppOptionsResponse is the RemoteInfoService/AppOptions response type.","type":"object","properties":{"module_options":{"description":"module_options is a map of module name to autocli module options.","type":"object","additionalProperties":{"$ref":"#/definitions/cosmos.autocli.v1.ModuleOptions"}}}},"cosmos.autocli.v1.FlagOptions":{"description":"FlagOptions are options for flags generated from rpc request fields.\nBy default, all request fields are configured as flags based on the\nkebab-case name of the field. Fields can be turned into positional arguments\ninstead by using RpcCommandOptions.positional_args.","type":"object","properties":{"default_value":{"description":"default_value is the default value as text.","type":"string"},"deprecated":{"description":"deprecated is the usage text to show if this flag is deprecated.","type":"string"},"hidden":{"type":"boolean","title":"hidden hides the flag from help/usage text"},"name":{"description":"name is an alternate name to use for the field flag.","type":"string"},"shorthand":{"description":"shorthand is a one-letter abbreviated flag.","type":"string"},"shorthand_deprecated":{"description":"shorthand_deprecated is the usage text to show if the shorthand of this flag is deprecated.","type":"string"},"usage":{"description":"usage is the help message.","type":"string"}}},"cosmos.autocli.v1.ModuleOptions":{"description":"ModuleOptions describes the CLI options for a Cosmos SDK module.","type":"object","properties":{"query":{"description":"query describes the queries commands for the module.","$ref":"#/definitions/cosmos.autocli.v1.ServiceCommandDescriptor"},"tx":{"description":"tx describes the tx commands for the module.","$ref":"#/definitions/cosmos.autocli.v1.ServiceCommandDescriptor"}}},"cosmos.autocli.v1.PositionalArgDescriptor":{"description":"PositionalArgDescriptor describes a positional argument.","type":"object","properties":{"proto_field":{"description":"proto_field specifies the proto field to use as the positional arg. Any\nfields used as positional args will not have a flag generated.","type":"string"},"varargs":{"description":"varargs makes a positional parameter a varargs parameter. This can only be\napplied to last positional parameter and the proto_field must a repeated\nfield.","type":"boolean"}}},"cosmos.autocli.v1.RpcCommandOptions":{"description":"RpcCommandOptions specifies options for commands generated from protobuf\nrpc methods.","type":"object","properties":{"alias":{"description":"alias is an array of aliases that can be used instead of the first word in Use.","type":"array","items":{"type":"string"}},"deprecated":{"description":"deprecated defines, if this command is deprecated and should print this string when used.","type":"string"},"example":{"description":"example is examples of how to use the command.","type":"string"},"flag_options":{"description":"flag_options are options for flags generated from rpc request fields.\nBy default all request fields are configured as flags. They can\nalso be configured as positional args instead using positional_args.","type":"object","additionalProperties":{"$ref":"#/definitions/cosmos.autocli.v1.FlagOptions"}},"long":{"description":"long is the long message shown in the 'help \u003cthis-command\u003e' output.","type":"string"},"positional_args":{"description":"positional_args specifies positional arguments for the command.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.autocli.v1.PositionalArgDescriptor"}},"rpc_method":{"description":"rpc_method is short name of the protobuf rpc method that this command is\ngenerated from.","type":"string"},"short":{"description":"short is the short description shown in the 'help' output.","type":"string"},"skip":{"description":"skip specifies whether to skip this rpc method when generating commands.","type":"boolean"},"suggest_for":{"description":"suggest_for is an array of command names for which this command will be suggested -\nsimilar to aliases but only suggests.","type":"array","items":{"type":"string"}},"use":{"description":"use is the one-line usage method. It also allows specifying an alternate\nname for the command as the first word of the usage text.\n\nBy default the name of an rpc command is the kebab-case short name of the\nrpc method.","type":"string"},"version":{"description":"version defines the version for this command. If this value is non-empty and the command does not\ndefine a \"version\" flag, a \"version\" boolean flag will be added to the command and, if specified,\nwill print content of the \"Version\" variable. A shorthand \"v\" flag will also be added if the\ncommand does not define one.","type":"string"}}},"cosmos.autocli.v1.ServiceCommandDescriptor":{"description":"ServiceCommandDescriptor describes a CLI command based on a protobuf service.","type":"object","properties":{"rpc_command_options":{"description":"rpc_command_options are options for commands generated from rpc methods.\nIf no options are specified for a given rpc method on the service, a\ncommand will be generated for that method with the default options.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.autocli.v1.RpcCommandOptions"}},"service":{"description":"service is the fully qualified name of the protobuf service to build\nthe command from. It can be left empty if sub_commands are used instead\nwhich may be the case if a module provides multiple tx and/or query services.","type":"string"},"sub_commands":{"description":"sub_commands is a map of optional sub-commands for this command based on\ndifferent protobuf services. The map key is used as the name of the\nsub-command.","type":"object","additionalProperties":{"$ref":"#/definitions/cosmos.autocli.v1.ServiceCommandDescriptor"}}}},"cosmos.bank.v1beta1.DenomOwner":{"description":"DenomOwner defines structure representing an account that owns or holds a\nparticular denominated token. It contains the account address and account\nbalance of the denominated token.\n\nSince: cosmos-sdk 0.46","type":"object","properties":{"address":{"description":"address defines the address that owns a particular denomination.","type":"string"},"balance":{"description":"balance is the balance of the denominated coin for an account.","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"cosmos.bank.v1beta1.DenomUnit":{"description":"DenomUnit represents a struct that describes a given\ndenomination unit of the basic token.","type":"object","properties":{"aliases":{"type":"array","title":"aliases is a list of string aliases for the given denom","items":{"type":"string"}},"denom":{"description":"denom represents the string name of the given denom unit (e.g uatom).","type":"string"},"exponent":{"description":"exponent represents power of 10 exponent that one must\nraise the base_denom to in order to equal the given DenomUnit's denom\n1 denom = 10^exponent base_denom\n(e.g. with a base_denom of uatom, one can create a DenomUnit of 'atom' with\nexponent = 6, thus: 1 atom = 10^6 uatom).","type":"integer","format":"int64"}}},"cosmos.bank.v1beta1.Input":{"description":"Input models transaction input.","type":"object","properties":{"address":{"type":"string"},"coins":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"cosmos.bank.v1beta1.Metadata":{"description":"Metadata represents a struct that describes\na basic token.","type":"object","properties":{"base":{"description":"base represents the base denom (should be the DenomUnit with exponent = 0).","type":"string"},"denom_units":{"type":"array","title":"denom_units represents the list of DenomUnit's for a given coin","items":{"type":"object","$ref":"#/definitions/cosmos.bank.v1beta1.DenomUnit"}},"description":{"type":"string"},"display":{"description":"display indicates the suggested denom that should be\ndisplayed in clients.","type":"string"},"name":{"description":"Since: cosmos-sdk 0.43","type":"string","title":"name defines the name of the token (eg: Cosmos Atom)"},"symbol":{"description":"symbol is the token symbol usually shown on exchanges (eg: ATOM). This can\nbe the same as the display.\n\nSince: cosmos-sdk 0.43","type":"string"},"uri":{"description":"URI to a document (on or off-chain) that contains additional information. Optional.\n\nSince: cosmos-sdk 0.46","type":"string"},"uri_hash":{"description":"URIHash is a sha256 hash of a document pointed by URI. It's used to verify that\nthe document didn't change. Optional.\n\nSince: cosmos-sdk 0.46","type":"string"}}},"cosmos.bank.v1beta1.MsgMultiSend":{"description":"MsgMultiSend represents an arbitrary multi-in, multi-out send message.","type":"object","properties":{"inputs":{"description":"Inputs, despite being `repeated`, only allows one sender input. This is\nchecked in MsgMultiSend's ValidateBasic.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.bank.v1beta1.Input"}},"outputs":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.bank.v1beta1.Output"}}}},"cosmos.bank.v1beta1.MsgMultiSendResponse":{"description":"MsgMultiSendResponse defines the Msg/MultiSend response type.","type":"object"},"cosmos.bank.v1beta1.MsgSend":{"description":"MsgSend represents a message to send coins from one account to another.","type":"object","properties":{"amount":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"from_address":{"type":"string"},"to_address":{"type":"string"}}},"cosmos.bank.v1beta1.MsgSendResponse":{"description":"MsgSendResponse defines the Msg/Send response type.","type":"object"},"cosmos.bank.v1beta1.MsgSetSendEnabled":{"description":"MsgSetSendEnabled is the Msg/SetSendEnabled request type.\n\nOnly entries to add/update/delete need to be included.\nExisting SendEnabled entries that are not included in this\nmessage are left unchanged.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"authority":{"description":"authority is the address that controls the module.","type":"string"},"send_enabled":{"description":"send_enabled is the list of entries to add or update.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.bank.v1beta1.SendEnabled"}},"use_default_for":{"description":"use_default_for is a list of denoms that should use the params.default_send_enabled value.\nDenoms listed here will have their SendEnabled entries deleted.\nIf a denom is included that doesn't have a SendEnabled entry,\nit will be ignored.","type":"array","items":{"type":"string"}}}},"cosmos.bank.v1beta1.MsgSetSendEnabledResponse":{"description":"MsgSetSendEnabledResponse defines the Msg/SetSendEnabled response type.\n\nSince: cosmos-sdk 0.47","type":"object"},"cosmos.bank.v1beta1.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the x/bank parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/cosmos.bank.v1beta1.Params"}}},"cosmos.bank.v1beta1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.\n\nSince: cosmos-sdk 0.47","type":"object"},"cosmos.bank.v1beta1.Output":{"description":"Output models transaction outputs.","type":"object","properties":{"address":{"type":"string"},"coins":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"cosmos.bank.v1beta1.Params":{"description":"Params defines the parameters for the bank module.","type":"object","properties":{"default_send_enabled":{"type":"boolean"},"send_enabled":{"description":"Deprecated: Use of SendEnabled in params is deprecated.\nFor genesis, use the newly added send_enabled field in the genesis object.\nStorage, lookup, and manipulation of this information is now in the keeper.\n\nAs of cosmos-sdk 0.47, this only exists for backwards compatibility of genesis files.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.bank.v1beta1.SendEnabled"}}}},"cosmos.bank.v1beta1.QueryAllBalancesResponse":{"description":"QueryAllBalancesResponse is the response type for the Query/AllBalances RPC\nmethod.","type":"object","properties":{"balances":{"description":"balances is the balances of all the coins.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.bank.v1beta1.QueryBalanceResponse":{"description":"QueryBalanceResponse is the response type for the Query/Balance RPC method.","type":"object","properties":{"balance":{"description":"balance is the balance of the coin.","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"cosmos.bank.v1beta1.QueryDenomMetadataByQueryStringResponse":{"description":"QueryDenomMetadataByQueryStringResponse is the response type for the Query/DenomMetadata RPC\nmethod. Identical with QueryDenomMetadataResponse but receives denom as query string in request.","type":"object","properties":{"metadata":{"description":"metadata describes and provides all the client information for the requested token.","$ref":"#/definitions/cosmos.bank.v1beta1.Metadata"}}},"cosmos.bank.v1beta1.QueryDenomMetadataResponse":{"description":"QueryDenomMetadataResponse is the response type for the Query/DenomMetadata RPC\nmethod.","type":"object","properties":{"metadata":{"description":"metadata describes and provides all the client information for the requested token.","$ref":"#/definitions/cosmos.bank.v1beta1.Metadata"}}},"cosmos.bank.v1beta1.QueryDenomOwnersByQueryResponse":{"description":"QueryDenomOwnersByQueryResponse defines the RPC response of a DenomOwnersByQuery RPC query.\n\nSince: cosmos-sdk 0.50.3","type":"object","properties":{"denom_owners":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.bank.v1beta1.DenomOwner"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.bank.v1beta1.QueryDenomOwnersResponse":{"description":"QueryDenomOwnersResponse defines the RPC response of a DenomOwners RPC query.\n\nSince: cosmos-sdk 0.46","type":"object","properties":{"denom_owners":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.bank.v1beta1.DenomOwner"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.bank.v1beta1.QueryDenomsMetadataResponse":{"description":"QueryDenomsMetadataResponse is the response type for the Query/DenomsMetadata RPC\nmethod.","type":"object","properties":{"metadatas":{"description":"metadata provides the client information for all the registered tokens.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.bank.v1beta1.Metadata"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.bank.v1beta1.QueryParamsResponse":{"description":"QueryParamsResponse defines the response type for querying x/bank parameters.","type":"object","properties":{"params":{"description":"params provides the parameters of the bank module.","$ref":"#/definitions/cosmos.bank.v1beta1.Params"}}},"cosmos.bank.v1beta1.QuerySendEnabledResponse":{"description":"QuerySendEnabledResponse defines the RPC response of a SendEnable query.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response. This field is only\npopulated if the denoms field in the request is empty.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"send_enabled":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.bank.v1beta1.SendEnabled"}}}},"cosmos.bank.v1beta1.QuerySpendableBalanceByDenomResponse":{"description":"QuerySpendableBalanceByDenomResponse defines the gRPC response structure for\nquerying an account's spendable balance for a specific denom.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"balance":{"description":"balance is the balance of the coin.","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"cosmos.bank.v1beta1.QuerySpendableBalancesResponse":{"description":"QuerySpendableBalancesResponse defines the gRPC response structure for querying\nan account's spendable balances.\n\nSince: cosmos-sdk 0.46","type":"object","properties":{"balances":{"description":"balances is the spendable balances of all the coins.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.bank.v1beta1.QuerySupplyOfResponse":{"description":"QuerySupplyOfResponse is the response type for the Query/SupplyOf RPC method.","type":"object","properties":{"amount":{"description":"amount is the supply of the coin.","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"cosmos.bank.v1beta1.QueryTotalSupplyResponse":{"type":"object","title":"QueryTotalSupplyResponse is the response type for the Query/TotalSupply RPC\nmethod","properties":{"pagination":{"description":"pagination defines the pagination in the response.\n\nSince: cosmos-sdk 0.43","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"supply":{"type":"array","title":"supply is the supply of the coins","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"cosmos.bank.v1beta1.SendEnabled":{"description":"SendEnabled maps coin denom to a send_enabled status (whether a denom is\nsendable).","type":"object","properties":{"denom":{"type":"string"},"enabled":{"type":"boolean"}}},"cosmos.base.abci.v1beta1.ABCIMessageLog":{"description":"ABCIMessageLog defines a structure containing an indexed tx ABCI message log.","type":"object","properties":{"events":{"description":"Events contains a slice of Event objects that were emitted during some\nexecution.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.abci.v1beta1.StringEvent"}},"log":{"type":"string"},"msg_index":{"type":"integer","format":"int64"}}},"cosmos.base.abci.v1beta1.Attribute":{"description":"Attribute defines an attribute wrapper where the key and value are\nstrings instead of raw bytes.","type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}}},"cosmos.base.abci.v1beta1.GasInfo":{"description":"GasInfo defines tx execution gas context.","type":"object","properties":{"gas_used":{"description":"GasUsed is the amount of gas actually consumed.","type":"string","format":"uint64"},"gas_wanted":{"description":"GasWanted is the maximum units of work we allow this tx to perform.","type":"string","format":"uint64"}}},"cosmos.base.abci.v1beta1.Result":{"description":"Result is the union of ResponseFormat and ResponseCheckTx.","type":"object","properties":{"data":{"description":"Data is any data returned from message or handler execution. It MUST be\nlength prefixed in order to separate data from multiple message executions.\nDeprecated. This field is still populated, but prefer msg_response instead\nbecause it also contains the Msg response typeURL.","type":"string","format":"byte"},"events":{"description":"Events contains a slice of Event objects that were emitted during message\nor handler execution.","type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.Event"}},"log":{"description":"Log contains the log information from message or handler execution.","type":"string"},"msg_responses":{"description":"msg_responses contains the Msg handler responses type packed in Anys.\n\nSince: cosmos-sdk 0.46","type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}}}},"cosmos.base.abci.v1beta1.StringEvent":{"description":"StringEvent defines en Event object wrapper where all the attributes\ncontain key/value pairs that are strings instead of raw bytes.","type":"object","properties":{"attributes":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.abci.v1beta1.Attribute"}},"type":{"type":"string"}}},"cosmos.base.abci.v1beta1.TxResponse":{"description":"TxResponse defines a structure containing relevant tx data and metadata. The\ntags are stringified and the log is JSON decoded.","type":"object","properties":{"code":{"description":"Response code.","type":"integer","format":"int64"},"codespace":{"type":"string","title":"Namespace for the Code"},"data":{"description":"Result bytes, if any.","type":"string"},"events":{"description":"Events defines all the events emitted by processing a transaction. Note,\nthese events include those emitted by processing all the messages and those\nemitted from the ante. Whereas Logs contains the events, with\nadditional metadata, emitted only by processing the messages.\n\nSince: cosmos-sdk 0.42.11, 0.44.5, 0.45","type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.Event"}},"gas_used":{"description":"Amount of gas consumed by transaction.","type":"string","format":"int64"},"gas_wanted":{"description":"Amount of gas requested for transaction.","type":"string","format":"int64"},"height":{"type":"string","format":"int64","title":"The block height"},"info":{"description":"Additional information. May be non-deterministic.","type":"string"},"logs":{"description":"The output of the application's logger (typed). May be non-deterministic.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.abci.v1beta1.ABCIMessageLog"}},"raw_log":{"description":"The output of the application's logger (raw string). May be\nnon-deterministic.","type":"string"},"timestamp":{"description":"Time of the previous block. For heights \u003e 1, it's the weighted median of\nthe timestamps of the valid votes in the block.LastCommit. For height == 1,\nit's genesis time.","type":"string"},"tx":{"description":"The request transaction bytes.","$ref":"#/definitions/google.protobuf.Any"},"txhash":{"description":"The transaction hash.","type":"string"}}},"cosmos.base.node.v1beta1.ConfigResponse":{"description":"ConfigResponse defines the response structure for the Config gRPC query.","type":"object","properties":{"halt_height":{"type":"string","format":"uint64"},"minimum_gas_price":{"type":"string"},"pruning_interval":{"type":"string"},"pruning_keep_recent":{"type":"string"}}},"cosmos.base.node.v1beta1.StatusResponse":{"description":"StateResponse defines the response structure for the status of a node.","type":"object","properties":{"app_hash":{"type":"string","format":"byte","title":"app hash of the current block"},"earliest_store_height":{"type":"string","format":"uint64","title":"earliest block height available in the store"},"height":{"type":"string","format":"uint64","title":"current block height"},"timestamp":{"type":"string","format":"date-time","title":"block height timestamp"},"validator_hash":{"type":"string","format":"byte","title":"validator hash provided by the consensus header"}}},"cosmos.base.query.v1beta1.PageRequest":{"description":"message SomeRequest {\n Foo some_parameter = 1;\n PageRequest pagination = 2;\n }","type":"object","title":"PageRequest is to be embedded in gRPC request messages for efficient\npagination. Ex:","properties":{"count_total":{"description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","type":"boolean"},"key":{"description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","type":"string","format":"byte"},"limit":{"description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","type":"string","format":"uint64"},"offset":{"description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","type":"string","format":"uint64"},"reverse":{"description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","type":"boolean"}}},"cosmos.base.query.v1beta1.PageResponse":{"description":"PageResponse is to be embedded in gRPC response messages where the\ncorresponding request message has used PageRequest.\n\n message SomeResponse {\n repeated Bar results = 1;\n PageResponse page = 2;\n }","type":"object","properties":{"next_key":{"description":"next_key is the key to be passed to PageRequest.key to\nquery the next page most efficiently. It will be empty if\nthere are no more results.","type":"string","format":"byte"},"total":{"type":"string","format":"uint64","title":"total is total number of results available if PageRequest.count_total\nwas set, its value is undefined otherwise"}}},"cosmos.base.reflection.v1beta1.ListAllInterfacesResponse":{"description":"ListAllInterfacesResponse is the response type of the ListAllInterfaces RPC.","type":"object","properties":{"interface_names":{"description":"interface_names is an array of all the registered interfaces.","type":"array","items":{"type":"string"}}}},"cosmos.base.reflection.v1beta1.ListImplementationsResponse":{"description":"ListImplementationsResponse is the response type of the ListImplementations\nRPC.","type":"object","properties":{"implementation_message_names":{"type":"array","items":{"type":"string"}}}},"cosmos.base.reflection.v2alpha1.AuthnDescriptor":{"type":"object","title":"AuthnDescriptor provides information on how to sign transactions without relying\non the online RPCs GetTxMetadata and CombineUnsignedTxAndSignatures","properties":{"sign_modes":{"type":"array","title":"sign_modes defines the supported signature algorithm","items":{"type":"object","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.SigningModeDescriptor"}}}},"cosmos.base.reflection.v2alpha1.ChainDescriptor":{"type":"object","title":"ChainDescriptor describes chain information of the application","properties":{"id":{"type":"string","title":"id is the chain id"}}},"cosmos.base.reflection.v2alpha1.CodecDescriptor":{"type":"object","title":"CodecDescriptor describes the registered interfaces and provides metadata information on the types","properties":{"interfaces":{"type":"array","title":"interfaces is a list of the registerted interfaces descriptors","items":{"type":"object","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.InterfaceDescriptor"}}}},"cosmos.base.reflection.v2alpha1.ConfigurationDescriptor":{"type":"object","title":"ConfigurationDescriptor contains metadata information on the sdk.Config","properties":{"bech32_account_address_prefix":{"type":"string","title":"bech32_account_address_prefix is the account address prefix"}}},"cosmos.base.reflection.v2alpha1.GetAuthnDescriptorResponse":{"type":"object","title":"GetAuthnDescriptorResponse is the response returned by the GetAuthnDescriptor RPC","properties":{"authn":{"title":"authn describes how to authenticate to the application when sending transactions","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.AuthnDescriptor"}}},"cosmos.base.reflection.v2alpha1.GetChainDescriptorResponse":{"type":"object","title":"GetChainDescriptorResponse is the response returned by the GetChainDescriptor RPC","properties":{"chain":{"title":"chain describes application chain information","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.ChainDescriptor"}}},"cosmos.base.reflection.v2alpha1.GetCodecDescriptorResponse":{"type":"object","title":"GetCodecDescriptorResponse is the response returned by the GetCodecDescriptor RPC","properties":{"codec":{"title":"codec describes the application codec such as registered interfaces and implementations","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.CodecDescriptor"}}},"cosmos.base.reflection.v2alpha1.GetConfigurationDescriptorResponse":{"type":"object","title":"GetConfigurationDescriptorResponse is the response returned by the GetConfigurationDescriptor RPC","properties":{"config":{"title":"config describes the application's sdk.Config","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.ConfigurationDescriptor"}}},"cosmos.base.reflection.v2alpha1.GetQueryServicesDescriptorResponse":{"type":"object","title":"GetQueryServicesDescriptorResponse is the response returned by the GetQueryServicesDescriptor RPC","properties":{"queries":{"title":"queries provides information on the available queryable services","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.QueryServicesDescriptor"}}},"cosmos.base.reflection.v2alpha1.GetTxDescriptorResponse":{"type":"object","title":"GetTxDescriptorResponse is the response returned by the GetTxDescriptor RPC","properties":{"tx":{"title":"tx provides information on msgs that can be forwarded to the application\nalongside the accepted transaction protobuf type","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.TxDescriptor"}}},"cosmos.base.reflection.v2alpha1.InterfaceAcceptingMessageDescriptor":{"type":"object","title":"InterfaceAcceptingMessageDescriptor describes a protobuf message which contains\nan interface represented as a google.protobuf.Any","properties":{"field_descriptor_names":{"type":"array","title":"field_descriptor_names is a list of the protobuf name (not fullname) of the field\nwhich contains the interface as google.protobuf.Any (the interface is the same, but\nit can be in multiple fields of the same proto message)","items":{"type":"string"}},"fullname":{"type":"string","title":"fullname is the protobuf fullname of the type containing the interface"}}},"cosmos.base.reflection.v2alpha1.InterfaceDescriptor":{"type":"object","title":"InterfaceDescriptor describes the implementation of an interface","properties":{"fullname":{"type":"string","title":"fullname is the name of the interface"},"interface_accepting_messages":{"type":"array","title":"interface_accepting_messages contains information regarding the proto messages which contain the interface as\ngoogle.protobuf.Any field","items":{"type":"object","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.InterfaceAcceptingMessageDescriptor"}},"interface_implementers":{"type":"array","title":"interface_implementers is a list of the descriptors of the interface implementers","items":{"type":"object","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.InterfaceImplementerDescriptor"}}}},"cosmos.base.reflection.v2alpha1.InterfaceImplementerDescriptor":{"type":"object","title":"InterfaceImplementerDescriptor describes an interface implementer","properties":{"fullname":{"type":"string","title":"fullname is the protobuf queryable name of the interface implementer"},"type_url":{"type":"string","title":"type_url defines the type URL used when marshalling the type as any\nthis is required so we can provide type safe google.protobuf.Any marshalling and\nunmarshalling, making sure that we don't accept just 'any' type\nin our interface fields"}}},"cosmos.base.reflection.v2alpha1.MsgDescriptor":{"type":"object","title":"MsgDescriptor describes a cosmos-sdk message that can be delivered with a transaction","properties":{"msg_type_url":{"description":"msg_type_url contains the TypeURL of a sdk.Msg.","type":"string"}}},"cosmos.base.reflection.v2alpha1.QueryMethodDescriptor":{"type":"object","title":"QueryMethodDescriptor describes a queryable method of a query service\nno other info is provided beside method name and tendermint queryable path\nbecause it would be redundant with the grpc reflection service","properties":{"full_query_path":{"type":"string","title":"full_query_path is the path that can be used to query\nthis method via tendermint abci.Query"},"name":{"type":"string","title":"name is the protobuf name (not fullname) of the method"}}},"cosmos.base.reflection.v2alpha1.QueryServiceDescriptor":{"type":"object","title":"QueryServiceDescriptor describes a cosmos-sdk queryable service","properties":{"fullname":{"type":"string","title":"fullname is the protobuf fullname of the service descriptor"},"is_module":{"type":"boolean","title":"is_module describes if this service is actually exposed by an application's module"},"methods":{"type":"array","title":"methods provides a list of query service methods","items":{"type":"object","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.QueryMethodDescriptor"}}}},"cosmos.base.reflection.v2alpha1.QueryServicesDescriptor":{"type":"object","title":"QueryServicesDescriptor contains the list of cosmos-sdk queriable services","properties":{"query_services":{"type":"array","title":"query_services is a list of cosmos-sdk QueryServiceDescriptor","items":{"type":"object","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.QueryServiceDescriptor"}}}},"cosmos.base.reflection.v2alpha1.SigningModeDescriptor":{"type":"object","title":"SigningModeDescriptor provides information on a signing flow of the application\nNOTE(fdymylja): here we could go as far as providing an entire flow on how\nto sign a message given a SigningModeDescriptor, but it's better to think about\nthis another time","properties":{"authn_info_provider_method_fullname":{"type":"string","title":"authn_info_provider_method_fullname defines the fullname of the method to call to get\nthe metadata required to authenticate using the provided sign_modes"},"name":{"type":"string","title":"name defines the unique name of the signing mode"},"number":{"type":"integer","format":"int32","title":"number is the unique int32 identifier for the sign_mode enum"}}},"cosmos.base.reflection.v2alpha1.TxDescriptor":{"type":"object","title":"TxDescriptor describes the accepted transaction type","properties":{"fullname":{"description":"fullname is the protobuf fullname of the raw transaction type (for instance the tx.Tx type)\nit is not meant to support polymorphism of transaction types, it is supposed to be used by\nreflection clients to understand if they can handle a specific transaction type in an application.","type":"string"},"msgs":{"type":"array","title":"msgs lists the accepted application messages (sdk.Msg)","items":{"type":"object","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.MsgDescriptor"}}}},"cosmos.base.tendermint.v1beta1.ABCIQueryResponse":{"description":"ABCIQueryResponse defines the response structure for the ABCIQuery gRPC query.\n\nNote: This type is a duplicate of the ResponseQuery proto type defined in\nTendermint.","type":"object","properties":{"code":{"type":"integer","format":"int64"},"codespace":{"type":"string"},"height":{"type":"string","format":"int64"},"index":{"type":"string","format":"int64"},"info":{"type":"string","title":"nondeterministic"},"key":{"type":"string","format":"byte"},"log":{"type":"string","title":"nondeterministic"},"proof_ops":{"$ref":"#/definitions/cosmos.base.tendermint.v1beta1.ProofOps"},"value":{"type":"string","format":"byte"}}},"cosmos.base.tendermint.v1beta1.Block":{"description":"Block is tendermint type Block, with the Header proposer address\nfield converted to bech32 string.","type":"object","properties":{"data":{"$ref":"#/definitions/tendermint.types.Data"},"evidence":{"$ref":"#/definitions/tendermint.types.EvidenceList"},"header":{"$ref":"#/definitions/cosmos.base.tendermint.v1beta1.Header"},"last_commit":{"$ref":"#/definitions/tendermint.types.Commit"}}},"cosmos.base.tendermint.v1beta1.GetBlockByHeightResponse":{"description":"GetBlockByHeightResponse is the response type for the Query/GetBlockByHeight RPC method.","type":"object","properties":{"block":{"title":"Deprecated: please use `sdk_block` instead","$ref":"#/definitions/tendermint.types.Block"},"block_id":{"$ref":"#/definitions/tendermint.types.BlockID"},"sdk_block":{"title":"Since: cosmos-sdk 0.47","$ref":"#/definitions/cosmos.base.tendermint.v1beta1.Block"}}},"cosmos.base.tendermint.v1beta1.GetLatestBlockResponse":{"description":"GetLatestBlockResponse is the response type for the Query/GetLatestBlock RPC method.","type":"object","properties":{"block":{"title":"Deprecated: please use `sdk_block` instead","$ref":"#/definitions/tendermint.types.Block"},"block_id":{"$ref":"#/definitions/tendermint.types.BlockID"},"sdk_block":{"title":"Since: cosmos-sdk 0.47","$ref":"#/definitions/cosmos.base.tendermint.v1beta1.Block"}}},"cosmos.base.tendermint.v1beta1.GetLatestValidatorSetResponse":{"description":"GetLatestValidatorSetResponse is the response type for the Query/GetValidatorSetByHeight RPC method.","type":"object","properties":{"block_height":{"type":"string","format":"int64"},"pagination":{"description":"pagination defines an pagination for the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"validators":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.tendermint.v1beta1.Validator"}}}},"cosmos.base.tendermint.v1beta1.GetNodeInfoResponse":{"description":"GetNodeInfoResponse is the response type for the Query/GetNodeInfo RPC method.","type":"object","properties":{"application_version":{"$ref":"#/definitions/cosmos.base.tendermint.v1beta1.VersionInfo"},"default_node_info":{"$ref":"#/definitions/tendermint.p2p.DefaultNodeInfo"}}},"cosmos.base.tendermint.v1beta1.GetSyncingResponse":{"description":"GetSyncingResponse is the response type for the Query/GetSyncing RPC method.","type":"object","properties":{"syncing":{"type":"boolean"}}},"cosmos.base.tendermint.v1beta1.GetValidatorSetByHeightResponse":{"description":"GetValidatorSetByHeightResponse is the response type for the Query/GetValidatorSetByHeight RPC method.","type":"object","properties":{"block_height":{"type":"string","format":"int64"},"pagination":{"description":"pagination defines an pagination for the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"validators":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.tendermint.v1beta1.Validator"}}}},"cosmos.base.tendermint.v1beta1.Header":{"description":"Header defines the structure of a Tendermint block header.","type":"object","properties":{"app_hash":{"type":"string","format":"byte","title":"state after txs from the previous block"},"chain_id":{"type":"string"},"consensus_hash":{"type":"string","format":"byte","title":"consensus params for current block"},"data_hash":{"type":"string","format":"byte","title":"transactions"},"evidence_hash":{"description":"evidence included in the block","type":"string","format":"byte","title":"consensus info"},"height":{"type":"string","format":"int64"},"last_block_id":{"title":"prev block info","$ref":"#/definitions/tendermint.types.BlockID"},"last_commit_hash":{"description":"commit from validators from the last block","type":"string","format":"byte","title":"hashes of block data"},"last_results_hash":{"type":"string","format":"byte","title":"root hash of all results from the txs from the previous block"},"next_validators_hash":{"type":"string","format":"byte","title":"validators for the next block"},"proposer_address":{"description":"proposer_address is the original block proposer address, formatted as a Bech32 string.\nIn Tendermint, this type is `bytes`, but in the SDK, we convert it to a Bech32 string\nfor better UX.\n\noriginal proposer of the block","type":"string"},"time":{"type":"string","format":"date-time"},"validators_hash":{"description":"validators for the current block","type":"string","format":"byte","title":"hashes from the app output from the prev block"},"version":{"title":"basic block info","$ref":"#/definitions/tendermint.version.Consensus"}}},"cosmos.base.tendermint.v1beta1.Module":{"type":"object","title":"Module is the type for VersionInfo","properties":{"path":{"type":"string","title":"module path"},"sum":{"type":"string","title":"checksum"},"version":{"type":"string","title":"module version"}}},"cosmos.base.tendermint.v1beta1.ProofOp":{"description":"ProofOp defines an operation used for calculating Merkle root. The data could\nbe arbitrary format, providing necessary data for example neighbouring node\nhash.\n\nNote: This type is a duplicate of the ProofOp proto type defined in Tendermint.","type":"object","properties":{"data":{"type":"string","format":"byte"},"key":{"type":"string","format":"byte"},"type":{"type":"string"}}},"cosmos.base.tendermint.v1beta1.ProofOps":{"description":"ProofOps is Merkle proof defined by the list of ProofOps.\n\nNote: This type is a duplicate of the ProofOps proto type defined in Tendermint.","type":"object","properties":{"ops":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.tendermint.v1beta1.ProofOp"}}}},"cosmos.base.tendermint.v1beta1.Validator":{"description":"Validator is the type for the validator-set.","type":"object","properties":{"address":{"type":"string"},"proposer_priority":{"type":"string","format":"int64"},"pub_key":{"$ref":"#/definitions/google.protobuf.Any"},"voting_power":{"type":"string","format":"int64"}}},"cosmos.base.tendermint.v1beta1.VersionInfo":{"description":"VersionInfo is the type for the GetNodeInfoResponse message.","type":"object","properties":{"app_name":{"type":"string"},"build_deps":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.tendermint.v1beta1.Module"}},"build_tags":{"type":"string"},"cosmos_sdk_version":{"type":"string","title":"Since: cosmos-sdk 0.43"},"git_commit":{"type":"string"},"go_version":{"type":"string"},"name":{"type":"string"},"version":{"type":"string"}}},"cosmos.base.v1beta1.Coin":{"description":"Coin defines a token with a denomination and an amount.\n\nNOTE: The amount field is an Int which implements the custom method\nsignatures required by gogoproto.","type":"object","properties":{"amount":{"type":"string"},"denom":{"type":"string"}}},"cosmos.base.v1beta1.DecCoin":{"description":"DecCoin defines a token with a denomination and a decimal amount.\n\nNOTE: The amount field is an Dec which implements the custom method\nsignatures required by gogoproto.","type":"object","properties":{"amount":{"type":"string"},"denom":{"type":"string"}}},"cosmos.circuit.v1.AccountResponse":{"description":"AccountResponse is the response type for the Query/Account RPC method.","type":"object","properties":{"permission":{"$ref":"#/definitions/cosmos.circuit.v1.Permissions"}}},"cosmos.circuit.v1.AccountsResponse":{"description":"AccountsResponse is the response type for the Query/Accounts RPC method.","type":"object","properties":{"accounts":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.circuit.v1.GenesisAccountPermissions"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.circuit.v1.DisabledListResponse":{"description":"DisabledListResponse is the response type for the Query/DisabledList RPC method.","type":"object","properties":{"disabled_list":{"type":"array","items":{"type":"string"}}}},"cosmos.circuit.v1.GenesisAccountPermissions":{"type":"object","title":"GenesisAccountPermissions is the account permissions for the circuit breaker in genesis","properties":{"address":{"type":"string"},"permissions":{"$ref":"#/definitions/cosmos.circuit.v1.Permissions"}}},"cosmos.circuit.v1.MsgAuthorizeCircuitBreaker":{"description":"MsgAuthorizeCircuitBreaker defines the Msg/AuthorizeCircuitBreaker request type.","type":"object","properties":{"grantee":{"description":"grantee is the account authorized with the provided permissions.","type":"string"},"granter":{"description":"granter is the granter of the circuit breaker permissions and must have\nLEVEL_SUPER_ADMIN.","type":"string"},"permissions":{"description":"permissions are the circuit breaker permissions that the grantee receives.\nThese will overwrite any existing permissions. LEVEL_NONE_UNSPECIFIED can\nbe specified to revoke all permissions.","$ref":"#/definitions/cosmos.circuit.v1.Permissions"}}},"cosmos.circuit.v1.MsgAuthorizeCircuitBreakerResponse":{"description":"MsgAuthorizeCircuitBreakerResponse defines the Msg/AuthorizeCircuitBreaker response type.","type":"object","properties":{"success":{"type":"boolean"}}},"cosmos.circuit.v1.MsgResetCircuitBreaker":{"description":"MsgResetCircuitBreaker defines the Msg/ResetCircuitBreaker request type.","type":"object","properties":{"authority":{"description":"authority is the account authorized to trip or reset the circuit breaker.","type":"string"},"msg_type_urls":{"description":"msg_type_urls specifies a list of Msg type URLs to resume processing. If\nit is left empty all Msg processing for type URLs that the account is\nauthorized to trip will resume.","type":"array","items":{"type":"string"}}}},"cosmos.circuit.v1.MsgResetCircuitBreakerResponse":{"description":"MsgResetCircuitBreakerResponse defines the Msg/ResetCircuitBreaker response type.","type":"object","properties":{"success":{"type":"boolean"}}},"cosmos.circuit.v1.MsgTripCircuitBreaker":{"description":"MsgTripCircuitBreaker defines the Msg/TripCircuitBreaker request type.","type":"object","properties":{"authority":{"description":"authority is the account authorized to trip the circuit breaker.","type":"string"},"msg_type_urls":{"description":"msg_type_urls specifies a list of type URLs to immediately stop processing.\nIF IT IS LEFT EMPTY, ALL MSG PROCESSING WILL STOP IMMEDIATELY.\nThis value is validated against the authority's permissions and if the\nauthority does not have permissions to trip the specified msg type URLs\n(or all URLs), the operation will fail.","type":"array","items":{"type":"string"}}}},"cosmos.circuit.v1.MsgTripCircuitBreakerResponse":{"description":"MsgTripCircuitBreakerResponse defines the Msg/TripCircuitBreaker response type.","type":"object","properties":{"success":{"type":"boolean"}}},"cosmos.circuit.v1.Permissions":{"description":"Permissions are the permissions that an account has to trip\nor reset the circuit breaker.","type":"object","properties":{"level":{"description":"level is the level of permissions granted to this account.","$ref":"#/definitions/cosmos.circuit.v1.Permissions.Level"},"limit_type_urls":{"description":"limit_type_urls is used with LEVEL_SOME_MSGS to limit the lists of Msg type\nURLs that the account can trip. It is an error to use limit_type_urls with\na level other than LEVEL_SOME_MSGS.","type":"array","items":{"type":"string"}}}},"cosmos.circuit.v1.Permissions.Level":{"description":"Level is the permission level.\n\n - LEVEL_NONE_UNSPECIFIED: LEVEL_NONE_UNSPECIFIED indicates that the account will have no circuit\nbreaker permissions.\n - LEVEL_SOME_MSGS: LEVEL_SOME_MSGS indicates that the account will have permission to\ntrip or reset the circuit breaker for some Msg type URLs. If this level\nis chosen, a non-empty list of Msg type URLs must be provided in\nlimit_type_urls.\n - LEVEL_ALL_MSGS: LEVEL_ALL_MSGS indicates that the account can trip or reset the circuit\nbreaker for Msg's of all type URLs.\n - LEVEL_SUPER_ADMIN: LEVEL_SUPER_ADMIN indicates that the account can take all circuit breaker\nactions and can grant permissions to other accounts.","type":"string","default":"LEVEL_NONE_UNSPECIFIED","enum":["LEVEL_NONE_UNSPECIFIED","LEVEL_SOME_MSGS","LEVEL_ALL_MSGS","LEVEL_SUPER_ADMIN"]},"cosmos.consensus.v1.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","type":"object","properties":{"abci":{"title":"Since: cosmos-sdk 0.50","$ref":"#/definitions/tendermint.types.ABCIParams"},"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"block":{"description":"params defines the x/consensus parameters to update.\nVersionsParams is not included in this Msg because it is tracked\nsepararately in x/upgrade.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/tendermint.types.BlockParams"},"evidence":{"$ref":"#/definitions/tendermint.types.EvidenceParams"},"validator":{"$ref":"#/definitions/tendermint.types.ValidatorParams"}}},"cosmos.consensus.v1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"cosmos.consensus.v1.QueryParamsResponse":{"description":"QueryParamsResponse defines the response type for querying x/consensus parameters.","type":"object","properties":{"params":{"description":"params are the tendermint consensus params stored in the consensus module.\nPlease note that `params.version` is not populated in this response, it is\ntracked separately in the x/upgrade module.","$ref":"#/definitions/tendermint.types.ConsensusParams"}}},"cosmos.crisis.v1beta1.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"constant_fee":{"description":"constant_fee defines the x/crisis parameter.","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"cosmos.crisis.v1beta1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.\n\nSince: cosmos-sdk 0.47","type":"object"},"cosmos.crisis.v1beta1.MsgVerifyInvariant":{"description":"MsgVerifyInvariant represents a message to verify a particular invariance.","type":"object","properties":{"invariant_module_name":{"description":"name of the invariant module.","type":"string"},"invariant_route":{"description":"invariant_route is the msg's invariant route.","type":"string"},"sender":{"description":"sender is the account address of private key to send coins to fee collector account.","type":"string"}}},"cosmos.crisis.v1beta1.MsgVerifyInvariantResponse":{"description":"MsgVerifyInvariantResponse defines the Msg/VerifyInvariant response type.","type":"object"},"cosmos.crypto.multisig.v1beta1.CompactBitArray":{"description":"CompactBitArray is an implementation of a space efficient bit array.\nThis is used to ensure that the encoded data takes up a minimal amount of\nspace after proto encoding.\nThis is not thread safe, and is not intended for concurrent usage.","type":"object","properties":{"elems":{"type":"string","format":"byte"},"extra_bits_stored":{"type":"integer","format":"int64"}}},"cosmos.distribution.v1beta1.DelegationDelegatorReward":{"description":"DelegationDelegatorReward represents the properties\nof a delegator's delegation reward.","type":"object","properties":{"reward":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.DecCoin"}},"validator_address":{"type":"string"}}},"cosmos.distribution.v1beta1.MsgCommunityPoolSpend":{"description":"MsgCommunityPoolSpend defines a message for sending tokens from the community\npool to another account. This message is typically executed via a governance\nproposal with the governance module being the executing authority.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"amount":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"recipient":{"type":"string"}}},"cosmos.distribution.v1beta1.MsgCommunityPoolSpendResponse":{"description":"MsgCommunityPoolSpendResponse defines the response to executing a\nMsgCommunityPoolSpend message.\n\nSince: cosmos-sdk 0.47","type":"object"},"cosmos.distribution.v1beta1.MsgDepositValidatorRewardsPool":{"description":"DepositValidatorRewardsPool defines the request structure to provide\nadditional rewards to delegators from a specific validator.\n\nSince: cosmos-sdk 0.50","type":"object","properties":{"amount":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"depositor":{"type":"string"},"validator_address":{"type":"string"}}},"cosmos.distribution.v1beta1.MsgDepositValidatorRewardsPoolResponse":{"description":"MsgDepositValidatorRewardsPoolResponse defines the response to executing a\nMsgDepositValidatorRewardsPool message.\n\nSince: cosmos-sdk 0.50","type":"object"},"cosmos.distribution.v1beta1.MsgFundCommunityPool":{"description":"MsgFundCommunityPool allows an account to directly\nfund the community pool.","type":"object","properties":{"amount":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"depositor":{"type":"string"}}},"cosmos.distribution.v1beta1.MsgFundCommunityPoolResponse":{"description":"MsgFundCommunityPoolResponse defines the Msg/FundCommunityPool response type.","type":"object"},"cosmos.distribution.v1beta1.MsgSetWithdrawAddress":{"description":"MsgSetWithdrawAddress sets the withdraw address for\na delegator (or validator self-delegation).","type":"object","properties":{"delegator_address":{"type":"string"},"withdraw_address":{"type":"string"}}},"cosmos.distribution.v1beta1.MsgSetWithdrawAddressResponse":{"description":"MsgSetWithdrawAddressResponse defines the Msg/SetWithdrawAddress response\ntype.","type":"object"},"cosmos.distribution.v1beta1.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the x/distribution parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/cosmos.distribution.v1beta1.Params"}}},"cosmos.distribution.v1beta1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.\n\nSince: cosmos-sdk 0.47","type":"object"},"cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward":{"description":"MsgWithdrawDelegatorReward represents delegation withdrawal to a delegator\nfrom a single validator.","type":"object","properties":{"delegator_address":{"type":"string"},"validator_address":{"type":"string"}}},"cosmos.distribution.v1beta1.MsgWithdrawDelegatorRewardResponse":{"description":"MsgWithdrawDelegatorRewardResponse defines the Msg/WithdrawDelegatorReward\nresponse type.","type":"object","properties":{"amount":{"type":"array","title":"Since: cosmos-sdk 0.46","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"cosmos.distribution.v1beta1.MsgWithdrawValidatorCommission":{"description":"MsgWithdrawValidatorCommission withdraws the full commission to the validator\naddress.","type":"object","properties":{"validator_address":{"type":"string"}}},"cosmos.distribution.v1beta1.MsgWithdrawValidatorCommissionResponse":{"description":"MsgWithdrawValidatorCommissionResponse defines the\nMsg/WithdrawValidatorCommission response type.","type":"object","properties":{"amount":{"type":"array","title":"Since: cosmos-sdk 0.46","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"cosmos.distribution.v1beta1.Params":{"description":"Params defines the set of params for the distribution module.","type":"object","properties":{"base_proposer_reward":{"description":"Deprecated: The base_proposer_reward field is deprecated and is no longer used\nin the x/distribution module's reward mechanism.","type":"string"},"bonus_proposer_reward":{"description":"Deprecated: The bonus_proposer_reward field is deprecated and is no longer used\nin the x/distribution module's reward mechanism.","type":"string"},"community_tax":{"type":"string"},"withdraw_addr_enabled":{"type":"boolean"}}},"cosmos.distribution.v1beta1.QueryCommunityPoolResponse":{"description":"QueryCommunityPoolResponse is the response type for the Query/CommunityPool\nRPC method.","type":"object","properties":{"pool":{"description":"pool defines community pool's coins.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.DecCoin"}}}},"cosmos.distribution.v1beta1.QueryDelegationRewardsResponse":{"description":"QueryDelegationRewardsResponse is the response type for the\nQuery/DelegationRewards RPC method.","type":"object","properties":{"rewards":{"description":"rewards defines the rewards accrued by a delegation.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.DecCoin"}}}},"cosmos.distribution.v1beta1.QueryDelegationTotalRewardsResponse":{"description":"QueryDelegationTotalRewardsResponse is the response type for the\nQuery/DelegationTotalRewards RPC method.","type":"object","properties":{"rewards":{"description":"rewards defines all the rewards accrued by a delegator.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.distribution.v1beta1.DelegationDelegatorReward"}},"total":{"description":"total defines the sum of all the rewards.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.DecCoin"}}}},"cosmos.distribution.v1beta1.QueryDelegatorValidatorsResponse":{"description":"QueryDelegatorValidatorsResponse is the response type for the\nQuery/DelegatorValidators RPC method.","type":"object","properties":{"validators":{"description":"validators defines the validators a delegator is delegating for.","type":"array","items":{"type":"string"}}}},"cosmos.distribution.v1beta1.QueryDelegatorWithdrawAddressResponse":{"description":"QueryDelegatorWithdrawAddressResponse is the response type for the\nQuery/DelegatorWithdrawAddress RPC method.","type":"object","properties":{"withdraw_address":{"description":"withdraw_address defines the delegator address to query for.","type":"string"}}},"cosmos.distribution.v1beta1.QueryParamsResponse":{"description":"QueryParamsResponse is the response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params defines the parameters of the module.","$ref":"#/definitions/cosmos.distribution.v1beta1.Params"}}},"cosmos.distribution.v1beta1.QueryValidatorCommissionResponse":{"type":"object","title":"QueryValidatorCommissionResponse is the response type for the\nQuery/ValidatorCommission RPC method","properties":{"commission":{"description":"commission defines the commission the validator received.","$ref":"#/definitions/cosmos.distribution.v1beta1.ValidatorAccumulatedCommission"}}},"cosmos.distribution.v1beta1.QueryValidatorDistributionInfoResponse":{"description":"QueryValidatorDistributionInfoResponse is the response type for the Query/ValidatorDistributionInfo RPC method.","type":"object","properties":{"commission":{"description":"commission defines the commission the validator received.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.DecCoin"}},"operator_address":{"description":"operator_address defines the validator operator address.","type":"string"},"self_bond_rewards":{"description":"self_bond_rewards defines the self delegations rewards.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.DecCoin"}}}},"cosmos.distribution.v1beta1.QueryValidatorOutstandingRewardsResponse":{"description":"QueryValidatorOutstandingRewardsResponse is the response type for the\nQuery/ValidatorOutstandingRewards RPC method.","type":"object","properties":{"rewards":{"$ref":"#/definitions/cosmos.distribution.v1beta1.ValidatorOutstandingRewards"}}},"cosmos.distribution.v1beta1.QueryValidatorSlashesResponse":{"description":"QueryValidatorSlashesResponse is the response type for the\nQuery/ValidatorSlashes RPC method.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"slashes":{"description":"slashes defines the slashes the validator received.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.distribution.v1beta1.ValidatorSlashEvent"}}}},"cosmos.distribution.v1beta1.ValidatorAccumulatedCommission":{"description":"ValidatorAccumulatedCommission represents accumulated commission\nfor a validator kept as a running counter, can be withdrawn at any time.","type":"object","properties":{"commission":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.DecCoin"}}}},"cosmos.distribution.v1beta1.ValidatorOutstandingRewards":{"description":"ValidatorOutstandingRewards represents outstanding (un-withdrawn) rewards\nfor a validator inexpensive to track, allows simple sanity checks.","type":"object","properties":{"rewards":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.DecCoin"}}}},"cosmos.distribution.v1beta1.ValidatorSlashEvent":{"description":"ValidatorSlashEvent represents a validator slash event.\nHeight is implicit within the store key.\nThis is needed to calculate appropriate amount of staking tokens\nfor delegations which are withdrawn after a slash has occurred.","type":"object","properties":{"fraction":{"type":"string"},"validator_period":{"type":"string","format":"uint64"}}},"cosmos.evidence.v1beta1.MsgSubmitEvidence":{"description":"MsgSubmitEvidence represents a message that supports submitting arbitrary\nEvidence of misbehavior such as equivocation or counterfactual signing.","type":"object","properties":{"evidence":{"description":"evidence defines the evidence of misbehavior.","$ref":"#/definitions/google.protobuf.Any"},"submitter":{"description":"submitter is the signer account address of evidence.","type":"string"}}},"cosmos.evidence.v1beta1.MsgSubmitEvidenceResponse":{"description":"MsgSubmitEvidenceResponse defines the Msg/SubmitEvidence response type.","type":"object","properties":{"hash":{"description":"hash defines the hash of the evidence.","type":"string","format":"byte"}}},"cosmos.evidence.v1beta1.QueryAllEvidenceResponse":{"description":"QueryAllEvidenceResponse is the response type for the Query/AllEvidence RPC\nmethod.","type":"object","properties":{"evidence":{"description":"evidence returns all evidences.","type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.evidence.v1beta1.QueryEvidenceResponse":{"description":"QueryEvidenceResponse is the response type for the Query/Evidence RPC method.","type":"object","properties":{"evidence":{"description":"evidence returns the requested evidence.","$ref":"#/definitions/google.protobuf.Any"}}},"cosmos.feegrant.v1beta1.Grant":{"type":"object","title":"Grant is stored in the KVStore to record a grant with full context","properties":{"allowance":{"description":"allowance can be any of basic, periodic, allowed fee allowance.","$ref":"#/definitions/google.protobuf.Any"},"grantee":{"description":"grantee is the address of the user being granted an allowance of another user's funds.","type":"string"},"granter":{"description":"granter is the address of the user granting an allowance of their funds.","type":"string"}}},"cosmos.feegrant.v1beta1.MsgGrantAllowance":{"description":"MsgGrantAllowance adds permission for Grantee to spend up to Allowance\nof fees from the account of Granter.","type":"object","properties":{"allowance":{"description":"allowance can be any of basic, periodic, allowed fee allowance.","$ref":"#/definitions/google.protobuf.Any"},"grantee":{"description":"grantee is the address of the user being granted an allowance of another user's funds.","type":"string"},"granter":{"description":"granter is the address of the user granting an allowance of their funds.","type":"string"}}},"cosmos.feegrant.v1beta1.MsgGrantAllowanceResponse":{"description":"MsgGrantAllowanceResponse defines the Msg/GrantAllowanceResponse response type.","type":"object"},"cosmos.feegrant.v1beta1.MsgPruneAllowances":{"description":"MsgPruneAllowances prunes expired fee allowances.\n\nSince cosmos-sdk 0.50","type":"object","properties":{"pruner":{"description":"pruner is the address of the user pruning expired allowances.","type":"string"}}},"cosmos.feegrant.v1beta1.MsgPruneAllowancesResponse":{"description":"MsgPruneAllowancesResponse defines the Msg/PruneAllowancesResponse response type.\n\nSince cosmos-sdk 0.50","type":"object"},"cosmos.feegrant.v1beta1.MsgRevokeAllowance":{"description":"MsgRevokeAllowance removes any existing Allowance from Granter to Grantee.","type":"object","properties":{"grantee":{"description":"grantee is the address of the user being granted an allowance of another user's funds.","type":"string"},"granter":{"description":"granter is the address of the user granting an allowance of their funds.","type":"string"}}},"cosmos.feegrant.v1beta1.MsgRevokeAllowanceResponse":{"description":"MsgRevokeAllowanceResponse defines the Msg/RevokeAllowanceResponse response type.","type":"object"},"cosmos.feegrant.v1beta1.QueryAllowanceResponse":{"description":"QueryAllowanceResponse is the response type for the Query/Allowance RPC method.","type":"object","properties":{"allowance":{"description":"allowance is a allowance granted for grantee by granter.","$ref":"#/definitions/cosmos.feegrant.v1beta1.Grant"}}},"cosmos.feegrant.v1beta1.QueryAllowancesByGranterResponse":{"description":"QueryAllowancesByGranterResponse is the response type for the Query/AllowancesByGranter RPC method.\n\nSince: cosmos-sdk 0.46","type":"object","properties":{"allowances":{"description":"allowances that have been issued by the granter.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.feegrant.v1beta1.Grant"}},"pagination":{"description":"pagination defines an pagination for the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.feegrant.v1beta1.QueryAllowancesResponse":{"description":"QueryAllowancesResponse is the response type for the Query/Allowances RPC method.","type":"object","properties":{"allowances":{"description":"allowances are allowance's granted for grantee by granter.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.feegrant.v1beta1.Grant"}},"pagination":{"description":"pagination defines an pagination for the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.gov.v1.Deposit":{"description":"Deposit defines an amount deposited by an account address to an active\nproposal.","type":"object","properties":{"amount":{"description":"amount to be deposited by depositor.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"depositor":{"description":"depositor defines the deposit addresses from the proposals.","type":"string"},"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"}}},"cosmos.gov.v1.DepositParams":{"description":"DepositParams defines the params for deposits on governance proposals.","type":"object","properties":{"max_deposit_period":{"description":"Maximum period for Atom holders to deposit on a proposal. Initial value: 2\nmonths.","type":"string"},"min_deposit":{"description":"Minimum deposit for a proposal to enter voting period.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"cosmos.gov.v1.MsgCancelProposal":{"description":"MsgCancelProposal is the Msg/CancelProposal request type.\n\nSince: cosmos-sdk 0.50","type":"object","properties":{"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"},"proposer":{"description":"proposer is the account address of the proposer.","type":"string"}}},"cosmos.gov.v1.MsgCancelProposalResponse":{"description":"MsgCancelProposalResponse defines the response structure for executing a\nMsgCancelProposal message.\n\nSince: cosmos-sdk 0.50","type":"object","properties":{"canceled_height":{"description":"canceled_height defines the block height at which the proposal is canceled.","type":"string","format":"uint64"},"canceled_time":{"description":"canceled_time is the time when proposal is canceled.","type":"string","format":"date-time"},"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"}}},"cosmos.gov.v1.MsgDeposit":{"description":"MsgDeposit defines a message to submit a deposit to an existing proposal.","type":"object","properties":{"amount":{"description":"amount to be deposited by depositor.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"depositor":{"description":"depositor defines the deposit addresses from the proposals.","type":"string"},"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"}}},"cosmos.gov.v1.MsgDepositResponse":{"description":"MsgDepositResponse defines the Msg/Deposit response type.","type":"object"},"cosmos.gov.v1.MsgExecLegacyContent":{"description":"MsgExecLegacyContent is used to wrap the legacy content field into a message.\nThis ensures backwards compatibility with v1beta1.MsgSubmitProposal.","type":"object","properties":{"authority":{"description":"authority must be the gov module address.","type":"string"},"content":{"description":"content is the proposal's content.","$ref":"#/definitions/google.protobuf.Any"}}},"cosmos.gov.v1.MsgExecLegacyContentResponse":{"description":"MsgExecLegacyContentResponse defines the Msg/ExecLegacyContent response type.","type":"object"},"cosmos.gov.v1.MsgSubmitProposal":{"description":"MsgSubmitProposal defines an sdk.Msg type that supports submitting arbitrary\nproposal Content.","type":"object","properties":{"expedited":{"description":"Since: cosmos-sdk 0.50","type":"boolean","title":"expedited defines if the proposal is expedited or not"},"initial_deposit":{"description":"initial_deposit is the deposit value that must be paid at proposal submission.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"messages":{"description":"messages are the arbitrary messages to be executed if proposal passes.","type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}},"metadata":{"description":"metadata is any arbitrary metadata attached to the proposal.","type":"string"},"proposer":{"description":"proposer is the account address of the proposer.","type":"string"},"summary":{"description":"Since: cosmos-sdk 0.47","type":"string","title":"summary is the summary of the proposal"},"title":{"description":"title is the title of the proposal.\n\nSince: cosmos-sdk 0.47","type":"string"}}},"cosmos.gov.v1.MsgSubmitProposalResponse":{"description":"MsgSubmitProposalResponse defines the Msg/SubmitProposal response type.","type":"object","properties":{"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"}}},"cosmos.gov.v1.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the x/gov parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/cosmos.gov.v1.Params"}}},"cosmos.gov.v1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.\n\nSince: cosmos-sdk 0.47","type":"object"},"cosmos.gov.v1.MsgVote":{"description":"MsgVote defines a message to cast a vote.","type":"object","properties":{"metadata":{"description":"metadata is any arbitrary metadata attached to the Vote.","type":"string"},"option":{"description":"option defines the vote option.","$ref":"#/definitions/cosmos.gov.v1.VoteOption"},"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"},"voter":{"description":"voter is the voter address for the proposal.","type":"string"}}},"cosmos.gov.v1.MsgVoteResponse":{"description":"MsgVoteResponse defines the Msg/Vote response type.","type":"object"},"cosmos.gov.v1.MsgVoteWeighted":{"description":"MsgVoteWeighted defines a message to cast a vote.","type":"object","properties":{"metadata":{"description":"metadata is any arbitrary metadata attached to the VoteWeighted.","type":"string"},"options":{"description":"options defines the weighted vote options.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.gov.v1.WeightedVoteOption"}},"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"},"voter":{"description":"voter is the voter address for the proposal.","type":"string"}}},"cosmos.gov.v1.MsgVoteWeightedResponse":{"description":"MsgVoteWeightedResponse defines the Msg/VoteWeighted response type.","type":"object"},"cosmos.gov.v1.Params":{"description":"Params defines the parameters for the x/gov module.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"burn_proposal_deposit_prevote":{"type":"boolean","title":"burn deposits if the proposal does not enter voting period"},"burn_vote_quorum":{"type":"boolean","title":"burn deposits if a proposal does not meet quorum"},"burn_vote_veto":{"type":"boolean","title":"burn deposits if quorum with vote type no_veto is met"},"expedited_min_deposit":{"description":"Minimum expedited deposit for a proposal to enter voting period.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"expedited_threshold":{"description":"Minimum proportion of Yes votes for proposal to pass. Default value: 0.67.\n\nSince: cosmos-sdk 0.50","type":"string"},"expedited_voting_period":{"description":"Duration of the voting period of an expedited proposal.\n\nSince: cosmos-sdk 0.50","type":"string"},"max_deposit_period":{"description":"Maximum period for Atom holders to deposit on a proposal. Initial value: 2\nmonths.","type":"string"},"min_deposit":{"description":"Minimum deposit for a proposal to enter voting period.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"min_deposit_ratio":{"description":"The ratio representing the proportion of the deposit value minimum that must be met when making a deposit.\nDefault value: 0.01. Meaning that for a chain with a min_deposit of 100stake, a deposit of 1stake would be\nrequired.\n\nSince: cosmos-sdk 0.50","type":"string"},"min_initial_deposit_ratio":{"description":"The ratio representing the proportion of the deposit value that must be paid at proposal submission.","type":"string"},"proposal_cancel_dest":{"description":"The address which will receive (proposal_cancel_ratio * deposit) proposal deposits.\nIf empty, the (proposal_cancel_ratio * deposit) proposal deposits will be burned.\n\nSince: cosmos-sdk 0.50","type":"string"},"proposal_cancel_ratio":{"description":"The cancel ratio which will not be returned back to the depositors when a proposal is cancelled.\n\nSince: cosmos-sdk 0.50","type":"string"},"quorum":{"description":"Minimum percentage of total stake needed to vote for a result to be\n considered valid.","type":"string"},"threshold":{"description":"Minimum proportion of Yes votes for proposal to pass. Default value: 0.5.","type":"string"},"veto_threshold":{"description":"Minimum value of Veto votes to Total votes ratio for proposal to be\n vetoed. Default value: 1/3.","type":"string"},"voting_period":{"description":"Duration of the voting period.","type":"string"}}},"cosmos.gov.v1.Proposal":{"description":"Proposal defines the core field members of a governance proposal.","type":"object","properties":{"deposit_end_time":{"description":"deposit_end_time is the end time for deposition.","type":"string","format":"date-time"},"expedited":{"description":"Since: cosmos-sdk 0.50","type":"boolean","title":"expedited defines if the proposal is expedited"},"failed_reason":{"description":"Since: cosmos-sdk 0.50","type":"string","title":"failed_reason defines the reason why the proposal failed"},"final_tally_result":{"description":"final_tally_result is the final tally result of the proposal. When\nquerying a proposal via gRPC, this field is not populated until the\nproposal's voting period has ended.","$ref":"#/definitions/cosmos.gov.v1.TallyResult"},"id":{"description":"id defines the unique id of the proposal.","type":"string","format":"uint64"},"messages":{"description":"messages are the arbitrary messages to be executed if the proposal passes.","type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}},"metadata":{"type":"string","title":"metadata is any arbitrary metadata attached to the proposal.\nthe recommended format of the metadata is to be found here:\nhttps://docs.cosmos.network/v0.47/modules/gov#proposal-3"},"proposer":{"description":"Since: cosmos-sdk 0.47","type":"string","title":"proposer is the address of the proposal sumbitter"},"status":{"description":"status defines the proposal status.","$ref":"#/definitions/cosmos.gov.v1.ProposalStatus"},"submit_time":{"description":"submit_time is the time of proposal submission.","type":"string","format":"date-time"},"summary":{"description":"Since: cosmos-sdk 0.47","type":"string","title":"summary is a short summary of the proposal"},"title":{"description":"Since: cosmos-sdk 0.47","type":"string","title":"title is the title of the proposal"},"total_deposit":{"description":"total_deposit is the total deposit on the proposal.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"voting_end_time":{"description":"voting_end_time is the end time of voting on a proposal.","type":"string","format":"date-time"},"voting_start_time":{"description":"voting_start_time is the starting time to vote on a proposal.","type":"string","format":"date-time"}}},"cosmos.gov.v1.ProposalStatus":{"description":"ProposalStatus enumerates the valid statuses of a proposal.\n\n - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status.\n - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit\nperiod.\n - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting\nperiod.\n - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has\npassed.\n - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has\nbeen rejected.\n - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has\nfailed.","type":"string","default":"PROPOSAL_STATUS_UNSPECIFIED","enum":["PROPOSAL_STATUS_UNSPECIFIED","PROPOSAL_STATUS_DEPOSIT_PERIOD","PROPOSAL_STATUS_VOTING_PERIOD","PROPOSAL_STATUS_PASSED","PROPOSAL_STATUS_REJECTED","PROPOSAL_STATUS_FAILED"]},"cosmos.gov.v1.QueryConstitutionResponse":{"type":"object","title":"QueryConstitutionResponse is the response type for the Query/Constitution RPC method","properties":{"constitution":{"type":"string"}}},"cosmos.gov.v1.QueryDepositResponse":{"description":"QueryDepositResponse is the response type for the Query/Deposit RPC method.","type":"object","properties":{"deposit":{"description":"deposit defines the requested deposit.","$ref":"#/definitions/cosmos.gov.v1.Deposit"}}},"cosmos.gov.v1.QueryDepositsResponse":{"description":"QueryDepositsResponse is the response type for the Query/Deposits RPC method.","type":"object","properties":{"deposits":{"description":"deposits defines the requested deposits.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.gov.v1.Deposit"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.gov.v1.QueryParamsResponse":{"description":"QueryParamsResponse is the response type for the Query/Params RPC method.","type":"object","properties":{"deposit_params":{"description":"Deprecated: Prefer to use `params` instead.\ndeposit_params defines the parameters related to deposit.","$ref":"#/definitions/cosmos.gov.v1.DepositParams"},"params":{"description":"params defines all the paramaters of x/gov module.\n\nSince: cosmos-sdk 0.47","$ref":"#/definitions/cosmos.gov.v1.Params"},"tally_params":{"description":"Deprecated: Prefer to use `params` instead.\ntally_params defines the parameters related to tally.","$ref":"#/definitions/cosmos.gov.v1.TallyParams"},"voting_params":{"description":"Deprecated: Prefer to use `params` instead.\nvoting_params defines the parameters related to voting.","$ref":"#/definitions/cosmos.gov.v1.VotingParams"}}},"cosmos.gov.v1.QueryProposalResponse":{"description":"QueryProposalResponse is the response type for the Query/Proposal RPC method.","type":"object","properties":{"proposal":{"description":"proposal is the requested governance proposal.","$ref":"#/definitions/cosmos.gov.v1.Proposal"}}},"cosmos.gov.v1.QueryProposalsResponse":{"description":"QueryProposalsResponse is the response type for the Query/Proposals RPC\nmethod.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"proposals":{"description":"proposals defines all the requested governance proposals.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.gov.v1.Proposal"}}}},"cosmos.gov.v1.QueryTallyResultResponse":{"description":"QueryTallyResultResponse is the response type for the Query/Tally RPC method.","type":"object","properties":{"tally":{"description":"tally defines the requested tally.","$ref":"#/definitions/cosmos.gov.v1.TallyResult"}}},"cosmos.gov.v1.QueryVoteResponse":{"description":"QueryVoteResponse is the response type for the Query/Vote RPC method.","type":"object","properties":{"vote":{"description":"vote defines the queried vote.","$ref":"#/definitions/cosmos.gov.v1.Vote"}}},"cosmos.gov.v1.QueryVotesResponse":{"description":"QueryVotesResponse is the response type for the Query/Votes RPC method.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"votes":{"description":"votes defines the queried votes.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.gov.v1.Vote"}}}},"cosmos.gov.v1.TallyParams":{"description":"TallyParams defines the params for tallying votes on governance proposals.","type":"object","properties":{"quorum":{"description":"Minimum percentage of total stake needed to vote for a result to be\nconsidered valid.","type":"string"},"threshold":{"description":"Minimum proportion of Yes votes for proposal to pass. Default value: 0.5.","type":"string"},"veto_threshold":{"description":"Minimum value of Veto votes to Total votes ratio for proposal to be\nvetoed. Default value: 1/3.","type":"string"}}},"cosmos.gov.v1.TallyResult":{"description":"TallyResult defines a standard tally for a governance proposal.","type":"object","properties":{"abstain_count":{"description":"abstain_count is the number of abstain votes on a proposal.","type":"string"},"no_count":{"description":"no_count is the number of no votes on a proposal.","type":"string"},"no_with_veto_count":{"description":"no_with_veto_count is the number of no with veto votes on a proposal.","type":"string"},"yes_count":{"description":"yes_count is the number of yes votes on a proposal.","type":"string"}}},"cosmos.gov.v1.Vote":{"description":"Vote defines a vote on a governance proposal.\nA Vote consists of a proposal ID, the voter, and the vote option.","type":"object","properties":{"metadata":{"type":"string","title":"metadata is any arbitrary metadata attached to the vote.\nthe recommended format of the metadata is to be found here: https://docs.cosmos.network/v0.47/modules/gov#vote-5"},"options":{"description":"options is the weighted vote options.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.gov.v1.WeightedVoteOption"}},"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"},"voter":{"description":"voter is the voter address of the proposal.","type":"string"}}},"cosmos.gov.v1.VoteOption":{"description":"VoteOption enumerates the valid vote options for a given governance proposal.\n\n - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option.\n - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option.\n - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option.\n - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option.\n - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option.","type":"string","default":"VOTE_OPTION_UNSPECIFIED","enum":["VOTE_OPTION_UNSPECIFIED","VOTE_OPTION_YES","VOTE_OPTION_ABSTAIN","VOTE_OPTION_NO","VOTE_OPTION_NO_WITH_VETO"]},"cosmos.gov.v1.VotingParams":{"description":"VotingParams defines the params for voting on governance proposals.","type":"object","properties":{"voting_period":{"description":"Duration of the voting period.","type":"string"}}},"cosmos.gov.v1.WeightedVoteOption":{"description":"WeightedVoteOption defines a unit of vote for vote split.","type":"object","properties":{"option":{"description":"option defines the valid vote options, it must not contain duplicate vote options.","$ref":"#/definitions/cosmos.gov.v1.VoteOption"},"weight":{"description":"weight is the vote weight associated with the vote option.","type":"string"}}},"cosmos.gov.v1beta1.Deposit":{"description":"Deposit defines an amount deposited by an account address to an active\nproposal.","type":"object","properties":{"amount":{"description":"amount to be deposited by depositor.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"depositor":{"description":"depositor defines the deposit addresses from the proposals.","type":"string"},"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"}}},"cosmos.gov.v1beta1.DepositParams":{"description":"DepositParams defines the params for deposits on governance proposals.","type":"object","properties":{"max_deposit_period":{"description":"Maximum period for Atom holders to deposit on a proposal. Initial value: 2\nmonths.","type":"string"},"min_deposit":{"description":"Minimum deposit for a proposal to enter voting period.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"cosmos.gov.v1beta1.MsgDeposit":{"description":"MsgDeposit defines a message to submit a deposit to an existing proposal.","type":"object","properties":{"amount":{"description":"amount to be deposited by depositor.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"depositor":{"description":"depositor defines the deposit addresses from the proposals.","type":"string"},"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"}}},"cosmos.gov.v1beta1.MsgDepositResponse":{"description":"MsgDepositResponse defines the Msg/Deposit response type.","type":"object"},"cosmos.gov.v1beta1.MsgSubmitProposal":{"description":"MsgSubmitProposal defines an sdk.Msg type that supports submitting arbitrary\nproposal Content.","type":"object","properties":{"content":{"description":"content is the proposal's content.","$ref":"#/definitions/google.protobuf.Any"},"initial_deposit":{"description":"initial_deposit is the deposit value that must be paid at proposal submission.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"proposer":{"description":"proposer is the account address of the proposer.","type":"string"}}},"cosmos.gov.v1beta1.MsgSubmitProposalResponse":{"description":"MsgSubmitProposalResponse defines the Msg/SubmitProposal response type.","type":"object","properties":{"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"}}},"cosmos.gov.v1beta1.MsgVote":{"description":"MsgVote defines a message to cast a vote.","type":"object","properties":{"option":{"description":"option defines the vote option.","$ref":"#/definitions/cosmos.gov.v1beta1.VoteOption"},"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"},"voter":{"description":"voter is the voter address for the proposal.","type":"string"}}},"cosmos.gov.v1beta1.MsgVoteResponse":{"description":"MsgVoteResponse defines the Msg/Vote response type.","type":"object"},"cosmos.gov.v1beta1.MsgVoteWeighted":{"description":"MsgVoteWeighted defines a message to cast a vote.\n\nSince: cosmos-sdk 0.43","type":"object","properties":{"options":{"description":"options defines the weighted vote options.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.gov.v1beta1.WeightedVoteOption"}},"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"},"voter":{"description":"voter is the voter address for the proposal.","type":"string"}}},"cosmos.gov.v1beta1.MsgVoteWeightedResponse":{"description":"MsgVoteWeightedResponse defines the Msg/VoteWeighted response type.\n\nSince: cosmos-sdk 0.43","type":"object"},"cosmos.gov.v1beta1.Proposal":{"description":"Proposal defines the core field members of a governance proposal.","type":"object","properties":{"content":{"description":"content is the proposal's content.","$ref":"#/definitions/google.protobuf.Any"},"deposit_end_time":{"description":"deposit_end_time is the end time for deposition.","type":"string","format":"date-time"},"final_tally_result":{"description":"final_tally_result is the final tally result of the proposal. When\nquerying a proposal via gRPC, this field is not populated until the\nproposal's voting period has ended.","$ref":"#/definitions/cosmos.gov.v1beta1.TallyResult"},"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"},"status":{"description":"status defines the proposal status.","$ref":"#/definitions/cosmos.gov.v1beta1.ProposalStatus"},"submit_time":{"description":"submit_time is the time of proposal submission.","type":"string","format":"date-time"},"total_deposit":{"description":"total_deposit is the total deposit on the proposal.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"voting_end_time":{"description":"voting_end_time is the end time of voting on a proposal.","type":"string","format":"date-time"},"voting_start_time":{"description":"voting_start_time is the starting time to vote on a proposal.","type":"string","format":"date-time"}}},"cosmos.gov.v1beta1.ProposalStatus":{"description":"ProposalStatus enumerates the valid statuses of a proposal.\n\n - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status.\n - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit\nperiod.\n - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting\nperiod.\n - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has\npassed.\n - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has\nbeen rejected.\n - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has\nfailed.","type":"string","default":"PROPOSAL_STATUS_UNSPECIFIED","enum":["PROPOSAL_STATUS_UNSPECIFIED","PROPOSAL_STATUS_DEPOSIT_PERIOD","PROPOSAL_STATUS_VOTING_PERIOD","PROPOSAL_STATUS_PASSED","PROPOSAL_STATUS_REJECTED","PROPOSAL_STATUS_FAILED"]},"cosmos.gov.v1beta1.QueryDepositResponse":{"description":"QueryDepositResponse is the response type for the Query/Deposit RPC method.","type":"object","properties":{"deposit":{"description":"deposit defines the requested deposit.","$ref":"#/definitions/cosmos.gov.v1beta1.Deposit"}}},"cosmos.gov.v1beta1.QueryDepositsResponse":{"description":"QueryDepositsResponse is the response type for the Query/Deposits RPC method.","type":"object","properties":{"deposits":{"description":"deposits defines the requested deposits.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.gov.v1beta1.Deposit"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.gov.v1beta1.QueryParamsResponse":{"description":"QueryParamsResponse is the response type for the Query/Params RPC method.","type":"object","properties":{"deposit_params":{"description":"deposit_params defines the parameters related to deposit.","$ref":"#/definitions/cosmos.gov.v1beta1.DepositParams"},"tally_params":{"description":"tally_params defines the parameters related to tally.","$ref":"#/definitions/cosmos.gov.v1beta1.TallyParams"},"voting_params":{"description":"voting_params defines the parameters related to voting.","$ref":"#/definitions/cosmos.gov.v1beta1.VotingParams"}}},"cosmos.gov.v1beta1.QueryProposalResponse":{"description":"QueryProposalResponse is the response type for the Query/Proposal RPC method.","type":"object","properties":{"proposal":{"$ref":"#/definitions/cosmos.gov.v1beta1.Proposal"}}},"cosmos.gov.v1beta1.QueryProposalsResponse":{"description":"QueryProposalsResponse is the response type for the Query/Proposals RPC\nmethod.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"proposals":{"description":"proposals defines all the requested governance proposals.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.gov.v1beta1.Proposal"}}}},"cosmos.gov.v1beta1.QueryTallyResultResponse":{"description":"QueryTallyResultResponse is the response type for the Query/Tally RPC method.","type":"object","properties":{"tally":{"description":"tally defines the requested tally.","$ref":"#/definitions/cosmos.gov.v1beta1.TallyResult"}}},"cosmos.gov.v1beta1.QueryVoteResponse":{"description":"QueryVoteResponse is the response type for the Query/Vote RPC method.","type":"object","properties":{"vote":{"description":"vote defines the queried vote.","$ref":"#/definitions/cosmos.gov.v1beta1.Vote"}}},"cosmos.gov.v1beta1.QueryVotesResponse":{"description":"QueryVotesResponse is the response type for the Query/Votes RPC method.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"votes":{"description":"votes defines the queried votes.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.gov.v1beta1.Vote"}}}},"cosmos.gov.v1beta1.TallyParams":{"description":"TallyParams defines the params for tallying votes on governance proposals.","type":"object","properties":{"quorum":{"description":"Minimum percentage of total stake needed to vote for a result to be\nconsidered valid.","type":"string","format":"byte"},"threshold":{"description":"Minimum proportion of Yes votes for proposal to pass. Default value: 0.5.","type":"string","format":"byte"},"veto_threshold":{"description":"Minimum value of Veto votes to Total votes ratio for proposal to be\nvetoed. Default value: 1/3.","type":"string","format":"byte"}}},"cosmos.gov.v1beta1.TallyResult":{"description":"TallyResult defines a standard tally for a governance proposal.","type":"object","properties":{"abstain":{"description":"abstain is the number of abstain votes on a proposal.","type":"string"},"no":{"description":"no is the number of no votes on a proposal.","type":"string"},"no_with_veto":{"description":"no_with_veto is the number of no with veto votes on a proposal.","type":"string"},"yes":{"description":"yes is the number of yes votes on a proposal.","type":"string"}}},"cosmos.gov.v1beta1.Vote":{"description":"Vote defines a vote on a governance proposal.\nA Vote consists of a proposal ID, the voter, and the vote option.","type":"object","properties":{"option":{"description":"Deprecated: Prefer to use `options` instead. This field is set in queries\nif and only if `len(options) == 1` and that option has weight 1. In all\nother cases, this field will default to VOTE_OPTION_UNSPECIFIED.","$ref":"#/definitions/cosmos.gov.v1beta1.VoteOption"},"options":{"description":"options is the weighted vote options.\n\nSince: cosmos-sdk 0.43","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.gov.v1beta1.WeightedVoteOption"}},"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"},"voter":{"description":"voter is the voter address of the proposal.","type":"string"}}},"cosmos.gov.v1beta1.VoteOption":{"description":"VoteOption enumerates the valid vote options for a given governance proposal.\n\n - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option.\n - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option.\n - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option.\n - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option.\n - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option.","type":"string","default":"VOTE_OPTION_UNSPECIFIED","enum":["VOTE_OPTION_UNSPECIFIED","VOTE_OPTION_YES","VOTE_OPTION_ABSTAIN","VOTE_OPTION_NO","VOTE_OPTION_NO_WITH_VETO"]},"cosmos.gov.v1beta1.VotingParams":{"description":"VotingParams defines the params for voting on governance proposals.","type":"object","properties":{"voting_period":{"description":"Duration of the voting period.","type":"string"}}},"cosmos.gov.v1beta1.WeightedVoteOption":{"description":"WeightedVoteOption defines a unit of vote for vote split.\n\nSince: cosmos-sdk 0.43","type":"object","properties":{"option":{"description":"option defines the valid vote options, it must not contain duplicate vote options.","$ref":"#/definitions/cosmos.gov.v1beta1.VoteOption"},"weight":{"description":"weight is the vote weight associated with the vote option.","type":"string"}}},"cosmos.group.v1.Exec":{"description":"Exec defines modes of execution of a proposal on creation or on new vote.\n\n - EXEC_UNSPECIFIED: An empty value means that there should be a separate\nMsgExec request for the proposal to execute.\n - EXEC_TRY: Try to execute the proposal immediately.\nIf the proposal is not allowed per the DecisionPolicy,\nthe proposal will still be open and could\nbe executed at a later point.","type":"string","default":"EXEC_UNSPECIFIED","enum":["EXEC_UNSPECIFIED","EXEC_TRY"]},"cosmos.group.v1.GroupInfo":{"description":"GroupInfo represents the high-level on-chain information for a group.","type":"object","properties":{"admin":{"description":"admin is the account address of the group's admin.","type":"string"},"created_at":{"description":"created_at is a timestamp specifying when a group was created.","type":"string","format":"date-time"},"id":{"description":"id is the unique ID of the group.","type":"string","format":"uint64"},"metadata":{"type":"string","title":"metadata is any arbitrary metadata to attached to the group.\nthe recommended format of the metadata is to be found here: https://docs.cosmos.network/v0.47/modules/group#group-1"},"total_weight":{"description":"total_weight is the sum of the group members' weights.","type":"string"},"version":{"type":"string","format":"uint64","title":"version is used to track changes to a group's membership structure that\nwould break existing proposals. Whenever any members weight is changed,\nor any member is added or removed this version is incremented and will\ncause proposals based on older versions of this group to fail"}}},"cosmos.group.v1.GroupMember":{"description":"GroupMember represents the relationship between a group and a member.","type":"object","properties":{"group_id":{"description":"group_id is the unique ID of the group.","type":"string","format":"uint64"},"member":{"description":"member is the member data.","$ref":"#/definitions/cosmos.group.v1.Member"}}},"cosmos.group.v1.GroupPolicyInfo":{"description":"GroupPolicyInfo represents the high-level on-chain information for a group policy.","type":"object","properties":{"address":{"description":"address is the account address of group policy.","type":"string"},"admin":{"description":"admin is the account address of the group admin.","type":"string"},"created_at":{"description":"created_at is a timestamp specifying when a group policy was created.","type":"string","format":"date-time"},"decision_policy":{"description":"decision_policy specifies the group policy's decision policy.","$ref":"#/definitions/google.protobuf.Any"},"group_id":{"description":"group_id is the unique ID of the group.","type":"string","format":"uint64"},"metadata":{"type":"string","title":"metadata is any arbitrary metadata attached to the group policy.\nthe recommended format of the metadata is to be found here:\nhttps://docs.cosmos.network/v0.47/modules/group#decision-policy-1"},"version":{"description":"version is used to track changes to a group's GroupPolicyInfo structure that\nwould create a different result on a running proposal.","type":"string","format":"uint64"}}},"cosmos.group.v1.Member":{"description":"Member represents a group member with an account address,\nnon-zero weight, metadata and added_at timestamp.","type":"object","properties":{"added_at":{"description":"added_at is a timestamp specifying when a member was added.","type":"string","format":"date-time"},"address":{"description":"address is the member's account address.","type":"string"},"metadata":{"description":"metadata is any arbitrary metadata attached to the member.","type":"string"},"weight":{"description":"weight is the member's voting weight that should be greater than 0.","type":"string"}}},"cosmos.group.v1.MemberRequest":{"description":"MemberRequest represents a group member to be used in Msg server requests.\nContrary to `Member`, it doesn't have any `added_at` field\nsince this field cannot be set as part of requests.","type":"object","properties":{"address":{"description":"address is the member's account address.","type":"string"},"metadata":{"description":"metadata is any arbitrary metadata attached to the member.","type":"string"},"weight":{"description":"weight is the member's voting weight that should be greater than 0.","type":"string"}}},"cosmos.group.v1.MsgCreateGroup":{"description":"MsgCreateGroup is the Msg/CreateGroup request type.","type":"object","properties":{"admin":{"description":"admin is the account address of the group admin.","type":"string"},"members":{"description":"members defines the group members.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.group.v1.MemberRequest"}},"metadata":{"description":"metadata is any arbitrary metadata to attached to the group.","type":"string"}}},"cosmos.group.v1.MsgCreateGroupPolicy":{"description":"MsgCreateGroupPolicy is the Msg/CreateGroupPolicy request type.","type":"object","properties":{"admin":{"description":"admin is the account address of the group admin.","type":"string"},"decision_policy":{"description":"decision_policy specifies the group policy's decision policy.","$ref":"#/definitions/google.protobuf.Any"},"group_id":{"description":"group_id is the unique ID of the group.","type":"string","format":"uint64"},"metadata":{"description":"metadata is any arbitrary metadata attached to the group policy.","type":"string"}}},"cosmos.group.v1.MsgCreateGroupPolicyResponse":{"description":"MsgCreateGroupPolicyResponse is the Msg/CreateGroupPolicy response type.","type":"object","properties":{"address":{"description":"address is the account address of the newly created group policy.","type":"string"}}},"cosmos.group.v1.MsgCreateGroupResponse":{"description":"MsgCreateGroupResponse is the Msg/CreateGroup response type.","type":"object","properties":{"group_id":{"description":"group_id is the unique ID of the newly created group.","type":"string","format":"uint64"}}},"cosmos.group.v1.MsgCreateGroupWithPolicy":{"description":"MsgCreateGroupWithPolicy is the Msg/CreateGroupWithPolicy request type.","type":"object","properties":{"admin":{"description":"admin is the account address of the group and group policy admin.","type":"string"},"decision_policy":{"description":"decision_policy specifies the group policy's decision policy.","$ref":"#/definitions/google.protobuf.Any"},"group_metadata":{"description":"group_metadata is any arbitrary metadata attached to the group.","type":"string"},"group_policy_as_admin":{"description":"group_policy_as_admin is a boolean field, if set to true, the group policy account address will be used as group\nand group policy admin.","type":"boolean"},"group_policy_metadata":{"description":"group_policy_metadata is any arbitrary metadata attached to the group policy.","type":"string"},"members":{"description":"members defines the group members.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.group.v1.MemberRequest"}}}},"cosmos.group.v1.MsgCreateGroupWithPolicyResponse":{"description":"MsgCreateGroupWithPolicyResponse is the Msg/CreateGroupWithPolicy response type.","type":"object","properties":{"group_id":{"description":"group_id is the unique ID of the newly created group with policy.","type":"string","format":"uint64"},"group_policy_address":{"description":"group_policy_address is the account address of the newly created group policy.","type":"string"}}},"cosmos.group.v1.MsgExec":{"description":"MsgExec is the Msg/Exec request type.","type":"object","properties":{"executor":{"description":"executor is the account address used to execute the proposal.","type":"string"},"proposal_id":{"description":"proposal is the unique ID of the proposal.","type":"string","format":"uint64"}}},"cosmos.group.v1.MsgExecResponse":{"description":"MsgExecResponse is the Msg/Exec request type.","type":"object","properties":{"result":{"description":"result is the final result of the proposal execution.","$ref":"#/definitions/cosmos.group.v1.ProposalExecutorResult"}}},"cosmos.group.v1.MsgLeaveGroup":{"description":"MsgLeaveGroup is the Msg/LeaveGroup request type.","type":"object","properties":{"address":{"description":"address is the account address of the group member.","type":"string"},"group_id":{"description":"group_id is the unique ID of the group.","type":"string","format":"uint64"}}},"cosmos.group.v1.MsgLeaveGroupResponse":{"description":"MsgLeaveGroupResponse is the Msg/LeaveGroup response type.","type":"object"},"cosmos.group.v1.MsgSubmitProposal":{"description":"MsgSubmitProposal is the Msg/SubmitProposal request type.","type":"object","properties":{"exec":{"description":"exec defines the mode of execution of the proposal,\nwhether it should be executed immediately on creation or not.\nIf so, proposers signatures are considered as Yes votes.","$ref":"#/definitions/cosmos.group.v1.Exec"},"group_policy_address":{"description":"group_policy_address is the account address of group policy.","type":"string"},"messages":{"description":"messages is a list of `sdk.Msg`s that will be executed if the proposal passes.","type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}},"metadata":{"description":"metadata is any arbitrary metadata attached to the proposal.","type":"string"},"proposers":{"description":"proposers are the account addresses of the proposers.\nProposers signatures will be counted as yes votes.","type":"array","items":{"type":"string"}},"summary":{"description":"summary is the summary of the proposal.\n\nSince: cosmos-sdk 0.47","type":"string"},"title":{"description":"title is the title of the proposal.\n\nSince: cosmos-sdk 0.47","type":"string"}}},"cosmos.group.v1.MsgSubmitProposalResponse":{"description":"MsgSubmitProposalResponse is the Msg/SubmitProposal response type.","type":"object","properties":{"proposal_id":{"description":"proposal is the unique ID of the proposal.","type":"string","format":"uint64"}}},"cosmos.group.v1.MsgUpdateGroupAdmin":{"description":"MsgUpdateGroupAdmin is the Msg/UpdateGroupAdmin request type.","type":"object","properties":{"admin":{"description":"admin is the current account address of the group admin.","type":"string"},"group_id":{"description":"group_id is the unique ID of the group.","type":"string","format":"uint64"},"new_admin":{"description":"new_admin is the group new admin account address.","type":"string"}}},"cosmos.group.v1.MsgUpdateGroupAdminResponse":{"description":"MsgUpdateGroupAdminResponse is the Msg/UpdateGroupAdmin response type.","type":"object"},"cosmos.group.v1.MsgUpdateGroupMembers":{"description":"MsgUpdateGroupMembers is the Msg/UpdateGroupMembers request type.","type":"object","properties":{"admin":{"description":"admin is the account address of the group admin.","type":"string"},"group_id":{"description":"group_id is the unique ID of the group.","type":"string","format":"uint64"},"member_updates":{"description":"member_updates is the list of members to update,\nset weight to 0 to remove a member.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.group.v1.MemberRequest"}}}},"cosmos.group.v1.MsgUpdateGroupMembersResponse":{"description":"MsgUpdateGroupMembersResponse is the Msg/UpdateGroupMembers response type.","type":"object"},"cosmos.group.v1.MsgUpdateGroupMetadata":{"description":"MsgUpdateGroupMetadata is the Msg/UpdateGroupMetadata request type.","type":"object","properties":{"admin":{"description":"admin is the account address of the group admin.","type":"string"},"group_id":{"description":"group_id is the unique ID of the group.","type":"string","format":"uint64"},"metadata":{"description":"metadata is the updated group's metadata.","type":"string"}}},"cosmos.group.v1.MsgUpdateGroupMetadataResponse":{"description":"MsgUpdateGroupMetadataResponse is the Msg/UpdateGroupMetadata response type.","type":"object"},"cosmos.group.v1.MsgUpdateGroupPolicyAdmin":{"description":"MsgUpdateGroupPolicyAdmin is the Msg/UpdateGroupPolicyAdmin request type.","type":"object","properties":{"admin":{"description":"admin is the account address of the group admin.","type":"string"},"group_policy_address":{"description":"group_policy_address is the account address of the group policy.","type":"string"},"new_admin":{"description":"new_admin is the new group policy admin.","type":"string"}}},"cosmos.group.v1.MsgUpdateGroupPolicyAdminResponse":{"description":"MsgUpdateGroupPolicyAdminResponse is the Msg/UpdateGroupPolicyAdmin response type.","type":"object"},"cosmos.group.v1.MsgUpdateGroupPolicyDecisionPolicy":{"description":"MsgUpdateGroupPolicyDecisionPolicy is the Msg/UpdateGroupPolicyDecisionPolicy request type.","type":"object","properties":{"admin":{"description":"admin is the account address of the group admin.","type":"string"},"decision_policy":{"description":"decision_policy is the updated group policy's decision policy.","$ref":"#/definitions/google.protobuf.Any"},"group_policy_address":{"description":"group_policy_address is the account address of group policy.","type":"string"}}},"cosmos.group.v1.MsgUpdateGroupPolicyDecisionPolicyResponse":{"description":"MsgUpdateGroupPolicyDecisionPolicyResponse is the Msg/UpdateGroupPolicyDecisionPolicy response type.","type":"object"},"cosmos.group.v1.MsgUpdateGroupPolicyMetadata":{"description":"MsgUpdateGroupPolicyMetadata is the Msg/UpdateGroupPolicyMetadata request type.","type":"object","properties":{"admin":{"description":"admin is the account address of the group admin.","type":"string"},"group_policy_address":{"description":"group_policy_address is the account address of group policy.","type":"string"},"metadata":{"description":"metadata is the group policy metadata to be updated.","type":"string"}}},"cosmos.group.v1.MsgUpdateGroupPolicyMetadataResponse":{"description":"MsgUpdateGroupPolicyMetadataResponse is the Msg/UpdateGroupPolicyMetadata response type.","type":"object"},"cosmos.group.v1.MsgVote":{"description":"MsgVote is the Msg/Vote request type.","type":"object","properties":{"exec":{"description":"exec defines whether the proposal should be executed\nimmediately after voting or not.","$ref":"#/definitions/cosmos.group.v1.Exec"},"metadata":{"description":"metadata is any arbitrary metadata attached to the vote.","type":"string"},"option":{"description":"option is the voter's choice on the proposal.","$ref":"#/definitions/cosmos.group.v1.VoteOption"},"proposal_id":{"description":"proposal is the unique ID of the proposal.","type":"string","format":"uint64"},"voter":{"description":"voter is the voter account address.","type":"string"}}},"cosmos.group.v1.MsgVoteResponse":{"description":"MsgVoteResponse is the Msg/Vote response type.","type":"object"},"cosmos.group.v1.MsgWithdrawProposal":{"description":"MsgWithdrawProposal is the Msg/WithdrawProposal request type.","type":"object","properties":{"address":{"description":"address is the admin of the group policy or one of the proposer of the proposal.","type":"string"},"proposal_id":{"description":"proposal is the unique ID of the proposal.","type":"string","format":"uint64"}}},"cosmos.group.v1.MsgWithdrawProposalResponse":{"description":"MsgWithdrawProposalResponse is the Msg/WithdrawProposal response type.","type":"object"},"cosmos.group.v1.Proposal":{"description":"Proposal defines a group proposal. Any member of a group can submit a proposal\nfor a group policy to decide upon.\nA proposal consists of a set of `sdk.Msg`s that will be executed if the proposal\npasses as well as some optional metadata associated with the proposal.","type":"object","properties":{"executor_result":{"description":"executor_result is the final result of the proposal execution. Initial value is NotRun.","$ref":"#/definitions/cosmos.group.v1.ProposalExecutorResult"},"final_tally_result":{"description":"final_tally_result contains the sums of all weighted votes for this\nproposal for each vote option. It is empty at submission, and only\npopulated after tallying, at voting period end or at proposal execution,\nwhichever happens first.","$ref":"#/definitions/cosmos.group.v1.TallyResult"},"group_policy_address":{"description":"group_policy_address is the account address of group policy.","type":"string"},"group_policy_version":{"description":"group_policy_version tracks the version of the group policy at proposal submission.\nWhen a decision policy is changed, existing proposals from previous policy\nversions will become invalid with the `ABORTED` status.\nThis field is here for informational purposes only.","type":"string","format":"uint64"},"group_version":{"description":"group_version tracks the version of the group at proposal submission.\nThis field is here for informational purposes only.","type":"string","format":"uint64"},"id":{"description":"id is the unique id of the proposal.","type":"string","format":"uint64"},"messages":{"description":"messages is a list of `sdk.Msg`s that will be executed if the proposal passes.","type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}},"metadata":{"type":"string","title":"metadata is any arbitrary metadata attached to the proposal.\nthe recommended format of the metadata is to be found here:\nhttps://docs.cosmos.network/v0.47/modules/group#proposal-4"},"proposers":{"description":"proposers are the account addresses of the proposers.","type":"array","items":{"type":"string"}},"status":{"description":"status represents the high level position in the life cycle of the proposal. Initial value is Submitted.","$ref":"#/definitions/cosmos.group.v1.ProposalStatus"},"submit_time":{"description":"submit_time is a timestamp specifying when a proposal was submitted.","type":"string","format":"date-time"},"summary":{"description":"Since: cosmos-sdk 0.47","type":"string","title":"summary is a short summary of the proposal"},"title":{"description":"Since: cosmos-sdk 0.47","type":"string","title":"title is the title of the proposal"},"voting_period_end":{"description":"voting_period_end is the timestamp before which voting must be done.\nUnless a successful MsgExec is called before (to execute a proposal whose\ntally is successful before the voting period ends), tallying will be done\nat this point, and the `final_tally_result`and `status` fields will be\naccordingly updated.","type":"string","format":"date-time"}}},"cosmos.group.v1.ProposalExecutorResult":{"description":"ProposalExecutorResult defines types of proposal executor results.\n\n - PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED: An empty value is not allowed.\n - PROPOSAL_EXECUTOR_RESULT_NOT_RUN: We have not yet run the executor.\n - PROPOSAL_EXECUTOR_RESULT_SUCCESS: The executor was successful and proposed action updated state.\n - PROPOSAL_EXECUTOR_RESULT_FAILURE: The executor returned an error and proposed action didn't update state.","type":"string","default":"PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED","enum":["PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED","PROPOSAL_EXECUTOR_RESULT_NOT_RUN","PROPOSAL_EXECUTOR_RESULT_SUCCESS","PROPOSAL_EXECUTOR_RESULT_FAILURE"]},"cosmos.group.v1.ProposalStatus":{"description":"ProposalStatus defines proposal statuses.\n\n - PROPOSAL_STATUS_UNSPECIFIED: An empty value is invalid and not allowed.\n - PROPOSAL_STATUS_SUBMITTED: Initial status of a proposal when submitted.\n - PROPOSAL_STATUS_ACCEPTED: Final status of a proposal when the final tally is done and the outcome\npasses the group policy's decision policy.\n - PROPOSAL_STATUS_REJECTED: Final status of a proposal when the final tally is done and the outcome\nis rejected by the group policy's decision policy.\n - PROPOSAL_STATUS_ABORTED: Final status of a proposal when the group policy is modified before the\nfinal tally.\n - PROPOSAL_STATUS_WITHDRAWN: A proposal can be withdrawn before the voting start time by the owner.\nWhen this happens the final status is Withdrawn.","type":"string","default":"PROPOSAL_STATUS_UNSPECIFIED","enum":["PROPOSAL_STATUS_UNSPECIFIED","PROPOSAL_STATUS_SUBMITTED","PROPOSAL_STATUS_ACCEPTED","PROPOSAL_STATUS_REJECTED","PROPOSAL_STATUS_ABORTED","PROPOSAL_STATUS_WITHDRAWN"]},"cosmos.group.v1.QueryGroupInfoResponse":{"description":"QueryGroupInfoResponse is the Query/GroupInfo response type.","type":"object","properties":{"info":{"description":"info is the GroupInfo of the group.","$ref":"#/definitions/cosmos.group.v1.GroupInfo"}}},"cosmos.group.v1.QueryGroupMembersResponse":{"description":"QueryGroupMembersResponse is the Query/GroupMembersResponse response type.","type":"object","properties":{"members":{"description":"members are the members of the group with given group_id.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.group.v1.GroupMember"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.group.v1.QueryGroupPoliciesByAdminResponse":{"description":"QueryGroupPoliciesByAdminResponse is the Query/GroupPoliciesByAdmin response type.","type":"object","properties":{"group_policies":{"description":"group_policies are the group policies info with provided admin.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.group.v1.GroupPolicyInfo"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.group.v1.QueryGroupPoliciesByGroupResponse":{"description":"QueryGroupPoliciesByGroupResponse is the Query/GroupPoliciesByGroup response type.","type":"object","properties":{"group_policies":{"description":"group_policies are the group policies info associated with the provided group.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.group.v1.GroupPolicyInfo"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.group.v1.QueryGroupPolicyInfoResponse":{"description":"QueryGroupPolicyInfoResponse is the Query/GroupPolicyInfo response type.","type":"object","properties":{"info":{"description":"info is the GroupPolicyInfo of the group policy.","$ref":"#/definitions/cosmos.group.v1.GroupPolicyInfo"}}},"cosmos.group.v1.QueryGroupsByAdminResponse":{"description":"QueryGroupsByAdminResponse is the Query/GroupsByAdminResponse response type.","type":"object","properties":{"groups":{"description":"groups are the groups info with the provided admin.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.group.v1.GroupInfo"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.group.v1.QueryGroupsByMemberResponse":{"description":"QueryGroupsByMemberResponse is the Query/GroupsByMember response type.","type":"object","properties":{"groups":{"description":"groups are the groups info with the provided group member.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.group.v1.GroupInfo"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.group.v1.QueryGroupsResponse":{"description":"QueryGroupsResponse is the Query/Groups response type.\n\nSince: cosmos-sdk 0.47.1","type":"object","properties":{"groups":{"description":"`groups` is all the groups present in state.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.group.v1.GroupInfo"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.group.v1.QueryProposalResponse":{"description":"QueryProposalResponse is the Query/Proposal response type.","type":"object","properties":{"proposal":{"description":"proposal is the proposal info.","$ref":"#/definitions/cosmos.group.v1.Proposal"}}},"cosmos.group.v1.QueryProposalsByGroupPolicyResponse":{"description":"QueryProposalsByGroupPolicyResponse is the Query/ProposalByGroupPolicy response type.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"proposals":{"description":"proposals are the proposals with given group policy.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.group.v1.Proposal"}}}},"cosmos.group.v1.QueryTallyResultResponse":{"description":"QueryTallyResultResponse is the Query/TallyResult response type.","type":"object","properties":{"tally":{"description":"tally defines the requested tally.","$ref":"#/definitions/cosmos.group.v1.TallyResult"}}},"cosmos.group.v1.QueryVoteByProposalVoterResponse":{"description":"QueryVoteByProposalVoterResponse is the Query/VoteByProposalVoter response type.","type":"object","properties":{"vote":{"description":"vote is the vote with given proposal_id and voter.","$ref":"#/definitions/cosmos.group.v1.Vote"}}},"cosmos.group.v1.QueryVotesByProposalResponse":{"description":"QueryVotesByProposalResponse is the Query/VotesByProposal response type.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"votes":{"description":"votes are the list of votes for given proposal_id.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.group.v1.Vote"}}}},"cosmos.group.v1.QueryVotesByVoterResponse":{"description":"QueryVotesByVoterResponse is the Query/VotesByVoter response type.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"votes":{"description":"votes are the list of votes by given voter.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.group.v1.Vote"}}}},"cosmos.group.v1.TallyResult":{"description":"TallyResult represents the sum of weighted votes for each vote option.","type":"object","properties":{"abstain_count":{"description":"abstain_count is the weighted sum of abstainers.","type":"string"},"no_count":{"description":"no_count is the weighted sum of no votes.","type":"string"},"no_with_veto_count":{"description":"no_with_veto_count is the weighted sum of veto.","type":"string"},"yes_count":{"description":"yes_count is the weighted sum of yes votes.","type":"string"}}},"cosmos.group.v1.Vote":{"type":"object","title":"Vote represents a vote for a proposal.string metadata","properties":{"metadata":{"type":"string","title":"metadata is any arbitrary metadata attached to the vote.\nthe recommended format of the metadata is to be found here: https://docs.cosmos.network/v0.47/modules/group#vote-2"},"option":{"description":"option is the voter's choice on the proposal.","$ref":"#/definitions/cosmos.group.v1.VoteOption"},"proposal_id":{"description":"proposal is the unique ID of the proposal.","type":"string","format":"uint64"},"submit_time":{"description":"submit_time is the timestamp when the vote was submitted.","type":"string","format":"date-time"},"voter":{"description":"voter is the account address of the voter.","type":"string"}}},"cosmos.group.v1.VoteOption":{"description":"VoteOption enumerates the valid vote options for a given proposal.\n\n - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines an unspecified vote option which will\nreturn an error.\n - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option.\n - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option.\n - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option.\n - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option.","type":"string","default":"VOTE_OPTION_UNSPECIFIED","enum":["VOTE_OPTION_UNSPECIFIED","VOTE_OPTION_YES","VOTE_OPTION_ABSTAIN","VOTE_OPTION_NO","VOTE_OPTION_NO_WITH_VETO"]},"cosmos.mint.v1beta1.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the x/mint parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/cosmos.mint.v1beta1.Params"}}},"cosmos.mint.v1beta1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.\n\nSince: cosmos-sdk 0.47","type":"object"},"cosmos.mint.v1beta1.Params":{"description":"Params defines the parameters for the x/mint module.","type":"object","properties":{"blocks_per_year":{"type":"string","format":"uint64","title":"expected blocks per year"},"goal_bonded":{"type":"string","title":"goal of percent bonded atoms"},"inflation_max":{"type":"string","title":"maximum inflation rate"},"inflation_min":{"type":"string","title":"minimum inflation rate"},"inflation_rate_change":{"type":"string","title":"maximum annual change in inflation rate"},"mint_denom":{"type":"string","title":"type of coin to mint"}}},"cosmos.mint.v1beta1.QueryAnnualProvisionsResponse":{"description":"QueryAnnualProvisionsResponse is the response type for the\nQuery/AnnualProvisions RPC method.","type":"object","properties":{"annual_provisions":{"description":"annual_provisions is the current minting annual provisions value.","type":"string","format":"byte"}}},"cosmos.mint.v1beta1.QueryInflationResponse":{"description":"QueryInflationResponse is the response type for the Query/Inflation RPC\nmethod.","type":"object","properties":{"inflation":{"description":"inflation is the current minting inflation value.","type":"string","format":"byte"}}},"cosmos.mint.v1beta1.QueryParamsResponse":{"description":"QueryParamsResponse is the response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params defines the parameters of the module.","$ref":"#/definitions/cosmos.mint.v1beta1.Params"}}},"cosmos.nft.v1beta1.Class":{"description":"Class defines the class of the nft type.","type":"object","properties":{"data":{"title":"data is the app specific metadata of the NFT class. Optional","$ref":"#/definitions/google.protobuf.Any"},"description":{"type":"string","title":"description is a brief description of nft classification. Optional"},"id":{"type":"string","title":"id defines the unique identifier of the NFT classification, similar to the contract address of ERC721"},"name":{"type":"string","title":"name defines the human-readable name of the NFT classification. Optional"},"symbol":{"type":"string","title":"symbol is an abbreviated name for nft classification. Optional"},"uri":{"type":"string","title":"uri for the class metadata stored off chain. It can define schema for Class and NFT `Data` attributes. Optional"},"uri_hash":{"type":"string","title":"uri_hash is a hash of the document pointed by uri. Optional"}}},"cosmos.nft.v1beta1.MsgSend":{"description":"MsgSend represents a message to send a nft from one account to another account.","type":"object","properties":{"class_id":{"type":"string","title":"class_id defines the unique identifier of the nft classification, similar to the contract address of ERC721"},"id":{"type":"string","title":"id defines the unique identification of nft"},"receiver":{"type":"string","title":"receiver is the receiver address of nft"},"sender":{"type":"string","title":"sender is the address of the owner of nft"}}},"cosmos.nft.v1beta1.MsgSendResponse":{"description":"MsgSendResponse defines the Msg/Send response type.","type":"object"},"cosmos.nft.v1beta1.NFT":{"description":"NFT defines the NFT.","type":"object","properties":{"class_id":{"type":"string","title":"class_id associated with the NFT, similar to the contract address of ERC721"},"data":{"title":"data is an app specific data of the NFT. Optional","$ref":"#/definitions/google.protobuf.Any"},"id":{"type":"string","title":"id is a unique identifier of the NFT"},"uri":{"type":"string","title":"uri for the NFT metadata stored off chain"},"uri_hash":{"type":"string","title":"uri_hash is a hash of the document pointed by uri"}}},"cosmos.nft.v1beta1.QueryBalanceResponse":{"type":"object","title":"QueryBalanceResponse is the response type for the Query/Balance RPC method","properties":{"amount":{"type":"string","format":"uint64","title":"amount is the number of all NFTs of a given class owned by the owner"}}},"cosmos.nft.v1beta1.QueryClassResponse":{"type":"object","title":"QueryClassResponse is the response type for the Query/Class RPC method","properties":{"class":{"description":"class defines the class of the nft type.","$ref":"#/definitions/cosmos.nft.v1beta1.Class"}}},"cosmos.nft.v1beta1.QueryClassesResponse":{"type":"object","title":"QueryClassesResponse is the response type for the Query/Classes RPC method","properties":{"classes":{"description":"class defines the class of the nft type.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.nft.v1beta1.Class"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.nft.v1beta1.QueryNFTResponse":{"type":"object","title":"QueryNFTResponse is the response type for the Query/NFT RPC method","properties":{"nft":{"title":"owner is the owner address of the nft","$ref":"#/definitions/cosmos.nft.v1beta1.NFT"}}},"cosmos.nft.v1beta1.QueryNFTsResponse":{"type":"object","title":"QueryNFTsResponse is the response type for the Query/NFTs RPC methods","properties":{"nfts":{"type":"array","title":"NFT defines the NFT","items":{"type":"object","$ref":"#/definitions/cosmos.nft.v1beta1.NFT"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.nft.v1beta1.QueryOwnerResponse":{"type":"object","title":"QueryOwnerResponse is the response type for the Query/Owner RPC method","properties":{"owner":{"type":"string","title":"owner is the owner address of the nft"}}},"cosmos.nft.v1beta1.QuerySupplyResponse":{"type":"object","title":"QuerySupplyResponse is the response type for the Query/Supply RPC method","properties":{"amount":{"type":"string","format":"uint64","title":"amount is the number of all NFTs from the given class"}}},"cosmos.params.v1beta1.ParamChange":{"description":"ParamChange defines an individual parameter change, for use in\nParameterChangeProposal.","type":"object","properties":{"key":{"type":"string"},"subspace":{"type":"string"},"value":{"type":"string"}}},"cosmos.params.v1beta1.QueryParamsResponse":{"description":"QueryParamsResponse is response type for the Query/Params RPC method.","type":"object","properties":{"param":{"description":"param defines the queried parameter.","$ref":"#/definitions/cosmos.params.v1beta1.ParamChange"}}},"cosmos.params.v1beta1.QuerySubspacesResponse":{"description":"QuerySubspacesResponse defines the response types for querying for all\nregistered subspaces and all keys for a subspace.\n\nSince: cosmos-sdk 0.46","type":"object","properties":{"subspaces":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.params.v1beta1.Subspace"}}}},"cosmos.params.v1beta1.Subspace":{"description":"Subspace defines a parameter subspace name and all the keys that exist for\nthe subspace.\n\nSince: cosmos-sdk 0.46","type":"object","properties":{"keys":{"type":"array","items":{"type":"string"}},"subspace":{"type":"string"}}},"cosmos.slashing.v1beta1.MsgUnjail":{"type":"object","title":"MsgUnjail defines the Msg/Unjail request type","properties":{"validator_addr":{"type":"string"}}},"cosmos.slashing.v1beta1.MsgUnjailResponse":{"type":"object","title":"MsgUnjailResponse defines the Msg/Unjail response type"},"cosmos.slashing.v1beta1.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the x/slashing parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/cosmos.slashing.v1beta1.Params"}}},"cosmos.slashing.v1beta1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.\n\nSince: cosmos-sdk 0.47","type":"object"},"cosmos.slashing.v1beta1.Params":{"description":"Params represents the parameters used for by the slashing module.","type":"object","properties":{"downtime_jail_duration":{"type":"string"},"min_signed_per_window":{"type":"string","format":"byte"},"signed_blocks_window":{"type":"string","format":"int64"},"slash_fraction_double_sign":{"type":"string","format":"byte"},"slash_fraction_downtime":{"type":"string","format":"byte"}}},"cosmos.slashing.v1beta1.QueryParamsResponse":{"type":"object","title":"QueryParamsResponse is the response type for the Query/Params RPC method","properties":{"params":{"$ref":"#/definitions/cosmos.slashing.v1beta1.Params"}}},"cosmos.slashing.v1beta1.QuerySigningInfoResponse":{"type":"object","title":"QuerySigningInfoResponse is the response type for the Query/SigningInfo RPC\nmethod","properties":{"val_signing_info":{"title":"val_signing_info is the signing info of requested val cons address","$ref":"#/definitions/cosmos.slashing.v1beta1.ValidatorSigningInfo"}}},"cosmos.slashing.v1beta1.QuerySigningInfosResponse":{"type":"object","title":"QuerySigningInfosResponse is the response type for the Query/SigningInfos RPC\nmethod","properties":{"info":{"type":"array","title":"info is the signing info of all validators","items":{"type":"object","$ref":"#/definitions/cosmos.slashing.v1beta1.ValidatorSigningInfo"}},"pagination":{"$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.slashing.v1beta1.ValidatorSigningInfo":{"description":"ValidatorSigningInfo defines a validator's signing info for monitoring their\nliveness activity.","type":"object","properties":{"address":{"type":"string"},"index_offset":{"description":"Index which is incremented every time a validator is bonded in a block and\n_may_ have signed a pre-commit or not. This in conjunction with the\nsigned_blocks_window param determines the index in the missed block bitmap.","type":"string","format":"int64"},"jailed_until":{"description":"Timestamp until which the validator is jailed due to liveness downtime.","type":"string","format":"date-time"},"missed_blocks_counter":{"description":"A counter of missed (unsigned) blocks. It is used to avoid unnecessary\nreads in the missed block bitmap.","type":"string","format":"int64"},"start_height":{"type":"string","format":"int64","title":"Height at which validator was first a candidate OR was un-jailed"},"tombstoned":{"description":"Whether or not a validator has been tombstoned (killed out of validator\nset). It is set once the validator commits an equivocation or for any other\nconfigured misbehavior.","type":"boolean"}}},"cosmos.staking.v1beta1.BondStatus":{"description":"BondStatus is the status of a validator.\n\n - BOND_STATUS_UNSPECIFIED: UNSPECIFIED defines an invalid validator status.\n - BOND_STATUS_UNBONDED: UNBONDED defines a validator that is not bonded.\n - BOND_STATUS_UNBONDING: UNBONDING defines a validator that is unbonding.\n - BOND_STATUS_BONDED: BONDED defines a validator that is bonded.","type":"string","default":"BOND_STATUS_UNSPECIFIED","enum":["BOND_STATUS_UNSPECIFIED","BOND_STATUS_UNBONDED","BOND_STATUS_UNBONDING","BOND_STATUS_BONDED"]},"cosmos.staking.v1beta1.Commission":{"description":"Commission defines commission parameters for a given validator.","type":"object","properties":{"commission_rates":{"description":"commission_rates defines the initial commission rates to be used for creating a validator.","$ref":"#/definitions/cosmos.staking.v1beta1.CommissionRates"},"update_time":{"description":"update_time is the last time the commission rate was changed.","type":"string","format":"date-time"}}},"cosmos.staking.v1beta1.CommissionRates":{"description":"CommissionRates defines the initial commission rates to be used for creating\na validator.","type":"object","properties":{"max_change_rate":{"description":"max_change_rate defines the maximum daily increase of the validator commission, as a fraction.","type":"string"},"max_rate":{"description":"max_rate defines the maximum commission rate which validator can ever charge, as a fraction.","type":"string"},"rate":{"description":"rate is the commission rate charged to delegators, as a fraction.","type":"string"}}},"cosmos.staking.v1beta1.Delegation":{"description":"Delegation represents the bond with tokens held by an account. It is\nowned by one delegator, and is associated with the voting power of one\nvalidator.","type":"object","properties":{"delegator_address":{"description":"delegator_address is the encoded address of the delegator.","type":"string"},"shares":{"description":"shares define the delegation shares received.","type":"string"},"validator_address":{"description":"validator_address is the encoded address of the validator.","type":"string"}}},"cosmos.staking.v1beta1.DelegationResponse":{"description":"DelegationResponse is equivalent to Delegation except that it contains a\nbalance in addition to shares which is more suitable for client responses.","type":"object","properties":{"balance":{"$ref":"#/definitions/cosmos.base.v1beta1.Coin"},"delegation":{"$ref":"#/definitions/cosmos.staking.v1beta1.Delegation"}}},"cosmos.staking.v1beta1.Description":{"description":"Description defines a validator description.","type":"object","properties":{"details":{"description":"details define other optional details.","type":"string"},"identity":{"description":"identity defines an optional identity signature (ex. UPort or Keybase).","type":"string"},"moniker":{"description":"moniker defines a human-readable name for the validator.","type":"string"},"security_contact":{"description":"security_contact defines an optional email for security contact.","type":"string"},"website":{"description":"website defines an optional website link.","type":"string"}}},"cosmos.staking.v1beta1.HistoricalInfo":{"description":"HistoricalInfo contains header and validator information for a given block.\nIt is stored as part of staking module's state, which persists the `n` most\nrecent HistoricalInfo\n(`n` is set by the staking module's `historical_entries` parameter).","type":"object","properties":{"header":{"$ref":"#/definitions/tendermint.types.Header"},"valset":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.staking.v1beta1.Validator"}}}},"cosmos.staking.v1beta1.MsgBeginRedelegate":{"description":"MsgBeginRedelegate defines a SDK message for performing a redelegation\nof coins from a delegator and source validator to a destination validator.","type":"object","properties":{"amount":{"$ref":"#/definitions/cosmos.base.v1beta1.Coin"},"delegator_address":{"type":"string"},"validator_dst_address":{"type":"string"},"validator_src_address":{"type":"string"}}},"cosmos.staking.v1beta1.MsgBeginRedelegateResponse":{"description":"MsgBeginRedelegateResponse defines the Msg/BeginRedelegate response type.","type":"object","properties":{"completion_time":{"type":"string","format":"date-time"}}},"cosmos.staking.v1beta1.MsgCancelUnbondingDelegation":{"description":"Since: cosmos-sdk 0.46","type":"object","title":"MsgCancelUnbondingDelegation defines the SDK message for performing a cancel unbonding delegation for delegator","properties":{"amount":{"title":"amount is always less than or equal to unbonding delegation entry balance","$ref":"#/definitions/cosmos.base.v1beta1.Coin"},"creation_height":{"description":"creation_height is the height which the unbonding took place.","type":"string","format":"int64"},"delegator_address":{"type":"string"},"validator_address":{"type":"string"}}},"cosmos.staking.v1beta1.MsgCancelUnbondingDelegationResponse":{"description":"Since: cosmos-sdk 0.46","type":"object","title":"MsgCancelUnbondingDelegationResponse"},"cosmos.staking.v1beta1.MsgCreateValidator":{"description":"MsgCreateValidator defines a SDK message for creating a new validator.","type":"object","properties":{"commission":{"$ref":"#/definitions/cosmos.staking.v1beta1.CommissionRates"},"delegator_address":{"description":"Deprecated: Use of Delegator Address in MsgCreateValidator is deprecated.\nThe validator address bytes and delegator address bytes refer to the same account while creating validator (defer\nonly in bech32 notation).","type":"string"},"description":{"$ref":"#/definitions/cosmos.staking.v1beta1.Description"},"min_self_delegation":{"type":"string"},"pubkey":{"$ref":"#/definitions/google.protobuf.Any"},"validator_address":{"type":"string"},"value":{"$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"cosmos.staking.v1beta1.MsgCreateValidatorResponse":{"description":"MsgCreateValidatorResponse defines the Msg/CreateValidator response type.","type":"object"},"cosmos.staking.v1beta1.MsgDelegate":{"description":"MsgDelegate defines a SDK message for performing a delegation of coins\nfrom a delegator to a validator.","type":"object","properties":{"amount":{"$ref":"#/definitions/cosmos.base.v1beta1.Coin"},"delegator_address":{"type":"string"},"validator_address":{"type":"string"}}},"cosmos.staking.v1beta1.MsgDelegateResponse":{"description":"MsgDelegateResponse defines the Msg/Delegate response type.","type":"object"},"cosmos.staking.v1beta1.MsgEditValidator":{"description":"MsgEditValidator defines a SDK message for editing an existing validator.","type":"object","properties":{"commission_rate":{"type":"string","title":"We pass a reference to the new commission rate and min self delegation as\nit's not mandatory to update. If not updated, the deserialized rate will be\nzero with no way to distinguish if an update was intended.\nREF: #2373"},"description":{"$ref":"#/definitions/cosmos.staking.v1beta1.Description"},"min_self_delegation":{"type":"string"},"validator_address":{"type":"string"}}},"cosmos.staking.v1beta1.MsgEditValidatorResponse":{"description":"MsgEditValidatorResponse defines the Msg/EditValidator response type.","type":"object"},"cosmos.staking.v1beta1.MsgUndelegate":{"description":"MsgUndelegate defines a SDK message for performing an undelegation from a\ndelegate and a validator.","type":"object","properties":{"amount":{"$ref":"#/definitions/cosmos.base.v1beta1.Coin"},"delegator_address":{"type":"string"},"validator_address":{"type":"string"}}},"cosmos.staking.v1beta1.MsgUndelegateResponse":{"description":"MsgUndelegateResponse defines the Msg/Undelegate response type.","type":"object","properties":{"amount":{"description":"Since: cosmos-sdk 0.50","title":"amount returns the amount of undelegated coins","$ref":"#/definitions/cosmos.base.v1beta1.Coin"},"completion_time":{"type":"string","format":"date-time"}}},"cosmos.staking.v1beta1.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the x/staking parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/cosmos.staking.v1beta1.Params"}}},"cosmos.staking.v1beta1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.\n\nSince: cosmos-sdk 0.47","type":"object"},"cosmos.staking.v1beta1.Params":{"description":"Params defines the parameters for the x/staking module.","type":"object","properties":{"bond_denom":{"description":"bond_denom defines the bondable coin denomination.","type":"string"},"historical_entries":{"description":"historical_entries is the number of historical entries to persist.","type":"integer","format":"int64"},"max_entries":{"description":"max_entries is the max entries for either unbonding delegation or redelegation (per pair/trio).","type":"integer","format":"int64"},"max_validators":{"description":"max_validators is the maximum number of validators.","type":"integer","format":"int64"},"min_commission_rate":{"type":"string","title":"min_commission_rate is the chain-wide minimum commission rate that a validator can charge their delegators"},"unbonding_time":{"description":"unbonding_time is the time duration of unbonding.","type":"string"}}},"cosmos.staking.v1beta1.Pool":{"description":"Pool is used for tracking bonded and not-bonded token supply of the bond\ndenomination.","type":"object","properties":{"bonded_tokens":{"type":"string"},"not_bonded_tokens":{"type":"string"}}},"cosmos.staking.v1beta1.QueryDelegationResponse":{"description":"QueryDelegationResponse is response type for the Query/Delegation RPC method.","type":"object","properties":{"delegation_response":{"description":"delegation_responses defines the delegation info of a delegation.","$ref":"#/definitions/cosmos.staking.v1beta1.DelegationResponse"}}},"cosmos.staking.v1beta1.QueryDelegatorDelegationsResponse":{"description":"QueryDelegatorDelegationsResponse is response type for the\nQuery/DelegatorDelegations RPC method.","type":"object","properties":{"delegation_responses":{"description":"delegation_responses defines all the delegations' info of a delegator.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.staking.v1beta1.DelegationResponse"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.staking.v1beta1.QueryDelegatorUnbondingDelegationsResponse":{"description":"QueryUnbondingDelegatorDelegationsResponse is response type for the\nQuery/UnbondingDelegatorDelegations RPC method.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"unbonding_responses":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.staking.v1beta1.UnbondingDelegation"}}}},"cosmos.staking.v1beta1.QueryDelegatorValidatorResponse":{"description":"QueryDelegatorValidatorResponse response type for the\nQuery/DelegatorValidator RPC method.","type":"object","properties":{"validator":{"description":"validator defines the validator info.","$ref":"#/definitions/cosmos.staking.v1beta1.Validator"}}},"cosmos.staking.v1beta1.QueryDelegatorValidatorsResponse":{"description":"QueryDelegatorValidatorsResponse is response type for the\nQuery/DelegatorValidators RPC method.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"validators":{"description":"validators defines the validators' info of a delegator.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.staking.v1beta1.Validator"}}}},"cosmos.staking.v1beta1.QueryHistoricalInfoResponse":{"description":"QueryHistoricalInfoResponse is response type for the Query/HistoricalInfo RPC\nmethod.","type":"object","properties":{"hist":{"description":"hist defines the historical info at the given height.","$ref":"#/definitions/cosmos.staking.v1beta1.HistoricalInfo"}}},"cosmos.staking.v1beta1.QueryParamsResponse":{"description":"QueryParamsResponse is response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params holds all the parameters of this module.","$ref":"#/definitions/cosmos.staking.v1beta1.Params"}}},"cosmos.staking.v1beta1.QueryPoolResponse":{"description":"QueryPoolResponse is response type for the Query/Pool RPC method.","type":"object","properties":{"pool":{"description":"pool defines the pool info.","$ref":"#/definitions/cosmos.staking.v1beta1.Pool"}}},"cosmos.staking.v1beta1.QueryRedelegationsResponse":{"description":"QueryRedelegationsResponse is response type for the Query/Redelegations RPC\nmethod.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"redelegation_responses":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.staking.v1beta1.RedelegationResponse"}}}},"cosmos.staking.v1beta1.QueryUnbondingDelegationResponse":{"description":"QueryDelegationResponse is response type for the Query/UnbondingDelegation\nRPC method.","type":"object","properties":{"unbond":{"description":"unbond defines the unbonding information of a delegation.","$ref":"#/definitions/cosmos.staking.v1beta1.UnbondingDelegation"}}},"cosmos.staking.v1beta1.QueryValidatorDelegationsResponse":{"type":"object","title":"QueryValidatorDelegationsResponse is response type for the\nQuery/ValidatorDelegations RPC method","properties":{"delegation_responses":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.staking.v1beta1.DelegationResponse"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.staking.v1beta1.QueryValidatorResponse":{"type":"object","title":"QueryValidatorResponse is response type for the Query/Validator RPC method","properties":{"validator":{"description":"validator defines the validator info.","$ref":"#/definitions/cosmos.staking.v1beta1.Validator"}}},"cosmos.staking.v1beta1.QueryValidatorUnbondingDelegationsResponse":{"description":"QueryValidatorUnbondingDelegationsResponse is response type for the\nQuery/ValidatorUnbondingDelegations RPC method.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"unbonding_responses":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.staking.v1beta1.UnbondingDelegation"}}}},"cosmos.staking.v1beta1.QueryValidatorsResponse":{"type":"object","title":"QueryValidatorsResponse is response type for the Query/Validators RPC method","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"validators":{"description":"validators contains all the queried validators.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.staking.v1beta1.Validator"}}}},"cosmos.staking.v1beta1.Redelegation":{"description":"Redelegation contains the list of a particular delegator's redelegating bonds\nfrom a particular source validator to a particular destination validator.","type":"object","properties":{"delegator_address":{"description":"delegator_address is the bech32-encoded address of the delegator.","type":"string"},"entries":{"description":"entries are the redelegation entries.\n\nredelegation entries","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.staking.v1beta1.RedelegationEntry"}},"validator_dst_address":{"description":"validator_dst_address is the validator redelegation destination operator address.","type":"string"},"validator_src_address":{"description":"validator_src_address is the validator redelegation source operator address.","type":"string"}}},"cosmos.staking.v1beta1.RedelegationEntry":{"description":"RedelegationEntry defines a redelegation object with relevant metadata.","type":"object","properties":{"completion_time":{"description":"completion_time defines the unix time for redelegation completion.","type":"string","format":"date-time"},"creation_height":{"description":"creation_height defines the height which the redelegation took place.","type":"string","format":"int64"},"initial_balance":{"description":"initial_balance defines the initial balance when redelegation started.","type":"string"},"shares_dst":{"description":"shares_dst is the amount of destination-validator shares created by redelegation.","type":"string"},"unbonding_id":{"type":"string","format":"uint64","title":"Incrementing id that uniquely identifies this entry"},"unbonding_on_hold_ref_count":{"type":"string","format":"int64","title":"Strictly positive if this entry's unbonding has been stopped by external modules"}}},"cosmos.staking.v1beta1.RedelegationEntryResponse":{"description":"RedelegationEntryResponse is equivalent to a RedelegationEntry except that it\ncontains a balance in addition to shares which is more suitable for client\nresponses.","type":"object","properties":{"balance":{"type":"string"},"redelegation_entry":{"$ref":"#/definitions/cosmos.staking.v1beta1.RedelegationEntry"}}},"cosmos.staking.v1beta1.RedelegationResponse":{"description":"RedelegationResponse is equivalent to a Redelegation except that its entries\ncontain a balance in addition to shares which is more suitable for client\nresponses.","type":"object","properties":{"entries":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.staking.v1beta1.RedelegationEntryResponse"}},"redelegation":{"$ref":"#/definitions/cosmos.staking.v1beta1.Redelegation"}}},"cosmos.staking.v1beta1.UnbondingDelegation":{"description":"UnbondingDelegation stores all of a single delegator's unbonding bonds\nfor a single validator in an time-ordered list.","type":"object","properties":{"delegator_address":{"description":"delegator_address is the encoded address of the delegator.","type":"string"},"entries":{"description":"entries are the unbonding delegation entries.\n\nunbonding delegation entries","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.staking.v1beta1.UnbondingDelegationEntry"}},"validator_address":{"description":"validator_address is the encoded address of the validator.","type":"string"}}},"cosmos.staking.v1beta1.UnbondingDelegationEntry":{"description":"UnbondingDelegationEntry defines an unbonding object with relevant metadata.","type":"object","properties":{"balance":{"description":"balance defines the tokens to receive at completion.","type":"string"},"completion_time":{"description":"completion_time is the unix time for unbonding completion.","type":"string","format":"date-time"},"creation_height":{"description":"creation_height is the height which the unbonding took place.","type":"string","format":"int64"},"initial_balance":{"description":"initial_balance defines the tokens initially scheduled to receive at completion.","type":"string"},"unbonding_id":{"type":"string","format":"uint64","title":"Incrementing id that uniquely identifies this entry"},"unbonding_on_hold_ref_count":{"type":"string","format":"int64","title":"Strictly positive if this entry's unbonding has been stopped by external modules"}}},"cosmos.staking.v1beta1.Validator":{"description":"Validator defines a validator, together with the total amount of the\nValidator's bond shares and their exchange rate to coins. Slashing results in\na decrease in the exchange rate, allowing correct calculation of future\nundelegations without iterating over delegators. When coins are delegated to\nthis validator, the validator is credited with a delegation whose number of\nbond shares is based on the amount of coins delegated divided by the current\nexchange rate. Voting power can be calculated as total bonded shares\nmultiplied by exchange rate.","type":"object","properties":{"commission":{"description":"commission defines the commission parameters.","$ref":"#/definitions/cosmos.staking.v1beta1.Commission"},"consensus_pubkey":{"description":"consensus_pubkey is the consensus public key of the validator, as a Protobuf Any.","$ref":"#/definitions/google.protobuf.Any"},"delegator_shares":{"description":"delegator_shares defines total shares issued to a validator's delegators.","type":"string"},"description":{"description":"description defines the description terms for the validator.","$ref":"#/definitions/cosmos.staking.v1beta1.Description"},"jailed":{"description":"jailed defined whether the validator has been jailed from bonded status or not.","type":"boolean"},"min_self_delegation":{"description":"min_self_delegation is the validator's self declared minimum self delegation.\n\nSince: cosmos-sdk 0.46","type":"string"},"operator_address":{"description":"operator_address defines the address of the validator's operator; bech encoded in JSON.","type":"string"},"status":{"description":"status is the validator status (bonded/unbonding/unbonded).","$ref":"#/definitions/cosmos.staking.v1beta1.BondStatus"},"tokens":{"description":"tokens define the delegated tokens (incl. self-delegation).","type":"string"},"unbonding_height":{"description":"unbonding_height defines, if unbonding, the height at which this validator has begun unbonding.","type":"string","format":"int64"},"unbonding_ids":{"type":"array","title":"list of unbonding ids, each uniquely identifing an unbonding of this validator","items":{"type":"string","format":"uint64"}},"unbonding_on_hold_ref_count":{"type":"string","format":"int64","title":"strictly positive if this validator's unbonding has been stopped by external modules"},"unbonding_time":{"description":"unbonding_time defines, if unbonding, the min time for the validator to complete unbonding.","type":"string","format":"date-time"}}},"cosmos.store.streaming.abci.ListenCommitRequest":{"type":"object","title":"ListenCommitRequest is the request type for the ListenCommit RPC method","properties":{"block_height":{"type":"string","format":"int64","title":"explicitly pass in block height as ResponseCommit does not contain this info"},"change_set":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.store.v1beta1.StoreKVPair"}},"res":{"$ref":"#/definitions/tendermint.abci.ResponseCommit"}}},"cosmos.store.streaming.abci.ListenCommitResponse":{"type":"object","title":"ListenCommitResponse is the response type for the ListenCommit RPC method"},"cosmos.store.streaming.abci.ListenFinalizeBlockRequest":{"type":"object","title":"ListenEndBlockRequest is the request type for the ListenEndBlock RPC method","properties":{"req":{"$ref":"#/definitions/tendermint.abci.RequestFinalizeBlock"},"res":{"$ref":"#/definitions/tendermint.abci.ResponseFinalizeBlock"}}},"cosmos.store.streaming.abci.ListenFinalizeBlockResponse":{"type":"object","title":"ListenEndBlockResponse is the response type for the ListenEndBlock RPC method"},"cosmos.store.v1beta1.StoreKVPair":{"description":"Since: cosmos-sdk 0.43","type":"object","title":"StoreKVPair is a KVStore KVPair used for listening to state changes (Sets and Deletes)\nIt optionally includes the StoreKey for the originating KVStore and a Boolean flag to distinguish between Sets and\nDeletes","properties":{"delete":{"type":"boolean","title":"true indicates a delete operation, false indicates a set operation"},"key":{"type":"string","format":"byte"},"store_key":{"type":"string","title":"the store key for the KVStore this pair originates from"},"value":{"type":"string","format":"byte"}}},"cosmos.tx.signing.v1beta1.SignMode":{"description":"SignMode represents a signing mode with its own security guarantees.\n\nThis enum should be considered a registry of all known sign modes\nin the Cosmos ecosystem. Apps are not expected to support all known\nsign modes. Apps that would like to support custom sign modes are\nencouraged to open a small PR against this file to add a new case\nto this SignMode enum describing their sign mode so that different\napps have a consistent version of this enum.\n\n - SIGN_MODE_UNSPECIFIED: SIGN_MODE_UNSPECIFIED specifies an unknown signing mode and will be\nrejected.\n - SIGN_MODE_DIRECT: SIGN_MODE_DIRECT specifies a signing mode which uses SignDoc and is\nverified with raw bytes from Tx.\n - SIGN_MODE_TEXTUAL: SIGN_MODE_TEXTUAL is a future signing mode that will verify some\nhuman-readable textual representation on top of the binary representation\nfrom SIGN_MODE_DIRECT.\n\nSince: cosmos-sdk 0.50\n - SIGN_MODE_DIRECT_AUX: SIGN_MODE_DIRECT_AUX specifies a signing mode which uses\nSignDocDirectAux. As opposed to SIGN_MODE_DIRECT, this sign mode does not\nrequire signers signing over other signers' `signer_info`.\n\nSince: cosmos-sdk 0.46\n - SIGN_MODE_LEGACY_AMINO_JSON: SIGN_MODE_LEGACY_AMINO_JSON is a backwards compatibility mode which uses\nAmino JSON and will be removed in the future.\n - SIGN_MODE_EIP_191: SIGN_MODE_EIP_191 specifies the sign mode for EIP 191 signing on the Cosmos\nSDK. Ref: https://eips.ethereum.org/EIPS/eip-191\n\nCurrently, SIGN_MODE_EIP_191 is registered as a SignMode enum variant,\nbut is not implemented on the SDK by default. To enable EIP-191, you need\nto pass a custom `TxConfig` that has an implementation of\n`SignModeHandler` for EIP-191. The SDK may decide to fully support\nEIP-191 in the future.\n\nSince: cosmos-sdk 0.45.2","type":"string","default":"SIGN_MODE_UNSPECIFIED","enum":["SIGN_MODE_UNSPECIFIED","SIGN_MODE_DIRECT","SIGN_MODE_TEXTUAL","SIGN_MODE_DIRECT_AUX","SIGN_MODE_LEGACY_AMINO_JSON","SIGN_MODE_EIP_191"]},"cosmos.tx.v1beta1.AuthInfo":{"description":"AuthInfo describes the fee and signer modes that are used to sign a\ntransaction.","type":"object","properties":{"fee":{"description":"Fee is the fee and gas limit for the transaction. The first signer is the\nprimary signer and the one which pays the fee. The fee can be calculated\nbased on the cost of evaluating the body and doing signature verification\nof the signers. This can be estimated via simulation.","$ref":"#/definitions/cosmos.tx.v1beta1.Fee"},"signer_infos":{"description":"signer_infos defines the signing modes for the required signers. The number\nand order of elements must match the required signers from TxBody's\nmessages. The first element is the primary signer and the one which pays\nthe fee.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.tx.v1beta1.SignerInfo"}},"tip":{"description":"Tip is the optional tip used for transactions fees paid in another denom.\n\nThis field is ignored if the chain didn't enable tips, i.e. didn't add the\n`TipDecorator` in its posthandler.\n\nSince: cosmos-sdk 0.46","$ref":"#/definitions/cosmos.tx.v1beta1.Tip"}}},"cosmos.tx.v1beta1.BroadcastMode":{"description":"BroadcastMode specifies the broadcast mode for the TxService.Broadcast RPC\nmethod.\n\n - BROADCAST_MODE_UNSPECIFIED: zero-value for mode ordering\n - BROADCAST_MODE_BLOCK: DEPRECATED: use BROADCAST_MODE_SYNC instead,\nBROADCAST_MODE_BLOCK is not supported by the SDK from v0.47.x onwards.\n - BROADCAST_MODE_SYNC: BROADCAST_MODE_SYNC defines a tx broadcasting mode where the client waits\nfor a CheckTx execution response only.\n - BROADCAST_MODE_ASYNC: BROADCAST_MODE_ASYNC defines a tx broadcasting mode where the client\nreturns immediately.","type":"string","default":"BROADCAST_MODE_UNSPECIFIED","enum":["BROADCAST_MODE_UNSPECIFIED","BROADCAST_MODE_BLOCK","BROADCAST_MODE_SYNC","BROADCAST_MODE_ASYNC"]},"cosmos.tx.v1beta1.BroadcastTxRequest":{"description":"BroadcastTxRequest is the request type for the Service.BroadcastTxRequest\nRPC method.","type":"object","properties":{"mode":{"$ref":"#/definitions/cosmos.tx.v1beta1.BroadcastMode"},"tx_bytes":{"description":"tx_bytes is the raw transaction.","type":"string","format":"byte"}}},"cosmos.tx.v1beta1.BroadcastTxResponse":{"description":"BroadcastTxResponse is the response type for the\nService.BroadcastTx method.","type":"object","properties":{"tx_response":{"description":"tx_response is the queried TxResponses.","$ref":"#/definitions/cosmos.base.abci.v1beta1.TxResponse"}}},"cosmos.tx.v1beta1.Fee":{"description":"Fee includes the amount of coins paid in fees and the maximum\ngas to be used by the transaction. The ratio yields an effective \"gasprice\",\nwhich must be above some miminum to be accepted into the mempool.","type":"object","properties":{"amount":{"type":"array","title":"amount is the amount of coins to be paid as a fee","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"gas_limit":{"type":"string","format":"uint64","title":"gas_limit is the maximum gas that can be used in transaction processing\nbefore an out of gas error occurs"},"granter":{"type":"string","title":"if set, the fee payer (either the first signer or the value of the payer field) requests that a fee grant be used\nto pay fees instead of the fee payer's own balance. If an appropriate fee grant does not exist or the chain does\nnot support fee grants, this will fail"},"payer":{"description":"if unset, the first signer is responsible for paying the fees. If set, the specified account must pay the fees.\nthe payer must be a tx signer (and thus have signed this field in AuthInfo).\nsetting this field does *not* change the ordering of required signers for the transaction.","type":"string"}}},"cosmos.tx.v1beta1.GetBlockWithTxsResponse":{"description":"GetBlockWithTxsResponse is the response type for the Service.GetBlockWithTxs\nmethod.\n\nSince: cosmos-sdk 0.45.2","type":"object","properties":{"block":{"$ref":"#/definitions/tendermint.types.Block"},"block_id":{"$ref":"#/definitions/tendermint.types.BlockID"},"pagination":{"description":"pagination defines a pagination for the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"txs":{"description":"txs are the transactions in the block.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.tx.v1beta1.Tx"}}}},"cosmos.tx.v1beta1.GetTxResponse":{"description":"GetTxResponse is the response type for the Service.GetTx method.","type":"object","properties":{"tx":{"description":"tx is the queried transaction.","$ref":"#/definitions/cosmos.tx.v1beta1.Tx"},"tx_response":{"description":"tx_response is the queried TxResponses.","$ref":"#/definitions/cosmos.base.abci.v1beta1.TxResponse"}}},"cosmos.tx.v1beta1.GetTxsEventResponse":{"description":"GetTxsEventResponse is the response type for the Service.TxsByEvents\nRPC method.","type":"object","properties":{"pagination":{"description":"pagination defines a pagination for the response.\nDeprecated post v0.46.x: use total instead.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"total":{"type":"string","format":"uint64","title":"total is total number of results available"},"tx_responses":{"description":"tx_responses is the list of queried TxResponses.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.abci.v1beta1.TxResponse"}},"txs":{"description":"txs is the list of queried transactions.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.tx.v1beta1.Tx"}}}},"cosmos.tx.v1beta1.ModeInfo":{"description":"ModeInfo describes the signing mode of a single or nested multisig signer.","type":"object","properties":{"multi":{"title":"multi represents a nested multisig signer","$ref":"#/definitions/cosmos.tx.v1beta1.ModeInfo.Multi"},"single":{"title":"single represents a single signer","$ref":"#/definitions/cosmos.tx.v1beta1.ModeInfo.Single"}}},"cosmos.tx.v1beta1.ModeInfo.Multi":{"type":"object","title":"Multi is the mode info for a multisig public key","properties":{"bitarray":{"title":"bitarray specifies which keys within the multisig are signing","$ref":"#/definitions/cosmos.crypto.multisig.v1beta1.CompactBitArray"},"mode_infos":{"type":"array","title":"mode_infos is the corresponding modes of the signers of the multisig\nwhich could include nested multisig public keys","items":{"type":"object","$ref":"#/definitions/cosmos.tx.v1beta1.ModeInfo"}}}},"cosmos.tx.v1beta1.ModeInfo.Single":{"type":"object","title":"Single is the mode info for a single signer. It is structured as a message\nto allow for additional fields such as locale for SIGN_MODE_TEXTUAL in the\nfuture","properties":{"mode":{"title":"mode is the signing mode of the single signer","$ref":"#/definitions/cosmos.tx.signing.v1beta1.SignMode"}}},"cosmos.tx.v1beta1.OrderBy":{"description":"- ORDER_BY_UNSPECIFIED: ORDER_BY_UNSPECIFIED specifies an unknown sorting order. OrderBy defaults\nto ASC in this case.\n - ORDER_BY_ASC: ORDER_BY_ASC defines ascending order\n - ORDER_BY_DESC: ORDER_BY_DESC defines descending order","type":"string","title":"OrderBy defines the sorting order","default":"ORDER_BY_UNSPECIFIED","enum":["ORDER_BY_UNSPECIFIED","ORDER_BY_ASC","ORDER_BY_DESC"]},"cosmos.tx.v1beta1.SignerInfo":{"description":"SignerInfo describes the public key and signing mode of a single top-level\nsigner.","type":"object","properties":{"mode_info":{"title":"mode_info describes the signing mode of the signer and is a nested\nstructure to support nested multisig pubkey's","$ref":"#/definitions/cosmos.tx.v1beta1.ModeInfo"},"public_key":{"description":"public_key is the public key of the signer. It is optional for accounts\nthat already exist in state. If unset, the verifier can use the required \\\nsigner address for this position and lookup the public key.","$ref":"#/definitions/google.protobuf.Any"},"sequence":{"description":"sequence is the sequence of the account, which describes the\nnumber of committed transactions signed by a given address. It is used to\nprevent replay attacks.","type":"string","format":"uint64"}}},"cosmos.tx.v1beta1.SimulateRequest":{"description":"SimulateRequest is the request type for the Service.Simulate\nRPC method.","type":"object","properties":{"tx":{"description":"tx is the transaction to simulate.\nDeprecated. Send raw tx bytes instead.","$ref":"#/definitions/cosmos.tx.v1beta1.Tx"},"tx_bytes":{"description":"tx_bytes is the raw transaction.\n\nSince: cosmos-sdk 0.43","type":"string","format":"byte"}}},"cosmos.tx.v1beta1.SimulateResponse":{"description":"SimulateResponse is the response type for the\nService.SimulateRPC method.","type":"object","properties":{"gas_info":{"description":"gas_info is the information about gas used in the simulation.","$ref":"#/definitions/cosmos.base.abci.v1beta1.GasInfo"},"result":{"description":"result is the result of the simulation.","$ref":"#/definitions/cosmos.base.abci.v1beta1.Result"}}},"cosmos.tx.v1beta1.Tip":{"description":"Tip is the tip used for meta-transactions.\n\nSince: cosmos-sdk 0.46","type":"object","properties":{"amount":{"type":"array","title":"amount is the amount of the tip","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"tipper":{"type":"string","title":"tipper is the address of the account paying for the tip"}}},"cosmos.tx.v1beta1.Tx":{"description":"Tx is the standard type used for broadcasting transactions.","type":"object","properties":{"auth_info":{"title":"auth_info is the authorization related content of the transaction,\nspecifically signers, signer modes and fee","$ref":"#/definitions/cosmos.tx.v1beta1.AuthInfo"},"body":{"title":"body is the processable content of the transaction","$ref":"#/definitions/cosmos.tx.v1beta1.TxBody"},"signatures":{"description":"signatures is a list of signatures that matches the length and order of\nAuthInfo's signer_infos to allow connecting signature meta information like\npublic key and signing mode by position.","type":"array","items":{"type":"string","format":"byte"}}}},"cosmos.tx.v1beta1.TxBody":{"description":"TxBody is the body of a transaction that all signers sign over.","type":"object","properties":{"extension_options":{"type":"array","title":"extension_options are arbitrary options that can be added by chains\nwhen the default options are not sufficient. If any of these are present\nand can't be handled, the transaction will be rejected","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}},"memo":{"description":"memo is any arbitrary note/comment to be added to the transaction.\nWARNING: in clients, any publicly exposed text should not be called memo,\nbut should be called `note` instead (see https://github.com/cosmos/cosmos-sdk/issues/9122).","type":"string"},"messages":{"description":"messages is a list of messages to be executed. The required signers of\nthose messages define the number and order of elements in AuthInfo's\nsigner_infos and Tx's signatures. Each required signer address is added to\nthe list only the first time it occurs.\nBy convention, the first required signer (usually from the first message)\nis referred to as the primary signer and pays the fee for the whole\ntransaction.","type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}},"non_critical_extension_options":{"type":"array","title":"extension_options are arbitrary options that can be added by chains\nwhen the default options are not sufficient. If any of these are present\nand can't be handled, they will be ignored","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}},"timeout_height":{"type":"string","format":"uint64","title":"timeout is the block height after which this transaction will not\nbe processed by the chain"}}},"cosmos.tx.v1beta1.TxDecodeAminoRequest":{"description":"TxDecodeAminoRequest is the request type for the Service.TxDecodeAmino\nRPC method.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"amino_binary":{"type":"string","format":"byte"}}},"cosmos.tx.v1beta1.TxDecodeAminoResponse":{"description":"TxDecodeAminoResponse is the response type for the Service.TxDecodeAmino\nRPC method.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"amino_json":{"type":"string"}}},"cosmos.tx.v1beta1.TxDecodeRequest":{"description":"TxDecodeRequest is the request type for the Service.TxDecode\nRPC method.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"tx_bytes":{"description":"tx_bytes is the raw transaction.","type":"string","format":"byte"}}},"cosmos.tx.v1beta1.TxDecodeResponse":{"description":"TxDecodeResponse is the response type for the\nService.TxDecode method.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"tx":{"description":"tx is the decoded transaction.","$ref":"#/definitions/cosmos.tx.v1beta1.Tx"}}},"cosmos.tx.v1beta1.TxEncodeAminoRequest":{"description":"TxEncodeAminoRequest is the request type for the Service.TxEncodeAmino\nRPC method.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"amino_json":{"type":"string"}}},"cosmos.tx.v1beta1.TxEncodeAminoResponse":{"description":"TxEncodeAminoResponse is the response type for the Service.TxEncodeAmino\nRPC method.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"amino_binary":{"type":"string","format":"byte"}}},"cosmos.tx.v1beta1.TxEncodeRequest":{"description":"TxEncodeRequest is the request type for the Service.TxEncode\nRPC method.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"tx":{"description":"tx is the transaction to encode.","$ref":"#/definitions/cosmos.tx.v1beta1.Tx"}}},"cosmos.tx.v1beta1.TxEncodeResponse":{"description":"TxEncodeResponse is the response type for the\nService.TxEncode method.\n\nSince: cosmos-sdk 0.47","type":"object","properties":{"tx_bytes":{"description":"tx_bytes is the encoded transaction bytes.","type":"string","format":"byte"}}},"cosmos.upgrade.v1beta1.ModuleVersion":{"description":"ModuleVersion specifies a module and its consensus version.\n\nSince: cosmos-sdk 0.43","type":"object","properties":{"name":{"type":"string","title":"name of the app module"},"version":{"type":"string","format":"uint64","title":"consensus version of the app module"}}},"cosmos.upgrade.v1beta1.MsgCancelUpgrade":{"description":"MsgCancelUpgrade is the Msg/CancelUpgrade request type.\n\nSince: cosmos-sdk 0.46","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"}}},"cosmos.upgrade.v1beta1.MsgCancelUpgradeResponse":{"description":"MsgCancelUpgradeResponse is the Msg/CancelUpgrade response type.\n\nSince: cosmos-sdk 0.46","type":"object"},"cosmos.upgrade.v1beta1.MsgSoftwareUpgrade":{"description":"MsgSoftwareUpgrade is the Msg/SoftwareUpgrade request type.\n\nSince: cosmos-sdk 0.46","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"plan":{"description":"plan is the upgrade plan.","$ref":"#/definitions/cosmos.upgrade.v1beta1.Plan"}}},"cosmos.upgrade.v1beta1.MsgSoftwareUpgradeResponse":{"description":"MsgSoftwareUpgradeResponse is the Msg/SoftwareUpgrade response type.\n\nSince: cosmos-sdk 0.46","type":"object"},"cosmos.upgrade.v1beta1.Plan":{"description":"Plan specifies information about a planned upgrade and when it should occur.","type":"object","properties":{"height":{"description":"The height at which the upgrade must be performed.","type":"string","format":"int64"},"info":{"type":"string","title":"Any application specific upgrade info to be included on-chain\nsuch as a git commit that validators could automatically upgrade to"},"name":{"description":"Sets the name for the upgrade. This name will be used by the upgraded\nversion of the software to apply any special \"on-upgrade\" commands during\nthe first BeginBlock method after the upgrade is applied. It is also used\nto detect whether a software version can handle a given upgrade. If no\nupgrade handler with this name has been set in the software, it will be\nassumed that the software is out-of-date when the upgrade Time or Height is\nreached and the software will exit.","type":"string"},"time":{"description":"Deprecated: Time based upgrades have been deprecated. Time based upgrade logic\nhas been removed from the SDK.\nIf this field is not empty, an error will be thrown.","type":"string","format":"date-time"},"upgraded_client_state":{"description":"Deprecated: UpgradedClientState field has been deprecated. IBC upgrade logic has been\nmoved to the IBC module in the sub module 02-client.\nIf this field is not empty, an error will be thrown.","$ref":"#/definitions/google.protobuf.Any"}}},"cosmos.upgrade.v1beta1.QueryAppliedPlanResponse":{"description":"QueryAppliedPlanResponse is the response type for the Query/AppliedPlan RPC\nmethod.","type":"object","properties":{"height":{"description":"height is the block height at which the plan was applied.","type":"string","format":"int64"}}},"cosmos.upgrade.v1beta1.QueryAuthorityResponse":{"description":"Since: cosmos-sdk 0.46","type":"object","title":"QueryAuthorityResponse is the response type for Query/Authority","properties":{"address":{"type":"string"}}},"cosmos.upgrade.v1beta1.QueryCurrentPlanResponse":{"description":"QueryCurrentPlanResponse is the response type for the Query/CurrentPlan RPC\nmethod.","type":"object","properties":{"plan":{"description":"plan is the current upgrade plan.","$ref":"#/definitions/cosmos.upgrade.v1beta1.Plan"}}},"cosmos.upgrade.v1beta1.QueryModuleVersionsResponse":{"description":"QueryModuleVersionsResponse is the response type for the Query/ModuleVersions\nRPC method.\n\nSince: cosmos-sdk 0.43","type":"object","properties":{"module_versions":{"description":"module_versions is a list of module names with their consensus versions.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.upgrade.v1beta1.ModuleVersion"}}}},"cosmos.upgrade.v1beta1.QueryUpgradedConsensusStateResponse":{"description":"QueryUpgradedConsensusStateResponse is the response type for the Query/UpgradedConsensusState\nRPC method.","type":"object","properties":{"upgraded_consensus_state":{"type":"string","format":"byte","title":"Since: cosmos-sdk 0.43"}}},"cosmos.vesting.v1beta1.MsgCreatePeriodicVestingAccount":{"description":"MsgCreateVestingAccount defines a message that enables creating a vesting\naccount.\n\nSince: cosmos-sdk 0.46","type":"object","properties":{"from_address":{"type":"string"},"start_time":{"description":"start of vesting as unix time (in seconds).","type":"string","format":"int64"},"to_address":{"type":"string"},"vesting_periods":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.vesting.v1beta1.Period"}}}},"cosmos.vesting.v1beta1.MsgCreatePeriodicVestingAccountResponse":{"description":"MsgCreateVestingAccountResponse defines the Msg/CreatePeriodicVestingAccount\nresponse type.\n\nSince: cosmos-sdk 0.46","type":"object"},"cosmos.vesting.v1beta1.MsgCreatePermanentLockedAccount":{"description":"MsgCreatePermanentLockedAccount defines a message that enables creating a permanent\nlocked account.\n\nSince: cosmos-sdk 0.46","type":"object","properties":{"amount":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"from_address":{"type":"string"},"to_address":{"type":"string"}}},"cosmos.vesting.v1beta1.MsgCreatePermanentLockedAccountResponse":{"description":"MsgCreatePermanentLockedAccountResponse defines the Msg/CreatePermanentLockedAccount response type.\n\nSince: cosmos-sdk 0.46","type":"object"},"cosmos.vesting.v1beta1.MsgCreateVestingAccount":{"description":"MsgCreateVestingAccount defines a message that enables creating a vesting\naccount.","type":"object","properties":{"amount":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"delayed":{"type":"boolean"},"end_time":{"description":"end of vesting as unix time (in seconds).","type":"string","format":"int64"},"from_address":{"type":"string"},"to_address":{"type":"string"}}},"cosmos.vesting.v1beta1.MsgCreateVestingAccountResponse":{"description":"MsgCreateVestingAccountResponse defines the Msg/CreateVestingAccount response type.","type":"object"},"cosmos.vesting.v1beta1.Period":{"description":"Period defines a length of time and amount of coins that will vest.","type":"object","properties":{"amount":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"length":{"description":"Period duration in seconds.","type":"string","format":"int64"}}},"google.protobuf.Any":{"type":"object","properties":{"@type":{"type":"string"}},"additionalProperties":{}},"google.rpc.Status":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"details":{"type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}},"message":{"type":"string"}}},"ibc.applications.fee.v1.Fee":{"type":"object","title":"Fee defines the ICS29 receive, acknowledgement and timeout fees","properties":{"ack_fee":{"type":"array","title":"the packet acknowledgement fee","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"recv_fee":{"type":"array","title":"the packet receive fee","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"timeout_fee":{"type":"array","title":"the packet timeout fee","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"ibc.applications.fee.v1.FeeEnabledChannel":{"type":"object","title":"FeeEnabledChannel contains the PortID \u0026 ChannelID for a fee enabled channel","properties":{"channel_id":{"type":"string","title":"unique channel identifier"},"port_id":{"type":"string","title":"unique port identifier"}}},"ibc.applications.fee.v1.IdentifiedPacketFees":{"type":"object","title":"IdentifiedPacketFees contains a list of type PacketFee and associated PacketId","properties":{"packet_fees":{"type":"array","title":"list of packet fees","items":{"type":"object","$ref":"#/definitions/ibc.applications.fee.v1.PacketFee"}},"packet_id":{"title":"unique packet identifier comprised of the channel ID, port ID and sequence","$ref":"#/definitions/ibc.core.channel.v1.PacketId"}}},"ibc.applications.fee.v1.MsgPayPacketFee":{"type":"object","title":"MsgPayPacketFee defines the request type for the PayPacketFee rpc\nThis Msg can be used to pay for a packet at the next sequence send \u0026 should be combined with the Msg that will be\npaid for","properties":{"fee":{"title":"fee encapsulates the recv, ack and timeout fees associated with an IBC packet","$ref":"#/definitions/ibc.applications.fee.v1.Fee"},"relayers":{"type":"array","title":"optional list of relayers permitted to the receive packet fees","items":{"type":"string"}},"signer":{"type":"string","title":"account address to refund fee if necessary"},"source_channel_id":{"type":"string","title":"the source channel unique identifer"},"source_port_id":{"type":"string","title":"the source port unique identifier"}}},"ibc.applications.fee.v1.MsgPayPacketFeeAsync":{"type":"object","title":"MsgPayPacketFeeAsync defines the request type for the PayPacketFeeAsync rpc\nThis Msg can be used to pay for a packet at a specified sequence (instead of the next sequence send)","properties":{"packet_fee":{"title":"the packet fee associated with a particular IBC packet","$ref":"#/definitions/ibc.applications.fee.v1.PacketFee"},"packet_id":{"title":"unique packet identifier comprised of the channel ID, port ID and sequence","$ref":"#/definitions/ibc.core.channel.v1.PacketId"}}},"ibc.applications.fee.v1.MsgPayPacketFeeAsyncResponse":{"type":"object","title":"MsgPayPacketFeeAsyncResponse defines the response type for the PayPacketFeeAsync rpc"},"ibc.applications.fee.v1.MsgPayPacketFeeResponse":{"type":"object","title":"MsgPayPacketFeeResponse defines the response type for the PayPacketFee rpc"},"ibc.applications.fee.v1.MsgRegisterCounterpartyPayee":{"type":"object","title":"MsgRegisterCounterpartyPayee defines the request type for the RegisterCounterpartyPayee rpc","properties":{"channel_id":{"type":"string","title":"unique channel identifier"},"counterparty_payee":{"type":"string","title":"the counterparty payee address"},"port_id":{"type":"string","title":"unique port identifier"},"relayer":{"type":"string","title":"the relayer address"}}},"ibc.applications.fee.v1.MsgRegisterCounterpartyPayeeResponse":{"type":"object","title":"MsgRegisterCounterpartyPayeeResponse defines the response type for the RegisterCounterpartyPayee rpc"},"ibc.applications.fee.v1.MsgRegisterPayee":{"type":"object","title":"MsgRegisterPayee defines the request type for the RegisterPayee rpc","properties":{"channel_id":{"type":"string","title":"unique channel identifier"},"payee":{"type":"string","title":"the payee address"},"port_id":{"type":"string","title":"unique port identifier"},"relayer":{"type":"string","title":"the relayer address"}}},"ibc.applications.fee.v1.MsgRegisterPayeeResponse":{"type":"object","title":"MsgRegisterPayeeResponse defines the response type for the RegisterPayee rpc"},"ibc.applications.fee.v1.PacketFee":{"type":"object","title":"PacketFee contains ICS29 relayer fees, refund address and optional list of permitted relayers","properties":{"fee":{"title":"fee encapsulates the recv, ack and timeout fees associated with an IBC packet","$ref":"#/definitions/ibc.applications.fee.v1.Fee"},"refund_address":{"type":"string","title":"the refund address for unspent fees"},"relayers":{"type":"array","title":"optional list of relayers permitted to receive fees","items":{"type":"string"}}}},"ibc.applications.fee.v1.QueryCounterpartyPayeeResponse":{"type":"object","title":"QueryCounterpartyPayeeResponse defines the response type for the CounterpartyPayee rpc","properties":{"counterparty_payee":{"type":"string","title":"the counterparty payee address used to compensate forward relaying"}}},"ibc.applications.fee.v1.QueryFeeEnabledChannelResponse":{"type":"object","title":"QueryFeeEnabledChannelResponse defines the response type for the FeeEnabledChannel rpc","properties":{"fee_enabled":{"type":"boolean","title":"boolean flag representing the fee enabled channel status"}}},"ibc.applications.fee.v1.QueryFeeEnabledChannelsResponse":{"type":"object","title":"QueryFeeEnabledChannelsResponse defines the response type for the FeeEnabledChannels rpc","properties":{"fee_enabled_channels":{"type":"array","title":"list of fee enabled channels","items":{"type":"object","$ref":"#/definitions/ibc.applications.fee.v1.FeeEnabledChannel"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.applications.fee.v1.QueryIncentivizedPacketResponse":{"type":"object","title":"QueryIncentivizedPacketsResponse defines the response type for the IncentivizedPacket rpc","properties":{"incentivized_packet":{"title":"the identified fees for the incentivized packet","$ref":"#/definitions/ibc.applications.fee.v1.IdentifiedPacketFees"}}},"ibc.applications.fee.v1.QueryIncentivizedPacketsForChannelResponse":{"type":"object","title":"QueryIncentivizedPacketsResponse defines the response type for the incentivized packets RPC","properties":{"incentivized_packets":{"type":"array","title":"Map of all incentivized_packets","items":{"type":"object","$ref":"#/definitions/ibc.applications.fee.v1.IdentifiedPacketFees"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.applications.fee.v1.QueryIncentivizedPacketsResponse":{"type":"object","title":"QueryIncentivizedPacketsResponse defines the response type for the IncentivizedPackets rpc","properties":{"incentivized_packets":{"type":"array","title":"list of identified fees for incentivized packets","items":{"type":"object","$ref":"#/definitions/ibc.applications.fee.v1.IdentifiedPacketFees"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.applications.fee.v1.QueryPayeeResponse":{"type":"object","title":"QueryPayeeResponse defines the response type for the Payee rpc","properties":{"payee_address":{"type":"string","title":"the payee address to which packet fees are paid out"}}},"ibc.applications.fee.v1.QueryTotalAckFeesResponse":{"type":"object","title":"QueryTotalAckFeesResponse defines the response type for the TotalAckFees rpc","properties":{"ack_fees":{"type":"array","title":"the total packet acknowledgement fees","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"ibc.applications.fee.v1.QueryTotalRecvFeesResponse":{"type":"object","title":"QueryTotalRecvFeesResponse defines the response type for the TotalRecvFees rpc","properties":{"recv_fees":{"type":"array","title":"the total packet receive fees","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"ibc.applications.fee.v1.QueryTotalTimeoutFeesResponse":{"type":"object","title":"QueryTotalTimeoutFeesResponse defines the response type for the TotalTimeoutFees rpc","properties":{"timeout_fees":{"type":"array","title":"the total packet timeout fees","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"ibc.applications.interchain_accounts.controller.v1.MsgRegisterInterchainAccount":{"type":"object","title":"MsgRegisterInterchainAccount defines the payload for Msg/RegisterAccount","properties":{"connection_id":{"type":"string"},"ordering":{"$ref":"#/definitions/ibc.core.channel.v1.Order"},"owner":{"type":"string"},"version":{"type":"string"}}},"ibc.applications.interchain_accounts.controller.v1.MsgRegisterInterchainAccountResponse":{"type":"object","title":"MsgRegisterInterchainAccountResponse defines the response for Msg/RegisterAccount","properties":{"channel_id":{"type":"string"},"port_id":{"type":"string"}}},"ibc.applications.interchain_accounts.controller.v1.MsgSendTx":{"type":"object","title":"MsgSendTx defines the payload for Msg/SendTx","properties":{"connection_id":{"type":"string"},"owner":{"type":"string"},"packet_data":{"$ref":"#/definitions/ibc.applications.interchain_accounts.v1.InterchainAccountPacketData"},"relative_timeout":{"description":"Relative timeout timestamp provided will be added to the current block time during transaction execution.\nThe timeout timestamp must be non-zero.","type":"string","format":"uint64"}}},"ibc.applications.interchain_accounts.controller.v1.MsgSendTxResponse":{"type":"object","title":"MsgSendTxResponse defines the response for MsgSendTx","properties":{"sequence":{"type":"string","format":"uint64"}}},"ibc.applications.interchain_accounts.controller.v1.MsgUpdateParams":{"type":"object","title":"MsgUpdateParams defines the payload for Msg/UpdateParams","properties":{"params":{"description":"params defines the 27-interchain-accounts/controller parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/ibc.applications.interchain_accounts.controller.v1.Params"},"signer":{"type":"string","title":"signer address"}}},"ibc.applications.interchain_accounts.controller.v1.MsgUpdateParamsResponse":{"type":"object","title":"MsgUpdateParamsResponse defines the response for Msg/UpdateParams"},"ibc.applications.interchain_accounts.controller.v1.Params":{"description":"Params defines the set of on-chain interchain accounts parameters.\nThe following parameters may be used to disable the controller submodule.","type":"object","properties":{"controller_enabled":{"description":"controller_enabled enables or disables the controller submodule.","type":"boolean"}}},"ibc.applications.interchain_accounts.controller.v1.QueryInterchainAccountResponse":{"description":"QueryInterchainAccountResponse the response type for the Query/InterchainAccount RPC method.","type":"object","properties":{"address":{"type":"string"}}},"ibc.applications.interchain_accounts.controller.v1.QueryParamsResponse":{"description":"QueryParamsResponse is the response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params defines the parameters of the module.","$ref":"#/definitions/ibc.applications.interchain_accounts.controller.v1.Params"}}},"ibc.applications.interchain_accounts.host.v1.MsgModuleQuerySafe":{"type":"object","title":"MsgModuleQuerySafe defines the payload for Msg/ModuleQuerySafe","properties":{"requests":{"description":"requests defines the module safe queries to execute.","type":"array","items":{"type":"object","$ref":"#/definitions/ibc.applications.interchain_accounts.host.v1.QueryRequest"}},"signer":{"type":"string","title":"signer address"}}},"ibc.applications.interchain_accounts.host.v1.MsgModuleQuerySafeResponse":{"type":"object","title":"MsgModuleQuerySafeResponse defines the response for Msg/ModuleQuerySafe","properties":{"height":{"type":"string","format":"uint64","title":"height at which the responses were queried"},"responses":{"type":"array","title":"protobuf encoded responses for each query","items":{"type":"string","format":"byte"}}}},"ibc.applications.interchain_accounts.host.v1.MsgUpdateParams":{"type":"object","title":"MsgUpdateParams defines the payload for Msg/UpdateParams","properties":{"params":{"description":"params defines the 27-interchain-accounts/host parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/ibc.applications.interchain_accounts.host.v1.Params"},"signer":{"type":"string","title":"signer address"}}},"ibc.applications.interchain_accounts.host.v1.MsgUpdateParamsResponse":{"type":"object","title":"MsgUpdateParamsResponse defines the response for Msg/UpdateParams"},"ibc.applications.interchain_accounts.host.v1.Params":{"description":"Params defines the set of on-chain interchain accounts parameters.\nThe following parameters may be used to disable the host submodule.","type":"object","properties":{"allow_messages":{"description":"allow_messages defines a list of sdk message typeURLs allowed to be executed on a host chain.","type":"array","items":{"type":"string"}},"host_enabled":{"description":"host_enabled enables or disables the host submodule.","type":"boolean"}}},"ibc.applications.interchain_accounts.host.v1.QueryParamsResponse":{"description":"QueryParamsResponse is the response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params defines the parameters of the module.","$ref":"#/definitions/ibc.applications.interchain_accounts.host.v1.Params"}}},"ibc.applications.interchain_accounts.host.v1.QueryRequest":{"description":"QueryRequest defines the parameters for a particular query request\nby an interchain account.","type":"object","properties":{"data":{"type":"string","format":"byte","title":"data defines the payload of the query request as defined by ADR-021.\nhttps://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-021-protobuf-query-encoding.md#custom-query-registration-and-routing"},"path":{"type":"string","title":"path defines the path of the query request as defined by ADR-021.\nhttps://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-021-protobuf-query-encoding.md#custom-query-registration-and-routing"}}},"ibc.applications.interchain_accounts.v1.InterchainAccountPacketData":{"description":"InterchainAccountPacketData is comprised of a raw transaction, type of transaction and optional memo field.","type":"object","properties":{"data":{"type":"string","format":"byte"},"memo":{"type":"string"},"type":{"$ref":"#/definitions/ibc.applications.interchain_accounts.v1.Type"}}},"ibc.applications.interchain_accounts.v1.Type":{"description":"- TYPE_UNSPECIFIED: Default zero value enumeration\n - TYPE_EXECUTE_TX: Execute a transaction on an interchain accounts host chain","type":"string","title":"Type defines a classification of message issued from a controller chain to its associated interchain accounts\nhost","default":"TYPE_UNSPECIFIED","enum":["TYPE_UNSPECIFIED","TYPE_EXECUTE_TX"]},"ibc.applications.transfer.v1.DenomTrace":{"description":"DenomTrace contains the base denomination for ICS20 fungible tokens and the\nsource tracing information path.","type":"object","properties":{"base_denom":{"description":"base denomination of the relayed fungible token.","type":"string"},"path":{"description":"path defines the chain of port/channel identifiers used for tracing the\nsource of the fungible token.","type":"string"}}},"ibc.applications.transfer.v1.MsgTransfer":{"type":"object","title":"MsgTransfer defines a msg to transfer fungible tokens (i.e Coins) between\nICS20 enabled chains. See ICS Spec here:\nhttps://github.com/cosmos/ibc/tree/master/spec/app/ics-020-fungible-token-transfer#data-structures","properties":{"memo":{"type":"string","title":"optional memo"},"receiver":{"type":"string","title":"the recipient address on the destination chain"},"sender":{"type":"string","title":"the sender address"},"source_channel":{"type":"string","title":"the channel by which the packet will be sent"},"source_port":{"type":"string","title":"the port on which the packet will be sent"},"timeout_height":{"description":"Timeout height relative to the current block height.\nThe timeout is disabled when set to 0.","$ref":"#/definitions/ibc.core.client.v1.Height"},"timeout_timestamp":{"description":"Timeout timestamp in absolute nanoseconds since unix epoch.\nThe timeout is disabled when set to 0.","type":"string","format":"uint64"},"token":{"title":"the tokens to be transferred","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"ibc.applications.transfer.v1.MsgTransferResponse":{"description":"MsgTransferResponse defines the Msg/Transfer response type.","type":"object","properties":{"sequence":{"type":"string","format":"uint64","title":"sequence number of the transfer packet sent"}}},"ibc.applications.transfer.v1.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","type":"object","properties":{"params":{"description":"params defines the transfer parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/ibc.applications.transfer.v1.Params"},"signer":{"type":"string","title":"signer address"}}},"ibc.applications.transfer.v1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"ibc.applications.transfer.v1.Params":{"description":"Params defines the set of IBC transfer parameters.\nNOTE: To prevent a single token from being transferred, set the\nTransfersEnabled parameter to true and then set the bank module's SendEnabled\nparameter for the denomination to false.","type":"object","properties":{"receive_enabled":{"description":"receive_enabled enables or disables all cross-chain token transfers to this\nchain.","type":"boolean"},"send_enabled":{"description":"send_enabled enables or disables all cross-chain token transfers from this\nchain.","type":"boolean"}}},"ibc.applications.transfer.v1.QueryDenomHashResponse":{"description":"QueryDenomHashResponse is the response type for the Query/DenomHash RPC\nmethod.","type":"object","properties":{"hash":{"description":"hash (in hex format) of the denomination trace information.","type":"string"}}},"ibc.applications.transfer.v1.QueryDenomTraceResponse":{"description":"QueryDenomTraceResponse is the response type for the Query/DenomTrace RPC\nmethod.","type":"object","properties":{"denom_trace":{"description":"denom_trace returns the requested denomination trace information.","$ref":"#/definitions/ibc.applications.transfer.v1.DenomTrace"}}},"ibc.applications.transfer.v1.QueryDenomTracesResponse":{"description":"QueryConnectionsResponse is the response type for the Query/DenomTraces RPC\nmethod.","type":"object","properties":{"denom_traces":{"description":"denom_traces returns all denominations trace information.","type":"array","items":{"type":"object","$ref":"#/definitions/ibc.applications.transfer.v1.DenomTrace"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.applications.transfer.v1.QueryEscrowAddressResponse":{"description":"QueryEscrowAddressResponse is the response type of the EscrowAddress RPC method.","type":"object","properties":{"escrow_address":{"type":"string","title":"the escrow account address"}}},"ibc.applications.transfer.v1.QueryParamsResponse":{"description":"QueryParamsResponse is the response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params defines the parameters of the module.","$ref":"#/definitions/ibc.applications.transfer.v1.Params"}}},"ibc.applications.transfer.v1.QueryTotalEscrowForDenomResponse":{"description":"QueryTotalEscrowForDenomResponse is the response type for TotalEscrowForDenom RPC method.","type":"object","properties":{"amount":{"$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"ibc.core.channel.v1.Channel":{"description":"Channel defines pipeline for exactly-once packet delivery between specific\nmodules on separate blockchains, which has at least one end capable of\nsending packets and one end capable of receiving packets.","type":"object","properties":{"connection_hops":{"type":"array","title":"list of connection identifiers, in order, along which packets sent on\nthis channel will travel","items":{"type":"string"}},"counterparty":{"title":"counterparty channel end","$ref":"#/definitions/ibc.core.channel.v1.Counterparty"},"ordering":{"title":"whether the channel is ordered or unordered","$ref":"#/definitions/ibc.core.channel.v1.Order"},"state":{"title":"current state of the channel end","$ref":"#/definitions/ibc.core.channel.v1.State"},"upgrade_sequence":{"type":"string","format":"uint64","title":"upgrade sequence indicates the latest upgrade attempt performed by this channel\nthe value of 0 indicates the channel has never been upgraded"},"version":{"type":"string","title":"opaque channel version, which is agreed upon during the handshake"}}},"ibc.core.channel.v1.Counterparty":{"type":"object","title":"Counterparty defines a channel end counterparty","properties":{"channel_id":{"type":"string","title":"channel end on the counterparty chain"},"port_id":{"description":"port on the counterparty chain which owns the other end of the channel.","type":"string"}}},"ibc.core.channel.v1.ErrorReceipt":{"description":"ErrorReceipt defines a type which encapsulates the upgrade sequence and error associated with the\nupgrade handshake failure. When a channel upgrade handshake is aborted both chains are expected to increment to the\nnext sequence.","type":"object","properties":{"message":{"type":"string","title":"the error message detailing the cause of failure"},"sequence":{"type":"string","format":"uint64","title":"the channel upgrade sequence"}}},"ibc.core.channel.v1.IdentifiedChannel":{"description":"IdentifiedChannel defines a channel with additional port and channel\nidentifier fields.","type":"object","properties":{"channel_id":{"type":"string","title":"channel identifier"},"connection_hops":{"type":"array","title":"list of connection identifiers, in order, along which packets sent on\nthis channel will travel","items":{"type":"string"}},"counterparty":{"title":"counterparty channel end","$ref":"#/definitions/ibc.core.channel.v1.Counterparty"},"ordering":{"title":"whether the channel is ordered or unordered","$ref":"#/definitions/ibc.core.channel.v1.Order"},"port_id":{"type":"string","title":"port identifier"},"state":{"title":"current state of the channel end","$ref":"#/definitions/ibc.core.channel.v1.State"},"upgrade_sequence":{"type":"string","format":"uint64","title":"upgrade sequence indicates the latest upgrade attempt performed by this channel\nthe value of 0 indicates the channel has never been upgraded"},"version":{"type":"string","title":"opaque channel version, which is agreed upon during the handshake"}}},"ibc.core.channel.v1.MsgAcknowledgement":{"type":"object","title":"MsgAcknowledgement receives incoming IBC acknowledgement","properties":{"acknowledgement":{"type":"string","format":"byte"},"packet":{"$ref":"#/definitions/ibc.core.channel.v1.Packet"},"proof_acked":{"type":"string","format":"byte"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgAcknowledgementResponse":{"description":"MsgAcknowledgementResponse defines the Msg/Acknowledgement response type.","type":"object","properties":{"result":{"$ref":"#/definitions/ibc.core.channel.v1.ResponseResultType"}}},"ibc.core.channel.v1.MsgChannelCloseConfirm":{"description":"MsgChannelCloseConfirm defines a msg sent by a Relayer to Chain B\nto acknowledge the change of channel state to CLOSED on Chain A.","type":"object","properties":{"channel_id":{"type":"string"},"counterparty_upgrade_sequence":{"type":"string","format":"uint64"},"port_id":{"type":"string"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"proof_init":{"type":"string","format":"byte"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelCloseConfirmResponse":{"description":"MsgChannelCloseConfirmResponse defines the Msg/ChannelCloseConfirm response\ntype.","type":"object"},"ibc.core.channel.v1.MsgChannelCloseInit":{"description":"MsgChannelCloseInit defines a msg sent by a Relayer to Chain A\nto close a channel with Chain B.","type":"object","properties":{"channel_id":{"type":"string"},"port_id":{"type":"string"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelCloseInitResponse":{"description":"MsgChannelCloseInitResponse defines the Msg/ChannelCloseInit response type.","type":"object"},"ibc.core.channel.v1.MsgChannelOpenAck":{"description":"MsgChannelOpenAck defines a msg sent by a Relayer to Chain A to acknowledge\nthe change of channel state to TRYOPEN on Chain B.\nWARNING: a channel upgrade MUST NOT initialize an upgrade for this channel\nin the same block as executing this message otherwise the counterparty will\nbe incapable of opening.","type":"object","properties":{"channel_id":{"type":"string"},"counterparty_channel_id":{"type":"string"},"counterparty_version":{"type":"string"},"port_id":{"type":"string"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"proof_try":{"type":"string","format":"byte"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelOpenAckResponse":{"description":"MsgChannelOpenAckResponse defines the Msg/ChannelOpenAck response type.","type":"object"},"ibc.core.channel.v1.MsgChannelOpenConfirm":{"description":"MsgChannelOpenConfirm defines a msg sent by a Relayer to Chain B to\nacknowledge the change of channel state to OPEN on Chain A.","type":"object","properties":{"channel_id":{"type":"string"},"port_id":{"type":"string"},"proof_ack":{"type":"string","format":"byte"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelOpenConfirmResponse":{"description":"MsgChannelOpenConfirmResponse defines the Msg/ChannelOpenConfirm response\ntype.","type":"object"},"ibc.core.channel.v1.MsgChannelOpenInit":{"description":"MsgChannelOpenInit defines an sdk.Msg to initialize a channel handshake. It\nis called by a relayer on Chain A.","type":"object","properties":{"channel":{"$ref":"#/definitions/ibc.core.channel.v1.Channel"},"port_id":{"type":"string"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelOpenInitResponse":{"description":"MsgChannelOpenInitResponse defines the Msg/ChannelOpenInit response type.","type":"object","properties":{"channel_id":{"type":"string"},"version":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelOpenTry":{"description":"MsgChannelOpenInit defines a msg sent by a Relayer to try to open a channel\non Chain B. The version field within the Channel field has been deprecated. Its\nvalue will be ignored by core IBC.","type":"object","properties":{"channel":{"description":"NOTE: the version field within the channel has been deprecated. Its value will be ignored by core IBC.","$ref":"#/definitions/ibc.core.channel.v1.Channel"},"counterparty_version":{"type":"string"},"port_id":{"type":"string"},"previous_channel_id":{"description":"Deprecated: this field is unused. Crossing hello's are no longer supported in core IBC.","type":"string"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"proof_init":{"type":"string","format":"byte"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelOpenTryResponse":{"description":"MsgChannelOpenTryResponse defines the Msg/ChannelOpenTry response type.","type":"object","properties":{"channel_id":{"type":"string"},"version":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelUpgradeAck":{"type":"object","title":"MsgChannelUpgradeAck defines the request type for the ChannelUpgradeAck rpc","properties":{"channel_id":{"type":"string"},"counterparty_upgrade":{"$ref":"#/definitions/ibc.core.channel.v1.Upgrade"},"port_id":{"type":"string"},"proof_channel":{"type":"string","format":"byte"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"proof_upgrade":{"type":"string","format":"byte"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelUpgradeAckResponse":{"type":"object","title":"MsgChannelUpgradeAckResponse defines MsgChannelUpgradeAck response type","properties":{"result":{"$ref":"#/definitions/ibc.core.channel.v1.ResponseResultType"}}},"ibc.core.channel.v1.MsgChannelUpgradeCancel":{"type":"object","title":"MsgChannelUpgradeCancel defines the request type for the ChannelUpgradeCancel rpc","properties":{"channel_id":{"type":"string"},"error_receipt":{"$ref":"#/definitions/ibc.core.channel.v1.ErrorReceipt"},"port_id":{"type":"string"},"proof_error_receipt":{"type":"string","format":"byte"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelUpgradeCancelResponse":{"type":"object","title":"MsgChannelUpgradeCancelResponse defines the MsgChannelUpgradeCancel response type"},"ibc.core.channel.v1.MsgChannelUpgradeConfirm":{"type":"object","title":"MsgChannelUpgradeConfirm defines the request type for the ChannelUpgradeConfirm rpc","properties":{"channel_id":{"type":"string"},"counterparty_channel_state":{"$ref":"#/definitions/ibc.core.channel.v1.State"},"counterparty_upgrade":{"$ref":"#/definitions/ibc.core.channel.v1.Upgrade"},"port_id":{"type":"string"},"proof_channel":{"type":"string","format":"byte"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"proof_upgrade":{"type":"string","format":"byte"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelUpgradeConfirmResponse":{"type":"object","title":"MsgChannelUpgradeConfirmResponse defines MsgChannelUpgradeConfirm response type","properties":{"result":{"$ref":"#/definitions/ibc.core.channel.v1.ResponseResultType"}}},"ibc.core.channel.v1.MsgChannelUpgradeInit":{"description":"MsgChannelUpgradeInit defines the request type for the ChannelUpgradeInit rpc\nWARNING: Initializing a channel upgrade in the same block as opening the channel\nmay result in the counterparty being incapable of opening.","type":"object","properties":{"channel_id":{"type":"string"},"fields":{"$ref":"#/definitions/ibc.core.channel.v1.UpgradeFields"},"port_id":{"type":"string"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelUpgradeInitResponse":{"type":"object","title":"MsgChannelUpgradeInitResponse defines the MsgChannelUpgradeInit response type","properties":{"upgrade":{"$ref":"#/definitions/ibc.core.channel.v1.Upgrade"},"upgrade_sequence":{"type":"string","format":"uint64"}}},"ibc.core.channel.v1.MsgChannelUpgradeOpen":{"type":"object","title":"MsgChannelUpgradeOpen defines the request type for the ChannelUpgradeOpen rpc","properties":{"channel_id":{"type":"string"},"counterparty_channel_state":{"$ref":"#/definitions/ibc.core.channel.v1.State"},"counterparty_upgrade_sequence":{"type":"string","format":"uint64"},"port_id":{"type":"string"},"proof_channel":{"type":"string","format":"byte"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelUpgradeOpenResponse":{"type":"object","title":"MsgChannelUpgradeOpenResponse defines the MsgChannelUpgradeOpen response type"},"ibc.core.channel.v1.MsgChannelUpgradeTimeout":{"type":"object","title":"MsgChannelUpgradeTimeout defines the request type for the ChannelUpgradeTimeout rpc","properties":{"channel_id":{"type":"string"},"counterparty_channel":{"$ref":"#/definitions/ibc.core.channel.v1.Channel"},"port_id":{"type":"string"},"proof_channel":{"type":"string","format":"byte"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelUpgradeTimeoutResponse":{"type":"object","title":"MsgChannelUpgradeTimeoutRepsonse defines the MsgChannelUpgradeTimeout response type"},"ibc.core.channel.v1.MsgChannelUpgradeTry":{"type":"object","title":"MsgChannelUpgradeTry defines the request type for the ChannelUpgradeTry rpc","properties":{"channel_id":{"type":"string"},"counterparty_upgrade_fields":{"$ref":"#/definitions/ibc.core.channel.v1.UpgradeFields"},"counterparty_upgrade_sequence":{"type":"string","format":"uint64"},"port_id":{"type":"string"},"proof_channel":{"type":"string","format":"byte"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"proof_upgrade":{"type":"string","format":"byte"},"proposed_upgrade_connection_hops":{"type":"array","items":{"type":"string"}},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelUpgradeTryResponse":{"type":"object","title":"MsgChannelUpgradeTryResponse defines the MsgChannelUpgradeTry response type","properties":{"result":{"$ref":"#/definitions/ibc.core.channel.v1.ResponseResultType"},"upgrade":{"$ref":"#/definitions/ibc.core.channel.v1.Upgrade"},"upgrade_sequence":{"type":"string","format":"uint64"}}},"ibc.core.channel.v1.MsgPruneAcknowledgements":{"description":"MsgPruneAcknowledgements defines the request type for the PruneAcknowledgements rpc.","type":"object","properties":{"channel_id":{"type":"string"},"limit":{"type":"string","format":"uint64"},"port_id":{"type":"string"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgPruneAcknowledgementsResponse":{"description":"MsgPruneAcknowledgementsResponse defines the response type for the PruneAcknowledgements rpc.","type":"object","properties":{"total_pruned_sequences":{"description":"Number of sequences pruned (includes both packet acknowledgements and packet receipts where appropriate).","type":"string","format":"uint64"},"total_remaining_sequences":{"description":"Number of sequences left after pruning.","type":"string","format":"uint64"}}},"ibc.core.channel.v1.MsgRecvPacket":{"type":"object","title":"MsgRecvPacket receives incoming IBC packet","properties":{"packet":{"$ref":"#/definitions/ibc.core.channel.v1.Packet"},"proof_commitment":{"type":"string","format":"byte"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgRecvPacketResponse":{"description":"MsgRecvPacketResponse defines the Msg/RecvPacket response type.","type":"object","properties":{"result":{"$ref":"#/definitions/ibc.core.channel.v1.ResponseResultType"}}},"ibc.core.channel.v1.MsgTimeout":{"type":"object","title":"MsgTimeout receives timed-out packet","properties":{"next_sequence_recv":{"type":"string","format":"uint64"},"packet":{"$ref":"#/definitions/ibc.core.channel.v1.Packet"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"proof_unreceived":{"type":"string","format":"byte"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgTimeoutOnClose":{"description":"MsgTimeoutOnClose timed-out packet upon counterparty channel closure.","type":"object","properties":{"counterparty_upgrade_sequence":{"type":"string","format":"uint64"},"next_sequence_recv":{"type":"string","format":"uint64"},"packet":{"$ref":"#/definitions/ibc.core.channel.v1.Packet"},"proof_close":{"type":"string","format":"byte"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"proof_unreceived":{"type":"string","format":"byte"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgTimeoutOnCloseResponse":{"description":"MsgTimeoutOnCloseResponse defines the Msg/TimeoutOnClose response type.","type":"object","properties":{"result":{"$ref":"#/definitions/ibc.core.channel.v1.ResponseResultType"}}},"ibc.core.channel.v1.MsgTimeoutResponse":{"description":"MsgTimeoutResponse defines the Msg/Timeout response type.","type":"object","properties":{"result":{"$ref":"#/definitions/ibc.core.channel.v1.ResponseResultType"}}},"ibc.core.channel.v1.MsgUpdateParams":{"description":"MsgUpdateParams is the MsgUpdateParams request type.","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the channel parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/ibc.core.channel.v1.Params"}}},"ibc.core.channel.v1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the MsgUpdateParams response type.","type":"object"},"ibc.core.channel.v1.Order":{"description":"- ORDER_NONE_UNSPECIFIED: zero-value for channel ordering\n - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in\nwhich they were sent.\n - ORDER_ORDERED: packets are delivered exactly in the order which they were sent","type":"string","title":"Order defines if a channel is ORDERED or UNORDERED","default":"ORDER_NONE_UNSPECIFIED","enum":["ORDER_NONE_UNSPECIFIED","ORDER_UNORDERED","ORDER_ORDERED"]},"ibc.core.channel.v1.Packet":{"type":"object","title":"Packet defines a type that carries data across different chains through IBC","properties":{"data":{"type":"string","format":"byte","title":"actual opaque bytes transferred directly to the application module"},"destination_channel":{"description":"identifies the channel end on the receiving chain.","type":"string"},"destination_port":{"description":"identifies the port on the receiving chain.","type":"string"},"sequence":{"description":"number corresponds to the order of sends and receives, where a Packet\nwith an earlier sequence number must be sent and received before a Packet\nwith a later sequence number.","type":"string","format":"uint64"},"source_channel":{"description":"identifies the channel end on the sending chain.","type":"string"},"source_port":{"description":"identifies the port on the sending chain.","type":"string"},"timeout_height":{"title":"block height after which the packet times out","$ref":"#/definitions/ibc.core.client.v1.Height"},"timeout_timestamp":{"type":"string","format":"uint64","title":"block timestamp (in nanoseconds) after which the packet times out"}}},"ibc.core.channel.v1.PacketId":{"type":"object","title":"PacketId is an identifer for a unique Packet\nSource chains refer to packets by source port/channel\nDestination chains refer to packets by destination port/channel","properties":{"channel_id":{"type":"string","title":"channel unique identifier"},"port_id":{"type":"string","title":"channel port identifier"},"sequence":{"type":"string","format":"uint64","title":"packet sequence"}}},"ibc.core.channel.v1.PacketState":{"description":"PacketState defines the generic type necessary to retrieve and store\npacket commitments, acknowledgements, and receipts.\nCaller is responsible for knowing the context necessary to interpret this\nstate as a commitment, acknowledgement, or a receipt.","type":"object","properties":{"channel_id":{"description":"channel unique identifier.","type":"string"},"data":{"description":"embedded data that represents packet state.","type":"string","format":"byte"},"port_id":{"description":"channel port identifier.","type":"string"},"sequence":{"description":"packet sequence.","type":"string","format":"uint64"}}},"ibc.core.channel.v1.Params":{"description":"Params defines the set of IBC channel parameters.","type":"object","properties":{"upgrade_timeout":{"description":"the relative timeout after which channel upgrades will time out.","$ref":"#/definitions/ibc.core.channel.v1.Timeout"}}},"ibc.core.channel.v1.QueryChannelClientStateResponse":{"type":"object","title":"QueryChannelClientStateResponse is the Response type for the\nQuery/QueryChannelClientState RPC method","properties":{"identified_client_state":{"title":"client state associated with the channel","$ref":"#/definitions/ibc.core.client.v1.IdentifiedClientState"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.channel.v1.QueryChannelConsensusStateResponse":{"type":"object","title":"QueryChannelClientStateResponse is the Response type for the\nQuery/QueryChannelClientState RPC method","properties":{"client_id":{"type":"string","title":"client ID associated with the consensus state"},"consensus_state":{"title":"consensus state associated with the channel","$ref":"#/definitions/google.protobuf.Any"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.channel.v1.QueryChannelParamsResponse":{"description":"QueryChannelParamsResponse is the response type for the Query/ChannelParams RPC method.","type":"object","properties":{"params":{"description":"params defines the parameters of the module.","$ref":"#/definitions/ibc.core.channel.v1.Params"}}},"ibc.core.channel.v1.QueryChannelResponse":{"description":"QueryChannelResponse is the response type for the Query/Channel RPC method.\nBesides the Channel end, it includes a proof and the height from which the\nproof was retrieved.","type":"object","properties":{"channel":{"title":"channel associated with the request identifiers","$ref":"#/definitions/ibc.core.channel.v1.Channel"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.channel.v1.QueryChannelsResponse":{"description":"QueryChannelsResponse is the response type for the Query/Channels RPC method.","type":"object","properties":{"channels":{"description":"list of stored channels of the chain.","type":"array","items":{"type":"object","$ref":"#/definitions/ibc.core.channel.v1.IdentifiedChannel"}},"height":{"title":"query block height","$ref":"#/definitions/ibc.core.client.v1.Height"},"pagination":{"title":"pagination response","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.core.channel.v1.QueryConnectionChannelsResponse":{"type":"object","title":"QueryConnectionChannelsResponse is the Response type for the\nQuery/QueryConnectionChannels RPC method","properties":{"channels":{"description":"list of channels associated with a connection.","type":"array","items":{"type":"object","$ref":"#/definitions/ibc.core.channel.v1.IdentifiedChannel"}},"height":{"title":"query block height","$ref":"#/definitions/ibc.core.client.v1.Height"},"pagination":{"title":"pagination response","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.core.channel.v1.QueryNextSequenceReceiveResponse":{"type":"object","title":"QuerySequenceResponse is the response type for the\nQuery/QueryNextSequenceReceiveResponse RPC method","properties":{"next_sequence_receive":{"type":"string","format":"uint64","title":"next sequence receive number"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.channel.v1.QueryNextSequenceSendResponse":{"type":"object","title":"QueryNextSequenceSendResponse is the request type for the\nQuery/QueryNextSequenceSend RPC method","properties":{"next_sequence_send":{"type":"string","format":"uint64","title":"next sequence send number"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.channel.v1.QueryPacketAcknowledgementResponse":{"type":"object","title":"QueryPacketAcknowledgementResponse defines the client query response for a\npacket which also includes a proof and the height from which the\nproof was retrieved","properties":{"acknowledgement":{"type":"string","format":"byte","title":"packet associated with the request fields"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.channel.v1.QueryPacketAcknowledgementsResponse":{"type":"object","title":"QueryPacketAcknowledgemetsResponse is the request type for the\nQuery/QueryPacketAcknowledgements RPC method","properties":{"acknowledgements":{"type":"array","items":{"type":"object","$ref":"#/definitions/ibc.core.channel.v1.PacketState"}},"height":{"title":"query block height","$ref":"#/definitions/ibc.core.client.v1.Height"},"pagination":{"title":"pagination response","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.core.channel.v1.QueryPacketCommitmentResponse":{"type":"object","title":"QueryPacketCommitmentResponse defines the client query response for a packet\nwhich also includes a proof and the height from which the proof was\nretrieved","properties":{"commitment":{"type":"string","format":"byte","title":"packet associated with the request fields"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.channel.v1.QueryPacketCommitmentsResponse":{"type":"object","title":"QueryPacketCommitmentsResponse is the request type for the\nQuery/QueryPacketCommitments RPC method","properties":{"commitments":{"type":"array","items":{"type":"object","$ref":"#/definitions/ibc.core.channel.v1.PacketState"}},"height":{"title":"query block height","$ref":"#/definitions/ibc.core.client.v1.Height"},"pagination":{"title":"pagination response","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.core.channel.v1.QueryPacketReceiptResponse":{"type":"object","title":"QueryPacketReceiptResponse defines the client query response for a packet\nreceipt which also includes a proof, and the height from which the proof was\nretrieved","properties":{"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"},"received":{"type":"boolean","title":"success flag for if receipt exists"}}},"ibc.core.channel.v1.QueryUnreceivedAcksResponse":{"type":"object","title":"QueryUnreceivedAcksResponse is the response type for the\nQuery/UnreceivedAcks RPC method","properties":{"height":{"title":"query block height","$ref":"#/definitions/ibc.core.client.v1.Height"},"sequences":{"type":"array","title":"list of unreceived acknowledgement sequences","items":{"type":"string","format":"uint64"}}}},"ibc.core.channel.v1.QueryUnreceivedPacketsResponse":{"type":"object","title":"QueryUnreceivedPacketsResponse is the response type for the\nQuery/UnreceivedPacketCommitments RPC method","properties":{"height":{"title":"query block height","$ref":"#/definitions/ibc.core.client.v1.Height"},"sequences":{"type":"array","title":"list of unreceived packet sequences","items":{"type":"string","format":"uint64"}}}},"ibc.core.channel.v1.QueryUpgradeErrorResponse":{"type":"object","title":"QueryUpgradeErrorResponse is the response type for the Query/QueryUpgradeError RPC method","properties":{"error_receipt":{"$ref":"#/definitions/ibc.core.channel.v1.ErrorReceipt"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.channel.v1.QueryUpgradeResponse":{"type":"object","title":"QueryUpgradeResponse is the response type for the QueryUpgradeResponse RPC method","properties":{"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"},"upgrade":{"$ref":"#/definitions/ibc.core.channel.v1.Upgrade"}}},"ibc.core.channel.v1.ResponseResultType":{"description":"- RESPONSE_RESULT_TYPE_UNSPECIFIED: Default zero value enumeration\n - RESPONSE_RESULT_TYPE_NOOP: The message did not call the IBC application callbacks (because, for example, the packet had already been relayed)\n - RESPONSE_RESULT_TYPE_SUCCESS: The message was executed successfully\n - RESPONSE_RESULT_TYPE_FAILURE: The message was executed unsuccessfully","type":"string","title":"ResponseResultType defines the possible outcomes of the execution of a message","default":"RESPONSE_RESULT_TYPE_UNSPECIFIED","enum":["RESPONSE_RESULT_TYPE_UNSPECIFIED","RESPONSE_RESULT_TYPE_NOOP","RESPONSE_RESULT_TYPE_SUCCESS","RESPONSE_RESULT_TYPE_FAILURE"]},"ibc.core.channel.v1.State":{"description":"State defines if a channel is in one of the following states:\nCLOSED, INIT, TRYOPEN, OPEN, FLUSHING, FLUSHCOMPLETE or UNINITIALIZED.\n\n - STATE_UNINITIALIZED_UNSPECIFIED: Default State\n - STATE_INIT: A channel has just started the opening handshake.\n - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain.\n - STATE_OPEN: A channel has completed the handshake. Open channels are\nready to send and receive packets.\n - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive\npackets.\n - STATE_FLUSHING: A channel has just accepted the upgrade handshake attempt and is flushing in-flight packets.\n - STATE_FLUSHCOMPLETE: A channel has just completed flushing any in-flight packets.","type":"string","default":"STATE_UNINITIALIZED_UNSPECIFIED","enum":["STATE_UNINITIALIZED_UNSPECIFIED","STATE_INIT","STATE_TRYOPEN","STATE_OPEN","STATE_CLOSED","STATE_FLUSHING","STATE_FLUSHCOMPLETE"]},"ibc.core.channel.v1.Timeout":{"description":"Timeout defines an execution deadline structure for 04-channel handlers.\nThis includes packet lifecycle handlers as well as the upgrade handshake handlers.\nA valid Timeout contains either one or both of a timestamp and block height (sequence).","type":"object","properties":{"height":{"title":"block height after which the packet or upgrade times out","$ref":"#/definitions/ibc.core.client.v1.Height"},"timestamp":{"type":"string","format":"uint64","title":"block timestamp (in nanoseconds) after which the packet or upgrade times out"}}},"ibc.core.channel.v1.Upgrade":{"description":"Upgrade is a verifiable type which contains the relevant information\nfor an attempted upgrade. It provides the proposed changes to the channel\nend, the timeout for this upgrade attempt and the next packet sequence\nwhich allows the counterparty to efficiently know the highest sequence it has received.\nThe next sequence send is used for pruning and upgrading from unordered to ordered channels.","type":"object","properties":{"fields":{"$ref":"#/definitions/ibc.core.channel.v1.UpgradeFields"},"next_sequence_send":{"type":"string","format":"uint64"},"timeout":{"$ref":"#/definitions/ibc.core.channel.v1.Timeout"}}},"ibc.core.channel.v1.UpgradeFields":{"description":"UpgradeFields are the fields in a channel end which may be changed\nduring a channel upgrade.","type":"object","properties":{"connection_hops":{"type":"array","items":{"type":"string"}},"ordering":{"$ref":"#/definitions/ibc.core.channel.v1.Order"},"version":{"type":"string"}}},"ibc.core.client.v1.ConsensusStateWithHeight":{"description":"ConsensusStateWithHeight defines a consensus state with an additional height\nfield.","type":"object","properties":{"consensus_state":{"title":"consensus state","$ref":"#/definitions/google.protobuf.Any"},"height":{"title":"consensus state height","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.client.v1.Height":{"description":"Normally the RevisionHeight is incremented at each height while keeping\nRevisionNumber the same. However some consensus algorithms may choose to\nreset the height in certain conditions e.g. hard forks, state-machine\nbreaking changes In these cases, the RevisionNumber is incremented so that\nheight continues to be monitonically increasing even as the RevisionHeight\ngets reset","type":"object","title":"Height is a monotonically increasing data type\nthat can be compared against another Height for the purposes of updating and\nfreezing clients","properties":{"revision_height":{"type":"string","format":"uint64","title":"the height within the given revision"},"revision_number":{"type":"string","format":"uint64","title":"the revision that the client is currently on"}}},"ibc.core.client.v1.IdentifiedClientState":{"description":"IdentifiedClientState defines a client state with an additional client\nidentifier field.","type":"object","properties":{"client_id":{"type":"string","title":"client identifier"},"client_state":{"title":"client state","$ref":"#/definitions/google.protobuf.Any"}}},"ibc.core.client.v1.MsgCreateClient":{"type":"object","title":"MsgCreateClient defines a message to create an IBC client","properties":{"client_state":{"title":"light client state","$ref":"#/definitions/google.protobuf.Any"},"consensus_state":{"description":"consensus state associated with the client that corresponds to a given\nheight.","$ref":"#/definitions/google.protobuf.Any"},"signer":{"type":"string","title":"signer address"}}},"ibc.core.client.v1.MsgCreateClientResponse":{"description":"MsgCreateClientResponse defines the Msg/CreateClient response type.","type":"object"},"ibc.core.client.v1.MsgIBCSoftwareUpgrade":{"type":"object","title":"MsgIBCSoftwareUpgrade defines the message used to schedule an upgrade of an IBC client using a v1 governance proposal","properties":{"plan":{"$ref":"#/definitions/cosmos.upgrade.v1beta1.Plan"},"signer":{"type":"string","title":"signer address"},"upgraded_client_state":{"description":"An UpgradedClientState must be provided to perform an IBC breaking upgrade.\nThis will make the chain commit to the correct upgraded (self) client state\nbefore the upgrade occurs, so that connecting chains can verify that the\nnew upgraded client is valid by verifying a proof on the previous version\nof the chain. This will allow IBC connections to persist smoothly across\nplanned chain upgrades. Correspondingly, the UpgradedClientState field has been\ndeprecated in the Cosmos SDK to allow for this logic to exist solely in\nthe 02-client module.","$ref":"#/definitions/google.protobuf.Any"}}},"ibc.core.client.v1.MsgIBCSoftwareUpgradeResponse":{"description":"MsgIBCSoftwareUpgradeResponse defines the Msg/IBCSoftwareUpgrade response type.","type":"object"},"ibc.core.client.v1.MsgRecoverClient":{"description":"MsgRecoverClient defines the message used to recover a frozen or expired client.","type":"object","properties":{"signer":{"type":"string","title":"signer address"},"subject_client_id":{"type":"string","title":"the client identifier for the client to be updated if the proposal passes"},"substitute_client_id":{"type":"string","title":"the substitute client identifier for the client which will replace the subject\nclient"}}},"ibc.core.client.v1.MsgRecoverClientResponse":{"description":"MsgRecoverClientResponse defines the Msg/RecoverClient response type.","type":"object"},"ibc.core.client.v1.MsgSubmitMisbehaviour":{"description":"MsgSubmitMisbehaviour defines an sdk.Msg type that submits Evidence for\nlight client misbehaviour.\nThis message has been deprecated. Use MsgUpdateClient instead.","type":"object","properties":{"client_id":{"type":"string","title":"client unique identifier"},"misbehaviour":{"title":"misbehaviour used for freezing the light client","$ref":"#/definitions/google.protobuf.Any"},"signer":{"type":"string","title":"signer address"}}},"ibc.core.client.v1.MsgSubmitMisbehaviourResponse":{"description":"MsgSubmitMisbehaviourResponse defines the Msg/SubmitMisbehaviour response\ntype.","type":"object"},"ibc.core.client.v1.MsgUpdateClient":{"description":"MsgUpdateClient defines an sdk.Msg to update a IBC client state using\nthe given client message.","type":"object","properties":{"client_id":{"type":"string","title":"client unique identifier"},"client_message":{"title":"client message to update the light client","$ref":"#/definitions/google.protobuf.Any"},"signer":{"type":"string","title":"signer address"}}},"ibc.core.client.v1.MsgUpdateClientResponse":{"description":"MsgUpdateClientResponse defines the Msg/UpdateClient response type.","type":"object"},"ibc.core.client.v1.MsgUpdateParams":{"description":"MsgUpdateParams defines the sdk.Msg type to update the client parameters.","type":"object","properties":{"params":{"description":"params defines the client parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/ibc.core.client.v1.Params"},"signer":{"type":"string","title":"signer address"}}},"ibc.core.client.v1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the MsgUpdateParams response type.","type":"object"},"ibc.core.client.v1.MsgUpgradeClient":{"type":"object","title":"MsgUpgradeClient defines an sdk.Msg to upgrade an IBC client to a new client\nstate","properties":{"client_id":{"type":"string","title":"client unique identifier"},"client_state":{"title":"upgraded client state","$ref":"#/definitions/google.protobuf.Any"},"consensus_state":{"title":"upgraded consensus state, only contains enough information to serve as a\nbasis of trust in update logic","$ref":"#/definitions/google.protobuf.Any"},"proof_upgrade_client":{"type":"string","format":"byte","title":"proof that old chain committed to new client"},"proof_upgrade_consensus_state":{"type":"string","format":"byte","title":"proof that old chain committed to new consensus state"},"signer":{"type":"string","title":"signer address"}}},"ibc.core.client.v1.MsgUpgradeClientResponse":{"description":"MsgUpgradeClientResponse defines the Msg/UpgradeClient response type.","type":"object"},"ibc.core.client.v1.Params":{"description":"Params defines the set of IBC light client parameters.","type":"object","properties":{"allowed_clients":{"description":"allowed_clients defines the list of allowed client state types which can be created\nand interacted with. If a client type is removed from the allowed clients list, usage\nof this client will be disabled until it is added again to the list.","type":"array","items":{"type":"string"}}}},"ibc.core.client.v1.QueryClientParamsResponse":{"description":"QueryClientParamsResponse is the response type for the Query/ClientParams RPC\nmethod.","type":"object","properties":{"params":{"description":"params defines the parameters of the module.","$ref":"#/definitions/ibc.core.client.v1.Params"}}},"ibc.core.client.v1.QueryClientStateResponse":{"description":"QueryClientStateResponse is the response type for the Query/ClientState RPC\nmethod. Besides the client state, it includes a proof and the height from\nwhich the proof was retrieved.","type":"object","properties":{"client_state":{"title":"client state associated with the request identifier","$ref":"#/definitions/google.protobuf.Any"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.client.v1.QueryClientStatesResponse":{"description":"QueryClientStatesResponse is the response type for the Query/ClientStates RPC\nmethod.","type":"object","properties":{"client_states":{"description":"list of stored ClientStates of the chain.","type":"array","items":{"type":"object","$ref":"#/definitions/ibc.core.client.v1.IdentifiedClientState"}},"pagination":{"title":"pagination response","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.core.client.v1.QueryClientStatusResponse":{"description":"QueryClientStatusResponse is the response type for the Query/ClientStatus RPC\nmethod. It returns the current status of the IBC client.","type":"object","properties":{"status":{"type":"string"}}},"ibc.core.client.v1.QueryConsensusStateHeightsResponse":{"type":"object","title":"QueryConsensusStateHeightsResponse is the response type for the\nQuery/ConsensusStateHeights RPC method","properties":{"consensus_state_heights":{"type":"array","title":"consensus state heights","items":{"type":"object","$ref":"#/definitions/ibc.core.client.v1.Height"}},"pagination":{"title":"pagination response","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.core.client.v1.QueryConsensusStateResponse":{"type":"object","title":"QueryConsensusStateResponse is the response type for the Query/ConsensusState\nRPC method","properties":{"consensus_state":{"title":"consensus state associated with the client identifier at the given height","$ref":"#/definitions/google.protobuf.Any"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.client.v1.QueryConsensusStatesResponse":{"type":"object","title":"QueryConsensusStatesResponse is the response type for the\nQuery/ConsensusStates RPC method","properties":{"consensus_states":{"type":"array","title":"consensus states associated with the identifier","items":{"type":"object","$ref":"#/definitions/ibc.core.client.v1.ConsensusStateWithHeight"}},"pagination":{"title":"pagination response","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.core.client.v1.QueryUpgradedClientStateResponse":{"description":"QueryUpgradedClientStateResponse is the response type for the\nQuery/UpgradedClientState RPC method.","type":"object","properties":{"upgraded_client_state":{"title":"client state associated with the request identifier","$ref":"#/definitions/google.protobuf.Any"}}},"ibc.core.client.v1.QueryUpgradedConsensusStateResponse":{"description":"QueryUpgradedConsensusStateResponse is the response type for the\nQuery/UpgradedConsensusState RPC method.","type":"object","properties":{"upgraded_consensus_state":{"title":"Consensus state associated with the request identifier","$ref":"#/definitions/google.protobuf.Any"}}},"ibc.core.client.v1.QueryVerifyMembershipRequest":{"type":"object","title":"QueryVerifyMembershipRequest is the request type for the Query/VerifyMembership RPC method","properties":{"block_delay":{"type":"string","format":"uint64","title":"optional block delay"},"client_id":{"description":"client unique identifier.","type":"string"},"merkle_path":{"description":"the commitment key path.","$ref":"#/definitions/ibc.core.commitment.v1.MerklePath"},"proof":{"description":"the proof to be verified by the client.","type":"string","format":"byte"},"proof_height":{"description":"the height of the commitment root at which the proof is verified.","$ref":"#/definitions/ibc.core.client.v1.Height"},"time_delay":{"type":"string","format":"uint64","title":"optional time delay"},"value":{"description":"the value which is proven.","type":"string","format":"byte"}}},"ibc.core.client.v1.QueryVerifyMembershipResponse":{"type":"object","title":"QueryVerifyMembershipResponse is the response type for the Query/VerifyMembership RPC method","properties":{"success":{"description":"boolean indicating success or failure of proof verification.","type":"boolean"}}},"ibc.core.commitment.v1.MerklePath":{"type":"object","title":"MerklePath is the path used to verify commitment proofs, which can be an\narbitrary structured object (defined by a commitment type).\nMerklePath is represented from root-to-leaf","properties":{"key_path":{"type":"array","items":{"type":"string"}}}},"ibc.core.commitment.v1.MerklePrefix":{"type":"object","title":"MerklePrefix is merkle path prefixed to the key.\nThe constructed key from the Path and the key will be append(Path.KeyPath,\nappend(Path.KeyPrefix, key...))","properties":{"key_prefix":{"type":"string","format":"byte"}}},"ibc.core.connection.v1.ConnectionEnd":{"description":"ConnectionEnd defines a stateful object on a chain connected to another\nseparate one.\nNOTE: there must only be 2 defined ConnectionEnds to establish\na connection between two chains.","type":"object","properties":{"client_id":{"description":"client associated with this connection.","type":"string"},"counterparty":{"description":"counterparty chain associated with this connection.","$ref":"#/definitions/ibc.core.connection.v1.Counterparty"},"delay_period":{"description":"delay period that must pass before a consensus state can be used for\npacket-verification NOTE: delay period logic is only implemented by some\nclients.","type":"string","format":"uint64"},"state":{"description":"current state of the connection end.","$ref":"#/definitions/ibc.core.connection.v1.State"},"versions":{"description":"IBC version which can be utilised to determine encodings or protocols for\nchannels or packets utilising this connection.","type":"array","items":{"type":"object","$ref":"#/definitions/ibc.core.connection.v1.Version"}}}},"ibc.core.connection.v1.Counterparty":{"description":"Counterparty defines the counterparty chain associated with a connection end.","type":"object","properties":{"client_id":{"description":"identifies the client on the counterparty chain associated with a given\nconnection.","type":"string"},"connection_id":{"description":"identifies the connection end on the counterparty chain associated with a\ngiven connection.","type":"string"},"prefix":{"description":"commitment merkle prefix of the counterparty chain.","$ref":"#/definitions/ibc.core.commitment.v1.MerklePrefix"}}},"ibc.core.connection.v1.IdentifiedConnection":{"description":"IdentifiedConnection defines a connection with additional connection\nidentifier field.","type":"object","properties":{"client_id":{"description":"client associated with this connection.","type":"string"},"counterparty":{"description":"counterparty chain associated with this connection.","$ref":"#/definitions/ibc.core.connection.v1.Counterparty"},"delay_period":{"description":"delay period associated with this connection.","type":"string","format":"uint64"},"id":{"description":"connection identifier.","type":"string"},"state":{"description":"current state of the connection end.","$ref":"#/definitions/ibc.core.connection.v1.State"},"versions":{"type":"array","title":"IBC version which can be utilised to determine encodings or protocols for\nchannels or packets utilising this connection","items":{"type":"object","$ref":"#/definitions/ibc.core.connection.v1.Version"}}}},"ibc.core.connection.v1.MsgConnectionOpenAck":{"description":"MsgConnectionOpenAck defines a msg sent by a Relayer to Chain A to\nacknowledge the change of connection state to TRYOPEN on Chain B.","type":"object","properties":{"client_state":{"$ref":"#/definitions/google.protobuf.Any"},"connection_id":{"type":"string"},"consensus_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"counterparty_connection_id":{"type":"string"},"host_consensus_state_proof":{"type":"string","format":"byte","title":"optional proof data for host state machines that are unable to introspect their own consensus state"},"proof_client":{"type":"string","format":"byte","title":"proof of client state included in message"},"proof_consensus":{"type":"string","format":"byte","title":"proof of client consensus state"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"proof_try":{"type":"string","format":"byte","title":"proof of the initialization the connection on Chain B: `UNITIALIZED -\u003e\nTRYOPEN`"},"signer":{"type":"string"},"version":{"$ref":"#/definitions/ibc.core.connection.v1.Version"}}},"ibc.core.connection.v1.MsgConnectionOpenAckResponse":{"description":"MsgConnectionOpenAckResponse defines the Msg/ConnectionOpenAck response type.","type":"object"},"ibc.core.connection.v1.MsgConnectionOpenConfirm":{"description":"MsgConnectionOpenConfirm defines a msg sent by a Relayer to Chain B to\nacknowledge the change of connection state to OPEN on Chain A.","type":"object","properties":{"connection_id":{"type":"string"},"proof_ack":{"type":"string","format":"byte","title":"proof for the change of the connection state on Chain A: `INIT -\u003e OPEN`"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"signer":{"type":"string"}}},"ibc.core.connection.v1.MsgConnectionOpenConfirmResponse":{"description":"MsgConnectionOpenConfirmResponse defines the Msg/ConnectionOpenConfirm\nresponse type.","type":"object"},"ibc.core.connection.v1.MsgConnectionOpenInit":{"description":"MsgConnectionOpenInit defines the msg sent by an account on Chain A to\ninitialize a connection with Chain B.","type":"object","properties":{"client_id":{"type":"string"},"counterparty":{"$ref":"#/definitions/ibc.core.connection.v1.Counterparty"},"delay_period":{"type":"string","format":"uint64"},"signer":{"type":"string"},"version":{"$ref":"#/definitions/ibc.core.connection.v1.Version"}}},"ibc.core.connection.v1.MsgConnectionOpenInitResponse":{"description":"MsgConnectionOpenInitResponse defines the Msg/ConnectionOpenInit response\ntype.","type":"object"},"ibc.core.connection.v1.MsgConnectionOpenTry":{"description":"MsgConnectionOpenTry defines a msg sent by a Relayer to try to open a\nconnection on Chain B.","type":"object","properties":{"client_id":{"type":"string"},"client_state":{"$ref":"#/definitions/google.protobuf.Any"},"consensus_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"counterparty":{"$ref":"#/definitions/ibc.core.connection.v1.Counterparty"},"counterparty_versions":{"type":"array","items":{"type":"object","$ref":"#/definitions/ibc.core.connection.v1.Version"}},"delay_period":{"type":"string","format":"uint64"},"host_consensus_state_proof":{"type":"string","format":"byte","title":"optional proof data for host state machines that are unable to introspect their own consensus state"},"previous_connection_id":{"description":"Deprecated: this field is unused. Crossing hellos are no longer supported in core IBC.","type":"string"},"proof_client":{"type":"string","format":"byte","title":"proof of client state included in message"},"proof_consensus":{"type":"string","format":"byte","title":"proof of client consensus state"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"proof_init":{"type":"string","format":"byte","title":"proof of the initialization the connection on Chain A: `UNITIALIZED -\u003e\nINIT`"},"signer":{"type":"string"}}},"ibc.core.connection.v1.MsgConnectionOpenTryResponse":{"description":"MsgConnectionOpenTryResponse defines the Msg/ConnectionOpenTry response type.","type":"object"},"ibc.core.connection.v1.MsgUpdateParams":{"description":"MsgUpdateParams defines the sdk.Msg type to update the connection parameters.","type":"object","properties":{"params":{"description":"params defines the connection parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/ibc.core.connection.v1.Params"},"signer":{"type":"string","title":"signer address"}}},"ibc.core.connection.v1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the MsgUpdateParams response type.","type":"object"},"ibc.core.connection.v1.Params":{"description":"Params defines the set of Connection parameters.","type":"object","properties":{"max_expected_time_per_block":{"description":"maximum expected time per block (in nanoseconds), used to enforce block delay. This parameter should reflect the\nlargest amount of time that the chain might reasonably take to produce the next block under normal operating\nconditions. A safe choice is 3-5x the expected time per block.","type":"string","format":"uint64"}}},"ibc.core.connection.v1.QueryClientConnectionsResponse":{"type":"object","title":"QueryClientConnectionsResponse is the response type for the\nQuery/ClientConnections RPC method","properties":{"connection_paths":{"description":"slice of all the connection paths associated with a client.","type":"array","items":{"type":"string"}},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was generated","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.connection.v1.QueryConnectionClientStateResponse":{"type":"object","title":"QueryConnectionClientStateResponse is the response type for the\nQuery/ConnectionClientState RPC method","properties":{"identified_client_state":{"title":"client state associated with the channel","$ref":"#/definitions/ibc.core.client.v1.IdentifiedClientState"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.connection.v1.QueryConnectionConsensusStateResponse":{"type":"object","title":"QueryConnectionConsensusStateResponse is the response type for the\nQuery/ConnectionConsensusState RPC method","properties":{"client_id":{"type":"string","title":"client ID associated with the consensus state"},"consensus_state":{"title":"consensus state associated with the channel","$ref":"#/definitions/google.protobuf.Any"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.connection.v1.QueryConnectionParamsResponse":{"description":"QueryConnectionParamsResponse is the response type for the Query/ConnectionParams RPC method.","type":"object","properties":{"params":{"description":"params defines the parameters of the module.","$ref":"#/definitions/ibc.core.connection.v1.Params"}}},"ibc.core.connection.v1.QueryConnectionResponse":{"description":"QueryConnectionResponse is the response type for the Query/Connection RPC\nmethod. Besides the connection end, it includes a proof and the height from\nwhich the proof was retrieved.","type":"object","properties":{"connection":{"title":"connection associated with the request identifier","$ref":"#/definitions/ibc.core.connection.v1.ConnectionEnd"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.connection.v1.QueryConnectionsResponse":{"description":"QueryConnectionsResponse is the response type for the Query/Connections RPC\nmethod.","type":"object","properties":{"connections":{"description":"list of stored connections of the chain.","type":"array","items":{"type":"object","$ref":"#/definitions/ibc.core.connection.v1.IdentifiedConnection"}},"height":{"title":"query block height","$ref":"#/definitions/ibc.core.client.v1.Height"},"pagination":{"title":"pagination response","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.core.connection.v1.State":{"description":"State defines if a connection is in one of the following states:\nINIT, TRYOPEN, OPEN or UNINITIALIZED.\n\n - STATE_UNINITIALIZED_UNSPECIFIED: Default State\n - STATE_INIT: A connection end has just started the opening handshake.\n - STATE_TRYOPEN: A connection end has acknowledged the handshake step on the counterparty\nchain.\n - STATE_OPEN: A connection end has completed the handshake.","type":"string","default":"STATE_UNINITIALIZED_UNSPECIFIED","enum":["STATE_UNINITIALIZED_UNSPECIFIED","STATE_INIT","STATE_TRYOPEN","STATE_OPEN"]},"ibc.core.connection.v1.Version":{"description":"Version defines the versioning scheme used to negotiate the IBC verison in\nthe connection handshake.","type":"object","properties":{"features":{"type":"array","title":"list of features compatible with the specified identifier","items":{"type":"string"}},"identifier":{"type":"string","title":"unique version identifier"}}},"ibc.lightclients.wasm.v1.MsgMigrateContract":{"description":"MsgMigrateContract defines the request type for the MigrateContract rpc.","type":"object","properties":{"checksum":{"type":"string","format":"byte","title":"checksum is the sha256 hash of the new wasm byte code for the contract"},"client_id":{"type":"string","title":"the client id of the contract"},"msg":{"type":"string","format":"byte","title":"the json encoded message to be passed to the contract on migration"},"signer":{"type":"string","title":"signer address"}}},"ibc.lightclients.wasm.v1.MsgMigrateContractResponse":{"type":"object","title":"MsgMigrateContractResponse defines the response type for the MigrateContract rpc"},"ibc.lightclients.wasm.v1.MsgRemoveChecksum":{"description":"MsgRemoveChecksum defines the request type for the MsgRemoveChecksum rpc.","type":"object","properties":{"checksum":{"type":"string","format":"byte","title":"checksum is the sha256 hash to be removed from the store"},"signer":{"type":"string","title":"signer address"}}},"ibc.lightclients.wasm.v1.MsgRemoveChecksumResponse":{"type":"object","title":"MsgStoreChecksumResponse defines the response type for the StoreCode rpc"},"ibc.lightclients.wasm.v1.MsgStoreCode":{"description":"MsgStoreCode defines the request type for the StoreCode rpc.","type":"object","properties":{"signer":{"type":"string","title":"signer address"},"wasm_byte_code":{"type":"string","format":"byte","title":"wasm byte code of light client contract. It can be raw or gzip compressed"}}},"ibc.lightclients.wasm.v1.MsgStoreCodeResponse":{"type":"object","title":"MsgStoreCodeResponse defines the response type for the StoreCode rpc","properties":{"checksum":{"type":"string","format":"byte","title":"checksum is the sha256 hash of the stored code"}}},"ibc.lightclients.wasm.v1.QueryChecksumsResponse":{"description":"QueryChecksumsResponse is the response type for the Query/Checksums RPC method.","type":"object","properties":{"checksums":{"description":"checksums is a list of the hex encoded checksums of all wasm codes stored.","type":"array","items":{"type":"string"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.lightclients.wasm.v1.QueryCodeResponse":{"description":"QueryCodeResponse is the response type for the Query/Code RPC method.","type":"object","properties":{"data":{"type":"string","format":"byte"}}},"modules.claim.v1.AirdropSupply":{"type":"object","properties":{"supply":{"$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"modules.claim.v1.ClaimRecord":{"type":"object","properties":{"address":{"type":"string"},"claimable":{"type":"string"},"claimedMissions":{"type":"array","items":{"type":"string","format":"uint64"}},"completedMissions":{"type":"array","items":{"type":"string","format":"uint64"}}}},"modules.claim.v1.DecayInformation":{"type":"object","title":"DecayInformation defines the information about decay for the airdrop\nwhen claimable airdrop amount starts to decrease and when it ends","properties":{"decayEnd":{"type":"string","format":"date-time"},"decayStart":{"type":"string","format":"date-time"},"enabled":{"type":"boolean"}}},"modules.claim.v1.InitialClaim":{"type":"object","properties":{"enabled":{"type":"boolean"},"missionID":{"type":"string","format":"uint64"}}},"modules.claim.v1.Mission":{"type":"object","properties":{"description":{"type":"string"},"missionID":{"type":"string","format":"uint64"},"weight":{"type":"string"}}},"modules.claim.v1.MsgClaim":{"type":"object","properties":{"claimer":{"type":"string"},"missionID":{"type":"string","format":"uint64"}}},"modules.claim.v1.MsgClaimResponse":{"type":"object","properties":{"claimed":{"type":"string"}}},"modules.claim.v1.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"NOTE: All parameters must be supplied.","$ref":"#/definitions/modules.claim.v1.Params"}}},"modules.claim.v1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"modules.claim.v1.Params":{"description":"Params defines the parameters for the module.","type":"object","properties":{"airdropStart":{"type":"string","format":"date-time"},"decayInformation":{"$ref":"#/definitions/modules.claim.v1.DecayInformation"}}},"modules.claim.v1.QueryAllClaimRecordResponse":{"type":"object","properties":{"claimRecord":{"type":"array","items":{"type":"object","$ref":"#/definitions/modules.claim.v1.ClaimRecord"}},"pagination":{"$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"modules.claim.v1.QueryAllMissionResponse":{"type":"object","properties":{"Mission":{"type":"array","items":{"type":"object","$ref":"#/definitions/modules.claim.v1.Mission"}},"pagination":{"$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"modules.claim.v1.QueryGetAirdropSupplyResponse":{"type":"object","properties":{"AirdropSupply":{"$ref":"#/definitions/modules.claim.v1.AirdropSupply"}}},"modules.claim.v1.QueryGetClaimRecordResponse":{"type":"object","properties":{"claimRecord":{"$ref":"#/definitions/modules.claim.v1.ClaimRecord"}}},"modules.claim.v1.QueryGetInitialClaimResponse":{"type":"object","properties":{"InitialClaim":{"$ref":"#/definitions/modules.claim.v1.InitialClaim"}}},"modules.claim.v1.QueryGetMissionResponse":{"type":"object","properties":{"Mission":{"$ref":"#/definitions/modules.claim.v1.Mission"}}},"modules.claim.v1.QueryParamsResponse":{"description":"QueryParamsResponse is response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params holds all the parameters of this module.","$ref":"#/definitions/modules.claim.v1.Params"}}},"modules.fundraising.v1.AllowedBidder":{"description":"AllowedBidder defines an allowed bidder for the auction.","type":"object","properties":{"auction_id":{"type":"string","format":"uint64","title":"auction_id specifies the id of the auction"},"bidder":{"type":"string","title":"bidder specifies the bech32-encoded address that bids for the auction"},"max_bid_amount":{"type":"string","title":"max_bid_amount specifies the maximum bid amount that the bidder can bid"}}},"modules.fundraising.v1.Bid":{"description":"Bid defines a standard bid for an auction.","type":"object","properties":{"auction_id":{"type":"string","format":"uint64","title":"auction_id specifies the id of the auction"},"bidder":{"type":"string","title":"bidder specifies the bech32-encoded address that bids for the auction"},"coin":{"description":"coin specifies the amount of coin that the bidder bids\nfor a fixed price auction, the denom is of the paying coin.\nfor a batch auction of how-much-worth, the denom is of the paying coin.\nfor a batch auction of how-many-coins, the denom is of the selling coin.","$ref":"#/definitions/cosmos.base.v1beta1.Coin"},"id":{"type":"string","format":"uint64","title":"id specifies an index of a bid for the bidder"},"is_matched":{"type":"boolean","title":"is_matched specifies the bid that is a winning bid and enables the bidder\nto purchase the selling coin"},"price":{"type":"string","title":"price specifies the bid price in which price the bidder places the bid"},"type":{"title":"type specifies the bid type; type 1 is fixed price, 2 is how-much-worth, 3\nis how-many-coins","$ref":"#/definitions/modules.fundraising.v1.BidType"}}},"modules.fundraising.v1.BidType":{"description":"BidType enumerates the valid types of a bid.\n\n - BID_TYPE_UNSPECIFIED: BID_TYPE_UNSPECIFIED defines the default bid type\n - BID_TYPE_FIXED_PRICE: BID_TYPE_FIXED_PRICE defines a bid type for a fixed price auction type\n - BID_TYPE_BATCH_WORTH: BID_TYPE_BATCH_WORTH defines a bid type for How-Much-Worth-to-Buy of a\nbatch auction\n - BID_TYPE_BATCH_MANY: BID_TYPE_BATCH_MANY defines a bid type for How-Many-Coins-to-Buy of a batch\nauction","type":"string","default":"BID_TYPE_UNSPECIFIED","enum":["BID_TYPE_UNSPECIFIED","BID_TYPE_FIXED_PRICE","BID_TYPE_BATCH_WORTH","BID_TYPE_BATCH_MANY"]},"modules.fundraising.v1.MsgAddAllowedBidder":{"description":"MsgAddAllowedBidder defines a SDK message for adding an allowed bidder to the\nauction.","type":"object","properties":{"allowed_bidder":{"title":"allowed_bidder specifies the bidder who is allowed to bid and their maximum\nbid amount","$ref":"#/definitions/modules.fundraising.v1.AllowedBidder"},"auction_id":{"type":"string","format":"uint64","title":"auction_id specifies the auction id"}}},"modules.fundraising.v1.MsgAddAllowedBidderResponse":{"description":"MsgAddAllowedBidderResponse defines the Msg/MsgAddAllowedBidderResponse response type.","type":"object"},"modules.fundraising.v1.MsgCancelAuction":{"description":"MsgCancelAuction defines a SDK message for cancelling the auction.\nCancelling is only allowed when the auction hasn't started yet.","type":"object","properties":{"auction_id":{"type":"string","format":"uint64","title":"auction_id specifies the auction id"},"auctioneer":{"type":"string","title":"auctioneer specifies the bech32-encoded address that is in charge of the\nauction"}}},"modules.fundraising.v1.MsgCancelAuctionResponse":{"description":"MsgCancelAuctionResponse defines the Msg/MsgCancelAuctionResponse\nresponse type.","type":"object"},"modules.fundraising.v1.MsgCreateBatchAuction":{"description":"MsgCreateBatchAuction defines a SDK message for creating an batch\nauction.\n\nSee:\nhttps://github.com/ignite/modules/tree/main/x/fundraising/spec/04_messages.md","type":"object","properties":{"auctioneer":{"type":"string","title":"auctioneer specifies the bech32-encoded address that creates the auction"},"end_time":{"type":"string","format":"date-time","title":"end_time specifies the end time of the plan"},"extended_round_rate":{"type":"string","title":"extended_round_rate specifies the rate that decides if the auction needs\nanother round"},"max_extended_round":{"type":"integer","format":"int64","title":"maximum_extended_round specifies the maximum number of extended rounds for\nthe auction"},"min_bid_price":{"type":"string","title":"min_bid_price specifies the minibum bid price"},"paying_coin_denom":{"type":"string","title":"paying_coin_denom specifies the paying coin denom that bidders use to bid\nfor"},"selling_coin":{"title":"selling_coin specifies the selling coin for the auction","$ref":"#/definitions/cosmos.base.v1beta1.Coin"},"start_price":{"type":"string","title":"start_price specifies the starting price of the auction"},"start_time":{"type":"string","format":"date-time","title":"start_time specifies the start time of the plan"},"vesting_schedules":{"type":"array","title":"vesting_schedules specifies the vesting schedules for the auction","items":{"type":"object","$ref":"#/definitions/modules.fundraising.v1.VestingSchedule"}}}},"modules.fundraising.v1.MsgCreateBatchAuctionResponse":{"description":"MsgCreateBatchAuctionResponse defines the\nMsg/MsgCreateBatchAuctionResponse response type.","type":"object"},"modules.fundraising.v1.MsgCreateFixedPriceAuction":{"description":"MsgCreateFixedPriceAuction defines a SDK message for creating a fixed price\nauction.","type":"object","properties":{"auctioneer":{"type":"string","title":"auctioneer specifies the bech32-encoded address that creates the auction"},"end_time":{"type":"string","format":"date-time","title":"end_time specifies the end time of the plan"},"paying_coin_denom":{"type":"string","title":"paying_coin_denom specifies the paying coin denom that bidders use to bid\nfor"},"selling_coin":{"title":"selling_coin specifies the selling coin for the auction","$ref":"#/definitions/cosmos.base.v1beta1.Coin"},"start_price":{"type":"string","title":"start_price specifies the starting price of the auction"},"start_time":{"type":"string","format":"date-time","title":"start_time specifies the start time of the plan"},"vesting_schedules":{"type":"array","title":"vesting_schedules specifies the vesting schedules for the auction","items":{"type":"object","$ref":"#/definitions/modules.fundraising.v1.VestingSchedule"}}}},"modules.fundraising.v1.MsgCreateFixedPriceAuctionResponse":{"description":"MsgCreateFixedPriceAuctionResponse defines the\nMsg/MsgCreateFixedPriceAuctionResponse response type.","type":"object"},"modules.fundraising.v1.MsgModifyBid":{"description":"MsgModifyBid defines a SDK message for modifying an existing bid for the\nauction.","type":"object","properties":{"auction_id":{"type":"string","format":"uint64","title":"auction_id specifies the auction id"},"bid_id":{"type":"string","format":"uint64","title":"bid_id specifies the bid id"},"bidder":{"type":"string","title":"bidder specifies the bech32-encoded address that bids for the auction"},"coin":{"title":"coin specifies the paying amount of coin or the selling amount that the\nbidder bids","$ref":"#/definitions/cosmos.base.v1beta1.Coin"},"price":{"description":"price specifies the bid price.\nthe bide price must be above or equal to the original value that the bidder\nplaced.","type":"string"}}},"modules.fundraising.v1.MsgModifyBidResponse":{"description":"MsgModifyBidResponse defines the Msg/MsgModifyBidResponse response type.","type":"object"},"modules.fundraising.v1.MsgPlaceBid":{"description":"MsgPlaceBid defines a SDK message for placing a bid for the auction.","type":"object","properties":{"auction_id":{"type":"string","format":"uint64","title":"auction_id specifies the auction id"},"bid_type":{"title":"type specifies the bid type; type 1 is fixed price, 2 is how-much-worth, 3\nis how-many-coins","$ref":"#/definitions/modules.fundraising.v1.BidType"},"bidder":{"type":"string","title":"bidder specifies the bech32-encoded address that bids for the auction"},"coin":{"title":"coin specifies the paying amount of coin or the selling amount that the\nbidder bids","$ref":"#/definitions/cosmos.base.v1beta1.Coin"},"price":{"description":"price specifies the bid price.\nThe bid price must be the start price for fixed price auction whereas\nthe bide price can be any value that the bidder places.","type":"string"}}},"modules.fundraising.v1.MsgPlaceBidResponse":{"description":"MsgPlaceBidResponse defines the Msg/MsgPlaceBidResponse response type.","type":"object"},"modules.fundraising.v1.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"NOTE: All parameters must be supplied.","$ref":"#/definitions/modules.fundraising.v1.Params"}}},"modules.fundraising.v1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"modules.fundraising.v1.Params":{"description":"Params defines the parameters for the module.","type":"object","properties":{"auction_creation_fee":{"type":"array","title":"auction_creation_fee specifies the fee for auction creation.\nthis prevents from spamming attack and it is collected in the community\npool","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"extended_period":{"type":"integer","format":"int64","title":"extended_period specifies the extended period that determines how long\nthe extended auction round lasts"},"place_bid_fee":{"type":"array","title":"place_bid_fee specifies the fee for placing a bid for an auction.\nthis prevents from spamming attack and it is collected in the community\npool","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"modules.fundraising.v1.QueryAllAllowedBidderResponse":{"description":"QueryAllowedBidderResponse is the response type for the Query/AllowedBidder RPC method.","type":"object","properties":{"allowed_bidder":{"type":"array","items":{"type":"object","$ref":"#/definitions/modules.fundraising.v1.AllowedBidder"}},"pagination":{"title":"pagination defines the pagination in the response","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"modules.fundraising.v1.QueryAllAuctionResponse":{"description":"QueryAllAuctionResponse is response type for the Query/Auctions RPC method.","type":"object","properties":{"auction":{"type":"array","title":"auctions specifies the existing auctions","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}},"pagination":{"title":"pagination defines the pagination in the response","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"modules.fundraising.v1.QueryAllBidResponse":{"description":"QueryBidsResponse is response type for the Query/Bids RPC method.","type":"object","properties":{"bid":{"type":"array","title":"bids specifies the existing bids","items":{"type":"object","$ref":"#/definitions/modules.fundraising.v1.Bid"}},"pagination":{"title":"pagination defines the pagination in the response","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"modules.fundraising.v1.QueryAllVestingQueueResponse":{"description":"QueryAllVestingQueueResponse is response type for the Query/Vestings RPC method.","type":"object","properties":{"pagination":{"$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"vestingQueue":{"type":"array","title":"vestings specifies the existing vestings","items":{"type":"object","$ref":"#/definitions/modules.fundraising.v1.VestingQueue"}}}},"modules.fundraising.v1.QueryGetAllowedBidderResponse":{"description":"QueryAllowedBidderResponse is the response type for the Query/AllowedBidder\nRPC method.","type":"object","properties":{"allowed_bidder":{"$ref":"#/definitions/modules.fundraising.v1.AllowedBidder"}}},"modules.fundraising.v1.QueryGetAuctionResponse":{"description":"QueryGetAuctionResponse is the response type for the Query/Auction RPC method.","type":"object","properties":{"auction":{"$ref":"#/definitions/google.protobuf.Any"}}},"modules.fundraising.v1.QueryGetBidResponse":{"description":"QueryGetBidResponse is response type for the Query/Sequence RPC method.","type":"object","properties":{"bid":{"title":"bid specifies specific bid","$ref":"#/definitions/modules.fundraising.v1.Bid"}}},"modules.fundraising.v1.QueryParamsResponse":{"description":"QueryParamsResponse is response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params holds all the parameters of this module.","$ref":"#/definitions/modules.fundraising.v1.Params"}}},"modules.fundraising.v1.VestingQueue":{"description":"VestingQueue defines the vesting queue.","type":"object","properties":{"auction_id":{"type":"string","format":"uint64","title":"auction_id specifies the id of the auction"},"auctioneer":{"type":"string","title":"auctioneer specifies the bech32-encoded address that creates the auction"},"paying_coin":{"title":"paying_coin specifies the paying amount of coin","$ref":"#/definitions/cosmos.base.v1beta1.Coin"},"release_time":{"type":"string","format":"date-time","title":"release_time specifies the timestamp of the vesting schedule"},"released":{"type":"boolean","title":"released specifies the status of distribution"}}},"modules.fundraising.v1.VestingSchedule":{"description":"VestingSchedule defines the vesting schedule for the owner of an auction.","type":"object","properties":{"release_time":{"type":"string","format":"date-time","title":"release_time specifies the time for distribution of the vesting coin"},"weight":{"type":"string","title":"weight specifies the vesting weight for the schedule"}}},"modules.mint.v1.DistributionProportions":{"type":"object","properties":{"community_pool":{"description":"community_pool defines the proportion of the minted minted_denom that is\nto be allocated to the community pool.","type":"string"},"funded_addresses":{"description":"funded_addresses defines the proportion of the minted minted_denom that is\nto the set of funded addresses.","type":"string"},"staking":{"description":"staking defines the proportion of the minted minted_denom that is to be\nallocated as staking rewards.","type":"string"}}},"modules.mint.v1.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"NOTE: All parameters must be supplied.","$ref":"#/definitions/modules.mint.v1.Params"}}},"modules.mint.v1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"modules.mint.v1.Params":{"description":"Params defines the parameters for the module.","type":"object","properties":{"blocks_per_year":{"type":"string","format":"uint64","title":"expected blocks per year"},"distribution_proportions":{"title":"distribution_proportions defines the proportion of the minted denom","$ref":"#/definitions/modules.mint.v1.DistributionProportions"},"fundedAddresses":{"type":"array","title":"list of funded addresses","items":{"type":"object","$ref":"#/definitions/modules.mint.v1.WeightedAddress"}},"goal_bonded":{"type":"string","title":"goal of percent bonded atoms"},"inflation_max":{"type":"string","title":"maximum inflation rate"},"inflation_min":{"type":"string","title":"minimum inflation rate"},"inflation_rate_change":{"type":"string","title":"maximum annual change in inflation rate"},"mint_denom":{"type":"string","title":"type of coin to mint"}}},"modules.mint.v1.QueryAnnualProvisionsResponse":{"description":"QueryAnnualProvisionsResponse is the current minting annual provisions value.","type":"object","properties":{"annual_provisions":{"type":"string","format":"byte"}}},"modules.mint.v1.QueryInflationResponse":{"description":"QueryInflationResponse is the response type for the Query/Inflation RPC\nmethod.","type":"object","properties":{"inflation":{"description":"inflation is the current minting inflation value.","type":"string","format":"byte"}}},"modules.mint.v1.QueryParamsResponse":{"description":"QueryParamsResponse is response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params holds all the parameters of this module.","$ref":"#/definitions/modules.mint.v1.Params"}}},"modules.mint.v1.WeightedAddress":{"type":"object","properties":{"address":{"type":"string"},"weight":{"type":"string"}}},"tendermint.abci.CheckTxType":{"type":"string","default":"NEW","enum":["NEW","RECHECK"]},"tendermint.abci.CommitInfo":{"type":"object","properties":{"round":{"type":"integer","format":"int32"},"votes":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.VoteInfo"}}}},"tendermint.abci.Event":{"description":"Event allows application developers to attach additional information to\nResponseFinalizeBlock and ResponseCheckTx.\nLater, transactions may be queried using these events.","type":"object","properties":{"attributes":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.EventAttribute"}},"type":{"type":"string"}}},"tendermint.abci.EventAttribute":{"description":"EventAttribute is a single key-value pair, associated with an event.","type":"object","properties":{"index":{"type":"boolean","title":"nondeterministic"},"key":{"type":"string"},"value":{"type":"string"}}},"tendermint.abci.ExecTxResult":{"description":"ExecTxResult contains results of executing one individual transaction.\n\n* Its structure is equivalent to #ResponseDeliverTx which will be deprecated/deleted","type":"object","properties":{"code":{"type":"integer","format":"int64"},"codespace":{"type":"string"},"data":{"type":"string","format":"byte"},"events":{"type":"array","title":"nondeterministic","items":{"type":"object","$ref":"#/definitions/tendermint.abci.Event"}},"gas_used":{"type":"string","format":"int64"},"gas_wanted":{"type":"string","format":"int64"},"info":{"type":"string","title":"nondeterministic"},"log":{"type":"string","title":"nondeterministic"}}},"tendermint.abci.ExtendedCommitInfo":{"description":"ExtendedCommitInfo is similar to CommitInfo except that it is only used in\nthe PrepareProposal request such that CometBFT can provide vote extensions\nto the application.","type":"object","properties":{"round":{"description":"The round at which the block proposer decided in the previous height.","type":"integer","format":"int32"},"votes":{"description":"List of validators' addresses in the last validator set with their voting\ninformation, including vote extensions.","type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.ExtendedVoteInfo"}}}},"tendermint.abci.ExtendedVoteInfo":{"type":"object","properties":{"block_id_flag":{"title":"block_id_flag indicates whether the validator voted for a block, nil, or did not vote at all","$ref":"#/definitions/tendermint.types.BlockIDFlag"},"extension_signature":{"type":"string","format":"byte","title":"Vote extension signature created by CometBFT"},"validator":{"description":"The validator that sent the vote.","$ref":"#/definitions/tendermint.abci.Validator"},"vote_extension":{"description":"Non-deterministic extension provided by the sending validator's application.","type":"string","format":"byte"}}},"tendermint.abci.Misbehavior":{"type":"object","properties":{"height":{"type":"string","format":"int64","title":"The height when the offense occurred"},"time":{"type":"string","format":"date-time","title":"The corresponding time where the offense occurred"},"total_voting_power":{"type":"string","format":"int64","title":"Total voting power of the validator set in case the ABCI application does\nnot store historical validators.\nhttps://github.com/tendermint/tendermint/issues/4581"},"type":{"$ref":"#/definitions/tendermint.abci.MisbehaviorType"},"validator":{"title":"The offending validator","$ref":"#/definitions/tendermint.abci.Validator"}}},"tendermint.abci.MisbehaviorType":{"type":"string","default":"UNKNOWN","enum":["UNKNOWN","DUPLICATE_VOTE","LIGHT_CLIENT_ATTACK"]},"tendermint.abci.RequestApplySnapshotChunk":{"type":"object","title":"Applies a snapshot chunk","properties":{"chunk":{"type":"string","format":"byte"},"index":{"type":"integer","format":"int64"},"sender":{"type":"string"}}},"tendermint.abci.RequestCheckTx":{"type":"object","properties":{"tx":{"type":"string","format":"byte"},"type":{"$ref":"#/definitions/tendermint.abci.CheckTxType"}}},"tendermint.abci.RequestCommit":{"type":"object"},"tendermint.abci.RequestEcho":{"type":"object","properties":{"message":{"type":"string"}}},"tendermint.abci.RequestExtendVote":{"type":"object","title":"Extends a vote with application-injected data","properties":{"hash":{"type":"string","format":"byte","title":"the hash of the block that this vote may be referring to"},"height":{"type":"string","format":"int64","title":"the height of the extended vote"},"misbehavior":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.Misbehavior"}},"next_validators_hash":{"type":"string","format":"byte"},"proposed_last_commit":{"$ref":"#/definitions/tendermint.abci.CommitInfo"},"proposer_address":{"description":"address of the public key of the original proposer of the block.","type":"string","format":"byte"},"time":{"type":"string","format":"date-time","title":"info of the block that this vote may be referring to"},"txs":{"type":"array","items":{"type":"string","format":"byte"}}}},"tendermint.abci.RequestFinalizeBlock":{"type":"object","properties":{"decided_last_commit":{"$ref":"#/definitions/tendermint.abci.CommitInfo"},"hash":{"description":"hash is the merkle root hash of the fields of the decided block.","type":"string","format":"byte"},"height":{"type":"string","format":"int64"},"misbehavior":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.Misbehavior"}},"next_validators_hash":{"type":"string","format":"byte"},"proposer_address":{"description":"proposer_address is the address of the public key of the original proposer of the block.","type":"string","format":"byte"},"time":{"type":"string","format":"date-time"},"txs":{"type":"array","items":{"type":"string","format":"byte"}}}},"tendermint.abci.RequestFlush":{"type":"object"},"tendermint.abci.RequestInfo":{"type":"object","properties":{"abci_version":{"type":"string"},"block_version":{"type":"string","format":"uint64"},"p2p_version":{"type":"string","format":"uint64"},"version":{"type":"string"}}},"tendermint.abci.RequestInitChain":{"type":"object","properties":{"app_state_bytes":{"type":"string","format":"byte"},"chain_id":{"type":"string"},"consensus_params":{"$ref":"#/definitions/tendermint.types.ConsensusParams"},"initial_height":{"type":"string","format":"int64"},"time":{"type":"string","format":"date-time"},"validators":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.ValidatorUpdate"}}}},"tendermint.abci.RequestListSnapshots":{"type":"object","title":"lists available snapshots"},"tendermint.abci.RequestLoadSnapshotChunk":{"type":"object","title":"loads a snapshot chunk","properties":{"chunk":{"type":"integer","format":"int64"},"format":{"type":"integer","format":"int64"},"height":{"type":"string","format":"uint64"}}},"tendermint.abci.RequestOfferSnapshot":{"type":"object","title":"offers a snapshot to the application","properties":{"app_hash":{"type":"string","format":"byte","title":"light client-verified app hash for snapshot height"},"snapshot":{"title":"snapshot offered by peers","$ref":"#/definitions/tendermint.abci.Snapshot"}}},"tendermint.abci.RequestPrepareProposal":{"type":"object","properties":{"height":{"type":"string","format":"int64"},"local_last_commit":{"$ref":"#/definitions/tendermint.abci.ExtendedCommitInfo"},"max_tx_bytes":{"description":"the modified transactions cannot exceed this size.","type":"string","format":"int64"},"misbehavior":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.Misbehavior"}},"next_validators_hash":{"type":"string","format":"byte"},"proposer_address":{"description":"address of the public key of the validator proposing the block.","type":"string","format":"byte"},"time":{"type":"string","format":"date-time"},"txs":{"description":"txs is an array of transactions that will be included in a block,\nsent to the app for possible modifications.","type":"array","items":{"type":"string","format":"byte"}}}},"tendermint.abci.RequestProcessProposal":{"type":"object","properties":{"hash":{"description":"hash is the merkle root hash of the fields of the proposed block.","type":"string","format":"byte"},"height":{"type":"string","format":"int64"},"misbehavior":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.Misbehavior"}},"next_validators_hash":{"type":"string","format":"byte"},"proposed_last_commit":{"$ref":"#/definitions/tendermint.abci.CommitInfo"},"proposer_address":{"description":"address of the public key of the original proposer of the block.","type":"string","format":"byte"},"time":{"type":"string","format":"date-time"},"txs":{"type":"array","items":{"type":"string","format":"byte"}}}},"tendermint.abci.RequestQuery":{"type":"object","properties":{"data":{"type":"string","format":"byte"},"height":{"type":"string","format":"int64"},"path":{"type":"string"},"prove":{"type":"boolean"}}},"tendermint.abci.RequestVerifyVoteExtension":{"type":"object","title":"Verify the vote extension","properties":{"hash":{"type":"string","format":"byte","title":"the hash of the block that this received vote corresponds to"},"height":{"type":"string","format":"int64"},"validator_address":{"type":"string","format":"byte","title":"the validator that signed the vote extension"},"vote_extension":{"type":"string","format":"byte"}}},"tendermint.abci.ResponseApplySnapshotChunk":{"type":"object","properties":{"refetch_chunks":{"type":"array","title":"Chunks to refetch and reapply","items":{"type":"integer","format":"int64"}},"reject_senders":{"type":"array","title":"Chunk senders to reject and ban","items":{"type":"string"}},"result":{"$ref":"#/definitions/tendermint.abci.ResponseApplySnapshotChunk.Result"}}},"tendermint.abci.ResponseApplySnapshotChunk.Result":{"type":"string","title":"- UNKNOWN: Unknown result, abort all snapshot restoration\n - ACCEPT: Chunk successfully accepted\n - ABORT: Abort all snapshot restoration\n - RETRY: Retry chunk (combine with refetch and reject)\n - RETRY_SNAPSHOT: Retry snapshot (combine with refetch and reject)\n - REJECT_SNAPSHOT: Reject this snapshot, try others","default":"UNKNOWN","enum":["UNKNOWN","ACCEPT","ABORT","RETRY","RETRY_SNAPSHOT","REJECT_SNAPSHOT"]},"tendermint.abci.ResponseCheckTx":{"type":"object","properties":{"code":{"type":"integer","format":"int64"},"codespace":{"type":"string"},"data":{"type":"string","format":"byte"},"events":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.Event"}},"gas_used":{"type":"string","format":"int64"},"gas_wanted":{"type":"string","format":"int64"},"info":{"type":"string","title":"nondeterministic"},"log":{"type":"string","title":"nondeterministic"}}},"tendermint.abci.ResponseCommit":{"type":"object","properties":{"retain_height":{"type":"string","format":"int64"}}},"tendermint.abci.ResponseEcho":{"type":"object","properties":{"message":{"type":"string"}}},"tendermint.abci.ResponseExtendVote":{"type":"object","properties":{"vote_extension":{"type":"string","format":"byte"}}},"tendermint.abci.ResponseFinalizeBlock":{"type":"object","properties":{"app_hash":{"description":"app_hash is the hash of the applications' state which is used to confirm that execution of the transactions was\ndeterministic. It is up to the application to decide which algorithm to use.","type":"string","format":"byte"},"consensus_param_updates":{"description":"updates to the consensus params, if any.","$ref":"#/definitions/tendermint.types.ConsensusParams"},"events":{"type":"array","title":"set of block events emmitted as part of executing the block","items":{"type":"object","$ref":"#/definitions/tendermint.abci.Event"}},"tx_results":{"type":"array","title":"the result of executing each transaction including the events\nthe particular transction emitted. This should match the order\nof the transactions delivered in the block itself","items":{"type":"object","$ref":"#/definitions/tendermint.abci.ExecTxResult"}},"validator_updates":{"description":"a list of updates to the validator set. These will reflect the validator set at current height + 2.","type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.ValidatorUpdate"}}}},"tendermint.abci.ResponseFlush":{"type":"object"},"tendermint.abci.ResponseInfo":{"type":"object","properties":{"app_version":{"type":"string","format":"uint64"},"data":{"type":"string"},"last_block_app_hash":{"type":"string","format":"byte"},"last_block_height":{"type":"string","format":"int64"},"version":{"type":"string"}}},"tendermint.abci.ResponseInitChain":{"type":"object","properties":{"app_hash":{"type":"string","format":"byte"},"consensus_params":{"$ref":"#/definitions/tendermint.types.ConsensusParams"},"validators":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.ValidatorUpdate"}}}},"tendermint.abci.ResponseListSnapshots":{"type":"object","properties":{"snapshots":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.Snapshot"}}}},"tendermint.abci.ResponseLoadSnapshotChunk":{"type":"object","properties":{"chunk":{"type":"string","format":"byte"}}},"tendermint.abci.ResponseOfferSnapshot":{"type":"object","properties":{"result":{"$ref":"#/definitions/tendermint.abci.ResponseOfferSnapshot.Result"}}},"tendermint.abci.ResponseOfferSnapshot.Result":{"type":"string","title":"- UNKNOWN: Unknown result, abort all snapshot restoration\n - ACCEPT: Snapshot accepted, apply chunks\n - ABORT: Abort all snapshot restoration\n - REJECT: Reject this specific snapshot, try others\n - REJECT_FORMAT: Reject all snapshots of this format, try others\n - REJECT_SENDER: Reject all snapshots from the sender(s), try others","default":"UNKNOWN","enum":["UNKNOWN","ACCEPT","ABORT","REJECT","REJECT_FORMAT","REJECT_SENDER"]},"tendermint.abci.ResponsePrepareProposal":{"type":"object","properties":{"txs":{"type":"array","items":{"type":"string","format":"byte"}}}},"tendermint.abci.ResponseProcessProposal":{"type":"object","properties":{"status":{"$ref":"#/definitions/tendermint.abci.ResponseProcessProposal.ProposalStatus"}}},"tendermint.abci.ResponseProcessProposal.ProposalStatus":{"type":"string","default":"UNKNOWN","enum":["UNKNOWN","ACCEPT","REJECT"]},"tendermint.abci.ResponseQuery":{"type":"object","properties":{"code":{"type":"integer","format":"int64"},"codespace":{"type":"string"},"height":{"type":"string","format":"int64"},"index":{"type":"string","format":"int64"},"info":{"type":"string","title":"nondeterministic"},"key":{"type":"string","format":"byte"},"log":{"description":"bytes data = 2; // use \"value\" instead.\n\nnondeterministic","type":"string"},"proof_ops":{"$ref":"#/definitions/tendermint.crypto.ProofOps"},"value":{"type":"string","format":"byte"}}},"tendermint.abci.ResponseVerifyVoteExtension":{"type":"object","properties":{"status":{"$ref":"#/definitions/tendermint.abci.ResponseVerifyVoteExtension.VerifyStatus"}}},"tendermint.abci.ResponseVerifyVoteExtension.VerifyStatus":{"description":" - REJECT: Rejecting the vote extension will reject the entire precommit by the sender.\nIncorrectly implementing this thus has liveness implications as it may affect\nCometBFT's ability to receive 2/3+ valid votes to finalize the block.\nHonest nodes should never be rejected.","type":"string","default":"UNKNOWN","enum":["UNKNOWN","ACCEPT","REJECT"]},"tendermint.abci.Snapshot":{"type":"object","properties":{"chunks":{"type":"integer","format":"int64","title":"Number of chunks in the snapshot"},"format":{"type":"integer","format":"int64","title":"The application-specific snapshot format"},"hash":{"type":"string","format":"byte","title":"Arbitrary snapshot hash, equal only if identical"},"height":{"type":"string","format":"uint64","title":"The height at which the snapshot was taken"},"metadata":{"type":"string","format":"byte","title":"Arbitrary application metadata"}}},"tendermint.abci.Validator":{"type":"object","properties":{"address":{"type":"string","format":"byte","title":"The first 20 bytes of SHA256(public key)"},"power":{"description":"The voting power","type":"string","format":"int64","title":"PubKey pub_key = 2 [(gogoproto.nullable)=false];"}}},"tendermint.abci.ValidatorUpdate":{"type":"object","properties":{"power":{"type":"string","format":"int64"},"pub_key":{"$ref":"#/definitions/tendermint.crypto.PublicKey"}}},"tendermint.abci.VoteInfo":{"type":"object","properties":{"block_id_flag":{"$ref":"#/definitions/tendermint.types.BlockIDFlag"},"validator":{"$ref":"#/definitions/tendermint.abci.Validator"}}},"tendermint.crypto.ProofOp":{"type":"object","title":"ProofOp defines an operation used for calculating Merkle root\nThe data could be arbitrary format, providing nessecary data\nfor example neighbouring node hash","properties":{"data":{"type":"string","format":"byte"},"key":{"type":"string","format":"byte"},"type":{"type":"string"}}},"tendermint.crypto.ProofOps":{"type":"object","title":"ProofOps is Merkle proof defined by the list of ProofOps","properties":{"ops":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.crypto.ProofOp"}}}},"tendermint.crypto.PublicKey":{"type":"object","title":"PublicKey defines the keys available for use with Validators","properties":{"ed25519":{"type":"string","format":"byte"},"secp256k1":{"type":"string","format":"byte"}}},"tendermint.p2p.DefaultNodeInfo":{"type":"object","properties":{"channels":{"type":"string","format":"byte"},"default_node_id":{"type":"string"},"listen_addr":{"type":"string"},"moniker":{"type":"string"},"network":{"type":"string"},"other":{"$ref":"#/definitions/tendermint.p2p.DefaultNodeInfoOther"},"protocol_version":{"$ref":"#/definitions/tendermint.p2p.ProtocolVersion"},"version":{"type":"string"}}},"tendermint.p2p.DefaultNodeInfoOther":{"type":"object","properties":{"rpc_address":{"type":"string"},"tx_index":{"type":"string"}}},"tendermint.p2p.ProtocolVersion":{"type":"object","properties":{"app":{"type":"string","format":"uint64"},"block":{"type":"string","format":"uint64"},"p2p":{"type":"string","format":"uint64"}}},"tendermint.types.ABCIParams":{"description":"ABCIParams configure functionality specific to the Application Blockchain Interface.","type":"object","properties":{"vote_extensions_enable_height":{"description":"vote_extensions_enable_height configures the first height during which\nvote extensions will be enabled. During this specified height, and for all\nsubsequent heights, precommit messages that do not contain valid extension data\nwill be considered invalid. Prior to this height, vote extensions will not\nbe used or accepted by validators on the network.\n\nOnce enabled, vote extensions will be created by the application in ExtendVote,\npassed to the application for validation in VerifyVoteExtension and given\nto the application to use when proposing a block during PrepareProposal.","type":"string","format":"int64"}}},"tendermint.types.Block":{"type":"object","properties":{"data":{"$ref":"#/definitions/tendermint.types.Data"},"evidence":{"$ref":"#/definitions/tendermint.types.EvidenceList"},"header":{"$ref":"#/definitions/tendermint.types.Header"},"last_commit":{"$ref":"#/definitions/tendermint.types.Commit"}}},"tendermint.types.BlockID":{"type":"object","title":"BlockID","properties":{"hash":{"type":"string","format":"byte"},"part_set_header":{"$ref":"#/definitions/tendermint.types.PartSetHeader"}}},"tendermint.types.BlockIDFlag":{"description":"- BLOCK_ID_FLAG_UNKNOWN: indicates an error condition\n - BLOCK_ID_FLAG_ABSENT: the vote was not received\n - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority\n - BLOCK_ID_FLAG_NIL: voted for nil","type":"string","title":"BlockIdFlag indicates which BlockID the signature is for","default":"BLOCK_ID_FLAG_UNKNOWN","enum":["BLOCK_ID_FLAG_UNKNOWN","BLOCK_ID_FLAG_ABSENT","BLOCK_ID_FLAG_COMMIT","BLOCK_ID_FLAG_NIL"]},"tendermint.types.BlockParams":{"description":"BlockParams contains limits on the block size.","type":"object","properties":{"max_bytes":{"type":"string","format":"int64","title":"Max block size, in bytes.\nNote: must be greater than 0"},"max_gas":{"type":"string","format":"int64","title":"Max gas per block.\nNote: must be greater or equal to -1"}}},"tendermint.types.Commit":{"description":"Commit contains the evidence that a block was committed by a set of validators.","type":"object","properties":{"block_id":{"$ref":"#/definitions/tendermint.types.BlockID"},"height":{"type":"string","format":"int64"},"round":{"type":"integer","format":"int32"},"signatures":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.types.CommitSig"}}}},"tendermint.types.CommitSig":{"description":"CommitSig is a part of the Vote included in a Commit.","type":"object","properties":{"block_id_flag":{"$ref":"#/definitions/tendermint.types.BlockIDFlag"},"signature":{"type":"string","format":"byte"},"timestamp":{"type":"string","format":"date-time"},"validator_address":{"type":"string","format":"byte"}}},"tendermint.types.ConsensusParams":{"description":"ConsensusParams contains consensus critical parameters that determine the\nvalidity of blocks.","type":"object","properties":{"abci":{"$ref":"#/definitions/tendermint.types.ABCIParams"},"block":{"$ref":"#/definitions/tendermint.types.BlockParams"},"evidence":{"$ref":"#/definitions/tendermint.types.EvidenceParams"},"validator":{"$ref":"#/definitions/tendermint.types.ValidatorParams"},"version":{"$ref":"#/definitions/tendermint.types.VersionParams"}}},"tendermint.types.Data":{"type":"object","title":"Data contains the set of transactions included in the block","properties":{"txs":{"description":"Txs that will be applied by state @ block.Height+1.\nNOTE: not all txs here are valid. We're just agreeing on the order first.\nThis means that block.AppHash does not include these txs.","type":"array","items":{"type":"string","format":"byte"}}}},"tendermint.types.DuplicateVoteEvidence":{"description":"DuplicateVoteEvidence contains evidence of a validator signed two conflicting votes.","type":"object","properties":{"timestamp":{"type":"string","format":"date-time"},"total_voting_power":{"type":"string","format":"int64"},"validator_power":{"type":"string","format":"int64"},"vote_a":{"$ref":"#/definitions/tendermint.types.Vote"},"vote_b":{"$ref":"#/definitions/tendermint.types.Vote"}}},"tendermint.types.Evidence":{"type":"object","properties":{"duplicate_vote_evidence":{"$ref":"#/definitions/tendermint.types.DuplicateVoteEvidence"},"light_client_attack_evidence":{"$ref":"#/definitions/tendermint.types.LightClientAttackEvidence"}}},"tendermint.types.EvidenceList":{"type":"object","properties":{"evidence":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.types.Evidence"}}}},"tendermint.types.EvidenceParams":{"description":"EvidenceParams determine how we handle evidence of malfeasance.","type":"object","properties":{"max_age_duration":{"description":"Max age of evidence, in time.\n\nIt should correspond with an app's \"unbonding period\" or other similar\nmechanism for handling [Nothing-At-Stake\nattacks](https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQ#what-is-the-nothing-at-stake-problem-and-how-can-it-be-fixed).","type":"string"},"max_age_num_blocks":{"description":"Max age of evidence, in blocks.\n\nThe basic formula for calculating this is: MaxAgeDuration / {average block\ntime}.","type":"string","format":"int64"},"max_bytes":{"type":"string","format":"int64","title":"This sets the maximum size of total evidence in bytes that can be committed in a single block.\nand should fall comfortably under the max block bytes.\nDefault is 1048576 or 1MB"}}},"tendermint.types.Header":{"description":"Header defines the structure of a block header.","type":"object","properties":{"app_hash":{"type":"string","format":"byte","title":"state after txs from the previous block"},"chain_id":{"type":"string"},"consensus_hash":{"type":"string","format":"byte","title":"consensus params for current block"},"data_hash":{"type":"string","format":"byte","title":"transactions"},"evidence_hash":{"description":"evidence included in the block","type":"string","format":"byte","title":"consensus info"},"height":{"type":"string","format":"int64"},"last_block_id":{"title":"prev block info","$ref":"#/definitions/tendermint.types.BlockID"},"last_commit_hash":{"description":"commit from validators from the last block","type":"string","format":"byte","title":"hashes of block data"},"last_results_hash":{"type":"string","format":"byte","title":"root hash of all results from the txs from the previous block"},"next_validators_hash":{"type":"string","format":"byte","title":"validators for the next block"},"proposer_address":{"type":"string","format":"byte","title":"original proposer of the block"},"time":{"type":"string","format":"date-time"},"validators_hash":{"description":"validators for the current block","type":"string","format":"byte","title":"hashes from the app output from the prev block"},"version":{"title":"basic block info","$ref":"#/definitions/tendermint.version.Consensus"}}},"tendermint.types.LightBlock":{"type":"object","properties":{"signed_header":{"$ref":"#/definitions/tendermint.types.SignedHeader"},"validator_set":{"$ref":"#/definitions/tendermint.types.ValidatorSet"}}},"tendermint.types.LightClientAttackEvidence":{"description":"LightClientAttackEvidence contains evidence of a set of validators attempting to mislead a light client.","type":"object","properties":{"byzantine_validators":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.types.Validator"}},"common_height":{"type":"string","format":"int64"},"conflicting_block":{"$ref":"#/definitions/tendermint.types.LightBlock"},"timestamp":{"type":"string","format":"date-time"},"total_voting_power":{"type":"string","format":"int64"}}},"tendermint.types.PartSetHeader":{"type":"object","title":"PartsetHeader","properties":{"hash":{"type":"string","format":"byte"},"total":{"type":"integer","format":"int64"}}},"tendermint.types.SignedHeader":{"type":"object","properties":{"commit":{"$ref":"#/definitions/tendermint.types.Commit"},"header":{"$ref":"#/definitions/tendermint.types.Header"}}},"tendermint.types.SignedMsgType":{"description":"SignedMsgType is a type of signed message in the consensus.\n\n - SIGNED_MSG_TYPE_PREVOTE: Votes\n - SIGNED_MSG_TYPE_PROPOSAL: Proposals","type":"string","default":"SIGNED_MSG_TYPE_UNKNOWN","enum":["SIGNED_MSG_TYPE_UNKNOWN","SIGNED_MSG_TYPE_PREVOTE","SIGNED_MSG_TYPE_PRECOMMIT","SIGNED_MSG_TYPE_PROPOSAL"]},"tendermint.types.Validator":{"type":"object","properties":{"address":{"type":"string","format":"byte"},"proposer_priority":{"type":"string","format":"int64"},"pub_key":{"$ref":"#/definitions/tendermint.crypto.PublicKey"},"voting_power":{"type":"string","format":"int64"}}},"tendermint.types.ValidatorParams":{"description":"ValidatorParams restrict the public key types validators can use.\nNOTE: uses ABCI pubkey naming, not Amino names.","type":"object","properties":{"pub_key_types":{"type":"array","items":{"type":"string"}}}},"tendermint.types.ValidatorSet":{"type":"object","properties":{"proposer":{"$ref":"#/definitions/tendermint.types.Validator"},"total_voting_power":{"type":"string","format":"int64"},"validators":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.types.Validator"}}}},"tendermint.types.VersionParams":{"description":"VersionParams contains the ABCI application version.","type":"object","properties":{"app":{"type":"string","format":"uint64"}}},"tendermint.types.Vote":{"description":"Vote represents a prevote or precommit vote from validators for\nconsensus.","type":"object","properties":{"block_id":{"description":"zero if vote is nil.","$ref":"#/definitions/tendermint.types.BlockID"},"extension":{"description":"Vote extension provided by the application. Only valid for precommit\nmessages.","type":"string","format":"byte"},"extension_signature":{"description":"Vote extension signature by the validator if they participated in\nconsensus for the associated block.\nOnly valid for precommit messages.","type":"string","format":"byte"},"height":{"type":"string","format":"int64"},"round":{"type":"integer","format":"int32"},"signature":{"description":"Vote signature by the validator if they participated in consensus for the\nassociated block.","type":"string","format":"byte"},"timestamp":{"type":"string","format":"date-time"},"type":{"$ref":"#/definitions/tendermint.types.SignedMsgType"},"validator_address":{"type":"string","format":"byte"},"validator_index":{"type":"integer","format":"int32"}}},"tendermint.version.Consensus":{"description":"Consensus captures the consensus rules for processing a block in the blockchain,\nincluding all blockchain data structures and the rules of the application's\nstate transition machine.","type":"object","properties":{"app":{"type":"string","format":"uint64"},"block":{"type":"string","format":"uint64"}}}},"tags":[{"name":"Query"},{"name":"Msg"},{"name":"Service"},{"name":"ReflectionService"},{"name":"ABCIListenerService"},{"name":"ABCI"}]} \ No newline at end of file diff --git a/go.mod b/go.mod index 15f78f8..7983b9a 100644 --- a/go.mod +++ b/go.mod @@ -42,6 +42,7 @@ require ( github.com/spf13/pflag v1.0.5 github.com/spf13/viper v1.19.0 github.com/stretchr/testify v1.9.0 + golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d google.golang.org/genproto/googleapis/api v0.0.0-20240730163845-b1a4ccb954bf google.golang.org/grpc v1.65.0 @@ -239,7 +240,6 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect golang.org/x/crypto v0.25.0 // indirect - golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 // indirect golang.org/x/mod v0.17.0 // indirect golang.org/x/net v0.27.0 // indirect golang.org/x/oauth2 v0.21.0 // indirect diff --git a/proto/buf.lock b/proto/buf.lock index 9ab00f7..516c3fe 100644 --- a/proto/buf.lock +++ b/proto/buf.lock @@ -19,23 +19,23 @@ deps: - remote: buf.build owner: cosmos repository: ibc - commit: 7ba0ade262584ccaa1eb241a3fa085d6 - digest: shake256:5ed2e18673b5da5290f2c726fe32ced384f9298c6bd43a183a333db069b41a1e447ca96a79278fe93563b71535f4a77d566a0b076b0383b8ac03c013ab4bca84 + commit: c159402ffeef4c21a7f9f0643817ae0d + digest: shake256:694e3f5a1d469798bb6cb3510f6f489e10d9309d1f2e8f7a369a776947602195f13ab65972d2d586a1134978b6a6fa28a43e5d7710ef5032ba0c7fbbe6038f08 - remote: buf.build owner: cosmos repository: ics23 - commit: a9ee7c290ef34ee69d3f141b9b44dcee - digest: shake256:255dbee3e92a370723bf4d72b34868b18e7570543f30f79c0c8c10a5a332d230175e0c29cb7ebcb8020706312e3cd37c23974df0bacfb60a4afb968fee4c1afc + commit: d2ad30d1af0e4e978fa1f5c143acf63b + digest: shake256:000ea62514f7d507c96905d70ef11d16b8f8f32fda5a75def40d4130058af0174142ed3cd6c4a89c5fdb3cbf138277d771d86eeb6992f054d13a82556a2ff079 - remote: buf.build owner: googleapis repository: googleapis - commit: 8bc2c51e08c447cd8886cdea48a73e14 - digest: shake256:a969155953a5cedc5b2df5b42c368f2bc66ff8ce1804bc96e0f14ff2ee8a893687963058909df844d1643cdbc98ff099d2daa6bc9f9f5b8886c49afdc60e19af + commit: e7f8d366f5264595bcc4cd4139af9973 + digest: shake256:e5e5f1c12f82e028ea696faa43b4f9dc6258a6d1226282962a8c8b282e10946281d815884f574bd279ebd9cd7588629beb3db17b892af6c33b56f92f8f67f509 - remote: buf.build owner: protocolbuffers repository: wellknowntypes - commit: ee20af7d5b6044139bb9051283720274 - digest: shake256:030e02269b2b3c080f716a133798cdaf2ca847192c63303cae27e996a26a0e433d0845c14063023ef98bf5750d0884987bc07b8babe903163d07ecbc3a30adb7 + commit: d59b7d45e69d4e129a1b797e2766f067 + digest: shake256:e4bb315f5a90aace88fe39709c831eda8eb0ce66b4cf947065888100b9867c2eb9a0f61f6b8d73c51b1fcccdfe8611090f55ce5db1aee6901ec9b4e6d8fa8e52 - remote: buf.build owner: tendermint repository: tendermint diff --git a/proto/modules/fundraising/module/v1/module.proto b/proto/modules/fundraising/module/v1/module.proto new file mode 100644 index 0000000..ac93529 --- /dev/null +++ b/proto/modules/fundraising/module/v1/module.proto @@ -0,0 +1,16 @@ +syntax = "proto3"; +package modules.fundraising.module.v1; + +import "cosmos/app/v1alpha1/module.proto"; + +// Module is the config object for the module. +message Module { + option (cosmos.app.v1alpha1.module) = { + go_import: "github.com/ignite/modules/x/fundraising" + }; + + // authority defines the custom module authority. If not set, defaults to the governance module. + string authority = 1; + + +} \ No newline at end of file diff --git a/proto/modules/fundraising/v1/allowed_bidder.proto b/proto/modules/fundraising/v1/allowed_bidder.proto new file mode 100644 index 0000000..b6e3172 --- /dev/null +++ b/proto/modules/fundraising/v1/allowed_bidder.proto @@ -0,0 +1,28 @@ +syntax = "proto3"; +package modules.fundraising.v1; + +import "cosmos/msg/v1/msg.proto"; +import "cosmos_proto/cosmos.proto"; +import "gogoproto/gogo.proto"; + +option go_package = "github.com/ignite/modules/x/fundraising/types"; + +// AllowedBidder defines an allowed bidder for the auction. +message AllowedBidder { + option (cosmos.msg.v1.signer) = "bidder"; + + option (gogoproto.goproto_getters) = false; + + // auction_id specifies the id of the auction + uint64 auction_id = 1; + + // bidder specifies the bech32-encoded address that bids for the auction + string bidder = 2; + + // max_bid_amount specifies the maximum bid amount that the bidder can bid + string max_bid_amount = 3 [ + (gogoproto.nullable) = false, + (gogoproto.customtype) = "cosmossdk.io/math.Int", + (cosmos_proto.scalar) = "cosmos.Int" + ]; +} diff --git a/proto/modules/fundraising/v1/auction.proto b/proto/modules/fundraising/v1/auction.proto new file mode 100644 index 0000000..a019c2a --- /dev/null +++ b/proto/modules/fundraising/v1/auction.proto @@ -0,0 +1,178 @@ +syntax = "proto3"; +package modules.fundraising.v1; + +import "amino/amino.proto"; +import "cosmos/base/v1beta1/coin.proto"; +import "cosmos_proto/cosmos.proto"; +import "gogoproto/gogo.proto"; +import "google/protobuf/timestamp.proto"; + +option go_package = "github.com/ignite/modules/x/fundraising/types"; + +// BaseAuction defines a base auction type. It contains all the necessary fields +// for basic auction functionality. Any custom auction type should extend this +// type for additional functionality (e.g. batch auction, fixed price +// auction). +message BaseAuction { + option (gogoproto.goproto_getters) = false; + + option (cosmos_proto.implements_interface) = "AuctionI"; + + // id specifies index of the auction + uint64 id = 1; + + // type specifies the auction type + // type 1 is fixed price and 2 is batch auction + AuctionType type = 2; + + // auctioneer specifies the bech32-encoded address that creates the auction + string auctioneer = 3; + + // selling_reserve_address specifies the bech32-encoded address that has all + // the selling coin + string selling_reserve_address = 4; + + // paying_reserve_address specifies the bech32-encoded address that has all + // the paying coin + string paying_reserve_address = 5; + + // start_price specifies the starting price of the auction + // it is determined by the proportion of the price of paying coin denom + string start_price = 6 [ + (gogoproto.nullable) = false, + (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec", + (cosmos_proto.scalar) = "cosmos.Dec" + ]; + + // selling_coin specifies the selling coin for the auction + cosmos.base.v1beta1.Coin selling_coin = 7 [ + (gogoproto.nullable) = false, + (amino.dont_omitempty) = true, + (amino.encoding) = "legacy_coins", + (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coin" + ]; + + // paying_coin_denom specifies the paying coin denom that bidders use to bid + // for + string paying_coin_denom = 8; + + // vesting_reserve_address specifies the bech32-encoded vesting address that + // holds vesting amounts of coin + string vesting_reserve_address = 9; + + // vesting_schedules specifies the vesting schedules for the auction + repeated VestingSchedule vesting_schedules = 10 [(gogoproto.nullable) = false]; + + // start_time specifies the start time of the plan + google.protobuf.Timestamp start_time = 11 [ + (gogoproto.stdtime) = true, + (gogoproto.nullable) = false + ]; + + // end_times specifies the end time of the plan + repeated google.protobuf.Timestamp end_times = 12 [ + (gogoproto.stdtime) = true, + (gogoproto.nullable) = false + ]; + + // status specifies the auction status + AuctionStatus status = 13; +} + +// FixedPriceAuction defines the fixed price auction type. It is the most +// simpliest way to raise funds. An auctioneer sets the starting price for each +// selling amounts of coin and bidders bid to purchase based on the fixed price. +message FixedPriceAuction { + option (gogoproto.goproto_getters) = false; + + BaseAuction base_auction = 1 [(gogoproto.embed) = true]; + + // remaining_coin specifies the remaining amount of selling coin to sell + cosmos.base.v1beta1.Coin remaining_selling_coin = 2 [ + (gogoproto.nullable) = false, + (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coin" + ]; +} + +// BatchAuction defines a batch auction type. It allows bidders to participate +// in the auction by placing their limit orders with a bid price they are +// willing to bid within the auction period. They can place multiple bids with +// different bid prices and if they want to modify their existing bid, they only +// have an option to modify with a higher bid price. Under the hood, an order +// book is created to record the bids to calculate the matched bidders. +message BatchAuction { + option (gogoproto.goproto_getters) = false; + + BaseAuction base_auction = 1 [(gogoproto.embed) = true]; + + // min_bid_price specifies the minibum bid price + string min_bid_price = 2 [ + (gogoproto.nullable) = false, + (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec", + (cosmos_proto.scalar) = "cosmos.Dec" + ]; + + // matched_price specifies the matched price of the auction + string matched_price = 3 [ + (gogoproto.nullable) = false, + (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec", + (cosmos_proto.scalar) = "cosmos.Dec" + ]; + + // max_extended_round specifies a maximum number of extended rounds + uint32 max_extended_round = 4; + + // extended_round_rate specifies the rate that decides if the auction needs + // another round + string extended_round_rate = 5 [ + (gogoproto.nullable) = false, + (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec", + (cosmos_proto.scalar) = "cosmos.Dec" + ]; +} + +// AuctionType enumerates the valid types of an auction. +enum AuctionType { + option (gogoproto.goproto_enum_prefix) = false; + + // AUCTION_TYPE_UNSPECIFIED defines the default auction type + AUCTION_TYPE_UNSPECIFIED = 0 [(gogoproto.enumvalue_customname) = "AuctionTypeNil"]; + // AUCTION_TYPE_FIXED_PRICE defines the fixed price auction type + AUCTION_TYPE_FIXED_PRICE = 1 [(gogoproto.enumvalue_customname) = "AuctionTypeFixedPrice"]; + // AUCTION_TYPE_BATCH defines the batch auction type + AUCTION_TYPE_BATCH = 2 [(gogoproto.enumvalue_customname) = "AuctionTypeBatch"]; +} + +// AuctionStatus enumerates the valid status of an auction. +enum AuctionStatus { + option (gogoproto.goproto_enum_prefix) = false; + + // AUCTION_STATUS_UNSPECIFIED defines the default auction status + AUCTION_STATUS_UNSPECIFIED = 0 [(gogoproto.enumvalue_customname) = "AuctionStatusNil"]; + // AUCTION_STATUS_STANDBY defines the standby auction status + AUCTION_STATUS_STANDBY = 1 [(gogoproto.enumvalue_customname) = "AuctionStatusStandBy"]; + // AUCTION_STATUS_STARTED defines the started auction status + AUCTION_STATUS_STARTED = 2 [(gogoproto.enumvalue_customname) = "AuctionStatusStarted"]; + // AUCTION_STATUS_VESTING defines the vesting auction status + AUCTION_STATUS_VESTING = 3 [(gogoproto.enumvalue_customname) = "AuctionStatusVesting"]; + // AUCTION_STATUS_FINISHED defines the finished auction status + AUCTION_STATUS_FINISHED = 4 [(gogoproto.enumvalue_customname) = "AuctionStatusFinished"]; + // AUCTION_STATUS_CANCELLED defines the cancelled auction status + AUCTION_STATUS_CANCELLED = 5 [(gogoproto.enumvalue_customname) = "AuctionStatusCancelled"]; +} + +// VestingSchedule defines the vesting schedule for the owner of an auction. +message VestingSchedule { + // release_time specifies the time for distribution of the vesting coin + google.protobuf.Timestamp release_time = 1 [ + (gogoproto.stdtime) = true, + (gogoproto.nullable) = false + ]; + + // weight specifies the vesting weight for the schedule + string weight = 2 [ + (gogoproto.nullable) = false, + (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec", + (cosmos_proto.scalar) = "cosmos.Dec" + ]; +} diff --git a/proto/modules/fundraising/v1/bid.proto b/proto/modules/fundraising/v1/bid.proto new file mode 100644 index 0000000..e28e082 --- /dev/null +++ b/proto/modules/fundraising/v1/bid.proto @@ -0,0 +1,78 @@ +syntax = "proto3"; +package modules.fundraising.v1; + +import "amino/amino.proto"; +import "cosmos/base/v1beta1/coin.proto"; +import "cosmos_proto/cosmos.proto"; +import "gogoproto/gogo.proto"; + +option go_package = "github.com/ignite/modules/x/fundraising/types"; + +// Bid defines a standard bid for an auction. +message Bid { + option (gogoproto.goproto_getters) = false; + + // auction_id specifies the id of the auction + uint64 auction_id = 1; + + // bidder specifies the bech32-encoded address that bids for the auction + string bidder = 2; + + // id specifies an index of a bid for the bidder + uint64 id = 3; + + // type specifies the bid type; type 1 is fixed price, 2 is how-much-worth, 3 + // is how-many-coins + BidType type = 4; + + // price specifies the bid price in which price the bidder places the bid + string price = 5 [ + (gogoproto.nullable) = false, + (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec", + (cosmos_proto.scalar) = "cosmos.Dec" + ]; + + // coin specifies the amount of coin that the bidder bids + // for a fixed price auction, the denom is of the paying coin. + // for a batch auction of how-much-worth, the denom is of the paying coin. + // for a batch auction of how-many-coins, the denom is of the selling coin. + cosmos.base.v1beta1.Coin coin = 6 [ + (gogoproto.nullable) = false, + (amino.dont_omitempty) = true, + (amino.encoding) = "legacy_coins", + (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coin" + ]; + + // is_matched specifies the bid that is a winning bid and enables the bidder + // to purchase the selling coin + bool is_matched = 7; +} + +// BidType enumerates the valid types of a bid. +enum BidType { + option (gogoproto.goproto_enum_prefix) = false; + + // BID_TYPE_UNSPECIFIED defines the default bid type + BID_TYPE_UNSPECIFIED = 0 [(gogoproto.enumvalue_customname) = "BidTypeNil"]; + + // BID_TYPE_FIXED_PRICE defines a bid type for a fixed price auction type + BID_TYPE_FIXED_PRICE = 1 [(gogoproto.enumvalue_customname) = "BidTypeFixedPrice"]; + + // BID_TYPE_BATCH_WORTH defines a bid type for How-Much-Worth-to-Buy of a + // batch auction + BID_TYPE_BATCH_WORTH = 2 [(gogoproto.enumvalue_customname) = "BidTypeBatchWorth"]; + + // BID_TYPE_BATCH_MANY defines a bid type for How-Many-Coins-to-Buy of a batch + // auction + BID_TYPE_BATCH_MANY = 3 [(gogoproto.enumvalue_customname) = "BidTypeBatchMany"]; +} + +// AddressType enumerates the available types of a address. +enum AddressType { + option (gogoproto.goproto_enum_prefix) = false; + + // the 32 bytes length address type of ADR 028. + ADDRESS_TYPE_32_BYTES = 0 [(gogoproto.enumvalue_customname) = "AddressType32Bytes"]; + // the default 20 bytes length address type. + ADDRESS_TYPE_20_BYTES = 1 [(gogoproto.enumvalue_customname) = "AddressType20Bytes"]; +} diff --git a/proto/modules/fundraising/v1/genesis.proto b/proto/modules/fundraising/v1/genesis.proto new file mode 100644 index 0000000..96b4e07 --- /dev/null +++ b/proto/modules/fundraising/v1/genesis.proto @@ -0,0 +1,37 @@ +syntax = "proto3"; + +package modules.fundraising.v1; + +import "amino/amino.proto"; +import "cosmos_proto/cosmos.proto"; +import "gogoproto/gogo.proto"; +import "google/protobuf/any.proto"; +import "modules/fundraising/v1/allowed_bidder.proto"; +import "modules/fundraising/v1/auction.proto"; +import "modules/fundraising/v1/bid.proto"; +import "modules/fundraising/v1/params.proto"; +import "modules/fundraising/v1/vesting_queue.proto"; + +option go_package = "github.com/ignite/modules/x/fundraising/types"; + +// GenesisState defines the fundraising module's genesis state. +message GenesisState { + // params defines all the parameters of the module. + Params params = 1 [ + (gogoproto.nullable) = false, + (amino.dont_omitempty) = true + ]; + + // auctionList define the auction interface for genesis state; the module + // supports FixedPriceAuction or BatchAuction + repeated google.protobuf.Any auctionList = 2 [(cosmos_proto.accepts_interface) = "AuctionI"]; + + // allowedBidderList define the allowed bidder records for the auction + repeated AllowedBidder allowedBidderList = 3 [(gogoproto.nullable) = false]; + + // bidList define the bid records used for genesis state + repeated Bid bidList = 4 [(gogoproto.nullable) = false]; + + // vestingQueueList define the vesting queue records used for genesis state + repeated VestingQueue vestingQueueList = 5 [(gogoproto.nullable) = false]; +} diff --git a/proto/modules/fundraising/v1/params.proto b/proto/modules/fundraising/v1/params.proto new file mode 100644 index 0000000..8a776ab --- /dev/null +++ b/proto/modules/fundraising/v1/params.proto @@ -0,0 +1,40 @@ +syntax = "proto3"; + +package modules.fundraising.v1; + +import "amino/amino.proto"; +import "cosmos/base/v1beta1/coin.proto"; +import "cosmos_proto/cosmos.proto"; +import "gogoproto/gogo.proto"; + +option go_package = "github.com/ignite/modules/x/fundraising/types"; + +// Params defines the parameters for the module. +message Params { + option (amino.name) = "fundraising/x/fundraising/Params"; + option (gogoproto.equal) = true; + + // auction_creation_fee specifies the fee for auction creation. + // this prevents from spamming attack and it is collected in the community + // pool + repeated cosmos.base.v1beta1.Coin auction_creation_fee = 1 [ + (gogoproto.nullable) = false, + (amino.dont_omitempty) = true, + (amino.encoding) = "legacy_coins", + (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins" + ]; + + // place_bid_fee specifies the fee for placing a bid for an auction. + // this prevents from spamming attack and it is collected in the community + // pool + repeated cosmos.base.v1beta1.Coin place_bid_fee = 2 [ + (gogoproto.nullable) = false, + (amino.dont_omitempty) = true, + (amino.encoding) = "legacy_coins", + (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins" + ]; + + // extended_period specifies the extended period that determines how long + // the extended auction round lasts + uint32 extended_period = 3; +} diff --git a/proto/modules/fundraising/v1/query.proto b/proto/modules/fundraising/v1/query.proto new file mode 100644 index 0000000..54ddcea --- /dev/null +++ b/proto/modules/fundraising/v1/query.proto @@ -0,0 +1,164 @@ +syntax = "proto3"; + +package modules.fundraising.v1; + +import "amino/amino.proto"; +import "cosmos/base/query/v1beta1/pagination.proto"; +import "cosmos_proto/cosmos.proto"; +import "gogoproto/gogo.proto"; +import "google/api/annotations.proto"; +import "google/protobuf/any.proto"; +import "modules/fundraising/v1/allowed_bidder.proto"; +import "modules/fundraising/v1/auction.proto"; +import "modules/fundraising/v1/bid.proto"; +import "modules/fundraising/v1/params.proto"; +import "modules/fundraising/v1/vesting_queue.proto"; + +option go_package = "github.com/ignite/modules/x/fundraising/types"; + +// Query defines the gRPC querier service. +service Query { + // Parameters queries the parameters of the module. + rpc Params(QueryParamsRequest) returns (QueryParamsResponse) { + option (google.api.http).get = "/ignite/modules/fundraising/v1/params"; + } + + // Queries a list of Auction items. + rpc ListAuction(QueryAllAuctionRequest) returns (QueryAllAuctionResponse) { + option (google.api.http).get = "/ignite/modules/fundraising/auction"; + } + rpc GetAuction(QueryGetAuctionRequest) returns (QueryGetAuctionResponse) { + option (google.api.http).get = "/ignite/modules/fundraising/auction/{auction_id}"; + } + + // Queries a list of AllowedBidder items. + rpc ListAllowedBidder(QueryAllAllowedBidderRequest) returns (QueryAllAllowedBidderResponse) { + option (google.api.http).get = "/ignite/modules/fundraising/auction/{auction_id}/allowed_bidder"; + } + rpc GetAllowedBidder(QueryGetAllowedBidderRequest) returns (QueryGetAllowedBidderResponse) { + option (google.api.http).get = "/ignite/modules/fundraising/auction/{auction_id}/allowed_bidder/{bidder}"; + } + + // Queries a list of Bid items. + rpc ListBid(QueryAllBidRequest) returns (QueryAllBidResponse) { + option (google.api.http).get = "/ignite/modules/fundraising/auction/{auction_id}/bid"; + } + rpc GetBid(QueryGetBidRequest) returns (QueryGetBidResponse) { + option (google.api.http).get = "/ignite/modules/fundraising/auction/{auction_id}/bid/{bid_id}"; + } + + // Queries a list of VestingQueue items. + rpc ListVestingQueue(QueryAllVestingQueueRequest) returns (QueryAllVestingQueueResponse) { + option (google.api.http).get = "/ignite/modules/fundraising/auction/{auction_id}/vestings"; + } +} + +// QueryParamsRequest is request type for the Query/Params RPC method. +message QueryParamsRequest {} + +// QueryParamsResponse is response type for the Query/Params RPC method. +message QueryParamsResponse { + // params holds all the parameters of this module. + Params params = 1 [ + (gogoproto.nullable) = false, + (amino.dont_omitempty) = true + ]; +} + +// QueryAllAuctionRequest is request type for the Query/Auctions RPC method. +message QueryAllAuctionRequest { + string status = 1; + string type = 2; + cosmos.base.query.v1beta1.PageRequest pagination = 3; +} + +// QueryAllAuctionResponse is response type for the Query/Auctions RPC method. +message QueryAllAuctionResponse { + // auctions specifies the existing auctions + repeated google.protobuf.Any auction = 1 [(cosmos_proto.accepts_interface) = "AuctionI"]; + + // pagination defines the pagination in the response + cosmos.base.query.v1beta1.PageResponse pagination = 2; +} + +// QueryGetAuctionRequest is the request type for the Query/Auction RPC method. +message QueryGetAuctionRequest { + uint64 auction_id = 1; +} + +// QueryGetAuctionResponse is the response type for the Query/Auction RPC method. +message QueryGetAuctionResponse { + google.protobuf.Any auction = 1 [(cosmos_proto.accepts_interface) = "AuctionI"]; +} + +// QueryAllowedBidderRequest is the request type for the Query/AllowedBidder RPC method. +message QueryAllAllowedBidderRequest { + uint64 auction_id = 1; + + cosmos.base.query.v1beta1.PageRequest pagination = 2; +} + +// QueryAllowedBidderResponse is the response type for the Query/AllowedBidder RPC method. +message QueryAllAllowedBidderResponse { + repeated AllowedBidder allowed_bidder = 1 [(gogoproto.nullable) = false]; + + // pagination defines the pagination in the response + cosmos.base.query.v1beta1.PageResponse pagination = 2; +} + +// QueryAllowedBidderRequest is the request type for the Query/AllowedBidder RPC +// method. +message QueryGetAllowedBidderRequest { + uint64 auction_id = 1; + string bidder = 2; +} + +// QueryAllowedBidderResponse is the response type for the Query/AllowedBidder +// RPC method. +message QueryGetAllowedBidderResponse { + AllowedBidder allowed_bidder = 1 [(gogoproto.nullable) = false]; +} + +// QueryGetBidRequest is the request type for the Query/Sequence RPC method. +message QueryGetBidRequest { + uint64 auction_id = 1; + uint64 bid_id = 2; +} + +// QueryGetBidResponse is response type for the Query/Sequence RPC method. +message QueryGetBidResponse { + // bid specifies specific bid + Bid bid = 1 [(gogoproto.nullable) = false]; +} + +// QueryBidsRequest is request type for the Query/Bids RPC method. +message QueryAllBidRequest { + uint64 auction_id = 1; + string bidder = 2; + string is_matched = 3; + cosmos.base.query.v1beta1.PageRequest pagination = 4; +} + +// QueryBidsResponse is response type for the Query/Bids RPC method. +message QueryAllBidResponse { + // bids specifies the existing bids + repeated Bid bid = 1 [(gogoproto.nullable) = false]; + + // pagination defines the pagination in the response + cosmos.base.query.v1beta1.PageResponse pagination = 2; +} + +// QueryAllVestingQueueRequest is request type for the Query/Vestings RPC method. +message QueryAllVestingQueueRequest { + uint64 auction_id = 1; + + cosmos.base.query.v1beta1.PageRequest pagination = 2; +} + +// QueryAllVestingQueueResponse is response type for the Query/Vestings RPC method. +message QueryAllVestingQueueResponse { + // vestings specifies the existing vestings + repeated VestingQueue vestingQueue = 1 [(gogoproto.nullable) = false]; + + cosmos.base.query.v1beta1.PageResponse pagination = 2; +} diff --git a/proto/modules/fundraising/v1/tx.proto b/proto/modules/fundraising/v1/tx.proto new file mode 100644 index 0000000..466a345 --- /dev/null +++ b/proto/modules/fundraising/v1/tx.proto @@ -0,0 +1,286 @@ +syntax = "proto3"; + +package modules.fundraising.v1; + +import "amino/amino.proto"; +import "cosmos/base/v1beta1/coin.proto"; +import "cosmos/msg/v1/msg.proto"; +import "cosmos_proto/cosmos.proto"; +import "gogoproto/gogo.proto"; +import "google/protobuf/timestamp.proto"; +import "modules/fundraising/v1/allowed_bidder.proto"; +import "modules/fundraising/v1/auction.proto"; +import "modules/fundraising/v1/bid.proto"; +import "modules/fundraising/v1/params.proto"; + +option go_package = "github.com/ignite/modules/x/fundraising/types"; + +// Msg defines the Msg service. +service Msg { + option (cosmos.msg.v1.service) = true; + + // UpdateParams defines a (governance) operation for updating the module + // parameters. The authority defaults to the x/gov module account. + rpc UpdateParams(MsgUpdateParams) returns (MsgUpdateParamsResponse); + + // CreateFixedPriceAuction submits a create fixed price auction message. + rpc CreateFixedPriceAuction(MsgCreateFixedPriceAuction) returns (MsgCreateFixedPriceAuctionResponse); + + // CreateBatchAuction submits a create batch auction message. + rpc CreateBatchAuction(MsgCreateBatchAuction) returns (MsgCreateBatchAuctionResponse); + + // CancelAuction defines a method to cancel the auction message. + rpc CancelAuction(MsgCancelAuction) returns (MsgCancelAuctionResponse); + + // PlaceBid defines a method to place a bid message. + rpc PlaceBid(MsgPlaceBid) returns (MsgPlaceBidResponse); + + // ModifyBid defines a method to modify the bid message. + rpc ModifyBid(MsgModifyBid) returns (MsgModifyBidResponse); + + // AddAllowedBidder defines a method sto add a single allowed bidder message. + // This is for the testing purpose and it must not be used in mainnet. + rpc AddAllowedBidder(MsgAddAllowedBidder) returns (MsgAddAllowedBidderResponse); +} + +// MsgUpdateParams is the Msg/UpdateParams request type. +message MsgUpdateParams { + option (cosmos.msg.v1.signer) = "authority"; + option (amino.name) = "fundraising/x/fundraising/MsgUpdateParams"; + + // authority is the address that controls the module (defaults to x/gov unless overwritten). + string authority = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + + // params defines the module parameters to update. + + // NOTE: All parameters must be supplied. + Params params = 2 [ + (gogoproto.nullable) = false, + (amino.dont_omitempty) = true + ]; +} + +// MsgUpdateParamsResponse defines the response structure for executing a +// MsgUpdateParams message. +message MsgUpdateParamsResponse {} + +// MsgCreateFixedPriceAuction defines a SDK message for creating a fixed price +// auction. +message MsgCreateFixedPriceAuction { + option (cosmos.msg.v1.signer) = "auctioneer"; + + // auctioneer specifies the bech32-encoded address that creates the auction + string auctioneer = 1; + + // start_price specifies the starting price of the auction + string start_price = 2 [ + (gogoproto.nullable) = false, + (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec", + (cosmos_proto.scalar) = "cosmos.Dec" + ]; + + // selling_coin specifies the selling coin for the auction + cosmos.base.v1beta1.Coin selling_coin = 3 [ + (gogoproto.nullable) = false, + (amino.dont_omitempty) = true, + (amino.encoding) = "legacy_coins", + (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coin" + ]; + + // paying_coin_denom specifies the paying coin denom that bidders use to bid + // for + string paying_coin_denom = 4; + + // vesting_schedules specifies the vesting schedules for the auction + repeated VestingSchedule vesting_schedules = 5 [(gogoproto.nullable) = false]; + + // start_time specifies the start time of the plan + google.protobuf.Timestamp start_time = 6 [ + (gogoproto.stdtime) = true, + (gogoproto.nullable) = false + ]; + + // end_time specifies the end time of the plan + google.protobuf.Timestamp end_time = 7 [ + (gogoproto.stdtime) = true, + (gogoproto.nullable) = false + ]; +} + +// MsgCreateFixedPriceAuctionResponse defines the +// Msg/MsgCreateFixedPriceAuctionResponse response type. +message MsgCreateFixedPriceAuctionResponse {} + +// MsgCreateBatchAuction defines a SDK message for creating an batch +// auction. +// +// See: +// https://github.com/ignite/modules/tree/main/x/fundraising/spec/04_messages.md +message MsgCreateBatchAuction { + option (cosmos.msg.v1.signer) = "auctioneer"; + + // auctioneer specifies the bech32-encoded address that creates the auction + string auctioneer = 1; + + // start_price specifies the starting price of the auction + string start_price = 2 [ + (gogoproto.nullable) = false, + (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec", + (cosmos_proto.scalar) = "cosmos.Dec" + ]; + + // min_bid_price specifies the minibum bid price + string min_bid_price = 3 [ + (gogoproto.nullable) = false, + (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec", + (cosmos_proto.scalar) = "cosmos.Dec" + ]; + + // selling_coin specifies the selling coin for the auction + cosmos.base.v1beta1.Coin selling_coin = 4 [ + (gogoproto.nullable) = false, + (amino.dont_omitempty) = true, + (amino.encoding) = "legacy_coins", + (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coin" + ]; + + // paying_coin_denom specifies the paying coin denom that bidders use to bid + // for + string paying_coin_denom = 5; + + // vesting_schedules specifies the vesting schedules for the auction + repeated VestingSchedule vesting_schedules = 6 [(gogoproto.nullable) = false]; + + // maximum_extended_round specifies the maximum number of extended rounds for + // the auction + uint32 max_extended_round = 7; + + // extended_round_rate specifies the rate that decides if the auction needs + // another round + string extended_round_rate = 8 [ + (gogoproto.nullable) = false, + (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec", + (cosmos_proto.scalar) = "cosmos.Dec" + ]; + + // start_time specifies the start time of the plan + google.protobuf.Timestamp start_time = 9 [ + (gogoproto.stdtime) = true, + (gogoproto.nullable) = false + ]; + + // end_time specifies the end time of the plan + google.protobuf.Timestamp end_time = 10 [ + (gogoproto.stdtime) = true, + (gogoproto.nullable) = false + ]; +} + +// MsgCreateBatchAuctionResponse defines the +// Msg/MsgCreateBatchAuctionResponse response type. +message MsgCreateBatchAuctionResponse {} + +// MsgCancelAuction defines a SDK message for cancelling the auction. +// Cancelling is only allowed when the auction hasn't started yet. +message MsgCancelAuction { + option (cosmos.msg.v1.signer) = "auctioneer"; + + // auctioneer specifies the bech32-encoded address that is in charge of the + // auction + string auctioneer = 1; + + // auction_id specifies the auction id + uint64 auction_id = 2; +} + +// MsgCancelAuctionResponse defines the Msg/MsgCancelAuctionResponse +// response type. +message MsgCancelAuctionResponse {} + +// MsgPlaceBid defines a SDK message for placing a bid for the auction. +message MsgPlaceBid { + option (cosmos.msg.v1.signer) = "bidder"; + + // auction_id specifies the auction id + uint64 auction_id = 1; + + // bidder specifies the bech32-encoded address that bids for the auction + string bidder = 2; + + // type specifies the bid type; type 1 is fixed price, 2 is how-much-worth, 3 + // is how-many-coins + BidType bid_type = 3; + + // price specifies the bid price. + // The bid price must be the start price for fixed price auction whereas + // the bide price can be any value that the bidder places. + string price = 4 [ + (gogoproto.nullable) = false, + (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec", + (cosmos_proto.scalar) = "cosmos.Dec" + ]; + + // coin specifies the paying amount of coin or the selling amount that the + // bidder bids + cosmos.base.v1beta1.Coin coin = 5 [ + (gogoproto.nullable) = false, + (amino.dont_omitempty) = true, + (amino.encoding) = "legacy_coins", + (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coin" + ]; +} + +// MsgPlaceBidResponse defines the Msg/MsgPlaceBidResponse response type. +message MsgPlaceBidResponse {} + +// MsgModifyBid defines a SDK message for modifying an existing bid for the +// auction. +message MsgModifyBid { + option (cosmos.msg.v1.signer) = "bidder"; + + // auction_id specifies the auction id + uint64 auction_id = 1; + + // bidder specifies the bech32-encoded address that bids for the auction + string bidder = 2; + + // bid_id specifies the bid id + uint64 bid_id = 3; + + // price specifies the bid price. + // the bide price must be above or equal to the original value that the bidder + // placed. + string price = 4 [ + (gogoproto.nullable) = false, + (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec", + (cosmos_proto.scalar) = "cosmos.Dec" + ]; + + // coin specifies the paying amount of coin or the selling amount that the + // bidder bids + cosmos.base.v1beta1.Coin coin = 5 [ + (gogoproto.nullable) = false, + (amino.dont_omitempty) = true, + (amino.encoding) = "legacy_coins", + (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coin" + ]; +} + +// MsgModifyBidResponse defines the Msg/MsgModifyBidResponse response type. +message MsgModifyBidResponse {} + +// MsgAddAllowedBidder defines a SDK message for adding an allowed bidder to the +// auction. +message MsgAddAllowedBidder { + option (cosmos.msg.v1.signer) = "allowed_bidder"; + + // auction_id specifies the auction id + uint64 auction_id = 1; + + // allowed_bidder specifies the bidder who is allowed to bid and their maximum + // bid amount + AllowedBidder allowed_bidder = 2 [(gogoproto.nullable) = false]; +} + +// MsgAddAllowedBidderResponse defines the Msg/MsgAddAllowedBidderResponse response type. +message MsgAddAllowedBidderResponse {} diff --git a/proto/modules/fundraising/v1/vesting_queue.proto b/proto/modules/fundraising/v1/vesting_queue.proto new file mode 100644 index 0000000..269c8f0 --- /dev/null +++ b/proto/modules/fundraising/v1/vesting_queue.proto @@ -0,0 +1,36 @@ +syntax = "proto3"; +package modules.fundraising.v1; + +import "amino/amino.proto"; +import "cosmos/base/v1beta1/coin.proto"; +import "cosmos_proto/cosmos.proto"; +import "gogoproto/gogo.proto"; +import "google/protobuf/timestamp.proto"; + +option go_package = "github.com/ignite/modules/x/fundraising/types"; + +// VestingQueue defines the vesting queue. +message VestingQueue { + // auction_id specifies the id of the auction + uint64 auction_id = 1; + + // auctioneer specifies the bech32-encoded address that creates the auction + string auctioneer = 2; + + // paying_coin specifies the paying amount of coin + cosmos.base.v1beta1.Coin paying_coin = 3 [ + (gogoproto.nullable) = false, + (amino.dont_omitempty) = true, + (amino.encoding) = "legacy_coins", + (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coin" + ]; + + // release_time specifies the timestamp of the vesting schedule + google.protobuf.Timestamp release_time = 4 [ + (gogoproto.stdtime) = true, + (gogoproto.nullable) = false + ]; + + // released specifies the status of distribution + bool released = 5; +} diff --git a/testutil/keeper/fundraising.go b/testutil/keeper/fundraising.go new file mode 100644 index 0000000..d56dd39 --- /dev/null +++ b/testutil/keeper/fundraising.go @@ -0,0 +1,73 @@ +package keeper + +import ( + "context" + "testing" + + "cosmossdk.io/core/address" + "cosmossdk.io/log" + "cosmossdk.io/store" + "cosmossdk.io/store/metrics" + storetypes "cosmossdk.io/store/types" + cmtproto "github.com/cometbft/cometbft/proto/tendermint/types" + dbm "github.com/cosmos/cosmos-db" + "github.com/cosmos/cosmos-sdk/codec" + addresscodec "github.com/cosmos/cosmos-sdk/codec/address" + codectypes "github.com/cosmos/cosmos-sdk/codec/types" + "github.com/cosmos/cosmos-sdk/runtime" + sdk "github.com/cosmos/cosmos-sdk/types" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" + "github.com/stretchr/testify/require" + + "github.com/ignite/modules/x/fundraising/keeper" + "github.com/ignite/modules/x/fundraising/types" +) + +func FundraisingKeeper(t testing.TB) (keeper.Keeper, context.Context, address.Codec) { + storeKey := storetypes.NewKVStoreKey(types.StoreKey) + + db := dbm.NewMemDB() + stateStore := store.NewCommitMultiStore(db, log.NewNopLogger(), metrics.NewNoOpMetrics()) + stateStore.MountStoreWithDB(storeKey, storetypes.StoreTypeIAVL, db) + require.NoError(t, stateStore.LoadLatestVersion()) + + registry := codectypes.NewInterfaceRegistry() + types.RegisterInterfaces(registry) + cdc := codec.NewProtoCodec(registry) + authority := authtypes.NewModuleAddress(govtypes.ModuleName) + addressCodec := addresscodec.NewBech32Codec(sdk.GetConfig().GetBech32AccountAddrPrefix()) + + k := keeper.NewKeeper( + cdc, + addressCodec, + runtime.NewKVStoreService(storeKey), + log.NewNopLogger(), + authority.String(), + nil, + nil, + nil, + ) + + ctx := sdk.NewContext(stateStore, cmtproto.Header{}, false, log.NewNopLogger()) + + // Initialize params + if err := k.Params.Set(ctx, types.DefaultParams()); err != nil { + t.Fatalf("failed to set params: %v", err) + } + + return k, ctx, addressCodec +} + +// FundAccount is a utility function that funds an account by minting and +// sending the coins to the address. This should be used for testing purposes +// only! +func FundAccount(bankKeeper bankkeeper.Keeper, ctx context.Context, addr sdk.AccAddress, amounts sdk.Coins) error { + if err := bankKeeper.MintCoins(ctx, minttypes.ModuleName, amounts); err != nil { + return err + } + + return bankKeeper.SendCoinsFromModuleToAccount(ctx, minttypes.ModuleName, addr, amounts) +} diff --git a/testutil/sample/sample.go b/testutil/sample/sample.go index bdc253f..3ee4ec1 100644 --- a/testutil/sample/sample.go +++ b/testutil/sample/sample.go @@ -8,12 +8,12 @@ import ( "time" sdkmath "cosmossdk.io/math" - "github.com/cometbft/cometbft/crypto" - "github.com/cometbft/cometbft/crypto/ed25519" "github.com/cosmos/cosmos-sdk/codec" codectypes "github.com/cosmos/cosmos-sdk/codec/types" cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" + "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" cosmosed25519 "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" + crypto "github.com/cosmos/cosmos-sdk/crypto/types" sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" diff --git a/testutil/simapp/simapp.go b/testutil/simapp/simapp.go new file mode 100644 index 0000000..6be7884 --- /dev/null +++ b/testutil/simapp/simapp.go @@ -0,0 +1,235 @@ +package simapp + +// DONTCOVER + +import ( + "context" + "encoding/json" + "math/rand" + "time" + + "cosmossdk.io/log" + "cosmossdk.io/math" + abci "github.com/cometbft/cometbft/abci/types" + tmtypes "github.com/cometbft/cometbft/types" + dbm "github.com/cosmos/cosmos-db" + "github.com/cosmos/cosmos-sdk/baseapp" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/cosmos/cosmos-sdk/codec" + codectypes "github.com/cosmos/cosmos-sdk/codec/types" + cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" + "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" + "github.com/cosmos/cosmos-sdk/server" + "github.com/cosmos/cosmos-sdk/testutil/mock" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" + sdk "github.com/cosmos/cosmos-sdk/types" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" + banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" + minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" + simcli "github.com/cosmos/cosmos-sdk/x/simulation/client/cli" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + + "github.com/ignite/modules/app" + "github.com/ignite/modules/testutil/sample" +) + +var r *rand.Rand + +// initialize random generator +func init() { + s := rand.NewSource(1) + r = rand.New(s) +} + +// New creates application instance with in-memory database and disabled logging. +func New(chainID string) (*app.App, error) { + var ( + db = dbm.NewMemDB() + logger = log.NewNopLogger() + ) + + appOptions := simtestutil.AppOptionsMap{ + flags.FlagHome: app.DefaultNodeHome, + server.FlagInvCheckPeriod: simcli.FlagPeriodValue, + } + + fundraisingApp, err := app.New( + logger, + db, + nil, + true, + appOptions, + fauxMerkleModeOpt, + baseapp.SetChainID(chainID), + ) + if err != nil { + return nil, err + } + + var ( + genesisState = fundraisingApp.DefaultGenesis() + privVal = mock.NewPV() + pubKey, _ = privVal.GetPubKey() + + // create validator set with single validator + validator = tmtypes.NewValidator(pubKey, 1) + valSet = tmtypes.NewValidatorSet([]*tmtypes.Validator{validator}) + + // generate genesis account + senderPubKey = sample.PubKey(r) + acc = authtypes.NewBaseAccount(sdk.AccAddress(senderPubKey.Address()), senderPubKey, 0, 0) + balances = banktypes.Balance{ + Address: acc.GetAddress().String(), + Coins: sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, math.NewInt(100000000000000))), + } + ) + // init chain must be called to stop deliverState from being nil + genesisState = genesisStateWithValSet(fundraisingApp.AppCodec(), genesisState, valSet, []authtypes.GenesisAccount{acc}, balances) + stateBytes, err := json.MarshalIndent(genesisState, "", " ") + if err != nil { + return nil, err + } + + if _, err := fundraisingApp.InitChain( + &abci.RequestInitChain{ + ChainId: chainID, + AppStateBytes: stateBytes, + }, + ); err != nil { + return nil, err + } + + return fundraisingApp, nil +} + +type GenerateAccountStrategy func(int) []sdk.AccAddress + +// fauxMerkleModeOpt returns a BaseApp option to use a dbStoreAdapter instead of +// an IAVLStore for faster simulation speed. +func fauxMerkleModeOpt(bapp *baseapp.BaseApp) { + bapp.SetFauxMerkleMode() +} + +// AddTestAddrs constructs and returns accNum amount of accounts with an +// initial balance of accAmt in random order +func AddTestAddrs(app *app.App, ctx context.Context, accNum int, accAmt math.Int) []sdk.AccAddress { + return addTestAddrs(app, ctx, accNum, accAmt, createRandomAccounts) +} + +// createRandomAccounts is a strategy used by addTestAddrs() in order to generated addresses in random order. +func createRandomAccounts(accNum int) []sdk.AccAddress { + testAddrs := make([]sdk.AccAddress, accNum) + for i := 0; i < accNum; i++ { + pk := ed25519.GenPrivKey().PubKey() + testAddrs[i] = sdk.AccAddress(pk.Address()) + } + + return testAddrs +} + +func addTestAddrs(app *app.App, ctx context.Context, accNum int, accAmt math.Int, strategy GenerateAccountStrategy) []sdk.AccAddress { + testAddrs := strategy(accNum) + + initCoins := sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, accAmt)) + + for _, addr := range testAddrs { + initAccountWithCoins(app, ctx, addr, initCoins) + } + + return testAddrs +} + +func initAccountWithCoins(app *app.App, ctx context.Context, addr sdk.AccAddress, coins sdk.Coins) { + err := app.BankKeeper.MintCoins(ctx, minttypes.ModuleName, coins) + if err != nil { + panic(err) + } + + err = app.BankKeeper.SendCoinsFromModuleToAccount(ctx, minttypes.ModuleName, addr, coins) + if err != nil { + panic(err) + } +} + +// FundAccount is a utility function that funds an account by minting and +// sending the coins to the address. This should be used for testing purposes +// only! +func FundAccount(bankKeeper bankkeeper.Keeper, ctx context.Context, addr sdk.AccAddress, amounts sdk.Coins) error { + if err := bankKeeper.MintCoins(ctx, minttypes.ModuleName, amounts); err != nil { + return err + } + + return bankKeeper.SendCoinsFromModuleToAccount(ctx, minttypes.ModuleName, addr, amounts) +} + +func genesisStateWithValSet( + cdc codec.Codec, + genesisState app.GenesisState, + valSet *tmtypes.ValidatorSet, + genAccs []authtypes.GenesisAccount, + balances ...banktypes.Balance, +) app.GenesisState { + // set genesis accounts + authGenesis := authtypes.NewGenesisState(authtypes.DefaultParams(), genAccs) + genesisState[authtypes.ModuleName] = cdc.MustMarshalJSON(authGenesis) + + validators := make([]stakingtypes.Validator, 0, len(valSet.Validators)) + delegations := make([]stakingtypes.Delegation, 0, len(valSet.Validators)) + + bondAmt := sdk.DefaultPowerReduction + + for _, val := range valSet.Validators { + pk, _ := cryptocodec.FromCmtPubKeyInterface(val.PubKey) + pkAny, _ := codectypes.NewAnyWithValue(pk) + valAddr := sdk.ValAddress(val.Address).String() + validator := stakingtypes.Validator{ + OperatorAddress: valAddr, + ConsensusPubkey: pkAny, + Jailed: false, + Status: stakingtypes.Bonded, + Tokens: bondAmt, + DelegatorShares: math.LegacyOneDec(), + Description: stakingtypes.Description{}, + UnbondingHeight: int64(0), + UnbondingTime: time.Unix(0, 0).UTC(), + Commission: stakingtypes.NewCommission(math.LegacyZeroDec(), math.LegacyZeroDec(), math.LegacyZeroDec()), + MinSelfDelegation: math.ZeroInt(), + } + validators = append(validators, validator) + delegations = append(delegations, stakingtypes.NewDelegation(genAccs[0].GetAddress().String(), valAddr, math.LegacyOneDec())) + + } + // set validators and delegations + stakingGenesis := stakingtypes.NewGenesisState(stakingtypes.DefaultParams(), validators, delegations) + genesisState[stakingtypes.ModuleName] = cdc.MustMarshalJSON(stakingGenesis) + + totalSupply := sdk.NewCoins() + for _, b := range balances { + // add genesis acc tokens to total supply + totalSupply = totalSupply.Add(b.Coins...) + } + + for range delegations { + // add delegated tokens to total supply + totalSupply = totalSupply.Add(sdk.NewCoin(sdk.DefaultBondDenom, bondAmt)) + } + + // add bonded amount to bonded pool module account + balances = append(balances, banktypes.Balance{ + Address: authtypes.NewModuleAddress(stakingtypes.BondedPoolName).String(), + Coins: sdk.Coins{sdk.NewCoin(sdk.DefaultBondDenom, bondAmt)}, + }) + + // update total supply + bankGenesis := banktypes.NewGenesisState( + banktypes.DefaultGenesisState().Params, + balances, + totalSupply, + []banktypes.Metadata{}, + []banktypes.SendEnabled{}, + ) + genesisState[banktypes.ModuleName] = cdc.MustMarshalJSON(bankGenesis) + + return genesisState +} diff --git a/x/fundraising/keeper/abci.go b/x/fundraising/keeper/abci.go new file mode 100644 index 0000000..8abf3c7 --- /dev/null +++ b/x/fundraising/keeper/abci.go @@ -0,0 +1,34 @@ +package keeper + +import ( + "context" + "fmt" + "time" + + "github.com/cosmos/cosmos-sdk/telemetry" + + "github.com/ignite/modules/x/fundraising/types" +) + +func (k Keeper) BeginBlocker(ctx context.Context) error { + defer telemetry.ModuleMeasureSince(types.ModuleName, time.Now(), telemetry.MetricKeyEndBlocker) + + // Get all auctions from the store and execute operations depending on auction status. + auctions, err := k.Auctions(ctx) + if err != nil { + return err + } + for _, auction := range auctions { + switch auction.GetStatus() { + case types.AuctionStatusStandBy: + err = k.ExecuteStandByStatus(ctx, auction) + case types.AuctionStatusStarted: + err = k.ExecuteStartedStatus(ctx, auction) + case types.AuctionStatusVesting: + err = k.ExecuteVestingStatus(ctx, auction) + default: + err = fmt.Errorf("invalid auction status %s", auction.GetStatus()) + } + } + return err +} diff --git a/x/fundraising/keeper/allowed_bidder.go b/x/fundraising/keeper/allowed_bidder.go new file mode 100644 index 0000000..fe4e2e6 --- /dev/null +++ b/x/fundraising/keeper/allowed_bidder.go @@ -0,0 +1,40 @@ +package keeper + +import ( + "context" + + "cosmossdk.io/collections" + sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/ignite/modules/x/fundraising/types" +) + +// GetAllowedBiddersByAuction returns allowed bidders list for the auction. +func (k Keeper) GetAllowedBiddersByAuction(ctx context.Context, auctionId uint64) ([]types.AllowedBidder, error) { + allowedBidders := make([]types.AllowedBidder, 0) + rng := collections.NewPrefixedPairRange[uint64, sdk.AccAddress](auctionId) + err := k.AllowedBidder.Walk(ctx, rng, func(_ collections.Pair[uint64, sdk.AccAddress], allowedBidder types.AllowedBidder) (bool, error) { + allowedBidders = append(allowedBidders, allowedBidder) + return false, nil + }) + return allowedBidders, err +} + +// AllowedBidders returns all AllowedBidder. +func (k Keeper) AllowedBidders(ctx context.Context) ([]types.AllowedBidder, error) { + allowedBidders := make([]types.AllowedBidder, 0) + err := k.IterateAllowedBidders(ctx, func(_ collections.Pair[uint64, sdk.AccAddress], allowedBidder types.AllowedBidder) (bool, error) { + allowedBidders = append(allowedBidders, allowedBidder) + return false, nil + }) + return allowedBidders, err +} + +// IterateAllowedBidders iterates over all the AllowedBidders and performs a callback function. +func (k Keeper) IterateAllowedBidders(ctx context.Context, cb func(collections.Pair[uint64, sdk.AccAddress], types.AllowedBidder) (bool, error)) error { + err := k.AllowedBidder.Walk(ctx, nil, cb) + if err != nil { + return err + } + return nil +} diff --git a/x/fundraising/keeper/auction.go b/x/fundraising/keeper/auction.go new file mode 100644 index 0000000..fb0efde --- /dev/null +++ b/x/fundraising/keeper/auction.go @@ -0,0 +1,681 @@ +package keeper + +import ( + "context" + "fmt" + "sort" + "strconv" + "time" + + "cosmossdk.io/collections" + sdkerrors "cosmossdk.io/errors" + "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/errors" + banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" + + "github.com/ignite/modules/x/fundraising/types" +) + +type inOutCoins struct { + bidder string + input banktypes.Input + outputs []banktypes.Output +} + +// Auctions returns all Actions. +func (k Keeper) Auctions(ctx context.Context) ([]types.AuctionI, error) { + auctions := make([]types.AuctionI, 0) + err := k.IterateAuctions(ctx, func(_ uint64, auction types.AuctionI) (bool, error) { + auctions = append(auctions, auction) + return false, nil + }) + return auctions, err +} + +// IterateAuctions iterates over all the Auctions and performs a callback function. +func (k Keeper) IterateAuctions(ctx context.Context, cb func(uint64, types.AuctionI) (bool, error)) error { + err := k.Auction.Walk(ctx, nil, cb) + if err != nil { + return err + } + return nil +} + +// AddAllowedBidders is a function that is implemented for an external module. +// An external module uses this function to add allowed bidders in the auction's allowed bidders list. +// It doesn't look up the bidder's previous maximum bid amount. Instead, it overlaps. +// It doesn't have any auctioneer's verification logic because the module is fundamentally designed +// to delegate full authorization to an external module. +// It is up to an external module to freely add necessary verification and operations depending on their use cases. +func (k Keeper) AddAllowedBidders(ctx context.Context, auctionId uint64, allowedBidders []types.AllowedBidder) error { + if len(allowedBidders) == 0 { + return types.ErrEmptyAllowedBidders + } + + auction, err := k.Auction.Get(ctx, auctionId) + if err != nil { + return sdkerrors.Wrapf(err, "auction %d is not found", auctionId) + } + + // Call hook before adding allowed bidders for the auction + if err := k.BeforeAllowedBiddersAdded(ctx, allowedBidders); err != nil { + return err + } + + // Store new allowed bidders + for _, ab := range allowedBidders { + if err := ab.Validate(); err != nil { + return err + } + if ab.MaxBidAmount.GT(auction.GetSellingCoin().Amount) { + return types.ErrInsufficientRemainingAmount + } + + bidder, err := ab.GetBidder() + if err != nil { + return err + } + if err := k.AllowedBidder.Set(ctx, collections.Join(auctionId, bidder), ab); err != nil { + return err + } + } + + return nil +} + +// UpdateAllowedBidder is a function that is implemented for an external module. +// An external module uses this function to update maximum bid amount of particular allowed bidder in the auction. +// It doesn't have any auctioneer's verification logic because the module is fundamentally designed +// to delegate full authorization to an external module. +// It is up to an external module to freely add necessary verification and operations depending on their use cases. +func (k Keeper) UpdateAllowedBidder(ctx context.Context, auctionId uint64, bidder sdk.AccAddress, maxBidAmount math.Int) error { + _, err := k.Auction.Get(ctx, auctionId) + if err != nil { + return sdkerrors.Wrapf(err, "auction %d is not found", auctionId) + } + + _, err = k.AllowedBidder.Get(ctx, collections.Join(auctionId, bidder)) + if err != nil { + return sdkerrors.Wrapf(errors.ErrNotFound, "bidder %s is not found", bidder.String()) + } + + allowedBidder := types.NewAllowedBidder(auctionId, bidder, maxBidAmount) + + if err := allowedBidder.Validate(); err != nil { + return err + } + + // Call hook before updating the allowed bidders for the auction + if err := k.BeforeAllowedBidderUpdated(ctx, auctionId, bidder, maxBidAmount); err != nil { + return err + } + + if err := k.AllowedBidder.Set(ctx, collections.Join(auctionId, bidder), allowedBidder); err != nil { + return sdkerrors.Wrapf(errors.ErrNotFound, "allowed bidder %s no set", bidder.String()) + } + + return nil +} + +// AllocateSellingCoin allocates allocated selling coin for all matched bids in MatchingInfo and +// releases them from the selling reserve account. +func (k Keeper) AllocateSellingCoin(ctx context.Context, auction types.AuctionI, mInfo MatchingInfo) error { + // Call hook before selling coin allocation + if err := k.BeforeSellingCoinsAllocated(ctx, auction.GetId(), mInfo.AllocationMap, mInfo.RefundMap); err != nil { + return err + } + + sellingReserveAddr := auction.GetSellingReserveAddress() + sellingCoinDenom := auction.GetSellingCoin().Denom + + ioCoins := make(map[string]inOutCoins) + + // Sort bidders to reserve determinism + var bidders []string + for bidder := range mInfo.AllocationMap { + bidders = append(bidders, bidder) + } + sort.Strings(bidders) + + // Allocate coins to all matched bidders in AllocationMap and + // set the amounts in transaction inputs and outputs from the selling reserve account + for _, bidder := range bidders { + if mInfo.AllocationMap[bidder].IsZero() { + continue + } + allocateCoins := sdk.NewCoins(sdk.NewCoin(sellingCoinDenom, mInfo.AllocationMap[bidder])) + bidderAddr, err := sdk.AccAddressFromBech32(bidder) + if err != nil { + return err + } + + if _, ok := ioCoins[bidderAddr.String()]; !ok { + ioCoins[bidder] = inOutCoins{ + bidder: bidder, + outputs: []banktypes.Output{banktypes.NewOutput(bidderAddr, allocateCoins)}, + input: banktypes.NewInput(sellingReserveAddr, allocateCoins), + } + continue + } + + inout := ioCoins[bidder] + inout.input.Coins = inout.input.Coins.Add(allocateCoins...) + inout.outputs = append(inout.outputs, banktypes.NewOutput(bidderAddr, allocateCoins)) + ioCoins[bidder] = inout + } + + // Send all inputs + for _, inout := range ioCoins { + if err := k.bankKeeper.InputOutputCoins(ctx, inout.input, inout.outputs); err != nil { + return err + } + } + + return nil +} + +// ReleaseVestingPayingCoin releases the vested selling coin to the auctioneer from the vesting reserve account. +func (k Keeper) ReleaseVestingPayingCoin(ctx context.Context, auction types.AuctionI) error { + vestingQueues, err := k.GetVestingQueuesByAuctionId(ctx, auction.GetId()) + if err != nil { + return err + } + vestingQueuesLen := len(vestingQueues) + + for i, vestingQueue := range vestingQueues { + blockTime := sdk.UnwrapSDKContext(ctx).BlockTime() + if vestingQueue.ShouldRelease(blockTime) { + vestingReserveAddr := auction.GetVestingReserveAddress() + auctioneerAddr := auction.GetAuctioneer() + payingCoins := sdk.NewCoins(vestingQueue.PayingCoin) + + if err := k.bankKeeper.SendCoins(ctx, vestingReserveAddr, auctioneerAddr, payingCoins); err != nil { + return sdkerrors.Wrap(err, "failed to release paying coin to the auctioneer") + } + + vestingQueue.SetReleased(true) + if err := k.VestingQueue.Set(ctx, collections.Join( + vestingQueue.AuctionId, + vestingQueue.ReleaseTime, + ), vestingQueue); err != nil { + return err + } + + // Update status when all the amounts are released + if i == vestingQueuesLen-1 { + if err := auction.SetStatus(types.AuctionStatusFinished); err != nil { + return err + } + if err := k.Auction.Set(ctx, auction.GetId(), auction); err != nil { + return err + } + } + } + } + + return nil +} + +// RefundRemainingSellingCoin refunds the remaining selling coin to the auctioneer. +func (k Keeper) RefundRemainingSellingCoin(ctx context.Context, auction types.AuctionI) error { + sellingReserveAddr := auction.GetSellingReserveAddress() + sellingCoinDenom := auction.GetSellingCoin().Denom + spendableCoins := k.bankKeeper.SpendableCoins(ctx, sellingReserveAddr) + releaseCoins := sdk.NewCoins(sdk.NewCoin(sellingCoinDenom, spendableCoins.AmountOf(sellingCoinDenom))) + + if err := k.bankKeeper.SendCoins(ctx, sellingReserveAddr, auction.GetAuctioneer(), releaseCoins); err != nil { + return err + } + return nil +} + +// RefundPayingCoin refunds paying coin to the corresponding bidders. +func (k Keeper) RefundPayingCoin(ctx context.Context, auction types.AuctionI, mInfo MatchingInfo) error { + payingReserveAddr := auction.GetPayingReserveAddress() + payingCoinDenom := auction.GetPayingCoinDenom() + + ioCoins := make(map[string]inOutCoins) + + // Sort bidders to reserve determinism + var bidders []string + for bidder := range mInfo.RefundMap { + bidders = append(bidders, bidder) + } + sort.Strings(bidders) + + // Refund the unmatched bid amount back to the bidder + for _, bidder := range bidders { + if mInfo.RefundMap[bidder].IsZero() { + continue + } + + bidderAddr, err := sdk.AccAddressFromBech32(bidder) + if err != nil { + return err + } + refundCoins := sdk.NewCoins(sdk.NewCoin(payingCoinDenom, mInfo.RefundMap[bidder])) + + if _, ok := ioCoins[bidderAddr.String()]; !ok { + ioCoins[bidder] = inOutCoins{ + bidder: bidder, + outputs: []banktypes.Output{banktypes.NewOutput(bidderAddr, refundCoins)}, + input: banktypes.NewInput(payingReserveAddr, refundCoins), + } + continue + } + + inout := ioCoins[bidder] + inout.input.Coins = inout.input.Coins.Add(refundCoins...) + inout.outputs = append(inout.outputs, banktypes.NewOutput(bidderAddr, refundCoins)) + ioCoins[bidder] = inout + } + + // Send all inputs. + for _, inout := range ioCoins { + if err := k.bankKeeper.InputOutputCoins(ctx, inout.input, inout.outputs); err != nil { + return err + } + } + + return nil +} + +// ExtendRound extends another round of ExtendedPeriod value for the auction. +func (k Keeper) ExtendRound(ctx context.Context, ba *types.BatchAuction) error { + params, err := k.Params.Get(ctx) + if err != nil { + return err + } + extendedPeriod := params.ExtendedPeriod + nextEndTime := ba.GetEndTimes()[len(ba.GetEndTimes())-1].AddDate(0, 0, int(extendedPeriod)) + endTimes := append(ba.GetEndTimes(), nextEndTime) + + _ = ba.SetEndTimes(endTimes) + + return k.Auction.Set(ctx, ba.GetId(), ba) +} + +// CloseFixedPriceAuction closes a fixed price auction. +func (k Keeper) CloseFixedPriceAuction(ctx context.Context, auction types.AuctionI) error { + mInfo, err := k.CalculateFixedPriceAllocation(ctx, auction) + if err != nil { + return err + } + + if err := k.AllocateSellingCoin(ctx, auction, mInfo); err != nil { + return err + } + + if err := k.RefundRemainingSellingCoin(ctx, auction); err != nil { + return err + } + + if err := k.ApplyVestingSchedules(ctx, auction); err != nil { + return err + } + + return nil +} + +// CloseBatchAuction closes a batch auction. +func (k Keeper) CloseBatchAuction(ctx context.Context, auction types.AuctionI) error { + ba, ok := auction.(*types.BatchAuction) + if !ok { + return fmt.Errorf("unable to close auction that is not a batch auction: %T", auction) + } + + // Extend round since there is no last matched length to compare with + lastMatchedLen, err := k.GetLastMatchedBidsLen(ctx, ba.GetId()) + if err != nil { + return err + } + mInfo, err := k.CalculateBatchAllocation(ctx, auction) + if err != nil { + return err + } + + // Close the auction when maximum extended round + 1 is the same as the length of end times + // If the value of MaxExtendedRound is 0, it means that an auctioneer does not want have an extended round + if ba.MaxExtendedRound+1 == uint32(len(auction.GetEndTimes())) { + if err := k.AllocateSellingCoin(ctx, auction, mInfo); err != nil { + return err + } + + if err := k.RefundRemainingSellingCoin(ctx, auction); err != nil { + return err + } + + if err := k.RefundPayingCoin(ctx, auction, mInfo); err != nil { + return err + } + + if err := k.ApplyVestingSchedules(ctx, auction); err != nil { + return err + } + + return nil + } + + if lastMatchedLen == 0 { + return k.ExtendRound(ctx, ba) + } + + currDec := math.LegacyNewDec(mInfo.MatchedLen) + lastDec := math.LegacyNewDec(lastMatchedLen) + diff := math.LegacyOneDec().Sub(currDec.Quo(lastDec)) // 1 - (CurrentMatchedLenDec / LastMatchedLenDec) + + // To prevent from auction sniping technique, compare the extended round rate with + // the current and the last length of matched bids to determine + // if the auction needs another extended round + if diff.GTE(ba.ExtendedRoundRate) { + return k.ExtendRound(ctx, ba) + } + + if err := k.AllocateSellingCoin(ctx, auction, mInfo); err != nil { + return err + } + + if err := k.RefundRemainingSellingCoin(ctx, auction); err != nil { + return err + } + + if err := k.RefundPayingCoin(ctx, auction, mInfo); err != nil { + return err + } + + if err := k.ApplyVestingSchedules(ctx, auction); err != nil { + return err + } + + return nil +} + +// CreateFixedPriceAuction handles types.MsgCreateFixedPriceAuction and create a fixed price auction. +// Note that the module is designed to delegate authorization to an external module to add allowed bidders for the auction. +func (k Keeper) CreateFixedPriceAuction(ctx context.Context, msg *types.MsgCreateFixedPriceAuction) (types.AuctionI, error) { + sdkCtx := sdk.UnwrapSDKContext(ctx) + blockTime := sdkCtx.BlockTime() + if blockTime.After(msg.EndTime) { // EndTime < CurrentTime + return nil, sdkerrors.Wrap(errors.ErrInvalidRequest, "end time must be set after the current time") + } + + if len(msg.VestingSchedules) > types.MaxNumVestingSchedules { + return nil, sdkerrors.Wrap(errors.ErrInvalidRequest, "exceed maximum number of vesting schedules") + } + + nextId, err := k.AuctionSeq.Next(ctx) + if err != nil { + return nil, err + } + + auctioneer, err := sdk.AccAddressFromBech32(msg.GetAuctioneer()) + if err != nil { + return nil, err + } + + if err := k.PayCreationFee(ctx, auctioneer); err != nil { + return nil, sdkerrors.Wrap(err, "failed to pay auction creation fee") + } + + if err := k.ReserveSellingCoin(ctx, nextId, auctioneer, msg.SellingCoin); err != nil { + return nil, sdkerrors.Wrap(err, "failed to reserve selling coin") + } + + ba := types.NewBaseAuction( + nextId, + types.AuctionTypeFixedPrice, + msg.Auctioneer, + types.SellingReserveAddress(nextId).String(), + types.PayingReserveAddress(nextId).String(), + msg.StartPrice, + msg.SellingCoin, + msg.PayingCoinDenom, + types.VestingReserveAddress(nextId).String(), + msg.VestingSchedules, + msg.StartTime, + []time.Time{msg.EndTime}, // it is an array data type to handle BatchAuction + types.AuctionStatusStandBy, + ) + + // Update status if the start time is already passed over the current time + if ba.ShouldAuctionStarted(blockTime) { + _ = ba.SetStatus(types.AuctionStatusStarted) + } + + auction := types.NewFixedPriceAuction(ba, msg.SellingCoin) + + // Call hook before storing an auction + if err := k.BeforeFixedPriceAuctionCreated( + ctx, + auction.Auctioneer, + auction.StartPrice, + auction.SellingCoin, + auction.PayingCoinDenom, + auction.VestingSchedules, + auction.StartTime, + auction.EndTimes[0], + ); err != nil { + return nil, err + } + + if err := k.Auction.Set(ctx, ba.GetId(), auction); err != nil { + return nil, err + } + + // Call hook after storing an auction + if err := k.AfterFixedPriceAuctionCreated( + ctx, + auction.Id, + auction.Auctioneer, + auction.StartPrice, + auction.SellingCoin, + auction.PayingCoinDenom, + auction.VestingSchedules, + auction.StartTime, + auction.EndTimes[0], + ); err != nil { + return nil, err + } + + sdkCtx.EventManager().EmitEvents(sdk.Events{ + sdk.NewEvent( + types.EventTypeCreateFixedPriceAuction, + sdk.NewAttribute(types.AttributeKeyAuctionId, strconv.FormatUint(nextId, 10)), + sdk.NewAttribute(types.AttributeKeyAuctioneerAddress, auction.GetAuctioneer().String()), + sdk.NewAttribute(types.AttributeKeySellingReserveAddress, auction.GetSellingReserveAddress().String()), + sdk.NewAttribute(types.AttributeKeyPayingReserveAddress, auction.GetPayingReserveAddress().String()), + sdk.NewAttribute(types.AttributeKeyStartPrice, auction.GetStartPrice().String()), + sdk.NewAttribute(types.AttributeKeySellingCoin, auction.GetSellingCoin().String()), + sdk.NewAttribute(types.AttributeKeyPayingCoinDenom, auction.GetPayingCoinDenom()), + sdk.NewAttribute(types.AttributeKeyVestingReserveAddress, auction.GetVestingReserveAddress().String()), + sdk.NewAttribute(types.AttributeKeyRemainingSellingCoin, auction.RemainingSellingCoin.String()), + sdk.NewAttribute(types.AttributeKeyStartTime, auction.GetStartTime().String()), + sdk.NewAttribute(types.AttributeKeyEndTime, msg.EndTime.String()), + sdk.NewAttribute(types.AttributeKeyAuctionStatus, auction.GetStatus().String()), + ), + }) + + return auction, nil +} + +// CreateBatchAuction handles types.MsgCreateBatchAuction and create a batch auction. +// Note that the module is designed to delegate authorization to an external module to add allowed bidders for the auction. +func (k Keeper) CreateBatchAuction(ctx context.Context, msg *types.MsgCreateBatchAuction) (types.AuctionI, error) { + sdkCtx := sdk.UnwrapSDKContext(ctx) + blockTime := sdkCtx.BlockTime() + if blockTime.After(msg.EndTime) { // EndTime < CurrentTime + return nil, sdkerrors.Wrap(errors.ErrInvalidRequest, "end time must be set after the current time") + } + + if len(msg.VestingSchedules) > types.MaxNumVestingSchedules { + return nil, sdkerrors.Wrap(errors.ErrInvalidRequest, "exceed maximum number of vesting schedules") + } + + if msg.MaxExtendedRound > types.MaxExtendedRound { + return nil, sdkerrors.Wrap(errors.ErrInvalidRequest, "exceed maximum extended round") + } + + nextId, err := k.AuctionSeq.Next(ctx) + if err != nil { + return nil, err + } + + auctioneer, err := sdk.AccAddressFromBech32(msg.GetAuctioneer()) + if err != nil { + return nil, err + } + + if err := k.PayCreationFee(ctx, auctioneer); err != nil { + return nil, sdkerrors.Wrap(err, "failed to pay auction creation fee") + } + + if err := k.ReserveSellingCoin(ctx, nextId, auctioneer, msg.SellingCoin); err != nil { + return nil, sdkerrors.Wrap(err, "failed to reserve selling coin") + } + + endTimes := []time.Time{msg.EndTime} // it is an array data type to handle BatchAuction + + ba := types.NewBaseAuction( + nextId, + types.AuctionTypeBatch, + msg.Auctioneer, + types.SellingReserveAddress(nextId).String(), + types.PayingReserveAddress(nextId).String(), + msg.StartPrice, + msg.SellingCoin, + msg.PayingCoinDenom, + types.VestingReserveAddress(nextId).String(), + msg.VestingSchedules, + msg.StartTime, + endTimes, + types.AuctionStatusStandBy, + ) + + // Update status if the start time is already passed the current time + if ba.ShouldAuctionStarted(blockTime) { + _ = ba.SetStatus(types.AuctionStatusStarted) + } + + auction := types.NewBatchAuction( + ba, + msg.MinBidPrice, + math.LegacyZeroDec(), + msg.MaxExtendedRound, + msg.ExtendedRoundRate, + ) + + // Call hook before storing an auction + if err := k.BeforeBatchAuctionCreated( + ctx, + auction.Auctioneer, + auction.StartPrice, + auction.MinBidPrice, + auction.SellingCoin, + auction.PayingCoinDenom, + auction.VestingSchedules, + auction.MaxExtendedRound, + auction.ExtendedRoundRate, + auction.StartTime, + auction.EndTimes[0], + ); err != nil { + return nil, err + } + + if err := k.Auction.Set(ctx, ba.GetId(), auction); err != nil { + return nil, err + } + + // Call hook after storing an auction + if err := k.AfterBatchAuctionCreated( + ctx, + auction.Id, + auction.Auctioneer, + auction.StartPrice, + auction.MinBidPrice, + auction.SellingCoin, + auction.PayingCoinDenom, + auction.VestingSchedules, + auction.MaxExtendedRound, + auction.ExtendedRoundRate, + auction.StartTime, + auction.EndTimes[0], + ); err != nil { + return nil, err + } + + sdkCtx.EventManager().EmitEvents(sdk.Events{ + sdk.NewEvent( + types.EventTypeCreateBatchAuction, + sdk.NewAttribute(types.AttributeKeyAuctionId, strconv.FormatUint(nextId, 10)), + sdk.NewAttribute(types.AttributeKeyAuctioneerAddress, auction.GetAuctioneer().String()), + sdk.NewAttribute(types.AttributeKeySellingReserveAddress, auction.GetSellingReserveAddress().String()), + sdk.NewAttribute(types.AttributeKeyPayingReserveAddress, auction.GetPayingReserveAddress().String()), + sdk.NewAttribute(types.AttributeKeyStartPrice, auction.GetStartPrice().String()), + sdk.NewAttribute(types.AttributeKeySellingCoin, auction.GetSellingCoin().String()), + sdk.NewAttribute(types.AttributeKeyPayingCoinDenom, auction.GetPayingCoinDenom()), + sdk.NewAttribute(types.AttributeKeyVestingReserveAddress, auction.GetVestingReserveAddress().String()), + sdk.NewAttribute(types.AttributeKeyStartTime, auction.GetStartTime().String()), + sdk.NewAttribute(types.AttributeKeyEndTime, msg.EndTime.String()), + sdk.NewAttribute(types.AttributeKeyAuctionStatus, auction.GetStatus().String()), + sdk.NewAttribute(types.AttributeKeyMinBidPrice, auction.MinBidPrice.String()), + sdk.NewAttribute(types.AttributeKeyMaxExtendedRound, fmt.Sprint(auction.MaxExtendedRound)), + sdk.NewAttribute(types.AttributeKeyExtendedRoundRate, auction.ExtendedRoundRate.String()), + ), + }) + + return auction, nil +} + +// CancelAuction handles types.MsgCancelAuction and cancels the auction. +// An auction can only be canceled when it is not started yet. +func (k Keeper) CancelAuction(ctx context.Context, msg *types.MsgCancelAuction) error { + auction, err := k.Auction.Get(ctx, msg.AuctionId) + if err != nil { + return err + } + + if auction.GetAuctioneer().String() != msg.Auctioneer { + return sdkerrors.Wrap(errors.ErrUnauthorized, "only the auctioneer can cancel the auction") + } + + if auction.GetStatus() != types.AuctionStatusStandBy { + return sdkerrors.Wrap(types.ErrInvalidAuctionStatus, "only the stand by auction can be cancelled") + } + + sellingReserveAddr := auction.GetSellingReserveAddress() + sellingCoinDenom := auction.GetSellingCoin().Denom + spendableCoins := k.bankKeeper.SpendableCoins(ctx, sellingReserveAddr) + releaseCoin := sdk.NewCoin(sellingCoinDenom, spendableCoins.AmountOf(sellingCoinDenom)) + + // Release the selling coin back to the auctioneer + if err := k.bankKeeper.SendCoins(ctx, sellingReserveAddr, auction.GetAuctioneer(), sdk.NewCoins(releaseCoin)); err != nil { + return sdkerrors.Wrap(err, "failed to release the selling coin") + } + + // Call hook before cancelling the auction + if err := k.BeforeAuctionCanceled(ctx, msg.AuctionId, msg.Auctioneer); err != nil { + return err + } + + if auction.GetType() == types.AuctionTypeFixedPrice { + fa := auction.(*types.FixedPriceAuction) + fa.RemainingSellingCoin = sdk.NewCoin(sellingCoinDenom, math.ZeroInt()) + auction = fa + } + + _ = auction.SetStatus(types.AuctionStatusCancelled) + if err := k.Auction.Set(ctx, auction.GetId(), auction); err != nil { + return err + } + + sdkCtx := sdk.UnwrapSDKContext(ctx) + sdkCtx.EventManager().EmitEvents(sdk.Events{ + sdk.NewEvent( + types.EventTypeCancelAuction, + sdk.NewAttribute(types.AttributeKeyAuctionId, strconv.FormatUint(auction.GetId(), 10)), + ), + }) + + return nil +} diff --git a/x/fundraising/keeper/auction_test.go b/x/fundraising/keeper/auction_test.go new file mode 100644 index 0000000..7129021 --- /dev/null +++ b/x/fundraising/keeper/auction_test.go @@ -0,0 +1,923 @@ +package keeper_test + +import ( + "time" + + "cosmossdk.io/collections" + sdkerrors "cosmossdk.io/errors" + "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/errors" + _ "github.com/stretchr/testify/suite" + + "github.com/ignite/modules/x/fundraising/types" +) + +func (s *KeeperTestSuite) TestFixedPriceAuction_AuctionStatus() { + standByAuction := s.createFixedPriceAuction( + s.addr(0), + parseDec("0.5"), + parseCoin("5000_000_000denom1"), + "denom2", + []types.VestingSchedule{}, + time.Now().AddDate(0, 6, 0), + time.Now().AddDate(0, 6, 0).AddDate(0, 1, 0), + true, + ) + + auction, err := s.keeper.Auction.Get(s.ctx, standByAuction.GetId()) + s.Require().NoError(err) + s.Require().Equal(types.AuctionStatusStandBy, auction.GetStatus()) + + feePool, err := s.app.DistrKeeper.FeePool.Get(s.ctx) + s.Require().NoError(err) + + params, err := s.keeper.Params.Get(s.ctx) + s.Require().NoError(err) + + auctionCreationFee := params.AuctionCreationFee + s.Require().True(feePool.CommunityPool.Equal(sdk.NewDecCoinsFromCoins(auctionCreationFee...))) + + startedAuction := s.createFixedPriceAuction( + s.addr(1), + parseDec("0.5"), + parseCoin("1000_000_000_000denom3"), + "denom4", + []types.VestingSchedule{}, + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 2, 0), + true, + ) + + auction, err = s.keeper.Auction.Get(s.ctx, startedAuction.GetId()) + s.Require().NoError(err) + s.Require().Equal(types.AuctionStatusStarted, auction.GetStatus()) +} + +func (s *KeeperTestSuite) TestFixedPriceAuction_BidWithPayingCoinDenom() { + startedAuction := s.createFixedPriceAuction( + s.addr(0), + parseDec("0.5"), + parseCoin("1_000_000_000_000denom1"), + "denom2", + []types.VestingSchedule{}, + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 2, 0), + true, + ) + + auction, err := s.keeper.Auction.Get(s.ctx, startedAuction.GetId()) + s.Require().NoError(err) + + s.placeBidFixedPrice(auction.GetId(), s.addr(1), auction.GetStartPrice(), parseCoin("1_000_000denom2"), true) + s.placeBidFixedPrice(auction.GetId(), s.addr(1), auction.GetStartPrice(), parseCoin("1_000_000denom2"), true) + s.placeBidFixedPrice(auction.GetId(), s.addr(1), auction.GetStartPrice(), parseCoin("1_000_000denom2"), true) + + // Make sure allocate amount is equal to the total bid amount made by the same bidder + mInfo, err := s.keeper.CalculateFixedPriceAllocation(s.ctx, auction) + s.Require().NoError(err) + + allocateAmt := mInfo.AllocationMap[s.addr(1).String()] + s.Require().Equal(allocateAmt, parseCoin("6_000_000denom1").Amount) +} + +func (s *KeeperTestSuite) TestFixedPriceAuction_BidWithSellingCoinDenom() { + startedAuction := s.createFixedPriceAuction( + s.addr(0), + parseDec("0.5"), + parseCoin("1_000_000_000_000denom1"), + "denom2", + []types.VestingSchedule{}, + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 2, 0), + true, + ) + + auction, err := s.keeper.Auction.Get(s.ctx, startedAuction.GetId()) + s.Require().NoError(err) + + s.placeBidFixedPrice(auction.GetId(), s.addr(1), auction.GetStartPrice(), parseCoin("1_000_000denom1"), true) + s.placeBidFixedPrice(auction.GetId(), s.addr(1), auction.GetStartPrice(), parseCoin("1_000_000denom1"), true) + s.placeBidFixedPrice(auction.GetId(), s.addr(1), auction.GetStartPrice(), parseCoin("1_000_000denom1"), true) + + // Make sure allocate amount is equal to the total bid amount made by the same bidder + mInfo, err := s.keeper.CalculateFixedPriceAllocation(s.ctx, auction) + s.Require().NoError(err) + + allocateAmt := mInfo.AllocationMap[s.addr(1).String()] + s.Require().Equal(allocateAmt, parseCoin("3_000_000denom1").Amount) +} + +func (s *KeeperTestSuite) TestFixedPriceAuction_BidWithBoth() { + startedAuction := s.createFixedPriceAuction( + s.addr(0), + parseDec("0.5"), + parseCoin("1_000_000_000_000denom1"), + "denom2", + []types.VestingSchedule{}, + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 2, 0), + true, + ) + + auction, err := s.keeper.Auction.Get(s.ctx, startedAuction.GetId()) + s.Require().NoError(err) + + s.placeBidFixedPrice(auction.GetId(), s.addr(1), auction.GetStartPrice(), parseCoin("2_000_000denom1"), true) + s.placeBidFixedPrice(auction.GetId(), s.addr(1), auction.GetStartPrice(), parseCoin("2_000_000denom1"), true) + s.placeBidFixedPrice(auction.GetId(), s.addr(1), auction.GetStartPrice(), parseCoin("2_000_000denom2"), true) + s.placeBidFixedPrice(auction.GetId(), s.addr(2), auction.GetStartPrice(), parseCoin("1_000_000denom1"), true) + s.placeBidFixedPrice(auction.GetId(), s.addr(2), auction.GetStartPrice(), parseCoin("1_000_000denom2"), true) + + // Make sure allocate amount is equal to the total bid amount made by the same bidder + mInfo, err := s.keeper.CalculateFixedPriceAllocation(s.ctx, auction) + s.Require().NoError(err) + + s.Require().Equal(mInfo.AllocationMap[s.addr(1).String()], parseCoin("8_000_000denom2").Amount) + s.Require().Equal(mInfo.AllocationMap[s.addr(2).String()], parseCoin("3_000_000denom2").Amount) +} + +func (s *KeeperTestSuite) TestFixedPriceAuction_AllocateSellingCoin() { + auction := s.createFixedPriceAuction( + s.addr(0), + parseDec("0.5"), + parseCoin("1000_000_000denom1"), + "denom2", + []types.VestingSchedule{}, + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 2, 0), + true, + ) + + _, err := s.keeper.Auction.Get(s.ctx, auction.GetId()) + s.Require().NoError(err) + + // Place bids + s.placeBidFixedPrice(auction.Id, s.addr(1), parseDec("0.5"), parseCoin("100_000_000denom2"), true) + s.placeBidFixedPrice(auction.Id, s.addr(2), parseDec("0.5"), parseCoin("100_000_000denom1"), true) + s.placeBidFixedPrice(auction.Id, s.addr(3), parseDec("0.5"), parseCoin("200_000_000denom1"), true) + + // Calculate allocation + mInfo, err := s.keeper.CalculateFixedPriceAllocation(s.ctx, auction) + s.Require().NoError(err) + + // Distribute selling coin + err = s.keeper.AllocateSellingCoin(s.ctx, auction, mInfo) + s.Require().NoError(err) + + err = s.keeper.RefundRemainingSellingCoin(s.ctx, auction) + s.Require().NoError(err) + + // The selling reserve account balance must be zero + s.Require().True(s.getBalance(auction.GetSellingReserveAddress(), auction.SellingCoin.Denom).IsZero()) + + // The auctioneer must have sellingCoin.Amount - TotalMatchedAmount + s.Require().Equal(s.getBalance(s.addr(0), auction.GetSellingCoin().Denom), parseCoin("500_000_000denom1")) + s.Require().Equal(s.getBalance(auction.GetPayingReserveAddress(), auction.GetPayingCoinDenom()), parseCoin("250_000_000denom2")) + + // The bidders must have the matched selling coin + s.Require().Equal(s.getBalance(s.addr(1), auction.GetSellingCoin().Denom), parseCoin("200_000_000denom1")) + s.Require().Equal(s.getBalance(s.addr(2), auction.GetSellingCoin().Denom), parseCoin("100_000_000denom1")) + s.Require().Equal(s.getBalance(s.addr(3), auction.GetSellingCoin().Denom), parseCoin("200_000_000denom1")) +} + +func (s *KeeperTestSuite) TestFixedPriceAuction_ReleaseVestingPayingCoin() { + auction := s.createFixedPriceAuction( + s.addr(0), + parseDec("1"), + parseCoin("1000_000_000_000denom1"), + "denom2", + []types.VestingSchedule{ + { + ReleaseTime: time.Now().AddDate(0, 6, 0), + Weight: math.LegacyMustNewDecFromStr("0.25"), + }, + { + ReleaseTime: time.Now().AddDate(0, 9, 0), + Weight: math.LegacyMustNewDecFromStr("0.25"), + }, + { + ReleaseTime: time.Now().AddDate(1, 0, 0), + Weight: math.LegacyMustNewDecFromStr("0.25"), + }, + { + ReleaseTime: time.Now().AddDate(1, 3, 0), + Weight: math.LegacyMustNewDecFromStr("0.25"), + }, + }, + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 2, 0), + true, + ) + s.Require().Equal(types.AuctionStatusStarted, auction.GetStatus()) + + // Place bids + s.placeBidFixedPrice(auction.GetId(), s.addr(1), parseDec("1"), parseCoin("100_000_000denom2"), true) + s.placeBidFixedPrice(auction.GetId(), s.addr(1), parseDec("1"), parseCoin("200_000_000denom2"), true) + s.placeBidFixedPrice(auction.GetId(), s.addr(1), parseDec("1"), parseCoin("200_000_000denom2"), true) + + // Calculate allocation + mInfo, err := s.keeper.CalculateFixedPriceAllocation(s.ctx, auction) + s.Require().NoError(err) + + // Distribute selling coin + err = s.keeper.AllocateSellingCoin(s.ctx, auction, mInfo) + s.Require().NoError(err) + + // Apply vesting schedules + err = s.keeper.ApplyVestingSchedules(s.ctx, auction) + s.Require().NoError(err) + + // All of the vesting queues must not be released yet + vqs, err := s.keeper.GetVestingQueuesByAuctionId(s.ctx, auction.GetId()) + s.Require().NoError(err) + + s.Require().Equal(4, len(vqs)) + for _, vq := range vqs { + s.Require().False(vq.Released) + } + + // Change the block time to release two vesting schedules + s.ctx = s.ctx.WithBlockTime(vqs[0].GetReleaseTime().AddDate(0, 4, 1)) + err = s.keeper.BeginBlocker(s.ctx) + s.Require().NoError(err) + + // Distribute paying coin + err = s.keeper.ReleaseVestingPayingCoin(s.ctx, auction) + s.Require().NoError(err) + + // First two vesting queues must be released + vqsa, err := s.keeper.GetVestingQueuesByAuctionId(s.ctx, auction.GetId()) + s.Require().NoError(err) + + for i, vq := range vqsa { + if i == 0 || i == 1 { + s.Require().True(vq.Released) + } else { + s.Require().False(vq.Released) + } + } + + // Change the block time + s.ctx = s.ctx.WithBlockTime(vqs[3].GetReleaseTime().AddDate(0, 0, 1)) + err = s.keeper.BeginBlocker(s.ctx) + s.Require().NoError(err) + s.Require().NoError(s.keeper.ReleaseVestingPayingCoin(s.ctx, auction)) + + // All of the vesting queues must be released + vqByAuction, err := s.keeper.GetVestingQueuesByAuctionId(s.ctx, auction.GetId()) + s.Require().NoError(err) + for _, vq := range vqByAuction { + s.Require().True(vq.Released) + } + + finishedAuction, err := s.keeper.Auction.Get(s.ctx, auction.GetId()) + s.Require().NoError(err) + s.Require().Equal(types.AuctionStatusFinished, finishedAuction.GetStatus()) +} + +func (s *KeeperTestSuite) TestFixedPriceAuction_CancelAuction() { + auction := s.createFixedPriceAuction( + s.addr(0), + parseDec("1"), + parseCoin("500_000_000_000denom1"), + "denom2", + []types.VestingSchedule{}, + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 1, 0), + true, + ) + s.Require().Equal(types.AuctionStatusStarted, auction.GetStatus()) + + // Not found auction + err := s.keeper.CancelAuction(s.ctx, &types.MsgCancelAuction{ + Auctioneer: auction.Auctioneer, + AuctionId: 10, + }) + s.Require().Error(err, errors.ErrNotFound) + + // Unauthorized + err = s.keeper.CancelAuction(s.ctx, &types.MsgCancelAuction{ + Auctioneer: s.addr(10).String(), + AuctionId: auction.Id, + }) + s.Require().Error(err, errors.ErrUnauthorized) + + // Invalid auction status + err = s.keeper.CancelAuction(s.ctx, &types.MsgCancelAuction{ + Auctioneer: auction.Auctioneer, + AuctionId: auction.Id, + }) + s.Require().Error(err, types.ErrInvalidAuctionStatus) + + // Forcefully update auction status + err = auction.SetStatus(types.AuctionStatusStandBy) + s.Require().NoError(err) + err = s.keeper.Auction.Set(s.ctx, auction.GetId(), auction) + s.Require().NoError(err) + + // Cancel the auction + err = s.keeper.CancelAuction(s.ctx, &types.MsgCancelAuction{ + Auctioneer: auction.Auctioneer, + AuctionId: auction.Id, + }) + s.Require().NoError(err) + + // Verify the status + a, err := s.keeper.Auction.Get(s.ctx, auction.GetId()) + s.Require().NoError(err) + s.Require().Equal(types.AuctionStatusCancelled, a.GetStatus()) + + // The selling reserve balance must be zero + sellingReserveAddr := a.GetSellingReserveAddress() + sellingCoinDenom := a.GetSellingCoin().Denom + s.Require().True(s.getBalance(sellingReserveAddr, sellingCoinDenom).IsZero()) +} + +func (s *KeeperTestSuite) TestBatchAuction_AuctionStatus() { + standByAuction := s.createBatchAuction( + s.addr(0), + parseDec("1"), + parseDec("0.1"), + parseCoin("5000_000_000denom1"), + "denom2", + []types.VestingSchedule{}, + 1, + math.LegacyMustNewDecFromStr("0.2"), + time.Now().AddDate(0, 6, 0), + time.Now().AddDate(0, 6, 0).AddDate(0, 1, 0), + true, + ) + + auction, err := s.keeper.Auction.Get(s.ctx, standByAuction.GetId()) + s.Require().NoError(err) + s.Require().Equal(types.AuctionStatusStandBy, auction.GetStatus()) + + feePool, err := s.app.DistrKeeper.FeePool.Get(s.ctx) + s.Require().NoError(err) + + params, err := s.keeper.Params.Get(s.ctx) + s.Require().NoError(err) + auctionCreationFee := params.AuctionCreationFee + s.Require().True(feePool.CommunityPool.Equal(sdk.NewDecCoinsFromCoins(auctionCreationFee...))) + + startedAuction := s.createBatchAuction( + s.addr(1), + parseDec("0.5"), + parseDec("0.1"), + parseCoin("5000_000_000denom3"), + "denom4", + []types.VestingSchedule{}, + 1, + math.LegacyMustNewDecFromStr("0.2"), + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 2, 0), + true, + ) + + auction, err = s.keeper.Auction.Get(s.ctx, startedAuction.GetId()) + s.Require().NoError(err) + s.Require().Equal(types.AuctionStatusStarted, auction.GetStatus()) +} + +func (s *KeeperTestSuite) TestBatchAuction_MaxNumVestingSchedules() { + batchAuction := types.NewMsgCreateBatchAuction( + s.addr(0).String(), + parseDec("1"), + parseDec("0.1"), + parseCoin("5000_000_000denom1"), + "denom2", + []types.VestingSchedule{}, + 1, + math.LegacyMustNewDecFromStr("0.2"), + time.Now().AddDate(0, 6, 0), + time.Now().AddDate(0, 6, 0).AddDate(0, 1, 0), + ) + + params, err := s.keeper.Params.Get(s.ctx) + s.Require().NoError(err) + + s.fundAddr(s.addr(0), params.AuctionCreationFee.Add(batchAuction.SellingCoin)) + + // Invalid max extended round + batchAuction.MaxExtendedRound = types.MaxExtendedRound + 1 + + _, err = s.keeper.CreateBatchAuction(s.ctx, batchAuction) + s.Require().EqualError(err, sdkerrors.Wrap(errors.ErrInvalidRequest, "exceed maximum extended round").Error()) + + batchAuction.MaxExtendedRound = 1 + + // Invalid number of vesting schedules + numSchedules := types.MaxNumVestingSchedules + 1 + schedules := make([]types.VestingSchedule, numSchedules) + totalWeight := math.LegacyZeroDec() + for i := range schedules { + var schedule types.VestingSchedule + if i == numSchedules-1 { + schedule.Weight = math.LegacyOneDec().Sub(totalWeight) + } else { + schedule.Weight = math.LegacyOneDec().Quo(math.LegacyNewDec(int64(numSchedules))) + } + schedule.ReleaseTime = time.Now().AddDate(0, 0, i) + + totalWeight = totalWeight.Add(schedule.Weight) + schedules[i] = schedule + } + batchAuction.VestingSchedules = schedules + + _, err = s.keeper.CreateBatchAuction(s.ctx, batchAuction) + s.Require().EqualError(err, sdkerrors.Wrap(errors.ErrInvalidRequest, "exceed maximum number of vesting schedules").Error()) +} + +func (s *KeeperTestSuite) TestFixedPriceAuction_MaxNumVestingSchedules() { + fixedPriceAuction := types.NewMsgCreateFixedPriceAuction( + s.addr(0).String(), + parseDec("0.5"), + parseCoin("500_000_000_000denom1"), + "denom2", + []types.VestingSchedule{}, + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 2, 0), + ) + + params, err := s.keeper.Params.Get(s.ctx) + s.Require().NoError(err) + s.fundAddr(s.addr(0), params.AuctionCreationFee.Add(fixedPriceAuction.SellingCoin)) + + // Invalid number of vesting schedules + numSchedules := types.MaxNumVestingSchedules + 1 + schedules := make([]types.VestingSchedule, numSchedules) + totalWeight := math.LegacyZeroDec() + for i := range schedules { + var schedule types.VestingSchedule + if i == numSchedules-1 { + schedule.Weight = math.LegacyOneDec().Sub(totalWeight) + } else { + schedule.Weight = math.LegacyOneDec().Quo(math.LegacyNewDec(int64(numSchedules))) + } + schedule.ReleaseTime = time.Now().AddDate(0, 0, i) + + totalWeight = totalWeight.Add(schedule.Weight) + schedules[i] = schedule + } + fixedPriceAuction.VestingSchedules = schedules + + _, err = s.keeper.CreateFixedPriceAuction(s.ctx, fixedPriceAuction) + s.Require().EqualError(err, sdkerrors.Wrap(errors.ErrInvalidRequest, "exceed maximum number of vesting schedules").Error()) +} + +func (s *KeeperTestSuite) TestInvalidEndTime() { + params, err := s.keeper.Params.Get(s.ctx) + s.Require().NoError(err) + + fixedPriceAuction := types.NewMsgCreateFixedPriceAuction( + s.addr(0).String(), + parseDec("0.5"), + parseCoin("500_000_000_000denom1"), + "denom2", + []types.VestingSchedule{}, + types.MustParseRFC3339("2022-03-01T00:00:00Z"), + types.MustParseRFC3339("2022-01-01T00:00:00Z"), + ) + s.fundAddr(s.addr(0), params.AuctionCreationFee.Add(fixedPriceAuction.SellingCoin)) + + _, err = s.keeper.CreateFixedPriceAuction(s.ctx, fixedPriceAuction) + s.Require().EqualError(err, sdkerrors.Wrap(errors.ErrInvalidRequest, "end time must be set after the current time").Error()) + + batchAuction := types.NewMsgCreateBatchAuction( + s.addr(1).String(), + parseDec("1"), + parseDec("0.1"), + parseCoin("5000_000_000denom1"), + "denom2", + []types.VestingSchedule{}, + 1, + math.LegacyMustNewDecFromStr("0.2"), + types.MustParseRFC3339("2022-03-01T00:00:00Z"), + types.MustParseRFC3339("2022-01-01T00:00:00Z"), + ) + s.fundAddr(s.addr(1), params.AuctionCreationFee.Add(batchAuction.SellingCoin)) + + _, err = s.keeper.CreateBatchAuction(s.ctx, batchAuction) + s.Require().EqualError(err, sdkerrors.Wrap(errors.ErrInvalidRequest, "end time must be set after the current time").Error()) +} + +func (s *KeeperTestSuite) TestAddAllowedBidders() { + startedAuction := s.createFixedPriceAuction( + s.addr(0), + parseDec("0.5"), + parseCoin("500_000_000_000denom1"), + "denom2", + []types.VestingSchedule{}, + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 2, 0), + true, + ) + + auction, err := s.keeper.Auction.Get(s.ctx, startedAuction.GetId()) + s.Require().NoError(err) + s.Require().Equal(types.AuctionStatusStarted, auction.GetStatus()) + + bidderByAuction, err := s.keeper.GetAllowedBiddersByAuction(s.ctx, startedAuction.Id) + s.Require().Len(bidderByAuction, 0) + + // Invalid auction id + err = s.keeper.AddAllowedBidders(s.ctx, 10, []types.AllowedBidder{ + {AuctionId: 1, Bidder: s.addr(1).String(), MaxBidAmount: math.NewInt(100_000_000)}, + }) + s.Require().Error(err) + + for _, tc := range []struct { + name string + bidders []types.AllowedBidder + expectedErr error + }{ + { + "single bidder", + []types.AllowedBidder{ + {AuctionId: 1, Bidder: s.addr(1).String(), MaxBidAmount: math.NewInt(100_000_000)}, + }, + nil, + }, + { + "multiple bidders", + []types.AllowedBidder{ + {AuctionId: 1, Bidder: s.addr(1).String(), MaxBidAmount: math.NewInt(100_000_000)}, + {AuctionId: 1, Bidder: s.addr(2).String(), MaxBidAmount: math.NewInt(500_000_000)}, + {AuctionId: 1, Bidder: s.addr(3).String(), MaxBidAmount: math.NewInt(800_000_000)}, + }, + nil, + }, + { + "empty bidders", + []types.AllowedBidder{}, + types.ErrEmptyAllowedBidders, + }, + { + "zero maximum bid amount", + []types.AllowedBidder{ + {AuctionId: 1, Bidder: s.addr(1).String(), MaxBidAmount: math.NewInt(0)}, + }, + types.ErrInvalidMaxBidAmount, + }, + { + "negative maximum bid amount", + []types.AllowedBidder{ + {AuctionId: 1, Bidder: s.addr(1).String(), MaxBidAmount: math.NewInt(-1)}, + }, + types.ErrInvalidMaxBidAmount, + }, + { + "exceed the total selling amount", + []types.AllowedBidder{ + {AuctionId: 1, Bidder: s.addr(1).String(), MaxBidAmount: math.NewInt(500_000_000_001)}, + }, + types.ErrInsufficientRemainingAmount, + }, + } { + s.Run(tc.name, func() { + err := s.keeper.AddAllowedBidders(s.ctx, auction.GetId(), tc.bidders) + if tc.expectedErr != nil { + s.Require().ErrorIs(err, tc.expectedErr) + return + } + s.Require().NoError(err) + }) + } +} + +func (s *KeeperTestSuite) TestAddAllowedBidders_Length() { + startedAuction := s.createFixedPriceAuction( + s.addr(0), + parseDec("0.5"), + parseCoin("500_000_000_000denom1"), + "denom2", + []types.VestingSchedule{}, + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 2, 0), + true, + ) + + auction, err := s.keeper.Auction.Get(s.ctx, startedAuction.GetId()) + s.Require().NoError(err) + bidderByAuction, err := s.keeper.GetAllowedBiddersByAuction(s.ctx, auction.GetId()) + s.Require().NoError(err) + s.Require().Len(bidderByAuction, 0) + + // Add some bidders + s.Require().NoError(s.keeper.AddAllowedBidders(s.ctx, auction.GetId(), []types.AllowedBidder{ + {AuctionId: 1, Bidder: s.addr(1).String(), MaxBidAmount: math.NewInt(100_000_000)}, + {AuctionId: 1, Bidder: s.addr(2).String(), MaxBidAmount: math.NewInt(500_000_000)}, + })) + + auction, err = s.keeper.Auction.Get(s.ctx, auction.GetId()) + s.Require().NoError(err) + + bidderByAuction, err = s.keeper.GetAllowedBiddersByAuction(s.ctx, auction.GetId()) + s.Require().NoError(err) + s.Require().Len(bidderByAuction, 2) + + // Add more bidders + s.Require().NoError(s.keeper.AddAllowedBidders(s.ctx, auction.GetId(), []types.AllowedBidder{ + {AuctionId: 1, Bidder: s.addr(3).String(), MaxBidAmount: math.NewInt(100_000_000)}, + {AuctionId: 1, Bidder: s.addr(4).String(), MaxBidAmount: math.NewInt(100_000_000)}, + {AuctionId: 1, Bidder: s.addr(5).String(), MaxBidAmount: math.NewInt(100_000_000)}, + })) + + auction, err = s.keeper.Auction.Get(s.ctx, auction.GetId()) + s.Require().NoError(err) + bidderByAuction, err = s.keeper.GetAllowedBiddersByAuction(s.ctx, auction.GetId()) + s.Require().NoError(err) + s.Require().Len(bidderByAuction, 5) +} + +func (s *KeeperTestSuite) TestUpdateAllowedBidder() { + startedAuction := s.createFixedPriceAuction( + s.addr(0), + parseDec("0.5"), + parseCoin("500_000_000_000denom1"), + "denom2", + []types.VestingSchedule{}, + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 2, 0), + true, + ) + + auction, err := s.keeper.Auction.Get(s.ctx, startedAuction.GetId()) + s.Require().NoError(err) + bidderByAuction, err := s.keeper.GetAllowedBiddersByAuction(s.ctx, startedAuction.GetId()) + s.Require().NoError(err) + s.Require().Len(bidderByAuction, 0) + + // Invalid auction id + err = s.keeper.UpdateAllowedBidder(s.ctx, 10, s.addr(1), math.NewInt(100_000_000)) + s.Require().Error(err) + + // Add 5 bidders with different maximum bid amount + s.Require().NoError(s.keeper.AddAllowedBidders(s.ctx, auction.GetId(), []types.AllowedBidder{ + {AuctionId: 1, Bidder: s.addr(1).String(), MaxBidAmount: math.NewInt(100_000_000)}, + {AuctionId: 1, Bidder: s.addr(2).String(), MaxBidAmount: math.NewInt(200_000_000)}, + {AuctionId: 1, Bidder: s.addr(3).String(), MaxBidAmount: math.NewInt(300_000_000)}, + {AuctionId: 1, Bidder: s.addr(4).String(), MaxBidAmount: math.NewInt(400_000_000)}, + {AuctionId: 1, Bidder: s.addr(5).String(), MaxBidAmount: math.NewInt(500_000_000)}, + })) + bidderByAuction, err = s.keeper.GetAllowedBiddersByAuction(s.ctx, auction.GetId()) + s.Require().NoError(err) + s.Require().Len(bidderByAuction, 5) + + for _, tc := range []struct { + name string + bidder sdk.AccAddress + maxBidAmount math.Int + expectedErr error + }{ + { + "update bidder's maximum bid amount", + s.addr(1), + math.NewInt(555_000_000_000), + nil, + }, + { + "bidder not found", + s.addr(10), + math.NewInt(300_000_000), + sdkerrors.Wrapf(errors.ErrNotFound, "bidder %s is not found", s.addr(10).String()), + }, + { + "zero maximum bid amount value", + s.addr(1), + math.NewInt(0), + types.ErrInvalidMaxBidAmount, + }, + { + "negative maximum bid amount value", + s.addr(1), + math.NewInt(-1), + types.ErrInvalidMaxBidAmount, + }, + } { + s.Run(tc.name, func() { + err := s.keeper.UpdateAllowedBidder(s.ctx, auction.GetId(), tc.bidder, tc.maxBidAmount) + if tc.expectedErr != nil { + s.Require().ErrorIs(err, tc.expectedErr) + return + } + s.Require().NoError(err) + + auction, err = s.keeper.Auction.Get(s.ctx, auction.GetId()) + s.Require().NoError(err) + + allowedBidders, err := s.keeper.GetAllowedBiddersByAuction(s.ctx, startedAuction.Id) + s.Require().NoError(err) + s.Require().Len(allowedBidders, 5) + + // Check if it is successfully updated + allowedBidder, err := s.keeper.AllowedBidder.Get(s.ctx, collections.Join(auction.GetId(), tc.bidder)) + s.Require().NoError(err) + s.Require().Equal(tc.maxBidAmount, allowedBidder.MaxBidAmount) + }) + } +} + +func (s *KeeperTestSuite) TestRefundPayingCoin() { + auction := s.createBatchAuction( + s.addr(0), + parseDec("1.0"), + parseDec("0.5"), + parseCoin("100_000_000denom1"), + "denom2", + []types.VestingSchedule{}, + 1, + math.LegacyMustNewDecFromStr("0.2"), + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 2, 0), + true, + ) + s.Require().Equal(types.AuctionStatusStarted, auction.GetStatus()) + + s.placeBidBatchMany(auction.Id, s.addr(1), parseDec("1"), parseCoin("50_000_000denom1"), math.NewInt(1_000_000_000), true) + refundBid := s.placeBidBatchMany(auction.Id, s.addr(2), parseDec("0.9"), parseCoin("60_000_000denom1"), math.NewInt(1_000_000_000), true) + + a, err := s.keeper.Auction.Get(s.ctx, auction.Id) + s.Require().NoError(err) + + mInfo, err := s.keeper.CalculateBatchAllocation(s.ctx, a) + s.Require().NoError(err) + + err = s.keeper.RefundPayingCoin(s.ctx, a, mInfo) + s.Require().NoError(err) + + expectedAmt := refundBid.ConvertToPayingAmount(auction.GetPayingCoinDenom()) + bidderBalance := s.getBalance(s.addr(2), auction.GetPayingCoinDenom()).Amount + s.Require().Equal(expectedAmt, bidderBalance) +} + +func (s *KeeperTestSuite) TestCloseFixedPriceAuction() { + auction := s.createFixedPriceAuction( + s.addr(0), + parseDec("1"), + parseCoin("1_000_000_000_000denom1"), + "denom2", + []types.VestingSchedule{ + {ReleaseTime: types.MustParseRFC3339("2023-01-01T00:00:00Z"), Weight: math.LegacyOneDec()}, + }, + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 2, 0), + true, + ) + s.Require().Equal(types.AuctionStatusStarted, auction.GetStatus()) + + s.placeBidFixedPrice(auction.Id, s.addr(1), parseDec("1"), parseCoin("250_000_000denom1"), true) + s.placeBidFixedPrice(auction.Id, s.addr(2), parseDec("1"), parseCoin("250_000_000denom1"), true) + s.placeBidFixedPrice(auction.Id, s.addr(3), parseDec("1"), parseCoin("250_000_000denom1"), true) + s.placeBidFixedPrice(auction.Id, s.addr(4), parseDec("1"), parseCoin("250_000_000denom1"), true) + + a, err := s.keeper.Auction.Get(s.ctx, auction.Id) + s.Require().NoError(err) + + err = s.keeper.CloseFixedPriceAuction(s.ctx, a) + s.Require().NoError(err) + + s.Require().Equal(parseCoin("999000000000denom1"), s.getBalance(s.addr(0), a.GetSellingCoin().Denom)) + s.Require().Equal(parseCoin("0denom2"), s.getBalance(s.addr(0), a.GetPayingCoinDenom())) + s.Require().Equal(parseCoin("250_000_000denom1"), s.getBalance(s.addr(1), a.GetSellingCoin().Denom)) + s.Require().Equal(parseCoin("250_000_000denom1"), s.getBalance(s.addr(2), a.GetSellingCoin().Denom)) + s.Require().Equal(parseCoin("250_000_000denom1"), s.getBalance(s.addr(3), a.GetSellingCoin().Denom)) + s.Require().Equal(parseCoin("250_000_000denom1"), s.getBalance(s.addr(4), a.GetSellingCoin().Denom)) + + vestingQueues, err := s.keeper.VestingQueues(s.ctx) + s.Require().NoError(err) + s.Require().Len(vestingQueues, len(a.GetVestingSchedules())) +} + +func (s *KeeperTestSuite) TestCloseBatchAuction() { + // Close a batch auction right away by setting MaxExtendedRound to 0 value + maxExtendedRound := uint32(0) + + auction := s.createBatchAuction( + s.addr(0), + parseDec("0.5"), + parseDec("0.1"), + parseCoin("10_000_000_000denom1"), + "denom2", + []types.VestingSchedule{}, + maxExtendedRound, + math.LegacyMustNewDecFromStr("0.2"), + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 2, 0), + true, + ) + s.Require().Equal(types.AuctionStatusStarted, auction.GetStatus()) + + s.placeBidBatchMany(auction.Id, s.addr(1), parseDec("0.9"), parseCoin("200_000_000denom1"), math.NewInt(1_000_000_000), true) + s.placeBidBatchMany(auction.Id, s.addr(2), parseDec("0.8"), parseCoin("200_000_000denom1"), math.NewInt(1_000_000_000), true) + s.placeBidBatchMany(auction.Id, s.addr(3), parseDec("0.7"), parseCoin("100_000_000denom1"), math.NewInt(1_000_000_000), true) + + a, err := s.keeper.Auction.Get(s.ctx, auction.Id) + s.Require().NoError(err) + + err = s.keeper.CloseBatchAuction(s.ctx, a) + s.Require().NoError(err) + + s.Require().Equal(parseCoin("350000000denom2"), s.getBalance(s.addr(0), a.GetPayingCoinDenom())) + s.Require().Equal(parseCoin("9500000000denom1"), s.getBalance(s.addr(0), a.GetSellingCoin().Denom)) + s.Require().Equal(parseCoin("200_000_000denom1"), s.getBalance(s.addr(1), a.GetSellingCoin().Denom)) + s.Require().Equal(parseCoin("200_000_000denom1"), s.getBalance(s.addr(2), a.GetSellingCoin().Denom)) + s.Require().Equal(parseCoin("100_000_000denom1"), s.getBalance(s.addr(3), a.GetSellingCoin().Denom)) + + vestingQueues, err := s.keeper.VestingQueues(s.ctx) + s.Require().NoError(err) + s.Require().Len(vestingQueues, len(a.GetVestingSchedules())) +} + +func (s *KeeperTestSuite) TestCloseBatchAuction_ExtendRound() { + // Extend round for a batch auction by setting MaxExtendedRound to non zero value + maxExtendedRound := uint32(5) + extendedRoundRate := parseDec("0.2") + + auction := s.createBatchAuction( + s.addr(0), + parseDec("0.5"), + parseDec("0.1"), + parseCoin("10_000_000_000denom1"), + "denom2", + []types.VestingSchedule{}, + maxExtendedRound, + extendedRoundRate, + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 2, 0), + true, + ) + s.Require().Equal(types.AuctionStatusStarted, auction.GetStatus()) + + s.placeBidBatchMany(auction.Id, s.addr(1), parseDec("0.9"), parseCoin("200_000_000denom1"), math.NewInt(1_000_000_000), true) + s.placeBidBatchMany(auction.Id, s.addr(2), parseDec("0.8"), parseCoin("200_000_000denom1"), math.NewInt(1_000_000_000), true) + s.placeBidBatchMany(auction.Id, s.addr(3), parseDec("0.7"), parseCoin("100_000_000denom1"), math.NewInt(1_000_000_000), true) + + a, err := s.keeper.Auction.Get(s.ctx, auction.Id) + s.Require().NoError(err) + s.Require().Len(a.GetEndTimes(), 1) + + s.keeper.CloseBatchAuction(s.ctx, auction) + + // Extended round must be triggered + a, err = s.keeper.Auction.Get(s.ctx, auction.Id) + s.Require().NoError(err) + s.Require().Len(a.GetEndTimes(), 2) + + // Auction sniping occurs + s.placeBidBatchMany(auction.Id, s.addr(4), parseDec("0.85"), parseCoin("9_800_000_000denom1"), math.NewInt(100_000_000_000), true) + + s.keeper.CloseBatchAuction(s.ctx, a) + + a, err = s.keeper.Auction.Get(s.ctx, auction.Id) + s.Require().NoError(err) + s.Require().Len(a.GetEndTimes(), 3) +} + +func (s *KeeperTestSuite) TestCloseBatchAuction_Valid() { + // Extend round for a batch auction by setting MaxExtendedRound to non zero value + maxExtendedRound := uint32(5) + extendedRoundRate := parseDec("0.2") + + auction := s.createBatchAuction( + s.addr(0), + parseDec("0.5"), + parseDec("0.1"), + parseCoin("10_000_000_000denom1"), + "denom2", + []types.VestingSchedule{}, + maxExtendedRound, + extendedRoundRate, + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 2, 0), + true, + ) + s.Require().Equal(types.AuctionStatusStarted, auction.GetStatus()) + + s.placeBidBatchMany(auction.Id, s.addr(1), parseDec("0.9"), parseCoin("200_000_000denom1"), math.NewInt(1_000_000_000), true) + s.placeBidBatchMany(auction.Id, s.addr(2), parseDec("0.8"), parseCoin("200_000_000denom1"), math.NewInt(1_000_000_000), true) + s.placeBidBatchMany(auction.Id, s.addr(3), parseDec("0.7"), parseCoin("100_000_000denom1"), math.NewInt(1_000_000_000), true) + + a, err := s.keeper.Auction.Get(s.ctx, auction.Id) + s.Require().NoError(err) + s.Require().Len(a.GetEndTimes(), 1) + + err = s.keeper.CloseBatchAuction(s.ctx, auction) + s.Require().NoError(err) + + // Extended round must be triggered + a, err = s.keeper.Auction.Get(s.ctx, auction.Id) + s.Require().NoError(err) + s.Require().Len(a.GetEndTimes(), 2) + + // Auction sniping occurs + s.placeBidBatchMany(auction.Id, s.addr(4), parseDec("0.85"), parseCoin("9_500_000_000denom1"), math.NewInt(100_000_000_000), true) + + err = s.keeper.CloseBatchAuction(s.ctx, a) + s.Require().NoError(err) + + a, err = s.keeper.Auction.Get(s.ctx, auction.Id) + s.Require().NoError(err) + s.Require().Len(a.GetEndTimes(), 2) +} diff --git a/x/fundraising/keeper/bid.go b/x/fundraising/keeper/bid.go new file mode 100644 index 0000000..a3cff97 --- /dev/null +++ b/x/fundraising/keeper/bid.go @@ -0,0 +1,374 @@ +package keeper + +import ( + "context" + "errors" + "strconv" + + "cosmossdk.io/collections" + sdkerrors "cosmossdk.io/errors" + "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" + errcode "github.com/cosmos/cosmos-sdk/types/errors" + + "github.com/ignite/modules/x/fundraising/types" +) + +// GetNextBidIdWithUpdate increments bid id by one and set it. +func (k Keeper) GetNextBidIdWithUpdate(ctx context.Context, auctionId uint64) (uint64, error) { + seq, err := k.BidSeq.Get(ctx, auctionId) + if errors.Is(err, collections.ErrNotFound) { + seq = 0 + } else if err != nil { + return 0, err + } + seq++ + return seq, k.BidSeq.Set(ctx, auctionId, seq) +} + +// GetBidsByAuctionId returns all bids associated with the auction id that are registered in the store. +func (k Keeper) GetBidsByAuctionId(ctx context.Context, auctionId uint64) ([]types.Bid, error) { + bids := make([]types.Bid, 0) + rng := collections.NewPrefixedPairRange[uint64, uint64](auctionId) + err := k.Bid.Walk(ctx, rng, func(key collections.Pair[uint64, uint64], bid types.Bid) (bool, error) { + bids = append(bids, bid) + return false, nil + }) + return bids, err +} + +// GetBidsByBidder returns all bids associated with the bidder that are registered in the store. +func (k Keeper) GetBidsByBidder(ctx context.Context, bidderAddr sdk.AccAddress) ([]types.Bid, error) { + bids := make([]types.Bid, 0) + // TODO find a way to store by bidder id to avoid read all store + // rng := collections.NewPrefixedPairRange[uint64, uint64](bidderAddr) + err := k.Bid.Walk(ctx, nil, func(key collections.Pair[uint64, uint64], bid types.Bid) (bool, error) { + if bid.Bidder == bidderAddr.String() { + bids = append(bids, bid) + } + return false, nil + }) + return bids, err +} + +// Bids returns all Bid. +func (k Keeper) Bids(ctx context.Context) ([]types.Bid, error) { + bids := make([]types.Bid, 0) + err := k.IterateBids(ctx, func(_ collections.Pair[uint64, uint64], bid types.Bid) (bool, error) { + bids = append(bids, bid) + return false, nil + }) + return bids, err +} + +// IterateBids iterates over all the Bids and performs a callback function. +func (k Keeper) IterateBids(ctx context.Context, cb func(collections.Pair[uint64, uint64], types.Bid) (bool, error)) error { + err := k.Bid.Walk(ctx, nil, cb) + if err != nil { + return err + } + return nil +} + +// PlaceBid places a bid for the selling coin of the auction. +func (k Keeper) PlaceBid(ctx context.Context, msg *types.MsgPlaceBid) (types.Bid, error) { + auction, err := k.Auction.Get(ctx, msg.AuctionId) + if err != nil { + return types.Bid{}, err + } + + if auction.GetStatus() != types.AuctionStatusStarted { + return types.Bid{}, types.ErrInvalidAuctionStatus + } + + if auction.GetType() == types.AuctionTypeBatch { + if msg.Price.LT(auction.(*types.BatchAuction).MinBidPrice) { + return types.Bid{}, types.ErrInsufficientMinBidPrice + } + } + + bidder, err := sdk.AccAddressFromBech32(msg.GetBidder()) + if err != nil { + return types.Bid{}, err + } + + _, err = k.AllowedBidder.Get(ctx, collections.Join(auction.GetId(), bidder)) + if err != nil { + return types.Bid{}, sdkerrors.Wrap(types.ErrNotAllowedBidder, err.Error()) + } + + if err := k.PayPlaceBidFee(ctx, bidder); err != nil { + return types.Bid{}, sdkerrors.Wrap(err, "failed to pay place bid fee") + } + + bidID, err := k.GetNextBidIdWithUpdate(ctx, auction.GetId()) + if err != nil { + return types.Bid{}, sdkerrors.Wrap(err, "failed to get next bid id") + } + bid := types.Bid{ + AuctionId: msg.AuctionId, + Id: bidID, + Bidder: msg.Bidder, + Type: msg.BidType, + Price: msg.Price, + Coin: msg.Coin, + IsMatched: false, + } + + payingCoinDenom := auction.GetPayingCoinDenom() + + // Place a bid depending on the bid type + switch bid.Type { + case types.BidTypeFixedPrice: + if err := k.ValidateFixedPriceBid(ctx, auction, bid); err != nil { + return types.Bid{}, err + } + + fa := auction.(*types.FixedPriceAuction) + + // Reserve bid amount + bidPayingAmt := bid.ConvertToPayingAmount(payingCoinDenom) + bidPayingCoin := sdk.NewCoin(payingCoinDenom, bidPayingAmt) + if err := k.ReservePayingCoin(ctx, msg.AuctionId, bidder, bidPayingCoin); err != nil { + return types.Bid{}, sdkerrors.Wrap(err, "failed to reserve paying coin") + } + + // Subtract bid amount from the remaining + bidSellingAmt := bid.ConvertToSellingAmount(payingCoinDenom) + bidSellingCoin := sdk.NewCoin(auction.GetSellingCoin().Denom, bidSellingAmt) + fa.RemainingSellingCoin = fa.RemainingSellingCoin.Sub(bidSellingCoin) + + if err := k.Auction.Set(ctx, fa.GetId(), fa); err != nil { + return types.Bid{}, err + } + + bid.SetMatched(true) + + case types.BidTypeBatchWorth: + if err := k.ValidateBatchWorthBid(ctx, auction, bid); err != nil { + return types.Bid{}, err + } + + if err := k.ReservePayingCoin(ctx, msg.AuctionId, bidder, msg.Coin); err != nil { + return types.Bid{}, sdkerrors.Wrap(err, "failed to reserve paying coin") + } + + case types.BidTypeBatchMany: + if err := k.ValidateBatchManyBid(ctx, auction, bid); err != nil { + return types.Bid{}, err + } + + reserveAmt := bid.ConvertToPayingAmount(payingCoinDenom) + reserveCoin := sdk.NewCoin(payingCoinDenom, reserveAmt) + + if err := k.ReservePayingCoin(ctx, msg.AuctionId, bidder, reserveCoin); err != nil { + return types.Bid{}, sdkerrors.Wrap(err, "failed to reserve paying coin") + } + } + + // Call before bid placed hook + if err := k.BeforeBidPlaced(ctx, bid.AuctionId, bid.Id, bid.Bidder, bid.Type, bid.Price, bid.Coin); err != nil { + return types.Bid{}, err + } + + if err := k.Bid.Set(ctx, collections.Join(bid.AuctionId, bid.Id), bid); err != nil { + return types.Bid{}, err + } + + sdkCtx := sdk.UnwrapSDKContext(ctx) + sdkCtx.EventManager().EmitEvents(sdk.Events{ + sdk.NewEvent( + types.EventTypePlaceBid, + sdk.NewAttribute(types.AttributeKeyAuctionId, strconv.FormatUint(auction.GetId(), 10)), + sdk.NewAttribute(types.AttributeKeyBidderAddress, msg.GetBidder()), + sdk.NewAttribute(types.AttributeKeyBidPrice, msg.Price.String()), + sdk.NewAttribute(types.AttributeKeyBidCoin, msg.Coin.String()), + ), + }) + + return bid, nil +} + +// ValidateFixedPriceBid validates a fixed price bid type. +func (k Keeper) ValidateFixedPriceBid(ctx context.Context, auction types.AuctionI, bid types.Bid) error { + if auction.GetType() != types.AuctionTypeFixedPrice { + return types.ErrIncorrectAuctionType + } + + if bid.Coin.Denom != auction.GetPayingCoinDenom() && + bid.Coin.Denom != auction.GetSellingCoin().Denom { + return types.ErrIncorrectCoinDenom + } + + if !bid.Price.Equal(auction.GetStartPrice()) { + return sdkerrors.Wrap(types.ErrInvalidStartPrice, "start price must be equal to the start price of the auction") + } + + // For remaining coin validation, convert bid amount in selling coin denom + bidAmt := bid.ConvertToSellingAmount(auction.GetPayingCoinDenom()) + bidCoin := sdk.NewCoin(auction.GetSellingCoin().Denom, bidAmt) + remainingCoin := auction.(*types.FixedPriceAuction).RemainingSellingCoin + + if remainingCoin.IsLT(bidCoin) { + return sdkerrors.Wrapf(types.ErrInsufficientRemainingAmount, "remaining selling coin amount %s", remainingCoin) + } + + // Get the total bid amount by the bidder + bids, err := k.GetBidsByBidder(ctx, bid.GetBidder()) + if err != nil { + return err + } + totalBidAmt := math.ZeroInt() + for _, bid := range bids { + if bid.AuctionId == auction.GetId() { + bidSellingAmt := bid.ConvertToSellingAmount(auction.GetPayingCoinDenom()) + totalBidAmt = totalBidAmt.Add(bidSellingAmt) + } + } + + allowedBidder, err := k.AllowedBidder.Get(ctx, collections.Join(bid.AuctionId, bid.GetBidder())) + if err != nil { + return sdkerrors.Wrap(err, "bidder is not found in allowed bidder list") + } + + totalBidAmt = totalBidAmt.Add(bidAmt) + + // The total bid amount can't be greater than the bidder's maximum bid amount + if totalBidAmt.GT(allowedBidder.MaxBidAmount) { + return types.ErrOverMaxBidAmountLimit + } + + return nil +} + +// ValidateBatchWorthBid validates a batch worth bid type. +func (k Keeper) ValidateBatchWorthBid(ctx context.Context, auction types.AuctionI, bid types.Bid) error { + if auction.GetType() != types.AuctionTypeBatch { + return types.ErrIncorrectAuctionType + } + + if bid.Coin.Denom != auction.GetPayingCoinDenom() { + return types.ErrIncorrectCoinDenom + } + + allowedBidder, err := k.AllowedBidder.Get(ctx, collections.Join(bid.AuctionId, bid.GetBidder())) + if err != nil { + return sdkerrors.Wrap(err, "bidder is not found in allowed bidder list") + } + + bidAmt := bid.ConvertToSellingAmount(auction.GetPayingCoinDenom()) + + // The total bid amount can't be greater than the bidder's maximum bid amount + if bidAmt.GT(allowedBidder.MaxBidAmount) { + return types.ErrOverMaxBidAmountLimit + } + + return nil +} + +// ValidateBatchManyBid validates a batch many bid type. +func (k Keeper) ValidateBatchManyBid(ctx context.Context, auction types.AuctionI, bid types.Bid) error { + if auction.GetType() != types.AuctionTypeBatch { + return types.ErrIncorrectAuctionType + } + + if bid.Coin.Denom != auction.GetSellingCoin().Denom { + return types.ErrIncorrectCoinDenom + } + + allowedBidder, err := k.AllowedBidder.Get(ctx, collections.Join(bid.AuctionId, bid.GetBidder())) + if err != nil { + return sdkerrors.Wrap(err, "bidder is not found in allowed bidder list") + } + + bidAmt := bid.ConvertToSellingAmount(auction.GetPayingCoinDenom()) + + // The total bid amount can't be greater than the bidder's maximum bid amount + if bidAmt.GT(allowedBidder.MaxBidAmount) { + return types.ErrOverMaxBidAmountLimit + } + + return nil +} + +// ModifyBid handles types.MsgModifyBid and stores the modified bid. +// A bidder must provide either greater bid price or coin amount. +// They are not permitted to modify with less bid price or coin amount. +func (k Keeper) ModifyBid(ctx context.Context, msg *types.MsgModifyBid) error { + auction, err := k.Auction.Get(ctx, msg.AuctionId) + if err != nil { + return err + } + + if auction.GetStatus() != types.AuctionStatusStarted { + return types.ErrInvalidAuctionStatus + } + + if auction.GetType() != types.AuctionTypeBatch { + return types.ErrIncorrectAuctionType + } + + bid, err := k.Bid.Get(ctx, collections.Join(msg.AuctionId, msg.BidId)) + if err != nil { + return err + } + + bidder, err := sdk.AccAddressFromBech32(msg.GetBidder()) + if err != nil { + return err + } + + if !bid.GetBidder().Equals(bidder) { + return sdkerrors.Wrap(errcode.ErrUnauthorized, "only the bid creator can modify the bid") + } + + if msg.Price.LT(auction.(*types.BatchAuction).MinBidPrice) { + return types.ErrInsufficientMinBidPrice + } + + if bid.Coin.Denom != msg.Coin.Denom { + return types.ErrIncorrectCoinDenom + } + + if msg.Price.LT(bid.Price) || msg.Coin.Amount.LT(bid.Coin.Amount) { + return sdkerrors.Wrap(errcode.ErrInvalidRequest, "bid price or coin amount cannot be lower") + } + + if msg.Price.Equal(bid.Price) && msg.Coin.Amount.Equal(bid.Coin.Amount) { + return sdkerrors.Wrap(errcode.ErrInvalidRequest, "bid price and coin amount must be changed") + } + + // Reserve bid amount difference + switch bid.Type { + case types.BidTypeBatchWorth: + diffReserveCoin := msg.Coin.Sub(bid.Coin) + if diffReserveCoin.IsPositive() { + if err := k.ReservePayingCoin(ctx, msg.AuctionId, bidder, diffReserveCoin); err != nil { + return sdkerrors.Wrap(err, "failed to reserve paying coin") + } + } + case types.BidTypeBatchMany: + prevReserveAmt := math.LegacyNewDecFromInt(bid.Coin.Amount).Mul(bid.Price).Ceil() + currReserveAmt := math.LegacyNewDecFromInt(msg.Coin.Amount).Mul(msg.Price).Ceil() + diffReserveAmt := currReserveAmt.Sub(prevReserveAmt).TruncateInt() + diffReserveCoin := sdk.NewCoin(auction.GetPayingCoinDenom(), diffReserveAmt) + if diffReserveCoin.IsPositive() { + if err := k.ReservePayingCoin(ctx, msg.AuctionId, bidder, diffReserveCoin); err != nil { + return sdkerrors.Wrap(err, "failed to reserve paying coin") + } + } + } + + bid.Price = msg.Price + bid.Coin = msg.Coin + + // Call the before mid modified hook + if err := k.BeforeBidModified(ctx, bid.AuctionId, bid.Id, bid.Bidder, bid.Type, bid.Price, bid.Coin); err != nil { + return err + } + + if err := k.Bid.Set(ctx, collections.Join(bid.AuctionId, bid.Id), bid); err != nil { + return err + } + return nil +} diff --git a/x/fundraising/keeper/bid_test.go b/x/fundraising/keeper/bid_test.go new file mode 100644 index 0000000..bb545da --- /dev/null +++ b/x/fundraising/keeper/bid_test.go @@ -0,0 +1,476 @@ +package keeper_test + +import ( + "time" + + "cosmossdk.io/collections" + "cosmossdk.io/math" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + _ "github.com/stretchr/testify/suite" + + "github.com/ignite/modules/x/fundraising/types" +) + +func (s *KeeperTestSuite) TestPlaceBid_Validation() { + _, err := s.keeper.PlaceBid(s.ctx, &types.MsgPlaceBid{ + AuctionId: 1, + Bidder: s.addr(2).String(), + BidType: types.BidTypeFixedPrice, + Price: parseDec("0.5"), + Coin: parseCoin("200_000_000denom2"), + }) + s.Require().ErrorIs(err, collections.ErrNotFound) + + auction := s.createFixedPriceAuction( + s.addr(0), + parseDec("1"), + parseCoin("1_000_000_000denom1"), + "denom2", + []types.VestingSchedule{}, + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 2, 0), + true, + ) + s.Require().Equal(types.AuctionStatusStarted, auction.GetStatus()) + + err = auction.SetStatus(types.AuctionStatusCancelled) + s.Require().NoError(err) + + err = s.keeper.Auction.Set(s.ctx, auction.GetId(), auction) + s.Require().NoError(err) + + _, err = s.keeper.PlaceBid(s.ctx, &types.MsgPlaceBid{ + AuctionId: auction.Id, + Bidder: s.addr(2).String(), + BidType: types.BidTypeFixedPrice, + Price: parseDec("0.5"), + Coin: parseCoin("200_000_000denom2"), + }) + s.Require().ErrorIs(err, types.ErrInvalidAuctionStatus) +} + +func (s *KeeperTestSuite) TestFixedPrice_InvalidStartPrice() { + auction := s.createFixedPriceAuction( + s.addr(0), + parseDec("1"), + parseCoin("1_000_000_000denom1"), + "denom2", + []types.VestingSchedule{}, + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 2, 0), + true, + ) + s.Require().Equal(types.AuctionStatusStarted, auction.GetStatus()) + + // Fund bidder + s.fundAddr(s.addr(2), parseCoins("200_000_000denom2")) + + // Set allowed bidder + err := s.addAllowedBidder(auction.Id, s.addr(2), bidSellingAmount(parseDec("1"), parseCoin("200_000_000denom2"))) + s.Require().NoError(err) + + _, err = s.keeper.PlaceBid(s.ctx, &types.MsgPlaceBid{ + AuctionId: auction.Id, + Bidder: s.addr(2).String(), + BidType: types.BidTypeFixedPrice, + Price: parseDec("0.5"), + Coin: parseCoin("200_000_000denom2"), + }) + s.Require().ErrorIs(err, types.ErrInvalidStartPrice) +} + +func (s *KeeperTestSuite) TestFixedPrice_InsufficientRemainingAmount() { + auction := s.createFixedPriceAuction( + s.addr(0), + parseDec("1"), + parseCoin("1_000_000_000denom1"), + "denom2", + []types.VestingSchedule{}, + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 2, 0), + true, + ) + s.Require().Equal(types.AuctionStatusStarted, auction.GetStatus()) + + s.placeBidFixedPrice(auction.Id, s.addr(1), parseDec("1"), parseCoin("200_000_000denom2"), true) + s.placeBidFixedPrice(auction.Id, s.addr(2), parseDec("1"), parseCoin("200_000_000denom2"), true) + s.placeBidFixedPrice(auction.Id, s.addr(3), parseDec("1"), parseCoin("250_000_000denom2"), true) + s.placeBidFixedPrice(auction.Id, s.addr(4), parseDec("1"), parseCoin("250_000_000denom2"), true) + + // The remaining coin amount must be insufficient + s.fundAddr(s.addr(5), parseCoins("300_000_000denom2")) + err := s.addAllowedBidder(auction.Id, s.addr(5), bidSellingAmount(parseDec("1"), parseCoin("300_000_000denom2"))) + s.Require().NoError(err) + + _, err = s.keeper.PlaceBid(s.ctx, &types.MsgPlaceBid{ + AuctionId: auction.Id, + Bidder: s.addr(5).String(), + BidType: types.BidTypeFixedPrice, + Price: parseDec("1.0"), + Coin: parseCoin("300_000_000denom2"), + }) + s.Require().ErrorIs(err, types.ErrInsufficientRemainingAmount) +} + +func (s *KeeperTestSuite) TestFixedPrice_OverMaxBidAmountLimit() { + auction := s.createFixedPriceAuction( + s.addr(0), + parseDec("1"), + parseCoin("1000_000_000denom1"), + "denom2", + []types.VestingSchedule{}, + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 2, 0), + true, + ) + s.Require().Equal(types.AuctionStatusStarted, auction.GetStatus()) + + s.placeBidFixedPrice(auction.Id, s.addr(1), parseDec("1"), parseCoin("100_000_000denom2"), true) + s.placeBidFixedPrice(auction.Id, s.addr(1), parseDec("1"), parseCoin("100_000_000denom2"), true) + + _, err := s.keeper.PlaceBid(s.ctx, &types.MsgPlaceBid{ + AuctionId: auction.Id, + Bidder: s.addr(1).String(), + BidType: types.BidTypeFixedPrice, + Price: parseDec("1"), + Coin: parseCoin("100_000_001denom2"), + }) + s.Require().ErrorIs(err, types.ErrOverMaxBidAmountLimit) +} + +func (s *KeeperTestSuite) TestFixedPrice_IncorrectCoinDenom() { + auction := s.createFixedPriceAuction( + s.addr(0), + parseDec("1"), + parseCoin("1_000_000_000denom1"), + "denom2", + []types.VestingSchedule{}, + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 2, 0), + true, + ) + s.Require().Equal(types.AuctionStatusStarted, auction.GetStatus()) + + s.placeBidFixedPrice(auction.Id, s.addr(1), parseDec("1"), parseCoin("100_000_000denom2"), true) + s.placeBidFixedPrice(auction.Id, s.addr(1), parseDec("1"), parseCoin("100_000_000denom1"), true) + + // The remaining coin amount must be insufficient + s.fundAddr(s.addr(1), parseCoins("100_000_000denom2")) + err := s.addAllowedBidder(auction.Id, s.addr(1), bidSellingAmount(parseDec("1"), parseCoin("100_000_000denom2"))) + s.Require().NoError(err) + + _, err = s.keeper.PlaceBid(s.ctx, &types.MsgPlaceBid{ + AuctionId: auction.Id, + Bidder: s.addr(1).String(), + BidType: types.BidTypeFixedPrice, + Price: parseDec("1"), + Coin: parseCoin("10_000_000denom3"), + }) + s.Require().ErrorIs(err, types.ErrIncorrectCoinDenom) +} + +func (s *KeeperTestSuite) TestFixedPrice_IncorrectAuctionType() { + auction := s.createFixedPriceAuction( + s.addr(0), + parseDec("1"), + parseCoin("1_000_000_000denom1"), + "denom2", + []types.VestingSchedule{}, + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 2, 0), + true, + ) + s.Require().Equal(types.AuctionStatusStarted, auction.GetStatus()) + + s.fundAddr(s.addr(2), parseCoins("200_000_000denom2")) + err := s.addAllowedBidder(auction.Id, s.addr(2), bidSellingAmount(parseDec("1"), parseCoin("200_000_000denom2"))) + s.Require().NoError(err) + + _, err = s.keeper.PlaceBid(s.ctx, &types.MsgPlaceBid{ + AuctionId: auction.Id, + Bidder: s.addr(2).String(), + BidType: types.BidTypeBatchWorth, + Price: parseDec("1.0"), + Coin: parseCoin("200_000_000denom2"), + }) + s.Require().ErrorIs(err, types.ErrIncorrectAuctionType) +} + +func (s *KeeperTestSuite) TestBatchAuction_IncorrectCoinDenom() { + auction := s.createBatchAuction( + s.addr(1), + parseDec("0.5"), + parseDec("0.1"), + parseCoin("1_000_000_000denom1"), + "denom2", + []types.VestingSchedule{}, + 1, + math.LegacyMustNewDecFromStr("0.2"), + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 2, 0), + true, + ) + s.Require().Equal(types.AuctionStatusStarted, auction.GetStatus()) + + s.fundAddr(s.addr(1), parseCoins("200_000_000denom1, 200_000_000denom2")) + err := s.addAllowedBidder(auction.Id, s.addr(1), parseCoin("200_000_000denom1").Amount) + s.Require().NoError(err) + err = s.addAllowedBidder(auction.Id, s.addr(1), parseCoin("200_000_000denom2").Amount) + s.Require().NoError(err) + + // Place a BidTypeBatchWorth bid with an incorrect denom (SellingCoinDenom) + _, err = s.keeper.PlaceBid(s.ctx, &types.MsgPlaceBid{ + AuctionId: auction.Id, + Bidder: s.addr(1).String(), + BidType: types.BidTypeBatchWorth, + Price: parseDec("1"), + Coin: parseCoin("100_000_000denom1"), + }) + s.Require().ErrorIs(err, types.ErrIncorrectCoinDenom) + + // Place a BidTypeBatchMany bid with an incorrect denom (PayingCoinDenom) + _, err = s.keeper.PlaceBid(s.ctx, &types.MsgPlaceBid{ + AuctionId: auction.Id, + Bidder: s.addr(1).String(), + BidType: types.BidTypeBatchMany, + Price: parseDec("1"), + Coin: parseCoin("100_000_000denom2"), + }) + s.Require().ErrorIs(err, types.ErrIncorrectCoinDenom) +} + +func (s *KeeperTestSuite) TestBatchWorth_OverMaxBidAmountLimit() { + auction := s.createBatchAuction( + s.addr(1), + parseDec("0.5"), + parseDec("0.1"), + parseCoin("1_000_000_000denom1"), + "denom2", + []types.VestingSchedule{}, + 1, + math.LegacyMustNewDecFromStr("0.2"), + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 2, 0), + true, + ) + s.Require().Equal(types.AuctionStatusStarted, auction.GetStatus()) + + s.placeBidBatchWorth(auction.Id, s.addr(1), parseDec("0.5"), parseCoin("500_000_000denom2"), math.NewInt(1000_000_000), true) + + s.fundAddr(s.addr(2), parseCoins("1000_000_000denom2")) + err := s.addAllowedBidder(auction.Id, s.addr(2), parseCoin("800_000_000denom1").Amount) + s.Require().NoError(err) + + // Place a BidTypeBatchWorth bid with more than maxBidAmount + _, err = s.keeper.PlaceBid(s.ctx, &types.MsgPlaceBid{ + AuctionId: auction.Id, + Bidder: s.addr(2).String(), + BidType: types.BidTypeBatchWorth, + Price: parseDec("0.5"), + Coin: parseCoin("500_000_000denom2"), + }) + s.Require().ErrorIs(err, types.ErrOverMaxBidAmountLimit) +} + +func (s *KeeperTestSuite) TestBatchMany_OverMaxBidAmountLimit() { + auction := s.createBatchAuction( + s.addr(1), + parseDec("0.5"), + parseDec("0.1"), + parseCoin("1_000_000_000denom1"), + "denom2", + []types.VestingSchedule{}, + 1, + math.LegacyMustNewDecFromStr("0.2"), + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 2, 0), + true, + ) + s.Require().Equal(types.AuctionStatusStarted, auction.GetStatus()) + + s.placeBidBatchMany(auction.Id, s.addr(1), parseDec("0.5"), parseCoin("500_000_000denom1"), math.NewInt(800_000_000), true) + + s.fundAddr(s.addr(2), parseCoins("1000_000_000denom2")) + err := s.addAllowedBidder(auction.Id, s.addr(2), parseCoin("400_000_000denom1").Amount) + s.Require().NoError(err) + + // Place a BidTypeBatchMany bid with more than maxBidAmount + _, err = s.keeper.PlaceBid(s.ctx, &types.MsgPlaceBid{ + AuctionId: auction.Id, + Bidder: s.addr(2).String(), + BidType: types.BidTypeBatchMany, + Price: parseDec("0.5"), + Coin: parseCoin("500_000_000denom1"), + }) + s.Require().ErrorIs(err, types.ErrOverMaxBidAmountLimit) +} + +func (s *KeeperTestSuite) TestModifyBid_Validation() { + err := s.keeper.ModifyBid(s.ctx, &types.MsgModifyBid{ + AuctionId: 1, + Bidder: s.addr(1).String(), + BidId: 5, + Price: parseDec("0.8"), + Coin: parseCoin("100_000_000denom2"), + }) + s.Require().ErrorIs(err, collections.ErrNotFound) + + auction := s.createFixedPriceAuction( + s.addr(0), + parseDec("1"), + parseCoin("1_000_000_000denom1"), + "denom2", + []types.VestingSchedule{}, + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 2, 0), + true, + ) + s.Require().Equal(types.AuctionStatusStarted, auction.GetStatus()) + + err = s.keeper.ModifyBid(s.ctx, &types.MsgModifyBid{ + AuctionId: 1, + Bidder: s.addr(1).String(), + BidId: 5, + Price: parseDec("0.8"), + Coin: parseCoin("100_000_000denom2"), + }) + s.Require().ErrorIs(err, collections.ErrNotFound) + + err = auction.SetStatus(types.AuctionStatusCancelled) + s.Require().NoError(err) + + err = s.keeper.Auction.Set(s.ctx, auction.GetId(), auction) + s.Require().NoError(err) + + err = s.keeper.ModifyBid(s.ctx, &types.MsgModifyBid{ + AuctionId: 1, + Bidder: s.addr(1).String(), + BidId: 5, + Price: parseDec("0.8"), + Coin: parseCoin("100_000_000denom2"), + }) + s.Require().ErrorIs(err, collections.ErrNotFound) +} + +func (s *KeeperTestSuite) TestModifyBid_BidTypeWorth() { + a := s.createBatchAuction( + s.addr(0), + parseDec("0.1"), + parseDec("0.1"), + parseCoin("1_000_000_000denom1"), + "denom2", + []types.VestingSchedule{}, + 1, + math.LegacyMustNewDecFromStr("0.2"), + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 2, 0), + true, + ) + s.Require().Equal(types.AuctionStatusStarted, a.GetStatus()) + + // Place a bid + b := s.placeBidBatchWorth(a.Id, s.addr(1), parseDec("0.6"), parseCoin("100_000_000denom2"), math.NewInt(1_000_000_000), true) + + // Modify the bid with not existing bid + err := s.keeper.ModifyBid(s.ctx, &types.MsgModifyBid{ + AuctionId: a.Id, + Bidder: s.addr(1).String(), + BidId: 5, + Price: parseDec("0.8"), + Coin: parseCoin("100_000_000denom2"), + }) + s.Require().ErrorIs(err, collections.ErrNotFound) + + // Modify the bid with an incorrect owner + err = s.keeper.ModifyBid(s.ctx, &types.MsgModifyBid{ + AuctionId: a.Id, + Bidder: s.addr(0).String(), + BidId: b.Id, + Price: parseDec("0.8"), + Coin: parseCoin("100_000_000denom2"), + }) + s.Require().ErrorIs(err, sdkerrors.ErrUnauthorized) + + // Modify the bid with an incorrect denom + err = s.keeper.ModifyBid(s.ctx, &types.MsgModifyBid{ + AuctionId: a.Id, + Bidder: s.addr(1).String(), + BidId: b.Id, + Price: parseDec("0.8"), + Coin: parseCoin("100_000_000denom1"), + }) + s.Require().ErrorIs(err, types.ErrIncorrectCoinDenom) + + // Modify the bid with lower bid price + err = s.keeper.ModifyBid(s.ctx, &types.MsgModifyBid{ + AuctionId: a.Id, + Bidder: s.addr(1).String(), + BidId: b.Id, + Price: parseDec("0.3"), + Coin: parseCoin("100_000_000denom2"), + }) + s.Require().ErrorIs(err, sdkerrors.ErrInvalidRequest) + + // Modify the bid with lower coin amount + err = s.keeper.ModifyBid(s.ctx, &types.MsgModifyBid{ + AuctionId: a.Id, + Bidder: s.addr(1).String(), + BidId: b.Id, + Price: parseDec("0.8"), + Coin: parseCoin("100denom2"), + }) + s.Require().ErrorIs(err, sdkerrors.ErrInvalidRequest) + + // No modification + err = s.keeper.ModifyBid(s.ctx, &types.MsgModifyBid{ + AuctionId: a.Id, + Bidder: s.addr(1).String(), + BidId: b.Id, + Price: parseDec("0.6"), + Coin: parseCoin("100_000_000denom2"), + }) + s.Require().ErrorIs(err, sdkerrors.ErrInvalidRequest) +} + +func (s *KeeperTestSuite) TestModifyBid_BidTypeMany() { + a := s.createBatchAuction( + s.addr(0), + parseDec("0.1"), + parseDec("0.1"), + parseCoin("1_000_000_000denom1"), + "denom2", + []types.VestingSchedule{}, + 1, + math.LegacyMustNewDecFromStr("0.2"), + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 2, 0), + true, + ) + s.Require().Equal(types.AuctionStatusStarted, a.GetStatus()) + + // Place a bid + b := s.placeBidBatchMany(a.Id, s.addr(1), parseDec("0.5"), parseCoin("100_000_000denom1"), math.NewInt(1_000_000_000), true) + + // Insufficient minimum price + err := s.keeper.ModifyBid(s.ctx, &types.MsgModifyBid{ + AuctionId: a.Id, + Bidder: s.addr(1).String(), + BidId: b.Id, + Price: parseDec("0.01"), + Coin: parseCoin("100_000_000denom1"), + }) + s.Require().ErrorIs(err, types.ErrInsufficientMinBidPrice) + + // Fund the bidder enough paying coin + s.fundAddr(s.addr(1), parseCoins("1_000_000_000_000denom2")) + + // Modify the bid with not existing bid + err = s.keeper.ModifyBid(s.ctx, &types.MsgModifyBid{ + AuctionId: a.Id, + Bidder: s.addr(1).String(), + BidId: b.Id, + Price: parseDec("0.8"), + Coin: parseCoin("100_000_000denom1"), + }) + s.Require().NoError(err) +} diff --git a/x/fundraising/keeper/execution.go b/x/fundraising/keeper/execution.go new file mode 100644 index 0000000..c90bc47 --- /dev/null +++ b/x/fundraising/keeper/execution.go @@ -0,0 +1,50 @@ +package keeper + +import ( + "context" + + sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/ignite/modules/x/fundraising/types" +) + +// ExecuteStandByStatus simply updates the auction status to AuctionStatusStarted +// if the auction is ready to get started. +func (k Keeper) ExecuteStandByStatus(ctx context.Context, auction types.AuctionI) error { + blockTime := sdk.UnwrapSDKContext(ctx).BlockTime() + if auction.ShouldAuctionStarted(blockTime) { // BlockTime >= StartTime + if err := auction.SetStatus(types.AuctionStatusStarted); err != nil { + return err + } + if err := k.Auction.Set(ctx, auction.GetId(), auction); err != nil { + return err + } + } + return nil +} + +// ExecuteStartedStatus executes operations depending on the auction type. +func (k Keeper) ExecuteStartedStatus(ctx context.Context, auction types.AuctionI) error { + blockTime := sdk.UnwrapSDKContext(ctx).BlockTime() + if auction.ShouldAuctionClosed(blockTime) { // BlockTime >= EndTime + switch auction.GetType() { + case types.AuctionTypeFixedPrice: + if err := k.CloseFixedPriceAuction(ctx, auction); err != nil { + return err + } + + case types.AuctionTypeBatch: + if err := k.CloseBatchAuction(ctx, auction); err != nil { + return err + } + } + } + return nil +} + +// ExecuteVestingStatus first gets all vesting queues in the store and +// look up the release time of each vesting queue to see if the module needs to +// distribute the paying coin to the auctioneer. +func (k Keeper) ExecuteVestingStatus(ctx context.Context, auction types.AuctionI) error { + return k.ReleaseVestingPayingCoin(ctx, auction) +} diff --git a/x/fundraising/keeper/execution_test.go b/x/fundraising/keeper/execution_test.go new file mode 100644 index 0000000..6d3c502 --- /dev/null +++ b/x/fundraising/keeper/execution_test.go @@ -0,0 +1,160 @@ +package keeper_test + +import ( + "time" + + "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" + _ "github.com/stretchr/testify/suite" + + "github.com/ignite/modules/x/fundraising/types" +) + +func (s *KeeperTestSuite) TestEndBlockerStandByStatus() { + standByAuction := s.createFixedPriceAuction( + s.addr(0), + parseDec("0.5"), + parseCoin("500000000000denom1"), + "denom2", + []types.VestingSchedule{}, + time.Now().AddDate(0, 3, 0), + time.Now().AddDate(0, 5, 0), + true, + ) + + auction, err := s.keeper.Auction.Get(s.ctx, standByAuction.GetId()) + s.Require().NoError(err) + s.Require().Equal(types.AuctionStatusStandBy, auction.GetStatus()) + + // Modify current time and call end blocker + s.ctx = s.ctx.WithBlockTime(standByAuction.StartTime.AddDate(0, 0, 1)) + s.Require().NoError(s.keeper.BeginBlocker(s.ctx)) + + auction, err = s.keeper.Auction.Get(s.ctx, standByAuction.GetId()) + s.Require().NoError(err) + s.Require().Equal(types.AuctionStatusStarted, auction.GetStatus()) +} + +func (s *KeeperTestSuite) TestEndBlockerStartedStatus() { + auctioneer := s.addr(0) + auction := s.createFixedPriceAuction( + auctioneer, + parseDec("1"), + parseCoin("500000000000denom1"), + "denom2", + []types.VestingSchedule{ + { + ReleaseTime: types.MustParseRFC3339("2024-01-01T00:00:00Z"), + Weight: math.LegacyMustNewDecFromStr("0.5"), + }, + { + ReleaseTime: types.MustParseRFC3339("2024-06-01T00:00:00Z"), + Weight: math.LegacyMustNewDecFromStr("0.5"), + }, + }, + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 1, 0), + true, + ) + s.Require().Equal(types.AuctionStatusStarted, auction.GetStatus()) + + bid1 := s.placeBidFixedPrice(auction.GetId(), s.addr(1), math.LegacyOneDec(), parseCoin("20000000denom2"), true) + bid2 := s.placeBidFixedPrice(auction.GetId(), s.addr(2), math.LegacyOneDec(), parseCoin("20000000denom2"), true) + bid3 := s.placeBidFixedPrice(auction.GetId(), s.addr(3), math.LegacyOneDec(), parseCoin("20000000denom2"), true) + + totalBidCoin := bid1.Coin.Add(bid2.Coin).Add(bid3.Coin) + receiveAmt := math.LegacyNewDecFromInt(totalBidCoin.Amount).QuoTruncate(auction.GetStartPrice()).TruncateInt() + receiveCoin := sdk.NewCoin(auction.GetSellingCoin().Denom, receiveAmt) + + payingReserve := s.getBalance(auction.GetPayingReserveAddress(), auction.GetPayingCoinDenom()) + s.Require().True(coinEq(totalBidCoin, payingReserve)) + + // Modify the current block time a day after the end time + s.ctx = s.ctx.WithBlockTime(auction.GetEndTimes()[0].AddDate(0, 0, 1)) + s.Require().NoError(s.keeper.BeginBlocker(s.ctx)) + + // The remaining selling coin must be returned to the auctioneer + auctioneerBalance := s.getBalance(auctioneer, auction.GetSellingCoin().Denom) + s.Require().True(coinEq(auction.GetSellingCoin(), auctioneerBalance.Add(receiveCoin))) +} + +func (s *KeeperTestSuite) TestEndBlockerVestingStatus() { + auctioneer := s.addr(0) + auction := s.createFixedPriceAuction( + auctioneer, + parseDec("1"), + sdk.NewInt64Coin("denom1", 500_000_000_000), + "denom2", + []types.VestingSchedule{ + { + ReleaseTime: time.Now().AddDate(0, 0, -1).AddDate(0, 6, 0), + Weight: math.LegacyMustNewDecFromStr("0.5"), + }, + { + ReleaseTime: time.Now().AddDate(0, 0, -1).AddDate(1, 0, 0), + Weight: math.LegacyMustNewDecFromStr("0.5"), + }, + }, + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 1, 0), + true, + ) + s.Require().Equal(types.AuctionStatusStarted, auction.GetStatus()) + + bid1 := s.placeBidFixedPrice(auction.GetId(), s.addr(1), math.LegacyOneDec(), parseCoin("20000000denom2"), true) + bid2 := s.placeBidFixedPrice(auction.GetId(), s.addr(2), math.LegacyOneDec(), parseCoin("20000000denom2"), true) + bid3 := s.placeBidFixedPrice(auction.GetId(), s.addr(3), math.LegacyOneDec(), parseCoin("20000000denom2"), true) + + totalBidCoin := bid1.Coin.Add(bid2.Coin).Add(bid3.Coin) + + // Modify the current block time a day after the end time + s.ctx = s.ctx.WithBlockTime(auction.GetEndTimes()[0].AddDate(0, 0, 1)) + s.Require().NoError(s.keeper.BeginBlocker(s.ctx)) + + vestingReserve := s.getBalance(auction.GetVestingReserveAddress(), auction.GetPayingCoinDenom()) + s.Require().Equal(totalBidCoin, vestingReserve) + + // Modify the current block time a day after the last vesting schedule + s.ctx = s.ctx.WithBlockTime(auction.VestingSchedules[len(auction.VestingSchedules)-1].ReleaseTime.AddDate(0, 0, 1)) + s.Require().NoError(s.keeper.BeginBlocker(s.ctx)) + + queues, err := s.keeper.GetVestingQueuesByAuctionId(s.ctx, auction.GetId()) + s.Require().NoError(err) + s.Require().Len(queues, 2) + s.Require().True(queues[0].Released) + s.Require().True(queues[1].Released) + + // The auctioneer must have released the paying coin + auctioneerBalance := s.getBalance(auctioneer, auction.GetPayingCoinDenom()) + s.Require().True(coinEq(totalBidCoin, auctioneerBalance)) +} + +func (s *KeeperTestSuite) TestExecuteStartedAuction_BatchAuction() { + ba := s.createBatchAuction( + s.addr(1), + parseDec("1"), + parseDec("0.1"), + parseCoin("10000000000denom1"), + "denom2", + []types.VestingSchedule{}, + 1, + math.LegacyMustNewDecFromStr("0.2"), + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 2, 0), + true, + ) + s.Require().Equal(types.AuctionStatusStarted, ba.GetStatus()) + + s.placeBidBatchWorth(ba.Id, s.addr(1), parseDec("10"), parseCoin("100000000denom2"), math.NewInt(1000000000), true) + s.placeBidBatchWorth(ba.Id, s.addr(2), parseDec("9"), parseCoin("150000000denom2"), math.NewInt(1000000000), true) + s.placeBidBatchWorth(ba.Id, s.addr(3), parseDec("5.5"), parseCoin("250000000denom2"), math.NewInt(1000000000), true) + s.placeBidBatchMany(ba.Id, s.addr(4), parseDec("6"), parseCoin("400000000denom1"), math.NewInt(1000000000), true) + s.placeBidBatchMany(ba.Id, s.addr(6), parseDec("4.5"), parseCoin("150000000denom1"), math.NewInt(1000000000), true) + s.placeBidBatchMany(ba.Id, s.addr(7), parseDec("3.8"), parseCoin("150000000denom1"), math.NewInt(1000000000), true) + + auction, err := s.keeper.Auction.Get(s.ctx, ba.Id) + s.Require().NoError(err) + + err = s.keeper.ExecuteStartedStatus(s.ctx, auction) + s.Require().NoError(err) +} diff --git a/x/fundraising/keeper/hooks.go b/x/fundraising/keeper/hooks.go new file mode 100644 index 0000000..07b7684 --- /dev/null +++ b/x/fundraising/keeper/hooks.go @@ -0,0 +1,244 @@ +package keeper + +import ( + "context" + "time" + + "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/ignite/modules/x/fundraising/types" +) + +// Implements FundraisingHooks interface +var _ types.FundraisingHooks = Keeper{} + +// SetHooks sets the fundraising hooks. +func (k *Keeper) SetHooks(fk types.FundraisingHooks) *Keeper { + if k.hooks != nil { + panic("cannot set fundraising hooks twice") + } + k.hooks = fk + return k +} + +// BeforeFixedPriceAuctionCreated - call hook if registered +func (k Keeper) BeforeFixedPriceAuctionCreated( + ctx context.Context, + auctioneer string, + startPrice math.LegacyDec, + sellingCoin sdk.Coin, + payingCoinDenom string, + vestingSchedules []types.VestingSchedule, + startTime time.Time, + endTime time.Time, +) error { + if k.hooks != nil { + if err := k.hooks.BeforeFixedPriceAuctionCreated( + ctx, + auctioneer, + startPrice, + sellingCoin, + payingCoinDenom, + vestingSchedules, + startTime, + endTime, + ); err != nil { + return err + } + } + return nil +} + +// AfterFixedPriceAuctionCreated - call hook if registered +func (k Keeper) AfterFixedPriceAuctionCreated( + ctx context.Context, + auctionId uint64, + auctioneer string, + startPrice math.LegacyDec, + sellingCoin sdk.Coin, + payingCoinDenom string, + vestingSchedules []types.VestingSchedule, + startTime time.Time, + endTime time.Time, +) error { + if k.hooks != nil { + if err := k.hooks.AfterFixedPriceAuctionCreated( + ctx, + auctionId, + auctioneer, + startPrice, + sellingCoin, + payingCoinDenom, + vestingSchedules, + startTime, + endTime, + ); err != nil { + return err + } + } + return nil +} + +// BeforeBatchAuctionCreated - call hook if registered +func (k Keeper) BeforeBatchAuctionCreated( + ctx context.Context, + auctioneer string, + startPrice math.LegacyDec, + minBidPrice math.LegacyDec, + sellingCoin sdk.Coin, + payingCoinDenom string, + vestingSchedules []types.VestingSchedule, + maxExtendedRound uint32, + extendedRoundRate math.LegacyDec, + startTime time.Time, + endTime time.Time, +) error { + if k.hooks != nil { + if err := k.hooks.BeforeBatchAuctionCreated( + ctx, + auctioneer, + startPrice, + minBidPrice, + sellingCoin, + payingCoinDenom, + vestingSchedules, + maxExtendedRound, + extendedRoundRate, + startTime, + endTime, + ); err != nil { + return err + } + } + return nil +} + +// AfterBatchAuctionCreated - call hook if registered +func (k Keeper) AfterBatchAuctionCreated( + ctx context.Context, + auctionId uint64, + auctioneer string, + startPrice math.LegacyDec, + minBidPrice math.LegacyDec, + sellingCoin sdk.Coin, + payingCoinDenom string, + vestingSchedules []types.VestingSchedule, + maxExtendedRound uint32, + extendedRoundRate math.LegacyDec, + startTime time.Time, + endTime time.Time, +) error { + if k.hooks != nil { + if err := k.hooks.AfterBatchAuctionCreated( + ctx, + auctionId, + auctioneer, + startPrice, + minBidPrice, + sellingCoin, + payingCoinDenom, + vestingSchedules, + maxExtendedRound, + extendedRoundRate, + startTime, + endTime, + ); err != nil { + return err + } + } + return nil +} + +// BeforeAuctionCanceled - call hook if registered +func (k Keeper) BeforeAuctionCanceled( + ctx context.Context, + auctionId uint64, + auctioneer string, +) error { + if k.hooks != nil { + if err := k.hooks.BeforeAuctionCanceled(ctx, auctionId, auctioneer); err != nil { + return err + } + } + return nil +} + +// BeforeBidPlaced - call hook if registered +func (k Keeper) BeforeBidPlaced( + ctx context.Context, + auctionId uint64, + bidId uint64, + bidder string, + bidType types.BidType, + price math.LegacyDec, + coin sdk.Coin, +) error { + if k.hooks != nil { + if err := k.hooks.BeforeBidPlaced(ctx, auctionId, bidId, bidder, bidType, price, coin); err != nil { + return err + } + } + return nil +} + +// BeforeBidModified - call hook if registered +func (k Keeper) BeforeBidModified( + ctx context.Context, + auctionId uint64, + bidId uint64, + bidder string, + bidType types.BidType, + price math.LegacyDec, + coin sdk.Coin, +) error { + if k.hooks != nil { + if err := k.hooks.BeforeBidModified(ctx, auctionId, bidId, bidder, bidType, price, coin); err != nil { + return err + } + } + return nil +} + +// BeforeAllowedBiddersAdded - call hook if registered +func (k Keeper) BeforeAllowedBiddersAdded( + ctx context.Context, + allowedBidders []types.AllowedBidder, +) error { + if k.hooks != nil { + if err := k.hooks.BeforeAllowedBiddersAdded(ctx, allowedBidders); err != nil { + return err + } + } + return nil +} + +// BeforeAllowedBidderUpdated - call hook if registered +func (k Keeper) BeforeAllowedBidderUpdated( + ctx context.Context, + auctionId uint64, + bidder sdk.AccAddress, + maxBidAmount math.Int, +) error { + if k.hooks != nil { + if err := k.hooks.BeforeAllowedBidderUpdated(ctx, auctionId, bidder, maxBidAmount); err != nil { + return err + } + } + return nil +} + +// BeforeSellingCoinsAllocated - call hook if registered +func (k Keeper) BeforeSellingCoinsAllocated( + ctx context.Context, + auctionId uint64, + allocationMap map[string]math.Int, + refundMap map[string]math.Int, +) error { + if k.hooks != nil { + if err := k.hooks.BeforeSellingCoinsAllocated(ctx, auctionId, allocationMap, refundMap); err != nil { + return err + } + } + return nil +} diff --git a/x/fundraising/keeper/hooks_test.go b/x/fundraising/keeper/hooks_test.go new file mode 100644 index 0000000..37318b1 --- /dev/null +++ b/x/fundraising/keeper/hooks_test.go @@ -0,0 +1,263 @@ +package keeper_test + +import ( + "context" + "time" + + "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" + _ "github.com/stretchr/testify/suite" + + "github.com/ignite/modules/x/fundraising/types" +) + +var _ types.FundraisingHooks = &MockFundraisingHooksReceiver{} + +// MockFundraisingHooksReceiver event hooks for governance proposal object (noalias) +type MockFundraisingHooksReceiver struct { + BeforeFixedPriceAuctionCreatedValid bool + AfterFixedPriceAuctionCreatedValid bool + BeforeBatchAuctionCreatedValid bool + AfterBatchAuctionCreatedValid bool + BeforeAuctionCanceledValid bool + BeforeBidPlacedValid bool + BeforeBidModifiedValid bool + BeforeAllowedBiddersAddedValid bool + BeforeAllowedBidderUpdatedValid bool + BeforeSellingCoinsAllocatedValid bool +} + +func (h *MockFundraisingHooksReceiver) BeforeFixedPriceAuctionCreated( + ctx context.Context, + auctioneer string, + startPrice math.LegacyDec, + sellingCoin sdk.Coin, + payingCoinDenom string, + vestingSchedules []types.VestingSchedule, + startTime time.Time, + endTime time.Time, +) error { + h.BeforeFixedPriceAuctionCreatedValid = true + return nil +} + +func (h *MockFundraisingHooksReceiver) AfterFixedPriceAuctionCreated( + ctx context.Context, + auctionId uint64, + auctioneer string, + startPrice math.LegacyDec, + sellingCoin sdk.Coin, + payingCoinDenom string, + vestingSchedules []types.VestingSchedule, + startTime time.Time, + endTime time.Time, +) error { + h.AfterFixedPriceAuctionCreatedValid = true + return nil +} + +func (h *MockFundraisingHooksReceiver) BeforeBatchAuctionCreated( + ctx context.Context, + auctioneer string, + startPrice math.LegacyDec, + minBidPrice math.LegacyDec, + sellingCoin sdk.Coin, + payingCoinDenom string, + vestingSchedules []types.VestingSchedule, + maxExtendedRound uint32, + extendedRoundRate math.LegacyDec, + startTime time.Time, + endTime time.Time, +) error { + h.BeforeBatchAuctionCreatedValid = true + return nil +} + +func (h *MockFundraisingHooksReceiver) AfterBatchAuctionCreated( + ctx context.Context, + auctionId uint64, + auctioneer string, + startPrice math.LegacyDec, + minBidPrice math.LegacyDec, + sellingCoin sdk.Coin, + payingCoinDenom string, + vestingSchedules []types.VestingSchedule, + maxExtendedRound uint32, + extendedRoundRate math.LegacyDec, + startTime time.Time, + endTime time.Time, +) error { + h.AfterBatchAuctionCreatedValid = true + return nil +} + +func (h *MockFundraisingHooksReceiver) BeforeAuctionCanceled( + ctx context.Context, + auctionId uint64, + auctioneer string, +) error { + h.BeforeAuctionCanceledValid = true + return nil +} + +func (h *MockFundraisingHooksReceiver) BeforeBidPlaced( + ctx context.Context, + auctionId uint64, + bidId uint64, + bidder string, + bidType types.BidType, + price math.LegacyDec, + coin sdk.Coin, +) error { + h.BeforeBidPlacedValid = true + return nil +} + +func (h *MockFundraisingHooksReceiver) BeforeBidModified( + ctx context.Context, + auctionId uint64, + bidId uint64, + bidder string, + bidType types.BidType, + price math.LegacyDec, + coin sdk.Coin, +) error { + h.BeforeBidModifiedValid = true + return nil +} + +func (h *MockFundraisingHooksReceiver) BeforeAllowedBiddersAdded( + ctx context.Context, + allowedBidders []types.AllowedBidder, +) error { + h.BeforeAllowedBiddersAddedValid = true + return nil +} + +func (h *MockFundraisingHooksReceiver) BeforeAllowedBidderUpdated( + ctx context.Context, + auctionId uint64, + bidder sdk.AccAddress, + maxBidAmount math.Int, +) error { + h.BeforeAllowedBidderUpdatedValid = true + return nil +} + +func (h *MockFundraisingHooksReceiver) BeforeSellingCoinsAllocated( + ctx context.Context, + auctionId uint64, + allocationMap map[string]math.Int, + refundMap map[string]math.Int, +) error { + h.BeforeSellingCoinsAllocatedValid = true + return nil +} + +func (s *KeeperTestSuite) TestHooks() { + fundraisingHooksReceiver := MockFundraisingHooksReceiver{} + + // Set hooks + s.keeper.SetHooks(types.NewMultiFundraisingHooks(&fundraisingHooksReceiver)) + + s.Require().False(fundraisingHooksReceiver.BeforeFixedPriceAuctionCreatedValid) + s.Require().False(fundraisingHooksReceiver.AfterFixedPriceAuctionCreatedValid) + s.Require().False(fundraisingHooksReceiver.BeforeBatchAuctionCreatedValid) + s.Require().False(fundraisingHooksReceiver.AfterBatchAuctionCreatedValid) + s.Require().False(fundraisingHooksReceiver.BeforeAuctionCanceledValid) + s.Require().False(fundraisingHooksReceiver.BeforeBidPlacedValid) + s.Require().False(fundraisingHooksReceiver.BeforeBidModifiedValid) + s.Require().False(fundraisingHooksReceiver.BeforeAllowedBiddersAddedValid) + s.Require().False(fundraisingHooksReceiver.BeforeAllowedBidderUpdatedValid) + s.Require().False(fundraisingHooksReceiver.BeforeSellingCoinsAllocatedValid) + + // Create a fixed price auction + s.createFixedPriceAuction( + s.addr(0), + parseDec("2.0"), + parseCoin("1_000_000_000_000denom1"), + "denom2", + []types.VestingSchedule{}, + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 2, 0), + true, + ) + s.Require().True(fundraisingHooksReceiver.BeforeFixedPriceAuctionCreatedValid) + s.Require().True(fundraisingHooksReceiver.AfterFixedPriceAuctionCreatedValid) + + // Create a batch auction + batchAuction := s.createBatchAuction( + s.addr(1), + parseDec("0.5"), + parseDec("0.1"), + parseCoin("1_000_000_000_000denom3"), + "denom4", + []types.VestingSchedule{}, + 1, + math.LegacyMustNewDecFromStr("0.2"), + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 2, 0), + true, + ) + s.Require().True(fundraisingHooksReceiver.BeforeBatchAuctionCreatedValid) + s.Require().True(fundraisingHooksReceiver.AfterBatchAuctionCreatedValid) + + // Create auction that is stand by status + standByAuction := s.createFixedPriceAuction( + s.addr(2), + parseDec("2.0"), + parseCoin("1_000_000_000_000denom5"), + "denom6", + []types.VestingSchedule{}, + time.Now().AddDate(0, 1, 0), + time.Now().AddDate(0, 3, 0), + true, + ) + + // Cancel the auction + err := s.keeper.CancelAuction(s.ctx, &types.MsgCancelAuction{ + Auctioneer: standByAuction.Auctioneer, + AuctionId: standByAuction.Id, + }) + s.Require().NoError(err) + s.Require().True(fundraisingHooksReceiver.BeforeAuctionCanceledValid) + + // Get already started batch auction + auction, err := s.keeper.Auction.Get(s.ctx, batchAuction.Id) + s.Require().NoError(err) + + // Add allowed bidder + allowedBidders := []types.AllowedBidder{types.NewAllowedBidder(auction.GetId(), s.addr(3), parseInt("100_000_000_000"))} + s.Require().NoError(s.keeper.AddAllowedBidders(s.ctx, auction.GetId(), allowedBidders)) + s.Require().True(fundraisingHooksReceiver.BeforeAllowedBiddersAddedValid) + + // Update the allowed bidder + err = s.keeper.UpdateAllowedBidder(s.ctx, auction.GetId(), s.addr(3), parseInt("110_000_000_000")) + s.Require().NoError(err) + s.Require().True(fundraisingHooksReceiver.BeforeAllowedBidderUpdatedValid) + + // Place a bid + bid := s.placeBidBatchWorth(auction.GetId(), s.addr(3), parseDec("0.55"), parseCoin("5_000_000denom4"), math.NewInt(10_000_000), true) + s.Require().True(fundraisingHooksReceiver.BeforeBidPlacedValid) + + // Modify the bid + s.fundAddr(bid.GetBidder(), sdk.NewCoins(parseCoin("1_000_000denom4"))) + err = s.keeper.ModifyBid(s.ctx, &types.MsgModifyBid{ + AuctionId: bid.AuctionId, + BidId: bid.Id, + Bidder: bid.Bidder, + Price: bid.Price, + Coin: parseCoin("6_000_000denom4"), + }) + s.Require().NoError(err) + s.Require().True(fundraisingHooksReceiver.BeforeBidModifiedValid) + + // Calculate fixed price allocation + mInfo, err := s.keeper.CalculateFixedPriceAllocation(s.ctx, auction) + s.Require().NoError(err) + + // Allocate the selling coin + err = s.keeper.AllocateSellingCoin(s.ctx, auction, mInfo) + s.Require().NoError(err) + s.Require().True(fundraisingHooksReceiver.BeforeSellingCoinsAllocatedValid) +} diff --git a/x/fundraising/keeper/invariants.go b/x/fundraising/keeper/invariants.go new file mode 100644 index 0000000..1085a9a --- /dev/null +++ b/x/fundraising/keeper/invariants.go @@ -0,0 +1,158 @@ +package keeper + +import ( + "fmt" + + "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/ignite/modules/x/fundraising/types" +) + +// RegisterInvariants registers all fundraising invariants. +func RegisterInvariants(ir sdk.InvariantRegistry, k Keeper) { + ir.RegisterRoute(types.ModuleName, "selling-pool-reserve-amount", + SellingPoolReserveAmountInvariant(k)) + ir.RegisterRoute(types.ModuleName, "paying-pool-reserve-amount", + PayingPoolReserveAmountInvariant(k)) + ir.RegisterRoute(types.ModuleName, "vesting-pool-reserve-amount", + VestingPoolReserveAmountInvariant(k)) +} + +// AllInvariants runs all invariants of the fundraising module. +func AllInvariants(k Keeper) sdk.Invariant { + return func(ctx sdk.Context) (string, bool) { + for _, inv := range []func(Keeper) sdk.Invariant{ + SellingPoolReserveAmountInvariant, + PayingPoolReserveAmountInvariant, + VestingPoolReserveAmountInvariant, + } { + res, stop := inv(k)(ctx) + if stop { + return res, stop + } + } + return "", false + } +} + +// SellingPoolReserveAmountInvariant checks an invariant that the total amount of selling coin for an auction +// must equal or greater than the selling reserve account balance. +func SellingPoolReserveAmountInvariant(k Keeper) sdk.Invariant { + return func(ctx sdk.Context) (string, bool) { + msg := "" + count := 0 + + auctions, err := k.Auctions(ctx) + if err != nil { + return "", false + } + for _, auction := range auctions { + if auction.GetStatus() == types.AuctionStatusStarted { + sellingReserveAddr := auction.GetSellingReserveAddress() + sellingCoinDenom := auction.GetSellingCoin().Denom + spendable := k.bankKeeper.SpendableCoins(ctx, sellingReserveAddr) + sellingReserve := sdk.NewCoin(sellingCoinDenom, spendable.AmountOf(sellingCoinDenom)) + fmt.Println("sellingReserve: ", sellingReserve) + fmt.Println("auction.GetSellingCoin(): ", auction.GetSellingCoin()) + if !sellingReserve.IsGTE(auction.GetSellingCoin()) { + msg += fmt.Sprintf("\tselling reserve balance %s\n"+ + "\tselling pool reserve: %v\n"+ + "\ttotal selling coin: %v\n", + sellingReserveAddr.String(), sellingReserve, auction.GetSellingCoin()) + count++ + } + } + } + broken := count != 0 + + return sdk.FormatInvariant(types.ModuleName, "selling pool reserve amount and selling coin amount", msg), broken + } +} + +// PayingPoolReserveAmountInvariant checks an invariant that the total bid amount +// must equal or greater than the paying reserve account balance. +func PayingPoolReserveAmountInvariant(k Keeper) sdk.Invariant { + return func(ctx sdk.Context) (string, bool) { + msg := "" + count := 0 + + auctions, err := k.Auctions(ctx) + if err != nil { + return "", false + } + for _, auction := range auctions { + totalBidCoin := sdk.NewCoin(auction.GetPayingCoinDenom(), math.ZeroInt()) + + bids, err := k.GetBidsByAuctionId(ctx, auction.GetId()) + if err != nil { + return "", false + } + if auction.GetStatus() == types.AuctionStatusStarted { + for _, bid := range bids { + bidAmt := bid.ConvertToPayingAmount(auction.GetPayingCoinDenom()) + totalBidCoin = totalBidCoin.Add(sdk.NewCoin(auction.GetPayingCoinDenom(), bidAmt)) + } + } + + payingReserveAddr := auction.GetPayingReserveAddress() + payingCoinDenom := auction.GetPayingCoinDenom() + spendable := k.bankKeeper.SpendableCoins(ctx, payingReserveAddr) + payingReserve := sdk.NewCoin(payingCoinDenom, spendable.AmountOf(payingCoinDenom)) + if !payingReserve.IsGTE(totalBidCoin) { + msg += fmt.Sprintf("\tpaying reserve balance %s\n"+ + "\tpaying pool reserve: %v\n"+ + "\ttotal bid coin: %v\n", + payingReserveAddr.String(), payingReserve, totalBidCoin) + count++ + } + } + broken := count != 0 + + return sdk.FormatInvariant(types.ModuleName, "paying pool reserve amount and total bids amount", msg), broken + } +} + +// VestingPoolReserveAmountInvariant checks an invariant that the total vesting amount +// must be equal or greater than the vesting reserve account balance. +func VestingPoolReserveAmountInvariant(k Keeper) sdk.Invariant { + return func(ctx sdk.Context) (string, bool) { + msg := "" + count := 0 + + auctions, err := k.Auctions(ctx) + if err != nil { + return "", false + } + for _, auction := range auctions { + totalPayingCoin := sdk.NewCoin(auction.GetPayingCoinDenom(), math.ZeroInt()) + + vestingQueues, err := k.GetVestingQueuesByAuctionId(ctx, auction.GetId()) + if err != nil { + return "", false + } + if auction.GetStatus() == types.AuctionStatusVesting { + for _, queue := range vestingQueues { + if !queue.Released { + totalPayingCoin = totalPayingCoin.Add(queue.PayingCoin) + } + } + } + + vestingReserveAddr := auction.GetVestingReserveAddress() + payingCoinDenom := auction.GetPayingCoinDenom() + spendable := k.bankKeeper.SpendableCoins(ctx, vestingReserveAddr) + vestingReserve := sdk.NewCoin(payingCoinDenom, spendable.AmountOf(payingCoinDenom)) + if !vestingReserve.IsGTE(totalPayingCoin) { + msg += fmt.Sprintf("\tvesting reserve balance %s\n"+ + "\tvesting pool reserve: %v\n"+ + "\ttotal paying coin: %v\n", + vestingReserveAddr.String(), vestingReserve, totalPayingCoin) + count++ + } + } + broken := count != 0 + + return sdk.FormatInvariant(types.ModuleName, "vesting pool reserve amount and total paying amount", msg), broken + } +} diff --git a/x/fundraising/keeper/invariants_test.go b/x/fundraising/keeper/invariants_test.go new file mode 100644 index 0000000..3b72ac5 --- /dev/null +++ b/x/fundraising/keeper/invariants_test.go @@ -0,0 +1,156 @@ +package keeper_test + +import ( + "time" + + "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" + _ "github.com/stretchr/testify/suite" + + "github.com/ignite/modules/x/fundraising/keeper" + "github.com/ignite/modules/x/fundraising/types" +) + +func (s *KeeperTestSuite) TestSellingPoolReserveAmountInvariant() { + logger := s.keeper.Logger() + logger.Info("TestSellingPoolReserveAmountInvariant") + + // Create a fixed price auction that has started status + auction := s.createFixedPriceAuction( + s.addr(0), + math.LegacyMustNewDecFromStr("0.5"), + sdk.NewInt64Coin("denom1", 500_000_000_000), + "denom2", + []types.VestingSchedule{}, + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 3, 0), + true, + ) + s.Require().Equal(types.AuctionStatusStarted, auction.GetStatus()) + + _, broken := keeper.SellingPoolReserveAmountInvariant(s.keeper)(s.ctx) + s.Require().False(broken) + + // Although it is not possible for an exploiter to have the same token denom in reality, + // it is safe to test the case anyway + exploiterAddr := s.addr(1) + sellingReserveAddr := auction.GetSellingReserveAddress() + s.sendCoins(exploiterAddr, sellingReserveAddr, sdk.NewCoins( + sdk.NewInt64Coin("denom1", 500_000_000), + sdk.NewInt64Coin("denom2", 500_000_000), + sdk.NewInt64Coin("denom3", 500_000_000), + sdk.NewInt64Coin("denom4", 500_000_000), + ), true) + + _, broken = keeper.SellingPoolReserveAmountInvariant(s.keeper)(s.ctx) + s.Require().False(broken) +} + +func (s *KeeperTestSuite) TestPayingPoolReserveAmountInvariant() { + logger := s.keeper.Logger() + logger.Info("TestPayingPoolReserveAmountInvariant") + + k, ctx := s.keeper, s.ctx + + auction := s.createFixedPriceAuction( + s.addr(0), + math.LegacyOneDec(), + sdk.NewInt64Coin("denom3", 500_000_000_000), + "denom4", + []types.VestingSchedule{}, + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 3, 0), + true, + ) + s.Require().Equal(types.AuctionStatusStarted, auction.GetStatus()) + + s.placeBidFixedPrice(auction.GetId(), s.addr(1), math.LegacyOneDec(), parseCoin("20000000denom4"), true) + s.placeBidFixedPrice(auction.GetId(), s.addr(2), math.LegacyOneDec(), parseCoin("20000000denom4"), true) + s.placeBidFixedPrice(auction.GetId(), s.addr(2), math.LegacyOneDec(), parseCoin("15000000denom4"), true) + s.placeBidFixedPrice(auction.GetId(), s.addr(3), math.LegacyOneDec(), parseCoin("35000000denom4"), true) + s.placeBidFixedPrice(auction.GetId(), s.addr(4), math.LegacyOneDec(), parseCoin("15000000denom3"), true) + s.placeBidFixedPrice(auction.GetId(), s.addr(5), math.LegacyOneDec(), parseCoin("20000000denom3"), true) + + _, broken := keeper.PayingPoolReserveAmountInvariant(k)(ctx) + s.Require().False(broken) + + // Although it is not possible for an exploiter to have the same token denom in reality, + // it is safe to test the case anyway + exploiterAddr := s.addr(1) + payingReserveAddr := auction.GetPayingReserveAddress() + s.sendCoins(exploiterAddr, payingReserveAddr, sdk.NewCoins( + sdk.NewInt64Coin("denom1", 500_000_000), + sdk.NewInt64Coin("denom2", 500_000_000), + sdk.NewInt64Coin("denom3", 500_000_000), + sdk.NewInt64Coin("denom4", 500_000_000), + ), true) + + _, broken = keeper.PayingPoolReserveAmountInvariant(k)(ctx) + s.Require().False(broken) +} + +func (s *KeeperTestSuite) TestVestingPoolReserveAmountInvariant() { + logger := s.keeper.Logger() + logger.Info("TestVestingPoolReserveAmountInvariant") + + k, ctx := s.keeper, s.ctx + + auction := s.createFixedPriceAuction( + s.addr(0), + math.LegacyOneDec(), + sdk.NewInt64Coin("denom3", 500_000_000_000), + "denom4", + []types.VestingSchedule{ + { + ReleaseTime: time.Now().AddDate(1, 0, 0), + Weight: math.LegacyMustNewDecFromStr("0.25"), + }, + { + ReleaseTime: time.Now().AddDate(1, 3, 0), + Weight: math.LegacyMustNewDecFromStr("0.25"), + }, + { + ReleaseTime: time.Now().AddDate(1, 6, 0), + Weight: math.LegacyMustNewDecFromStr("0.25"), + }, + { + ReleaseTime: time.Now().AddDate(1, 9, 0), + Weight: math.LegacyMustNewDecFromStr("0.25"), + }, + }, + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 3, 0), + true, + ) + s.Require().Equal(types.AuctionStatusStarted, auction.GetStatus()) + + s.placeBidFixedPrice(auction.GetId(), s.addr(1), math.LegacyOneDec(), parseCoin("20000000denom4"), true) + s.placeBidFixedPrice(auction.GetId(), s.addr(2), math.LegacyOneDec(), parseCoin("20000000denom4"), true) + s.placeBidFixedPrice(auction.GetId(), s.addr(2), math.LegacyOneDec(), parseCoin("15000000denom4"), true) + s.placeBidFixedPrice(auction.GetId(), s.addr(3), math.LegacyOneDec(), parseCoin("35000000denom4"), true) + + // Make the auction ended + ctx = ctx.WithBlockTime(auction.GetEndTimes()[0].AddDate(0, 0, 1)) + s.Require().NoError(k.BeginBlocker(ctx)) + + // Make first and second vesting queues over + ctx = ctx.WithBlockTime(auction.GetVestingSchedules()[0].GetReleaseTime().AddDate(0, 0, 1)) + s.Require().NoError(k.BeginBlocker(ctx)) + + _, broken := keeper.VestingPoolReserveAmountInvariant(k)(ctx) + s.Require().False(broken) + + // Although it is not possible for an exploiter to have the same token denom in reality, + // it is safe to test the case anyway + exploiterAddr := s.addr(1) + vestingReserveAddr := auction.GetVestingReserveAddress() + s.sendCoins(exploiterAddr, vestingReserveAddr, sdk.NewCoins( + sdk.NewInt64Coin("denom1", 500_000_000), + sdk.NewInt64Coin("denom2", 500_000_000), + sdk.NewInt64Coin("denom3", 500_000_000), + sdk.NewInt64Coin("denom4", 500_000_000), + ), true) + + _, broken = keeper.VestingPoolReserveAmountInvariant(k)(ctx) + s.Require().False(broken) +} diff --git a/x/fundraising/keeper/keeper.go b/x/fundraising/keeper/keeper.go new file mode 100644 index 0000000..90ce6fa --- /dev/null +++ b/x/fundraising/keeper/keeper.go @@ -0,0 +1,161 @@ +package keeper + +import ( + "context" + "fmt" + "strconv" + "time" + + "cosmossdk.io/collections" + "cosmossdk.io/core/address" + "cosmossdk.io/core/store" + "cosmossdk.io/log" + "github.com/cosmos/cosmos-sdk/codec" + sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/ignite/modules/x/fundraising/types" +) + +var ( + // Set this to "true" using testing build flag to enable AddAllowedBidder msg in Makefile + enableAddAllowedBidder = "false" + + // EnableAddAllowedBidder indicates whether msgServer accepts MsgAddAllowedBidder or not. + // Never set this to true in production environment. Doing that will expose serious attack vector. + // Default is false, which means AddAllowedBidder can't be executed through message level. + EnableAddAllowedBidder = false +) + +func init() { + var err error + EnableAddAllowedBidder, err = strconv.ParseBool(enableAddAllowedBidder) + if err != nil { + panic(err) + } +} + +type ( + Keeper struct { + cdc codec.BinaryCodec + addressCodec address.Codec + storeService store.KVStoreService + logger log.Logger + + // the address capable of executing a MsgUpdateParams message. + // Typically, this should be the x/gov module account. + authority string + + Schema collections.Schema + Params collections.Item[types.Params] + MatchedBidsLen collections.Map[uint64, int64] + AllowedBidder collections.Map[collections.Pair[uint64, sdk.AccAddress], types.AllowedBidder] + VestingQueue collections.Map[collections.Pair[uint64, time.Time], types.VestingQueue] + BidSeq collections.Map[uint64, uint64] + Bid collections.Map[collections.Pair[uint64, uint64], types.Bid] + AuctionSeq collections.Sequence + Auction collections.Map[uint64, types.AuctionI] + // this line is used by starport scaffolding # collection/type + + accountKeeper types.AccountKeeper + bankKeeper types.BankKeeper + distrKeeper types.DistrKeeper + + hooks types.FundraisingHooks + } +) + +func NewKeeper( + cdc codec.BinaryCodec, + addressCodec address.Codec, + storeService store.KVStoreService, + logger log.Logger, + authority string, + accountKeeper types.AccountKeeper, + bankKeeper types.BankKeeper, + distrKeeper types.DistrKeeper, +) Keeper { + if _, err := addressCodec.StringToBytes(authority); err != nil { + panic(fmt.Sprintf("invalid authority address %s: %s", authority, err)) + } + + sb := collections.NewSchemaBuilder(storeService) + + k := Keeper{ + cdc: cdc, + addressCodec: addressCodec, + storeService: storeService, + authority: authority, + logger: logger, + accountKeeper: accountKeeper, + bankKeeper: bankKeeper, + distrKeeper: distrKeeper, + Params: collections.NewItem(sb, types.ParamsKey, "params", codec.CollValue[types.Params](cdc)), + MatchedBidsLen: collections.NewMap(sb, types.MatchedBidsLenKey, "matchedBidsLen", collections.Uint64Key, collections.Int64Value), + AllowedBidder: collections.NewMap(sb, types.AllowedBidderKey, "allowedBidder", collections.PairKeyCodec(collections.Uint64Key, sdk.LengthPrefixedAddressKey(sdk.AccAddressKey)), codec.CollValue[types.AllowedBidder](cdc)), + VestingQueue: collections.NewMap(sb, types.VestingQueueKey, "vestingQueue", collections.PairKeyCodec(collections.Uint64Key, sdk.TimeKey), codec.CollValue[types.VestingQueue](cdc)), + BidSeq: collections.NewMap(sb, types.BidCountKey, "bid_seq", collections.Uint64Key, collections.Uint64Value), + Bid: collections.NewMap(sb, types.BidKey, "bid", collections.PairKeyCodec(collections.Uint64Key, collections.Uint64Key), codec.CollValue[types.Bid](cdc)), + AuctionSeq: collections.NewSequence(sb, types.AuctionCountKey, "auction_seq"), + Auction: collections.NewMap(sb, types.AuctionKey, "auction", collections.Uint64Key, codec.CollInterfaceValue[types.AuctionI](cdc)), + // this line is used by starport scaffolding # collection/instantiate + } + + schema, err := sb.Build() + if err != nil { + panic(err) + } + k.Schema = schema + + return k +} + +// GetAuthority returns the module's authority. +func (k Keeper) GetAuthority() string { + return k.authority +} + +// Logger returns a module-specific logger. +func (k Keeper) Logger() log.Logger { + return k.logger.With("module", fmt.Sprintf("x/%s", types.ModuleName)) +} + +// PayCreationFee sends the auction creation fee to the fee collector account. +func (k Keeper) PayCreationFee(ctx context.Context, auctioneerAddr sdk.AccAddress) error { + params, err := k.Params.Get(ctx) + if err != nil { + return err + } + if err := k.distrKeeper.FundCommunityPool(ctx, params.AuctionCreationFee, auctioneerAddr); err != nil { + return err + } + return nil +} + +// PayPlaceBidFee sends the fee when placing a bid for an auction to the fee collector account. +func (k Keeper) PayPlaceBidFee(ctx context.Context, bidderAddr sdk.AccAddress) error { + params, err := k.Params.Get(ctx) + if err != nil { + return err + } + + if err := k.distrKeeper.FundCommunityPool(ctx, params.PlaceBidFee, bidderAddr); err != nil { + return err + } + return nil +} + +// ReserveSellingCoin reserves the selling coin to the selling reserve account. +func (k Keeper) ReserveSellingCoin(ctx context.Context, auctionId uint64, auctioneerAddr sdk.AccAddress, sellingCoin sdk.Coin) error { + if err := k.bankKeeper.SendCoins(ctx, auctioneerAddr, types.SellingReserveAddress(auctionId), sdk.NewCoins(sellingCoin)); err != nil { + return err + } + return nil +} + +// ReservePayingCoin reserves paying coin to the paying reserve account. +func (k Keeper) ReservePayingCoin(ctx context.Context, auctionId uint64, bidderAddr sdk.AccAddress, payingCoin sdk.Coin) error { + if err := k.bankKeeper.SendCoins(ctx, bidderAddr, types.PayingReserveAddress(auctionId), sdk.NewCoins(payingCoin)); err != nil { + return err + } + return nil +} diff --git a/x/fundraising/keeper/keeper_test.go b/x/fundraising/keeper/keeper_test.go new file mode 100644 index 0000000..ab37255 --- /dev/null +++ b/x/fundraising/keeper/keeper_test.go @@ -0,0 +1,372 @@ +package keeper_test + +import ( + "errors" + "fmt" + "math/rand" + "strings" + "testing" + "time" + + "cosmossdk.io/collections" + "cosmossdk.io/math" + tmrand "github.com/cometbft/cometbft/libs/rand" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/stretchr/testify/suite" + + "github.com/ignite/modules/app" + testkeeper "github.com/ignite/modules/testutil/keeper" + "github.com/ignite/modules/testutil/sample" + "github.com/ignite/modules/testutil/simapp" + "github.com/ignite/modules/x/fundraising/keeper" + "github.com/ignite/modules/x/fundraising/types" +) + +const maxAddress = 100 + +var r *rand.Rand + +// initialize random generator +func init() { + s := rand.NewSource(1) + r = rand.New(s) +} + +type KeeperTestSuite struct { + suite.Suite + + app *app.App + ctx sdk.Context + keeper keeper.Keeper + msgServer types.MsgServer + addresses []sdk.AccAddress +} + +func TestKeeperTestSuite(t *testing.T) { + suite.Run(t, new(KeeperTestSuite)) +} + +func (s *KeeperTestSuite) SetupTest() { + for i := 0; i < maxAddress; i++ { + s.addresses = append(s.addresses, sample.AccAddress(r)) + } + chainID := "chain-" + tmrand.NewRand().Str(6) + + var err error + s.app, err = simapp.New(chainID) + s.Require().NoError(err) + + s.ctx = s.app.BaseApp.NewContext(false) + s.ctx = s.ctx.WithBlockTime(time.Now()) // set to current time + s.keeper = s.app.FundraisingKeeper + s.msgServer = keeper.NewMsgServerImpl(s.keeper) +} + +// +// Below are just shortcuts to frequently-used functions. +// + +func (s *KeeperTestSuite) createFixedPriceAuction( + auctioneer sdk.AccAddress, + startPrice math.LegacyDec, + sellingCoin sdk.Coin, + payingCoinDenom string, + vestingSchedules []types.VestingSchedule, + startTime time.Time, + endTime time.Time, + fund bool, +) *types.FixedPriceAuction { + params, err := s.keeper.Params.Get(s.ctx) + s.Require().NoError(err) + + if fund { + s.fundAddr(auctioneer, params.AuctionCreationFee.Add(sellingCoin)) + } + + auction, err := s.keeper.CreateFixedPriceAuction(s.ctx, &types.MsgCreateFixedPriceAuction{ + Auctioneer: auctioneer.String(), + StartPrice: startPrice, + SellingCoin: sellingCoin, + PayingCoinDenom: payingCoinDenom, + VestingSchedules: vestingSchedules, + StartTime: startTime, + EndTime: endTime, + }) + s.Require().NoError(err) + + return auction.(*types.FixedPriceAuction) +} + +func (s *KeeperTestSuite) createBatchAuction( + auctioneer sdk.AccAddress, + startPrice math.LegacyDec, + minBidPrice math.LegacyDec, + sellingCoin sdk.Coin, + payingCoinDenom string, + vestingSchedules []types.VestingSchedule, + maxExtendedRound uint32, + extendedRoundRate math.LegacyDec, + startTime time.Time, + endTime time.Time, + fund bool, +) *types.BatchAuction { + params, err := s.keeper.Params.Get(s.ctx) + s.Require().NoError(err) + + if fund { + s.fundAddr(auctioneer, params.AuctionCreationFee.Add(sellingCoin)) + } + + auction, err := s.keeper.CreateBatchAuction(s.ctx, &types.MsgCreateBatchAuction{ + Auctioneer: auctioneer.String(), + StartPrice: startPrice, + MinBidPrice: minBidPrice, + SellingCoin: sellingCoin, + PayingCoinDenom: payingCoinDenom, + VestingSchedules: vestingSchedules, + MaxExtendedRound: maxExtendedRound, + ExtendedRoundRate: extendedRoundRate, + StartTime: startTime, + EndTime: endTime, + }) + s.Require().NoError(err) + + return auction.(*types.BatchAuction) +} + +func (s *KeeperTestSuite) addAllowedBidder(auctionId uint64, bidder sdk.AccAddress, maxBidAmt math.Int) error { + allowedBidder, err := s.keeper.AllowedBidder.Get(s.ctx, collections.Join(auctionId, bidder)) + if err == nil { + maxBidAmt = maxBidAmt.Add(allowedBidder.MaxBidAmount) + } + if err != nil && !errors.Is(err, collections.ErrNotFound) { + return err + } + + return s.keeper.AllowedBidder.Set(s.ctx, collections.Join(auctionId, bidder), types.NewAllowedBidder(auctionId, bidder, maxBidAmt)) +} + +func (s *KeeperTestSuite) placeBidFixedPrice( + auctionId uint64, + bidder sdk.AccAddress, + price math.LegacyDec, + coin sdk.Coin, + fund bool, +) types.Bid { + auction, err := s.keeper.Auction.Get(s.ctx, auctionId) + s.Require().NoError(err) + + var fundAmt math.Int + var fundCoin sdk.Coin + var maxBidAmt math.Int + + if coin.Denom == auction.GetPayingCoinDenom() { + fundCoin = coin + maxBidAmt = math.LegacyNewDecFromInt(coin.Amount).QuoTruncate(price).TruncateInt() + } else { + fundAmt = math.LegacyNewDecFromInt(coin.Amount).Mul(price).Ceil().TruncateInt() + fundCoin = sdk.NewCoin(auction.GetPayingCoinDenom(), fundAmt) + maxBidAmt = coin.Amount + } + + if fund { + s.fundAddr(bidder, sdk.NewCoins(fundCoin)) + } + + err = s.addAllowedBidder(auctionId, bidder, maxBidAmt) + s.Require().NoError(err) + + b, err := s.keeper.PlaceBid(s.ctx, &types.MsgPlaceBid{ + AuctionId: auctionId, + Bidder: bidder.String(), + BidType: types.BidTypeFixedPrice, + Price: price, + Coin: coin, + }) + s.Require().NoError(err) + + return b +} + +func (s *KeeperTestSuite) placeBidBatchWorth( + auctionId uint64, + bidder sdk.AccAddress, + price math.LegacyDec, + coin sdk.Coin, + maxBidAmt math.Int, + fund bool, +) types.Bid { + if fund { + s.fundAddr(bidder, sdk.NewCoins(coin)) + } + + err := s.addAllowedBidder(auctionId, bidder, maxBidAmt) + s.Require().NoError(err) + + b, err := s.keeper.PlaceBid(s.ctx, &types.MsgPlaceBid{ + AuctionId: auctionId, + Bidder: bidder.String(), + BidType: types.BidTypeBatchWorth, + Price: price, + Coin: coin, + }) + s.Require().NoError(err) + + return b +} + +func (s *KeeperTestSuite) placeBidBatchMany( + auctionId uint64, + bidder sdk.AccAddress, + price math.LegacyDec, + coin sdk.Coin, + maxBidAmt math.Int, + fund bool, +) types.Bid { + auction, err := s.keeper.Auction.Get(s.ctx, auctionId) + s.Require().NoError(err) + + if fund { + fundAmt := math.LegacyNewDecFromInt(coin.Amount).Mul(price).Ceil().TruncateInt() + fundCoin := sdk.NewCoin(auction.GetPayingCoinDenom(), fundAmt) + + s.fundAddr(bidder, sdk.NewCoins(fundCoin)) + } + + err = s.addAllowedBidder(auctionId, bidder, maxBidAmt) + s.Require().NoError(err) + + b, err := s.keeper.PlaceBid(s.ctx, &types.MsgPlaceBid{ + AuctionId: auctionId, + Bidder: bidder.String(), + BidType: types.BidTypeBatchMany, + Price: price, + Coin: coin, + }) + s.Require().NoError(err) + + return b +} + +// Below are useful helpers to write test code easily. +func (s *KeeperTestSuite) addr(index int) sdk.AccAddress { + if index >= maxAddress { + panic(fmt.Sprintf("invalid address index %d", index)) + } + return s.addresses[index] +} + +func (s *KeeperTestSuite) fundAddr(addr sdk.AccAddress, coins sdk.Coins) { + err := testkeeper.FundAccount(s.app.BankKeeper, s.ctx, addr, coins) + s.Require().NoError(err) +} + +func (s *KeeperTestSuite) getBalance(addr sdk.AccAddress, denom string) sdk.Coin { + return s.app.BankKeeper.GetBalance(s.ctx, addr, denom) +} + +func (s *KeeperTestSuite) sendCoins(fromAddr, toAddr sdk.AccAddress, coins sdk.Coins, fund bool) { + if fund { + s.fundAddr(fromAddr, coins) + } + + err := s.app.BankKeeper.SendCoins(s.ctx, fromAddr, toAddr, coins) + s.Require().NoError(err) +} + +// fullString is a helper function that returns a full output of the matching result. +// it includes all bids sorted in descending order, allocation, refund, and matching info. +// it is useful for debugging. +func (s *KeeperTestSuite) fullString(auctionId uint64, mInfo keeper.MatchingInfo) string { + auction, err := s.keeper.Auction.Get(s.ctx, auctionId) + s.Require().NoError(err) + + payingCoinDenom := auction.GetPayingCoinDenom() + bids, err := s.keeper.GetBidsByAuctionId(s.ctx, auctionId) + s.Require().NoError(err) + + bids = types.SortBids(bids) + + var b strings.Builder + + // Bids + b.WriteString("[Bids]\n") + b.WriteString("+--------------------bidder---------------------+-id-+---------price---------+---------type---------+-----reserve-amount-----+-------bid-amount-------+\n") + for _, bid := range bids { + reserveAmt := bid.ConvertToPayingAmount(payingCoinDenom) + bidAmt := bid.ConvertToSellingAmount(payingCoinDenom) + + _, _ = fmt.Fprintf(&b, "| %28s | %2d | %21s | %20s | %22s | %22s |\n", bid.Bidder, bid.Id, bid.Price.String(), bid.Type, reserveAmt, bidAmt) + } + b.WriteString("+-----------------------------------------------+----+-----------------------+----------------------+------------------------+------------------------+\n\n") + + // Allocation + b.WriteString("[Allocation]\n") + b.WriteString("+--------------------bidder---------------------+------allocated-amount------+\n") + for bidder, allocatedAmt := range mInfo.AllocationMap { + _, _ = fmt.Fprintf(&b, "| %28s | %26s |\n", bidder, allocatedAmt) + } + b.WriteString("+-----------------------------------------------+----------------------------+\n\n") + + // Refund + if mInfo.RefundMap != nil { + b.WriteString("[Refund]\n") + b.WriteString("+--------------------bidder---------------------+------refund-amount------+\n") + for bidder, refundAmt := range mInfo.RefundMap { + _, _ = fmt.Fprintf(&b, "| %30s | %23s |\n", bidder, refundAmt) + } + b.WriteString("+-----------------------------------------------+-------------------------+\n\n") + } + + b.WriteString("[MatchingInfo]\n") + b.WriteString("+-matched-len-+------matched-price------+------total-matched-amount------+\n") + _, _ = fmt.Fprintf(&b, "| %11d | %23s | %30s |\n", mInfo.MatchedLen, mInfo.MatchedPrice.String(), mInfo.TotalMatchedAmount) + b.WriteString("+-------------+-------------------------+--------------------------------+") + + return b.String() +} + +// bodSellingAmount exchanges to selling coin amount (PayingCoinAmount/Price). +func bidSellingAmount(price math.LegacyDec, coin sdk.Coin) math.Int { + return math.LegacyNewDecFromInt(coin.Amount).QuoTruncate(price).TruncateInt() +} + +// parseCoin parses string and returns sdk.Coin. +func parseCoin(s string) sdk.Coin { + s = strings.ReplaceAll(s, "_", "") + coin, err := sdk.ParseCoinNormalized(s) + if err != nil { + panic(err) + } + return coin +} + +// parseCoins parses string and returns sdk.Coins. +func parseCoins(s string) sdk.Coins { + s = strings.ReplaceAll(s, "_", "") + coins, err := sdk.ParseCoinsNormalized(s) + if err != nil { + panic(err) + } + return coins +} + +// parseInt parses string and returns math.Int. +func parseInt(s string) math.Int { + s = strings.ReplaceAll(s, "_", "") + amt, ok := math.NewIntFromString(s) + if !ok { + panic("failed to convert string to math.Int") + } + return amt +} + +// parseDec parses string and returns math.LegacyDec. +func parseDec(s string) math.LegacyDec { + return math.LegacyMustNewDecFromStr(s) +} + +// coinEq is a convenient method to test expected and got values of sdk.Coin. +func coinEq(exp, got sdk.Coin) (bool, string, string, string) { + return exp.Equal(got), "expected:\t%v\ngot:\t\t%v", exp.String(), got.String() +} diff --git a/x/fundraising/keeper/match.go b/x/fundraising/keeper/match.go new file mode 100644 index 0000000..1e005f6 --- /dev/null +++ b/x/fundraising/keeper/match.go @@ -0,0 +1,142 @@ +package keeper + +import ( + "context" + "errors" + "sort" + + "cosmossdk.io/collections" + "cosmossdk.io/math" + + "github.com/ignite/modules/x/fundraising/types" +) + +// MatchingInfo holds information about an auction matching information. +type MatchingInfo struct { + MatchedLen int64 // the length of matched bids + MatchedPrice math.LegacyDec // the final matched price + TotalMatchedAmount math.Int // the total sold amount + AllocationMap map[string]math.Int // the map that holds allocate amount information for each bidder + ReservedMatchedMap map[string]math.Int // the map that holds each bidder's matched amount out of their total reserved amount + RefundMap map[string]math.Int // the map that holds refund amount information for each bidder +} + +func (k Keeper) GetLastMatchedBidsLen(ctx context.Context, auctionId uint64) (int64, error) { + matchedBidsLen, err := k.MatchedBidsLen.Get(ctx, auctionId) + if errors.Is(err, collections.ErrNotFound) { + return 0, nil + } + return matchedBidsLen, err +} + +func (k Keeper) SetMatchedBidsLen(ctx context.Context, auctionId uint64, matchedLen int64) error { + return k.MatchedBidsLen.Set(ctx, auctionId, matchedLen) +} + +// CalculateFixedPriceAllocation loops through all bids for the auction and calculate matching information. +func (k Keeper) CalculateFixedPriceAllocation(ctx context.Context, auction types.AuctionI) (MatchingInfo, error) { + mInfo := MatchingInfo{ + MatchedPrice: auction.GetStartPrice(), + TotalMatchedAmount: math.ZeroInt(), + AllocationMap: map[string]math.Int{}, + } + + bids, err := k.GetBidsByAuctionId(ctx, auction.GetId()) + if err != nil { + return mInfo, err + } + + // All bids for the auction are already matched in message level + // Loop through all bids and calculate allocated amount + // Accumulate the allocated amount if a bidder placed multiple bids + for _, bid := range bids { + bidAmt := bid.ConvertToSellingAmount(auction.GetPayingCoinDenom()) + + allocatedAmt, ok := mInfo.AllocationMap[bid.Bidder] + if !ok { + allocatedAmt = math.ZeroInt() + } + mInfo.AllocationMap[bid.Bidder] = allocatedAmt.Add(bidAmt) + mInfo.TotalMatchedAmount = mInfo.TotalMatchedAmount.Add(bidAmt) + mInfo.MatchedLen++ + } + + return mInfo, nil +} + +func (k Keeper) CalculateBatchAllocation(ctx context.Context, auction types.AuctionI) (MatchingInfo, error) { + mInfo := MatchingInfo{ + AllocationMap: map[string]math.Int{}, + ReservedMatchedMap: map[string]math.Int{}, + RefundMap: map[string]math.Int{}, + } + + bids, err := k.GetBidsByAuctionId(ctx, auction.GetId()) + if err != nil { + return mInfo, err + } + prices, bidsByPrice := types.BidsByPrice(bids) + sellingAmt := auction.GetSellingCoin().Amount + + allowedBidders, err := k.GetAllowedBiddersByAuction(ctx, auction.GetId()) + if err != nil { + return mInfo, err + } + + matchRes := &types.MatchResult{ + MatchPrice: math.LegacyDec{}, + MatchedAmount: math.ZeroInt(), + MatchResultByBidder: map[string]*types.BidderMatchResult{}, + } + + // We use binary search to find the best(the lowest possible) matching price. + // Note that the returned index from sort.Search is not used, since + // we're already storing the match result inside the closure. + // In this way, we can reduce redundant calculation for the matching price + // after finding it. + sort.Search(len(prices), func(i int) bool { + // Reverse the index, since prices are sorted in descending order. + // Note that our goal is to find the first true(matched) condition, starting + // from the lowest price. + i = (len(prices) - 1) - i + res, matched := types.Match(prices[i], prices, bidsByPrice, sellingAmt, allowedBidders) + if matched { // If we found a valid matching price, store the result + matchRes = res + } + return matched + }) + + mInfo.MatchedLen = int64(len(matchRes.MatchedBids)) + mInfo.MatchedPrice = matchRes.MatchPrice + mInfo.TotalMatchedAmount = matchRes.MatchedAmount + + reservedAmtByBidder := map[string]math.Int{} + for _, bid := range bids { + bidderReservedAmt, ok := reservedAmtByBidder[bid.Bidder] + if !ok { + bidderReservedAmt = math.ZeroInt() + } + reservedAmtByBidder[bid.Bidder] = bidderReservedAmt.Add(bid.ConvertToPayingAmount(auction.GetPayingCoinDenom())) + } + + for bidder, reservedAmt := range reservedAmtByBidder { + mInfo.AllocationMap[bidder] = math.ZeroInt() + mInfo.ReservedMatchedMap[bidder] = math.ZeroInt() + mInfo.RefundMap[bidder] = reservedAmt + } + + for bidder, bidderRes := range matchRes.MatchResultByBidder { + mInfo.AllocationMap[bidder] = bidderRes.MatchedAmount + mInfo.ReservedMatchedMap[bidder] = bidderRes.PayingAmount + mInfo.RefundMap[bidder] = reservedAmtByBidder[bidder].Sub(bidderRes.PayingAmount) + } + + for _, bid := range matchRes.MatchedBids { + bid.SetMatched(true) + if err := k.Bid.Set(ctx, collections.Join(bid.AuctionId, bid.Id), bid); err != nil { + return mInfo, err + } + } + + return mInfo, k.SetMatchedBidsLen(ctx, auction.GetId(), mInfo.MatchedLen) +} diff --git a/x/fundraising/keeper/match_test.go b/x/fundraising/keeper/match_test.go new file mode 100644 index 0000000..5fc512a --- /dev/null +++ b/x/fundraising/keeper/match_test.go @@ -0,0 +1,1286 @@ +package keeper_test + +import ( + "fmt" + "time" + + "cosmossdk.io/math" + _ "github.com/stretchr/testify/suite" + + "github.com/ignite/modules/x/fundraising/types" +) + +func (s *KeeperTestSuite) TestExampleFullString() { + auction := s.createFixedPriceAuction( + s.addr(0), + parseDec("0.5"), + parseCoin("1_000_000_000_000denom1"), + "denom2", + []types.VestingSchedule{}, + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 2, 0), + true, + ) + + a, err := s.keeper.Auction.Get(s.ctx, auction.GetId()) + s.Require().NoError(err) + + s.placeBidFixedPrice(a.GetId(), s.addr(1), a.GetStartPrice(), parseCoin("15_000_000denom2"), true) + s.placeBidFixedPrice(a.GetId(), s.addr(2), a.GetStartPrice(), parseCoin("20_000_000denom2"), true) + s.placeBidFixedPrice(a.GetId(), s.addr(4), a.GetStartPrice(), parseCoin("10_000_000denom1"), true) + s.placeBidFixedPrice(a.GetId(), s.addr(6), a.GetStartPrice(), parseCoin("20_000_000denom1"), true) + + mInfo, err := s.keeper.CalculateFixedPriceAllocation(s.ctx, a) + s.Require().NoError(err) + fmt.Println(s.fullString(a.GetId(), mInfo)) + + // Output: + // [Bids] + // +--------------------bidder---------------------+-id-+---------price---------+---------type---------+-----reserve-amount-----+-------bid-amount-------+ + // | cosmos1qgqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqggwm7m | 1 | 0.500000000000000000 | BID_TYPE_FIXED_PRICE | 15000000 | 30000000 | + // | cosmos1qsqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqv4uhu3 | 2 | 0.500000000000000000 | BID_TYPE_FIXED_PRICE | 20000000 | 40000000 | + // | cosmos1pqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqvzjng6 | 3 | 0.500000000000000000 | BID_TYPE_FIXED_PRICE | 5000000 | 10000000 | + // | cosmos1psqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqn5wmnk | 4 | 0.500000000000000000 | BID_TYPE_FIXED_PRICE | 10000000 | 20000000 | + // +-----------------------------------------------+----+-----------------------+----------------------+------------------------+------------------------+ + + // [Allocation] + // +--------------------bidder---------------------+------allocated-amount------+ + // | cosmos1qgqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqggwm7m | 30000000 | + // | cosmos1qsqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqv4uhu3 | 40000000 | + // | cosmos1pqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqvzjng6 | 10000000 | + // | cosmos1psqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqn5wmnk | 20000000 | + // +-----------------------------------------------+----------------------------+ + + // [MatchingInfo] + // +-matched-len-+------matched-price------+------total-matched-amount------+ + // | 4 | 0.500000000000000000 | 100000000 | + // +-------------+-------------------------+--------------------------------+ +} + +func (s *KeeperTestSuite) TestBatchAuction_Many() { + auction := s.createBatchAuction( + s.addr(0), + parseDec("1"), + parseDec("0.1"), + parseCoin("1_000_000_000denom1"), + "denom2", + []types.VestingSchedule{}, + 1, + math.LegacyMustNewDecFromStr("0.2"), + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 2, 0), + true, + ) + s.Require().Equal(types.AuctionStatusStarted, auction.GetStatus()) + + s.placeBidBatchMany(auction.Id, s.addr(1), parseDec("1"), parseCoin("500_000_000denom1"), math.NewInt(1_000_000_000), true) + s.placeBidBatchMany(auction.Id, s.addr(2), parseDec("0.9"), parseCoin("500_000_000denom1"), math.NewInt(1_000_000_000), true) + s.placeBidBatchMany(auction.Id, s.addr(3), parseDec("0.8"), parseCoin("500_000_000denom1"), math.NewInt(1_000_000_000), true) + + a, err := s.keeper.Auction.Get(s.ctx, auction.Id) + s.Require().NoError(err) + + mInfo, err := s.keeper.CalculateBatchAllocation(s.ctx, a) + s.Require().NoError(err) + + s.Require().Equal(mInfo.MatchedLen, int64(2)) + s.Require().Equal(mInfo.MatchedPrice, parseDec("0.9")) + s.Require().Equal(mInfo.TotalMatchedAmount, math.NewInt(1_000_000_000)) + s.Require().Equal(mInfo.AllocationMap[s.addr(1).String()], math.NewInt(500_000_000)) + s.Require().Equal(mInfo.AllocationMap[s.addr(2).String()], math.NewInt(500_000_000)) + s.Require().Equal(mInfo.AllocationMap[s.addr(3).String()], math.NewInt(0)) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(1).String()], math.NewInt(450_000_000)) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(2).String()], math.NewInt(450_000_000)) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(3).String()], math.NewInt(0)) + s.Require().Equal(mInfo.RefundMap[s.addr(1).String()], math.NewInt(50_000_000)) + s.Require().Equal(mInfo.RefundMap[s.addr(3).String()], math.NewInt(400_000_000)) + s.Require().True(mInfo.RefundMap[s.addr(2).String()].Equal(math.NewInt(0))) + + err = s.keeper.AllocateSellingCoin(s.ctx, auction, mInfo) + s.Require().NoError(err) + + sellingReserveAmt := s.getBalance(auction.GetSellingReserveAddress(), auction.SellingCoin.Denom).Amount + remainingAmt := auction.GetSellingCoin().Amount.Sub(mInfo.TotalMatchedAmount) + s.Require().True(sellingReserveAmt.Equal(remainingAmt)) + + err = s.keeper.RefundRemainingSellingCoin(s.ctx, auction) + s.Require().NoError(err) + s.Require().True(s.getBalance(auction.GetSellingReserveAddress(), auction.SellingCoin.Denom).IsZero()) + + // The auctioneer must have sellingCoin.Amount - TotalMatchedAmount + s.Require().Equal(s.getBalance(s.addr(0), auction.GetSellingCoin().Denom).Amount, math.NewInt(0)) + + // The bidders must have the matched selling coin + s.Require().Equal(s.getBalance(s.addr(1), auction.GetSellingCoin().Denom).Amount, math.NewInt(500_000_000)) + s.Require().Equal(s.getBalance(s.addr(2), auction.GetSellingCoin().Denom).Amount, math.NewInt(500_000_000)) + s.Require().Equal(s.getBalance(s.addr(3), auction.GetSellingCoin().Denom).Amount, math.NewInt(0)) + + // s.Require().True(s.getBalance(s.addr(3), auction.GetSellingCoin().Denom).IsZero()) + + // Refund payingCoin + err = s.keeper.RefundPayingCoin(s.ctx, auction, mInfo) + s.Require().NoError(err) +} + +func (s *KeeperTestSuite) TestBatchAuction_Worth() { + auction := s.createBatchAuction( + s.addr(0), + parseDec("1"), + parseDec("0.1"), + parseCoin("1_500_000_000denom1"), + "denom2", + []types.VestingSchedule{}, + 1, + math.LegacyMustNewDecFromStr("0.2"), + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 2, 0), + true, + ) + s.Require().Equal(types.AuctionStatusStarted, auction.GetStatus()) + + s.placeBidBatchWorth(auction.Id, s.addr(1), parseDec("1"), parseCoin("500_000_000denom2"), math.NewInt(1500_000_000), true) + s.placeBidBatchWorth(auction.Id, s.addr(2), parseDec("0.9"), parseCoin("500_000_000denom2"), math.NewInt(1500_000_000), true) + s.placeBidBatchWorth(auction.Id, s.addr(3), parseDec("0.8"), parseCoin("500_000_000denom2"), math.NewInt(1500_000_000), true) + + a, err := s.keeper.Auction.Get(s.ctx, auction.Id) + s.Require().NoError(err) + + mInfo, err := s.keeper.CalculateBatchAllocation(s.ctx, a) + s.Require().NoError(err) + + // Checking + s.Require().Equal(int64(2), mInfo.MatchedLen) + s.Require().Equal(parseDec("0.9"), mInfo.MatchedPrice) + matchingPrice := parseDec("0.9") + matchedAmt := math.LegacyNewDec(500_000_000).QuoTruncate(matchingPrice).TruncateInt() + + s.Require().Equal(mInfo.TotalMatchedAmount, matchedAmt.Add(matchedAmt)) + s.Require().Equal(mInfo.AllocationMap[s.addr(1).String()], matchedAmt) + s.Require().Equal(mInfo.AllocationMap[s.addr(2).String()], matchedAmt) + s.Require().Equal(mInfo.AllocationMap[s.addr(3).String()], math.NewInt(0)) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(1).String()], math.NewInt(500_000_000)) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(2).String()], math.NewInt(500_000_000)) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(3).String()], math.NewInt(0)) + s.Require().True(mInfo.RefundMap[s.addr(1).String()].IsZero()) + s.Require().True(mInfo.RefundMap[s.addr(2).String()].IsZero()) + s.Require().Equal(mInfo.RefundMap[s.addr(3).String()], math.NewInt(500_000_000)) + + // Distribute selling coin + err = s.keeper.AllocateSellingCoin(s.ctx, auction, mInfo) + s.Require().NoError(err) + + err = s.keeper.RefundRemainingSellingCoin(s.ctx, auction) + s.Require().NoError(err) + + // The selling reserve account balance must be zero + s.Require().True(s.getBalance(auction.GetSellingReserveAddress(), auction.SellingCoin.Denom).IsZero()) + + // The auctioneer must have sellingCoin.Amount - TotalMatchedAmount + s.Require().True( + s.getBalance(s.addr(0), auction.GetSellingCoin().Denom).Amount. + Equal(auction.SellingCoin.Amount.Sub(mInfo.TotalMatchedAmount)), + ) + + // The bidders must have the matched selling coin + s.Require().Equal(s.getBalance(s.addr(1), auction.GetSellingCoin().Denom).Amount, matchedAmt) + s.Require().Equal(s.getBalance(s.addr(2), auction.GetSellingCoin().Denom).Amount, matchedAmt) + s.Require().True(s.getBalance(s.addr(3), auction.GetSellingCoin().Denom).IsZero()) + + // Refund payingCoin + err = s.keeper.RefundPayingCoin(s.ctx, auction, mInfo) + s.Require().NoError(err) +} + +func (s *KeeperTestSuite) TestCalculateAllocation_Mixed() { + auction := s.createBatchAuction( + s.addr(0), + parseDec("1"), + parseDec("0.1"), + parseCoin("1700_000_000denom1"), + "denom2", + []types.VestingSchedule{}, + 1, + math.LegacyMustNewDecFromStr("0.2"), + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 2, 0), + true, + ) + s.Require().Equal(types.AuctionStatusStarted, auction.GetStatus()) + + s.placeBidBatchMany(auction.Id, s.addr(1), parseDec("1"), parseCoin("500_000_000denom1"), math.NewInt(1500_000_000), true) + s.placeBidBatchWorth(auction.Id, s.addr(2), parseDec("0.9"), parseCoin("500_000_000denom2"), math.NewInt(1500_000_000), true) + s.placeBidBatchWorth(auction.Id, s.addr(3), parseDec("0.8"), parseCoin("500_000_000denom2"), math.NewInt(1500_000_000), true) + + a, err := s.keeper.Auction.Get(s.ctx, auction.Id) + s.Require().NoError(err) + + mInfo, err := s.keeper.CalculateBatchAllocation(s.ctx, a) + s.Require().NoError(err) + + // Checking + s.Require().Equal(mInfo.MatchedLen, int64(2)) + s.Require().Equal(mInfo.MatchedPrice, parseDec("0.9")) + matchingPrice := parseDec("0.9") + matchedAmt1 := math.NewInt(500_000_000) + matchedAmt2 := math.LegacyNewDec(500_000_000).QuoTruncate(matchingPrice).TruncateInt() + + s.Require().Equal(mInfo.TotalMatchedAmount, math.NewInt(500_000_000).Add(matchedAmt2)) + s.Require().Equal(mInfo.AllocationMap[s.addr(1).String()], matchedAmt1) + s.Require().Equal(mInfo.AllocationMap[s.addr(2).String()], matchedAmt2) + s.Require().Equal(mInfo.AllocationMap[s.addr(3).String()], math.NewInt(0)) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(1).String()], math.NewInt(450_000_000)) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(2).String()], math.NewInt(500_000_000)) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(3).String()], math.NewInt(0)) + s.Require().Equal(mInfo.RefundMap[s.addr(1).String()], math.NewInt(50_000_000)) + s.Require().Equal(mInfo.RefundMap[s.addr(3).String()], math.NewInt(500_000_000)) + s.Require().True(mInfo.RefundMap[s.addr(2).String()].IsZero()) + + // Distribute selling coin + err = s.keeper.AllocateSellingCoin(s.ctx, auction, mInfo) + s.Require().NoError(err) + + err = s.keeper.RefundRemainingSellingCoin(s.ctx, auction) + s.Require().NoError(err) + + // The selling reserve account balance must be zero + s.Require().True(s.getBalance(auction.GetSellingReserveAddress(), auction.SellingCoin.Denom).IsZero()) + + // The auctioneer must have sellingCoin.Amount - TotalMatchedAmount + s.Require().True( + s.getBalance(s.addr(0), auction.GetSellingCoin().Denom).Amount. + Equal(auction.SellingCoin.Amount.Sub(mInfo.TotalMatchedAmount)), + ) + + // The bidders must have the matched selling coin + s.Require().Equal(s.getBalance(s.addr(1), auction.GetSellingCoin().Denom).Amount, matchedAmt1) + s.Require().Equal(s.getBalance(s.addr(2), auction.GetSellingCoin().Denom).Amount, matchedAmt2) + s.Require().True(s.getBalance(s.addr(3), auction.GetSellingCoin().Denom).IsZero()) + + // Refund payingCoin + err = s.keeper.RefundPayingCoin(s.ctx, auction, mInfo) + s.Require().NoError(err) +} + +func (s *KeeperTestSuite) TestCalculateAllocation_Many_Limited() { + auction := s.createBatchAuction( + s.addr(0), + parseDec("1"), + parseDec("0.1"), + parseCoin("1000_000_000denom1"), + "denom2", + []types.VestingSchedule{}, + 1, + math.LegacyMustNewDecFromStr("0.2"), + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 2, 0), + true, + ) + s.Require().Equal(types.AuctionStatusStarted, auction.GetStatus()) + + s.placeBidBatchMany(auction.Id, s.addr(1), parseDec("1"), parseCoin("400_000_000denom1"), math.NewInt(400_000_000), true) + s.placeBidBatchMany(auction.Id, s.addr(2), parseDec("0.9"), parseCoin("400_000_000denom1"), math.NewInt(400_000_000), true) + s.placeBidBatchMany(auction.Id, s.addr(3), parseDec("0.8"), parseCoin("400_000_000denom1"), math.NewInt(400_000_000), true) + + a, err := s.keeper.Auction.Get(s.ctx, auction.Id) + s.Require().NoError(err) + + mInfo, err := s.keeper.CalculateBatchAllocation(s.ctx, a) + s.Require().NoError(err) + + // Checking + s.Require().Equal(mInfo.MatchedLen, int64(2)) + s.Require().Equal(mInfo.MatchedPrice, parseDec("0.9")) + s.Require().Equal(mInfo.TotalMatchedAmount, math.NewInt(800_000_000)) + s.Require().Equal(mInfo.AllocationMap[s.addr(1).String()], math.NewInt(400_000_000)) + s.Require().Equal(mInfo.AllocationMap[s.addr(2).String()], math.NewInt(400_000_000)) + s.Require().Equal(mInfo.AllocationMap[s.addr(3).String()], math.NewInt(0)) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(1).String()], math.NewInt(360_000_000)) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(2).String()], math.NewInt(360_000_000)) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(3).String()], math.NewInt(0)) + s.Require().Equal(mInfo.RefundMap[s.addr(1).String()], math.NewInt(40_000_000)) + s.Require().True(mInfo.RefundMap[s.addr(2).String()].IsZero()) + s.Require().Equal(mInfo.RefundMap[s.addr(3).String()], math.NewInt(320_000_000)) + + // Distribute selling coin + err = s.keeper.AllocateSellingCoin(s.ctx, auction, mInfo) + s.Require().NoError(err) + + err = s.keeper.RefundRemainingSellingCoin(s.ctx, auction) + s.Require().NoError(err) + + // The selling reserve account balance must be zero + s.Require().True(s.getBalance(auction.GetSellingReserveAddress(), auction.SellingCoin.Denom).IsZero()) + + // The auctioneer must have sellingCoin.Amount - TotalMatchedAmount + s.Require().Equal(s.getBalance(s.addr(0), auction.GetSellingCoin().Denom).Amount, math.NewInt(200_000_000)) + + // The bidders must have the matched selling coin + s.Require().Equal(s.getBalance(s.addr(1), auction.GetSellingCoin().Denom).Amount, math.NewInt(400_000_000)) + s.Require().Equal(s.getBalance(s.addr(2), auction.GetSellingCoin().Denom).Amount, math.NewInt(400_000_000)) + s.Require().True(s.getBalance(s.addr(3), auction.GetSellingCoin().Denom).IsZero()) + + // Refund payingCoin + err = s.keeper.RefundPayingCoin(s.ctx, auction, mInfo) + s.Require().NoError(err) +} + +func (s *KeeperTestSuite) TestCalculateAllocation_Worth_Limited() { + auction := s.createBatchAuction( + s.addr(0), + parseDec("1"), + parseDec("0.1"), + parseCoin("1500_000_000denom1"), + "denom2", + []types.VestingSchedule{}, + 1, + math.LegacyMustNewDecFromStr("0.2"), + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 2, 0), + true, + ) + s.Require().Equal(types.AuctionStatusStarted, auction.GetStatus()) + + s.placeBidBatchWorth(auction.Id, s.addr(1), parseDec("1"), parseCoin("400_000_000denom2"), math.NewInt(400_000_000), true) + s.placeBidBatchWorth(auction.Id, s.addr(2), parseDec("0.9"), parseCoin("360_000_000denom2"), math.NewInt(400_000_000), true) + s.placeBidBatchWorth(auction.Id, s.addr(3), parseDec("0.8"), parseCoin("320_000_000denom2"), math.NewInt(400_000_000), true) + + a, err := s.keeper.Auction.Get(s.ctx, auction.Id) + s.Require().NoError(err) + + mInfo, err := s.keeper.CalculateBatchAllocation(s.ctx, a) + s.Require().NoError(err) + + // Checking + s.Require().Equal(mInfo.MatchedLen, int64(3)) + s.Require().Equal(mInfo.MatchedPrice, parseDec("0.8")) + s.Require().Equal(mInfo.TotalMatchedAmount, math.NewInt(1200_000_000)) + s.Require().Equal(mInfo.AllocationMap[s.addr(1).String()], math.NewInt(400_000_000)) + s.Require().Equal(mInfo.AllocationMap[s.addr(2).String()], math.NewInt(400_000_000)) + s.Require().Equal(mInfo.AllocationMap[s.addr(3).String()], math.NewInt(400_000_000)) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(1).String()], math.NewInt(320_000_000)) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(2).String()], math.NewInt(320_000_000)) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(3).String()], math.NewInt(320_000_000)) + s.Require().Equal(mInfo.RefundMap[s.addr(1).String()], math.NewInt(80_000_000)) + s.Require().Equal(mInfo.RefundMap[s.addr(2).String()], math.NewInt(40_000_000)) + s.Require().True(mInfo.RefundMap[s.addr(3).String()].IsZero()) + + // Distribute selling coin + err = s.keeper.AllocateSellingCoin(s.ctx, auction, mInfo) + s.Require().NoError(err) + + err = s.keeper.RefundRemainingSellingCoin(s.ctx, auction) + s.Require().NoError(err) + + // The selling reserve account balance must be zero + s.Require().True(s.getBalance(auction.GetSellingReserveAddress(), auction.SellingCoin.Denom).IsZero()) + + // The auctioneer must have sellingCoin.Amount - TotalMatchedAmount + s.Require().Equal(s.getBalance(s.addr(0), auction.GetSellingCoin().Denom).Amount, math.NewInt(300_000_000)) + + // The bidders must have the matched selling coin + s.Require().Equal(s.getBalance(s.addr(1), auction.GetSellingCoin().Denom).Amount, math.NewInt(400_000_000)) + s.Require().Equal(s.getBalance(s.addr(2), auction.GetSellingCoin().Denom).Amount, math.NewInt(400_000_000)) + s.Require().Equal(s.getBalance(s.addr(3), auction.GetSellingCoin().Denom).Amount, math.NewInt(400_000_000)) + + // Refund payingCoin + err = s.keeper.RefundPayingCoin(s.ctx, auction, mInfo) + s.Require().NoError(err) +} + +func (s *KeeperTestSuite) TestCalculateAllocation_Mixed_Limited() { + auction := s.createBatchAuction( + s.addr(0), + parseDec("1"), + parseDec("0.1"), + parseCoin("1700_000_000denom1"), + "denom2", + []types.VestingSchedule{}, + 1, + math.LegacyMustNewDecFromStr("0.2"), + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 2, 0), + true, + ) + s.Require().Equal(types.AuctionStatusStarted, auction.GetStatus()) + + s.placeBidBatchMany(auction.Id, s.addr(1), parseDec("1"), parseCoin("500_000_000denom1"), math.NewInt(600_000_000), true) + s.placeBidBatchWorth(auction.Id, s.addr(2), parseDec("0.9"), parseCoin("500_000_000denom2"), math.NewInt(600_000_000), true) + s.placeBidBatchWorth(auction.Id, s.addr(3), parseDec("0.8"), parseCoin("450_000_000denom2"), math.NewInt(600_000_000), true) + + a, err := s.keeper.Auction.Get(s.ctx, auction.Id) + s.Require().NoError(err) + + mInfo, err := s.keeper.CalculateBatchAllocation(s.ctx, a) + s.Require().NoError(err) + + // Checking + s.Require().Equal(mInfo.MatchedLen, int64(3)) + s.Require().Equal(mInfo.MatchedPrice, parseDec("0.8")) + s.Require().Equal(mInfo.TotalMatchedAmount, math.NewInt(1662_500_000)) + s.Require().Equal(mInfo.AllocationMap[s.addr(1).String()], math.NewInt(500_000_000)) + s.Require().Equal(mInfo.AllocationMap[s.addr(2).String()], math.NewInt(600_000_000)) + s.Require().Equal(mInfo.AllocationMap[s.addr(3).String()], math.NewInt(562_500_000)) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(1).String()], math.NewInt(400_000_000)) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(2).String()], math.NewInt(480_000_000)) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(3).String()], math.NewInt(450_000_000)) + s.Require().Equal(mInfo.RefundMap[s.addr(1).String()], math.NewInt(100_000_000)) + s.Require().Equal(mInfo.RefundMap[s.addr(2).String()], math.NewInt(20_000_000)) + s.Require().True(mInfo.RefundMap[s.addr(3).String()].IsZero()) + + // Distribute selling coin + err = s.keeper.AllocateSellingCoin(s.ctx, auction, mInfo) + s.Require().NoError(err) + + err = s.keeper.RefundRemainingSellingCoin(s.ctx, auction) + s.Require().NoError(err) + + // The selling reserve account balance must be zero + s.Require().True(s.getBalance(auction.GetSellingReserveAddress(), auction.SellingCoin.Denom).IsZero()) + + // The auctioneer must have sellingCoin.Amount - TotalMatchedAmount + s.Require().True( + s.getBalance(s.addr(0), auction.GetSellingCoin().Denom).Amount. + Equal(math.NewInt(37_500_000)), + ) + + // The bidders must have the matched selling coin + s.Require().Equal(s.getBalance(s.addr(1), auction.GetSellingCoin().Denom).Amount, math.NewInt(500_000_000)) + s.Require().Equal(s.getBalance(s.addr(2), auction.GetSellingCoin().Denom).Amount, math.NewInt(600_000_000)) + s.Require().Equal(s.getBalance(s.addr(3), auction.GetSellingCoin().Denom).Amount, math.NewInt(562_500_000)) + + // Refund payingCoin + err = s.keeper.RefundPayingCoin(s.ctx, auction, mInfo) + s.Require().NoError(err) +} + +func (s *KeeperTestSuite) TestCalculateAllocation_Mixed2() { + auction := s.createBatchAuction( + s.addr(0), + parseDec("1"), + parseDec("0.1"), + parseCoin("5000_000_000denom1"), + "denom2", + []types.VestingSchedule{}, + 1, + math.LegacyMustNewDecFromStr("0.2"), + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 2, 0), + true, + ) + s.Require().Equal(types.AuctionStatusStarted, auction.GetStatus()) + + s.placeBidBatchMany(auction.Id, s.addr(1), parseDec("1"), parseCoin("200_000_000denom1"), math.NewInt(5000_000_000), true) + s.placeBidBatchWorth(auction.Id, s.addr(2), parseDec("0.8"), parseCoin("500_000_000denom2"), math.NewInt(5000_000_000), true) + s.placeBidBatchMany(auction.Id, s.addr(3), parseDec("0.9"), parseCoin("500_000_000denom1"), math.NewInt(5000_000_000), true) + s.placeBidBatchWorth(auction.Id, s.addr(1), parseDec("1.1"), parseCoin("300_000_000denom2"), math.NewInt(0), true) + s.placeBidBatchMany(auction.Id, s.addr(5), parseDec("1.2"), parseCoin("300_000_000denom1"), math.NewInt(5000_000_000), true) + s.placeBidBatchMany(auction.Id, s.addr(4), parseDec("0.8"), parseCoin("100_000_000denom1"), math.NewInt(5000_000_000), true) + s.placeBidBatchMany(auction.Id, s.addr(2), parseDec("0.7"), parseCoin("100_000_000denom1"), math.NewInt(0), true) + s.placeBidBatchMany(auction.Id, s.addr(6), parseDec("0.5"), parseCoin("100_000_000denom1"), math.NewInt(5000_000_000), true) + s.placeBidBatchWorth(auction.Id, s.addr(3), parseDec("0.8"), parseCoin("300_000_000denom2"), math.NewInt(0), true) + s.placeBidBatchWorth(auction.Id, s.addr(7), parseDec("0.6"), parseCoin("500_000_000denom2"), math.NewInt(5000_000_000), true) + s.placeBidBatchMany(auction.Id, s.addr(8), parseDec("0.8"), parseCoin("500_000_000denom1"), math.NewInt(5000_000_000), true) + s.placeBidBatchMany(auction.Id, s.addr(9), parseDec("0.6"), parseCoin("600_000_000denom1"), math.NewInt(5000_000_000), true) + s.placeBidBatchWorth(auction.Id, s.addr(6), parseDec("0.5"), parseCoin("500_000_000denom2"), math.NewInt(0), true) + s.placeBidBatchMany(auction.Id, s.addr(10), parseDec("0.6"), parseCoin("100_000_000denom1"), math.NewInt(5000_000_000), true) + s.placeBidBatchWorth(auction.Id, s.addr(3), parseDec("0.7"), parseCoin("800_000_000denom2"), math.NewInt(0), true) + + a, err := s.keeper.Auction.Get(s.ctx, auction.Id) + s.Require().NoError(err) + + mInfo, err := s.keeper.CalculateBatchAllocation(s.ctx, a) + s.Require().NoError(err) + + // Checking + s.Require().Equal(mInfo.MatchedLen, int64(10)) + matchingPrice := parseDec("0.7") + s.Require().Equal(mInfo.MatchedPrice, matchingPrice) + + matchedAmt1 := math.LegacyNewDec(300_000_000).QuoTruncate(matchingPrice).TruncateInt().Add(math.NewInt(200_000_000)) + matchedAmt2 := math.LegacyNewDec(500_000_000).QuoTruncate(matchingPrice).TruncateInt().Add(math.NewInt(100_000_000)) + tMatchedAmt3 := math.LegacyNewDec(300_000_000).QuoTruncate(matchingPrice).TruncateInt().Add(math.NewInt(500_000_000)) + matchedAmt3 := tMatchedAmt3.Add(math.LegacyNewDec(800_000_000).QuoTruncate(matchingPrice).TruncateInt()) + matchedAmt4 := math.NewInt(100_000_000) + matchedAmt5 := math.NewInt(300_000_000) + matchedAmt8 := math.NewInt(500_000_000) + matchedAmt_Zero := math.NewInt(0) + totalMatchedAmt := matchedAmt1.Add(matchedAmt2).Add(matchedAmt3).Add(matchedAmt4).Add(matchedAmt5).Add(matchedAmt8) + + s.Require().Equal(mInfo.TotalMatchedAmount, totalMatchedAmt) + s.Require().Equal(mInfo.AllocationMap[s.addr(1).String()], matchedAmt1) + s.Require().Equal(mInfo.AllocationMap[s.addr(2).String()], matchedAmt2) + s.Require().Equal(mInfo.AllocationMap[s.addr(3).String()], matchedAmt3) + s.Require().Equal(mInfo.AllocationMap[s.addr(4).String()], matchedAmt4) + s.Require().Equal(mInfo.AllocationMap[s.addr(5).String()], matchedAmt5) + s.Require().Equal(mInfo.AllocationMap[s.addr(6).String()], matchedAmt_Zero) + s.Require().Equal(mInfo.AllocationMap[s.addr(7).String()], matchedAmt_Zero) + s.Require().Equal(mInfo.AllocationMap[s.addr(8).String()], matchedAmt8) + s.Require().Equal(mInfo.AllocationMap[s.addr(9).String()], matchedAmt_Zero) + s.Require().Equal(mInfo.AllocationMap[s.addr(10).String()], matchedAmt_Zero) + + reservedmatchedAmt1 := math.LegacyNewDec(200_000_000).Mul(matchingPrice).Ceil().TruncateInt().Add(math.NewInt(300_000_000)) + reservedMatchedAmt2 := math.LegacyNewDec(100_000_000).Mul(matchingPrice).Ceil().TruncateInt().Add(math.NewInt(500_000_000)) + reservedMatchedAmt3 := math.LegacyNewDec(500_000_000).Mul(matchingPrice).Ceil().TruncateInt().Add(math.NewInt(1100_000_000)) + reservedMatchedAmt4 := math.LegacyNewDec(100_000_000).Mul(matchingPrice).Ceil().TruncateInt() + reservedMatchedAmt5 := math.LegacyNewDec(300_000_000).Mul(matchingPrice).Ceil().TruncateInt() + reservedMatchedAmt8 := math.LegacyNewDec(500_000_000).Mul(matchingPrice).Ceil().TruncateInt() + reservedMatchedAmt_Zero := math.NewInt(0) + + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(1).String()], reservedmatchedAmt1) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(2).String()], reservedMatchedAmt2) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(3).String()], reservedMatchedAmt3) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(4).String()], reservedMatchedAmt4) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(5).String()], reservedMatchedAmt5) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(6).String()], reservedMatchedAmt_Zero) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(7).String()], reservedMatchedAmt_Zero) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(8).String()], reservedMatchedAmt8) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(9).String()], reservedMatchedAmt_Zero) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(10).String()], reservedMatchedAmt_Zero) + + refundAmt1 := math.NewInt(60_000_000) + refundAmt2 := math.NewInt(0) + refundAmt3 := math.NewInt(100_000_000) + refundAmt4 := math.NewInt(10_000_000) + refundAmt5 := math.NewInt(150_000_000) + refundAmt6 := math.NewInt(550_000_000) + refundAmt7 := math.NewInt(500_000_000) + refundAmt8 := math.NewInt(50_000_000) + refundAmt9 := math.NewInt(360_000_000) + refundAmt10 := math.NewInt(60_000_000) + + s.Require().True(mInfo.RefundMap[s.addr(1).String()].Equal(refundAmt1)) + s.Require().True(mInfo.RefundMap[s.addr(2).String()].Equal(refundAmt2)) + s.Require().True(mInfo.RefundMap[s.addr(3).String()].Equal(refundAmt3)) + s.Require().True(mInfo.RefundMap[s.addr(4).String()].Equal(refundAmt4)) + s.Require().True(mInfo.RefundMap[s.addr(5).String()].Equal(refundAmt5)) + s.Require().True(mInfo.RefundMap[s.addr(6).String()].Equal(refundAmt6)) + s.Require().True(mInfo.RefundMap[s.addr(7).String()].Equal(refundAmt7)) + s.Require().True(mInfo.RefundMap[s.addr(8).String()].Equal(refundAmt8)) + s.Require().True(mInfo.RefundMap[s.addr(9).String()].Equal(refundAmt9)) + s.Require().True(mInfo.RefundMap[s.addr(10).String()].Equal(refundAmt10)) + + // Distribute selling coin + err = s.keeper.AllocateSellingCoin(s.ctx, auction, mInfo) + s.Require().NoError(err) + + err = s.keeper.RefundRemainingSellingCoin(s.ctx, auction) + s.Require().NoError(err) + + // The selling reserve account balance must be zero + s.Require().True(s.getBalance(auction.GetSellingReserveAddress(), auction.SellingCoin.Denom).IsZero()) + + // The auctioneer must have sellingCoin.Amount - TotalMatchedAmount + s.Require().Equal(s.getBalance(s.addr(0), auction.GetSellingCoin().Denom).Amount, auction.SellingCoin.Amount.Sub(mInfo.TotalMatchedAmount)) + + // The bidders must have the matched selling coin + s.Require().Equal(s.getBalance(s.addr(1), auction.GetSellingCoin().Denom).Amount, matchedAmt1) + s.Require().Equal(s.getBalance(s.addr(2), auction.GetSellingCoin().Denom).Amount, matchedAmt2) + s.Require().Equal(s.getBalance(s.addr(3), auction.GetSellingCoin().Denom).Amount, matchedAmt3) + s.Require().Equal(s.getBalance(s.addr(4), auction.GetSellingCoin().Denom).Amount, matchedAmt4) + s.Require().Equal(s.getBalance(s.addr(5), auction.GetSellingCoin().Denom).Amount, matchedAmt5) + s.Require().True(s.getBalance(s.addr(6), auction.GetSellingCoin().Denom).Amount.IsZero()) + s.Require().True(s.getBalance(s.addr(7), auction.GetSellingCoin().Denom).Amount.IsZero()) + s.Require().Equal(s.getBalance(s.addr(8), auction.GetSellingCoin().Denom).Amount, matchedAmt8) + s.Require().True(s.getBalance(s.addr(9), auction.GetSellingCoin().Denom).Amount.IsZero()) + s.Require().True(s.getBalance(s.addr(10), auction.GetSellingCoin().Denom).Amount.IsZero()) + + // Refund payingCoin + err = s.keeper.RefundPayingCoin(s.ctx, auction, mInfo) + s.Require().NoError(err) +} + +func (s *KeeperTestSuite) TestCalculateAllocation_Mixed2_LimitedSame() { + auction := s.createBatchAuction( + s.addr(0), + parseDec("1"), + parseDec("0.1"), + parseCoin("5000_000_000denom1"), + "denom2", + []types.VestingSchedule{}, + 1, + math.LegacyMustNewDecFromStr("0.2"), + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 2, 0), + true, + ) + s.Require().Equal(types.AuctionStatusStarted, auction.GetStatus()) + + s.placeBidBatchMany(auction.Id, s.addr(1), parseDec("1"), parseCoin("200_000_000denom1"), math.NewInt(700_000_000), true) + s.placeBidBatchWorth(auction.Id, s.addr(2), parseDec("0.8"), parseCoin("500_000_000denom2"), math.NewInt(700_000_000), true) + s.placeBidBatchMany(auction.Id, s.addr(3), parseDec("0.9"), parseCoin("500_000_000denom1"), math.NewInt(700_000_000), true) + s.placeBidBatchWorth(auction.Id, s.addr(1), parseDec("1.1"), parseCoin("300_000_000denom2"), math.NewInt(0), true) + s.placeBidBatchMany(auction.Id, s.addr(5), parseDec("1.2"), parseCoin("300_000_000denom1"), math.NewInt(700_000_000), true) + s.placeBidBatchMany(auction.Id, s.addr(4), parseDec("0.8"), parseCoin("100_000_000denom1"), math.NewInt(700_000_000), true) + s.placeBidBatchMany(auction.Id, s.addr(2), parseDec("0.7"), parseCoin("100_000_000denom1"), math.NewInt(0), true) + s.placeBidBatchMany(auction.Id, s.addr(6), parseDec("0.5"), parseCoin("100_000_000denom1"), math.NewInt(700_000_000), true) + s.placeBidBatchWorth(auction.Id, s.addr(3), parseDec("0.8"), parseCoin("300_000_000denom2"), math.NewInt(0), true) + s.placeBidBatchWorth(auction.Id, s.addr(7), parseDec("0.6"), parseCoin("400_000_000denom2"), math.NewInt(700_000_000), true) + s.placeBidBatchMany(auction.Id, s.addr(8), parseDec("0.8"), parseCoin("500_000_000denom1"), math.NewInt(700_000_000), true) + s.placeBidBatchMany(auction.Id, s.addr(9), parseDec("0.6"), parseCoin("600_000_000denom1"), math.NewInt(700_000_000), true) + s.placeBidBatchWorth(auction.Id, s.addr(6), parseDec("0.5"), parseCoin("350_000_000denom2"), math.NewInt(0), true) + s.placeBidBatchMany(auction.Id, s.addr(10), parseDec("0.6"), parseCoin("100_000_000denom1"), math.NewInt(700_000_000), true) + s.placeBidBatchWorth(auction.Id, s.addr(3), parseDec("0.7"), parseCoin("490_000_000denom2"), math.NewInt(0), true) + + a, err := s.keeper.Auction.Get(s.ctx, auction.Id) + s.Require().NoError(err) + + mInfo, err := s.keeper.CalculateBatchAllocation(s.ctx, a) + s.Require().NoError(err) + + // Checking + s.Require().Equal(int64(11), mInfo.MatchedLen) + matchingPrice := parseDec("0.6") + s.Require().Equal(mInfo.MatchedPrice, matchingPrice) + + matchedAmt1 := math.NewInt(700_000_000) + matchedAmt2 := math.NewInt(700_000_000) + matchedAmt3 := math.NewInt(700_000_000) + matchedAmt4 := math.NewInt(100_000_000) + matchedAmt5 := math.NewInt(300_000_000) + matchedAmt6 := math.NewInt(0) + matchedAmt7 := math.LegacyNewDec(400_000_000).QuoTruncate(matchingPrice).TruncateInt() + matchedAmt8 := math.NewInt(500_000_000) + matchedAmt9 := math.NewInt(600_000_000) + matchedAmt10 := math.NewInt(100_000_000) + + totalMatchedAmt := math.NewInt(3700_000_000).Add(matchedAmt7) + + s.Require().Equal(mInfo.TotalMatchedAmount, totalMatchedAmt) + s.Require().Equal(mInfo.AllocationMap[s.addr(1).String()], matchedAmt1) + s.Require().Equal(mInfo.AllocationMap[s.addr(2).String()], matchedAmt2) + s.Require().Equal(mInfo.AllocationMap[s.addr(3).String()], matchedAmt3) + s.Require().Equal(mInfo.AllocationMap[s.addr(4).String()], matchedAmt4) + s.Require().Equal(mInfo.AllocationMap[s.addr(5).String()], matchedAmt5) + s.Require().Equal(mInfo.AllocationMap[s.addr(6).String()], matchedAmt6) + s.Require().Equal(mInfo.AllocationMap[s.addr(7).String()], matchedAmt7) + s.Require().Equal(mInfo.AllocationMap[s.addr(8).String()], matchedAmt8) + s.Require().Equal(mInfo.AllocationMap[s.addr(9).String()], matchedAmt9) + s.Require().Equal(mInfo.AllocationMap[s.addr(10).String()], matchedAmt10) + + reservedMatchedAmt1 := math.NewInt(420_000_000) + reservedMatchedAmt2 := math.NewInt(420_000_000) + reservedMatchedAmt3 := math.NewInt(420_000_000) + reservedMatchedAmt4 := math.NewInt(60_000_000) + reservedMatchedAmt5 := math.NewInt(180_000_000) + reservedMatchedAmt6 := math.NewInt(0) + reservedMatchedAmt7 := math.NewInt(400_000_000) + reservedMatchedAmt8 := math.NewInt(300_000_000) + reservedMatchedAmt9 := math.NewInt(360_000_000) + reservedMatchedAmt10 := math.NewInt(60_000_000) + + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(1).String()], reservedMatchedAmt1) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(2).String()], reservedMatchedAmt2) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(3).String()], reservedMatchedAmt3) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(4).String()], reservedMatchedAmt4) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(5).String()], reservedMatchedAmt5) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(6).String()], reservedMatchedAmt6) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(7).String()], reservedMatchedAmt7) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(8).String()], reservedMatchedAmt8) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(9).String()], reservedMatchedAmt9) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(10).String()], reservedMatchedAmt10) + + refundAmt1 := math.NewInt(80_000_000) + refundAmt2 := math.NewInt(150_000_000) + refundAmt3 := math.NewInt(820_000_000) + refundAmt4 := math.NewInt(20_000_000) + refundAmt5 := math.NewInt(180_000_000) + refundAmt6 := math.NewInt(400_000_000) + refundAmt7 := math.NewInt(0) + refundAmt8 := math.NewInt(100_000_000) + refundAmt9 := math.NewInt(0) + refundAmt10 := math.NewInt(0) + + s.Require().True(mInfo.RefundMap[s.addr(1).String()].Equal(refundAmt1)) + s.Require().True(mInfo.RefundMap[s.addr(2).String()].Equal(refundAmt2)) + s.Require().True(mInfo.RefundMap[s.addr(3).String()].Equal(refundAmt3)) + s.Require().True(mInfo.RefundMap[s.addr(4).String()].Equal(refundAmt4)) + s.Require().True(mInfo.RefundMap[s.addr(5).String()].Equal(refundAmt5)) + s.Require().True(mInfo.RefundMap[s.addr(6).String()].Equal(refundAmt6)) + s.Require().True(mInfo.RefundMap[s.addr(7).String()].Equal(refundAmt7)) + s.Require().True(mInfo.RefundMap[s.addr(8).String()].Equal(refundAmt8)) + s.Require().True(mInfo.RefundMap[s.addr(9).String()].Equal(refundAmt9)) + s.Require().True(mInfo.RefundMap[s.addr(10).String()].Equal(refundAmt10)) + + // Distribute selling coin + err = s.keeper.AllocateSellingCoin(s.ctx, auction, mInfo) + s.Require().NoError(err) + + err = s.keeper.RefundRemainingSellingCoin(s.ctx, auction) + s.Require().NoError(err) + + // The selling reserve account balance must be zero + s.Require().True(s.getBalance(auction.GetSellingReserveAddress(), auction.SellingCoin.Denom).IsZero()) + + // The auctioneer must have sellingCoin.Amount - TotalMatchedAmount + s.Require().Equal(s.getBalance(s.addr(0), auction.GetSellingCoin().Denom).Amount, auction.SellingCoin.Amount.Sub(mInfo.TotalMatchedAmount)) + + // The bidders must have the matched selling coin + s.Require().Equal(s.getBalance(s.addr(1), auction.GetSellingCoin().Denom).Amount, matchedAmt1) + s.Require().Equal(s.getBalance(s.addr(2), auction.GetSellingCoin().Denom).Amount, matchedAmt2) + s.Require().Equal(s.getBalance(s.addr(3), auction.GetSellingCoin().Denom).Amount, matchedAmt3) + s.Require().Equal(s.getBalance(s.addr(4), auction.GetSellingCoin().Denom).Amount, matchedAmt4) + s.Require().Equal(s.getBalance(s.addr(5), auction.GetSellingCoin().Denom).Amount, matchedAmt5) + s.Require().True(s.getBalance(s.addr(6), auction.GetSellingCoin().Denom).Amount.Equal(matchedAmt6)) + s.Require().Equal(s.getBalance(s.addr(7), auction.GetSellingCoin().Denom).Amount, matchedAmt7) + s.Require().Equal(s.getBalance(s.addr(8), auction.GetSellingCoin().Denom).Amount, matchedAmt8) + s.Require().Equal(s.getBalance(s.addr(9), auction.GetSellingCoin().Denom).Amount, matchedAmt9) + s.Require().Equal(s.getBalance(s.addr(10), auction.GetSellingCoin().Denom).Amount, matchedAmt10) + + // Refund payingCoin + err = s.keeper.RefundPayingCoin(s.ctx, auction, mInfo) + s.Require().NoError(err) +} + +func (s *KeeperTestSuite) TestCalculateAllocation_Mixed2_LimitedDifferent() { + auction := s.createBatchAuction( + s.addr(0), + parseDec("1"), + parseDec("0.1"), + parseCoin("5000_000_000denom1"), + "denom2", + []types.VestingSchedule{}, + 1, + math.LegacyMustNewDecFromStr("0.2"), + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 2, 0), + true, + ) + s.Require().Equal(types.AuctionStatusStarted, auction.GetStatus()) + + s.placeBidBatchMany(auction.Id, s.addr(1), parseDec("1"), parseCoin("200_000_000denom1"), math.NewInt(1000_000_000), true) + s.placeBidBatchWorth(auction.Id, s.addr(2), parseDec("0.8"), parseCoin("500_000_000denom2"), math.NewInt(1000_000_000), true) + s.placeBidBatchMany(auction.Id, s.addr(3), parseDec("0.9"), parseCoin("500_000_000denom1"), math.NewInt(800_000_000), true) + s.placeBidBatchWorth(auction.Id, s.addr(1), parseDec("1.1"), parseCoin("300_000_000denom2"), math.NewInt(0), true) + s.placeBidBatchMany(auction.Id, s.addr(5), parseDec("1.2"), parseCoin("300_000_000denom1"), math.NewInt(600_000_000), true) + s.placeBidBatchMany(auction.Id, s.addr(4), parseDec("0.8"), parseCoin("100_000_000denom1"), math.NewInt(800_000_000), true) + s.placeBidBatchMany(auction.Id, s.addr(2), parseDec("0.7"), parseCoin("100_000_000denom1"), math.NewInt(0), true) + s.placeBidBatchMany(auction.Id, s.addr(6), parseDec("0.5"), parseCoin("100_000_000denom1"), math.NewInt(600_000_000), true) + s.placeBidBatchWorth(auction.Id, s.addr(3), parseDec("0.8"), parseCoin("300_000_000denom2"), math.NewInt(0), true) + s.placeBidBatchWorth(auction.Id, s.addr(7), parseDec("0.6"), parseCoin("200_000_000denom2"), math.NewInt(400_000_000), true) + s.placeBidBatchMany(auction.Id, s.addr(8), parseDec("0.8"), parseCoin("400_000_000denom1"), math.NewInt(400_000_000), true) + s.placeBidBatchMany(auction.Id, s.addr(9), parseDec("0.6"), parseCoin("200_000_000denom1"), math.NewInt(200_000_000), true) + s.placeBidBatchWorth(auction.Id, s.addr(6), parseDec("0.5"), parseCoin("300_000_000denom2"), math.NewInt(0), true) + s.placeBidBatchMany(auction.Id, s.addr(10), parseDec("0.6"), parseCoin("100_000_000denom1"), math.NewInt(200_000_000), true) + s.placeBidBatchWorth(auction.Id, s.addr(3), parseDec("0.7"), parseCoin("560_000_000denom2"), math.NewInt(0), true) + + a, err := s.keeper.Auction.Get(s.ctx, auction.Id) + s.Require().NoError(err) + + mInfo, err := s.keeper.CalculateBatchAllocation(s.ctx, a) + s.Require().NoError(err) + + // Checking + s.Require().Equal(int64(13), mInfo.MatchedLen) + matchingPrice := parseDec("0.5") + s.Require().Equal(mInfo.MatchedPrice, matchingPrice) + + matchedAmt1 := math.NewInt(800_000_000) + matchedAmt2 := math.NewInt(1000_000_000) + matchedAmt3 := math.NewInt(800_000_000) + matchedAmt4 := math.NewInt(100_000_000) + matchedAmt5 := math.NewInt(300_000_000) + matchedAmt6 := math.NewInt(600_000_000) + matchedAmt7 := math.NewInt(400_000_000) + matchedAmt8 := math.NewInt(400_000_000) + matchedAmt9 := math.NewInt(200_000_000) + matchedAmt10 := math.NewInt(100_000_000) + + totalMatchedAmt := math.NewInt(4700_000_000) + + s.Require().Equal(mInfo.TotalMatchedAmount, totalMatchedAmt) + s.Require().Equal(mInfo.AllocationMap[s.addr(1).String()], matchedAmt1) + s.Require().Equal(mInfo.AllocationMap[s.addr(2).String()], matchedAmt2) + s.Require().Equal(mInfo.AllocationMap[s.addr(3).String()], matchedAmt3) + s.Require().Equal(mInfo.AllocationMap[s.addr(4).String()], matchedAmt4) + s.Require().Equal(mInfo.AllocationMap[s.addr(5).String()], matchedAmt5) + s.Require().Equal(mInfo.AllocationMap[s.addr(6).String()], matchedAmt6) + s.Require().Equal(mInfo.AllocationMap[s.addr(7).String()], matchedAmt7) + s.Require().Equal(mInfo.AllocationMap[s.addr(8).String()], matchedAmt8) + s.Require().Equal(mInfo.AllocationMap[s.addr(9).String()], matchedAmt9) + s.Require().Equal(mInfo.AllocationMap[s.addr(10).String()], matchedAmt10) + + reservedMatchedAmt1 := math.NewInt(400_000_000) + reservedMatchedAmt2 := math.NewInt(500_000_000) + reservedMatchedAmt3 := math.NewInt(400_000_000) + reservedMatchedAmt4 := math.NewInt(50_000_000) + reservedMatchedAmt5 := math.NewInt(150_000_000) + reservedMatchedAmt6 := math.NewInt(300_000_000) + reservedMatchedAmt7 := math.NewInt(200_000_000) + reservedMatchedAmt8 := math.NewInt(200_000_000) + reservedMatchedAmt9 := math.NewInt(100_000_000) + reservedMatchedAmt10 := math.NewInt(50_000_000) + + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(1).String()], reservedMatchedAmt1) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(2).String()], reservedMatchedAmt2) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(3).String()], reservedMatchedAmt3) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(4).String()], reservedMatchedAmt4) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(5).String()], reservedMatchedAmt5) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(6).String()], reservedMatchedAmt6) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(7).String()], reservedMatchedAmt7) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(8).String()], reservedMatchedAmt8) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(9).String()], reservedMatchedAmt9) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(10).String()], reservedMatchedAmt10) + + refundAmt1 := math.NewInt(100_000_000) + refundAmt2 := math.NewInt(70_000_000) + refundAmt3 := math.NewInt(910_000_000) + refundAmt4 := math.NewInt(30_000_000) + refundAmt5 := math.NewInt(210_000_000) + refundAmt6 := math.NewInt(50_000_000) + refundAmt7 := math.NewInt(0) + refundAmt8 := math.NewInt(120_000_000) + refundAmt9 := math.NewInt(20_000_000) + refundAmt10 := math.NewInt(10_000_000) + + s.Require().True(mInfo.RefundMap[s.addr(1).String()].Equal(refundAmt1)) + s.Require().True(mInfo.RefundMap[s.addr(2).String()].Equal(refundAmt2)) + s.Require().True(mInfo.RefundMap[s.addr(3).String()].Equal(refundAmt3)) + s.Require().True(mInfo.RefundMap[s.addr(4).String()].Equal(refundAmt4)) + s.Require().True(mInfo.RefundMap[s.addr(5).String()].Equal(refundAmt5)) + s.Require().True(mInfo.RefundMap[s.addr(6).String()].Equal(refundAmt6)) + s.Require().True(mInfo.RefundMap[s.addr(7).String()].Equal(refundAmt7)) + s.Require().True(mInfo.RefundMap[s.addr(8).String()].Equal(refundAmt8)) + s.Require().True(mInfo.RefundMap[s.addr(9).String()].Equal(refundAmt9)) + s.Require().True(mInfo.RefundMap[s.addr(10).String()].Equal(refundAmt10)) + + // Distribute selling coin + err = s.keeper.AllocateSellingCoin(s.ctx, auction, mInfo) + s.Require().NoError(err) + + err = s.keeper.RefundRemainingSellingCoin(s.ctx, auction) + s.Require().NoError(err) + + // The selling reserve account balance must be zero + s.Require().True(s.getBalance(auction.GetSellingReserveAddress(), auction.SellingCoin.Denom).IsZero()) + + // The auctioneer must have sellingCoin.Amount - TotalMatchedAmount + s.Require().Equal(s.getBalance(s.addr(0), auction.GetSellingCoin().Denom).Amount, math.NewInt(300_000_000)) + + // The bidders must have the matched selling coin + s.Require().Equal(s.getBalance(s.addr(1), auction.GetSellingCoin().Denom).Amount, matchedAmt1) + s.Require().Equal(s.getBalance(s.addr(2), auction.GetSellingCoin().Denom).Amount, matchedAmt2) + s.Require().Equal(s.getBalance(s.addr(3), auction.GetSellingCoin().Denom).Amount, matchedAmt3) + s.Require().Equal(s.getBalance(s.addr(4), auction.GetSellingCoin().Denom).Amount, matchedAmt4) + s.Require().Equal(s.getBalance(s.addr(5), auction.GetSellingCoin().Denom).Amount, matchedAmt5) + s.Require().Equal(s.getBalance(s.addr(6), auction.GetSellingCoin().Denom).Amount, matchedAmt6) + s.Require().Equal(s.getBalance(s.addr(7), auction.GetSellingCoin().Denom).Amount, matchedAmt7) + s.Require().Equal(s.getBalance(s.addr(8), auction.GetSellingCoin().Denom).Amount, matchedAmt8) + s.Require().Equal(s.getBalance(s.addr(9), auction.GetSellingCoin().Denom).Amount, matchedAmt9) + s.Require().Equal(s.getBalance(s.addr(10), auction.GetSellingCoin().Denom).Amount, matchedAmt10) + + // Refund payingCoin + err = s.keeper.RefundPayingCoin(s.ctx, auction, mInfo) + s.Require().NoError(err) +} + +func (s *KeeperTestSuite) TestCalculateAllocation_Mixed3() { + auction := s.createBatchAuction( + s.addr(0), + parseDec("10"), + parseDec("0.1"), + parseCoin("2500_000_000denom1"), + "denom2", + []types.VestingSchedule{}, + 1, + math.LegacyMustNewDecFromStr("0.2"), + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 2, 0), + true, + ) + s.Require().Equal(types.AuctionStatusStarted, auction.GetStatus()) + + s.placeBidBatchMany(auction.Id, s.addr(1), parseDec("10"), parseCoin("200_000_000denom1"), math.NewInt(2500_000_000), true) + s.placeBidBatchWorth(auction.Id, s.addr(2), parseDec("11"), parseCoin("2000_000_000denom2"), math.NewInt(2500_000_000), true) + s.placeBidBatchMany(auction.Id, s.addr(3), parseDec("10.5"), parseCoin("500_000_000denom1"), math.NewInt(2500_000_000), true) + s.placeBidBatchWorth(auction.Id, s.addr(4), parseDec("10.2"), parseCoin("1500_000_000denom2"), math.NewInt(2500_000_000), true) + s.placeBidBatchMany(auction.Id, s.addr(5), parseDec("10.8"), parseCoin("300_000_000denom1"), math.NewInt(2500_000_000), true) + s.placeBidBatchWorth(auction.Id, s.addr(6), parseDec("11.4"), parseCoin("2500_000_000denom2"), math.NewInt(2500_000_000), true) + s.placeBidBatchMany(auction.Id, s.addr(7), parseDec("11.3"), parseCoin("100_000_000denom1"), math.NewInt(2500_000_000), true) + s.placeBidBatchWorth(auction.Id, s.addr(8), parseDec("9.9"), parseCoin("2500_000_000denom2"), math.NewInt(2500_000_000), true) + s.placeBidBatchMany(auction.Id, s.addr(9), parseDec("10.1"), parseCoin("300_000_000denom1"), math.NewInt(2500_000_000), true) + s.placeBidBatchWorth(auction.Id, s.addr(10), parseDec("10.45"), parseCoin("2000_000_000denom2"), math.NewInt(2500_000_000), true) + s.placeBidBatchMany(auction.Id, s.addr(11), parseDec("10.75"), parseCoin("150_000_000denom1"), math.NewInt(2500_000_000), true) + s.placeBidBatchWorth(auction.Id, s.addr(12), parseDec("10.99"), parseCoin("1500_000_000denom2"), math.NewInt(2500_000_000), true) + s.placeBidBatchMany(auction.Id, s.addr(13), parseDec("10.2"), parseCoin("200_000_000denom1"), math.NewInt(2500_000_000), true) + s.placeBidBatchWorth(auction.Id, s.addr(14), parseDec("9.87"), parseCoin("2000_000_000denom2"), math.NewInt(2500_000_000), true) + s.placeBidBatchMany(auction.Id, s.addr(15), parseDec("10.25"), parseCoin("200_000_000denom1"), math.NewInt(2500_000_000), true) + s.placeBidBatchWorth(auction.Id, s.addr(16), parseDec("10.48"), parseCoin("2500_000_000denom2"), math.NewInt(2500_000_000), true) + s.placeBidBatchMany(auction.Id, s.addr(17), parseDec("10.52"), parseCoin("180_000_000denom1"), math.NewInt(2500_000_000), true) + s.placeBidBatchMany(auction.Id, s.addr(4), parseDec("10.8"), parseCoin("220_000_000denom1"), math.NewInt(0), true) + s.placeBidBatchWorth(auction.Id, s.addr(5), parseDec("10.5"), parseCoin("1500_000_000denom2"), math.NewInt(0), true) + s.placeBidBatchMany(auction.Id, s.addr(6), parseDec("9.7"), parseCoin("250_000_000denom1"), math.NewInt(0), true) + + a, err := s.keeper.Auction.Get(s.ctx, auction.Id) + s.Require().NoError(err) + + mInfo, err := s.keeper.CalculateBatchAllocation(s.ctx, a) + s.Require().NoError(err) + + // Checking + s.Require().Equal(mInfo.MatchedLen, int64(11)) + matchingPrice := parseDec("10.48") + s.Require().Equal(mInfo.MatchedPrice, matchingPrice) + + matchedAmt1 := math.NewInt(0) + matchedAmt2 := math.LegacyNewDec(2000_000_000).QuoTruncate(matchingPrice).TruncateInt() + matchedAmt3 := math.NewInt(500_000_000) + matchedAmt4 := math.NewInt(220_000_000) + matchedAmt5 := math.LegacyNewDec(1500_000_000).QuoTruncate(matchingPrice).TruncateInt().Add(math.NewInt(300_000_000)) + matchedAmt6 := math.LegacyNewDec(2500_000_000).QuoTruncate(matchingPrice).TruncateInt() + matchedAmt7 := math.NewInt(100_000_000) + matchedAmt8 := math.NewInt(0) + matchedAmt9 := math.NewInt(0) + matchedAmt10 := math.NewInt(0) + matchedAmt11 := math.NewInt(150_000_000) + matchedAmt12 := math.LegacyNewDec(1500_000_000).QuoTruncate(matchingPrice).TruncateInt() + matchedAmt13 := math.NewInt(0) + matchedAmt14 := math.NewInt(0) + matchedAmt15 := math.NewInt(0) + matchedAmt16 := math.LegacyNewDec(2500_000_000).QuoTruncate(matchingPrice).TruncateInt() + matchedAmt17 := math.NewInt(180_000_000) + + totalMatchedAmt := matchedAmt2.Add(matchedAmt3). + Add(matchedAmt4). + Add(matchedAmt5). + Add(matchedAmt6). + Add(matchedAmt7). + Add(matchedAmt11). + Add(matchedAmt12). + Add(matchedAmt16). + Add(matchedAmt17) + + s.Require().Equal(mInfo.TotalMatchedAmount, totalMatchedAmt) + s.Require().Equal(mInfo.AllocationMap[s.addr(1).String()], matchedAmt1) + s.Require().Equal(mInfo.AllocationMap[s.addr(2).String()], matchedAmt2) + s.Require().Equal(mInfo.AllocationMap[s.addr(3).String()], matchedAmt3) + s.Require().Equal(mInfo.AllocationMap[s.addr(4).String()], matchedAmt4) + s.Require().Equal(mInfo.AllocationMap[s.addr(5).String()], matchedAmt5) + s.Require().Equal(mInfo.AllocationMap[s.addr(6).String()], matchedAmt6) + s.Require().Equal(mInfo.AllocationMap[s.addr(7).String()], matchedAmt7) + s.Require().Equal(mInfo.AllocationMap[s.addr(8).String()], matchedAmt8) + s.Require().Equal(mInfo.AllocationMap[s.addr(9).String()], matchedAmt9) + s.Require().Equal(mInfo.AllocationMap[s.addr(10).String()], matchedAmt10) + s.Require().Equal(mInfo.AllocationMap[s.addr(11).String()], matchedAmt11) + s.Require().Equal(mInfo.AllocationMap[s.addr(12).String()], matchedAmt12) + s.Require().Equal(mInfo.AllocationMap[s.addr(13).String()], matchedAmt13) + s.Require().Equal(mInfo.AllocationMap[s.addr(14).String()], matchedAmt14) + s.Require().Equal(mInfo.AllocationMap[s.addr(15).String()], matchedAmt15) + s.Require().Equal(mInfo.AllocationMap[s.addr(16).String()], matchedAmt16) + s.Require().Equal(mInfo.AllocationMap[s.addr(17).String()], matchedAmt17) + + reservedMatchedAmt1 := math.NewInt(0) + reservedMatchedAmt2 := math.NewInt(1999_999_994) + reservedMatchedAmt3 := math.LegacyNewDecFromInt(matchedAmt3).Mul(matchingPrice).Ceil().TruncateInt() + reservedMatchedAmt4 := math.LegacyNewDecFromInt(matchedAmt4).Mul(matchingPrice).Ceil().TruncateInt() + reservedMatchedAmt5 := math.LegacyNewDecFromInt(matchedAmt5).Mul(matchingPrice).Ceil().TruncateInt() + reservedMatchedAmt6 := math.NewInt(2499_999_997) + reservedMatchedAmt7 := math.LegacyNewDecFromInt(matchedAmt7).Mul(matchingPrice).Ceil().TruncateInt() + reservedMatchedAmt8 := math.NewInt(0) + reservedMatchedAmt9 := math.NewInt(0) + reservedMatchedAmt10 := math.NewInt(0) + reservedMatchedAmt11 := math.LegacyNewDecFromInt(matchedAmt11).Mul(matchingPrice).Ceil().TruncateInt() + reservedMatchedAmt12 := math.NewInt(1499_999_990) + reservedMatchedAmt13 := math.NewInt(0) + reservedMatchedAmt14 := math.NewInt(0) + reservedMatchedAmt15 := math.NewInt(0) + reservedMatchedAmt16 := math.NewInt(2499_999_997) + reservedMatchedAmt17 := math.LegacyNewDecFromInt(matchedAmt17).Mul(matchingPrice).Ceil().TruncateInt() + + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(1).String()], reservedMatchedAmt1) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(2).String()], reservedMatchedAmt2) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(3).String()], reservedMatchedAmt3) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(4).String()], reservedMatchedAmt4) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(5).String()], reservedMatchedAmt5) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(6).String()], reservedMatchedAmt6) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(7).String()], reservedMatchedAmt7) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(8).String()], reservedMatchedAmt8) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(9).String()], reservedMatchedAmt9) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(10).String()], reservedMatchedAmt10) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(11).String()], reservedMatchedAmt11) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(12).String()], reservedMatchedAmt12) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(13).String()], reservedMatchedAmt13) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(14).String()], reservedMatchedAmt14) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(15).String()], reservedMatchedAmt15) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(16).String()], reservedMatchedAmt16) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(17).String()], reservedMatchedAmt17) + + refundAmt1 := math.LegacyNewDec(200_000_000).Mul(parseDec("10")).Ceil().TruncateInt() + refundAmt2 := math.NewInt(2000_000_000).Sub(reservedMatchedAmt2) + refundAmt3 := math.LegacyNewDec(500_000_000).Mul(parseDec("10.5")).Ceil().TruncateInt().Sub(reservedMatchedAmt3) + refundAmt4 := math.LegacyNewDec(220_000_000).Mul(parseDec("10.8")).Ceil().TruncateInt().Add(math.NewInt(1500_000_000)).Sub(reservedMatchedAmt4) + refundAmt5 := math.LegacyNewDec(300_000_000).Mul(parseDec("10.8")).Ceil().TruncateInt().Add(math.NewInt(1500_000_000)).Sub(reservedMatchedAmt5) + refundAmt6 := math.LegacyNewDec(250_000_000).Mul(parseDec("9.7")).Ceil().TruncateInt().Add(math.NewInt(2500_000_000)).Sub(reservedMatchedAmt6) + refundAmt7 := math.LegacyNewDec(100_000_000).Mul(parseDec("11.3")).Ceil().TruncateInt().Sub(reservedMatchedAmt7) + refundAmt8 := math.NewInt(2500_000_000) + refundAmt9 := math.LegacyNewDec(300_000_000).Mul(parseDec("10.1")).Ceil().TruncateInt() + refundAmt10 := math.NewInt(2000_000_000) + refundAmt11 := math.LegacyNewDec(150_000_000).Mul(parseDec("10.75")).Ceil().TruncateInt().Sub(reservedMatchedAmt11) + refundAmt12 := math.NewInt(1500_000_000).Sub(reservedMatchedAmt12) + refundAmt13 := math.LegacyNewDec(200_000_000).Mul(parseDec("10.2")).Ceil().TruncateInt() + refundAmt14 := math.NewInt(2000_000_000) + refundAmt15 := math.LegacyNewDec(200_000_000).Mul(parseDec("10.25")).Ceil().TruncateInt() + refundAmt16 := math.NewInt(2500_000_000).Sub(reservedMatchedAmt16) + refundAmt17 := math.LegacyNewDec(180_000_000).Mul(parseDec("10.52")).Ceil().TruncateInt().Sub(reservedMatchedAmt17) + + s.Require().True(mInfo.RefundMap[s.addr(1).String()].Equal(refundAmt1)) + s.Require().True(mInfo.RefundMap[s.addr(2).String()].Equal(refundAmt2)) + s.Require().True(mInfo.RefundMap[s.addr(3).String()].Equal(refundAmt3)) + s.Require().True(mInfo.RefundMap[s.addr(4).String()].Equal(refundAmt4)) + s.Require().True(mInfo.RefundMap[s.addr(5).String()].Equal(refundAmt5)) + s.Require().True(mInfo.RefundMap[s.addr(6).String()].Equal(refundAmt6)) + s.Require().True(mInfo.RefundMap[s.addr(7).String()].Equal(refundAmt7)) + s.Require().True(mInfo.RefundMap[s.addr(8).String()].Equal(refundAmt8)) + s.Require().True(mInfo.RefundMap[s.addr(9).String()].Equal(refundAmt9)) + s.Require().True(mInfo.RefundMap[s.addr(10).String()].Equal(refundAmt10)) + s.Require().True(mInfo.RefundMap[s.addr(11).String()].Equal(refundAmt11)) + s.Require().True(mInfo.RefundMap[s.addr(12).String()].Equal(refundAmt12)) + s.Require().True(mInfo.RefundMap[s.addr(13).String()].Equal(refundAmt13)) + s.Require().True(mInfo.RefundMap[s.addr(14).String()].Equal(refundAmt14)) + s.Require().True(mInfo.RefundMap[s.addr(15).String()].Equal(refundAmt15)) + s.Require().True(mInfo.RefundMap[s.addr(16).String()].Equal(refundAmt16)) + s.Require().True(mInfo.RefundMap[s.addr(17).String()].Equal(refundAmt17)) + + // Distribute selling coin + err = s.keeper.AllocateSellingCoin(s.ctx, auction, mInfo) + s.Require().NoError(err) + + err = s.keeper.RefundRemainingSellingCoin(s.ctx, auction) + s.Require().NoError(err) + + // The selling reserve account balance must be zero + s.Require().True(s.getBalance(auction.GetSellingReserveAddress(), auction.SellingCoin.Denom).IsZero()) + + // The auctioneer must have sellingCoin.Amount - TotalMatchedAmount + s.Require().Equal(s.getBalance(s.addr(0), auction.GetSellingCoin().Denom).Amount, auction.SellingCoin.Amount.Sub(mInfo.TotalMatchedAmount)) + + // The bidders must have the matched selling coin + s.Require().True(s.getBalance(s.addr(1), auction.GetSellingCoin().Denom).Amount.Equal(matchedAmt1)) + s.Require().True(s.getBalance(s.addr(2), auction.GetSellingCoin().Denom).Amount.Equal(matchedAmt2)) + s.Require().True(s.getBalance(s.addr(3), auction.GetSellingCoin().Denom).Amount.Equal(matchedAmt3)) + s.Require().True(s.getBalance(s.addr(4), auction.GetSellingCoin().Denom).Amount.Equal(matchedAmt4)) + s.Require().True(s.getBalance(s.addr(5), auction.GetSellingCoin().Denom).Amount.Equal(matchedAmt5)) + s.Require().True(s.getBalance(s.addr(6), auction.GetSellingCoin().Denom).Amount.Equal(matchedAmt6)) + s.Require().True(s.getBalance(s.addr(7), auction.GetSellingCoin().Denom).Amount.Equal(matchedAmt7)) + s.Require().True(s.getBalance(s.addr(8), auction.GetSellingCoin().Denom).Amount.Equal(matchedAmt8)) + s.Require().True(s.getBalance(s.addr(9), auction.GetSellingCoin().Denom).Amount.Equal(matchedAmt9)) + s.Require().True(s.getBalance(s.addr(10), auction.GetSellingCoin().Denom).Amount.Equal(matchedAmt10)) + s.Require().True(s.getBalance(s.addr(11), auction.GetSellingCoin().Denom).Amount.Equal(matchedAmt11)) + s.Require().True(s.getBalance(s.addr(12), auction.GetSellingCoin().Denom).Amount.Equal(matchedAmt12)) + s.Require().True(s.getBalance(s.addr(13), auction.GetSellingCoin().Denom).Amount.Equal(matchedAmt13)) + s.Require().True(s.getBalance(s.addr(14), auction.GetSellingCoin().Denom).Amount.Equal(matchedAmt14)) + s.Require().True(s.getBalance(s.addr(15), auction.GetSellingCoin().Denom).Amount.Equal(matchedAmt15)) + s.Require().True(s.getBalance(s.addr(16), auction.GetSellingCoin().Denom).Amount.Equal(matchedAmt16)) + s.Require().True(s.getBalance(s.addr(17), auction.GetSellingCoin().Denom).Amount.Equal(matchedAmt17)) + + // Refund payingCoin + err = s.keeper.RefundPayingCoin(s.ctx, auction, mInfo) + s.Require().NoError(err) +} + +func (s *KeeperTestSuite) TestCalculateAllocation_Mixed3_LimitedDifferent() { + auction := s.createBatchAuction( + s.addr(0), + parseDec("10"), + parseDec("0.1"), + parseCoin("2500_000_000denom1"), + "denom2", + []types.VestingSchedule{}, + 1, + math.LegacyMustNewDecFromStr("0.2"), + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 2, 0), + true, + ) + s.Require().Equal(types.AuctionStatusStarted, auction.GetStatus()) + + s.placeBidBatchMany(auction.Id, s.addr(1), parseDec("10"), parseCoin("200_000_000denom1"), math.NewInt(500_000_000), true) + s.placeBidBatchWorth(auction.Id, s.addr(2), parseDec("11"), parseCoin("2000_000_000denom2"), math.NewInt(500_000_000), true) + s.placeBidBatchMany(auction.Id, s.addr(3), parseDec("10.5"), parseCoin("500_000_000denom1"), math.NewInt(500_000_000), true) + s.placeBidBatchWorth(auction.Id, s.addr(4), parseDec("10.2"), parseCoin("1500_000_000denom2"), math.NewInt(200_000_000), true) + s.placeBidBatchMany(auction.Id, s.addr(5), parseDec("10.8"), parseCoin("200_000_000denom1"), math.NewInt(200_000_000), true) + s.placeBidBatchWorth(auction.Id, s.addr(6), parseDec("11.4"), parseCoin("2200_000_000denom2"), math.NewInt(200_000_000), true) + s.placeBidBatchMany(auction.Id, s.addr(7), parseDec("11.3"), parseCoin("100_000_000denom1"), math.NewInt(200_000_000), true) + s.placeBidBatchWorth(auction.Id, s.addr(8), parseDec("9.9"), parseCoin("1900_000_000denom2"), math.NewInt(200_000_000), true) + s.placeBidBatchMany(auction.Id, s.addr(9), parseDec("10.1"), parseCoin("200_000_000denom1"), math.NewInt(200_000_000), true) + s.placeBidBatchWorth(auction.Id, s.addr(10), parseDec("10.45"), parseCoin("2000_000_000denom2"), math.NewInt(200_000_000), true) + s.placeBidBatchMany(auction.Id, s.addr(11), parseDec("10.75"), parseCoin("100_000_000denom1"), math.NewInt(100_000_000), true) + s.placeBidBatchWorth(auction.Id, s.addr(12), parseDec("10.99"), parseCoin("1050_000_000denom2"), math.NewInt(100_000_000), true) + s.placeBidBatchMany(auction.Id, s.addr(13), parseDec("10.2"), parseCoin("100_000_000denom1"), math.NewInt(100_000_000), true) + s.placeBidBatchWorth(auction.Id, s.addr(14), parseDec("9.87"), parseCoin("980_000_000denom2"), math.NewInt(100_000_000), true) + s.placeBidBatchMany(auction.Id, s.addr(15), parseDec("10.25"), parseCoin("100_000_000denom1"), math.NewInt(100_000_000), true) + s.placeBidBatchWorth(auction.Id, s.addr(16), parseDec("10.48"), parseCoin("1000_000_000denom2"), math.NewInt(100_000_000), true) + s.placeBidBatchMany(auction.Id, s.addr(17), parseDec("10.52"), parseCoin("100_000_000denom1"), math.NewInt(100_000_000), true) + s.placeBidBatchMany(auction.Id, s.addr(4), parseDec("10.8"), parseCoin("200_000_000denom1"), math.NewInt(0), true) + s.placeBidBatchWorth(auction.Id, s.addr(5), parseDec("10.5"), parseCoin("1500_000_000denom2"), math.NewInt(0), true) + s.placeBidBatchMany(auction.Id, s.addr(6), parseDec("9.7"), parseCoin("200_000_000denom1"), math.NewInt(0), true) + + a, err := s.keeper.Auction.Get(s.ctx, auction.Id) + s.Require().NoError(err) + + mInfo, err := s.keeper.CalculateBatchAllocation(s.ctx, a) + s.Require().NoError(err) + + // Checking + s.Require().Equal(int64(14), mInfo.MatchedLen) + matchingPrice := parseDec("10.1") + s.Require().Equal(mInfo.MatchedPrice, matchingPrice) + + matchedAmt1 := math.NewInt(0) + matchedAmt2 := math.LegacyNewDec(2000_000_000).QuoTruncate(matchingPrice).TruncateInt() + matchedAmt3 := math.NewInt(500_000_000) + matchedAmt4 := math.NewInt(200_000_000) + matchedAmt5 := math.NewInt(200_000_000) + matchedAmt6 := math.NewInt(200_000_000) + matchedAmt7 := math.NewInt(100_000_000) + matchedAmt8 := math.NewInt(0) + matchedAmt9 := math.NewInt(200_000_000) + matchedAmt10 := math.LegacyNewDec(2000_000_000).QuoTruncate(matchingPrice).TruncateInt() + matchedAmt11 := math.NewInt(100_000_000) + matchedAmt12 := math.NewInt(100_000_000) + matchedAmt13 := math.NewInt(100_000_000) + matchedAmt14 := math.NewInt(0) + matchedAmt15 := math.NewInt(100_000_000) + matchedAmt16 := math.LegacyNewDec(1000_000_000).QuoTruncate(matchingPrice).TruncateInt() + matchedAmt17 := math.NewInt(100_000_000) + + totalMatchedAmt := matchedAmt2.Add(matchedAmt3). + Add(matchedAmt4). + Add(matchedAmt5). + Add(matchedAmt6). + Add(matchedAmt7). + Add(matchedAmt9). + Add(matchedAmt10). + Add(matchedAmt11). + Add(matchedAmt12). + Add(matchedAmt13). + Add(matchedAmt15). + Add(matchedAmt16). + Add(matchedAmt17) + + s.Require().Equal(mInfo.TotalMatchedAmount, totalMatchedAmt) + s.Require().Equal(mInfo.AllocationMap[s.addr(1).String()], matchedAmt1) + s.Require().Equal(mInfo.AllocationMap[s.addr(2).String()], matchedAmt2) + s.Require().Equal(mInfo.AllocationMap[s.addr(3).String()], matchedAmt3) + s.Require().Equal(mInfo.AllocationMap[s.addr(4).String()], matchedAmt4) + s.Require().Equal(mInfo.AllocationMap[s.addr(5).String()], matchedAmt5) + s.Require().Equal(mInfo.AllocationMap[s.addr(6).String()], matchedAmt6) + s.Require().Equal(mInfo.AllocationMap[s.addr(7).String()], matchedAmt7) + s.Require().Equal(mInfo.AllocationMap[s.addr(8).String()], matchedAmt8) + s.Require().Equal(mInfo.AllocationMap[s.addr(9).String()], matchedAmt9) + s.Require().Equal(mInfo.AllocationMap[s.addr(10).String()], matchedAmt10) + s.Require().Equal(mInfo.AllocationMap[s.addr(11).String()], matchedAmt11) + s.Require().Equal(mInfo.AllocationMap[s.addr(12).String()], matchedAmt12) + s.Require().Equal(mInfo.AllocationMap[s.addr(13).String()], matchedAmt13) + s.Require().Equal(mInfo.AllocationMap[s.addr(14).String()], matchedAmt14) + s.Require().Equal(mInfo.AllocationMap[s.addr(15).String()], matchedAmt15) + s.Require().Equal(mInfo.AllocationMap[s.addr(16).String()], matchedAmt16) + s.Require().Equal(mInfo.AllocationMap[s.addr(17).String()], matchedAmt17) + + reservedMatchedAmt1 := math.NewInt(0) + reservedMatchedAmt2 := math.NewInt(1999_999_991) + reservedMatchedAmt3 := math.NewInt(5050_000_000) + reservedMatchedAmt4 := math.NewInt(2020_000_000) + reservedMatchedAmt5 := math.NewInt(2020_000_000) + reservedMatchedAmt6 := math.NewInt(2020_000_000) + reservedMatchedAmt7 := math.NewInt(1010_000_000) + reservedMatchedAmt8 := math.NewInt(0) + reservedMatchedAmt9 := math.NewInt(2020_000_000) + reservedMatchedAmt10 := math.NewInt(1999_999_991) + reservedMatchedAmt11 := math.NewInt(1010_000_000) + reservedMatchedAmt12 := math.NewInt(1010_000_000) + reservedMatchedAmt13 := math.NewInt(1010_000_000) + reservedMatchedAmt14 := math.NewInt(0) + reservedMatchedAmt15 := math.NewInt(1010_000_000) + reservedMatchedAmt16 := math.NewInt(999_999_990) + reservedMatchedAmt17 := math.NewInt(1010_000_000) + + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(1).String()], reservedMatchedAmt1) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(2).String()], reservedMatchedAmt2) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(3).String()], reservedMatchedAmt3) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(4).String()], reservedMatchedAmt4) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(5).String()], reservedMatchedAmt5) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(6).String()], reservedMatchedAmt6) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(7).String()], reservedMatchedAmt7) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(8).String()], reservedMatchedAmt8) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(9).String()], reservedMatchedAmt9) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(10).String()], reservedMatchedAmt10) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(11).String()], reservedMatchedAmt11) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(12).String()], reservedMatchedAmt12) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(13).String()], reservedMatchedAmt13) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(14).String()], reservedMatchedAmt14) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(15).String()], reservedMatchedAmt15) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(16).String()], reservedMatchedAmt16) + s.Require().Equal(mInfo.ReservedMatchedMap[s.addr(17).String()], reservedMatchedAmt17) + + refundAmt1 := math.NewInt(2000_000_000) + refundAmt2 := math.NewInt(9) + refundAmt3 := math.NewInt(200_000_000) + refundAmt4 := math.NewInt(1640_000_000) + refundAmt5 := math.NewInt(1640_000_000) + refundAmt6 := math.NewInt(2120_000_000) + refundAmt7 := math.NewInt(120_000_000) + refundAmt8 := math.NewInt(1900_000_000) + refundAmt9 := math.NewInt(0) + refundAmt10 := math.NewInt(9) + refundAmt11 := math.NewInt(65_000_000) + refundAmt12 := math.NewInt(40_000_000) + refundAmt13 := math.NewInt(10_000_000) + refundAmt14 := math.NewInt(980_000_000) + refundAmt15 := math.NewInt(15_000_000) + refundAmt16 := math.NewInt(10) + refundAmt17 := math.NewInt(42_000_000) + + s.Require().True(mInfo.RefundMap[s.addr(1).String()].Equal(refundAmt1)) + s.Require().True(mInfo.RefundMap[s.addr(2).String()].Equal(refundAmt2)) + s.Require().True(mInfo.RefundMap[s.addr(3).String()].Equal(refundAmt3)) + s.Require().True(mInfo.RefundMap[s.addr(4).String()].Equal(refundAmt4)) + s.Require().True(mInfo.RefundMap[s.addr(5).String()].Equal(refundAmt5)) + s.Require().True(mInfo.RefundMap[s.addr(6).String()].Equal(refundAmt6)) + s.Require().True(mInfo.RefundMap[s.addr(7).String()].Equal(refundAmt7)) + s.Require().True(mInfo.RefundMap[s.addr(8).String()].Equal(refundAmt8)) + s.Require().True(mInfo.RefundMap[s.addr(9).String()].Equal(refundAmt9)) + s.Require().True(mInfo.RefundMap[s.addr(10).String()].Equal(refundAmt10)) + s.Require().True(mInfo.RefundMap[s.addr(11).String()].Equal(refundAmt11)) + s.Require().True(mInfo.RefundMap[s.addr(12).String()].Equal(refundAmt12)) + s.Require().True(mInfo.RefundMap[s.addr(13).String()].Equal(refundAmt13)) + s.Require().True(mInfo.RefundMap[s.addr(14).String()].Equal(refundAmt14)) + s.Require().True(mInfo.RefundMap[s.addr(15).String()].Equal(refundAmt15)) + s.Require().True(mInfo.RefundMap[s.addr(16).String()].Equal(refundAmt16)) + s.Require().True(mInfo.RefundMap[s.addr(17).String()].Equal(refundAmt17)) + + // Distribute selling coin + err = s.keeper.AllocateSellingCoin(s.ctx, auction, mInfo) + s.Require().NoError(err) + + err = s.keeper.RefundRemainingSellingCoin(s.ctx, auction) + s.Require().NoError(err) + + // The selling reserve account balance must be zero + s.Require().True(s.getBalance(auction.GetSellingReserveAddress(), auction.SellingCoin.Denom).IsZero()) + + // The auctioneer must have sellingCoin.Amount - TotalMatchedAmount + s.Require().Equal(s.getBalance(s.addr(0), auction.GetSellingCoin().Denom).Amount, auction.SellingCoin.Amount.Sub(mInfo.TotalMatchedAmount)) + + // The bidders must have the matched selling coin + s.Require().True(s.getBalance(s.addr(1), auction.GetSellingCoin().Denom).Amount.Equal(matchedAmt1)) + s.Require().True(s.getBalance(s.addr(2), auction.GetSellingCoin().Denom).Amount.Equal(matchedAmt2)) + s.Require().True(s.getBalance(s.addr(3), auction.GetSellingCoin().Denom).Amount.Equal(matchedAmt3)) + s.Require().True(s.getBalance(s.addr(4), auction.GetSellingCoin().Denom).Amount.Equal(matchedAmt4)) + s.Require().True(s.getBalance(s.addr(5), auction.GetSellingCoin().Denom).Amount.Equal(matchedAmt5)) + s.Require().True(s.getBalance(s.addr(6), auction.GetSellingCoin().Denom).Amount.Equal(matchedAmt6)) + s.Require().True(s.getBalance(s.addr(7), auction.GetSellingCoin().Denom).Amount.Equal(matchedAmt7)) + s.Require().True(s.getBalance(s.addr(8), auction.GetSellingCoin().Denom).Amount.Equal(matchedAmt8)) + s.Require().True(s.getBalance(s.addr(9), auction.GetSellingCoin().Denom).Amount.Equal(matchedAmt9)) + s.Require().True(s.getBalance(s.addr(10), auction.GetSellingCoin().Denom).Amount.Equal(matchedAmt10)) + s.Require().True(s.getBalance(s.addr(11), auction.GetSellingCoin().Denom).Amount.Equal(matchedAmt11)) + s.Require().True(s.getBalance(s.addr(12), auction.GetSellingCoin().Denom).Amount.Equal(matchedAmt12)) + s.Require().True(s.getBalance(s.addr(13), auction.GetSellingCoin().Denom).Amount.Equal(matchedAmt13)) + s.Require().True(s.getBalance(s.addr(14), auction.GetSellingCoin().Denom).Amount.Equal(matchedAmt14)) + s.Require().True(s.getBalance(s.addr(15), auction.GetSellingCoin().Denom).Amount.Equal(matchedAmt15)) + s.Require().True(s.getBalance(s.addr(16), auction.GetSellingCoin().Denom).Amount.Equal(matchedAmt16)) + s.Require().True(s.getBalance(s.addr(17), auction.GetSellingCoin().Denom).Amount.Equal(matchedAmt17)) + + // Refund payingCoin + err = s.keeper.RefundPayingCoin(s.ctx, auction, mInfo) + s.Require().NoError(err) +} diff --git a/x/fundraising/keeper/msg_server.go b/x/fundraising/keeper/msg_server.go new file mode 100644 index 0000000..15c8467 --- /dev/null +++ b/x/fundraising/keeper/msg_server.go @@ -0,0 +1,98 @@ +package keeper + +import ( + "context" + + sdkerrors "cosmossdk.io/errors" + "github.com/cosmos/cosmos-sdk/types/errors" + + "github.com/ignite/modules/x/fundraising/types" +) + +type msgServer struct { + Keeper +} + +// NewMsgServerImpl returns an implementation of the MsgServer interface +// for the provided Keeper. +func NewMsgServerImpl(keeper Keeper) types.MsgServer { + return &msgServer{Keeper: keeper} +} + +var _ types.MsgServer = msgServer{} + +func (k msgServer) AddAllowedBidder(ctx context.Context, msg *types.MsgAddAllowedBidder) (*types.MsgAddAllowedBidderResponse, error) { + if _, err := k.addressCodec.StringToBytes(msg.AllowedBidder.Bidder); err != nil { + return nil, sdkerrors.Wrap(err, "invalid authority address") + } + + if !EnableAddAllowedBidder { + return nil, sdkerrors.Wrap(errors.ErrInvalidRequest, "EnableAddAllowedBidder is disabled") + } + + if err := k.Keeper.AddAllowedBidders(ctx, msg.AuctionId, []types.AllowedBidder{msg.AllowedBidder}); err != nil { + return nil, err + } + + return &types.MsgAddAllowedBidderResponse{}, nil +} + +func (k msgServer) CancelAuction(ctx context.Context, msg *types.MsgCancelAuction) (*types.MsgCancelAuctionResponse, error) { + if _, err := k.addressCodec.StringToBytes(msg.Auctioneer); err != nil { + return nil, sdkerrors.Wrap(err, "invalid authority address") + } + + if err := k.Keeper.CancelAuction(ctx, msg); err != nil { + return nil, err + } + + return &types.MsgCancelAuctionResponse{}, nil +} + +func (k msgServer) CreateBatchAuction(ctx context.Context, msg *types.MsgCreateBatchAuction) (*types.MsgCreateBatchAuctionResponse, error) { + if _, err := k.addressCodec.StringToBytes(msg.Auctioneer); err != nil { + return nil, sdkerrors.Wrap(err, "invalid authority address") + } + + if _, err := k.Keeper.CreateBatchAuction(ctx, msg); err != nil { + return nil, err + } + + return &types.MsgCreateBatchAuctionResponse{}, nil +} + +func (k msgServer) CreateFixedPriceAuction(ctx context.Context, msg *types.MsgCreateFixedPriceAuction) (*types.MsgCreateFixedPriceAuctionResponse, error) { + if _, err := k.addressCodec.StringToBytes(msg.Auctioneer); err != nil { + return nil, sdkerrors.Wrap(err, "invalid authority address") + } + + if _, err := k.Keeper.CreateFixedPriceAuction(ctx, msg); err != nil { + return nil, err + } + + return &types.MsgCreateFixedPriceAuctionResponse{}, nil +} + +func (k msgServer) ModifyBid(ctx context.Context, msg *types.MsgModifyBid) (*types.MsgModifyBidResponse, error) { + if _, err := k.addressCodec.StringToBytes(msg.Bidder); err != nil { + return nil, sdkerrors.Wrap(err, "invalid authority address") + } + + if err := k.Keeper.ModifyBid(ctx, msg); err != nil { + return nil, err + } + + return &types.MsgModifyBidResponse{}, nil +} + +func (k msgServer) PlaceBid(ctx context.Context, msg *types.MsgPlaceBid) (*types.MsgPlaceBidResponse, error) { + if _, err := k.addressCodec.StringToBytes(msg.Bidder); err != nil { + return nil, sdkerrors.Wrap(err, "invalid authority address") + } + + if _, err := k.Keeper.PlaceBid(ctx, msg); err != nil { + return nil, err + } + + return &types.MsgPlaceBidResponse{}, nil +} diff --git a/x/fundraising/keeper/msg_update_params.go b/x/fundraising/keeper/msg_update_params.go new file mode 100644 index 0000000..17d7c6e --- /dev/null +++ b/x/fundraising/keeper/msg_update_params.go @@ -0,0 +1,29 @@ +package keeper + +import ( + "context" + + errorsmod "cosmossdk.io/errors" + + "github.com/ignite/modules/x/fundraising/types" +) + +func (k msgServer) UpdateParams(ctx context.Context, req *types.MsgUpdateParams) (*types.MsgUpdateParamsResponse, error) { + if _, err := k.addressCodec.StringToBytes(req.Authority); err != nil { + return nil, errorsmod.Wrap(err, "invalid authority address") + } + + if k.GetAuthority() != req.Authority { + return nil, errorsmod.Wrapf(types.ErrInvalidSigner, "invalid authority; expected %s, got %s", k.GetAuthority(), req.Authority) + } + + if err := req.Params.Validate(); err != nil { + return nil, err + } + + if err := k.Params.Set(ctx, req.Params); err != nil { + return nil, err + } + + return &types.MsgUpdateParamsResponse{}, nil +} diff --git a/x/fundraising/keeper/msg_update_params_test.go b/x/fundraising/keeper/msg_update_params_test.go new file mode 100644 index 0000000..07e4760 --- /dev/null +++ b/x/fundraising/keeper/msg_update_params_test.go @@ -0,0 +1,66 @@ +package keeper_test + +import ( + "testing" + + "github.com/stretchr/testify/require" + + keepertest "github.com/ignite/modules/testutil/keeper" + "github.com/ignite/modules/x/fundraising/keeper" + "github.com/ignite/modules/x/fundraising/types" +) + +func TestMsgUpdateParams(t *testing.T) { + k, ctx, _ := keepertest.FundraisingKeeper(t) + ms := keeper.NewMsgServerImpl(k) + + params := types.DefaultParams() + require.NoError(t, k.Params.Set(ctx, params)) + + // default params + testCases := []struct { + name string + input *types.MsgUpdateParams + expErr bool + expErrMsg string + }{ + { + name: "invalid authority", + input: &types.MsgUpdateParams{ + Authority: "invalid", + Params: params, + }, + expErr: true, + expErrMsg: "invalid authority", + }, + { + name: "send enabled param", + input: &types.MsgUpdateParams{ + Authority: k.GetAuthority(), + Params: types.Params{}, + }, + expErr: false, + }, + { + name: "all good", + input: &types.MsgUpdateParams{ + Authority: k.GetAuthority(), + Params: params, + }, + expErr: false, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + _, err := ms.UpdateParams(ctx, tc.input) + + if tc.expErr { + require.Error(t, err) + require.Contains(t, err.Error(), tc.expErrMsg) + } else { + require.NoError(t, err) + } + }) + } +} diff --git a/x/fundraising/keeper/query.go b/x/fundraising/keeper/query.go new file mode 100644 index 0000000..cc1852b --- /dev/null +++ b/x/fundraising/keeper/query.go @@ -0,0 +1,17 @@ +package keeper + +import ( + "github.com/ignite/modules/x/fundraising/types" +) + +var _ types.QueryServer = queryServer{} + +// NewQueryServerImpl returns an implementation of the QueryServer interface +// for the provided Keeper. +func NewQueryServerImpl(k Keeper) types.QueryServer { + return queryServer{k} +} + +type queryServer struct { + k Keeper +} diff --git a/x/fundraising/keeper/query_allowed_bidder.go b/x/fundraising/keeper/query_allowed_bidder.go new file mode 100644 index 0000000..ff12a32 --- /dev/null +++ b/x/fundraising/keeper/query_allowed_bidder.go @@ -0,0 +1,56 @@ +package keeper + +import ( + "context" + "errors" + + "cosmossdk.io/collections" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/query" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" + + "github.com/ignite/modules/x/fundraising/types" +) + +func (q queryServer) ListAllowedBidder(ctx context.Context, req *types.QueryAllAllowedBidderRequest) (*types.QueryAllAllowedBidderResponse, error) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "invalid request") + } + + allowedBidders, pageRes, err := query.CollectionPaginate( + ctx, + q.k.AllowedBidder, + req.Pagination, + func(_ collections.Pair[uint64, sdk.AccAddress], value types.AllowedBidder) (types.AllowedBidder, error) { + return value, nil + }, + ) + if err != nil { + return nil, status.Error(codes.Internal, err.Error()) + } + + return &types.QueryAllAllowedBidderResponse{AllowedBidder: allowedBidders, Pagination: pageRes}, nil +} + +func (q queryServer) GetAllowedBidder(ctx context.Context, req *types.QueryGetAllowedBidderRequest) (*types.QueryGetAllowedBidderResponse, error) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "invalid request") + } + + bidder, err := sdk.AccAddressFromBech32(req.Bidder) + if err != nil { + return nil, status.Error(codes.InvalidArgument, "invalid bidder") + } + + val, err := q.k.AllowedBidder.Get(ctx, collections.Join(req.AuctionId, bidder)) + if err != nil { + if errors.Is(err, collections.ErrNotFound) { + return nil, status.Error(codes.NotFound, "not found") + } + + return nil, status.Error(codes.Internal, "internal error") + } + + return &types.QueryGetAllowedBidderResponse{AllowedBidder: val}, nil +} diff --git a/x/fundraising/keeper/query_allowed_bidder_test.go b/x/fundraising/keeper/query_allowed_bidder_test.go new file mode 100644 index 0000000..4050f68 --- /dev/null +++ b/x/fundraising/keeper/query_allowed_bidder_test.go @@ -0,0 +1,145 @@ +package keeper_test + +import ( + "context" + "strconv" + "testing" + + "cosmossdk.io/collections" + "cosmossdk.io/math" + "github.com/cosmos/cosmos-sdk/types/query" + "github.com/stretchr/testify/require" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" + + keepertest "github.com/ignite/modules/testutil/keeper" + "github.com/ignite/modules/testutil/nullify" + "github.com/ignite/modules/testutil/sample" + "github.com/ignite/modules/x/fundraising/keeper" + "github.com/ignite/modules/x/fundraising/types" +) + +// Prevent strconv unused error +var _ = strconv.IntSize + +func createNAllowedBidder(keeper keeper.Keeper, ctx context.Context, n int) []types.AllowedBidder { + items := make([]types.AllowedBidder, n) + for i := range items { + bidder := sample.AccAddress(r) + items[i].AuctionId = uint64(i) + items[i].Bidder = bidder.String() + items[i].MaxBidAmount = math.ZeroInt() + + _ = keeper.AllowedBidder.Set(ctx, collections.Join(items[i].AuctionId, bidder), items[i]) + } + return items +} + +func TestAllowedBidderQuerySingle(t *testing.T) { + k, ctx, _ := keepertest.FundraisingKeeper(t) + qs := keeper.NewQueryServerImpl(k) + msgs := createNAllowedBidder(k, ctx, 2) + tests := []struct { + desc string + request *types.QueryGetAllowedBidderRequest + response *types.QueryGetAllowedBidderResponse + err error + }{ + { + desc: "First", + request: &types.QueryGetAllowedBidderRequest{ + AuctionId: msgs[0].AuctionId, + Bidder: msgs[0].Bidder, + }, + response: &types.QueryGetAllowedBidderResponse{AllowedBidder: msgs[0]}, + }, + { + desc: "Second", + request: &types.QueryGetAllowedBidderRequest{ + AuctionId: msgs[1].AuctionId, + Bidder: msgs[1].Bidder, + }, + response: &types.QueryGetAllowedBidderResponse{AllowedBidder: msgs[1]}, + }, + { + desc: "KeyNotFound", + request: &types.QueryGetAllowedBidderRequest{ + AuctionId: 100000, + Bidder: sample.Address(r), + }, + err: status.Error(codes.NotFound, "not found"), + }, + { + desc: "InvalidRequest", + err: status.Error(codes.InvalidArgument, "invalid request"), + }, + } + for _, tc := range tests { + t.Run(tc.desc, func(t *testing.T) { + response, err := qs.GetAllowedBidder(ctx, tc.request) + if tc.err != nil { + require.ErrorIs(t, err, tc.err) + } else { + require.NoError(t, err) + require.Equal(t, tc.response, response) + } + }) + } +} + +func TestAllowedBidderQueryPaginated(t *testing.T) { + k, ctx, _ := keepertest.FundraisingKeeper(t) + qs := keeper.NewQueryServerImpl(k) + msgs := createNAllowedBidder(k, ctx, 5) + + request := func(next []byte, offset, limit uint64, total bool) *types.QueryAllAllowedBidderRequest { + return &types.QueryAllAllowedBidderRequest{ + AuctionId: 0, + Pagination: &query.PageRequest{ + Key: next, + Offset: offset, + Limit: limit, + CountTotal: total, + }, + } + } + t.Run("ByOffset", func(t *testing.T) { + step := 2 + for i := 0; i < len(msgs); i += step { + resp, err := qs.ListAllowedBidder(ctx, request(nil, uint64(i), uint64(step), false)) + require.NoError(t, err) + require.LessOrEqual(t, len(resp.AllowedBidder), step) + require.Subset(t, + msgs, + nullify.Fill(resp.AllowedBidder), + ) + } + }) + t.Run("ByKey", func(t *testing.T) { + step := 2 + var next []byte + for i := 0; i < len(msgs); i += step { + resp, err := qs.ListAllowedBidder(ctx, request(next, 0, uint64(step), false)) + require.NoError(t, err) + require.LessOrEqual(t, len(resp.AllowedBidder), step) + require.Subset(t, + msgs, + nullify.Fill(resp.AllowedBidder), + ) + next = resp.Pagination.NextKey + } + }) + t.Run("Total", func(t *testing.T) { + resp, err := qs.ListAllowedBidder(ctx, request(nil, 0, 0, true)) + require.NoError(t, err) + require.Equal(t, len(msgs), int(resp.Pagination.Total)) + require.ElementsMatch(t, + nullify.Fill(msgs), + nullify.Fill(resp.AllowedBidder), + ) + }) + t.Run("InvalidRequest", func(t *testing.T) { + _, err := qs.ListAllowedBidder(ctx, nil) + require.ErrorIs(t, err, status.Error(codes.InvalidArgument, "invalid request")) + }) +} diff --git a/x/fundraising/keeper/query_auction.go b/x/fundraising/keeper/query_auction.go new file mode 100644 index 0000000..bc7419d --- /dev/null +++ b/x/fundraising/keeper/query_auction.go @@ -0,0 +1,82 @@ +package keeper + +import ( + "context" + "errors" + + "cosmossdk.io/collections" + codectypes "github.com/cosmos/cosmos-sdk/codec/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + "github.com/cosmos/cosmos-sdk/types/query" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" + + "github.com/ignite/modules/x/fundraising/types" +) + +func (q queryServer) ListAuction(ctx context.Context, req *types.QueryAllAuctionRequest) (*types.QueryAllAuctionResponse, error) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "invalid request") + } + + if req.Type != "" && !(req.Type == types.AuctionTypeFixedPrice.String() || req.Type == types.AuctionTypeBatch.String()) { + return nil, status.Errorf(codes.InvalidArgument, "invalid auction type %s", req.Type) + } + + if req.Status != "" && !(req.Status == types.AuctionStatusStandBy.String() || req.Status == types.AuctionStatusStarted.String() || + req.Status == types.AuctionStatusVesting.String() || req.Status == types.AuctionStatusFinished.String() || + req.Status == types.AuctionStatusCancelled.String()) { + return nil, status.Errorf(codes.InvalidArgument, "invalid auction status %s", req.Status) + } + + auctions, pageRes, err := query.CollectionFilteredPaginate( + ctx, + q.k.Auction, + req.Pagination, + func(_ uint64, auction types.AuctionI) (bool, error) { + if req.Type != "" && auction.GetType().String() != req.Type { + return false, nil + } + + if req.Status != "" && auction.GetStatus().String() != req.Status { + return false, nil + } + + return true, nil + }, + func(_ uint64, auction types.AuctionI) (*codectypes.Any, error) { + auctionAny, err := types.PackAuction(auction) + if err != nil { + return nil, err + } + return auctionAny, nil + }, + ) + if err != nil { + return nil, status.Error(codes.Internal, err.Error()) + } + + return &types.QueryAllAuctionResponse{Auction: auctions, Pagination: pageRes}, nil +} + +func (q queryServer) GetAuction(ctx context.Context, req *types.QueryGetAuctionRequest) (*types.QueryGetAuctionResponse, error) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "invalid request") + } + + auction, err := q.k.Auction.Get(ctx, req.AuctionId) + if err != nil { + if errors.Is(err, collections.ErrNotFound) { + return nil, sdkerrors.ErrKeyNotFound + } + + return nil, status.Error(codes.Internal, "internal error") + } + + auctionAny, err := types.PackAuction(auction) + if err != nil { + return nil, status.Error(codes.Internal, err.Error()) + } + + return &types.QueryGetAuctionResponse{Auction: auctionAny}, nil +} diff --git a/x/fundraising/keeper/query_auction_test.go b/x/fundraising/keeper/query_auction_test.go new file mode 100644 index 0000000..d08eb12 --- /dev/null +++ b/x/fundraising/keeper/query_auction_test.go @@ -0,0 +1,158 @@ +package keeper_test + +import ( + "context" + "testing" + "time" + + "cosmossdk.io/math" + codectypes "github.com/cosmos/cosmos-sdk/codec/types" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + "github.com/cosmos/cosmos-sdk/types/query" + "github.com/stretchr/testify/require" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" + + keepertest "github.com/ignite/modules/testutil/keeper" + "github.com/ignite/modules/x/fundraising/keeper" + "github.com/ignite/modules/x/fundraising/types" +) + +func createNAuction(keeper keeper.Keeper, ctx context.Context, n int) ([]*codectypes.Any, error) { + var err error + items := make([]*codectypes.Any, n) + for i := range items { + iu := uint64(i) + auction := &types.FixedPriceAuction{ + BaseAuction: &types.BaseAuction{ + Id: iu, + Auctioneer: "", + StartPrice: math.LegacyMustNewDecFromStr("10"), + SellingCoin: sdk.NewCoin("coin", math.NewInt(5)), + StartTime: time.Now(), + }, + RemainingSellingCoin: sdk.NewCoin("coin", math.NewInt(1)), + } + items[i], err = types.PackAuction(auction) + if err != nil { + return nil, err + } + if err := keeper.Auction.Set(ctx, iu, auction); err != nil { + return nil, err + } + if err := keeper.AuctionSeq.Set(ctx, iu); err != nil { + return nil, err + } + } + return items, nil +} + +func auctionsToString(auctionsAny []*codectypes.Any) (auctions []string) { + for _, auction := range auctionsAny { + auctions = append(auctions, auction.String()) + } + return +} + +func TestAuctionQuerySingle(t *testing.T) { + k, ctx, _ := keepertest.FundraisingKeeper(t) + qs := keeper.NewQueryServerImpl(k) + msgs, err := createNAuction(k, ctx, 2) + require.NoError(t, err) + + tests := []struct { + desc string + request *types.QueryGetAuctionRequest + response *types.QueryGetAuctionResponse + err error + }{ + { + desc: "First", + request: &types.QueryGetAuctionRequest{AuctionId: 0}, + response: &types.QueryGetAuctionResponse{Auction: msgs[0]}, + }, + { + desc: "Second", + request: &types.QueryGetAuctionRequest{AuctionId: 1}, + response: &types.QueryGetAuctionResponse{Auction: msgs[1]}, + }, + { + desc: "KeyNotFound", + request: &types.QueryGetAuctionRequest{AuctionId: uint64(len(msgs))}, + err: sdkerrors.ErrKeyNotFound, + }, + { + desc: "InvalidRequest", + err: status.Error(codes.InvalidArgument, "invalid request"), + }, + } + for _, tc := range tests { + t.Run(tc.desc, func(t *testing.T) { + response, err := qs.GetAuction(ctx, tc.request) + if tc.err != nil { + require.ErrorIs(t, err, tc.err) + } else { + require.NoError(t, err) + require.Equal(t, tc.response.String(), response.String()) + } + }) + } +} + +func TestAuctionQueryPaginated(t *testing.T) { + k, ctx, _ := keepertest.FundraisingKeeper(t) + qs := keeper.NewQueryServerImpl(k) + msgs, err := createNAuction(k, ctx, 5) + require.NoError(t, err) + + request := func(next []byte, offset, limit uint64, total bool) *types.QueryAllAuctionRequest { + return &types.QueryAllAuctionRequest{ + Pagination: &query.PageRequest{ + Key: next, + Offset: offset, + Limit: limit, + CountTotal: total, + }, + } + } + t.Run("ByOffset", func(t *testing.T) { + step := 2 + for i := 0; i < len(msgs); i += step { + resp, err := qs.ListAuction(ctx, request(nil, uint64(i), uint64(step), false)) + require.NoError(t, err) + require.LessOrEqual(t, len(resp.Auction), step) + require.Subset(t, + auctionsToString(msgs), + auctionsToString(resp.Auction), + ) + } + }) + t.Run("ByKey", func(t *testing.T) { + step := 2 + var next []byte + for i := 0; i < len(msgs); i += step { + resp, err := qs.ListAuction(ctx, request(next, 0, uint64(step), false)) + require.NoError(t, err) + require.LessOrEqual(t, len(resp.Auction), step) + require.Subset(t, + auctionsToString(msgs), + auctionsToString(resp.Auction), + ) + next = resp.Pagination.NextKey + } + }) + t.Run("Total", func(t *testing.T) { + resp, err := qs.ListAuction(ctx, request(nil, 0, 0, true)) + require.NoError(t, err) + require.Equal(t, len(msgs), int(resp.Pagination.Total)) + require.ElementsMatch(t, + auctionsToString(msgs), + auctionsToString(resp.Auction), + ) + }) + t.Run("InvalidRequest", func(t *testing.T) { + _, err := qs.ListAuction(ctx, nil) + require.ErrorIs(t, err, status.Error(codes.InvalidArgument, "invalid request")) + }) +} diff --git a/x/fundraising/keeper/query_bid.go b/x/fundraising/keeper/query_bid.go new file mode 100644 index 0000000..d63e8fe --- /dev/null +++ b/x/fundraising/keeper/query_bid.go @@ -0,0 +1,51 @@ +package keeper + +import ( + "context" + "errors" + + "cosmossdk.io/collections" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + "github.com/cosmos/cosmos-sdk/types/query" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" + + "github.com/ignite/modules/x/fundraising/types" +) + +func (q queryServer) ListBid(ctx context.Context, req *types.QueryAllBidRequest) (*types.QueryAllBidResponse, error) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "invalid request") + } + + bids, pageRes, err := query.CollectionPaginate( + ctx, + q.k.Bid, + req.Pagination, + func(_ collections.Pair[uint64, uint64], value types.Bid) (types.Bid, error) { + return value, nil + }, + ) + if err != nil { + return nil, status.Error(codes.Internal, err.Error()) + } + + return &types.QueryAllBidResponse{Bid: bids, Pagination: pageRes}, nil +} + +func (q queryServer) GetBid(ctx context.Context, req *types.QueryGetBidRequest) (*types.QueryGetBidResponse, error) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "invalid request") + } + + bid, err := q.k.Bid.Get(ctx, collections.Join(req.AuctionId, req.BidId)) + if err != nil { + if errors.Is(err, collections.ErrNotFound) { + return nil, sdkerrors.ErrKeyNotFound + } + + return nil, status.Error(codes.Internal, "internal error") + } + + return &types.QueryGetBidResponse{Bid: bid}, nil +} diff --git a/x/fundraising/keeper/query_bid_test.go b/x/fundraising/keeper/query_bid_test.go new file mode 100644 index 0000000..cfdb0ae --- /dev/null +++ b/x/fundraising/keeper/query_bid_test.go @@ -0,0 +1,139 @@ +package keeper_test + +import ( + "context" + "testing" + + "cosmossdk.io/collections" + "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + "github.com/cosmos/cosmos-sdk/types/query" + "github.com/stretchr/testify/require" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" + + keepertest "github.com/ignite/modules/testutil/keeper" + "github.com/ignite/modules/testutil/nullify" + "github.com/ignite/modules/testutil/sample" + "github.com/ignite/modules/x/fundraising/keeper" + "github.com/ignite/modules/x/fundraising/types" +) + +func createNBid(keeper keeper.Keeper, ctx context.Context, n int) ([]types.Bid, error) { + items := make([]types.Bid, n) + auctionId := uint64(0) + for i := range items { + bidid := uint64(i) + items[i].AuctionId = auctionId + items[i].Id = bidid + items[i].Bidder = sample.Address(r) + items[i].Coin = sdk.NewCoin("coin", math.NewInt(int64(i))) + items[i].Price = math.LegacyNewDec(int64(i)) + items[i].Type = types.BidTypeFixedPrice + + if err := keeper.Bid.Set(ctx, collections.Join(auctionId, bidid), items[i]); err != nil { + return nil, err + } + if err := keeper.BidSeq.Set(ctx, auctionId, items[i].Id); err != nil { + return nil, err + } + } + return items, nil +} + +func TestBidQuerySingle(t *testing.T) { + k, ctx, _ := keepertest.FundraisingKeeper(t) + qs := keeper.NewQueryServerImpl(k) + msgs, err := createNBid(k, ctx, 2) + require.NoError(t, err) + + tests := []struct { + desc string + request *types.QueryGetBidRequest + response *types.QueryGetBidResponse + err error + }{ + { + desc: "First", + request: &types.QueryGetBidRequest{AuctionId: 0, BidId: msgs[0].Id}, + response: &types.QueryGetBidResponse{Bid: msgs[0]}, + }, + { + desc: "Second", + request: &types.QueryGetBidRequest{AuctionId: 0, BidId: msgs[1].Id}, + response: &types.QueryGetBidResponse{Bid: msgs[1]}, + }, + { + desc: "KeyNotFound", + request: &types.QueryGetBidRequest{AuctionId: 0, BidId: uint64(len(msgs))}, + err: sdkerrors.ErrKeyNotFound, + }, + { + desc: "InvalidRequest", + err: status.Error(codes.InvalidArgument, "invalid request"), + }, + } + for _, tc := range tests { + t.Run(tc.desc, func(t *testing.T) { + response, err := qs.GetBid(ctx, tc.request) + if tc.err != nil { + require.ErrorIs(t, err, tc.err) + } else { + require.NoError(t, err) + require.Equal(t, + nullify.Fill(tc.response), + nullify.Fill(response), + ) + } + }) + } +} + +func TestBidQueryPaginated(t *testing.T) { + k, ctx, _ := keepertest.FundraisingKeeper(t) + qs := keeper.NewQueryServerImpl(k) + msgs, err := createNBid(k, ctx, 5) + require.NoError(t, err) + + request := func(next []byte, offset, limit uint64, total bool) *types.QueryAllBidRequest { + return &types.QueryAllBidRequest{ + Pagination: &query.PageRequest{ + Key: next, + Offset: offset, + Limit: limit, + CountTotal: total, + }, + } + } + t.Run("ByOffset", func(t *testing.T) { + step := 2 + for i := 0; i < len(msgs); i += step { + resp, err := qs.ListBid(ctx, request(nil, uint64(i), uint64(step), false)) + require.NoError(t, err) + require.LessOrEqual(t, len(resp.Bid), step) + require.Subset(t, msgs, resp.Bid) + } + }) + t.Run("ByKey", func(t *testing.T) { + step := 2 + var next []byte + for i := 0; i < len(msgs); i += step { + resp, err := qs.ListBid(ctx, request(next, 0, uint64(step), false)) + require.NoError(t, err) + require.LessOrEqual(t, len(resp.Bid), step) + require.Subset(t, msgs, resp.Bid) + next = resp.Pagination.NextKey + } + }) + t.Run("Total", func(t *testing.T) { + resp, err := qs.ListBid(ctx, request(nil, 0, 0, true)) + require.NoError(t, err) + require.Equal(t, len(msgs), int(resp.Pagination.Total)) + require.ElementsMatch(t, msgs, resp.Bid) + }) + t.Run("InvalidRequest", func(t *testing.T) { + _, err := qs.ListBid(ctx, nil) + require.ErrorIs(t, err, status.Error(codes.InvalidArgument, "invalid request")) + }) +} diff --git a/x/fundraising/keeper/query_params.go b/x/fundraising/keeper/query_params.go new file mode 100644 index 0000000..1272a5e --- /dev/null +++ b/x/fundraising/keeper/query_params.go @@ -0,0 +1,30 @@ +package keeper + +import ( + "context" + "errors" + + "cosmossdk.io/collections" + + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" + + "github.com/ignite/modules/x/fundraising/types" +) + +func (q queryServer) Params(ctx context.Context, req *types.QueryParamsRequest) (*types.QueryParamsResponse, error) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "invalid request") + } + + params, err := q.k.Params.Get(ctx) + if err != nil { + if errors.Is(err, collections.ErrNotFound) { + return nil, status.Error(codes.NotFound, "not found") + } + + return nil, status.Error(codes.Internal, "internal error") + } + + return &types.QueryParamsResponse{Params: params}, nil +} diff --git a/x/fundraising/keeper/query_params_test.go b/x/fundraising/keeper/query_params_test.go new file mode 100644 index 0000000..54f4075 --- /dev/null +++ b/x/fundraising/keeper/query_params_test.go @@ -0,0 +1,33 @@ +package keeper_test + +import ( + "testing" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/stretchr/testify/require" + + keepertest "github.com/ignite/modules/testutil/keeper" + "github.com/ignite/modules/x/fundraising/keeper" + "github.com/ignite/modules/x/fundraising/types" +) + +func TestParamsQuery(t *testing.T) { + k, ctx, _ := keepertest.FundraisingKeeper(t) + + qs := keeper.NewQueryServerImpl(k) + params := types.DefaultParams() + require.NoError(t, k.Params.Set(ctx, params)) + + response, err := qs.Params(ctx, &types.QueryParamsRequest{}) + require.NoError(t, err) + + // Prevents from nil slice + if len(response.Params.AuctionCreationFee) == 0 { + response.Params.AuctionCreationFee = sdk.Coins{} + } + if len(response.Params.PlaceBidFee) == 0 { + response.Params.PlaceBidFee = sdk.Coins{} + } + + require.Equal(t, &types.QueryParamsResponse{Params: params}, response) +} diff --git a/x/fundraising/keeper/query_vesting_queue.go b/x/fundraising/keeper/query_vesting_queue.go new file mode 100644 index 0000000..5e182d2 --- /dev/null +++ b/x/fundraising/keeper/query_vesting_queue.go @@ -0,0 +1,33 @@ +package keeper + +import ( + "context" + "time" + + "cosmossdk.io/collections" + "github.com/cosmos/cosmos-sdk/types/query" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" + + "github.com/ignite/modules/x/fundraising/types" +) + +func (q queryServer) ListVestingQueue(ctx context.Context, req *types.QueryAllVestingQueueRequest) (*types.QueryAllVestingQueueResponse, error) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "invalid request") + } + + vestingQueues, pageRes, err := query.CollectionPaginate( + ctx, + q.k.VestingQueue, + req.Pagination, + func(_ collections.Pair[uint64, time.Time], value types.VestingQueue) (types.VestingQueue, error) { + return value, nil + }, + ) + if err != nil { + return nil, status.Error(codes.Internal, err.Error()) + } + + return &types.QueryAllVestingQueueResponse{VestingQueue: vestingQueues, Pagination: pageRes}, nil +} diff --git a/x/fundraising/keeper/query_vesting_queue_test.go b/x/fundraising/keeper/query_vesting_queue_test.go new file mode 100644 index 0000000..1399164 --- /dev/null +++ b/x/fundraising/keeper/query_vesting_queue_test.go @@ -0,0 +1,94 @@ +package keeper_test + +import ( + "context" + "strconv" + "testing" + "time" + + "cosmossdk.io/collections" + "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/query" + "github.com/stretchr/testify/require" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" + + keepertest "github.com/ignite/modules/testutil/keeper" + "github.com/ignite/modules/testutil/nullify" + "github.com/ignite/modules/testutil/sample" + "github.com/ignite/modules/x/fundraising/keeper" + "github.com/ignite/modules/x/fundraising/types" +) + +// Prevent strconv unused error +var _ = strconv.IntSize + +func createNVestingQueue(keeper keeper.Keeper, ctx context.Context, n int) []types.VestingQueue { + items := make([]types.VestingQueue, n) + for i := range items { + items[i].AuctionId = uint64(i) + items[i].ReleaseTime = time.Now().UTC() + items[i].PayingCoin = sdk.NewCoin("coin", math.NewInt(int64(i))) + items[i].Auctioneer = sample.Address(r) + + _ = keeper.VestingQueue.Set(ctx, collections.Join(items[i].AuctionId, items[i].ReleaseTime), items[i]) + } + return items +} + +func TestVestingQueueQueryPaginated(t *testing.T) { + k, ctx, _ := keepertest.FundraisingKeeper(t) + qs := keeper.NewQueryServerImpl(k) + msgs := createNVestingQueue(k, ctx, 5) + + request := func(next []byte, offset, limit uint64, total bool) *types.QueryAllVestingQueueRequest { + return &types.QueryAllVestingQueueRequest{ + Pagination: &query.PageRequest{ + Key: next, + Offset: offset, + Limit: limit, + CountTotal: total, + }, + } + } + t.Run("ByOffset", func(t *testing.T) { + step := 2 + for i := 0; i < len(msgs); i += step { + resp, err := qs.ListVestingQueue(ctx, request(nil, uint64(i), uint64(step), false)) + require.NoError(t, err) + require.LessOrEqual(t, len(resp.VestingQueue), step) + require.Subset(t, + nullify.Fill(msgs), + nullify.Fill(resp.VestingQueue), + ) + } + }) + t.Run("ByKey", func(t *testing.T) { + step := 2 + var next []byte + for i := 0; i < len(msgs); i += step { + resp, err := qs.ListVestingQueue(ctx, request(next, 0, uint64(step), false)) + require.NoError(t, err) + require.LessOrEqual(t, len(resp.VestingQueue), step) + require.Subset(t, + nullify.Fill(msgs), + nullify.Fill(resp.VestingQueue), + ) + next = resp.Pagination.NextKey + } + }) + t.Run("Total", func(t *testing.T) { + resp, err := qs.ListVestingQueue(ctx, request(nil, 0, 0, true)) + require.NoError(t, err) + require.Equal(t, len(msgs), int(resp.Pagination.Total)) + require.ElementsMatch(t, + nullify.Fill(msgs), + nullify.Fill(resp.VestingQueue), + ) + }) + t.Run("InvalidRequest", func(t *testing.T) { + _, err := qs.ListVestingQueue(ctx, nil) + require.ErrorIs(t, err, status.Error(codes.InvalidArgument, "invalid request")) + }) +} diff --git a/x/fundraising/keeper/store_test.go b/x/fundraising/keeper/store_test.go new file mode 100644 index 0000000..ea8cb36 --- /dev/null +++ b/x/fundraising/keeper/store_test.go @@ -0,0 +1,297 @@ +package keeper_test + +import ( + "time" + + "cosmossdk.io/collections" + "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" + _ "github.com/stretchr/testify/suite" + + "github.com/ignite/modules/x/fundraising/types" +) + +func (s *KeeperTestSuite) TestLastAuctionId() { + cacheCtx, _ := s.ctx.CacheContext() + + auctionId, err := s.keeper.AuctionSeq.Peek(cacheCtx) + s.Require().NoError(err) + s.Require().Equal(uint64(0), auctionId) + + nextAuctionId, err := s.keeper.AuctionSeq.Next(cacheCtx) + s.Require().NoError(err) + s.Require().Equal(uint64(0), nextAuctionId) + + nextAuctionId, err = s.keeper.AuctionSeq.Next(cacheCtx) + s.Require().NoError(err) + s.Require().Equal(uint64(1), nextAuctionId) + + s.createFixedPriceAuction( + s.addr(0), + math.LegacyMustNewDecFromStr("1.0"), + parseCoin("1000000000denom1"), + "denom2", + []types.VestingSchedule{}, + time.Now().AddDate(0, 6, 0), + time.Now().AddDate(0, 6, 0).AddDate(0, 1, 0), + true, + ) + nextAuctionId, err = s.keeper.AuctionSeq.Next(cacheCtx) + s.Require().NoError(err) + s.Require().Equal(uint64(2), nextAuctionId) + + auctions, err := s.keeper.Auctions(s.ctx) + s.Require().NoError(err) + s.Require().Len(auctions, 1) + + s.createFixedPriceAuction( + s.addr(1), + math.LegacyMustNewDecFromStr("0.5"), + parseCoin("5000000000denom3"), + "denom4", + []types.VestingSchedule{}, + time.Now().AddDate(0, 6, 0), + time.Now().AddDate(0, 6, 0).AddDate(0, 1, 0), + true, + ) + nextAuctionId, err = s.keeper.AuctionSeq.Next(cacheCtx) + s.Require().NoError(err) + s.Require().Equal(uint64(3), nextAuctionId) + + auctions, err = s.keeper.Auctions(s.ctx) + s.Require().NoError(err) + s.Require().Len(auctions, 2) +} + +func (s *KeeperTestSuite) TestAllowedBidderByAuction() { + auction := s.createFixedPriceAuction( + s.addr(0), + math.LegacyMustNewDecFromStr("1.0"), + parseCoin("1000000000denom1"), + "denom2", + []types.VestingSchedule{}, + time.Now().AddDate(0, 6, 0), + time.Now().AddDate(0, 6, 0).AddDate(0, 1, 0), + true, + ) + s.Require().Equal(auction.GetStatus(), types.AuctionStatusStandBy) + + allowedBidders, err := s.keeper.GetAllowedBiddersByAuction(s.ctx, auction.Id) + s.Require().NoError(err) + s.Require().Len(allowedBidders, 0) + + // Add new allowed bidders + newAllowedBidders := []types.AllowedBidder{ + {AuctionId: 1, Bidder: s.addr(1).String(), MaxBidAmount: parseInt("100000")}, + {AuctionId: 1, Bidder: s.addr(2).String(), MaxBidAmount: parseInt("100000")}, + {AuctionId: 1, Bidder: s.addr(3).String(), MaxBidAmount: parseInt("100000")}, + } + err = s.keeper.AddAllowedBidders(s.ctx, auction.Id, newAllowedBidders) + s.Require().NoError(err) + + allowedBidders, err = s.keeper.GetAllowedBiddersByAuction(s.ctx, auction.Id) + s.Require().NoError(err) + s.Require().Len(allowedBidders, 3) +} + +func (s *KeeperTestSuite) TestLastBidId() { + auction := s.createFixedPriceAuction( + s.addr(0), + math.LegacyOneDec(), + parseCoin("500000000000denom1"), + "denom2", + []types.VestingSchedule{}, + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 2, 0), + true, + ) + s.Require().Equal(types.AuctionStatusStarted, auction.GetStatus()) + + bidId, err := s.keeper.BidSeq.Get(s.ctx, auction.Id) + s.Require().Error(err) + s.Require().Equal(uint64(0), bidId) + + s.placeBidFixedPrice(auction.Id, s.addr(1), math.LegacyOneDec(), parseCoin("20000000denom2"), true) + s.placeBidFixedPrice(auction.Id, s.addr(2), math.LegacyOneDec(), parseCoin("20000000denom2"), true) + s.placeBidFixedPrice(auction.Id, s.addr(3), math.LegacyOneDec(), parseCoin("15000000denom2"), true) + + bidsById, err := s.keeper.GetBidsByAuctionId(s.ctx, auction.GetId()) + s.Require().NoError(err) + s.Require().Len(bidsById, 3) + + nextId, err := s.keeper.GetNextBidIdWithUpdate(s.ctx, auction.GetId()) + s.Require().NoError(err) + s.Require().Equal(uint64(4), nextId) + + // Create another auction + auction2 := s.createFixedPriceAuction( + s.addr(0), + math.LegacyMustNewDecFromStr("0.5"), + parseCoin("1000000000000denom3"), + "denom4", + []types.VestingSchedule{}, + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 2, 0), + true, + ) + + // Bid id must start from 1 with new auction + bidsById, err = s.keeper.GetBidsByAuctionId(s.ctx, auction2.GetId()) + s.Require().NoError(err) + s.Require().Len(bidsById, 0) + + nextId, err = s.keeper.GetNextBidIdWithUpdate(s.ctx, auction2.GetId()) + s.Require().NoError(err) + s.Require().Equal(uint64(1), nextId) +} + +func (s *KeeperTestSuite) TestIterateBids() { + startedAuction := s.createFixedPriceAuction( + s.addr(0), + math.LegacyOneDec(), + parseCoin("500000000000denom1"), + "denom2", + []types.VestingSchedule{}, + time.Now().AddDate(0, 0, -1), + time.Now().AddDate(0, 0, -1).AddDate(0, 2, 0), + true, + ) + + auction, err := s.keeper.Auction.Get(s.ctx, startedAuction.GetId()) + s.Require().NoError(err) + s.Require().Equal(types.AuctionStatusStarted, auction.GetStatus()) + + s.placeBidFixedPrice(auction.GetId(), s.addr(1), math.LegacyOneDec(), parseCoin("20000000denom2"), true) + s.placeBidFixedPrice(auction.GetId(), s.addr(2), math.LegacyOneDec(), parseCoin("20000000denom2"), true) + s.placeBidFixedPrice(auction.GetId(), s.addr(2), math.LegacyOneDec(), parseCoin("15000000denom2"), true) + s.placeBidFixedPrice(auction.GetId(), s.addr(3), math.LegacyOneDec(), parseCoin("35000000denom2"), true) + + bids, err := s.keeper.Bids(s.ctx) + s.Require().NoError(err) + s.Require().Len(bids, 4) + + bidsById, err := s.keeper.GetBidsByAuctionId(s.ctx, auction.GetId()) + s.Require().NoError(err) + s.Require().Len(bidsById, 4) + + bidsByBidder, err := s.keeper.GetBidsByBidder(s.ctx, s.addr(2)) + s.Require().NoError(err) + s.Require().Len(bidsByBidder, 2) +} + +func (s *KeeperTestSuite) TestVestingQueue() { + vestingQueue := types.NewVestingQueue( + 1, + s.addr(1), + parseCoin("100_000_000denom1"), + types.MustParseRFC3339("2023-01-01T00:00:00Z"), + false, + ) + err := s.keeper.VestingQueue.Set( + s.ctx, + collections.Join( + vestingQueue.AuctionId, + vestingQueue.ReleaseTime, + ), + vestingQueue, + ) + s.Require().NoError(err) + + vq, err := s.keeper.VestingQueue.Get(s.ctx, collections.Join(vestingQueue.AuctionId, vestingQueue.ReleaseTime)) + s.Require().NoError(err) + s.Require().EqualValues(vestingQueue, vq) +} + +func (s *KeeperTestSuite) TestVestingQueueIterator() { + payingReserveAddress := s.addr(0) + payingCoinDenom := "denom1" + reserveCoin := s.getBalance(payingReserveAddress, payingCoinDenom) + + // Set vesting schedules with 2 vesting queues + for _, vs := range []types.VestingSchedule{ + { + ReleaseTime: types.MustParseRFC3339("2023-01-01T00:00:00Z"), + Weight: math.LegacyMustNewDecFromStr("0.5"), + }, + { + ReleaseTime: types.MustParseRFC3339("2023-06-01T00:00:00Z"), + Weight: math.LegacyMustNewDecFromStr("0.5"), + }, + } { + payingAmt := math.LegacyNewDecFromInt(reserveCoin.Amount).MulTruncate(vs.Weight).TruncateInt() + + vestingQueue := types.VestingQueue{ + AuctionId: uint64(1), + Auctioneer: s.addr(1).String(), + PayingCoin: sdk.NewCoin(payingCoinDenom, payingAmt), + ReleaseTime: vs.ReleaseTime, + Released: false, + } + err := s.keeper.VestingQueue.Set( + s.ctx, + collections.Join( + vestingQueue.AuctionId, + vestingQueue.ReleaseTime, + ), + vestingQueue, + ) + s.Require().NoError(err) + } + + // Set vesting schedules with 4 vesting queues + for _, vs := range []types.VestingSchedule{ + { + ReleaseTime: types.MustParseRFC3339("2023-01-01T00:00:00Z"), + Weight: math.LegacyMustNewDecFromStr("0.25"), + }, + { + ReleaseTime: types.MustParseRFC3339("2023-05-01T00:00:00Z"), + Weight: math.LegacyMustNewDecFromStr("0.25"), + }, + { + ReleaseTime: types.MustParseRFC3339("2023-09-01T00:00:00Z"), + Weight: math.LegacyMustNewDecFromStr("0.25"), + }, + { + ReleaseTime: types.MustParseRFC3339("2023-12-01T00:00:00Z"), + Weight: math.LegacyMustNewDecFromStr("0.25"), + }, + } { + payingAmt := math.LegacyNewDecFromInt(reserveCoin.Amount).MulTruncate(vs.Weight).TruncateInt() + + vestingQueue := types.VestingQueue{ + AuctionId: uint64(2), + Auctioneer: s.addr(2).String(), + PayingCoin: sdk.NewCoin(payingCoinDenom, payingAmt), + ReleaseTime: vs.ReleaseTime, + Released: false, + } + err := s.keeper.VestingQueue.Set( + s.ctx, + collections.Join( + vestingQueue.AuctionId, + vestingQueue.ReleaseTime, + ), + vestingQueue, + ) + s.Require().NoError(err) + } + + vq1, err := s.keeper.GetVestingQueuesByAuctionId(s.ctx, uint64(1)) + s.Require().NoError(err) + s.Require().Len(vq1, 2) + + vq2, err := s.keeper.GetVestingQueuesByAuctionId(s.ctx, uint64(2)) + s.Require().NoError(err) + s.Require().Len(vq2, 4) + + vqs, err := s.keeper.VestingQueues(s.ctx) + s.Require().NoError(err) + s.Require().Len(vqs, 6) + + totalPayingCoin := sdk.NewInt64Coin(payingCoinDenom, 0) + for _, vq := range vq2 { + totalPayingCoin = totalPayingCoin.Add(vq.PayingCoin) + } + s.Require().Equal(reserveCoin, totalPayingCoin) +} diff --git a/x/fundraising/keeper/vesting.go b/x/fundraising/keeper/vesting.go new file mode 100644 index 0000000..d7ca9c8 --- /dev/null +++ b/x/fundraising/keeper/vesting.go @@ -0,0 +1,110 @@ +package keeper + +import ( + "context" + "time" + + "cosmossdk.io/collections" + "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/ignite/modules/x/fundraising/types" +) + +// VestingQueues returns all VestingQueue. +func (k Keeper) VestingQueues(ctx context.Context) ([]types.VestingQueue, error) { + vestingQueues := make([]types.VestingQueue, 0) + err := k.IterateVestingQueues(ctx, func(_ collections.Pair[uint64, time.Time], bid types.VestingQueue) (bool, error) { + vestingQueues = append(vestingQueues, bid) + return false, nil + }) + return vestingQueues, err +} + +// IterateVestingQueues iterates over all the VestingQueues and performs a callback function. +func (k Keeper) IterateVestingQueues(ctx context.Context, cb func(collections.Pair[uint64, time.Time], types.VestingQueue) (bool, error)) error { + err := k.VestingQueue.Walk(ctx, nil, cb) + if err != nil { + return err + } + return nil +} + +// GetVestingQueuesByAuctionId returns all vesting queues associated with the auction id that are registered in the store. +func (k Keeper) GetVestingQueuesByAuctionId(ctx context.Context, auctionId uint64) ([]types.VestingQueue, error) { + vestingQueues := make([]types.VestingQueue, 0) + rng := collections.NewPrefixedPairRange[uint64, time.Time](auctionId) + err := k.VestingQueue.Walk(ctx, rng, func(key collections.Pair[uint64, time.Time], vestingQueue types.VestingQueue) (bool, error) { + vestingQueues = append(vestingQueues, vestingQueue) + return false, nil + }) + return vestingQueues, err +} + +// ApplyVestingSchedules stores vesting queues based on the vesting schedules of the auction and +// sets status to vesting. +func (k Keeper) ApplyVestingSchedules(ctx context.Context, auction types.AuctionI) error { + payingReserveAddr := auction.GetPayingReserveAddress() + vestingReserveAddr := auction.GetVestingReserveAddress() + payingCoinDenom := auction.GetPayingCoinDenom() + spendableCoins := k.bankKeeper.SpendableCoins(ctx, payingReserveAddr) + reserveCoin := sdk.NewCoin(payingCoinDenom, spendableCoins.AmountOf(payingCoinDenom)) + + vsLen := len(auction.GetVestingSchedules()) + if vsLen == 0 { + // Send reserve coins to the auctioneer from the paying reserve account + if err := k.bankKeeper.SendCoins(ctx, payingReserveAddr, auction.GetAuctioneer(), sdk.NewCoins(reserveCoin)); err != nil { + return err + } + + if err := auction.SetStatus(types.AuctionStatusFinished); err != nil { + return err + } + if err := k.Auction.Set(ctx, auction.GetId(), auction); err != nil { + return err + } + } else { + // Move reserve coins from the paying reserve to the vesting reserve account + if err := k.bankKeeper.SendCoins(ctx, payingReserveAddr, vestingReserveAddr, sdk.NewCoins(reserveCoin)); err != nil { + return err + } + + remaining := reserveCoin + for i, schedule := range auction.GetVestingSchedules() { + payingAmt := math.LegacyNewDecFromInt(reserveCoin.Amount).MulTruncate(schedule.Weight).TruncateInt() + + // All the remaining paying coin goes to the last vesting queue + if i == vsLen-1 { + payingAmt = remaining.Amount + } + + if err := k.VestingQueue.Set( + ctx, + collections.Join( + auction.GetId(), + schedule.ReleaseTime, + ), + types.VestingQueue{ + AuctionId: auction.GetId(), + Auctioneer: auction.GetAuctioneer().String(), + PayingCoin: sdk.NewCoin(payingCoinDenom, payingAmt), + ReleaseTime: schedule.ReleaseTime, + Released: false, + }, + ); err != nil { + return err + } + + remaining = remaining.SubAmount(payingAmt) + } + + if err := auction.SetStatus(types.AuctionStatusVesting); err != nil { + return err + } + if err := k.Auction.Set(ctx, auction.GetId(), auction); err != nil { + return err + } + } + + return nil +} diff --git a/x/fundraising/keeper/vesting_test.go b/x/fundraising/keeper/vesting_test.go new file mode 100644 index 0000000..e026c5d --- /dev/null +++ b/x/fundraising/keeper/vesting_test.go @@ -0,0 +1,97 @@ +package keeper_test + +import ( + "time" + + "github.com/ignite/modules/x/fundraising/types" + + _ "github.com/stretchr/testify/suite" +) + +func (s *KeeperTestSuite) TestApplyVestingSchedules_NoSchedule() { + startTime := time.Now().AddDate(0, 0, -1) + endTime := startTime.AddDate(0, 1, 0) + + auction := s.createFixedPriceAuction( + s.addr(0), + parseDec("0.5"), + parseCoin("1_000_000_000_000denom1"), + "denom2", + []types.VestingSchedule{}, + startTime, + endTime, + true, + ) + s.Require().Equal(types.AuctionStatusStarted, auction.GetStatus()) + + s.placeBidFixedPrice(auction.GetId(), s.addr(1), parseDec("0.5"), parseCoin("15_000_000denom1"), true) + s.placeBidFixedPrice(auction.GetId(), s.addr(2), parseDec("0.5"), parseCoin("15_000_000denom2"), true) + s.placeBidFixedPrice(auction.GetId(), s.addr(3), parseDec("0.5"), parseCoin("55_000_000denom1"), true) + s.placeBidFixedPrice(auction.GetId(), s.addr(4), parseDec("0.5"), parseCoin("30_000_000denom2"), true) + + // Apply schedules + err := s.keeper.ApplyVestingSchedules(s.ctx, auction) + s.Require().NoError(err) + + // Vesting reserve must have zero balance + vestingReserveAddr := auction.GetVestingReserveAddress() + vestingReserveCoin := s.getBalance(vestingReserveAddr, auction.PayingCoinDenom) + s.Require().True(vestingReserveCoin.IsZero()) + + // Auctioneer must have all the paying coin amounts in exchange of the selling coin + auctioneerBalance := s.getBalance(auction.GetAuctioneer(), auction.PayingCoinDenom) + s.Require().False(auctioneerBalance.IsZero()) + + // Status must be finished + a, err := s.keeper.Auction.Get(s.ctx, auction.GetId()) + s.Require().NoError(err) + s.Require().Equal(types.AuctionStatusFinished, a.GetStatus()) +} + +func (s *KeeperTestSuite) TestApplyVestingSchedules_RemainingCoin() { + startTime := time.Now().AddDate(0, 0, -1) + endTime := startTime.AddDate(0, 1, 0) + + auction := s.createFixedPriceAuction( + s.addr(0), + parseDec("1.0"), + parseCoin("1_000_000_000_000denom1"), + "denom2", + []types.VestingSchedule{ + { + ReleaseTime: endTime.AddDate(0, 6, 0), + Weight: parseDec("0.3"), + }, + { + ReleaseTime: endTime.AddDate(0, 9, 0), + Weight: parseDec("0.3"), + }, + { + ReleaseTime: endTime.AddDate(1, 0, 0), + Weight: parseDec("0.4"), + }, + }, + startTime, + endTime, + true, + ) + s.Require().Equal(types.AuctionStatusStarted, auction.GetStatus()) + + s.placeBidFixedPrice(auction.GetId(), s.addr(1), parseDec("1.0"), parseCoin("20000000denom2"), true) + s.placeBidFixedPrice(auction.GetId(), s.addr(2), parseDec("1.0"), parseCoin("20000000denom2"), true) + s.placeBidFixedPrice(auction.GetId(), s.addr(2), parseDec("1.0"), parseCoin("15000000denom2"), true) + + err := s.keeper.ApplyVestingSchedules(s.ctx, auction) + s.Require().NoError(err) + + vestingReserveAddr := auction.GetVestingReserveAddress() + vestingReserveCoin := s.getBalance(vestingReserveAddr, auction.PayingCoinDenom) + + vqs, err := s.keeper.GetVestingQueuesByAuctionId(s.ctx, auction.GetId()) + s.Require().NoError(err) + + for _, vq := range vqs { + vestingReserveCoin = vestingReserveCoin.Sub(vq.PayingCoin) + } + s.Require().True(vestingReserveCoin.IsZero()) +} diff --git a/x/fundraising/module/autocli.go b/x/fundraising/module/autocli.go new file mode 100644 index 0000000..db7f2f6 --- /dev/null +++ b/x/fundraising/module/autocli.go @@ -0,0 +1,117 @@ +package fundraising + +import ( + autocliv1 "cosmossdk.io/api/cosmos/autocli/v1" + + modulev1 "github.com/ignite/modules/api/modules/fundraising/v1" + "github.com/ignite/modules/x/fundraising/keeper" +) + +// AutoCLIOptions implements the autocli.HasAutoCLIConfig interface. +func (am AppModule) AutoCLIOptions() *autocliv1.ModuleOptions { + moduloOpts := &autocliv1.ModuleOptions{ + Query: &autocliv1.ServiceCommandDescriptor{ + Service: modulev1.Query_ServiceDesc.ServiceName, + RpcCommandOptions: []*autocliv1.RpcCommandOptions{ + { + RpcMethod: "Params", + Use: "params", + Short: "Shows the parameters of the module", + }, + { + RpcMethod: "ListAllowedBidder", + Use: "list-allowed-bidder", + Short: "List all AllowedBidder", + }, + { + RpcMethod: "GetAllowedBidder", + Use: "get-allowed-bidder [id]", + Short: "Gets a AllowedBidder", + Alias: []string{"show-allowed-bidder"}, + PositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: "auctionId"}}, + }, + { + RpcMethod: "ListVestingQueue", + Use: "list-vesting-queue", + Short: "List all VestingQueue", + }, + { + RpcMethod: "ListBid", + Use: "list-bid", + Short: "List all Bid", + }, + { + RpcMethod: "GetBid", + Use: "get-bid [id]", + Short: "Gets a Bid by id", + Alias: []string{"show-bid"}, + PositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: "id"}}, + }, + { + RpcMethod: "ListAuction", + Use: "list-auction", + Short: "List all auction", + }, + { + RpcMethod: "GetAuction", + Use: "get-auction [id]", + Short: "Gets a auction by id", + Alias: []string{"show-auction"}, + PositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: "id"}}, + }, + // this line is used by ignite scaffolding # autocli/query + }, + }, + Tx: &autocliv1.ServiceCommandDescriptor{ + Service: modulev1.Msg_ServiceDesc.ServiceName, + EnhanceCustomCommand: true, // only required if you want to use the custom command + RpcCommandOptions: []*autocliv1.RpcCommandOptions{ + { + RpcMethod: "UpdateParams", + Skip: true, // skipped because authority gated + }, + { + RpcMethod: "CreateFixedPriceAuction", + Use: "create-fixed-price-auction [start-price] [selling-coin] [paying-coin-denom] [vesting-schedules] [start-time] [end-time]", + Short: "Send a CreateFixedPriceAuction tx", + PositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: "startPrice"}, {ProtoField: "sellingCoin"}, {ProtoField: "payingCoinDenom"}, {ProtoField: "vestingSchedules"}, {ProtoField: "startTime"}, {ProtoField: "endTime"}}, + }, + { + RpcMethod: "CreateBatchAuction", + Use: "create-batch-auction [start-price] [min-bid-price] [selling-coin] [paying-coin-denom] [vesting-schedules] [max-extended-round] [extended-round-rate] [start-time] [end-time]", + Short: "Send a CreateBatchAuction tx", + PositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: "startPrice"}, {ProtoField: "minBidPrice"}, {ProtoField: "sellingCoin"}, {ProtoField: "payingCoinDenom"}, {ProtoField: "vestingSchedules"}, {ProtoField: "maxExtendedRound"}, {ProtoField: "extendedRoundRate"}, {ProtoField: "startTime"}, {ProtoField: "endTime"}}, + }, + { + RpcMethod: "CancelAuction", + Use: "cancel-auction [auction-id]", + Short: "Send a CancelAuction tx", + PositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: "auctionId"}}, + }, + { + RpcMethod: "PlaceBid", + Use: "place-bid [auction-id] [bid-type] [price] [coin]", + Short: "Send a PlaceBid tx", + PositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: "auctionId"}, {ProtoField: "bidType"}, {ProtoField: "price"}, {ProtoField: "coin"}}, + }, + { + RpcMethod: "ModifyBid", + Use: "modify-bid [auction-id] [bid-id] [price] [coin]", + Short: "Send a ModifyBid tx", + PositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: "auctionId"}, {ProtoField: "bidId"}, {ProtoField: "price"}, {ProtoField: "coin"}}, + }, + // this line is used by ignite scaffolding # autocli/tx + }, + }, + } + if keeper.EnableAddAllowedBidder { + moduloOpts.Tx.RpcCommandOptions = append(moduloOpts.Tx.RpcCommandOptions, &autocliv1.RpcCommandOptions{ + RpcMethod: "AddAllowedBidder", + Use: "add-allowed-bidder [auction-id] [allowed-bidder]", + Short: "Send a AddAllowedBidder tx", + PositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: "auctionId"}, {ProtoField: "allowedBidder"}}, + }) + } + + return moduloOpts +} diff --git a/x/fundraising/module/genesis.go b/x/fundraising/module/genesis.go new file mode 100644 index 0000000..1cbd090 --- /dev/null +++ b/x/fundraising/module/genesis.go @@ -0,0 +1,150 @@ +package fundraising + +import ( + "context" + "errors" + "fmt" + "time" + + "cosmossdk.io/collections" + codectypes "github.com/cosmos/cosmos-sdk/codec/types" + sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/ignite/modules/x/fundraising/keeper" + "github.com/ignite/modules/x/fundraising/types" +) + +// InitGenesis initializes the module's state from a provided genesis state. +func InitGenesis(ctx context.Context, k keeper.Keeper, genState types.GenesisState) error { + // Prevents from nil slice + if len(genState.Params.AuctionCreationFee) == 0 { + genState.Params.AuctionCreationFee = sdk.Coins{} + } + if len(genState.Params.PlaceBidFee) == 0 { + genState.Params.PlaceBidFee = sdk.Coins{} + } + + // Set all the auction + for _, elem := range genState.AuctionList { + auction, err := types.UnpackAuction(elem) + if err != nil { + return err + } + auctionID, err := k.AuctionSeq.Next(ctx) + if err != nil { + return err + } + if err := auction.SetId(auctionID); err != nil { + return err + } + if err := k.Auction.Set(ctx, auctionID, auction); err != nil { + return err + } + } + + // Set all the allowedBidder + for _, elem := range genState.AllowedBidderList { + bidder, err := sdk.AccAddressFromBech32(elem.Bidder) + if err != nil { + return err + } + if err := k.AllowedBidder.Set(ctx, collections.Join(elem.AuctionId, bidder), elem); err != nil { + return err + } + } + + // Set all the bid + for _, elem := range genState.BidList { + _, err := k.Auction.Get(ctx, elem.AuctionId) + if errors.Is(err, collections.ErrNotFound) { + return fmt.Errorf("bid auction %d is not found", elem.AuctionId) + } + + bidID, err := k.GetNextBidIdWithUpdate(ctx, elem.AuctionId) + if err != nil { + return err + } + elem.Id = bidID + if err := k.Bid.Set(ctx, collections.Join(elem.AuctionId, elem.Id), elem); err != nil { + return err + } + } + + // Set all the vestingQueue + for _, elem := range genState.VestingQueueList { + _, err := k.Auction.Get(ctx, elem.AuctionId) + if errors.Is(err, collections.ErrNotFound) { + return fmt.Errorf("vesting queue auction %d is not found", elem.AuctionId) + } + + if err := k.VestingQueue.Set( + ctx, + collections.Join( + elem.AuctionId, + elem.ReleaseTime, + ), + elem); err != nil { + return err + } + } + + // this line is used by starport scaffolding # genesis/module/init + + return k.Params.Set(ctx, genState.Params) +} + +// ExportGenesis returns the module's exported genesis. +func ExportGenesis(ctx context.Context, k keeper.Keeper) (*types.GenesisState, error) { + var err error + + genesis := types.DefaultGenesis() + genesis.Params, err = k.Params.Get(ctx) + if err != nil { + return nil, err + } + // Prevents from nil slice + if len(genesis.Params.AuctionCreationFee) == 0 { + genesis.Params.AuctionCreationFee = sdk.Coins{} + } + if len(genesis.Params.PlaceBidFee) == 0 { + genesis.Params.PlaceBidFee = sdk.Coins{} + } + + if err := k.AllowedBidder.Walk(ctx, nil, func(_ collections.Pair[uint64, sdk.AccAddress], val types.AllowedBidder) (bool, error) { + genesis.AllowedBidderList = append(genesis.AllowedBidderList, val) + return false, nil + }); err != nil { + return nil, err + } + if err := k.VestingQueue.Walk(ctx, nil, func(key collections.Pair[uint64, time.Time], val types.VestingQueue) (bool, error) { + genesis.VestingQueueList = append(genesis.VestingQueueList, val) + return false, nil + }); err != nil { + return nil, err + } + + err = k.Bid.Walk(ctx, nil, func(key collections.Pair[uint64, uint64], val types.Bid) (bool, error) { + genesis.BidList = append(genesis.BidList, val) + return false, nil + }) + if err != nil { + return nil, err + } + + genesis.AuctionList = make([]*codectypes.Any, 0) + err = k.Auction.Walk(ctx, nil, func(key uint64, elem types.AuctionI) (bool, error) { + auctionAny, err := types.PackAuction(elem) + if err != nil { + panic(err) + } + genesis.AuctionList = append(genesis.AuctionList, auctionAny) + return false, nil + }) + if err != nil { + return nil, err + } + + // this line is used by starport scaffolding # genesis/module/export + + return genesis, nil +} diff --git a/x/fundraising/module/genesis_test.go b/x/fundraising/module/genesis_test.go new file mode 100644 index 0000000..e90ee54 --- /dev/null +++ b/x/fundraising/module/genesis_test.go @@ -0,0 +1,147 @@ +package fundraising_test + +import ( + "encoding/json" + "math/rand" + "testing" + + "cosmossdk.io/math" + "github.com/cosmos/cosmos-sdk/codec" + codectypes "github.com/cosmos/cosmos-sdk/codec/types" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/module" + simtypes "github.com/cosmos/cosmos-sdk/types/simulation" + "github.com/stretchr/testify/require" + + keepertest "github.com/ignite/modules/testutil/keeper" + "github.com/ignite/modules/testutil/nullify" + "github.com/ignite/modules/testutil/sample" + fundraising "github.com/ignite/modules/x/fundraising/module" + "github.com/ignite/modules/x/fundraising/types" +) + +var r *rand.Rand + +// initialize random generator +func init() { + s := rand.NewSource(1) + r = rand.New(s) +} + +func TestGenesis(t *testing.T) { + auctionAny1, _ := types.PackAuction(types.NewFixedPriceAuction( + &types.BaseAuction{Id: 1}, + sdk.NewInt64Coin("denom1", 1_000), + )) + auctionAny2, _ := types.PackAuction(types.NewFixedPriceAuction( + &types.BaseAuction{Id: 2}, + sdk.NewInt64Coin("denom2", 2_000), + )) + + genesisState := types.GenesisState{ + Params: types.DefaultParams(), + + AllowedBidderList: []types.AllowedBidder{ + { + AuctionId: 0, + Bidder: sample.Address(r), + }, + { + AuctionId: 1, + Bidder: sample.Address(r), + }, + }, + VestingQueueList: []types.VestingQueue{ + { + AuctionId: 0, + }, + { + AuctionId: 1, + }, + }, + BidList: []types.Bid{ + { + Id: 0, + }, + { + Id: 1, + }, + }, + AuctionList: []*codectypes.Any{auctionAny1, auctionAny2}, + // this line is used by starport scaffolding # genesis/test/state + } + + k, ctx, _ := keepertest.FundraisingKeeper(t) + err := fundraising.InitGenesis(ctx, k, genesisState) + require.NoError(t, err) + got, err := fundraising.ExportGenesis(ctx, k) + require.NoError(t, err) + require.NotNil(t, got) + + nullify.Fill(&genesisState) + nullify.Fill(got) + + require.ElementsMatch(t, genesisState.AllowedBidderList, got.AllowedBidderList) + require.ElementsMatch(t, genesisState.VestingQueueList, got.VestingQueueList) + require.ElementsMatch(t, genesisState.BidList, got.BidList) + require.ElementsMatch(t, genesisState.AuctionList, got.AuctionList) + // this line is used by starport scaffolding # genesis/test/assert +} + +// TestRandomizedGenState tests the normal scenario of applying RandomizedGenState. +// Abnormal scenarios are not tested here. +func TestRandomizedGenState(t *testing.T) { + interfaceRegistry := codectypes.NewInterfaceRegistry() + cdc := codec.NewProtoCodec(interfaceRegistry) + s := rand.NewSource(1) + r := rand.New(s) + + simState := module.SimulationState{ + AppParams: make(simtypes.AppParams), + Cdc: cdc, + Rand: r, + NumBonded: 3, + Accounts: simtypes.RandomAccounts(r, 3), + InitialStake: math.NewInt(1000), + GenState: make(map[string]json.RawMessage), + } + + fundraising.RandomizedGenState(&simState) + + var genState types.GenesisState + simState.Cdc.MustUnmarshalJSON(simState.GenState[types.ModuleName], &genState) + + dec1 := sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, math.NewInt(36122540))) + dec3 := uint32(5) + + require.Equal(t, dec1, genState.Params.AuctionCreationFee) + require.Equal(t, dec3, genState.Params.ExtendedPeriod) +} + +// TestRandomizedGenState tests abnormal scenarios of applying RandomizedGenState. +func TestRandomizedGenState1(t *testing.T) { + interfaceRegistry := codectypes.NewInterfaceRegistry() + cdc := codec.NewProtoCodec(interfaceRegistry) + + s := rand.NewSource(1) + r := rand.New(s) + + // all these tests will panic + tests := []struct { + simState module.SimulationState + panicMsg string + }{ + { // panic => reason: incomplete initialization of the simState + module.SimulationState{}, "invalid memory address or nil pointer dereference"}, + { // panic => reason: incomplete initialization of the simState + module.SimulationState{ + AppParams: make(simtypes.AppParams), + Cdc: cdc, + Rand: r, + }, "assignment to entry in nil map"}, + } + + for _, tt := range tests { + require.Panicsf(t, func() { fundraising.RandomizedGenState(&tt.simState) }, tt.panicMsg) + } +} diff --git a/x/fundraising/module/module.go b/x/fundraising/module/module.go new file mode 100644 index 0000000..898f100 --- /dev/null +++ b/x/fundraising/module/module.go @@ -0,0 +1,255 @@ +package fundraising + +import ( + "context" + "encoding/json" + "fmt" + "sort" + + "cosmossdk.io/core/address" + "cosmossdk.io/core/appmodule" + "cosmossdk.io/core/store" + "cosmossdk.io/depinject" + "cosmossdk.io/log" + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/codec" + cdctypes "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" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + "github.com/grpc-ecosystem/grpc-gateway/runtime" + "golang.org/x/exp/maps" + + // this line is used by starport scaffolding # 1 + + modulev1 "github.com/ignite/modules/api/modules/fundraising/module/v1" + "github.com/ignite/modules/x/fundraising/keeper" + "github.com/ignite/modules/x/fundraising/types" +) + +var ( + _ module.AppModuleBasic = (*AppModule)(nil) + _ module.AppModuleSimulation = (*AppModule)(nil) + _ module.HasGenesis = (*AppModule)(nil) + _ module.HasInvariants = (*AppModule)(nil) + _ module.HasConsensusVersion = (*AppModule)(nil) + + _ appmodule.AppModule = (*AppModule)(nil) + _ appmodule.HasBeginBlocker = (*AppModule)(nil) + _ appmodule.HasEndBlocker = (*AppModule)(nil) +) + +// ---------------------------------------------------------------------------- +// AppModuleBasic +// ---------------------------------------------------------------------------- + +// AppModuleBasic implements the AppModuleBasic interface that defines the +// independent methods a Cosmos SDK module needs to implement. +type AppModuleBasic struct { + cdc codec.BinaryCodec +} + +func NewAppModuleBasic(cdc codec.BinaryCodec) AppModuleBasic { + return AppModuleBasic{cdc: cdc} +} + +// Name returns the name of the module as a string. +func (AppModuleBasic) Name() string { + return types.ModuleName +} + +// RegisterLegacyAminoCodec registers the amino codec for the module, which is used +// to marshal and unmarshal structs to/from []byte in order to persist them in the module's KVStore. +func (AppModuleBasic) RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) {} + +// RegisterInterfaces registers a module's interface types and their concrete implementations as proto.Message. +func (a AppModuleBasic) RegisterInterfaces(reg cdctypes.InterfaceRegistry) { + types.RegisterInterfaces(reg) +} + +// DefaultGenesis returns a default GenesisState for the module, marshalled to json.RawMessage. +// The default GenesisState need to be defined by the module developer and is primarily used for testing. +func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage { + return cdc.MustMarshalJSON(types.DefaultGenesis()) +} + +// ValidateGenesis used to validate the GenesisState, given in its json.RawMessage form. +func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncodingConfig, bz json.RawMessage) error { + var genState types.GenesisState + if err := cdc.UnmarshalJSON(bz, &genState); err != nil { + return fmt.Errorf("failed to unmarshal %s genesis state: %w", types.ModuleName, err) + } + return genState.Validate() +} + +// RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the module. +func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) { + if err := types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)); err != nil { + panic(err) + } +} + +// ---------------------------------------------------------------------------- +// AppModule +// ---------------------------------------------------------------------------- + +// AppModule implements the AppModule interface that defines the inter-dependent methods that modules need to implement +type AppModule struct { + AppModuleBasic + + keeper keeper.Keeper + accountKeeper types.AccountKeeper + bankKeeper types.BankKeeper +} + +func NewAppModule( + cdc codec.Codec, + keeper keeper.Keeper, + accountKeeper types.AccountKeeper, + bankKeeper types.BankKeeper, +) AppModule { + return AppModule{ + AppModuleBasic: NewAppModuleBasic(cdc), + keeper: keeper, + accountKeeper: accountKeeper, + bankKeeper: bankKeeper, + } +} + +// RegisterServices registers a gRPC query service to respond to the module-specific gRPC queries +func (am AppModule) RegisterServices(cfg module.Configurator) { + types.RegisterMsgServer(cfg.MsgServer(), keeper.NewMsgServerImpl(am.keeper)) + types.RegisterQueryServer(cfg.QueryServer(), keeper.NewQueryServerImpl(am.keeper)) +} + +// RegisterInvariants registers the invariants of the module. If an invariant deviates from its predicted value, the InvariantRegistry triggers appropriate logic (most often the chain will be halted) +func (am AppModule) RegisterInvariants(_ sdk.InvariantRegistry) {} + +// InitGenesis performs the module's genesis initialization. It returns no validator updates. +func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, gs json.RawMessage) { + var genState types.GenesisState + // Initialize global index to index in genesis state + cdc.MustUnmarshalJSON(gs, &genState) + if err := InitGenesis(ctx, am.keeper, genState); err != nil { + panic(err) + } +} + +// ExportGenesis returns the module's exported genesis state as raw JSON bytes. +func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.RawMessage { + genState, err := ExportGenesis(ctx, am.keeper) + if err != nil { + panic(err) + } + return cdc.MustMarshalJSON(genState) +} + +// ConsensusVersion is a sequence number for state-breaking change of the module. +// It should be incremented on each consensus-breaking change introduced by the module. +// To avoid wrong/empty versions, the initial version should be set to 1. +func (AppModule) ConsensusVersion() uint64 { return 1 } + +// BeginBlock contains the logic that is automatically triggered at the beginning of each block. +// The begin block implementation is optional. +func (am AppModule) BeginBlock(ctx context.Context) error { + if err := am.keeper.BeginBlocker(ctx); err != nil { + return err + } + return nil +} + +// EndBlock contains the logic that is automatically triggered at the end of each block. +// The end block implementation is optional. +func (am AppModule) EndBlock(_ context.Context) error { + return nil +} + +// IsOnePerModuleType implements the depinject.OnePerModuleType interface. +func (am AppModule) IsOnePerModuleType() {} + +// IsAppModule implements the appmodule.AppModule interface. +func (am AppModule) IsAppModule() {} + +// ---------------------------------------------------------------------------- +// App Wiring Setup +// ---------------------------------------------------------------------------- + +func init() { + appmodule.Register( + &modulev1.Module{}, + appmodule.Provide(ProvideModule), + appmodule.Invoke(InvokeSetHooks), + ) +} + +type ModuleInputs struct { + depinject.In + + AddressCodec address.Codec + StoreService store.KVStoreService + Cdc codec.Codec + Config *modulev1.Module + Logger log.Logger + + AccountKeeper types.AccountKeeper + BankKeeper types.BankKeeper + DistrKeeper types.DistrKeeper +} + +type ModuleOutputs struct { + depinject.Out + + FundraisingKeeper keeper.Keeper + Module appmodule.AppModule +} + +func ProvideModule(in ModuleInputs) ModuleOutputs { + // default to governance authority if not provided + authority := authtypes.NewModuleAddress(govtypes.ModuleName) + if in.Config.Authority != "" { + authority = authtypes.NewModuleAddressOrBech32Address(in.Config.Authority) + } + k := keeper.NewKeeper( + in.Cdc, + in.AddressCodec, + in.StoreService, + in.Logger, + authority.String(), + in.AccountKeeper, + in.BankKeeper, + in.DistrKeeper, + ) + m := NewAppModule( + in.Cdc, + k, + in.AccountKeeper, + in.BankKeeper, + ) + + return ModuleOutputs{FundraisingKeeper: k, Module: m} +} + +func InvokeSetHooks(keeper *keeper.Keeper, hooks map[string]types.FundraisingHooks) error { + if keeper == nil || hooks == nil { + return nil + } + + // Default ordering is lexical by module name. + // Explicit ordering can be added to the module config if required. + modNames := maps.Keys(hooks) + order := modNames + sort.Strings(order) + + var multiHooks types.MultiFundraisingHooks + for _, modName := range order { + hook, ok := hooks[modName] + if !ok { + return fmt.Errorf("can't find staking hooks for module %s", modName) + } + multiHooks = append(multiHooks, hook) + } + + keeper.SetHooks(multiHooks) + return nil +} diff --git a/x/fundraising/module/simulation.go b/x/fundraising/module/simulation.go new file mode 100644 index 0000000..8b75beb --- /dev/null +++ b/x/fundraising/module/simulation.go @@ -0,0 +1,197 @@ +package fundraising + +import ( + "math/rand" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/module" + simtypes "github.com/cosmos/cosmos-sdk/types/simulation" + "github.com/cosmos/cosmos-sdk/x/simulation" + + "github.com/ignite/modules/testutil/sample" + + fundraisingsimulation "github.com/ignite/modules/x/fundraising/simulation" + "github.com/ignite/modules/x/fundraising/types" +) + +// avoid unused import issue +var _ = sample.AccAddress + +const ( + opWeightMsgCreateFixedPriceAuction = "op_weight_msg_create_fixed_price_auction" + defaultWeightMsgCreateFixedPriceAuction int = 20 + + opWeightMsgCreateBatchAuction = "op_weight_msg_create_batch_auction" + defaultWeightMsgCreateBatchAuction int = 20 + + opWeightMsgCancelAuction = "op_weight_msg_cancel_auction" + defaultWeightMsgCancelAuction int = 15 + + opWeightMsgPlaceBid = "op_weight_msg_place_bid" + defaultWeightMsgPlaceBid int = 80 + + opWeightMsgModifyBid = "op_weight_msg_modify_bid" + defaultWeightMsgModifyBid int = 15 + + // this line is used by starport scaffolding # simapp/module/const +) + +const ( + AuctionCreationFee = "auction_creation_fee" + ExtendedPeriod = "extended_period" +) + +// GenAuctionCreationFee return randomized auction creation fee. +func GenAuctionCreationFee(r *rand.Rand) sdk.Coins { + return sdk.NewCoins(sdk.NewInt64Coin(sdk.DefaultBondDenom, int64(simtypes.RandIntBetween(r, 0, 100_000_000)))) +} + +// GenExtendedPeriod return default extended period. +func GenExtendedPeriod(r *rand.Rand) uint32 { + return uint32(simtypes.RandIntBetween(r, int(types.DefaultExtendedPeriod), 10)) +} + +// RandomizedGenState generates a random GenesisState. +func RandomizedGenState(simState *module.SimulationState) { + accs := make([]string, len(simState.Accounts)) + for i, acc := range simState.Accounts { + accs[i] = acc.Address.String() + } + fundraisingGenesis := types.GenesisState{ + Params: types.DefaultParams(), + // this line is used by starport scaffolding # simapp/module/genesisState + } + + var auctionCreationFee sdk.Coins + simState.AppParams.GetOrGenerate(AuctionCreationFee, &auctionCreationFee, simState.Rand, func(r *rand.Rand) { + auctionCreationFee = GenAuctionCreationFee(r) + }) + + var extendedPeriod uint32 + simState.AppParams.GetOrGenerate(ExtendedPeriod, &extendedPeriod, simState.Rand, func(r *rand.Rand) { + extendedPeriod = GenExtendedPeriod(r) + }) + + fundraisingGenesis.Params.AuctionCreationFee = auctionCreationFee + fundraisingGenesis.Params.ExtendedPeriod = extendedPeriod + simState.GenState[types.ModuleName] = simState.Cdc.MustMarshalJSON(&fundraisingGenesis) +} + +// GenerateGenesisState creates a randomized GenState of the module. +func (AppModule) GenerateGenesisState(simState *module.SimulationState) { + RandomizedGenState(simState) +} + +// RegisterStoreDecoder registers a decoder. +func (am AppModule) RegisterStoreDecoder(_ simtypes.StoreDecoderRegistry) {} + +// WeightedOperations returns the all the gov module operations with their respective weights. +func (am AppModule) WeightedOperations(simState module.SimulationState) []simtypes.WeightedOperation { + operations := make([]simtypes.WeightedOperation, 0) + + var weightMsgCreateFixedPriceAuction int + simState.AppParams.GetOrGenerate(opWeightMsgCreateFixedPriceAuction, &weightMsgCreateFixedPriceAuction, nil, + func(_ *rand.Rand) { + weightMsgCreateFixedPriceAuction = defaultWeightMsgCreateFixedPriceAuction + }, + ) + operations = append(operations, simulation.NewWeightedOperation( + weightMsgCreateFixedPriceAuction, + fundraisingsimulation.SimulateMsgCreateFixedPriceAuction(am.accountKeeper, am.bankKeeper, am.keeper, simState.TxConfig), + )) + + var weightMsgCreateBatchAuction int + simState.AppParams.GetOrGenerate(opWeightMsgCreateBatchAuction, &weightMsgCreateBatchAuction, nil, + func(_ *rand.Rand) { + weightMsgCreateBatchAuction = defaultWeightMsgCreateBatchAuction + }, + ) + operations = append(operations, simulation.NewWeightedOperation( + weightMsgCreateBatchAuction, + fundraisingsimulation.SimulateMsgCreateBatchAuction(am.accountKeeper, am.bankKeeper, am.keeper, simState.TxConfig), + )) + + var weightMsgCancelAuction int + simState.AppParams.GetOrGenerate(opWeightMsgCancelAuction, &weightMsgCancelAuction, nil, + func(_ *rand.Rand) { + weightMsgCancelAuction = defaultWeightMsgCancelAuction + }, + ) + operations = append(operations, simulation.NewWeightedOperation( + weightMsgCancelAuction, + fundraisingsimulation.SimulateMsgCancelAuction(am.accountKeeper, am.bankKeeper, am.keeper, simState.TxConfig), + )) + + var weightMsgPlaceBid int + simState.AppParams.GetOrGenerate(opWeightMsgPlaceBid, &weightMsgPlaceBid, nil, + func(_ *rand.Rand) { + weightMsgPlaceBid = defaultWeightMsgPlaceBid + }, + ) + operations = append(operations, simulation.NewWeightedOperation( + weightMsgPlaceBid, + fundraisingsimulation.SimulateMsgPlaceBid(am.accountKeeper, am.bankKeeper, am.keeper, simState.TxConfig), + )) + + var weightMsgModifyBid int + simState.AppParams.GetOrGenerate(opWeightMsgModifyBid, &weightMsgModifyBid, nil, + func(_ *rand.Rand) { + weightMsgModifyBid = defaultWeightMsgModifyBid + }, + ) + operations = append(operations, simulation.NewWeightedOperation( + weightMsgModifyBid, + fundraisingsimulation.SimulateMsgModifyBid(am.accountKeeper, am.bankKeeper, am.keeper, simState.TxConfig), + )) + + // this line is used by starport scaffolding # simapp/module/operation + + return operations +} + +// ProposalMsgs returns msgs used for governance proposals for simulations. +func (am AppModule) ProposalMsgs(simState module.SimulationState) []simtypes.WeightedProposalMsg { + return []simtypes.WeightedProposalMsg{ + simulation.NewWeightedProposalMsg( + opWeightMsgCreateFixedPriceAuction, + defaultWeightMsgCreateFixedPriceAuction, + func(r *rand.Rand, ctx sdk.Context, accs []simtypes.Account) sdk.Msg { + fundraisingsimulation.SimulateMsgCreateFixedPriceAuction(am.accountKeeper, am.bankKeeper, am.keeper, simState.TxConfig) + return nil + }, + ), + simulation.NewWeightedProposalMsg( + opWeightMsgCreateBatchAuction, + defaultWeightMsgCreateBatchAuction, + func(r *rand.Rand, ctx sdk.Context, accs []simtypes.Account) sdk.Msg { + fundraisingsimulation.SimulateMsgCreateBatchAuction(am.accountKeeper, am.bankKeeper, am.keeper, simState.TxConfig) + return nil + }, + ), + simulation.NewWeightedProposalMsg( + opWeightMsgCancelAuction, + defaultWeightMsgCancelAuction, + func(r *rand.Rand, ctx sdk.Context, accs []simtypes.Account) sdk.Msg { + fundraisingsimulation.SimulateMsgCancelAuction(am.accountKeeper, am.bankKeeper, am.keeper, simState.TxConfig) + return nil + }, + ), + simulation.NewWeightedProposalMsg( + opWeightMsgPlaceBid, + defaultWeightMsgPlaceBid, + func(r *rand.Rand, ctx sdk.Context, accs []simtypes.Account) sdk.Msg { + fundraisingsimulation.SimulateMsgPlaceBid(am.accountKeeper, am.bankKeeper, am.keeper, simState.TxConfig) + return nil + }, + ), + simulation.NewWeightedProposalMsg( + opWeightMsgModifyBid, + defaultWeightMsgModifyBid, + func(r *rand.Rand, ctx sdk.Context, accs []simtypes.Account) sdk.Msg { + fundraisingsimulation.SimulateMsgModifyBid(am.accountKeeper, am.bankKeeper, am.keeper, simState.TxConfig) + return nil + }, + ), + // this line is used by starport scaffolding # simapp/module/OpMsg + } +} diff --git a/x/fundraising/simulation/cancel_auction.go b/x/fundraising/simulation/cancel_auction.go new file mode 100644 index 0000000..9df102d --- /dev/null +++ b/x/fundraising/simulation/cancel_auction.go @@ -0,0 +1,83 @@ +package simulation + +import ( + "math/rand" + + "github.com/cosmos/cosmos-sdk/baseapp" + "github.com/cosmos/cosmos-sdk/client" + sdk "github.com/cosmos/cosmos-sdk/types" + simtypes "github.com/cosmos/cosmos-sdk/types/simulation" + "github.com/cosmos/cosmos-sdk/x/simulation" + + "github.com/ignite/modules/x/fundraising/keeper" + "github.com/ignite/modules/x/fundraising/types" +) + +// SimulateMsgCancelAuction generates a SimulateMsgCancelAuction with random values +// nolint: interfacer +func SimulateMsgCancelAuction( + ak types.AccountKeeper, + bk types.BankKeeper, + k keeper.Keeper, + txGen client.TxConfig, +) simtypes.Operation { + return func(r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, + ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { + msg := &types.MsgCancelAuction{} + auctions, err := k.Auctions(ctx) + if err != nil { + return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "failed to get auctions"), nil, nil + } + + r.Shuffle(len(auctions), func(i, j int) { + auctions[i], auctions[j] = auctions[j], auctions[i] + }) + + var simAccount simtypes.Account + var auction types.AuctionI + + // Find an auction that is not started yet + skip := true + + for _, auction = range auctions { + if auction.GetStatus() == types.AuctionStatusStandBy { + skip = false + break + } + } + if skip { + return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "no auction to cancel"), nil, nil + } + + accs = shuffleSimAccounts(r, accs) + + // Only the auction's auctioneer can cancel + for _, acc := range accs { + if acc.Address.Equals(auction.GetAuctioneer()) { + simAccount = acc + } + } + + account := ak.GetAccount(ctx, simAccount.Address) + spendable := bk.SpendableCoins(ctx, account.GetAddress()) + auctioneer := account.GetAddress().String() + + msg = types.NewMsgCancelAuction(auctioneer, auction.GetId()) + + txCtx := simulation.OperationInput{ + R: r, + App: app, + TxGen: txGen, + Cdc: nil, + Msg: msg, + Context: ctx, + SimAccount: simAccount, + AccountKeeper: ak, + Bankkeeper: bk, + ModuleName: types.ModuleName, + CoinsSpentInMsg: spendable, + } + + return simulation.GenAndDeliverTxWithRandFees(txCtx) + } +} diff --git a/x/fundraising/simulation/create_batch_auction.go b/x/fundraising/simulation/create_batch_auction.go new file mode 100644 index 0000000..480a626 --- /dev/null +++ b/x/fundraising/simulation/create_batch_auction.go @@ -0,0 +1,93 @@ +package simulation + +import ( + "math/rand" + + "cosmossdk.io/math" + "github.com/cosmos/cosmos-sdk/baseapp" + "github.com/cosmos/cosmos-sdk/client" + sdk "github.com/cosmos/cosmos-sdk/types" + simtypes "github.com/cosmos/cosmos-sdk/types/simulation" + "github.com/cosmos/cosmos-sdk/x/simulation" + + "github.com/ignite/modules/x/fundraising/keeper" + "github.com/ignite/modules/x/fundraising/types" +) + +// SimulateMsgCreateBatchAuction generates a MsgCreateRatioPlan with random values +// nolint: interfacer +func SimulateMsgCreateBatchAuction( + ak types.AccountKeeper, + bk types.BankKeeper, + k keeper.Keeper, + txGen client.TxConfig, +) simtypes.Operation { + return func(r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, + ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { + msg := &types.MsgCreateBatchAuction{} + simAccount, _ := simtypes.RandomAcc(r, accs) + + account := ak.GetAccount(ctx, simAccount.Address) + spendable := bk.SpendableCoins(ctx, account.GetAddress()) + + params, err := k.Params.Get(ctx) + if err != nil { + return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "failed to get params"), nil, err + } + + _, hasNeg := spendable.SafeSub(params.AuctionCreationFee...) + if hasNeg { + return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "insufficient balance for auction creation fee"), nil, nil + } + + auctioneer := account.GetAddress() + startPrice := math.LegacyNewDecWithPrec(int64(simtypes.RandIntBetween(r, 1, 10)), 1) // 0.1 ~ 1.0 + minBidPrice := math.LegacyNewDecWithPrec(int64(simtypes.RandIntBetween(r, 1, 10)), 2) + sellingCoin := sdk.NewInt64Coin(testCoinDenoms[r.Intn(len(testCoinDenoms))], int64(simtypes.RandIntBetween(r, 100000000000, 100000000000000))) + payingCoinDenom := sdk.DefaultBondDenom + vestingSchedules := []types.VestingSchedule{} + maxExtendedRound := uint32(simtypes.RandIntBetween(r, 1, 5)) + extendedRoundRate := math.LegacyNewDecWithPrec(int64(simtypes.RandIntBetween(r, 1, 3)), 1) // 0.1 ~ 0.3 + startTime := ctx.BlockTime().AddDate(0, 0, simtypes.RandIntBetween(r, 0, 2)) + endTime := startTime.AddDate(0, simtypes.RandIntBetween(r, 1, 12), 0) + + if _, err := fundBalances(ctx, r, bk, auctioneer, testCoinDenoms); err != nil { + return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "failed to fund auctioneer"), nil, err + } + + // Call spendable coins here again to get the funded balances + _, hasNeg = bk.SpendableCoins(ctx, account.GetAddress()).SafeSub(sdk.NewCoins(sellingCoin)...) + if hasNeg { + return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "insufficient balance to reserve selling coin"), nil, nil + } + + msg = types.NewMsgCreateBatchAuction( + auctioneer.String(), + startPrice, + minBidPrice, + sellingCoin, + payingCoinDenom, + vestingSchedules, + maxExtendedRound, + extendedRoundRate, + startTime, + endTime, + ) + + txCtx := simulation.OperationInput{ + R: r, + App: app, + TxGen: txGen, + Cdc: nil, + Msg: msg, + Context: ctx, + SimAccount: simAccount, + AccountKeeper: ak, + Bankkeeper: bk, + ModuleName: types.ModuleName, + CoinsSpentInMsg: spendable, + } + + return simulation.GenAndDeliverTxWithRandFees(txCtx) + } +} diff --git a/x/fundraising/simulation/create_fixed_price_auction.go b/x/fundraising/simulation/create_fixed_price_auction.go new file mode 100644 index 0000000..6643912 --- /dev/null +++ b/x/fundraising/simulation/create_fixed_price_auction.go @@ -0,0 +1,87 @@ +package simulation + +import ( + "math/rand" + + "cosmossdk.io/math" + "github.com/cosmos/cosmos-sdk/baseapp" + "github.com/cosmos/cosmos-sdk/client" + sdk "github.com/cosmos/cosmos-sdk/types" + simtypes "github.com/cosmos/cosmos-sdk/types/simulation" + "github.com/cosmos/cosmos-sdk/x/simulation" + + "github.com/ignite/modules/x/fundraising/keeper" + "github.com/ignite/modules/x/fundraising/types" +) + +// SimulateMsgCreateFixedPriceAuction generates a MsgCreateFixedAmountPlan with random values +// nolint: interfacer +func SimulateMsgCreateFixedPriceAuction( + ak types.AccountKeeper, + bk types.BankKeeper, + k keeper.Keeper, + txGen client.TxConfig, +) simtypes.Operation { + return func(r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, + ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { + msg := &types.MsgCreateFixedPriceAuction{} + simAccount, _ := simtypes.RandomAcc(r, accs) + + account := ak.GetAccount(ctx, simAccount.Address) + spendable := bk.SpendableCoins(ctx, account.GetAddress()) + + params, err := k.Params.Get(ctx) + if err != nil { + return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "failed to get params"), nil, err + } + + _, hasNeg := spendable.SafeSub(params.AuctionCreationFee...) + if hasNeg { + return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "insufficient balance for auction creation fee"), nil, nil + } + + auctioneer := account.GetAddress() + startPrice := math.LegacyNewDecWithPrec(int64(simtypes.RandIntBetween(r, 1, 10)), 1) // 0.1 ~ 1.0 + sellingCoin := sdk.NewInt64Coin(testCoinDenoms[r.Intn(len(testCoinDenoms))], int64(simtypes.RandIntBetween(r, 10000000000, 1000000000000))) + payingCoinDenom := sdk.DefaultBondDenom + vestingSchedules := make([]types.VestingSchedule, 0) + startTime := ctx.BlockTime().AddDate(0, 0, simtypes.RandIntBetween(r, 0, 2)) + endTime := startTime.AddDate(0, simtypes.RandIntBetween(r, 1, 12), 0) + + if _, err := fundBalances(ctx, r, bk, auctioneer, testCoinDenoms); err != nil { + return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "failed to fund auctioneer"), nil, err + } + + // Call spendable coins here again to get the funded balances + _, hasNeg = bk.SpendableCoins(ctx, account.GetAddress()).SafeSub(sdk.NewCoins(sellingCoin)...) + if hasNeg { + return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "insufficient balance to reserve selling coin"), nil, nil + } + + msg = types.NewMsgCreateFixedPriceAuction( + auctioneer.String(), + startPrice, + sellingCoin, + payingCoinDenom, + vestingSchedules, + startTime, + endTime, + ) + + txCtx := simulation.OperationInput{ + R: r, + App: app, + TxGen: txGen, + Cdc: nil, + Msg: msg, + Context: ctx, + SimAccount: simAccount, + AccountKeeper: ak, + Bankkeeper: bk, + ModuleName: types.ModuleName, + CoinsSpentInMsg: spendable, + } + + return simulation.GenAndDeliverTxWithRandFees(txCtx) + } +} diff --git a/x/fundraising/simulation/helpers.go b/x/fundraising/simulation/helpers.go new file mode 100644 index 0000000..34a3b9a --- /dev/null +++ b/x/fundraising/simulation/helpers.go @@ -0,0 +1,61 @@ +package simulation + +import ( + "context" + "math/rand" + + sdk "github.com/cosmos/cosmos-sdk/types" + simtypes "github.com/cosmos/cosmos-sdk/types/simulation" + minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" + + "github.com/ignite/modules/x/fundraising/keeper" + "github.com/ignite/modules/x/fundraising/types" +) + +var testCoinDenoms = []string{ + "denoma", + "denomb", + "denomc", + "denomd", +} + +func init() { + keeper.EnableAddAllowedBidder = true +} + +// FindAccount find a specific address from an account list +func FindAccount(accs []simtypes.Account, address string) (simtypes.Account, bool) { + creator, err := sdk.AccAddressFromBech32(address) + if err != nil { + panic(err) + } + return simtypes.FindAccount(accs, creator) +} + +// fundBalances mints random amount of coins with the provided coin denoms and +// send them to the simulated account. +func fundBalances(ctx context.Context, r *rand.Rand, bk types.BankKeeper, acc sdk.AccAddress, denoms []string) (sdk.Coins, error) { + mintCoins := sdk.NewCoins() + for _, denom := range denoms { + mintCoins = mintCoins.Add(sdk.NewInt64Coin(denom, 100_000_000_000_000_000)) + } + + if err := bk.MintCoins(ctx, minttypes.ModuleName, mintCoins); err != nil { + return nil, err + } + + if err := bk.SendCoinsFromModuleToAccount(ctx, minttypes.ModuleName, acc, mintCoins); err != nil { + return nil, err + } + return mintCoins, nil +} + +// shuffleSimAccounts returns randomly shuffled simulation accounts. +func shuffleSimAccounts(r *rand.Rand, accs []simtypes.Account) []simtypes.Account { + accs2 := make([]simtypes.Account, len(accs)) + copy(accs2, accs) + r.Shuffle(len(accs2), func(i, j int) { + accs2[i], accs2[j] = accs2[j], accs2[i] + }) + return accs2 +} diff --git a/x/fundraising/simulation/modify_bid.go b/x/fundraising/simulation/modify_bid.go new file mode 100644 index 0000000..16f95e6 --- /dev/null +++ b/x/fundraising/simulation/modify_bid.go @@ -0,0 +1,80 @@ +package simulation + +import ( + "fmt" + "math/rand" + + "cosmossdk.io/math" + "github.com/cosmos/cosmos-sdk/baseapp" + "github.com/cosmos/cosmos-sdk/client" + sdk "github.com/cosmos/cosmos-sdk/types" + simtypes "github.com/cosmos/cosmos-sdk/types/simulation" + "github.com/cosmos/cosmos-sdk/x/simulation" + + "github.com/ignite/modules/x/fundraising/keeper" + "github.com/ignite/modules/x/fundraising/types" +) + +func SimulateMsgModifyBid( + ak types.AccountKeeper, + bk types.BankKeeper, + k keeper.Keeper, + txGen client.TxConfig, +) simtypes.Operation { + return func(r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, + ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { + msg := &types.MsgModifyBid{} + auctions, err := k.Auctions(ctx) + if err != nil { + return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "failed to get auctions"), nil, nil + } + if len(auctions) == 0 { + return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "no auction to modify a bid"), nil, nil + } + + // Select a random auction + auction := auctions[r.Intn(len(auctions))] + if auction.GetType() != types.AuctionTypeBatch || auction.GetStatus() != types.AuctionStatusStarted { + return simtypes.NoOpMsg(types.ModuleName, msg.Type(), fmt.Sprintf("incorrect auction type or status %v", auction)), nil, nil + } + + bids, err := k.GetBidsByAuctionId(ctx, auction.GetId()) + if err != nil { + return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "failed to get bids"), nil, nil + } + if len(bids) == 0 { + return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "no bid modify"), nil, nil + } + + // Select a random bid + bid := bids[r.Intn(len(bids))] + simAccount, _ := FindAccount(accs, bid.Bidder) + + account := ak.GetAccount(ctx, simAccount.Address) + spendable := bk.SpendableCoins(ctx, account.GetAddress()) + + msg = types.NewMsgModifyBid( + bid.AuctionId, + account.GetAddress().String(), + bid.Id, + bid.Price, + bid.Coin.AddAmount(math.OneInt()), + ) + + txCtx := simulation.OperationInput{ + R: r, + App: app, + TxGen: txGen, + Cdc: nil, + Msg: msg, + Context: ctx, + SimAccount: simAccount, + AccountKeeper: ak, + Bankkeeper: bk, + ModuleName: types.ModuleName, + CoinsSpentInMsg: spendable, + } + + return simulation.GenAndDeliverTxWithRandFees(txCtx) + } +} diff --git a/x/fundraising/simulation/place_bid.go b/x/fundraising/simulation/place_bid.go new file mode 100644 index 0000000..cf5d165 --- /dev/null +++ b/x/fundraising/simulation/place_bid.go @@ -0,0 +1,119 @@ +package simulation + +import ( + "math/rand" + + "cosmossdk.io/collections" + "cosmossdk.io/math" + "github.com/cosmos/cosmos-sdk/baseapp" + "github.com/cosmos/cosmos-sdk/client" + sdk "github.com/cosmos/cosmos-sdk/types" + simtypes "github.com/cosmos/cosmos-sdk/types/simulation" + "github.com/cosmos/cosmos-sdk/x/simulation" + + "github.com/ignite/modules/x/fundraising/keeper" + "github.com/ignite/modules/x/fundraising/types" +) + +// SimulateMsgPlaceBid generates a MsgPlaceBid with random values +// nolint: interfacer +func SimulateMsgPlaceBid( + ak types.AccountKeeper, + bk types.BankKeeper, + k keeper.Keeper, + txGen client.TxConfig, +) simtypes.Operation { + return func(r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, + ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { + msg := &types.MsgPlaceBid{} + auctions, err := k.Auctions(ctx) + if err != nil { + return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "failed to get auctions"), nil, nil + } + if len(auctions) == 0 { + return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "no auction to place a bid"), nil, nil + } + + // Select a random auction + auction := auctions[r.Intn(len(auctions))] + + if auction.GetStatus() != types.AuctionStatusStarted { + return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "auction must be started status"), nil, nil + } + + simAccount, _ := simtypes.RandomAcc(r, accs) + + account := ak.GetAccount(ctx, simAccount.Address) + spendable := bk.SpendableCoins(ctx, account.GetAddress()) + + bidder := account.GetAddress() + sellingCoinDenom := auction.GetSellingCoin().Denom + payingCoinDenom := auction.GetPayingCoinDenom() + + if _, err := fundBalances(ctx, r, bk, bidder, testCoinDenoms); err != nil { + return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "failed to fund bidder"), nil, err + } + + var bid types.Bid + switch auction.GetType() { + case types.AuctionTypeFixedPrice: + bid.Type = types.BidTypeFixedPrice + bid.Price = auction.GetStartPrice() + if r.Int()%2 == 0 { + bid.Coin = sdk.NewInt64Coin(payingCoinDenom, int64(simtypes.RandIntBetween(r, 100000, 1000000000))) + } else { + bid.Coin = sdk.NewInt64Coin(sellingCoinDenom, int64(simtypes.RandIntBetween(r, 100000, 1000000000))) + } + case types.AuctionTypeBatch: + bid.Price = auction.GetStartPrice().Add(math.LegacyNewDecWithPrec(int64(simtypes.RandIntBetween(r, 1, 5)), 1)) // StartPrice + 0.1 ~ 0.5 + if r.Int()%2 == 0 { + bid.Type = types.BidTypeBatchWorth + bid.Coin = sdk.NewInt64Coin(payingCoinDenom, int64(simtypes.RandIntBetween(r, 100000, 1000000000))) + } else { + bid.Type = types.BidTypeBatchMany + bid.Coin = sdk.NewInt64Coin(sellingCoinDenom, int64(simtypes.RandIntBetween(r, 100000, 1000000000))) + } + } + + bidReserveAmt := bid.ConvertToPayingAmount(payingCoinDenom) + maxBidAmt := bid.ConvertToSellingAmount(payingCoinDenom) + + if !bk.SpendableCoins(ctx, bidder).AmountOf(payingCoinDenom).GT(bidReserveAmt) { + return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "insufficient balance to place a bid"), nil, nil + } + + allowedBidder, err := k.AllowedBidder.Get(ctx, collections.Join(auction.GetId(), bidder)) + if err == nil { + maxBidAmt = maxBidAmt.Add(allowedBidder.MaxBidAmount) + } + + newAllowedBidder := types.NewAllowedBidder(auction.GetId(), bidder, maxBidAmt) + if err := k.AddAllowedBidders(ctx, auction.GetId(), []types.AllowedBidder{newAllowedBidder}); err != nil { + return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "failed to add allowed bidders"), nil, err + } + + msg = types.NewMsgPlaceBid( + auction.GetId(), + bidder.String(), + bid.Type, + bid.Price, + bid.Coin, + ) + + txCtx := simulation.OperationInput{ + R: r, + App: app, + TxGen: txGen, + Cdc: nil, + Msg: msg, + Context: ctx, + SimAccount: simAccount, + AccountKeeper: ak, + Bankkeeper: bk, + ModuleName: types.ModuleName, + CoinsSpentInMsg: spendable, + } + + return simulation.GenAndDeliverTxWithRandFees(txCtx) + } +} diff --git a/x/fundraising/spec/01_concepts.md b/x/fundraising/spec/01_concepts.md new file mode 100644 index 0000000..7bc6bac --- /dev/null +++ b/x/fundraising/spec/01_concepts.md @@ -0,0 +1,84 @@ + + +# Concepts + +## Fundraising Module + +The `x/fundraising` module is a Cosmos SDK module that provides a functionality to raise funds for a new project to onboard the ecosystem. It helps them to increase their brand awareness before launching their project. + +## Design Decision + +The module is fundamentally designed to delegate authorization to an external module to add allowed bidder list for an auction. When an auction is created, it is closed state. It means that there is no bidder who is authorized to place a bid. The bidder must be added by an external module. + +## Auction Type + +The module allows the creation of the following auction types: + +* `FixedPriceAuction` +* `BatchAuction` + +## Fixed Price Auction + +A FixedPriceAuction is to sell a given amount of coins in a fixed price. It is first-come and first-served basis. The module expects an external module or a project to create a fixed price auction by setting parameters needed for an auction, such as how many coins to sell, what type of coin denomination is payable by a bidder in exchange for the selling coin, fixed price for each selling coin, start and end time for the auction, and etc. When an auction is created successfully by paying a creation fee, the module expects an external module (being as an auctioneer) to add allowed bidders list for the auction. In this process, the external module has a control over who can place a bid and the bidder’s maximum amount to place a bid for the auction. When an auction is started, allowed bidders can start to place their bids until the auction ends; however, as it is first-come and first-served basis, the selling amount of coin can be sold at any time. The distribution of selling coin will occur when the auction is ended. + +### What an auctioneer does: + +A fixed price auction must determine the following parameters: + +- `StartPrice`: fixed amount of the paying coins to get a selling coins (i.e., amount of paying coins per selling coin), +- `SellingCoin`: the denom and total amount of selling coin to be auctioned, +- `PayingCoinDenom`: the denom of coin to be used for payment, +- `StartTime`: when the auction starts, +- `EndTime`: when the auction ends, +- `VestingSchedules`: the vesting schedules to allocate the sold amounts of paying coins to the auctioneer. + +Note that the auctioneer can cancel the auction as long as an auction has not started. + +### What a bidder can/cannot do: + +As explained in `Design Decision`, bidders are not allowed to place their bids unless they are listed in `AllowedBidders` for an auction. Allowed bidders can place their bids either with paying coin denom (willing to pay in exchange of the selling coin) or selling coin denom (how many selling coins that a bidder is willing to buy). The module takes care of it. Once bids are placed, they can't be canceled. Bids can only be modified with higher bidding price or increasing bidding amount. + +## Batch Auction + +A `BatchAuction` provides a sophisticated and dynamic way for allowed bidders to participate in an auction. The module expects an external module (being as an auctioneer) to create a batch auction by setting parameters needed for an auction. The creation process is the same as a fixed price auction. There is no fixed price in a batch auction. A matched price (final price) gets determined at the end of an auction. When an auction is started, allowed bidders start to place their bids with the bidding price that they think each selling coin is worth. When they place their bids, bidding amount is reserved in a module account until the end of an auction. It is important to note that there is no guarantee that a bid gets matched to win the auction. It depends on market demand for the selling coin. Bidders have no option to cancel their bids, but they have an option to modify them with either higher bidding price or increasing amount. It is recommended that allowed bidders need to carefully monitor the demand until the auction ends and adjust their bids accordingly. At the end of an auction, the module brings all recorded bids and calculates a matched price (final price) with a number of bids with bidding prices and amounts. The module finalizes matched bids and distribute them to the corresponding bidders. Then the module refunds unmatched bids to the corresponding bidders. + +### What an auctioneer does: + +When an auctioneer creates a batch auction, it must determine the following parameters. + +- `SellingCoin`: the denom and total amount of selling coins to be auctioned, +- `PayingCoinDenom`: the denom of coins to be used for payment, +- `StartTime`: when the auction starts, +- `EndTimes`: when the auction ends including the possible extended rounds, +- `VestingSchedules`: the vesting schedules to allocate the sold amounts of paying coins to the auctioneer, +- `MinBidPrice`: the minimum bid price that the bidders must place a bid with, +- `MaxExtendedRound`: the maximum number of additional round for bidding, +- `ExtendedRoundRate`: the condition in a reduction rate of the number of the matched bids. + +Note that the auctioneer can cancel the auction as long as an auction has not started. Also, the extended round is to prevent the auction sniping technique, which is, e.g., to bid large amount of selling coins with a bid price slightly higher than the matched price, where this kind of last moment bid as auction sniping results in a sudden reduction of the matched bids. + +In order to provide more opportunity to bidders in case of auction sniping, the extended round is triggered if the reduction of the matched bids are more than `ExtendedRoundRate` compared to the number of matched bids at the previous end time. + +### What a bidder can/cannot do: + +A bidder only listed in `AllowedBidders` can do the following behaviors during the auction period between `StartTime` and `EndTimes`. +1. Place a new bid + - This auction provides two options for bidder to choose: 1) How-Much-Worth-To-Buy and 2) How-Many-Coins-To-Buy + - (`BidType` of `BidTypeBatchWorth`) How-Much-Worth-To-Buy (fixed `PayingCoin`/varying `SellingCoin`): A bidder places a bid with a fixed amount of the paying coins and, if it wins, the bidder gets the selling coins, where the amount of the selling coins varies depending on the matched price determined after the auction period ends. + - (`BidType` of `BidTypeBatchMany`) How-Many-Coins-To-Buy (varying `PayingCoin`/fixed `SellingCoin`): A bidder places a bid for a fixed amount of the selling coin that the bidder wants to get if it wins. After the auction period ends, the remaining paying coins will be refunded depending on the matched price. +2. Modify the existing bid by replacing with a new one only with higher price and/or larger quantity + - The bidder can replace its existing bid, which is previously placed, by a new one with the same `BidType` between `BidTypeBatchWorth` and `BidTypeBatchMany`. + +A bidder cannot do the following behaviors during the auction period. + +1. Cancel the existing bid +2. Modify the existing bid by replacing with a new one with lower price or smaller quantity. + +### When the auction ends: + +The auction will end when the last time of `EndTimes` is arrived. + +### How `MatchedPrice` is determined: + +Once an auction period ends, stored bids are ordered in a descending order by the bid prices and bid ids to determine `MatchedPrice`. `MatchedPrice` gets determined by finding the lowest price among the bid prices satisfying that the total amount of selling coins placed at more than or equal to the price is less the entire offering `SellingCoin`. +The bidders who placed at the higher price than the matched price become the matched bidders and get the selling coins at the same price, which is `MatchedPrice`. diff --git a/x/fundraising/spec/02_state.md b/x/fundraising/spec/02_state.md new file mode 100644 index 0000000..f2c638d --- /dev/null +++ b/x/fundraising/spec/02_state.md @@ -0,0 +1,252 @@ + + +# State + +The `fundraising` module keeps track of the auction and bid states. + +## Auction Interface + +The auction interface exposes methods to read and write standard auction information. + +Note that all of these methods operate on a auction struct that confirms to the interface. In order to write the auction to the store, the auction keeper is required. + +```go +// AuctionI is an interface that inherits the BaseAuction and exposes common functions +// to get and set standard auction data. +type AuctionI interface { + GetId() uint64 + SetId(uint64) error + + GetType() AuctionType + SetType(AuctionType) error + + GetAuctioneer() string + SetAuctioneer(string) error + + GetSellingReserveAddress() string + SetSellingReserveAddress(string) error + + GetPayingReserveAddress() string + SetPayingReserveAddress(string) error + + GetStartPrice() sdk.Dec + SetStartPrice(sdk.Dec) error + + GetSellingCoin() sdk.Coin + SetSellingCoin(sdk.Coin) error + + GetPayingCoinDenom() string + SetPayingCoinDenom(string) error + + GetVestingReserveAddress() string + SetVestingReserveAddress(string) error + + GetVestingSchedules() []VestingSchedule + SetVestingSchedules([]VestingSchedule) error + + GetStartTime() time.Time + SetStartTime(time.Time) error + + GetEndTimes() []time.Time + SetEndTimes([]time.Time) error + + GetStatus() AuctionStatus + SetStatus(AuctionStatus) error + + ShouldAuctionStarted(t time.Time) bool + ShouldAuctionClosed(t time.Time) bool + + Validate() error +} +``` + +## BaseAuction + +A base auction stores all requisite fields directly in a struct. + +```go +// BaseAuction defines a base auction type. It contains all the necessary fields +// for basic auction functionality. Any custom auction type should extend this +// type for additional functionality (e.g. english auction, fixed price auction). +type BaseAuction struct { + Id uint64 // id of the auction + Type AuctionType // the auction type; currently FixedPrice and English are supported + Auctioneer string // the owner of the auction + SellingReserveAddress string // the reserve account to collect selling coins from the auctioneer + PayingReserveAddress string // the reserve account to collect paying coins from the bidders + StartPrice sdk.Dec // the starting price + SellingCoin sdk.Coin // the selling amount of coin + PayingCoinDenom string // the denom that the auctioneer receives to raise funds + VestingReserveAddress string // the reserve account that releases the accumulated paying coins based on the schedules + VestingSchedules []VestingSchedule // the vesting schedules for the auction + StartTime time.Time // the start time of the auction + EndTimes []time.Time // the end times of the auction; it is an array since extended round(s) can occur + Status AuctionStatus // the auction status +} +``` + +```go +// AllowedBidder defines a bidder who is allowed to bid with max number of bids. +type AllowedBidder struct { + Bidder string // a bidder who is allowed to bid + MaxBidAmount math.Int // a maximum amount of bids per bidder +} +``` + +## Vesting +```go +// VestingSchedule defines the vesting schedule for the owner of an auction. +type VestingSchedule struct { + ReleaseTime time.Time // the release time for vesting coin distribution + Weight sdk.Dec // the vesting weight for the schedule +} + +// VestingQueue defines the vesting queue. +type VestingQueue struct { + AuctionId uint64 // id of the auction + Auctioneer string // the owner of the auction + PayingCoin sdk.Coin // the paying amount of coin for the vesting + ReleaseTime time.Time // the release time of the vesting + Released bool // the distribution status +} +``` + +## Auction Type + +```go +// AuctionType is the type of an auction. +type AuctionType uint32 + +const ( + // AUCTION_TYPE_UNSPECIFIED defines an invalid auction type + AuctionTypeNil AuctionType = 0 + // AUCTION_TYPE_FIXED_PRICE defines the fixed price auction type + AuctionTypeFixedPrice AuctionType = 1 + // AUCTION_TYPE_BATCH defines the batch auction type + AuctionTypeBatch AuctionType = 2 +) + +// FixedPriceAuction defines the fixed price auction type +type FixedPriceAuction struct { + *BaseAuction + RemainingSellingCoin sdk.Coin // the remaining amount of coin to sell +} + +// BatchAuction defines the batch auction type +type BatchAuction struct { + *BaseAuction + MinBidPrice sdk.Dec // the minimum bid price that bidders must provide + MatchedPrice sdk.Dec // the matched price of the auction (a.k.a., winning price) + MaxExtendedRound uint32 // the maximum number of extended rounds + ExtendedRate sdk.Dec // the rate that determines if the auction needs another round; compared to the number of the matched bids at the previous end time. +} +``` + +## Auction Status + +```go +// AuctionStatus is the status of an auction +type AuctionStatus uint32 + +const ( + // AUCTION_STATUS_UNSPECIFIED defines an invalid auction status + StatusNil AuctionStatus = 0 + // AUCTION_STATUS_STANDY_BY defines an auction status before it opens + StatusStandBy AuctionStatus = 1 + // AUCTION_STATUS_STARTED defines an auction status that is started + StatusStarted AuctionStatus = 2 + // AUCTION_STATUS_VESTING defines an auction status that is in distribution based on the vesting schedules + StatusVesting AuctionStatus = 3 + // AUCTION_STATUS_FINISHED defines an auction status that is finished + StatusFinished AuctionStatus = 4 + // AUCTION_STATUS_CANCELLED defines an auction sttus that is cancelled + StatusCancelled AuctionStatus = 5 +) +``` + +## Bid + +```go +// Bid defines a standard bid for an auction. +type Bid struct { + AuctionId uint64 // id of the auction + Bidder string // the account that bids for the auction + Id uint64 // id of the bid of the bidder + Type BidType // the bid type; currently Fixed-Price, How-Much-Worth-To-Buy and How-Many-Coins-To-Buy are supported. + Price sdk.Dec // the price for the bid + Coin sdk.Coin // targeted amount of coin that the bidder bids; the denom must be either the denom or SellingCoin or PayingCoinDenom + IsMatched bool // the bid that is determined to be matched (a.k.a., winner) when an auction ends; default value is false +} +``` + +## Bid Type + +```go +// BidType is the type of a bid. +type BidType uint32 + +const ( + // BID_TYPE_UNSPECIFIED defines an invalid bid type + BidTypeNil BidType = 0 + // BID_TYPE_FIXED_PRICE defines a bid type for a fixed price auction type + BidTypeFixedPrice BidType = 1 + // Bid_TYPE_BATCH_WORTH defines a bid type for How-Much-Worth-to-Buy of a batch auction + BidTypeBatchWorth BidType = 2 + // Bid_TYPE_BATCH_MANY defines a bid type for How-Many-Coins-to-Buy of a batch auction + BidTypeBatchMany BidType = 3 +) +``` + +For `FixedPriceAuction`, +- `BidType` must be set to `BidTypeFixedPrice`, +- `BidPrice` must be set as `StartPrice` in `BaseAuction`, and +- the denom of `BidCoin` can be set to either `PayingCoinDenom` or the denom of `SellingCoin`. + +For `BatchAuction`and `BidTypeBatchWorth`, +- the denom of `BidCoin` must be set as `PayingCoinDenom`. + +For `BatchAuction`and `BidTypeBatchMany`, +- the denom of `BidCoin` must be set as the denom of `SellingCoin`. + +## Parameters + +- ModuleName: `fundraising` +- RouterKey: `fundraising` +- StoreKey: `fundraising` +- QuerierRoute: `fundraising` + +## Stores + +Stores are KVStores in the multi-store. The key to find the store is the first parameter in the list. + +### The key for the latest auction id + +- `LastAuctionIdKey: 0x11 -> Uint64Value(lastAuctionId)` + +### The key for the latest bid id + +- `LastBidIdKey: 0x12 | AuctionId -> Uint64Value(lastBidId)` + +### The key to retrieve the auction object from the auction id + +- `AuctionKey: 0x21 | AuctionId -> ProtocolBuffer(Auction)` + +### The key to retrieve the allowed bidder object for the auction + +- `AllowedBidderKey: 0x22 | AuctionId | BidderAddrLen (1 byte) | BidderAddr -> ProtocolBuffer(AllowedBidder)` + +### The key to retrieve the bid object from the auction id and bid id + +- `BidKey: 0x31 | AuctionId | BidId -> ProtocolBuffer(Bid)` + +### The index key to retrieve the bid object from the bidder address + +- `BidIndexKey: 0x32 | BidderAddrLen (1 byte) | BidderAddr | AuctionId | BidId -> nil` + +### The key to retrieve the last matched bids length + +- `LastMatchedBidsLenKey: 0x33 | AuctionId -> Uint64Value(lastMatchedBidsLen)` + +### The key to retrieve the vesting queue object from the auction id and + +- `VestingQueueKey: 0x41 | AuctionId | sdk.FormatTimeBytes(releaseTime) -> ProtocolBuffer(VestingQueue)` \ No newline at end of file diff --git a/x/fundraising/spec/03_state_transitions.md b/x/fundraising/spec/03_state_transitions.md new file mode 100644 index 0000000..a1ef4ac --- /dev/null +++ b/x/fundraising/spec/03_state_transitions.md @@ -0,0 +1,39 @@ + + +# State Transitions + +This document describes the state transaction operations in the fundraising module. + +## Coin Reservation for Fundraising Module Message + +Transaction confirmation causes state transition on the Cosmos SDK [x/bank] module. Some messages on the fundraising module require coin reservation before confirmation. + +The coin reserve processes for each message type are: + +### MsgCreateFixedPriceAuction + +When `MsgCreateFixedPriceAuction` is confirmed, +- `SellingCoin` of the auctioneer is reserved in `SellingReserveAddress`, and +- the created auction status is set to `AuctionStatusStandBy`. + +### MsgCreateBatchAuction + +When `MsgCreateBatchAuction` is confirmed, +- `SellingCoin` of the auctioneer is reserved in `SellingReserveAddress`, and +- the created auction status is set to `AuctionStatusStandBy`. + +### MsgCancelAuction + +When `MsgCancelAuction` is confirmed for the auction in `AuctionStatusStandBy`, +- `SellingCoin` reserved in `SellingReserveAddress` is refunded to the auctioneer, and +- the auction status is changed from `AuctionStatusStandBy` to `AuctionStatusCancelled`. + +### MsgPlaceBid + +When `MsgPlaceBid` is confirmed, `PayingCoin` of the bidder is reserved in `PayingReserveAddress`. + +For a fixed price auction, when `MsgPlaceBid` is confirmed, `RemainingSellingCoin` is updated based on the message. + +### MsgModifyBid + +When `MsgModifyBid` is confirmed for an existing bid, the difference of `PayingCoin` of the modifying bid and `PayingCoin` of the existing bid is reserved in `PayingReserveAddress`. diff --git a/x/fundraising/spec/04_messages.md b/x/fundraising/spec/04_messages.md new file mode 100644 index 0000000..25414e3 --- /dev/null +++ b/x/fundraising/spec/04_messages.md @@ -0,0 +1,93 @@ + + +# Messages + +Messages (Msg) are objects that trigger state transitions. Msgs are wrapped in transactions (Txs) that clients submit to the network. The Cosmos SDK wraps and unwraps `fundraising` module messages from transactions. + +## MsgCreateFixedPriceAuction + +```go +// MsgCreateFixedPriceAuction defines an SDK message for creating a fixed price type auction +type MsgCreateFixedPriceAuction struct { + Auctioneer string // the owner of the auction + StartPrice sdk.Dec // the starting price for the auction + SellingCoin sdk.Coin // the selling coin for the auction + PayingCoinDenom string // the denom that the auctioneer receives to raise funds + VestingSchedules []VestingSchedule // the vesting schedules for the auction + StartTime time.Time // the start time of the auction + EndTime time.Time // the end time of the auction +} +``` +## MsgCreateBatchAuction + +```go +// MsgCreateBatchAuction defines an SDK message for creating a batch type auction +type MsgCreateBatchAuction struct { + Auctioneer string // the owner of the auction + StartPrice sdk.Dec // the starting price for the auction + MinBidPrice sdk.Dec // the minimum bid price that bidders must provide + SellingCoin sdk.Coin // the selling coin for the auction + PayingCoinDenom string // the denom that the auctioneer receives to raise funds + VestingSchedules []VestingSchedule // the vesting schedules for the auction + MaxExtendedRound uint32 // a maximum number of extended rounds + ExtendedRate sdk.Dec // rate that determines if the auction needs another round, compared to the number of the matched bids at the previous end time. + StartTime time.Time // the start time of the auction + EndTime time.Time // the end times of the auction +} +``` + +## MsgCancelAuction + +```go +// MsgCancelAuction defines an SDK message for cancelling an auction +type MsgCancelAuction struct { + Auctioneer string // the owner of the auction + AuctionId uint64 // id of the auction +} +``` + +## MsgPlaceBid +```go +// MsgPlaceBid defines an SDK message for placing a bid for the auction +// Bid price must be the start price for FixedPriceAuction whereas it can only be increased for EnglishAuction +type MsgPlaceBid struct { + AuctionId uint64 // id of the auction + Bidder string // account that places a bid for the auction + Type BidType // bid type; currently How-Much-Worth-To-Buy and How-Many-Coins-To-Buy are supported. + Price sdk.Dec // bid price to bid for the auction + Coin sdk.Coin // targeted amount of coin that the bidder bids; the denom must be either the denom or SellingCoin or PayingCoinDenom +} +``` + +## MsgModifyBid +```go +// MsgModifyBid defines an SDK message for modifying a bid for the auction by replacing the existing bid by a new one. +// MsgModifyBid only applies for BatchAuction. +// Price cannot be lower than that of the original bid. If Price is the same as that of the original bid, the amount of BiddingCoin should be larger than that of the original bid. +// The amount of BiddingCoin cannot be smaller than that of the original bid. If the amount of BiddingCoin is the same that of the original bid, Price should be higher than that of the original bid. +// If the amount of BiddingCoin is the same that of the original bid, Price should be higher than that of the original bid. +type MsgModifyBid struct { + AuctionId uint64 // id of the auction + Bidder string // account that places a bid for the auction + BidId uint64 // id of the bid of the bidder + Price sdk.Dec // bid price to bid for the auction + Coin sdk.Coin // targeted amount of coin that the bidder bids; the denom must be either the denom or SellingCoin or PayingCoinDenom +} +``` + +## MsgAddAllowedBidder + +This message is a custom message that is created for testing purpose only. It adds an allowed bidder to `AllowedBidders` for the auction. +It is accessible when you build `fundraisingd` binary by the following command: + +```bash +make install-testing +``` + +```go +// MsgAddAllowedBidder defines a SDK message to add an allowed bidder +type MsgAddAllowedBidder struct { + AuctionId uint64 // id of the auction + AllowedBidder AllowedBidder // the bidder and their maximum bid amount +} +``` \ No newline at end of file diff --git a/x/fundraising/spec/05_end_block.md b/x/fundraising/spec/05_end_block.md new file mode 100644 index 0000000..a19e737 --- /dev/null +++ b/x/fundraising/spec/05_end_block.md @@ -0,0 +1,89 @@ + + +At the end of each end block, the `fundraising` module operates the following executions based on auction type. + +## Auction Status Transition + +The module first gets all auctions registered in the store and proceed operations depending on auction status. + +If the auction status is `AuctionStatusStandBy` and if the start time of the auction is passed, the auction status is updated to `AuctionStatusStarted`. + +For a batch auction, if the auction status is `AuctionStatusStarted` and if an end time of `EndTimes` of the auction is arrived yet, `MatchedPrice` is calculated and the matched bids that have the bid price higher than or equal to `MatchedPrice` are counted. According to `MaxExtendedRound` and `ExtendedRate`, whether the auction ends or the auction is extended with another extended round is determined. + + +If the auction status is `AuctionStatusStarted` and if the last end time of the auction is arrived, or, +if `RemainingSellingCoin` is equal to zero for a fixed price auction, +- the auction status is updated to `AuctionStatusVesting`, +- a list of `VestingQueue` is generated according to `VestingSchedules`, +- `MatchedPrice` is calculated and updated for the auction, +- the amount of `SellingCoin` is released from `SellingReserveAddress` to each matched bidders, +- if `SellingCoin` is not sold out, the remaining selling coin is sent from `SellingReserveAddress` to `Auctioneer`, +- the amount of `PayingCoin` corresponding to the amount of the sold `SellingCoin` is reserved in `VestingReserveAddress` from `PayingReserveAddress`, and +- the remaining amount of `PayingCoin` in `PayingReserveAddress` is refunded from `PayingReserveAddress` to the bidders. + + +If the auction status is `AuctionStatusVesting` and if the last release time of the vesting schedule is arrived, the auction status is updated to `AuctionStatusFinished`. + + + +## Calculation the Matched Price, Distribution of Selling Coins, and Refund of Paying Coins + +This section provides the exact mathematical calculation of the matched price. For an illustrative example, see [here](../../../docs/Tutorials/demo/README.md). + +The parameters to be calculated are defined as + +- `X` : the matched price of a selling coin; This is `MatchedPrice` of the auction. +- `S_n` : total amount of selling coins to be distributed to the `n`-th bidder; This is how many selling coins will be distributed to the `n`-th bidder +- `R_n` : remaining amount of reserved paying coins of the `n`-th bidder to be refunded; This is how many paying coins will be refunded to the `n`-th bidder + + +For a fixed price auction, the above parameters for matched bids are calculated as + - `X` = `MatchedPrice` = `BidPrice` = `StartPrice`, + - `S_n` = `PayingCoin`/`MatchedPrice`, + - `R_n` = 0. + +For a batch auction, how to calculate the above parameters are described below. + +To calculate `X`, `S_n(X)`, and `R_n(X)`, the given parameters from the auction and the bids are: + +- `S` : total amount of `SellingCoin` for the auction +- `N` : total number of bidders for the auction +- `n` : index of a bidder +- `B_n` : total number of bids that the `n`-th bidder places for the auction +- `S^max_n` : max bid amount on how many `SellingCoin` the `n`-th bidder can get from this auction +- `b` : index of a bid of the `n`-th bidder +- `I_{n,b}(X)` : matched bid checker to check if `BidPrice` of the `b`-th bid of the `n`-th bidder is greater than or equal to `X` + - If `BidPrice` of the `b`-th bid of the `n`-th bidder is greater than or equal to `X`, then `I_{n,b}(X)` =1. + - If `BidPrice` of the `b`-th bid of the `n`-th bidder is less than `X`, then `I_{n,b}(X)` =0. +- `T_{n,1}` : set of `BidTypeFixedPrice` bids of the `n`-th bidder; This is only for a fixed price auction. +- `T_{n,2}` : set of `BidTypeBatchWorth` bids of the `n`-th bidder; This is only for a batch auction. +- `T_{n,3}` : set of `BidTypeBatchMany` bids of the `n`-th bidder; This is only for a batch auction. +- `P_{n,b}` : amount of `PayingCoin` reserved for the `b`-th bid of the `n`-th bidder; +- `S_{n,b}` : amount of selling coins to be released to the `n`-th bidder for the `b`-th bid + - For a `BidTypeBatchWorth` bid, this varies according to the price and `P_{n,b}`=`S_{n,b}` × `MatchedPrice`. + - For a `BidTypeBatchMany` bid, this is what the bidder places and `P_{n,b}`=`S_{n,b}` × `BidPrice` ≤ `S_{n,b}` × `MatchedPrice` + + +## Matched Price for Batch Auction + +The matched price, `X`, (which is `MatchedPrice`≥ `BidPrice`) is determined as the minimum price among the ordered prices that satisfy the following inequality. + +

+ + + +## Distribution of Selling Coins + +The amount `S_n` of selling coins to be distributed to the `n`-th bidder is calculated as + +

+ +## Refund of Paying Coins + +The remaining amount `R_n` of reserved paying coins to be refundedl to the `n`-th bidder is calculated as + +

+ + + + diff --git a/x/fundraising/spec/06_events.md b/x/fundraising/spec/06_events.md new file mode 100644 index 0000000..fe25877 --- /dev/null +++ b/x/fundraising/spec/06_events.md @@ -0,0 +1,72 @@ + + +# Events + +The `fundraising` module emits the following events: + +## Handlers + +### MsgCreateFixedPriceAuction + +| Type | Attribute Key | Attribute Value | +| -------------------------- | --------------------- | -------------------------- | +| create_fixed_price_auction | auction_id | {auctionId} | +| create_fixed_price_auction | auctioneer_address | {auctioneerAddress} | +| create_fixed_price_auction | start_price | {startPrice} | +| create_fixed_price_auction | selling_pool_address | {SellingReserveAddress} | +| create_fixed_price_auction | paying_pool_address | {PayingReserveAddress} | +| create_fixed_price_auction | vesting_pool_address | {VestingReserveAddress} | +| create_fixed_price_auction | selling_coin | {sellingCoin} | +| create_fixed_price_auction | paying_coin_denom | {payingCoinDenom} | +| create_fixed_price_auction | start_time | {startTime} | +| create_fixed_price_auction | end_time | {endTime} | +| create_fixed_price_auction | auction_status | {auctionStatus} | +| message | module | fundraising | +| message | action | create_fixed_price_auction | +| message | auctioneer | {auctioneerAddress} | + +### MsgCreateBatchAuction + +| Type | Attribute Key | Attribute Value | +| ------------------------- | -------------------- | -------------------------- | +| create_batch_auction | auction_id | {auctionId} | +| create_batch_auction | auctioneer_address | {auctioneerAddress} | +| create_batch_auction | start_price | {startPrice} | +| create_batch_auction | selling_pool_address | {SellingReserveAddress} | +| create_batch_auction | paying_pool_address | {PayingReserveAddress} | +| create_batch_auction | vesting_pool_address | {VestingReserveAddress} | +| create_batch_auction | selling_coin | {sellingCoin} | +| create_batch_auction | paying_coin_denom | {payingCoinDenom} | +| create_batch_auction | start_time | {startTime} | +| create_batch_auction | end_time | {endTime} | +| create_batch_auction | auction_status | {auctionStatus} | +| create_batch_auction | min_bid_price | {minBidPrice} | +| create_batch_auction | matched_price | {matchedPrice} | +| create_batch_auction | max_extended_round | {maxExtendedRound} | +| create_batch_auction | extended_round_rate | {extendedRoundRate} | +| message | module | fundraising | +| message | action | create_batch_auction | +| message | auctioneer | {auctioneerAddress} | + + + +### MsgCancelAuction + +| Type | Attribute Key | Attribute Value | +| -------------- | ------------- | ------------------- | +| cancel_auction | auction_id | {auctionId} | +| message | module | fundraising | +| message | action | cancel_auction | +| message | auctioneer | {auctioneerAddress} | + +### MsgPlaceBid + +| Type | Attribute Key | Attribute Value | +| --------- | -------------- | --------------- | +| place_bid | bidder_address | {bidderAddress} | +| place_bid | bid_price | {bidPrice} | +| place_bid | bid_coin | {bidCoin} | +| place_bid | bid_amount | {bidAmount} | +| message | module | fundraising | +| message | action | place_bid | +| message | bidder | {bidderAddress} | diff --git a/x/fundraising/spec/07_params.md b/x/fundraising/spec/07_params.md new file mode 100644 index 0000000..43ba414 --- /dev/null +++ b/x/fundraising/spec/07_params.md @@ -0,0 +1,35 @@ + + +# Parameters + +The `fundraising` module contains the following parameters: + +| Key | Type | Example | +| -------------------------- | --------- | ---------------------------------------------- | +| AuctionCreationFee | sdk.Coins | [{"denom":"stake","amount":"100000000"}] | +| PlaceBidFee | sdk.Coins | [{"denom":"stake","amount":"0"}] | +| ExtendedPeriod | uint32 | 3600 * 24 | + +## AuctionCreationFee + +`AuctionCreationFee` is the fee required to pay to create an auction. This fee prevents from spamming attack. + +## PlaceBidFee + +`PlaceBidFee` is the fee required to pay when placing a bid for an auction. This fee prevents from spamming attack. + +## ExtendedPeriod + +`ExtendedPeriod` is the extended period that determines how long the extended auction round is. + +# Global constants + +There are some global constants defined in `x/fundraising/types/params.go`. + +## MaxNumVestingSchedules + +`MaxNumVestingSchedules` is the maximum number of vesting schedules for an auction to have. It is set to `100`. + +## MaxExtendedRound + +`MaxExtendedRound` is the maximum number of extended round for a batch auction to have. It is set to `30`. diff --git a/x/fundraising/spec/08_hooks.md b/x/fundraising/spec/08_hooks.md new file mode 100644 index 0000000..f5dbf38 --- /dev/null +++ b/x/fundraising/spec/08_hooks.md @@ -0,0 +1,99 @@ + + +# Hooks + +Other modules may register operations to execute when a certain event has +occurred within fundraising. These events can be registered to execute right `Before` the fundraising event (as per the hook name). +The following hooks can registered with fundraising: + +```go +BeforeFixedPriceAuctionCreated( + ctx sdk.Context, + auctioneer string, + startPrice sdk.Dec, + sellingCoin sdk.Coin, + payingCoinDenom string, + vestingSchedules []VestingSchedule, + startTime time.Time, + endTime time.Time, +) + +AfterFixedPriceAuctionCreated( + ctx sdk.Context, + auctionId uint64, + auctioneer string, + startPrice sdk.Dec, + sellingCoin sdk.Coin, + payingCoinDenom string, + vestingSchedules []VestingSchedule, + startTime time.Time, + endTime time.Time, +) + +BeforeBatchAuctionCreated( + ctx sdk.Context, + auctioneer string, + startPrice sdk.Dec, + minBidPrice sdk.Dec, + sellingCoin sdk.Coin, + payingCoinDenom string, + vestingSchedules []VestingSchedule, + maxExtendedRound uint32, + extendedRoundRate sdk.Dec, + startTime time.Time, + endTime time.Time, +) + +AfterBatchAuctionCreated( + ctx sdk.Context, + auctionId uint64, + auctioneer string, + startPrice sdk.Dec, + minBidPrice sdk.Dec, + sellingCoin sdk.Coin, + payingCoinDenom string, + vestingSchedules []VestingSchedule, + maxExtendedRound uint32, + extendedRoundRate sdk.Dec, + startTime time.Time, + endTime time.Time, +) + +BeforeAuctionCanceled( + ctx sdk.Context, + auctionId uint64, + auctioneer string, +) + +BeforeBidPlaced( + ctx sdk.Context, + auctionId uint64, + bidId uint64, + bidder string, + bidType BidType, + price sdk.Dec, + coin sdk.Coin, +) + +BeforeBidModified( + ctx sdk.Context, + auctionId uint64, + bidId uint64, + bidder string, + bidType BidType, + price sdk.Dec, + coin sdk.Coin, +) + +BeforeAllowedBiddersAdded( + ctx sdk.Context, + allowedBidders []AllowedBidder, +) + +BeforeAllowedBidderUpdated( + ctx sdk.Context, + auctionId uint64, + bidder sdk.AccAddress, + maxBidAmount math.Int, +) +``` diff --git a/x/fundraising/spec/README.md b/x/fundraising/spec/README.md new file mode 100644 index 0000000..d7ff0b5 --- /dev/null +++ b/x/fundraising/spec/README.md @@ -0,0 +1,18 @@ + + +# `fundraising` + +## Abstract + +This document specifies the `fundraising` module that provides an oppotunity for a new project to onboard the ecosystem. It helps them to increase their brand awareness before launching a project. + +## Contents + +1. **[Concepts](01_concepts.md)** +2. **[State](02_state.md)** +3. **[State Transitions](03_state_transitions.md)** +4. **[Messages](04_messages.md)** +5. **[End-Block](05_end_block.md)** +6. **[Events](06_events.md)** +7. **[Parameters](07_params.md)** +8. **[Hooks](08_hooks.md)** diff --git a/x/fundraising/types/allowed_bidder.go b/x/fundraising/types/allowed_bidder.go new file mode 100644 index 0000000..542e456 --- /dev/null +++ b/x/fundraising/types/allowed_bidder.go @@ -0,0 +1,36 @@ +package types + +import ( + sdkerrors "cosmossdk.io/errors" + "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/errors" +) + +// NewAllowedBidder returns a new AllowedBidder. +func NewAllowedBidder(auctionId uint64, bidderAddr sdk.AccAddress, maxBidAmount math.Int) AllowedBidder { + return AllowedBidder{ + AuctionId: auctionId, + Bidder: bidderAddr.String(), + MaxBidAmount: maxBidAmount, + } +} + +// GetBidder returns the bidder account address. +func (ab AllowedBidder) GetBidder() (sdk.AccAddress, error) { + return sdk.AccAddressFromBech32(ab.Bidder) +} + +// Validate validates allowed bidder object. +func (ab AllowedBidder) Validate() error { + if _, err := ab.GetBidder(); err != nil { + return sdkerrors.Wrap(errors.ErrInvalidAddress, err.Error()) + } + if ab.MaxBidAmount.IsNil() { + return ErrInvalidMaxBidAmount + } + if !ab.MaxBidAmount.IsPositive() { + return ErrInvalidMaxBidAmount + } + return nil +} diff --git a/x/fundraising/types/allowed_bidder.pb.go b/x/fundraising/types/allowed_bidder.pb.go new file mode 100644 index 0000000..d4b646e --- /dev/null +++ b/x/fundraising/types/allowed_bidder.pb.go @@ -0,0 +1,402 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: modules/fundraising/v1/allowed_bidder.proto + +package types + +import ( + cosmossdk_io_math "cosmossdk.io/math" + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + _ "github.com/cosmos/cosmos-sdk/types/msgservice" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// AllowedBidder defines an allowed bidder for the auction. +type AllowedBidder struct { + // auction_id specifies the id of the auction + AuctionId uint64 `protobuf:"varint,1,opt,name=auction_id,json=auctionId,proto3" json:"auction_id,omitempty"` + // bidder specifies the bech32-encoded address that bids for the auction + Bidder string `protobuf:"bytes,2,opt,name=bidder,proto3" json:"bidder,omitempty"` + // max_bid_amount specifies the maximum bid amount that the bidder can bid + MaxBidAmount cosmossdk_io_math.Int `protobuf:"bytes,3,opt,name=max_bid_amount,json=maxBidAmount,proto3,customtype=cosmossdk.io/math.Int" json:"max_bid_amount"` +} + +func (m *AllowedBidder) Reset() { *m = AllowedBidder{} } +func (m *AllowedBidder) String() string { return proto.CompactTextString(m) } +func (*AllowedBidder) ProtoMessage() {} +func (*AllowedBidder) Descriptor() ([]byte, []int) { + return fileDescriptor_d06892713683ad0f, []int{0} +} +func (m *AllowedBidder) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *AllowedBidder) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_AllowedBidder.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 *AllowedBidder) XXX_Merge(src proto.Message) { + xxx_messageInfo_AllowedBidder.Merge(m, src) +} +func (m *AllowedBidder) XXX_Size() int { + return m.Size() +} +func (m *AllowedBidder) XXX_DiscardUnknown() { + xxx_messageInfo_AllowedBidder.DiscardUnknown(m) +} + +var xxx_messageInfo_AllowedBidder proto.InternalMessageInfo + +func init() { + proto.RegisterType((*AllowedBidder)(nil), "modules.fundraising.v1.AllowedBidder") +} + +func init() { + proto.RegisterFile("modules/fundraising/v1/allowed_bidder.proto", fileDescriptor_d06892713683ad0f) +} + +var fileDescriptor_d06892713683ad0f = []byte{ + // 316 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xd2, 0xce, 0xcd, 0x4f, 0x29, + 0xcd, 0x49, 0x2d, 0xd6, 0x4f, 0x2b, 0xcd, 0x4b, 0x29, 0x4a, 0xcc, 0x2c, 0xce, 0xcc, 0x4b, 0xd7, + 0x2f, 0x33, 0xd4, 0x4f, 0xcc, 0xc9, 0xc9, 0x2f, 0x4f, 0x4d, 0x89, 0x4f, 0xca, 0x4c, 0x49, 0x49, + 0x2d, 0xd2, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x83, 0x2a, 0xd6, 0x43, 0x52, 0xac, 0x57, + 0x66, 0x28, 0x25, 0x9e, 0x9c, 0x5f, 0x9c, 0x9b, 0x5f, 0xac, 0x9f, 0x5b, 0x0c, 0xd6, 0x9b, 0x5b, + 0x9c, 0x0e, 0xd1, 0x20, 0x25, 0x09, 0x91, 0x88, 0x07, 0xf3, 0xf4, 0x21, 0x1c, 0xa8, 0x94, 0x48, + 0x7a, 0x7e, 0x7a, 0x3e, 0x44, 0x1c, 0xc4, 0x82, 0x88, 0x2a, 0xad, 0x62, 0xe4, 0xe2, 0x75, 0x84, + 0x58, 0xed, 0x04, 0xb6, 0x59, 0x48, 0x96, 0x8b, 0x2b, 0xb1, 0x34, 0xb9, 0x24, 0x33, 0x3f, 0x2f, + 0x3e, 0x33, 0x45, 0x82, 0x51, 0x81, 0x51, 0x83, 0x25, 0x88, 0x13, 0x2a, 0xe2, 0x99, 0x22, 0x24, + 0xc6, 0xc5, 0x06, 0x71, 0xa2, 0x04, 0x93, 0x02, 0xa3, 0x06, 0x67, 0x10, 0x94, 0x27, 0x14, 0xc8, + 0xc5, 0x97, 0x9b, 0x58, 0x01, 0x72, 0x7e, 0x7c, 0x62, 0x6e, 0x7e, 0x69, 0x5e, 0x89, 0x04, 0x33, + 0x48, 0xde, 0x49, 0xfb, 0xc4, 0x3d, 0x79, 0x86, 0x5b, 0xf7, 0xe4, 0x45, 0x21, 0x8e, 0x29, 0x4e, + 0xc9, 0xd6, 0xcb, 0xcc, 0xd7, 0xcf, 0x4d, 0x2c, 0xc9, 0xd0, 0xf3, 0xcc, 0x2b, 0xb9, 0xb4, 0x45, + 0x97, 0x0b, 0xea, 0x4a, 0xcf, 0xbc, 0x92, 0x20, 0x9e, 0xdc, 0xc4, 0x0a, 0xa7, 0xcc, 0x14, 0x47, + 0xb0, 0x01, 0x56, 0xfc, 0x1d, 0x0b, 0xe4, 0x19, 0x9a, 0x9e, 0x6f, 0xd0, 0x82, 0xda, 0xe1, 0xe4, + 0x7e, 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, 0xba, 0xe9, 0x99, 0x25, 0x19, + 0xa5, 0x49, 0x7a, 0xc9, 0xf9, 0xb9, 0xfa, 0x99, 0xe9, 0x79, 0x99, 0x25, 0xa9, 0xfa, 0xb0, 0x70, + 0xae, 0x40, 0x09, 0xe9, 0x92, 0xca, 0x82, 0xd4, 0xe2, 0x24, 0x36, 0xb0, 0xe7, 0x8d, 0x01, 0x01, + 0x00, 0x00, 0xff, 0xff, 0x6c, 0x17, 0x2a, 0x12, 0x8d, 0x01, 0x00, 0x00, +} + +func (m *AllowedBidder) 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 *AllowedBidder) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *AllowedBidder) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size := m.MaxBidAmount.Size() + i -= size + if _, err := m.MaxBidAmount.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintAllowedBidder(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + if len(m.Bidder) > 0 { + i -= len(m.Bidder) + copy(dAtA[i:], m.Bidder) + i = encodeVarintAllowedBidder(dAtA, i, uint64(len(m.Bidder))) + i-- + dAtA[i] = 0x12 + } + if m.AuctionId != 0 { + i = encodeVarintAllowedBidder(dAtA, i, uint64(m.AuctionId)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func encodeVarintAllowedBidder(dAtA []byte, offset int, v uint64) int { + offset -= sovAllowedBidder(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *AllowedBidder) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.AuctionId != 0 { + n += 1 + sovAllowedBidder(uint64(m.AuctionId)) + } + l = len(m.Bidder) + if l > 0 { + n += 1 + l + sovAllowedBidder(uint64(l)) + } + l = m.MaxBidAmount.Size() + n += 1 + l + sovAllowedBidder(uint64(l)) + return n +} + +func sovAllowedBidder(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozAllowedBidder(x uint64) (n int) { + return sovAllowedBidder(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *AllowedBidder) 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 ErrIntOverflowAllowedBidder + } + 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: AllowedBidder: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AllowedBidder: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AuctionId", wireType) + } + m.AuctionId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAllowedBidder + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.AuctionId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Bidder", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAllowedBidder + } + 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 ErrInvalidLengthAllowedBidder + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAllowedBidder + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Bidder = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MaxBidAmount", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAllowedBidder + } + 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 ErrInvalidLengthAllowedBidder + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAllowedBidder + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.MaxBidAmount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipAllowedBidder(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthAllowedBidder + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipAllowedBidder(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowAllowedBidder + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowAllowedBidder + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowAllowedBidder + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthAllowedBidder + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupAllowedBidder + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthAllowedBidder + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthAllowedBidder = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowAllowedBidder = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupAllowedBidder = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/fundraising/types/allowed_bidder_test.go b/x/fundraising/types/allowed_bidder_test.go new file mode 100644 index 0000000..138caf7 --- /dev/null +++ b/x/fundraising/types/allowed_bidder_test.go @@ -0,0 +1,50 @@ +package types_test + +import ( + "testing" + + "cosmossdk.io/math" + "github.com/cometbft/cometbft/crypto" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/stretchr/testify/require" + + "github.com/ignite/modules/x/fundraising/types" +) + +func TestValidate_AllowedBidder(t *testing.T) { + testBidderAddr := sdk.AccAddress(crypto.AddressHash([]byte("TestBidder"))) + + testCases := []struct { + allowedBidder types.AllowedBidder + expectedErr bool + }{ + { + types.NewAllowedBidder(1, testBidderAddr, math.NewInt(100_000_000)), + false, + }, + { + types.NewAllowedBidder(1, sdk.AccAddress{}, math.NewInt(100_000_000)), + true, + }, + { + types.NewAllowedBidder(1, testBidderAddr, math.NewInt(0)), + true, + }, + { + types.NewAllowedBidder(1, testBidderAddr, math.ZeroInt()), + true, + }, + } + + for _, tc := range testCases { + err := tc.allowedBidder.Validate() + if tc.expectedErr { + require.Error(t, err) + } else { + bidder, err := tc.allowedBidder.GetBidder() + require.NoError(t, err) + require.Equal(t, testBidderAddr, bidder) + require.NoError(t, err) + } + } +} diff --git a/x/fundraising/types/auction.go b/x/fundraising/types/auction.go new file mode 100644 index 0000000..ee08463 --- /dev/null +++ b/x/fundraising/types/auction.go @@ -0,0 +1,402 @@ +package types + +import ( + "fmt" + "time" + + sdkerrors "cosmossdk.io/errors" + "cosmossdk.io/math" + "github.com/cosmos/cosmos-sdk/codec" + codectypes "github.com/cosmos/cosmos-sdk/codec/types" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/errors" + "github.com/gogo/protobuf/proto" +) + +const ( + SellingReserveAddressPrefix string = "SellingReserveAddress" + PayingReserveAddressPrefix string = "PayingReserveAddress" + VestingReserveAddressPrefix string = "VestingReserveAddress" + ModuleAddressNameSplitter string = "|" + + // ReserveAddressType is an address type of reserve for selling, paying, and vesting. + // The module uses the address type of 32 bytes length, but it can be changed depending on Cosmos SDK's direction. + ReserveAddressType = AddressType32Bytes +) + +var ( + _ AuctionI = (*FixedPriceAuction)(nil) + _ AuctionI = (*BatchAuction)(nil) +) + +// NewBaseAuction creates a new BaseAuction object +// +//nolint:interfacer +func NewBaseAuction( + id uint64, typ AuctionType, auctioneerAddr string, + sellingPoolAddr string, payingPoolAddr string, + startPrice math.LegacyDec, sellingCoin sdk.Coin, payingCoinDenom string, + vestingPoolAddr string, vestingSchedules []VestingSchedule, + startTime time.Time, endTimes []time.Time, status AuctionStatus, +) *BaseAuction { + return &BaseAuction{ + Id: id, + Type: typ, + Auctioneer: auctioneerAddr, + SellingReserveAddress: sellingPoolAddr, + PayingReserveAddress: payingPoolAddr, + StartPrice: startPrice, + SellingCoin: sellingCoin, + PayingCoinDenom: payingCoinDenom, + VestingReserveAddress: vestingPoolAddr, + VestingSchedules: vestingSchedules, + StartTime: startTime, + EndTimes: endTimes, + Status: status, + } +} + +func (ba BaseAuction) GetId() uint64 { //nolint:golint + return ba.Id +} + +func (ba *BaseAuction) SetId(id uint64) error { //nolint:golint + ba.Id = id + return nil +} + +func (ba BaseAuction) GetType() AuctionType { + return ba.Type +} + +func (ba *BaseAuction) SetType(typ AuctionType) error { + ba.Type = typ + return nil +} + +func (ba BaseAuction) GetAuctioneer() sdk.AccAddress { + addr, err := sdk.AccAddressFromBech32(ba.Auctioneer) + if err != nil { + panic(err) + } + return addr +} + +func (ba *BaseAuction) SetAuctioneer(addr sdk.AccAddress) error { + ba.Auctioneer = addr.String() + return nil +} + +func (ba BaseAuction) GetSellingReserveAddress() sdk.AccAddress { + addr, err := sdk.AccAddressFromBech32(ba.SellingReserveAddress) + if err != nil { + panic(err) + } + return addr +} + +func (ba *BaseAuction) SetSellingReserveAddress(addr sdk.AccAddress) error { + ba.SellingReserveAddress = addr.String() + return nil +} + +func (ba BaseAuction) GetPayingReserveAddress() sdk.AccAddress { + addr, err := sdk.AccAddressFromBech32(ba.PayingReserveAddress) + if err != nil { + panic(err) + } + return addr +} + +func (ba *BaseAuction) SetPayingReserveAddress(addr sdk.AccAddress) error { + ba.PayingReserveAddress = addr.String() + return nil +} + +func (ba BaseAuction) GetStartPrice() math.LegacyDec { + return ba.StartPrice +} + +func (ba *BaseAuction) SetStartPrice(price math.LegacyDec) error { + ba.StartPrice = price + return nil +} + +func (ba BaseAuction) GetSellingCoin() sdk.Coin { + return ba.SellingCoin +} + +func (ba *BaseAuction) SetSellingCoin(coin sdk.Coin) error { + ba.SellingCoin = coin + return nil +} + +func (ba BaseAuction) GetPayingCoinDenom() string { + return ba.PayingCoinDenom +} + +func (ba *BaseAuction) SetPayingCoinDenom(denom string) error { + ba.PayingCoinDenom = denom + return nil +} + +func (ba BaseAuction) GetVestingReserveAddress() sdk.AccAddress { + addr, err := sdk.AccAddressFromBech32(ba.VestingReserveAddress) + if err != nil { + panic(err) + } + return addr +} + +func (ba *BaseAuction) SetVestingReserveAddress(addr sdk.AccAddress) error { + ba.VestingReserveAddress = addr.String() + return nil +} + +func (ba BaseAuction) GetVestingSchedules() []VestingSchedule { + return ba.VestingSchedules +} + +func (ba *BaseAuction) SetVestingSchedules(schedules []VestingSchedule) error { + ba.VestingSchedules = schedules + return nil +} + +func (ba BaseAuction) GetStartTime() time.Time { + return ba.StartTime +} + +func (ba *BaseAuction) SetStartTime(t time.Time) error { + ba.StartTime = t + return nil +} + +func (ba BaseAuction) GetEndTimes() []time.Time { + return ba.EndTimes +} + +func (ba *BaseAuction) SetEndTimes(t []time.Time) error { + ba.EndTimes = t + return nil +} + +func (ba BaseAuction) GetStatus() AuctionStatus { + return ba.Status +} + +func (ba *BaseAuction) SetStatus(status AuctionStatus) error { + ba.Status = status + return nil +} + +// Validate checks for errors on the Auction fields +func (ba BaseAuction) Validate() error { + if ba.Type != AuctionTypeFixedPrice && ba.Type != AuctionTypeBatch { + return sdkerrors.Wrapf(ErrInvalidAuctionType, "unknown plan type: %s", ba.Type) + } + if _, err := sdk.AccAddressFromBech32(ba.Auctioneer); err != nil { + return sdkerrors.Wrapf(errors.ErrInvalidAddress, "invalid auctioneer address %q: %v", ba.Auctioneer, err) + } + if _, err := sdk.AccAddressFromBech32(ba.SellingReserveAddress); err != nil { + return sdkerrors.Wrapf(errors.ErrInvalidAddress, "invalid selling pool address %q: %v", ba.SellingReserveAddress, err) + } + if _, err := sdk.AccAddressFromBech32(ba.PayingReserveAddress); err != nil { + return sdkerrors.Wrapf(errors.ErrInvalidAddress, "invalid paying pool address %q: %v", ba.PayingReserveAddress, err) + } + if _, err := sdk.AccAddressFromBech32(ba.VestingReserveAddress); err != nil { + return sdkerrors.Wrapf(errors.ErrInvalidAddress, "invalid vesting pool address %q: %v", ba.VestingReserveAddress, err) + } + if !ba.StartPrice.IsPositive() { + return sdkerrors.Wrapf(errors.ErrInvalidRequest, "invalid start price: %f", ba.StartPrice) + } + if err := ba.SellingCoin.Validate(); err != nil { + return sdkerrors.Wrapf(errors.ErrInvalidCoins, "invalid selling coin: %v", ba.SellingCoin) + } + if ba.SellingCoin.Denom == ba.PayingCoinDenom { + return sdkerrors.Wrapf(errors.ErrInvalidRequest, "selling coin denom must not be the same as paying coin denom") + } + if err := sdk.ValidateDenom(ba.PayingCoinDenom); err != nil { + return sdkerrors.Wrapf(errors.ErrInvalidRequest, "invalid paying coin denom: %v", err) + } + if err := ValidateVestingSchedules(ba.VestingSchedules, ba.EndTimes[len(ba.EndTimes)-1]); err != nil { + return err + } + return nil +} + +// ShouldAuctionStarted returns true if the start time is equal or before the given time t. +func (ba BaseAuction) ShouldAuctionStarted(t time.Time) bool { + return !ba.GetStartTime().After(t) // StartTime <= Time +} + +// ShouldAuctionClosed returns true if the end time is equal or before the given time t. +func (ba BaseAuction) ShouldAuctionClosed(t time.Time) bool { + ts := ba.GetEndTimes() + return !ts[len(ts)-1].After(t) // LastEndTime <= Time +} + +// NewFixedPriceAuction returns a new fixed price auction. +func NewFixedPriceAuction(baseAuction *BaseAuction, remainingSellingCoin sdk.Coin) *FixedPriceAuction { + return &FixedPriceAuction{ + BaseAuction: baseAuction, + RemainingSellingCoin: remainingSellingCoin, + } +} + +// NewBatchAuction returns a new batch auction. +func NewBatchAuction(baseAuction *BaseAuction, minBidPrice math.LegacyDec, matchedPrice math.LegacyDec, maxExtendedRound uint32, extendedRoundRate math.LegacyDec) *BatchAuction { + return &BatchAuction{ + BaseAuction: baseAuction, + MinBidPrice: minBidPrice, + MatchedPrice: matchedPrice, + MaxExtendedRound: maxExtendedRound, + ExtendedRoundRate: extendedRoundRate, + } +} + +// AuctionI is an interface that inherits the BaseAuction and exposes common functions +// to get and set standard auction data. +type AuctionI interface { + proto.Message + + GetId() uint64 + SetId(uint64) error + + GetType() AuctionType + SetType(AuctionType) error + + GetAuctioneer() sdk.AccAddress + SetAuctioneer(sdk.AccAddress) error + + GetSellingReserveAddress() sdk.AccAddress + SetSellingReserveAddress(sdk.AccAddress) error + + GetPayingReserveAddress() sdk.AccAddress + SetPayingReserveAddress(sdk.AccAddress) error + + GetStartPrice() math.LegacyDec + SetStartPrice(math.LegacyDec) error + + GetSellingCoin() sdk.Coin + SetSellingCoin(sdk.Coin) error + + GetPayingCoinDenom() string + SetPayingCoinDenom(string) error + + GetVestingReserveAddress() sdk.AccAddress + SetVestingReserveAddress(sdk.AccAddress) error + + GetVestingSchedules() []VestingSchedule + SetVestingSchedules([]VestingSchedule) error + + GetStartTime() time.Time + SetStartTime(time.Time) error + + GetEndTimes() []time.Time + SetEndTimes([]time.Time) error + + GetStatus() AuctionStatus + SetStatus(AuctionStatus) error + + ShouldAuctionStarted(t time.Time) bool + ShouldAuctionClosed(t time.Time) bool + + Validate() error +} + +// PackAuction converts AuctionI to Any. +func PackAuction(auction AuctionI) (*codectypes.Any, error) { + any, err := codectypes.NewAnyWithValue(auction) + if err != nil { + return nil, err + } + return any, nil +} + +// UnpackAuction converts Any to AuctionI. +func UnpackAuction(any *codectypes.Any) (AuctionI, error) { + if any == nil { + return nil, sdkerrors.Wrapf(errors.ErrInvalidType, "cannot unpack nil") + } + + if any.TypeUrl == "" { + return nil, sdkerrors.Wrap(errors.ErrInvalidType, "empty type url") + } + + var auction AuctionI + v := any.GetCachedValue() + if v == nil { + registry := codectypes.NewInterfaceRegistry() + RegisterInterfaces(registry) + if err := registry.UnpackAny(any, &auction); err != nil { + return nil, err + } + return auction, nil + } + + auction, ok := v.(AuctionI) + if !ok { + return nil, sdkerrors.Wrapf(errors.ErrInvalidType, "cannot unpack auction from %T", v) + } + + return auction, nil +} + +// UnpackAuctions converts Any slice to AuctionIs. +func UnpackAuctions(auctionsAny []*codectypes.Any) ([]AuctionI, error) { + auctions := make([]AuctionI, len(auctionsAny)) + for i, any := range auctionsAny { + p, err := UnpackAuction(any) + if err != nil { + return nil, err + } + auctions[i] = p + } + return auctions, nil +} + +// MustMarshalAuction returns the marshalled auction bytes. +// It throws panic if it fails. +func MustMarshalAuction(cdc codec.BinaryCodec, auction AuctionI) []byte { + bz, err := MarshalAuction(cdc, auction) + if err != nil { + panic(err) + } + return bz +} + +// MustUnmarshalAuction return the unmarshalled auction from bytes. +// It throws panic if it fails. +func MustUnmarshalAuction(cdc codec.BinaryCodec, value []byte) AuctionI { + pair, err := UnmarshalAuction(cdc, value) + if err != nil { + panic(err) + } + return pair +} + +// MarshalAuction returns bytes from the auction interface. +func MarshalAuction(cdc codec.BinaryCodec, auction AuctionI) (value []byte, err error) { + return cdc.MarshalInterface(auction) +} + +// UnmarshalAuction returns the auction from the bytes. +func UnmarshalAuction(cdc codec.BinaryCodec, value []byte) (auction AuctionI, err error) { + err = cdc.UnmarshalInterface(value, &auction) + return auction, err +} + +// SellingReserveAddress returns the selling reserve address with the given auction id. +func SellingReserveAddress(auctionId uint64) sdk.AccAddress { + return DeriveAddress(ReserveAddressType, ModuleName, SellingReserveAddressPrefix+ModuleAddressNameSplitter+fmt.Sprint(auctionId)) +} + +// PayingReserveAddress returns the paying reserve address with the given auction id. +func PayingReserveAddress(auctionId uint64) sdk.AccAddress { + return DeriveAddress(ReserveAddressType, ModuleName, PayingReserveAddressPrefix+ModuleAddressNameSplitter+fmt.Sprint(auctionId)) +} + +// VestingReserveAddress returns the vesting reserve address with the given auction id. +func VestingReserveAddress(auctionId uint64) sdk.AccAddress { + return DeriveAddress(ReserveAddressType, ModuleName, VestingReserveAddressPrefix+ModuleAddressNameSplitter+fmt.Sprint(auctionId)) +} diff --git a/x/fundraising/types/auction.pb.go b/x/fundraising/types/auction.pb.go new file mode 100644 index 0000000..c4e4d44 --- /dev/null +++ b/x/fundraising/types/auction.pb.go @@ -0,0 +1,1777 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: modules/fundraising/v1/auction.proto + +package types + +import ( + cosmossdk_io_math "cosmossdk.io/math" + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + types "github.com/cosmos/cosmos-sdk/types" + _ "github.com/cosmos/cosmos-sdk/types/tx/amino" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" + github_com_cosmos_gogoproto_types "github.com/cosmos/gogoproto/types" + _ "google.golang.org/protobuf/types/known/timestamppb" + io "io" + math "math" + math_bits "math/bits" + time "time" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf +var _ = time.Kitchen + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// AuctionType enumerates the valid types of an auction. +type AuctionType int32 + +const ( + // AUCTION_TYPE_UNSPECIFIED defines the default auction type + AuctionTypeNil AuctionType = 0 + // AUCTION_TYPE_FIXED_PRICE defines the fixed price auction type + AuctionTypeFixedPrice AuctionType = 1 + // AUCTION_TYPE_BATCH defines the batch auction type + AuctionTypeBatch AuctionType = 2 +) + +var AuctionType_name = map[int32]string{ + 0: "AUCTION_TYPE_UNSPECIFIED", + 1: "AUCTION_TYPE_FIXED_PRICE", + 2: "AUCTION_TYPE_BATCH", +} + +var AuctionType_value = map[string]int32{ + "AUCTION_TYPE_UNSPECIFIED": 0, + "AUCTION_TYPE_FIXED_PRICE": 1, + "AUCTION_TYPE_BATCH": 2, +} + +func (x AuctionType) String() string { + return proto.EnumName(AuctionType_name, int32(x)) +} + +func (AuctionType) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_d935614728751a75, []int{0} +} + +// AuctionStatus enumerates the valid status of an auction. +type AuctionStatus int32 + +const ( + // AUCTION_STATUS_UNSPECIFIED defines the default auction status + AuctionStatusNil AuctionStatus = 0 + // AUCTION_STATUS_STANDBY defines the standby auction status + AuctionStatusStandBy AuctionStatus = 1 + // AUCTION_STATUS_STARTED defines the started auction status + AuctionStatusStarted AuctionStatus = 2 + // AUCTION_STATUS_VESTING defines the vesting auction status + AuctionStatusVesting AuctionStatus = 3 + // AUCTION_STATUS_FINISHED defines the finished auction status + AuctionStatusFinished AuctionStatus = 4 + // AUCTION_STATUS_CANCELLED defines the cancelled auction status + AuctionStatusCancelled AuctionStatus = 5 +) + +var AuctionStatus_name = map[int32]string{ + 0: "AUCTION_STATUS_UNSPECIFIED", + 1: "AUCTION_STATUS_STANDBY", + 2: "AUCTION_STATUS_STARTED", + 3: "AUCTION_STATUS_VESTING", + 4: "AUCTION_STATUS_FINISHED", + 5: "AUCTION_STATUS_CANCELLED", +} + +var AuctionStatus_value = map[string]int32{ + "AUCTION_STATUS_UNSPECIFIED": 0, + "AUCTION_STATUS_STANDBY": 1, + "AUCTION_STATUS_STARTED": 2, + "AUCTION_STATUS_VESTING": 3, + "AUCTION_STATUS_FINISHED": 4, + "AUCTION_STATUS_CANCELLED": 5, +} + +func (x AuctionStatus) String() string { + return proto.EnumName(AuctionStatus_name, int32(x)) +} + +func (AuctionStatus) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_d935614728751a75, []int{1} +} + +// BaseAuction defines a base auction type. It contains all the necessary fields +// for basic auction functionality. Any custom auction type should extend this +// type for additional functionality (e.g. batch auction, fixed price +// auction). +type BaseAuction struct { + // id specifies index of the auction + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + // type specifies the auction type + // type 1 is fixed price and 2 is batch auction + Type AuctionType `protobuf:"varint,2,opt,name=type,proto3,enum=modules.fundraising.v1.AuctionType" json:"type,omitempty"` + // auctioneer specifies the bech32-encoded address that creates the auction + Auctioneer string `protobuf:"bytes,3,opt,name=auctioneer,proto3" json:"auctioneer,omitempty"` + // selling_reserve_address specifies the bech32-encoded address that has all + // the selling coin + SellingReserveAddress string `protobuf:"bytes,4,opt,name=selling_reserve_address,json=sellingReserveAddress,proto3" json:"selling_reserve_address,omitempty"` + // paying_reserve_address specifies the bech32-encoded address that has all + // the paying coin + PayingReserveAddress string `protobuf:"bytes,5,opt,name=paying_reserve_address,json=payingReserveAddress,proto3" json:"paying_reserve_address,omitempty"` + // start_price specifies the starting price of the auction + // it is determined by the proportion of the price of paying coin denom + StartPrice cosmossdk_io_math.LegacyDec `protobuf:"bytes,6,opt,name=start_price,json=startPrice,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"start_price"` + // selling_coin specifies the selling coin for the auction + SellingCoin types.Coin `protobuf:"bytes,7,opt,name=selling_coin,json=sellingCoin,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coin" json:"selling_coin"` + // paying_coin_denom specifies the paying coin denom that bidders use to bid + // for + PayingCoinDenom string `protobuf:"bytes,8,opt,name=paying_coin_denom,json=payingCoinDenom,proto3" json:"paying_coin_denom,omitempty"` + // vesting_reserve_address specifies the bech32-encoded vesting address that + // holds vesting amounts of coin + VestingReserveAddress string `protobuf:"bytes,9,opt,name=vesting_reserve_address,json=vestingReserveAddress,proto3" json:"vesting_reserve_address,omitempty"` + // vesting_schedules specifies the vesting schedules for the auction + VestingSchedules []VestingSchedule `protobuf:"bytes,10,rep,name=vesting_schedules,json=vestingSchedules,proto3" json:"vesting_schedules"` + // start_time specifies the start time of the plan + StartTime time.Time `protobuf:"bytes,11,opt,name=start_time,json=startTime,proto3,stdtime" json:"start_time"` + // end_times specifies the end time of the plan + EndTimes []time.Time `protobuf:"bytes,12,rep,name=end_times,json=endTimes,proto3,stdtime" json:"end_times"` + // status specifies the auction status + Status AuctionStatus `protobuf:"varint,13,opt,name=status,proto3,enum=modules.fundraising.v1.AuctionStatus" json:"status,omitempty"` +} + +func (m *BaseAuction) Reset() { *m = BaseAuction{} } +func (m *BaseAuction) String() string { return proto.CompactTextString(m) } +func (*BaseAuction) ProtoMessage() {} +func (*BaseAuction) Descriptor() ([]byte, []int) { + return fileDescriptor_d935614728751a75, []int{0} +} +func (m *BaseAuction) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *BaseAuction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_BaseAuction.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 *BaseAuction) XXX_Merge(src proto.Message) { + xxx_messageInfo_BaseAuction.Merge(m, src) +} +func (m *BaseAuction) XXX_Size() int { + return m.Size() +} +func (m *BaseAuction) XXX_DiscardUnknown() { + xxx_messageInfo_BaseAuction.DiscardUnknown(m) +} + +var xxx_messageInfo_BaseAuction proto.InternalMessageInfo + +// FixedPriceAuction defines the fixed price auction type. It is the most +// simpliest way to raise funds. An auctioneer sets the starting price for each +// selling amounts of coin and bidders bid to purchase based on the fixed price. +type FixedPriceAuction struct { + *BaseAuction `protobuf:"bytes,1,opt,name=base_auction,json=baseAuction,proto3,embedded=base_auction" json:"base_auction,omitempty"` + // remaining_coin specifies the remaining amount of selling coin to sell + RemainingSellingCoin types.Coin `protobuf:"bytes,2,opt,name=remaining_selling_coin,json=remainingSellingCoin,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coin" json:"remaining_selling_coin"` +} + +func (m *FixedPriceAuction) Reset() { *m = FixedPriceAuction{} } +func (m *FixedPriceAuction) String() string { return proto.CompactTextString(m) } +func (*FixedPriceAuction) ProtoMessage() {} +func (*FixedPriceAuction) Descriptor() ([]byte, []int) { + return fileDescriptor_d935614728751a75, []int{1} +} +func (m *FixedPriceAuction) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *FixedPriceAuction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_FixedPriceAuction.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 *FixedPriceAuction) XXX_Merge(src proto.Message) { + xxx_messageInfo_FixedPriceAuction.Merge(m, src) +} +func (m *FixedPriceAuction) XXX_Size() int { + return m.Size() +} +func (m *FixedPriceAuction) XXX_DiscardUnknown() { + xxx_messageInfo_FixedPriceAuction.DiscardUnknown(m) +} + +var xxx_messageInfo_FixedPriceAuction proto.InternalMessageInfo + +// BatchAuction defines a batch auction type. It allows bidders to participate +// in the auction by placing their limit orders with a bid price they are +// willing to bid within the auction period. They can place multiple bids with +// different bid prices and if they want to modify their existing bid, they only +// have an option to modify with a higher bid price. Under the hood, an order +// book is created to record the bids to calculate the matched bidders. +type BatchAuction struct { + *BaseAuction `protobuf:"bytes,1,opt,name=base_auction,json=baseAuction,proto3,embedded=base_auction" json:"base_auction,omitempty"` + // min_bid_price specifies the minibum bid price + MinBidPrice cosmossdk_io_math.LegacyDec `protobuf:"bytes,2,opt,name=min_bid_price,json=minBidPrice,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"min_bid_price"` + // matched_price specifies the matched price of the auction + MatchedPrice cosmossdk_io_math.LegacyDec `protobuf:"bytes,3,opt,name=matched_price,json=matchedPrice,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"matched_price"` + // max_extended_round specifies a maximum number of extended rounds + MaxExtendedRound uint32 `protobuf:"varint,4,opt,name=max_extended_round,json=maxExtendedRound,proto3" json:"max_extended_round,omitempty"` + // extended_round_rate specifies the rate that decides if the auction needs + // another round + ExtendedRoundRate cosmossdk_io_math.LegacyDec `protobuf:"bytes,5,opt,name=extended_round_rate,json=extendedRoundRate,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"extended_round_rate"` +} + +func (m *BatchAuction) Reset() { *m = BatchAuction{} } +func (m *BatchAuction) String() string { return proto.CompactTextString(m) } +func (*BatchAuction) ProtoMessage() {} +func (*BatchAuction) Descriptor() ([]byte, []int) { + return fileDescriptor_d935614728751a75, []int{2} +} +func (m *BatchAuction) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *BatchAuction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_BatchAuction.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 *BatchAuction) XXX_Merge(src proto.Message) { + xxx_messageInfo_BatchAuction.Merge(m, src) +} +func (m *BatchAuction) XXX_Size() int { + return m.Size() +} +func (m *BatchAuction) XXX_DiscardUnknown() { + xxx_messageInfo_BatchAuction.DiscardUnknown(m) +} + +var xxx_messageInfo_BatchAuction proto.InternalMessageInfo + +// VestingSchedule defines the vesting schedule for the owner of an auction. +type VestingSchedule struct { + // release_time specifies the time for distribution of the vesting coin + ReleaseTime time.Time `protobuf:"bytes,1,opt,name=release_time,json=releaseTime,proto3,stdtime" json:"release_time"` + // weight specifies the vesting weight for the schedule + Weight cosmossdk_io_math.LegacyDec `protobuf:"bytes,2,opt,name=weight,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"weight"` +} + +func (m *VestingSchedule) Reset() { *m = VestingSchedule{} } +func (m *VestingSchedule) String() string { return proto.CompactTextString(m) } +func (*VestingSchedule) ProtoMessage() {} +func (*VestingSchedule) Descriptor() ([]byte, []int) { + return fileDescriptor_d935614728751a75, []int{3} +} +func (m *VestingSchedule) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *VestingSchedule) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_VestingSchedule.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 *VestingSchedule) XXX_Merge(src proto.Message) { + xxx_messageInfo_VestingSchedule.Merge(m, src) +} +func (m *VestingSchedule) XXX_Size() int { + return m.Size() +} +func (m *VestingSchedule) XXX_DiscardUnknown() { + xxx_messageInfo_VestingSchedule.DiscardUnknown(m) +} + +var xxx_messageInfo_VestingSchedule proto.InternalMessageInfo + +func (m *VestingSchedule) GetReleaseTime() time.Time { + if m != nil { + return m.ReleaseTime + } + return time.Time{} +} + +func init() { + proto.RegisterEnum("modules.fundraising.v1.AuctionType", AuctionType_name, AuctionType_value) + proto.RegisterEnum("modules.fundraising.v1.AuctionStatus", AuctionStatus_name, AuctionStatus_value) + proto.RegisterType((*BaseAuction)(nil), "modules.fundraising.v1.BaseAuction") + proto.RegisterType((*FixedPriceAuction)(nil), "modules.fundraising.v1.FixedPriceAuction") + proto.RegisterType((*BatchAuction)(nil), "modules.fundraising.v1.BatchAuction") + proto.RegisterType((*VestingSchedule)(nil), "modules.fundraising.v1.VestingSchedule") +} + +func init() { + proto.RegisterFile("modules/fundraising/v1/auction.proto", fileDescriptor_d935614728751a75) +} + +var fileDescriptor_d935614728751a75 = []byte{ + // 1099 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0x4f, 0x6b, 0xe3, 0xc6, + 0x1b, 0xb6, 0x1c, 0x6f, 0x7e, 0xc9, 0xc8, 0xc9, 0x2a, 0xfa, 0x65, 0x53, 0x45, 0x05, 0xdb, 0xa4, + 0x2d, 0x1b, 0x42, 0x23, 0x35, 0x69, 0xe8, 0x96, 0x85, 0x1e, 0x2c, 0x5b, 0xc9, 0x1a, 0x82, 0x1b, + 0x64, 0x27, 0x74, 0xf7, 0x22, 0xc6, 0xd2, 0xac, 0x3d, 0xac, 0x25, 0x19, 0x8d, 0xec, 0x26, 0xb7, + 0x42, 0x2f, 0x4b, 0x4e, 0x7b, 0x2e, 0x18, 0x4a, 0x4b, 0xa1, 0x94, 0x1e, 0xf6, 0xb0, 0x1f, 0x62, + 0xe9, 0x29, 0xf4, 0xd2, 0xd2, 0x43, 0x52, 0x92, 0xc3, 0x42, 0x3f, 0x45, 0x99, 0x3f, 0x6e, 0x64, + 0xe3, 0x65, 0xbb, 0x81, 0x5e, 0x12, 0x6b, 0xde, 0xf7, 0x79, 0xe6, 0x9d, 0xe7, 0x7d, 0xde, 0x91, + 0xc0, 0xfb, 0x41, 0xe4, 0xf7, 0xbb, 0x88, 0x98, 0x8f, 0xfb, 0xa1, 0x1f, 0x43, 0x4c, 0x70, 0xd8, + 0x36, 0x07, 0x5b, 0x26, 0xec, 0x7b, 0x09, 0x8e, 0x42, 0xa3, 0x17, 0x47, 0x49, 0xa4, 0xae, 0x88, + 0x2c, 0x23, 0x95, 0x65, 0x0c, 0xb6, 0xf4, 0x25, 0x18, 0xe0, 0x30, 0x32, 0xd9, 0x5f, 0x9e, 0xaa, + 0x17, 0xbc, 0x88, 0x04, 0x11, 0x31, 0x5b, 0x90, 0x20, 0x73, 0xb0, 0xd5, 0x42, 0x09, 0xdc, 0x32, + 0xbd, 0x08, 0x0b, 0x2a, 0x7d, 0x95, 0xc7, 0x5d, 0xf6, 0x64, 0xf2, 0x07, 0x11, 0x5a, 0x6e, 0x47, + 0xed, 0x88, 0xaf, 0xd3, 0x5f, 0x62, 0xb5, 0xd8, 0x8e, 0xa2, 0x76, 0x17, 0x99, 0xec, 0xa9, 0xd5, + 0x7f, 0x6c, 0x26, 0x38, 0x40, 0x24, 0x81, 0x41, 0x8f, 0x27, 0xac, 0xfd, 0x36, 0x0b, 0x64, 0x0b, + 0x12, 0x54, 0xe6, 0x25, 0xab, 0x8b, 0x20, 0x8b, 0x7d, 0x4d, 0x2a, 0x49, 0xeb, 0x39, 0x27, 0x8b, + 0x7d, 0xf5, 0x1e, 0xc8, 0x25, 0x27, 0x3d, 0xa4, 0x65, 0x4b, 0xd2, 0xfa, 0xe2, 0xf6, 0x7b, 0xc6, + 0xf4, 0xb3, 0x18, 0x02, 0xde, 0x3c, 0xe9, 0x21, 0x87, 0x01, 0xd4, 0x02, 0x00, 0x42, 0x06, 0x84, + 0x62, 0x6d, 0xa6, 0x24, 0xad, 0xcf, 0x3b, 0xa9, 0x15, 0xf5, 0x13, 0xf0, 0x0e, 0x41, 0xdd, 0x2e, + 0x0e, 0xdb, 0x6e, 0x8c, 0x08, 0x8a, 0x07, 0xc8, 0x85, 0xbe, 0x1f, 0x23, 0x42, 0xb4, 0x1c, 0x4b, + 0xbe, 0x23, 0xc2, 0x0e, 0x8f, 0x96, 0x79, 0x50, 0xdd, 0x01, 0x2b, 0x3d, 0x78, 0x32, 0x0d, 0x76, + 0x8b, 0xc1, 0x96, 0x79, 0x74, 0x02, 0xe5, 0x00, 0x99, 0x24, 0x30, 0x4e, 0xdc, 0x5e, 0x8c, 0x3d, + 0xa4, 0xcd, 0xd2, 0x54, 0x6b, 0xeb, 0xe5, 0x79, 0x31, 0xf3, 0xc7, 0x79, 0xf1, 0x5d, 0x2e, 0x24, + 0xf1, 0x9f, 0x18, 0x38, 0x32, 0x03, 0x98, 0x74, 0x8c, 0x7d, 0xd4, 0x86, 0xde, 0x49, 0x15, 0x79, + 0xbf, 0xbe, 0xd8, 0x04, 0x42, 0xe7, 0x2a, 0xf2, 0x1c, 0xc0, 0x58, 0x0e, 0x28, 0x89, 0xfa, 0xb5, + 0x04, 0xf2, 0xa3, 0x23, 0xd0, 0x1e, 0x69, 0xff, 0x2b, 0x49, 0xeb, 0xf2, 0xf6, 0xaa, 0x21, 0xf2, + 0x69, 0x13, 0x0d, 0xd1, 0x44, 0xa3, 0x12, 0xe1, 0xd0, 0xb2, 0xe9, 0x86, 0x3f, 0x5d, 0x14, 0xef, + 0xb6, 0x71, 0xd2, 0xe9, 0xb7, 0x0c, 0x2f, 0x0a, 0x44, 0x13, 0xc5, 0xbf, 0x4d, 0xe2, 0x3f, 0x31, + 0xa9, 0x7c, 0x84, 0x01, 0xbe, 0x79, 0xf5, 0x7c, 0x23, 0xdf, 0x65, 0xa5, 0xb0, 0x1d, 0xc8, 0x8f, + 0xaf, 0x9e, 0x6f, 0x48, 0x8e, 0x2c, 0x76, 0xa5, 0x29, 0xea, 0x06, 0x58, 0x12, 0x7a, 0xd0, 0x0c, + 0xd7, 0x47, 0x61, 0x14, 0x68, 0x73, 0x4c, 0x8a, 0xdb, 0x3c, 0x40, 0xd3, 0xaa, 0x74, 0x99, 0x6a, + 0x3e, 0x40, 0x24, 0x99, 0x26, 0xde, 0x3c, 0xd7, 0x5c, 0x84, 0x27, 0xd4, 0x7b, 0x04, 0x96, 0x46, + 0x38, 0xe2, 0x75, 0x10, 0x73, 0x80, 0x06, 0x4a, 0x33, 0xeb, 0xf2, 0xf6, 0xdd, 0xd7, 0x39, 0xe2, + 0x88, 0x03, 0x1a, 0x22, 0xdf, 0xca, 0xd1, 0xb3, 0x3b, 0xca, 0x60, 0x7c, 0x99, 0xa8, 0x15, 0xc0, + 0x35, 0x75, 0xa9, 0x33, 0x35, 0x99, 0x49, 0xa8, 0x1b, 0xdc, 0xb6, 0xc6, 0xc8, 0xb6, 0x46, 0x73, + 0x64, 0x5b, 0x6b, 0x8e, 0xf2, 0x3c, 0xbb, 0x28, 0x4a, 0xce, 0x3c, 0xc3, 0xd1, 0x88, 0x5a, 0x06, + 0xf3, 0x28, 0xf4, 0x19, 0x05, 0xd1, 0xf2, 0xac, 0xb0, 0x7f, 0xc7, 0x31, 0x87, 0x42, 0x9f, 0xad, + 0xab, 0x9f, 0x81, 0x59, 0x92, 0xc0, 0xa4, 0x4f, 0xb4, 0x05, 0x66, 0xf5, 0x0f, 0xde, 0x60, 0xf5, + 0x06, 0x4b, 0x76, 0x04, 0xe8, 0xbe, 0xf2, 0xf4, 0xdb, 0x62, 0xe6, 0x97, 0x17, 0x9b, 0x73, 0x22, + 0x5c, 0x5b, 0xfb, 0x4b, 0x02, 0x4b, 0xbb, 0xf8, 0x18, 0xf9, 0xcc, 0x2d, 0xa3, 0xf9, 0xda, 0x07, + 0x79, 0xea, 0x0b, 0x57, 0x4c, 0x02, 0x9b, 0x34, 0xf9, 0xf5, 0x73, 0x95, 0x1a, 0x4d, 0x2b, 0x77, + 0x76, 0x5e, 0x94, 0x1c, 0xb9, 0x95, 0x9a, 0xd6, 0xaf, 0x24, 0xb0, 0x12, 0xa3, 0x00, 0xe2, 0x90, + 0xf5, 0x26, 0x6d, 0xc6, 0xec, 0x9b, 0xcc, 0x68, 0xbe, 0xa5, 0x19, 0x9d, 0xe5, 0x7f, 0x76, 0x6a, + 0x5c, 0xfb, 0xef, 0x7e, 0x8e, 0x1e, 0x7c, 0xed, 0xbb, 0x19, 0x90, 0xb7, 0x60, 0xe2, 0x75, 0xfe, + 0x9b, 0x73, 0x1e, 0x82, 0x85, 0x00, 0x87, 0x6e, 0x0b, 0xfb, 0x62, 0x80, 0xb3, 0x37, 0x1d, 0x60, + 0x39, 0xc0, 0xa1, 0x85, 0x79, 0x4f, 0xd4, 0x23, 0xb0, 0x10, 0xd0, 0xa2, 0xd1, 0x88, 0x76, 0xe6, + 0xa6, 0xb4, 0x79, 0xc1, 0xc3, 0x79, 0x3f, 0x04, 0x6a, 0x00, 0x8f, 0x5d, 0x74, 0x9c, 0xa0, 0xd0, + 0x47, 0xbe, 0x1b, 0x47, 0xfd, 0xd0, 0x67, 0xd7, 0xda, 0x82, 0xa3, 0x04, 0xf0, 0xd8, 0x16, 0x01, + 0x87, 0xae, 0xab, 0x10, 0xfc, 0x7f, 0x3c, 0xd3, 0x8d, 0x61, 0x82, 0xf8, 0x75, 0x76, 0x93, 0x5a, + 0x96, 0x50, 0x9a, 0xde, 0x81, 0x09, 0x12, 0x4d, 0xfa, 0x41, 0x02, 0xb7, 0x27, 0xc6, 0x52, 0xdd, + 0x03, 0xf9, 0x18, 0x75, 0x11, 0x6d, 0x15, 0x1b, 0x40, 0xe9, 0x2d, 0x06, 0x50, 0x16, 0x48, 0x36, + 0x82, 0x35, 0x30, 0xfb, 0x25, 0xc2, 0xed, 0x4e, 0x72, 0xf3, 0xde, 0x08, 0x82, 0x8d, 0x9f, 0x25, + 0x20, 0xa7, 0x5e, 0x28, 0xea, 0x47, 0x40, 0x2b, 0x1f, 0x56, 0x9a, 0xb5, 0xcf, 0xeb, 0x6e, 0xf3, + 0xe1, 0x81, 0xed, 0x1e, 0xd6, 0x1b, 0x07, 0x76, 0xa5, 0xb6, 0x5b, 0xb3, 0xab, 0x4a, 0x46, 0x57, + 0x4f, 0x87, 0xa5, 0xc5, 0x54, 0x7a, 0x1d, 0x77, 0xd5, 0x7b, 0x13, 0x88, 0xdd, 0xda, 0x17, 0x76, + 0xd5, 0x3d, 0x70, 0x6a, 0x15, 0x5b, 0x91, 0xf4, 0xd5, 0xd3, 0x61, 0xe9, 0x4e, 0x0a, 0x71, 0x3d, + 0xa5, 0xb4, 0x73, 0x63, 0x40, 0xab, 0xdc, 0xac, 0x3c, 0x50, 0xb2, 0xfa, 0xf2, 0xe9, 0xb0, 0xa4, + 0xa4, 0x20, 0xcc, 0xeb, 0x7a, 0xee, 0xe9, 0xf7, 0x85, 0xcc, 0xc6, 0x45, 0x16, 0x2c, 0x8c, 0x5d, + 0x0a, 0xea, 0x0e, 0xd0, 0x47, 0x2c, 0x8d, 0x66, 0xb9, 0x79, 0xd8, 0x98, 0x28, 0x39, 0xcd, 0xc6, + 0x21, 0xb4, 0xe8, 0x1d, 0xb0, 0x32, 0x81, 0x6a, 0x34, 0xcb, 0xf5, 0xaa, 0xf5, 0x50, 0x91, 0x74, + 0xed, 0x74, 0x58, 0x5a, 0x1e, 0x43, 0x34, 0x12, 0x18, 0xfa, 0xd6, 0xc9, 0x74, 0x94, 0xd3, 0xb4, + 0xab, 0x4a, 0x76, 0x3a, 0x2a, 0x4e, 0x90, 0x3f, 0x05, 0x75, 0x64, 0x37, 0x9a, 0xb5, 0xfa, 0x9e, + 0x32, 0x33, 0x05, 0x25, 0x4c, 0x43, 0xdf, 0x1f, 0x13, 0xa8, 0xdd, 0x5a, 0xbd, 0xd6, 0x78, 0x60, + 0x57, 0x95, 0xdc, 0x98, 0xaa, 0x1c, 0xb6, 0x8b, 0x43, 0x4c, 0x3a, 0xc8, 0x57, 0x3f, 0xbd, 0x6e, + 0x87, 0xc0, 0x55, 0xca, 0xf5, 0x8a, 0xbd, 0xbf, 0x6f, 0x57, 0x95, 0x5b, 0xba, 0x7e, 0x3a, 0x2c, + 0xad, 0x8c, 0x01, 0x2b, 0x30, 0xf4, 0x50, 0xb7, 0x8b, 0x7c, 0xae, 0xb0, 0xb5, 0xf7, 0xf2, 0xb2, + 0x20, 0x9d, 0x5d, 0x16, 0xa4, 0x3f, 0x2f, 0x0b, 0xd2, 0xb3, 0xab, 0x42, 0xe6, 0xec, 0xaa, 0x90, + 0xf9, 0xfd, 0xaa, 0x90, 0x79, 0xb4, 0x99, 0xba, 0xbc, 0x70, 0x3b, 0xc4, 0x09, 0x32, 0x47, 0xdf, + 0x64, 0xc7, 0x63, 0x5f, 0x65, 0xec, 0x1e, 0x6b, 0xcd, 0x32, 0x3f, 0x7f, 0xfc, 0x77, 0x00, 0x00, + 0x00, 0xff, 0xff, 0x6f, 0xaf, 0x0c, 0x4e, 0xb9, 0x09, 0x00, 0x00, +} + +func (m *BaseAuction) 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 *BaseAuction) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *BaseAuction) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Status != 0 { + i = encodeVarintAuction(dAtA, i, uint64(m.Status)) + i-- + dAtA[i] = 0x68 + } + if len(m.EndTimes) > 0 { + for iNdEx := len(m.EndTimes) - 1; iNdEx >= 0; iNdEx-- { + n, err := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.EndTimes[iNdEx], dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.EndTimes[iNdEx]):]) + if err != nil { + return 0, err + } + i -= n + i = encodeVarintAuction(dAtA, i, uint64(n)) + i-- + dAtA[i] = 0x62 + } + } + n1, err1 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.StartTime, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.StartTime):]) + if err1 != nil { + return 0, err1 + } + i -= n1 + i = encodeVarintAuction(dAtA, i, uint64(n1)) + i-- + dAtA[i] = 0x5a + if len(m.VestingSchedules) > 0 { + for iNdEx := len(m.VestingSchedules) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.VestingSchedules[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintAuction(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x52 + } + } + if len(m.VestingReserveAddress) > 0 { + i -= len(m.VestingReserveAddress) + copy(dAtA[i:], m.VestingReserveAddress) + i = encodeVarintAuction(dAtA, i, uint64(len(m.VestingReserveAddress))) + i-- + dAtA[i] = 0x4a + } + if len(m.PayingCoinDenom) > 0 { + i -= len(m.PayingCoinDenom) + copy(dAtA[i:], m.PayingCoinDenom) + i = encodeVarintAuction(dAtA, i, uint64(len(m.PayingCoinDenom))) + i-- + dAtA[i] = 0x42 + } + { + size, err := m.SellingCoin.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintAuction(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + { + size := m.StartPrice.Size() + i -= size + if _, err := m.StartPrice.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintAuction(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + if len(m.PayingReserveAddress) > 0 { + i -= len(m.PayingReserveAddress) + copy(dAtA[i:], m.PayingReserveAddress) + i = encodeVarintAuction(dAtA, i, uint64(len(m.PayingReserveAddress))) + i-- + dAtA[i] = 0x2a + } + if len(m.SellingReserveAddress) > 0 { + i -= len(m.SellingReserveAddress) + copy(dAtA[i:], m.SellingReserveAddress) + i = encodeVarintAuction(dAtA, i, uint64(len(m.SellingReserveAddress))) + i-- + dAtA[i] = 0x22 + } + if len(m.Auctioneer) > 0 { + i -= len(m.Auctioneer) + copy(dAtA[i:], m.Auctioneer) + i = encodeVarintAuction(dAtA, i, uint64(len(m.Auctioneer))) + i-- + dAtA[i] = 0x1a + } + if m.Type != 0 { + i = encodeVarintAuction(dAtA, i, uint64(m.Type)) + i-- + dAtA[i] = 0x10 + } + if m.Id != 0 { + i = encodeVarintAuction(dAtA, i, uint64(m.Id)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *FixedPriceAuction) 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 *FixedPriceAuction) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *FixedPriceAuction) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.RemainingSellingCoin.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintAuction(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if m.BaseAuction != nil { + { + size, err := m.BaseAuction.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintAuction(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *BatchAuction) 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 *BatchAuction) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *BatchAuction) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size := m.ExtendedRoundRate.Size() + i -= size + if _, err := m.ExtendedRoundRate.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintAuction(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + if m.MaxExtendedRound != 0 { + i = encodeVarintAuction(dAtA, i, uint64(m.MaxExtendedRound)) + i-- + dAtA[i] = 0x20 + } + { + size := m.MatchedPrice.Size() + i -= size + if _, err := m.MatchedPrice.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintAuction(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + { + size := m.MinBidPrice.Size() + i -= size + if _, err := m.MinBidPrice.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintAuction(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if m.BaseAuction != nil { + { + size, err := m.BaseAuction.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintAuction(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *VestingSchedule) 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 *VestingSchedule) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *VestingSchedule) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size := m.Weight.Size() + i -= size + if _, err := m.Weight.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintAuction(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + n6, err6 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.ReleaseTime, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.ReleaseTime):]) + if err6 != nil { + return 0, err6 + } + i -= n6 + i = encodeVarintAuction(dAtA, i, uint64(n6)) + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func encodeVarintAuction(dAtA []byte, offset int, v uint64) int { + offset -= sovAuction(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *BaseAuction) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Id != 0 { + n += 1 + sovAuction(uint64(m.Id)) + } + if m.Type != 0 { + n += 1 + sovAuction(uint64(m.Type)) + } + l = len(m.Auctioneer) + if l > 0 { + n += 1 + l + sovAuction(uint64(l)) + } + l = len(m.SellingReserveAddress) + if l > 0 { + n += 1 + l + sovAuction(uint64(l)) + } + l = len(m.PayingReserveAddress) + if l > 0 { + n += 1 + l + sovAuction(uint64(l)) + } + l = m.StartPrice.Size() + n += 1 + l + sovAuction(uint64(l)) + l = m.SellingCoin.Size() + n += 1 + l + sovAuction(uint64(l)) + l = len(m.PayingCoinDenom) + if l > 0 { + n += 1 + l + sovAuction(uint64(l)) + } + l = len(m.VestingReserveAddress) + if l > 0 { + n += 1 + l + sovAuction(uint64(l)) + } + if len(m.VestingSchedules) > 0 { + for _, e := range m.VestingSchedules { + l = e.Size() + n += 1 + l + sovAuction(uint64(l)) + } + } + l = github_com_cosmos_gogoproto_types.SizeOfStdTime(m.StartTime) + n += 1 + l + sovAuction(uint64(l)) + if len(m.EndTimes) > 0 { + for _, e := range m.EndTimes { + l = github_com_cosmos_gogoproto_types.SizeOfStdTime(e) + n += 1 + l + sovAuction(uint64(l)) + } + } + if m.Status != 0 { + n += 1 + sovAuction(uint64(m.Status)) + } + return n +} + +func (m *FixedPriceAuction) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.BaseAuction != nil { + l = m.BaseAuction.Size() + n += 1 + l + sovAuction(uint64(l)) + } + l = m.RemainingSellingCoin.Size() + n += 1 + l + sovAuction(uint64(l)) + return n +} + +func (m *BatchAuction) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.BaseAuction != nil { + l = m.BaseAuction.Size() + n += 1 + l + sovAuction(uint64(l)) + } + l = m.MinBidPrice.Size() + n += 1 + l + sovAuction(uint64(l)) + l = m.MatchedPrice.Size() + n += 1 + l + sovAuction(uint64(l)) + if m.MaxExtendedRound != 0 { + n += 1 + sovAuction(uint64(m.MaxExtendedRound)) + } + l = m.ExtendedRoundRate.Size() + n += 1 + l + sovAuction(uint64(l)) + return n +} + +func (m *VestingSchedule) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = github_com_cosmos_gogoproto_types.SizeOfStdTime(m.ReleaseTime) + n += 1 + l + sovAuction(uint64(l)) + l = m.Weight.Size() + n += 1 + l + sovAuction(uint64(l)) + return n +} + +func sovAuction(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozAuction(x uint64) (n int) { + return sovAuction(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *BaseAuction) 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 ErrIntOverflowAuction + } + 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: BaseAuction: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: BaseAuction: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + m.Id = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuction + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Id |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + m.Type = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuction + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Type |= AuctionType(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Auctioneer", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuction + } + 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 ErrInvalidLengthAuction + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAuction + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Auctioneer = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SellingReserveAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuction + } + 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 ErrInvalidLengthAuction + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAuction + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SellingReserveAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PayingReserveAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuction + } + 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 ErrInvalidLengthAuction + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAuction + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PayingReserveAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StartPrice", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuction + } + 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 ErrInvalidLengthAuction + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAuction + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.StartPrice.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SellingCoin", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuction + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthAuction + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthAuction + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.SellingCoin.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PayingCoinDenom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuction + } + 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 ErrInvalidLengthAuction + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAuction + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PayingCoinDenom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VestingReserveAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuction + } + 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 ErrInvalidLengthAuction + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAuction + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.VestingReserveAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VestingSchedules", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuction + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthAuction + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthAuction + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.VestingSchedules = append(m.VestingSchedules, VestingSchedule{}) + if err := m.VestingSchedules[len(m.VestingSchedules)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StartTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuction + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthAuction + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthAuction + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(&m.StartTime, dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field EndTimes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuction + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthAuction + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthAuction + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.EndTimes = append(m.EndTimes, time.Time{}) + if err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(&(m.EndTimes[len(m.EndTimes)-1]), dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 13: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + m.Status = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuction + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Status |= AuctionStatus(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipAuction(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthAuction + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *FixedPriceAuction) 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 ErrIntOverflowAuction + } + 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: FixedPriceAuction: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: FixedPriceAuction: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BaseAuction", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuction + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthAuction + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthAuction + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.BaseAuction == nil { + m.BaseAuction = &BaseAuction{} + } + if err := m.BaseAuction.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RemainingSellingCoin", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuction + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthAuction + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthAuction + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.RemainingSellingCoin.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipAuction(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthAuction + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *BatchAuction) 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 ErrIntOverflowAuction + } + 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: BatchAuction: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: BatchAuction: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BaseAuction", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuction + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthAuction + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthAuction + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.BaseAuction == nil { + m.BaseAuction = &BaseAuction{} + } + if err := m.BaseAuction.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MinBidPrice", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuction + } + 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 ErrInvalidLengthAuction + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAuction + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.MinBidPrice.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MatchedPrice", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuction + } + 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 ErrInvalidLengthAuction + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAuction + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.MatchedPrice.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MaxExtendedRound", wireType) + } + m.MaxExtendedRound = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuction + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.MaxExtendedRound |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ExtendedRoundRate", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuction + } + 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 ErrInvalidLengthAuction + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAuction + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ExtendedRoundRate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipAuction(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthAuction + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *VestingSchedule) 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 ErrIntOverflowAuction + } + 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: VestingSchedule: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: VestingSchedule: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ReleaseTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuction + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthAuction + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthAuction + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(&m.ReleaseTime, dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Weight", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuction + } + 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 ErrInvalidLengthAuction + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAuction + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Weight.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipAuction(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthAuction + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipAuction(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowAuction + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowAuction + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowAuction + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthAuction + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupAuction + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthAuction + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthAuction = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowAuction = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupAuction = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/fundraising/types/auction_test.go b/x/fundraising/types/auction_test.go new file mode 100644 index 0000000..107376f --- /dev/null +++ b/x/fundraising/types/auction_test.go @@ -0,0 +1,307 @@ +package types_test + +import ( + "testing" + "time" + + "cosmossdk.io/math" + "github.com/cometbft/cometbft/crypto" + "github.com/cosmos/cosmos-sdk/codec" + codectypes "github.com/cosmos/cosmos-sdk/codec/types" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/stretchr/testify/require" + + "github.com/ignite/modules/x/fundraising/types" +) + +func TestUnpackAuction(t *testing.T) { + auction := types.NewFixedPriceAuction( + types.NewBaseAuction( + 1, + types.AuctionTypeFixedPrice, + sdk.AccAddress(crypto.AddressHash([]byte("Auctioneer"))).String(), + types.SellingReserveAddress(1).String(), + types.PayingReserveAddress(1).String(), + math.LegacyMustNewDecFromStr("0.5"), + sdk.NewInt64Coin("denom3", 1_000_000_000_000), + "denom4", + types.VestingReserveAddress(1).String(), + []types.VestingSchedule{ + {ReleaseTime: types.MustParseRFC3339("2023-01-01T00:00:00Z"), Weight: math.LegacyOneDec()}, + }, + types.MustParseRFC3339("2022-01-01T00:00:00Z"), + []time.Time{types.MustParseRFC3339("2022-02-01T00:00:00Z")}, + types.AuctionStatusStarted, + ), + sdk.NewInt64Coin("denom3", 1_000_000_000_000), + ) + + a, err := types.PackAuction(auction) + require.NoError(t, err) + + marshaled, err := a.Marshal() + require.NoError(t, err) + + var any2 codectypes.Any + err = any2.Unmarshal(marshaled) + require.NoError(t, err) + + reMarshal, err := any2.Marshal() + require.NoError(t, err) + require.Equal(t, marshaled, reMarshal) + + auction2, err := types.UnpackAuction(&any2) + require.NoError(t, err) + + require.Equal(t, auction.Id, auction2.GetId()) + require.Equal(t, auction.Type, auction2.GetType()) + require.Equal(t, auction.Auctioneer, auction2.GetAuctioneer().String()) + require.Equal(t, auction.SellingCoin, auction2.GetSellingCoin()) + require.Equal(t, auction.PayingCoinDenom, auction2.GetPayingCoinDenom()) + require.Equal(t, auction.StartPrice, auction2.GetStartPrice()) + require.Equal(t, auction.SellingReserveAddress, auction2.GetSellingReserveAddress().String()) + require.Equal(t, auction.SellingReserveAddress, auction2.GetSellingReserveAddress().String()) + require.Equal(t, auction.PayingReserveAddress, auction2.GetPayingReserveAddress().String()) + require.Equal(t, auction.VestingReserveAddress, auction2.GetVestingReserveAddress().String()) + require.Equal(t, auction.VestingSchedules, auction2.GetVestingSchedules()) + require.Equal(t, auction.StartTime.UTC(), auction2.GetStartTime().UTC()) + require.Equal(t, auction.EndTimes[0].UTC(), auction2.GetEndTimes()[0].UTC()) + require.Equal(t, auction.Status, auction2.GetStatus()) + + require.NoError(t, auction2.SetId(5)) + require.NoError(t, auction2.SetType(types.AuctionTypeBatch)) + require.NoError(t, auction2.SetAuctioneer(sdk.AccAddress(crypto.AddressHash([]byte("Auctioneer2"))))) + require.NoError(t, auction2.SetSellingReserveAddress(types.SellingReserveAddress(5))) + require.NoError(t, auction2.SetPayingReserveAddress(types.PayingReserveAddress(5))) + require.NoError(t, auction2.SetVestingReserveAddress(types.VestingReserveAddress(5))) + require.NoError(t, auction2.SetStartPrice(math.LegacyOneDec())) + require.NoError(t, auction2.SetSellingCoin(sdk.NewInt64Coin("denom5", 1_000_000_000_000))) + require.NoError(t, auction2.SetPayingCoinDenom("denom6")) + require.NoError(t, auction2.SetStartTime(types.MustParseRFC3339("2022-10-01T00:00:00Z"))) + require.NoError(t, auction2.SetVestingSchedules([]types.VestingSchedule{{ReleaseTime: types.MustParseRFC3339("2023-01-01T00:00:00Z"), Weight: math.LegacyOneDec()}})) + require.NoError(t, auction2.SetEndTimes([]time.Time{types.MustParseRFC3339("2022-11-01T00:00:00Z")})) + require.NoError(t, auction2.SetStatus(types.AuctionStatusStarted)) + + require.True(t, auction2.GetId() == 5) + require.True(t, auction2.GetType() == types.AuctionTypeBatch) + require.True(t, auction2.GetAuctioneer().Equals(sdk.AccAddress(crypto.AddressHash([]byte("Auctioneer2"))))) + require.True(t, auction2.GetSellingReserveAddress().Equals(types.SellingReserveAddress(5))) + require.True(t, auction2.GetPayingReserveAddress().Equals(types.PayingReserveAddress(5))) + require.True(t, auction2.GetVestingReserveAddress().Equals(types.VestingReserveAddress(5))) + require.True(t, auction2.GetStartPrice().Equal(math.LegacyOneDec())) +} + +func TestUnpackAuctionJSON(t *testing.T) { + auction := types.NewFixedPriceAuction( + types.NewBaseAuction( + 1, + types.AuctionTypeFixedPrice, + sdk.AccAddress(crypto.AddressHash([]byte("Auctioneer"))).String(), + types.SellingReserveAddress(1).String(), + types.PayingReserveAddress(1).String(), + math.LegacyMustNewDecFromStr("0.5"), + sdk.NewInt64Coin("denom1", 1_000_000_000_000), + "denom2", + types.VestingReserveAddress(1).String(), + []types.VestingSchedule{}, + time.Now().AddDate(0, 0, -1), + []time.Time{time.Now().AddDate(0, 1, -1)}, + types.AuctionStatusStarted, + ), + sdk.NewInt64Coin("denom2", 1_000_000_000_000), + ) + + a, err := types.PackAuction(auction) + require.NoError(t, err) + + registry := codectypes.NewInterfaceRegistry() + types.RegisterInterfaces(registry) + cdc := codec.NewProtoCodec(registry) + + bz := cdc.MustMarshalJSON(a) + + var any2 codectypes.Any + err = cdc.UnmarshalJSON(bz, &any2) + require.NoError(t, err) + + auction2, err := types.UnpackAuction(&any2) + require.NoError(t, err) + + require.Equal(t, uint64(1), auction2.GetId()) +} + +func TestUnpackAuctions(t *testing.T) { + auction := []types.AuctionI{ + types.NewFixedPriceAuction( + types.NewBaseAuction( + 1, + types.AuctionTypeFixedPrice, + sdk.AccAddress(crypto.AddressHash([]byte("Auctioneer"))).String(), + types.SellingReserveAddress(1).String(), + types.PayingReserveAddress(1).String(), + math.LegacyMustNewDecFromStr("0.5"), + sdk.NewInt64Coin("denom1", 1_000_000_000_000), + "denom2", + types.VestingReserveAddress(1).String(), + []types.VestingSchedule{}, + time.Now().AddDate(0, 0, -1), + []time.Time{time.Now().AddDate(0, 1, -1)}, + types.AuctionStatusStarted, + ), + sdk.NewInt64Coin("denom2", 1_000_000_000_000), + ), + types.NewBatchAuction( + types.NewBaseAuction( + 2, + types.AuctionTypeFixedPrice, + sdk.AccAddress(crypto.AddressHash([]byte("Auctioneer"))).String(), + types.SellingReserveAddress(1).String(), + types.PayingReserveAddress(1).String(), + math.LegacyMustNewDecFromStr("0.5"), + sdk.NewInt64Coin("denom3", 1_000_000_000_000), + "denom4", + types.VestingReserveAddress(1).String(), + []types.VestingSchedule{}, + time.Now().AddDate(0, 0, -1), + []time.Time{time.Now().AddDate(0, 1, -1)}, + types.AuctionStatusStarted, + ), + math.LegacyMustNewDecFromStr("0.1"), + math.LegacyZeroDec(), + uint32(3), + math.LegacyMustNewDecFromStr("0.15"), + ), + } + + a, err := types.PackAuction(auction[0]) + require.NoError(t, err) + + a2, err := types.PackAuction(auction[1]) + require.NoError(t, err) + + anyAuctions := []*codectypes.Any{a, a2} + auctions, err := types.UnpackAuctions(anyAuctions) + require.NoError(t, err) + + registry := codectypes.NewInterfaceRegistry() + types.RegisterInterfaces(registry) + cdc := codec.NewProtoCodec(registry) + + bz1 := types.MustMarshalAuction(cdc, auctions[0]) + auction1 := types.MustUnmarshalAuction(cdc, bz1) + _, ok := auction1.(*types.FixedPriceAuction) + require.True(t, ok) + + bz2 := types.MustMarshalAuction(cdc, auctions[1]) + auction2 := types.MustUnmarshalAuction(cdc, bz2) + _, ok = auction2.(*types.BatchAuction) + require.True(t, ok) +} + +func TestShouldAuctionStarted(t *testing.T) { + auction := types.BaseAuction{ + Id: 1, + Type: types.AuctionTypeFixedPrice, + Auctioneer: sdk.AccAddress(crypto.AddressHash([]byte("Auctioneer"))).String(), + SellingReserveAddress: types.SellingReserveAddress(1).String(), + PayingReserveAddress: types.PayingReserveAddress(1).String(), + StartPrice: math.LegacyMustNewDecFromStr("0.5"), + SellingCoin: sdk.NewInt64Coin("denom3", 1_000_000_000_000), + PayingCoinDenom: "denom4", + VestingReserveAddress: types.VestingReserveAddress(1).String(), + VestingSchedules: []types.VestingSchedule{}, + StartTime: types.MustParseRFC3339("2021-12-01T00:00:00Z"), + EndTimes: []time.Time{types.MustParseRFC3339("2021-12-15T00:00:00Z")}, + Status: types.AuctionStatusStandBy, + } + + for _, tc := range []struct { + currentTime string + expected bool + }{ + {"2021-11-01T00:00:00Z", false}, + {"2021-11-15T23:59:59Z", false}, + {"2021-11-20T00:00:00Z", false}, + {"2021-12-01T00:00:00Z", true}, + {"2021-12-01T00:00:01Z", true}, + {"2021-12-10T00:00:00Z", true}, + {"2022-01-01T00:00:00Z", true}, + } { + require.Equal(t, tc.expected, auction.ShouldAuctionStarted(types.MustParseRFC3339(tc.currentTime))) + } +} + +func TestShouldAuctionClosed(t *testing.T) { + auction := types.BaseAuction{ + Id: 1, + Type: types.AuctionTypeFixedPrice, + Auctioneer: sdk.AccAddress(crypto.AddressHash([]byte("Auctioneer"))).String(), + SellingReserveAddress: types.SellingReserveAddress(1).String(), + PayingReserveAddress: types.PayingReserveAddress(1).String(), + StartPrice: math.LegacyMustNewDecFromStr("0.5"), + SellingCoin: sdk.NewInt64Coin("denom3", 1_000_000_000_000), + PayingCoinDenom: "denom4", + VestingReserveAddress: types.VestingReserveAddress(1).String(), + VestingSchedules: []types.VestingSchedule{}, + StartTime: types.MustParseRFC3339("2021-12-01T00:00:00Z"), + EndTimes: []time.Time{types.MustParseRFC3339("2021-12-15T00:00:00Z")}, + Status: types.AuctionStatusStandBy, + } + + for _, tc := range []struct { + currentTime string + expected bool + }{ + {"2021-11-01T00:00:00Z", false}, + {"2021-11-15T23:59:59Z", false}, + {"2021-11-20T00:00:00Z", false}, + {"2021-12-15T00:00:00Z", true}, + {"2021-12-15T00:00:01Z", true}, + {"2021-12-30T00:00:00Z", true}, + {"2022-01-01T00:00:00Z", true}, + } { + require.Equal(t, tc.expected, auction.ShouldAuctionClosed(types.MustParseRFC3339(tc.currentTime))) + } +} + +func TestSellingReserveAddress(t *testing.T) { + for _, tc := range []struct { + auctionId uint64 + expected string + }{ + {1, "cosmos1wl90665mfk3pgg095qhmlgha934exjvv437acgq42zw0sg94flestth4zu"}, + {2, "cosmos197ewwasd96k2fh3nx5m76zvqxpzjcxuyq65rwgw0aa2edmwafgfqfa5qqz"}, + } { + t.Run("", func(t *testing.T) { + require.Equal(t, tc.expected, types.SellingReserveAddress(tc.auctionId).String()) + }) + } +} + +func TestPayingReserveAddress(t *testing.T) { + for _, tc := range []struct { + auctionId uint64 + expected string + }{ + {1, "cosmos17gk7a5ys8pxuexl7tvyk3pc9tdmqjjek03zjemez4eqvqdxlu92qdhphm2"}, + {2, "cosmos1s3cspws3lsqfvtjcz9jvpx7kjm93npmwjq8p4xfu3fcjj5jz9pks20uja6"}, + } { + t.Run("", func(t *testing.T) { + require.Equal(t, tc.expected, types.PayingReserveAddress(tc.auctionId).String()) + }) + } +} + +func TestVestingReserveAddress(t *testing.T) { + for _, tc := range []struct { + auctionId uint64 + expected string + }{ + {1, "cosmos1q4x4k4qsr4jwrrugnplhlj52mfd9f8jn5ck7r4ykdpv9wczvz4dqe8vrvt"}, + {2, "cosmos1pye9kv5f8s9n8uxnr0uznsn3klq57vqz8h2ya6u0v4w5666lqdfqjrw0qu"}, + } { + t.Run("", func(t *testing.T) { + require.Equal(t, tc.expected, types.VestingReserveAddress(tc.auctionId).String()) + }) + } +} diff --git a/x/fundraising/types/bid.go b/x/fundraising/types/bid.go new file mode 100644 index 0000000..333e615 --- /dev/null +++ b/x/fundraising/types/bid.go @@ -0,0 +1,49 @@ +package types + +import ( + "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" +) + +// NewBid returns a new Bid. +func NewBid(auctionId uint64, bidder sdk.AccAddress, bidId uint64, bidType BidType, price math.LegacyDec, coin sdk.Coin, isMatched bool) Bid { + return Bid{ + AuctionId: auctionId, + Bidder: bidder.String(), + Id: bidId, + Type: bidType, + Price: price, + Coin: coin, + IsMatched: isMatched, + } +} + +func (b Bid) GetBidder() sdk.AccAddress { + addr, err := sdk.AccAddressFromBech32(b.Bidder) + if err != nil { + panic(err) + } + return addr +} + +func (b *Bid) SetMatched(status bool) { + b.IsMatched = status +} + +// ConvertToSellingAmount converts to selling amount depending on the bid coin denom. +// Note that we take as little coins as possible to prevent from overflowing the remaining selling coin. +func (b Bid) ConvertToSellingAmount(denom string) (amount math.Int) { + if b.Coin.Denom == denom { + return math.LegacyNewDecFromInt(b.Coin.Amount).QuoTruncate(b.Price).TruncateInt() // BidAmount / BidPrice + } + return b.Coin.Amount +} + +// ConvertToPayingAmount converts to paying amount depending on the bid coin denom. +// Note that we take as many coins as possible by ceiling numbers from bidder. +func (b Bid) ConvertToPayingAmount(denom string) (amount math.Int) { + if b.Coin.Denom == denom { + return b.Coin.Amount + } + return math.LegacyNewDecFromInt(b.Coin.Amount).Mul(b.Price).Ceil().TruncateInt() // BidAmount * BidPrice +} diff --git a/x/fundraising/types/bid.pb.go b/x/fundraising/types/bid.pb.go new file mode 100644 index 0000000..8d80ff0 --- /dev/null +++ b/x/fundraising/types/bid.pb.go @@ -0,0 +1,633 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: modules/fundraising/v1/bid.proto + +package types + +import ( + cosmossdk_io_math "cosmossdk.io/math" + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + types "github.com/cosmos/cosmos-sdk/types" + _ "github.com/cosmos/cosmos-sdk/types/tx/amino" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// BidType enumerates the valid types of a bid. +type BidType int32 + +const ( + // BID_TYPE_UNSPECIFIED defines the default bid type + BidTypeNil BidType = 0 + // BID_TYPE_FIXED_PRICE defines a bid type for a fixed price auction type + BidTypeFixedPrice BidType = 1 + // BID_TYPE_BATCH_WORTH defines a bid type for How-Much-Worth-to-Buy of a + // batch auction + BidTypeBatchWorth BidType = 2 + // BID_TYPE_BATCH_MANY defines a bid type for How-Many-Coins-to-Buy of a batch + // auction + BidTypeBatchMany BidType = 3 +) + +var BidType_name = map[int32]string{ + 0: "BID_TYPE_UNSPECIFIED", + 1: "BID_TYPE_FIXED_PRICE", + 2: "BID_TYPE_BATCH_WORTH", + 3: "BID_TYPE_BATCH_MANY", +} + +var BidType_value = map[string]int32{ + "BID_TYPE_UNSPECIFIED": 0, + "BID_TYPE_FIXED_PRICE": 1, + "BID_TYPE_BATCH_WORTH": 2, + "BID_TYPE_BATCH_MANY": 3, +} + +func (x BidType) String() string { + return proto.EnumName(BidType_name, int32(x)) +} + +func (BidType) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_3454ac2a3bdb8e89, []int{0} +} + +// AddressType enumerates the available types of a address. +type AddressType int32 + +const ( + // the 32 bytes length address type of ADR 028. + AddressType32Bytes AddressType = 0 + // the default 20 bytes length address type. + AddressType20Bytes AddressType = 1 +) + +var AddressType_name = map[int32]string{ + 0: "ADDRESS_TYPE_32_BYTES", + 1: "ADDRESS_TYPE_20_BYTES", +} + +var AddressType_value = map[string]int32{ + "ADDRESS_TYPE_32_BYTES": 0, + "ADDRESS_TYPE_20_BYTES": 1, +} + +func (x AddressType) String() string { + return proto.EnumName(AddressType_name, int32(x)) +} + +func (AddressType) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_3454ac2a3bdb8e89, []int{1} +} + +// Bid defines a standard bid for an auction. +type Bid struct { + // auction_id specifies the id of the auction + AuctionId uint64 `protobuf:"varint,1,opt,name=auction_id,json=auctionId,proto3" json:"auction_id,omitempty"` + // bidder specifies the bech32-encoded address that bids for the auction + Bidder string `protobuf:"bytes,2,opt,name=bidder,proto3" json:"bidder,omitempty"` + // id specifies an index of a bid for the bidder + Id uint64 `protobuf:"varint,3,opt,name=id,proto3" json:"id,omitempty"` + // type specifies the bid type; type 1 is fixed price, 2 is how-much-worth, 3 + // is how-many-coins + Type BidType `protobuf:"varint,4,opt,name=type,proto3,enum=modules.fundraising.v1.BidType" json:"type,omitempty"` + // price specifies the bid price in which price the bidder places the bid + Price cosmossdk_io_math.LegacyDec `protobuf:"bytes,5,opt,name=price,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"price"` + // coin specifies the amount of coin that the bidder bids + // for a fixed price auction, the denom is of the paying coin. + // for a batch auction of how-much-worth, the denom is of the paying coin. + // for a batch auction of how-many-coins, the denom is of the selling coin. + Coin types.Coin `protobuf:"bytes,6,opt,name=coin,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coin" json:"coin"` + // is_matched specifies the bid that is a winning bid and enables the bidder + // to purchase the selling coin + IsMatched bool `protobuf:"varint,7,opt,name=is_matched,json=isMatched,proto3" json:"is_matched,omitempty"` +} + +func (m *Bid) Reset() { *m = Bid{} } +func (m *Bid) String() string { return proto.CompactTextString(m) } +func (*Bid) ProtoMessage() {} +func (*Bid) Descriptor() ([]byte, []int) { + return fileDescriptor_3454ac2a3bdb8e89, []int{0} +} +func (m *Bid) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Bid) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Bid.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 *Bid) XXX_Merge(src proto.Message) { + xxx_messageInfo_Bid.Merge(m, src) +} +func (m *Bid) XXX_Size() int { + return m.Size() +} +func (m *Bid) XXX_DiscardUnknown() { + xxx_messageInfo_Bid.DiscardUnknown(m) +} + +var xxx_messageInfo_Bid proto.InternalMessageInfo + +func init() { + proto.RegisterEnum("modules.fundraising.v1.BidType", BidType_name, BidType_value) + proto.RegisterEnum("modules.fundraising.v1.AddressType", AddressType_name, AddressType_value) + proto.RegisterType((*Bid)(nil), "modules.fundraising.v1.Bid") +} + +func init() { proto.RegisterFile("modules/fundraising/v1/bid.proto", fileDescriptor_3454ac2a3bdb8e89) } + +var fileDescriptor_3454ac2a3bdb8e89 = []byte{ + // 621 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x93, 0x41, 0x4f, 0xdb, 0x30, + 0x14, 0xc7, 0xe3, 0x52, 0x60, 0x98, 0x09, 0x95, 0x0c, 0x50, 0xc8, 0xb4, 0x34, 0xda, 0x65, 0x55, + 0xa5, 0xc6, 0xb4, 0xbd, 0xed, 0xd6, 0x34, 0x01, 0x2a, 0x0d, 0x56, 0xa5, 0x9d, 0x18, 0xbb, 0x44, + 0x69, 0xec, 0xb5, 0x16, 0x34, 0xae, 0xea, 0x14, 0xd1, 0x6f, 0x80, 0x7a, 0xda, 0x79, 0x52, 0xa5, + 0x49, 0xbb, 0x4c, 0x3b, 0x71, 0xd8, 0x87, 0x40, 0x3b, 0xa1, 0x9d, 0xa6, 0x1d, 0xd8, 0x04, 0x9a, + 0xf8, 0x1a, 0x53, 0x1c, 0x4f, 0x2a, 0x63, 0x97, 0x24, 0x7e, 0xef, 0xf7, 0xf7, 0x7b, 0xef, 0xef, + 0x18, 0x9a, 0x7d, 0x86, 0x47, 0xc7, 0x84, 0xa3, 0xb7, 0xa3, 0x08, 0x0f, 0x03, 0xca, 0x69, 0xd4, + 0x45, 0x27, 0x65, 0xd4, 0xa1, 0xd8, 0x1a, 0x0c, 0x59, 0xcc, 0xd4, 0x0d, 0x49, 0x58, 0x33, 0x84, + 0x75, 0x52, 0xd6, 0x57, 0x83, 0x3e, 0x8d, 0x18, 0x12, 0xcf, 0x14, 0xd5, 0x8d, 0x90, 0xf1, 0x3e, + 0xe3, 0xa8, 0x13, 0x70, 0x82, 0x4e, 0xca, 0x1d, 0x12, 0x07, 0x65, 0x14, 0x32, 0x1a, 0xc9, 0xfc, + 0x66, 0x9a, 0xf7, 0xc5, 0x0a, 0xa5, 0x0b, 0x99, 0x5a, 0xeb, 0xb2, 0x2e, 0x4b, 0xe3, 0xc9, 0x57, + 0x1a, 0x7d, 0xfa, 0x3b, 0x03, 0xe7, 0x6c, 0x8a, 0xd5, 0x27, 0x10, 0x06, 0xa3, 0x30, 0xa6, 0x2c, + 0xf2, 0x29, 0xd6, 0x80, 0x09, 0x0a, 0x59, 0x6f, 0x49, 0x46, 0x1a, 0x58, 0xdd, 0x80, 0x0b, 0x1d, + 0x8a, 0x31, 0x19, 0x6a, 0x19, 0x13, 0x14, 0x96, 0x3c, 0xb9, 0x52, 0x57, 0x60, 0x86, 0x62, 0x6d, + 0x4e, 0xe0, 0x19, 0x8a, 0xd5, 0x2a, 0xcc, 0xc6, 0xe3, 0x01, 0xd1, 0xb2, 0x26, 0x28, 0xac, 0x54, + 0xf2, 0xd6, 0xff, 0x27, 0xb3, 0x6c, 0x8a, 0xdb, 0xe3, 0x01, 0xf1, 0x04, 0xac, 0xee, 0xc0, 0xf9, + 0xc1, 0x90, 0x86, 0x44, 0x9b, 0x4f, 0xf6, 0xb6, 0xcb, 0x17, 0x57, 0x79, 0xe5, 0xc7, 0x55, 0xfe, + 0x71, 0xda, 0x3e, 0xc7, 0x47, 0x16, 0x65, 0xa8, 0x1f, 0xc4, 0x3d, 0xeb, 0x05, 0xe9, 0x06, 0xe1, + 0xd8, 0x21, 0xe1, 0xb7, 0x2f, 0x25, 0x28, 0xa7, 0x73, 0x48, 0xe8, 0xa5, 0x7a, 0x35, 0x86, 0xd9, + 0xc4, 0x0b, 0x6d, 0xc1, 0x04, 0x85, 0xe5, 0xca, 0xa6, 0x25, 0x89, 0xc4, 0x2c, 0x4b, 0x9a, 0x65, + 0xd5, 0x19, 0x8d, 0x6c, 0x37, 0x29, 0xf1, 0xf9, 0x67, 0xfe, 0x59, 0x97, 0xc6, 0xbd, 0x51, 0xc7, + 0x0a, 0x59, 0x5f, 0x9a, 0x25, 0x5f, 0x25, 0x8e, 0x8f, 0x50, 0xd2, 0x1c, 0x17, 0x82, 0xf7, 0xb7, + 0xe7, 0xc5, 0x87, 0xc7, 0xa2, 0xb8, 0x9f, 0x54, 0xe0, 0x9f, 0x6e, 0xcf, 0x8b, 0xc0, 0x13, 0xd5, + 0x12, 0xeb, 0x28, 0xf7, 0xfb, 0x41, 0x1c, 0xf6, 0x08, 0xd6, 0x16, 0x4d, 0x50, 0x78, 0xe0, 0x2d, + 0x51, 0xbe, 0x97, 0x06, 0x9e, 0x67, 0xcf, 0x3e, 0xe4, 0x95, 0xe2, 0x57, 0x00, 0x17, 0xe5, 0xd4, + 0x6a, 0x01, 0xae, 0xd9, 0x0d, 0xc7, 0x6f, 0x1f, 0x36, 0x5d, 0xff, 0xd5, 0x7e, 0xab, 0xe9, 0xd6, + 0x1b, 0xdb, 0x0d, 0xd7, 0xc9, 0x29, 0xfa, 0xca, 0x64, 0x6a, 0x42, 0x89, 0xed, 0xd3, 0x63, 0x15, + 0xcd, 0x90, 0xdb, 0x8d, 0xd7, 0xae, 0xe3, 0x37, 0xbd, 0x46, 0xdd, 0xcd, 0x01, 0x7d, 0x7d, 0x32, + 0x35, 0x57, 0x25, 0xb9, 0x4d, 0x4f, 0x09, 0x6e, 0x0a, 0x07, 0x66, 0x05, 0x76, 0xad, 0x5d, 0xdf, + 0xf5, 0x0f, 0x5e, 0x7a, 0xed, 0xdd, 0x5c, 0xe6, 0x8e, 0xc0, 0x4e, 0x5a, 0x3b, 0x60, 0xc3, 0xb8, + 0xa7, 0x96, 0xe0, 0xa3, 0x7f, 0x04, 0x7b, 0xb5, 0xfd, 0xc3, 0xdc, 0x9c, 0xbe, 0x36, 0x99, 0x9a, + 0xb9, 0x59, 0x7e, 0x2f, 0x88, 0xc6, 0x7a, 0xf6, 0xec, 0xa3, 0xa1, 0x14, 0xc7, 0x70, 0xb9, 0x86, + 0xf1, 0x90, 0x70, 0x2e, 0xe6, 0x29, 0xc3, 0xf5, 0x9a, 0xe3, 0x78, 0x6e, 0xab, 0x95, 0xee, 0x53, + 0xad, 0xf8, 0xf6, 0x61, 0xdb, 0x6d, 0xe5, 0x14, 0x7d, 0x63, 0x32, 0x35, 0xd5, 0x19, 0xb6, 0x5a, + 0xb1, 0xc7, 0x31, 0xe1, 0xf7, 0x24, 0x95, 0x2d, 0x29, 0x01, 0xf7, 0x24, 0x95, 0x2d, 0x21, 0x49, + 0x4b, 0xdb, 0x3b, 0x17, 0xd7, 0x06, 0xb8, 0xbc, 0x36, 0xc0, 0xaf, 0x6b, 0x03, 0xbc, 0xbb, 0x31, + 0x94, 0xcb, 0x1b, 0x43, 0xf9, 0x7e, 0x63, 0x28, 0x6f, 0x4a, 0x33, 0x67, 0x49, 0xbb, 0x11, 0x8d, + 0x09, 0xfa, 0x7b, 0xf3, 0x4e, 0xef, 0xdc, 0x3d, 0x71, 0xac, 0x9d, 0x05, 0xf1, 0xff, 0x57, 0xff, + 0x04, 0x00, 0x00, 0xff, 0xff, 0xda, 0x6e, 0xfd, 0x63, 0x9f, 0x03, 0x00, 0x00, +} + +func (m *Bid) 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 *Bid) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Bid) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.IsMatched { + i-- + if m.IsMatched { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x38 + } + { + size, err := m.Coin.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintBid(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + { + size := m.Price.Size() + i -= size + if _, err := m.Price.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintBid(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + if m.Type != 0 { + i = encodeVarintBid(dAtA, i, uint64(m.Type)) + i-- + dAtA[i] = 0x20 + } + if m.Id != 0 { + i = encodeVarintBid(dAtA, i, uint64(m.Id)) + i-- + dAtA[i] = 0x18 + } + if len(m.Bidder) > 0 { + i -= len(m.Bidder) + copy(dAtA[i:], m.Bidder) + i = encodeVarintBid(dAtA, i, uint64(len(m.Bidder))) + i-- + dAtA[i] = 0x12 + } + if m.AuctionId != 0 { + i = encodeVarintBid(dAtA, i, uint64(m.AuctionId)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func encodeVarintBid(dAtA []byte, offset int, v uint64) int { + offset -= sovBid(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *Bid) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.AuctionId != 0 { + n += 1 + sovBid(uint64(m.AuctionId)) + } + l = len(m.Bidder) + if l > 0 { + n += 1 + l + sovBid(uint64(l)) + } + if m.Id != 0 { + n += 1 + sovBid(uint64(m.Id)) + } + if m.Type != 0 { + n += 1 + sovBid(uint64(m.Type)) + } + l = m.Price.Size() + n += 1 + l + sovBid(uint64(l)) + l = m.Coin.Size() + n += 1 + l + sovBid(uint64(l)) + if m.IsMatched { + n += 2 + } + return n +} + +func sovBid(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozBid(x uint64) (n int) { + return sovBid(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *Bid) 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 ErrIntOverflowBid + } + 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: Bid: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Bid: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AuctionId", wireType) + } + m.AuctionId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowBid + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.AuctionId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Bidder", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowBid + } + 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 ErrInvalidLengthBid + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthBid + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Bidder = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + m.Id = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowBid + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Id |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + m.Type = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowBid + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Type |= BidType(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Price", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowBid + } + 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 ErrInvalidLengthBid + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthBid + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Price.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Coin", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowBid + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthBid + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthBid + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Coin.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field IsMatched", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowBid + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.IsMatched = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipBid(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthBid + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipBid(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowBid + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowBid + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowBid + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthBid + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupBid + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthBid + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthBid = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowBid = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupBid = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/fundraising/types/bid_test.go b/x/fundraising/types/bid_test.go new file mode 100644 index 0000000..346cdc2 --- /dev/null +++ b/x/fundraising/types/bid_test.go @@ -0,0 +1,131 @@ +package types_test + +import ( + "testing" + + "cosmossdk.io/math" + "github.com/cometbft/cometbft/crypto" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/stretchr/testify/require" + + "github.com/ignite/modules/x/fundraising/types" +) + +func TestConvertToSellingAmount(t *testing.T) { + payingCoinDenom := "denom2" // auction paying coin denom + + testCases := []struct { + bid types.Bid + expectedAmt math.Int + }{ + { + bid: types.Bid{ + Price: math.LegacyMustNewDecFromStr("0.5"), + Coin: sdk.NewCoin("denom1", math.NewInt(100_000)), + }, + expectedAmt: math.NewInt(100_000), + }, + { + bid: types.Bid{ + Price: math.LegacyMustNewDecFromStr("0.5"), + Coin: sdk.NewCoin("denom2", math.NewInt(100_000)), + }, + expectedAmt: math.NewInt(200_000), + }, + { + bid: types.Bid{ + Price: math.LegacyMustNewDecFromStr("0.1"), + Coin: sdk.NewCoin("denom1", math.NewInt(100_000)), + }, + expectedAmt: math.NewInt(100_000), + }, + { + bid: types.Bid{ + Price: math.LegacyMustNewDecFromStr("0.1"), + Coin: sdk.NewCoin("denom2", math.NewInt(100_000)), + }, + expectedAmt: math.NewInt(1_000_000), + }, + { + bid: types.Bid{ + Price: math.LegacyMustNewDecFromStr("3"), + Coin: sdk.NewCoin("denom2", math.NewInt(4)), + }, + expectedAmt: math.NewInt(1), + }, + } + + for _, tc := range testCases { + sellingAmt := tc.bid.ConvertToSellingAmount(payingCoinDenom) + require.Equal(t, tc.expectedAmt, sellingAmt) + } +} + +func TestConvertToPayingAmount(t *testing.T) { + payingCoinDenom := "denom2" // auction paying coin denom + + testCases := []struct { + bid types.Bid + expectedAmt math.Int + }{ + { + bid: types.Bid{ + Price: math.LegacyMustNewDecFromStr("0.5"), + Coin: sdk.NewCoin("denom1", math.NewInt(100_000)), + }, + expectedAmt: math.NewInt(50_000), + }, + { + bid: types.Bid{ + Price: math.LegacyMustNewDecFromStr("0.5"), + Coin: sdk.NewCoin("denom2", math.NewInt(100_000)), + }, + expectedAmt: math.NewInt(100_000), + }, + { + bid: types.Bid{ + Price: math.LegacyMustNewDecFromStr("0.1"), + Coin: sdk.NewCoin("denom1", math.NewInt(100_000)), + }, + expectedAmt: math.NewInt(10_000), + }, + { + bid: types.Bid{ + Price: math.LegacyMustNewDecFromStr("0.1"), + Coin: sdk.NewCoin("denom2", math.NewInt(100_000)), + }, + expectedAmt: math.NewInt(100_000), + }, + { + bid: types.Bid{ + Price: math.LegacyMustNewDecFromStr("0.33"), + Coin: sdk.NewCoin("denom1", math.NewInt(100_000)), + }, + expectedAmt: math.NewInt(33000), + }, + } + + for _, tc := range testCases { + payingAmt := tc.bid.ConvertToPayingAmount(payingCoinDenom) + require.Equal(t, tc.expectedAmt, payingAmt) + } +} + +func TestSetMatched(t *testing.T) { + bidder := sdk.AccAddress(crypto.AddressHash([]byte("Bidder"))) + + bid := types.NewBid( + 1, + bidder, + 1, + types.BidTypeFixedPrice, + math.LegacyMustNewDecFromStr("0.5"), + sdk.NewCoin("denom1", math.NewInt(100_000)), + false, + ) + require.False(t, bid.IsMatched) + require.Equal(t, bidder, bid.GetBidder()) + + bid.SetMatched(true) + require.True(t, bid.IsMatched) +} diff --git a/x/fundraising/types/codec.go b/x/fundraising/types/codec.go new file mode 100644 index 0000000..0840dcc --- /dev/null +++ b/x/fundraising/types/codec.go @@ -0,0 +1,29 @@ +package types + +import ( + cdctypes "github.com/cosmos/cosmos-sdk/codec/types" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/msgservice" + // this line is used by starport scaffolding # 1 +) + +func RegisterInterfaces(registry cdctypes.InterfaceRegistry) { + // this line is used by starport scaffolding # 3 + + registry.RegisterImplementations((*sdk.Msg)(nil), + &MsgCreateFixedPriceAuction{}, + &MsgCreateBatchAuction{}, + &MsgCancelAuction{}, + &MsgPlaceBid{}, + &MsgAddAllowedBidder{}, + &MsgUpdateParams{}, + ) + registry.RegisterInterface( + "tendermint.fundraising.fundraising.v1.AuctionI", + (*AuctionI)(nil), + &FixedPriceAuction{}, + &BatchAuction{}, + ) + + msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) +} diff --git a/x/fundraising/types/errors.go b/x/fundraising/types/errors.go new file mode 100644 index 0000000..697f73f --- /dev/null +++ b/x/fundraising/types/errors.go @@ -0,0 +1,24 @@ +package types + +// DONTCOVER + +import ( + sdkerrors "cosmossdk.io/errors" +) + +// x/fundraising module sentinel errors +var ( + ErrInvalidSigner = sdkerrors.Register(ModuleName, 1101, "expected gov account as only signer for proposal message") + ErrInvalidAuctionType = sdkerrors.Register(ModuleName, 1102, "invalid auction type") + ErrInvalidStartPrice = sdkerrors.Register(ModuleName, 1103, "invalid start price") + ErrInvalidVestingSchedules = sdkerrors.Register(ModuleName, 1104, "invalid vesting schedules") + ErrInvalidAuctionStatus = sdkerrors.Register(ModuleName, 1105, "invalid auction status") + ErrInvalidMaxBidAmount = sdkerrors.Register(ModuleName, 1106, "invalid maximum bid amount") + ErrIncorrectAuctionType = sdkerrors.Register(ModuleName, 1107, "incorrect auction type") + ErrIncorrectCoinDenom = sdkerrors.Register(ModuleName, 1108, "incorrect coin denom") + ErrEmptyAllowedBidders = sdkerrors.Register(ModuleName, 1109, "empty bidders") + ErrNotAllowedBidder = sdkerrors.Register(ModuleName, 1110, "not allowed bidder") + ErrOverMaxBidAmountLimit = sdkerrors.Register(ModuleName, 1111, "over maximum bid amount limit") + ErrInsufficientRemainingAmount = sdkerrors.Register(ModuleName, 1112, "insufficient remaining amount") + ErrInsufficientMinBidPrice = sdkerrors.Register(ModuleName, 1113, "insufficient bid price") +) diff --git a/x/fundraising/types/events.go b/x/fundraising/types/events.go new file mode 100644 index 0000000..e625d91 --- /dev/null +++ b/x/fundraising/types/events.go @@ -0,0 +1,30 @@ +package types + +// Event types for the farming module. +const ( + EventTypeCreateFixedPriceAuction = "create_fixed_price_auction" + EventTypeCreateBatchAuction = "create_batch_auction" + EventTypeCancelAuction = "cancel_auction" + EventTypePlaceBid = "place_bid" + + AttributeKeyAuctionId = "auction_id" //nolint:golint + AttributeKeyAuctioneerAddress = "auctioneer_address" + AttributeKeySellingReserveAddress = "selling_pool_address" + AttributeKeyPayingReserveAddress = "paying_pool_address" + AttributeKeyVestingReserveAddress = "vesting_pool_address" + AttributeKeyStartPrice = "start_price" + AttributeKeySellingCoin = "selling_coin" + AttributeKeyRemainingSellingCoin = "remaining_selling_coin" + AttributeKeyVestingSchedules = "vesting_schedules" + AttributeKeyPayingCoinDenom = "paying_coin_denom" + AttributeKeyAuctionStatus = "auction_status" + AttributeKeyStartTime = "start_time" + AttributeKeyEndTime = "end_time" + AttributeKeyBidderAddress = "bidder_address" + AttributeKeyBidPrice = "bid_price" + AttributeKeyBidCoin = "bid_coin" + AttributeKeyBidAmount = "bid_amount" + AttributeKeyMinBidPrice = "min_bid_price" + AttributeKeyMaxExtendedRound = "maximum_extended_round" + AttributeKeyExtendedRoundRate = "extended_round_rate" +) diff --git a/x/fundraising/types/expected_keepers.go b/x/fundraising/types/expected_keepers.go new file mode 100644 index 0000000..ddc605a --- /dev/null +++ b/x/fundraising/types/expected_keepers.go @@ -0,0 +1,146 @@ +package types + +import ( + "context" + "time" + + "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" + banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" +) + +// AccountKeeper defines the expected account keeper used for simulations (noalias) +type AccountKeeper interface { + GetAccount(ctx context.Context, addr sdk.AccAddress) sdk.AccountI + GetModuleAddress(name string) sdk.AccAddress +} + +// BankKeeper defines the expected interface needed to retrieve account balances. +type BankKeeper interface { + SendCoins(ctx context.Context, from, to sdk.AccAddress, amt sdk.Coins) error + SpendableCoins(ctx context.Context, addr sdk.AccAddress) sdk.Coins + SendCoinsFromAccountToModule(ctx context.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error + InputOutputCoins(ctx context.Context, input banktypes.Input, outputs []banktypes.Output) error + MintCoins(ctx context.Context, moduleName string, amt sdk.Coins) error + SendCoinsFromModuleToAccount(ctx context.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error +} + +// DistrKeeper defines the contract needed to be fulfilled for distribution keeper. +type DistrKeeper interface { + FundCommunityPool(ctx context.Context, amount sdk.Coins, sender sdk.AccAddress) error +} + +// ParamSubspace defines the expected Subspace interface for parameters. +type ParamSubspace interface { + Get(context.Context, []byte, interface{}) + Set(context.Context, []byte, interface{}) +} + +// Event Hooks +// These can be utilized to communicate between a fundraising keeper and other keepers. +// The other keepers must implement this interface, which then the fundraising keeper can call. + +// FundraisingHooks event hooks for fundraising auction and bid objects (noalias) +type FundraisingHooks interface { + BeforeFixedPriceAuctionCreated( + ctx context.Context, + auctioneer string, + startPrice math.LegacyDec, + sellingCoin sdk.Coin, + payingCoinDenom string, + vestingSchedules []VestingSchedule, + startTime time.Time, + endTime time.Time, + ) error + + AfterFixedPriceAuctionCreated( + ctx context.Context, + auctionId uint64, + auctioneer string, + startPrice math.LegacyDec, + sellingCoin sdk.Coin, + payingCoinDenom string, + vestingSchedules []VestingSchedule, + startTime time.Time, + endTime time.Time, + ) error + + BeforeBatchAuctionCreated( + ctx context.Context, + auctioneer string, + startPrice math.LegacyDec, + minBidPrice math.LegacyDec, + sellingCoin sdk.Coin, + payingCoinDenom string, + vestingSchedules []VestingSchedule, + maxExtendedRound uint32, + extendedRoundRate math.LegacyDec, + startTime time.Time, + endTime time.Time, + ) error + + AfterBatchAuctionCreated( + ctx context.Context, + auctionId uint64, + auctioneer string, + startPrice math.LegacyDec, + minBidPrice math.LegacyDec, + sellingCoin sdk.Coin, + payingCoinDenom string, + vestingSchedules []VestingSchedule, + maxExtendedRound uint32, + extendedRoundRate math.LegacyDec, + startTime time.Time, + endTime time.Time, + ) error + + BeforeAuctionCanceled( + ctx context.Context, + auctionId uint64, + auctioneer string, + ) error + + BeforeBidPlaced( + ctx context.Context, + auctionId uint64, + bidId uint64, + bidder string, + bidType BidType, + price math.LegacyDec, + coin sdk.Coin, + ) error + + BeforeBidModified( + ctx context.Context, + auctionId uint64, + bidId uint64, + bidder string, + bidType BidType, + price math.LegacyDec, + coin sdk.Coin, + ) error + + BeforeAllowedBiddersAdded( + ctx context.Context, + allowedBidders []AllowedBidder, + ) error + + BeforeAllowedBidderUpdated( + ctx context.Context, + auctionId uint64, + bidder sdk.AccAddress, + maxBidAmount math.Int, + ) error + + BeforeSellingCoinsAllocated( + ctx context.Context, + auctionId uint64, + allocationMap map[string]math.Int, + refundMap map[string]math.Int, + ) error +} + +type FundraisingHooksWrapper struct{ FundraisingHooks } + +// IsOnePerModuleType implements the depinject.OnePerModuleType interface. +func (FundraisingHooksWrapper) IsOnePerModuleType() {} diff --git a/x/fundraising/types/genesis.go b/x/fundraising/types/genesis.go new file mode 100644 index 0000000..6b473f6 --- /dev/null +++ b/x/fundraising/types/genesis.go @@ -0,0 +1,117 @@ +package types + +import ( + "fmt" + + codectypes "github.com/cosmos/cosmos-sdk/codec/types" + sdk "github.com/cosmos/cosmos-sdk/types" +) + +// DefaultIndex is the default global index +const DefaultIndex uint64 = 1 + +// DefaultGenesis returns the default genesis state +func DefaultGenesis() *GenesisState { + return &GenesisState{ + AllowedBidderList: []AllowedBidder{}, + VestingQueueList: []VestingQueue{}, + BidList: []Bid{}, + AuctionList: []*codectypes.Any{}, + // this line is used by starport scaffolding # genesis/types/default + Params: DefaultParams(), + } +} + +// Validate performs basic genesis state validation returning an error upon any +// failure. +func (gs GenesisState) Validate() error { + // Check for duplicated index in allowedBidder + allowedBidderIndexMap := make(map[string]struct{}) + + for _, elem := range gs.AllowedBidderList { + index := fmt.Sprint(elem.AuctionId) + if _, ok := allowedBidderIndexMap[index]; ok { + return fmt.Errorf("duplicated index for allowedBidder") + } + allowedBidderIndexMap[index] = struct{}{} + + if err := elem.Validate(); err != nil { + return err + } + } + // Check for duplicated index in vestingQueue + vestingQueueIndexMap := make(map[string]struct{}) + + for _, elem := range gs.VestingQueueList { + index := fmt.Sprint(elem.AuctionId) + if _, ok := vestingQueueIndexMap[index]; ok { + return fmt.Errorf("duplicated index for vestingQueue") + } + vestingQueueIndexMap[index] = struct{}{} + + if err := elem.Validate(); err != nil { + return err + } + } + // Check for duplicated ID in bid + bidIdMap := make(map[uint64]bool) + for _, elem := range gs.BidList { + if _, ok := bidIdMap[elem.Id]; ok { + return fmt.Errorf("duplicated id for bid") + } + bidIdMap[elem.Id] = true + + if err := elem.Validate(); err != nil { + return err + } + } + + // Check for duplicated ID in auction + auctionIdMap := make(map[uint64]bool) + for _, elem := range gs.AuctionList { + auction, err := UnpackAuction(elem) + if err != nil { + return err + } + if _, ok := auctionIdMap[auction.GetId()]; ok { + return fmt.Errorf("duplicated id for auction") + } + auctionIdMap[auction.GetId()] = true + + if err := auction.Validate(); err != nil { + return err + } + } + + // this line is used by starport scaffolding # genesis/types/validate + + return gs.Params.Validate() +} + +// Validate validates Bid. +func (b Bid) Validate() error { + if _, err := sdk.AccAddressFromBech32(b.Bidder); err != nil { + return err + } + if !b.Price.IsPositive() { + return fmt.Errorf("bid price must be positive value: %s", b.Price.String()) + } + if err := b.Coin.Validate(); err != nil { + return err + } + if !b.Coin.Amount.IsPositive() { + return fmt.Errorf("coin amount must be positive: %s", b.Coin.Amount.String()) + } + return nil +} + +// Validate validates VestingQueue. +func (q VestingQueue) Validate() error { + if _, err := sdk.AccAddressFromBech32(q.Auctioneer); err != nil { + return err + } + if err := q.PayingCoin.Validate(); err != nil { + return fmt.Errorf("paying coin is invalid: %v", err) + } + return nil +} diff --git a/x/fundraising/types/genesis.pb.go b/x/fundraising/types/genesis.pb.go new file mode 100644 index 0000000..15d21db --- /dev/null +++ b/x/fundraising/types/genesis.pb.go @@ -0,0 +1,594 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: modules/fundraising/v1/genesis.proto + +package types + +import ( + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + types "github.com/cosmos/cosmos-sdk/codec/types" + _ "github.com/cosmos/cosmos-sdk/types/tx/amino" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// GenesisState defines the fundraising module's genesis state. +type GenesisState struct { + // params defines all the parameters of the module. + Params Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params"` + // auctionList define the auction interface for genesis state; the module + // supports FixedPriceAuction or BatchAuction + AuctionList []*types.Any `protobuf:"bytes,2,rep,name=auctionList,proto3" json:"auctionList,omitempty"` + // allowedBidderList define the allowed bidder records for the auction + AllowedBidderList []AllowedBidder `protobuf:"bytes,3,rep,name=allowedBidderList,proto3" json:"allowedBidderList"` + // bidList define the bid records used for genesis state + BidList []Bid `protobuf:"bytes,4,rep,name=bidList,proto3" json:"bidList"` + // vestingQueueList define the vesting queue records used for genesis state + VestingQueueList []VestingQueue `protobuf:"bytes,5,rep,name=vestingQueueList,proto3" json:"vestingQueueList"` +} + +func (m *GenesisState) Reset() { *m = GenesisState{} } +func (m *GenesisState) String() string { return proto.CompactTextString(m) } +func (*GenesisState) ProtoMessage() {} +func (*GenesisState) Descriptor() ([]byte, []int) { + return fileDescriptor_f0d23d7975a36e8e, []int{0} +} +func (m *GenesisState) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GenesisState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GenesisState.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 *GenesisState) XXX_Merge(src proto.Message) { + xxx_messageInfo_GenesisState.Merge(m, src) +} +func (m *GenesisState) XXX_Size() int { + return m.Size() +} +func (m *GenesisState) XXX_DiscardUnknown() { + xxx_messageInfo_GenesisState.DiscardUnknown(m) +} + +var xxx_messageInfo_GenesisState proto.InternalMessageInfo + +func (m *GenesisState) GetParams() Params { + if m != nil { + return m.Params + } + return Params{} +} + +func (m *GenesisState) GetAuctionList() []*types.Any { + if m != nil { + return m.AuctionList + } + return nil +} + +func (m *GenesisState) GetAllowedBidderList() []AllowedBidder { + if m != nil { + return m.AllowedBidderList + } + return nil +} + +func (m *GenesisState) GetBidList() []Bid { + if m != nil { + return m.BidList + } + return nil +} + +func (m *GenesisState) GetVestingQueueList() []VestingQueue { + if m != nil { + return m.VestingQueueList + } + return nil +} + +func init() { + proto.RegisterType((*GenesisState)(nil), "modules.fundraising.v1.GenesisState") +} + +func init() { + proto.RegisterFile("modules/fundraising/v1/genesis.proto", fileDescriptor_f0d23d7975a36e8e) +} + +var fileDescriptor_f0d23d7975a36e8e = []byte{ + // 418 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x91, 0x41, 0xcb, 0xd3, 0x30, + 0x18, 0xc7, 0x5b, 0xf7, 0xfa, 0xaa, 0xdd, 0x7b, 0x70, 0x65, 0xc8, 0x9c, 0x50, 0x87, 0x4e, 0x18, + 0x93, 0x25, 0x6c, 0x1e, 0x3d, 0xb5, 0x08, 0x43, 0xf0, 0xa0, 0x13, 0x06, 0x7a, 0x19, 0xe9, 0x92, + 0xc5, 0x40, 0x9b, 0xcc, 0x26, 0x9d, 0xee, 0x13, 0x78, 0xf5, 0x63, 0x78, 0xf4, 0xe0, 0x87, 0x18, + 0x9e, 0x76, 0xf4, 0x24, 0xb2, 0x1d, 0xfc, 0x1a, 0xb2, 0x24, 0x85, 0xca, 0xde, 0x5c, 0x4a, 0x9f, + 0xe4, 0xf7, 0xfc, 0x78, 0x9e, 0x7f, 0x82, 0x7e, 0x2e, 0x70, 0x99, 0x11, 0x09, 0x57, 0x25, 0xc7, + 0x05, 0x62, 0x92, 0x71, 0x0a, 0x37, 0x63, 0x48, 0x09, 0x27, 0x92, 0x49, 0xb0, 0x2e, 0x84, 0x12, + 0xe1, 0x3d, 0x4b, 0x81, 0x1a, 0x05, 0x36, 0xe3, 0x6e, 0x0b, 0xe5, 0x8c, 0x0b, 0xa8, 0xbf, 0x06, + 0xed, 0xde, 0x5f, 0x0a, 0x99, 0x0b, 0xb9, 0xd0, 0x15, 0x34, 0x85, 0xbd, 0x6a, 0x53, 0x41, 0x85, + 0x39, 0x3f, 0xfd, 0x55, 0x0d, 0x54, 0x08, 0x9a, 0x11, 0xa8, 0xab, 0xb4, 0x5c, 0x41, 0xc4, 0xb7, + 0xf6, 0xea, 0xa9, 0x63, 0x38, 0x94, 0x65, 0xe2, 0x13, 0xc1, 0x8b, 0x94, 0x61, 0x4c, 0x0a, 0x0b, + 0xbb, 0x36, 0x41, 0xe5, 0x52, 0x31, 0xc1, 0x2d, 0xd5, 0x73, 0x50, 0x29, 0xc3, 0x96, 0x78, 0xec, + 0x20, 0xd6, 0xa8, 0x40, 0x79, 0xb5, 0xca, 0xd0, 0x01, 0x6d, 0x88, 0x54, 0x8c, 0xd3, 0xc5, 0xc7, + 0x92, 0x94, 0xc4, 0xb0, 0x8f, 0xbe, 0x34, 0x82, 0xab, 0xa9, 0x89, 0xf3, 0xad, 0x42, 0x8a, 0x84, + 0x71, 0x70, 0x69, 0x64, 0x1d, 0xbf, 0xe7, 0x0f, 0x9a, 0x93, 0x08, 0x5c, 0x1f, 0x2f, 0x78, 0xad, + 0xa9, 0xe4, 0xce, 0xee, 0xf7, 0x43, 0xef, 0xdb, 0xdf, 0xef, 0x43, 0x7f, 0x66, 0x1b, 0xc3, 0x17, + 0x41, 0xd3, 0xee, 0xf5, 0x8a, 0x49, 0xd5, 0xb9, 0xd1, 0x6b, 0x0c, 0x9a, 0x93, 0x36, 0x30, 0x51, + 0x82, 0x2a, 0x4a, 0x10, 0xf3, 0x6d, 0x72, 0xf5, 0xf3, 0xc7, 0xe8, 0x76, 0x6c, 0xe0, 0x97, 0xb3, + 0x7a, 0x5b, 0xf8, 0x2e, 0x68, 0xd9, 0x28, 0x13, 0x9d, 0xa4, 0x76, 0x35, 0xb4, 0xeb, 0x89, 0x6b, + 0xa6, 0xb8, 0xde, 0x90, 0x5c, 0x9c, 0x46, 0x9b, 0x9d, 0x5b, 0xc2, 0xe7, 0xc1, 0xad, 0x94, 0x61, + 0x2d, 0xbc, 0xd0, 0xc2, 0x07, 0x2e, 0x61, 0xc2, 0xb0, 0xd5, 0x54, 0x1d, 0xe1, 0x3c, 0xb8, 0x6b, + 0x83, 0x7c, 0x73, 0xca, 0x51, 0x5b, 0x6e, 0x6a, 0x4b, 0xdf, 0x65, 0x99, 0xd7, 0x78, 0xab, 0x3b, + 0x73, 0x24, 0xd3, 0xdd, 0x21, 0xf2, 0xf7, 0x87, 0xc8, 0xff, 0x73, 0x88, 0xfc, 0xaf, 0xc7, 0xc8, + 0xdb, 0x1f, 0x23, 0xef, 0xd7, 0x31, 0xf2, 0xde, 0x8f, 0x28, 0x53, 0x1f, 0xca, 0x14, 0x2c, 0x45, + 0x0e, 0x19, 0xe5, 0x4c, 0x11, 0x58, 0xbd, 0xf0, 0xe7, 0xff, 0xde, 0x58, 0x6d, 0xd7, 0x44, 0xa6, + 0x97, 0x3a, 0xe1, 0x67, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0xaa, 0x5a, 0x2b, 0x44, 0x3e, 0x03, + 0x00, 0x00, +} + +func (m *GenesisState) 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 *GenesisState) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.VestingQueueList) > 0 { + for iNdEx := len(m.VestingQueueList) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.VestingQueueList[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + } + if len(m.BidList) > 0 { + for iNdEx := len(m.BidList) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.BidList[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + } + if len(m.AllowedBidderList) > 0 { + for iNdEx := len(m.AllowedBidderList) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.AllowedBidderList[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if len(m.AuctionList) > 0 { + for iNdEx := len(m.AuctionList) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.AuctionList[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + { + size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func encodeVarintGenesis(dAtA []byte, offset int, v uint64) int { + offset -= sovGenesis(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *GenesisState) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Params.Size() + n += 1 + l + sovGenesis(uint64(l)) + if len(m.AuctionList) > 0 { + for _, e := range m.AuctionList { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.AllowedBidderList) > 0 { + for _, e := range m.AllowedBidderList { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.BidList) > 0 { + for _, e := range m.BidList { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.VestingQueueList) > 0 { + for _, e := range m.VestingQueueList { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + return n +} + +func sovGenesis(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozGenesis(x uint64) (n int) { + return sovGenesis(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *GenesisState) 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 ErrIntOverflowGenesis + } + 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: GenesisState: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GenesisState: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AuctionList", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AuctionList = append(m.AuctionList, &types.Any{}) + if err := m.AuctionList[len(m.AuctionList)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AllowedBidderList", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AllowedBidderList = append(m.AllowedBidderList, AllowedBidder{}) + if err := m.AllowedBidderList[len(m.AllowedBidderList)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BidList", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.BidList = append(m.BidList, Bid{}) + if err := m.BidList[len(m.BidList)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VestingQueueList", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.VestingQueueList = append(m.VestingQueueList, VestingQueue{}) + if err := m.VestingQueueList[len(m.VestingQueueList)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenesis(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenesis + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenesis(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenesis + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenesis + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenesis + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthGenesis + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupGenesis + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthGenesis + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthGenesis = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenesis = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupGenesis = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/fundraising/types/genesis_test.go b/x/fundraising/types/genesis_test.go new file mode 100644 index 0000000..9475339 --- /dev/null +++ b/x/fundraising/types/genesis_test.go @@ -0,0 +1,327 @@ +package types_test + +import ( + "testing" + "time" + + "cosmossdk.io/math" + "github.com/cometbft/cometbft/crypto" + codectypes "github.com/cosmos/cosmos-sdk/codec/types" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/stretchr/testify/require" + + "github.com/ignite/modules/x/fundraising/types" +) + +func TestGenesisState_Validate(t *testing.T) { + validAddr := sdk.AccAddress(crypto.AddressHash([]byte("validAddr"))) + validAuction := types.NewFixedPriceAuction( + &types.BaseAuction{ + Id: 1, + Type: types.AuctionTypeFixedPrice, + Auctioneer: validAddr.String(), + SellingReserveAddress: types.SellingReserveAddress(1).String(), + PayingReserveAddress: types.PayingReserveAddress(1).String(), + StartPrice: math.LegacyMustNewDecFromStr("0.5"), + SellingCoin: sdk.NewInt64Coin("denom1", 1_000_000_000_000), + PayingCoinDenom: "denom2", + VestingReserveAddress: types.VestingReserveAddress(1).String(), + VestingSchedules: []types.VestingSchedule{ + { + ReleaseTime: types.MustParseRFC3339("2023-01-01T00:00:00Z"), + Weight: math.LegacyMustNewDecFromStr("0.5"), + }, + { + ReleaseTime: types.MustParseRFC3339("2023-12-01T00:00:00Z"), + Weight: math.LegacyMustNewDecFromStr("0.5"), + }, + }, + StartTime: types.MustParseRFC3339("2022-01-01T00:00:00Z"), + EndTimes: []time.Time{types.MustParseRFC3339("2022-12-01T00:00:00Z")}, + Status: types.AuctionStatusStarted, + }, + sdk.NewInt64Coin("denom1", 1_000_000_000_000), + ) + + validAllowedBidder := types.AllowedBidder{ + AuctionId: 1, + Bidder: validAddr.String(), + MaxBidAmount: math.NewInt(10_000_000), + } + + validBid := types.Bid{ + AuctionId: 1, + Id: 1, + Bidder: validAddr.String(), + Price: math.LegacyMustNewDecFromStr("0.5"), + Coin: sdk.NewInt64Coin("denom2", 50_000_000), + } + + validVestingQueue := types.VestingQueue{ + AuctionId: 1, + Auctioneer: validAddr.String(), + PayingCoin: sdk.NewInt64Coin("denom2", 100_000_000), + ReleaseTime: types.MustParseRFC3339("2022-12-20T00:00:00Z"), + Released: false, + } + + tests := []struct { + desc string + configure func(*types.GenesisState) + valid bool + }{ + { + desc: "default is valid", + configure: func(genState *types.GenesisState) { + params := types.DefaultParams() + genState.Params = params + }, + valid: true, + }, + { + desc: "valid genesis state", + configure: func(genState *types.GenesisState) { + params := types.DefaultParams() + auctionAny, _ := types.PackAuction(validAuction) + + genState.Params = params + genState.AuctionList = []*codectypes.Any{auctionAny} + genState.AllowedBidderList = []types.AllowedBidder{validAllowedBidder} + genState.BidList = []types.Bid{validBid} + genState.VestingQueueList = []types.VestingQueue{validVestingQueue} + + // TODO fix when add a new field + // this line is used by starport scaffolding # types/genesis/validField + }, + valid: true, + }, + { + desc: "invalid auction - unsupported auction type", + configure: func(genState *types.GenesisState) { + auctionAny, _ := types.PackAuction(types.NewFixedPriceAuction( + &types.BaseAuction{ + Id: 1, + Type: types.AuctionTypeNil, + Auctioneer: validAddr.String(), + SellingReserveAddress: types.SellingReserveAddress(1).String(), + PayingReserveAddress: types.PayingReserveAddress(1).String(), + StartPrice: math.LegacyMustNewDecFromStr("0.5"), + SellingCoin: sdk.NewInt64Coin("denom1", 1_000_000_000_000), + PayingCoinDenom: "denom2", + VestingReserveAddress: types.VestingReserveAddress(1).String(), + VestingSchedules: []types.VestingSchedule{ + { + ReleaseTime: types.MustParseRFC3339("2023-01-01T00:00:00Z"), + Weight: math.LegacyMustNewDecFromStr("0.5"), + }, + { + ReleaseTime: types.MustParseRFC3339("2023-06-01T00:00:00Z"), + Weight: math.LegacyMustNewDecFromStr("0.5"), + }, + }, + StartTime: types.MustParseRFC3339("2021-12-10T00:00:00Z"), + EndTimes: []time.Time{types.MustParseRFC3339("2022-12-20T00:00:00Z")}, + Status: types.AuctionStatusStarted, + }, + sdk.NewInt64Coin("denom1", 1_000_000_000_000), + )) + + genState.AuctionList = []*codectypes.Any{auctionAny} + }, + valid: false, + }, + { + desc: "invalid auction - duplicate denom for selling and paying", + configure: func(genState *types.GenesisState) { + auctionAny, _ := types.PackAuction(types.NewFixedPriceAuction( + &types.BaseAuction{ + Id: 1, + Type: types.AuctionTypeFixedPrice, + Auctioneer: validAddr.String(), + SellingReserveAddress: types.SellingReserveAddress(1).String(), + PayingReserveAddress: types.PayingReserveAddress(1).String(), + StartPrice: math.LegacyMustNewDecFromStr("0.5"), + SellingCoin: sdk.NewInt64Coin("denom1", 1_000_000_000_000), + PayingCoinDenom: "denom1", + VestingReserveAddress: types.VestingReserveAddress(1).String(), + VestingSchedules: []types.VestingSchedule{ + { + ReleaseTime: types.MustParseRFC3339("2022-06-01T00:00:00Z"), + Weight: math.LegacyMustNewDecFromStr("0.5"), + }, + { + ReleaseTime: types.MustParseRFC3339("2022-12-01T00:00:00Z"), + Weight: math.LegacyMustNewDecFromStr("0.5"), + }, + }, + StartTime: types.MustParseRFC3339("2021-12-10T00:00:00Z"), + EndTimes: []time.Time{types.MustParseRFC3339("2022-12-20T00:00:00Z")}, + Status: types.AuctionStatusStarted, + }, + sdk.NewInt64Coin("denom1", 1_000_000_000_000), + )) + + genState.AuctionList = []*codectypes.Any{auctionAny} + }, + valid: false, + }, + { + desc: "invalid auction - invalid sum of vesting schedule weights", + configure: func(genState *types.GenesisState) { + auctionAny, _ := types.PackAuction(types.NewFixedPriceAuction( + &types.BaseAuction{ + Id: 1, + Type: types.AuctionTypeFixedPrice, + Auctioneer: validAddr.String(), + SellingReserveAddress: types.SellingReserveAddress(1).String(), + PayingReserveAddress: types.PayingReserveAddress(1).String(), + StartPrice: math.LegacyMustNewDecFromStr("0.5"), + SellingCoin: sdk.NewInt64Coin("denom1", 1_000_000_000_000), + PayingCoinDenom: "denom1", + VestingReserveAddress: types.VestingReserveAddress(1).String(), + VestingSchedules: []types.VestingSchedule{ + { + ReleaseTime: types.MustParseRFC3339("2022-06-01T00:00:00Z"), + Weight: math.LegacyMustNewDecFromStr("0.9"), + }, + { + ReleaseTime: types.MustParseRFC3339("2022-12-01T00:00:00Z"), + Weight: math.LegacyMustNewDecFromStr("0.5"), + }, + }, + StartTime: types.MustParseRFC3339("2021-12-10T00:00:00Z"), + EndTimes: []time.Time{types.MustParseRFC3339("2022-12-20T00:00:00Z")}, + Status: types.AuctionStatusStarted, + }, + sdk.NewInt64Coin("denom1", 1_000_000_000_000), + )) + + genState.AuctionList = []*codectypes.Any{auctionAny} + }, + valid: false, + }, + { + desc: "invalid auction - invalid auctioneer address", + configure: func(genState *types.GenesisState) { + auctionAny, _ := types.PackAuction(types.NewFixedPriceAuction( + &types.BaseAuction{ + Id: 1, + Type: types.AuctionTypeFixedPrice, + Auctioneer: "invalid", + SellingReserveAddress: types.SellingReserveAddress(1).String(), + PayingReserveAddress: types.PayingReserveAddress(1).String(), + StartPrice: math.LegacyMustNewDecFromStr("0.5"), + SellingCoin: sdk.NewInt64Coin("denom1", 1_000_000_000_000), + PayingCoinDenom: "denom1", + VestingReserveAddress: types.VestingReserveAddress(1).String(), + VestingSchedules: []types.VestingSchedule{ + { + ReleaseTime: types.MustParseRFC3339("2022-06-01T00:00:00Z"), + Weight: math.LegacyMustNewDecFromStr("0.9"), + }, + { + ReleaseTime: types.MustParseRFC3339("2022-12-01T00:00:00Z"), + Weight: math.LegacyMustNewDecFromStr("0.5"), + }, + }, + StartTime: types.MustParseRFC3339("2021-12-10T00:00:00Z"), + EndTimes: []time.Time{types.MustParseRFC3339("2022-12-20T00:00:00Z")}, + Status: types.AuctionStatusStarted, + }, + sdk.NewInt64Coin("denom1", 1_000_000_000_000), + )) + + genState.AuctionList = []*codectypes.Any{auctionAny} + }, + valid: false, + }, + { + desc: "invalid bid - invalid bidder address", + configure: func(genState *types.GenesisState) { + genState.BidList = []types.Bid{ + { + AuctionId: 1, + Id: 1, + Bidder: "invalid", + Price: math.LegacyMustNewDecFromStr("0.5"), + Coin: sdk.NewInt64Coin("denom2", 50_000_000), + }, + } + }, + valid: false, + }, + { + desc: "invalid bid - invalid coin amount", + configure: func(genState *types.GenesisState) { + genState.BidList = []types.Bid{ + { + AuctionId: 1, + Id: 1, + Bidder: validAddr.String(), + Price: math.LegacyMustNewDecFromStr("0.5"), + Coin: sdk.NewInt64Coin("denom2", 0), + }, + } + }, + valid: false, + }, + { + desc: "invalid bid - invalid price", + configure: func(genState *types.GenesisState) { + genState.BidList = []types.Bid{ + { + AuctionId: 1, + Id: 1, + Bidder: validAddr.String(), + Price: math.LegacyMustNewDecFromStr("0"), + Coin: sdk.NewInt64Coin("denom2", 100_000), + }, + } + }, + valid: false, + }, + { + desc: "invalid allowed bidder - invalid max bid amount", + configure: func(genState *types.GenesisState) { + genState.AllowedBidderList = []types.AllowedBidder{ + { + AuctionId: 1, + Bidder: validAddr.String(), + MaxBidAmount: math.NewInt(0), + }, + } + }, + valid: false, + }, + { + desc: "invalid vesting queue - invalid auctioneer address", + configure: func(genState *types.GenesisState) { + params := types.DefaultParams() + genState.Params = params + genState.VestingQueueList = []types.VestingQueue{ + { + AuctionId: 2, + Auctioneer: "", + PayingCoin: sdk.NewInt64Coin("denom2", 100_000_000), + ReleaseTime: types.MustParseRFC3339("2022-12-20T00:00:00Z"), + Released: false, + }, + } + }, + valid: false, + }, + // this line is used by starport scaffolding # types/genesis/testcase + } + for _, tc := range tests { + t.Run(tc.desc, func(t *testing.T) { + genState := types.DefaultGenesis() + tc.configure(genState) + err := genState.Validate() + if tc.valid { + require.NoError(t, err) + } else { + require.Error(t, err) + } + }) + } +} diff --git a/x/fundraising/types/hooks.go b/x/fundraising/types/hooks.go new file mode 100644 index 0000000..7f0e278 --- /dev/null +++ b/x/fundraising/types/hooks.go @@ -0,0 +1,230 @@ +package types + +// DONTCOVER + +import ( + "context" + "time" + + "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" +) + +var _ FundraisingHooks = MultiFundraisingHooks{} + +// MultiFundraisingHooks combines multiple fundraising hooks. +// All hook functions are run in array sequence +type MultiFundraisingHooks []FundraisingHooks + +func NewMultiFundraisingHooks(hooks ...FundraisingHooks) MultiFundraisingHooks { + return hooks +} + +func (h MultiFundraisingHooks) BeforeFixedPriceAuctionCreated( + ctx context.Context, + auctioneer string, + startPrice math.LegacyDec, + sellingCoin sdk.Coin, + payingCoinDenom string, + vestingSchedules []VestingSchedule, + startTime, + endTime time.Time, +) error { + for i := range h { + h[i].BeforeFixedPriceAuctionCreated( + ctx, + auctioneer, + startPrice, + sellingCoin, + payingCoinDenom, + vestingSchedules, + startTime, + endTime, + ) + } + return nil +} + +func (h MultiFundraisingHooks) AfterFixedPriceAuctionCreated( + ctx context.Context, + auctionId uint64, + auctioneer string, + startPrice math.LegacyDec, + sellingCoin sdk.Coin, + payingCoinDenom string, + vestingSchedules []VestingSchedule, + startTime, + endTime time.Time, +) error { + for i := range h { + if err := h[i].AfterFixedPriceAuctionCreated( + ctx, + auctionId, + auctioneer, + startPrice, + sellingCoin, + payingCoinDenom, + vestingSchedules, + startTime, + endTime, + ); err != nil { + return err + } + } + return nil +} + +func (h MultiFundraisingHooks) BeforeBatchAuctionCreated( + ctx context.Context, + auctioneer string, + startPrice math.LegacyDec, + minBidPrice math.LegacyDec, + sellingCoin sdk.Coin, + payingCoinDenom string, + vestingSchedules []VestingSchedule, + maxExtendedRound uint32, + extendedRoundRate math.LegacyDec, + startTime time.Time, + endTime time.Time, +) error { + for i := range h { + if err := h[i].BeforeBatchAuctionCreated( + ctx, + auctioneer, + startPrice, + minBidPrice, + sellingCoin, + payingCoinDenom, + vestingSchedules, + maxExtendedRound, + extendedRoundRate, + startTime, + endTime, + ); err != nil { + return err + } + } + return nil +} + +func (h MultiFundraisingHooks) AfterBatchAuctionCreated( + ctx context.Context, + auctionId uint64, + auctioneer string, + startPrice math.LegacyDec, + minBidPrice math.LegacyDec, + sellingCoin sdk.Coin, + payingCoinDenom string, + vestingSchedules []VestingSchedule, + maxExtendedRound uint32, + extendedRoundRate math.LegacyDec, + startTime time.Time, + endTime time.Time, +) error { + for i := range h { + if err := h[i].AfterBatchAuctionCreated( + ctx, + auctionId, + auctioneer, + startPrice, + minBidPrice, + sellingCoin, + payingCoinDenom, + vestingSchedules, + maxExtendedRound, + extendedRoundRate, + startTime, + endTime, + ); err != nil { + return err + } + } + return nil +} + +func (h MultiFundraisingHooks) BeforeAuctionCanceled( + ctx context.Context, + auctionId uint64, + auctioneer string, +) error { + for i := range h { + if err := h[i].BeforeAuctionCanceled(ctx, auctionId, auctioneer); err != nil { + return err + } + } + return nil +} + +func (h MultiFundraisingHooks) BeforeBidPlaced( + ctx context.Context, + auctionId uint64, + bidId uint64, + bidder string, + bidType BidType, + price math.LegacyDec, + coin sdk.Coin, +) error { + for i := range h { + if err := h[i].BeforeBidPlaced(ctx, auctionId, bidId, bidder, bidType, price, coin); err != nil { + return err + } + } + return nil +} + +func (h MultiFundraisingHooks) BeforeBidModified( + ctx context.Context, + auctionId uint64, + bidId uint64, + bidder string, + bidType BidType, + price math.LegacyDec, + coin sdk.Coin, +) error { + for i := range h { + if err := h[i].BeforeBidModified(ctx, auctionId, bidId, bidder, bidType, price, coin); err != nil { + return err + } + } + return nil +} + +func (h MultiFundraisingHooks) BeforeAllowedBiddersAdded( + ctx context.Context, + allowedBidders []AllowedBidder, +) error { + for i := range h { + if err := h[i].BeforeAllowedBiddersAdded(ctx, allowedBidders); err != nil { + return err + } + } + return nil +} + +func (h MultiFundraisingHooks) BeforeAllowedBidderUpdated( + ctx context.Context, + auctionId uint64, + bidder sdk.AccAddress, + maxBidAmount math.Int, +) error { + for i := range h { + if err := h[i].BeforeAllowedBidderUpdated(ctx, auctionId, bidder, maxBidAmount); err != nil { + return err + } + } + return nil +} + +func (h MultiFundraisingHooks) BeforeSellingCoinsAllocated( + ctx context.Context, + auctionId uint64, + allocationMap map[string]math.Int, + refundMap map[string]math.Int, +) error { + for i := range h { + if err := h[i].BeforeSellingCoinsAllocated(ctx, auctionId, allocationMap, refundMap); err != nil { + return err + } + } + return nil +} diff --git a/x/fundraising/types/keys.go b/x/fundraising/types/keys.go new file mode 100644 index 0000000..8601146 --- /dev/null +++ b/x/fundraising/types/keys.go @@ -0,0 +1,42 @@ +package types + +import "cosmossdk.io/collections" + +const ( + // ModuleName defines the module name + ModuleName = "fundraising" + + // StoreKey defines the primary module store key + StoreKey = ModuleName + + // MemStoreKey defines the in-memory store key + MemStoreKey = "mem_fundraising" +) + +func KeyPrefix(p string) []byte { + return []byte(p) +} + +var ( + // ParamsKey is the prefix to retrieve all Params + ParamsKey = collections.NewPrefix("p_fundraising") + + // BidKey is the prefix to retrieve all Bid + BidKey = collections.NewPrefix("bid/value/") + // BidCountKey is the prefix to retrieve all Bid cound + BidCountKey = collections.NewPrefix("bid/count/") + + // AuctionKey is the prefix to retrieve all Auction + AuctionKey = collections.NewPrefix("auction/value/") + // AuctionCountKey is the prefix to retrieve all Auction count + AuctionCountKey = collections.NewPrefix("auction/count/") + + // AllowedBidderKey is the prefix to retrieve all AllowedBidder + AllowedBidderKey = collections.NewPrefix("AllowedBidder/value/") + + // VestingQueueKey is the prefix to retrieve all VestingQueue + VestingQueueKey = collections.NewPrefix("VestingQueue/value/") + + // MatchedBidsLenKey is the prefix to retrieve all MatchedBidsLen + MatchedBidsLenKey = collections.NewPrefix("MatchedBidsLen/value/") +) diff --git a/x/fundraising/types/match.go b/x/fundraising/types/match.go new file mode 100644 index 0000000..9228af5 --- /dev/null +++ b/x/fundraising/types/match.go @@ -0,0 +1,76 @@ +package types + +import ( + "cosmossdk.io/math" +) + +type MatchResult struct { + MatchPrice math.LegacyDec + MatchedAmount math.Int + MatchedBids []Bid + MatchResultByBidder map[string]*BidderMatchResult +} + +type BidderMatchResult struct { + PayingAmount math.Int + MatchedAmount math.Int +} + +// Match returns the match result for all bids that correspond with the auction. +func Match(matchPrice math.LegacyDec, prices []math.LegacyDec, bidsByPrice map[string][]Bid, sellingAmt math.Int, allowedBidders []AllowedBidder) (res *MatchResult, matched bool) { + res = &MatchResult{ + MatchPrice: matchPrice, + MatchedAmount: math.ZeroInt(), + MatchResultByBidder: map[string]*BidderMatchResult{}, + } + + biddableAmtByBidder := map[string]math.Int{} + for _, allowedBidder := range allowedBidders { + biddableAmtByBidder[allowedBidder.Bidder] = allowedBidder.MaxBidAmount + } + + for _, price := range prices { + if price.LT(matchPrice) { + break + } + + for _, bid := range bidsByPrice[price.String()] { + var bidAmt math.Int + switch bid.Type { + case BidTypeBatchWorth: + bidAmt = math.LegacyNewDecFromInt(bid.Coin.Amount).QuoTruncate(matchPrice).TruncateInt() + case BidTypeBatchMany: + bidAmt = bid.Coin.Amount + } + biddableAmt := biddableAmtByBidder[bid.Bidder] + matchAmt := math.MinInt(bidAmt, biddableAmtByBidder[bid.Bidder]) + + if res.MatchedAmount.Add(matchAmt).GT(sellingAmt) { + // Including this bid will exceed the auction's selling amount. + return nil, false + } + + payingAmt := matchPrice.MulInt(matchAmt).Ceil().TruncateInt() + + bidderRes, ok := res.MatchResultByBidder[bid.Bidder] + if !ok { + bidderRes = &BidderMatchResult{ + PayingAmount: math.ZeroInt(), + MatchedAmount: math.ZeroInt(), + } + res.MatchResultByBidder[bid.Bidder] = bidderRes + } + bidderRes.MatchedAmount = bidderRes.MatchedAmount.Add(matchAmt) + bidderRes.PayingAmount = bidderRes.PayingAmount.Add(payingAmt) + + if matchAmt.IsPositive() { + biddableAmtByBidder[bid.Bidder] = biddableAmt.Sub(matchAmt) + res.MatchedBids = append(res.MatchedBids, bid) + res.MatchedAmount = res.MatchedAmount.Add(matchAmt) + matched = true + } + } + } + + return res, matched +} diff --git a/x/fundraising/types/match_test.go b/x/fundraising/types/match_test.go new file mode 100644 index 0000000..2c40880 --- /dev/null +++ b/x/fundraising/types/match_test.go @@ -0,0 +1,146 @@ +package types_test + +import ( + "encoding/binary" + "testing" + + "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/stretchr/testify/require" + + "github.com/ignite/modules/x/fundraising/types" +) + +// These helper functions below are taken from keeper_test package +// move these to separate file + +func testAddr(addrNum int) sdk.AccAddress { + addr := make(sdk.AccAddress, 20) + binary.PutVarint(addr, int64(addrNum)) + return addr +} + +// parseDec parses string and returns math.LegacyDec. +func parseDec(s string) math.LegacyDec { + return math.LegacyMustNewDecFromStr(s) +} + +func TestMatch(t *testing.T) { + const ( + payingCoinDenom = "paying" + sellingCoinDenom = "selling" + ) + + newBid := func(id uint64, typ types.BidType, bidder string, price math.LegacyDec, bidAmt math.Int) types.Bid { + var coin sdk.Coin + switch typ { + case types.BidTypeBatchWorth: + coin = sdk.NewCoin(payingCoinDenom, price.MulInt(bidAmt).Ceil().TruncateInt()) + case types.BidTypeBatchMany: + coin = sdk.NewCoin(sellingCoinDenom, bidAmt) + } + return types.Bid{ + // Omitted fields are not important when testing types.Match + Id: id, + Bidder: bidder, + Type: typ, + Price: price, + Coin: coin, + IsMatched: false, + } + } + + var bidders []string + for i := 0; i < 10; i++ { + bidders = append(bidders, testAddr(i).String()) + } + + for _, tc := range []struct { + name string + allowedBidders map[string]math.Int + sellingCoinAmt math.Int + bids []types.Bid + matchPrice math.LegacyDec + matched bool + matchedAmt math.Int + matchedBidIds []uint64 // should be sorted + matchResultByBidder map[string]*types.BidderMatchResult + }{ + { + "basic case", + map[string]math.Int{ + bidders[0]: math.NewInt(100_000000), + }, + math.NewInt(100_000000), + []types.Bid{ + newBid(1, types.BidTypeBatchWorth, bidders[0], parseDec("1.0"), math.NewInt(100_000000)), + }, + parseDec("1.0"), + true, + math.NewInt(100_000000), + []uint64{1}, + map[string]*types.BidderMatchResult{ + bidders[0]: { + PayingAmount: math.NewInt(100_000000), + MatchedAmount: math.NewInt(100_000000), + }, + }, + }, + { + "partial match", + map[string]math.Int{ + bidders[0]: math.NewInt(50_000000), + }, + math.NewInt(100_000000), + []types.Bid{ + newBid(1, types.BidTypeBatchWorth, bidders[0], parseDec("1.0"), math.NewInt(100_000000)), + }, + parseDec("1.0"), + true, + math.NewInt(50_000000), + []uint64{1}, + map[string]*types.BidderMatchResult{ + bidders[0]: { + PayingAmount: math.NewInt(50_000000), + MatchedAmount: math.NewInt(50_000000), + }, + }, + }, + { + "no match", + map[string]math.Int{ + bidders[0]: math.NewInt(100_000000), + }, + math.NewInt(100_000000), + []types.Bid{ + newBid(1, types.BidTypeBatchWorth, bidders[0], parseDec("1.0"), math.NewInt(100_000000)), + }, + parseDec("1.1"), + false, + math.Int{}, + nil, nil, + }, + } { + t.Run(tc.name, func(t *testing.T) { + var allowedBidders []types.AllowedBidder + for bidder, maxBidAmt := range tc.allowedBidders { + allowedBidders = append(allowedBidders, types.AllowedBidder{ + Bidder: bidder, + MaxBidAmount: maxBidAmt, + }) + } + prices, bidsByPrice := types.BidsByPrice(tc.bids) + matchRes, matched := types.Match(tc.matchPrice, prices, bidsByPrice, tc.sellingCoinAmt, allowedBidders) + require.Equal(t, tc.matched, matched) + if matched { + require.True(math.IntEq(t, tc.matchedAmt, matchRes.MatchedAmount)) + var matchedBidIds []uint64 + for _, bid := range matchRes.MatchedBids { + matchedBidIds = append(matchedBidIds, bid.Id) + } + require.Equal(t, tc.matchedBidIds, matchedBidIds) + require.Equal(t, tc.matchResultByBidder, matchRes.MatchResultByBidder) + } + }) + } +} diff --git a/x/fundraising/types/msgs.go b/x/fundraising/types/msgs.go new file mode 100644 index 0000000..34e28af --- /dev/null +++ b/x/fundraising/types/msgs.go @@ -0,0 +1,243 @@ +package types + +import ( + "time" + + sdkerrors "cosmossdk.io/errors" + "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/errors" +) + +func NewMsgCancelAuction(auctioneer string, auctionId uint64) *MsgCancelAuction { + return &MsgCancelAuction{ + Auctioneer: auctioneer, + AuctionId: auctionId, + } +} + +func (msg MsgCancelAuction) Type() string { + return sdk.MsgTypeURL(&MsgCancelAuction{}) +} + +func (msg MsgCancelAuction) ValidateBasic() error { + if _, err := sdk.AccAddressFromBech32(msg.Auctioneer); err != nil { + return sdkerrors.Wrapf(errors.ErrInvalidAddress, "invalid auctioneer address: %v", err) + } + return nil +} + +func NewMsgCreateBatchAuction( + auctioneer string, + startPrice math.LegacyDec, + minBidPrice math.LegacyDec, + sellingCoin sdk.Coin, + payingCoinDenom string, + vestingSchedules []VestingSchedule, + maxExtendedRound uint32, + extendedRoundRate math.LegacyDec, + startTime time.Time, + endTime time.Time, +) *MsgCreateBatchAuction { + return &MsgCreateBatchAuction{ + Auctioneer: auctioneer, + StartPrice: startPrice, + MinBidPrice: minBidPrice, + SellingCoin: sellingCoin, + PayingCoinDenom: payingCoinDenom, + VestingSchedules: vestingSchedules, + MaxExtendedRound: maxExtendedRound, + ExtendedRoundRate: extendedRoundRate, + StartTime: startTime, + EndTime: endTime, + } +} + +func (msg MsgCreateBatchAuction) Type() string { + return sdk.MsgTypeURL(&MsgCreateBatchAuction{}) +} + +func (msg MsgCreateBatchAuction) ValidateBasic() error { + if _, err := sdk.AccAddressFromBech32(msg.Auctioneer); err != nil { + return sdkerrors.Wrapf(errors.ErrInvalidAddress, "invalid auctioneer address: %v", err) + } + if !msg.StartPrice.IsPositive() { + return sdkerrors.Wrapf(errors.ErrInvalidRequest, "start price must be positive") + } + if !msg.MinBidPrice.IsPositive() { + return sdkerrors.Wrapf(errors.ErrInvalidRequest, "minimum price must be positive") + } + if err := msg.SellingCoin.Validate(); err != nil { + return sdkerrors.Wrapf(errors.ErrInvalidRequest, "invalid selling coin: %v", err) + } + if !msg.SellingCoin.Amount.IsPositive() { + return sdkerrors.Wrapf(errors.ErrInvalidRequest, "selling coin amount must be positive") + } + if msg.SellingCoin.Denom == msg.PayingCoinDenom { + return sdkerrors.Wrapf(errors.ErrInvalidRequest, "selling coin denom must not be the same as paying coin denom") + } + if err := sdk.ValidateDenom(msg.PayingCoinDenom); err != nil { + return sdkerrors.Wrapf(errors.ErrInvalidRequest, "invalid paying coin denom: %v", err) + } + if !msg.EndTime.After(msg.StartTime) { + return sdkerrors.Wrapf(errors.ErrInvalidRequest, "end time must be set after start time") + } + if !msg.ExtendedRoundRate.IsPositive() { + return sdkerrors.Wrapf(errors.ErrInvalidRequest, "extend rate must be positive") + } + return ValidateVestingSchedules(msg.VestingSchedules, msg.EndTime) +} + +func NewMsgCreateFixedPriceAuction( + auctioneer string, + startPrice math.LegacyDec, + sellingCoin sdk.Coin, + payingCoinDenom string, + vestingSchedules []VestingSchedule, + startTime time.Time, + endTime time.Time, +) *MsgCreateFixedPriceAuction { + return &MsgCreateFixedPriceAuction{ + Auctioneer: auctioneer, + StartPrice: startPrice, + SellingCoin: sellingCoin, + PayingCoinDenom: payingCoinDenom, + VestingSchedules: vestingSchedules, + StartTime: startTime, + EndTime: endTime, + } +} + +func (msg MsgCreateFixedPriceAuction) Type() string { + return sdk.MsgTypeURL(&MsgCreateFixedPriceAuction{}) +} + +func (msg MsgCreateFixedPriceAuction) ValidateBasic() error { + if _, err := sdk.AccAddressFromBech32(msg.Auctioneer); err != nil { + return sdkerrors.Wrapf(errors.ErrInvalidAddress, "invalid auctioneer address: %v", err) + } + if !msg.StartPrice.IsPositive() { + return sdkerrors.Wrapf(errors.ErrInvalidRequest, "start price must be positive") + } + if err := msg.SellingCoin.Validate(); err != nil { + return sdkerrors.Wrapf(errors.ErrInvalidRequest, "invalid selling coin: %v", err) + } + if !msg.SellingCoin.Amount.IsPositive() { + return sdkerrors.Wrapf(errors.ErrInvalidRequest, "selling coin amount must be positive") + } + if msg.SellingCoin.Denom == msg.PayingCoinDenom { + return sdkerrors.Wrapf(errors.ErrInvalidRequest, "selling coin denom must not be the same as paying coin denom") + } + if err := sdk.ValidateDenom(msg.PayingCoinDenom); err != nil { + return sdkerrors.Wrapf(errors.ErrInvalidRequest, "invalid paying coin denom: %v", err) + } + if !msg.EndTime.After(msg.StartTime) { + return sdkerrors.Wrapf(errors.ErrInvalidRequest, "end time must be set after start time") + } + return ValidateVestingSchedules(msg.VestingSchedules, msg.EndTime) +} + +func NewMsgPlaceBid( + auctionId uint64, + bidder string, + bidType BidType, + price math.LegacyDec, + coin sdk.Coin, +) *MsgPlaceBid { + return &MsgPlaceBid{ + Bidder: bidder, + AuctionId: auctionId, + BidType: bidType, + Price: price, + Coin: coin, + } +} + +func (msg MsgPlaceBid) Type() string { + return sdk.MsgTypeURL(&MsgPlaceBid{}) +} + +func (msg MsgPlaceBid) ValidateBasic() error { + if _, err := sdk.AccAddressFromBech32(msg.Bidder); err != nil { + return sdkerrors.Wrapf(errors.ErrInvalidAddress, "invalid bidder address: %v", err) + } + if !msg.Price.IsPositive() { + return sdkerrors.Wrapf(errors.ErrInvalidRequest, "bid price must be positive value") + } + if err := msg.Coin.Validate(); err != nil { + return sdkerrors.Wrapf(errors.ErrInvalidRequest, "invalid bid coin: %v", err) + } + if !msg.Coin.Amount.IsPositive() { + return sdkerrors.Wrapf(errors.ErrInvalidRequest, "invalid coin amount: %s", msg.Coin.Amount.String()) + } + if msg.BidType != BidTypeFixedPrice && msg.BidType != BidTypeBatchWorth && + msg.BidType != BidTypeBatchMany { + return sdkerrors.Wrapf(errors.ErrInvalidRequest, "invalid bid type: %T", msg.BidType.String()) + } + return nil +} + +func NewMsgAddAllowedBidder( + auctionId uint64, + allowedBidder AllowedBidder, +) *MsgAddAllowedBidder { + return &MsgAddAllowedBidder{ + AuctionId: auctionId, + AllowedBidder: allowedBidder, + } +} + +func (msg *MsgAddAllowedBidder) GetSigners() []sdk.AccAddress { + creator, err := sdk.AccAddressFromBech32(msg.AllowedBidder.Bidder) + if err != nil { + panic(err) + } + return []sdk.AccAddress{creator} +} + +func (msg MsgAddAllowedBidder) Type() string { + return sdk.MsgTypeURL(&MsgAddAllowedBidder{}) +} + +func (msg MsgAddAllowedBidder) ValidateBasic() error { + if _, err := sdk.AccAddressFromBech32(msg.AllowedBidder.Bidder); err != nil { + return sdkerrors.Wrapf(errors.ErrInvalidAddress, "invalid bidder address: %v", err) + } + return nil +} + +func NewMsgModifyBid( + auctionId uint64, + bidder string, + bidId uint64, + price math.LegacyDec, + coin sdk.Coin, +) *MsgModifyBid { + return &MsgModifyBid{ + Bidder: bidder, + AuctionId: auctionId, + BidId: bidId, + Price: price, + Coin: coin, + } +} + +func (msg MsgModifyBid) Type() string { + return sdk.MsgTypeURL(&MsgModifyBid{}) +} + +func (msg MsgModifyBid) ValidateBasic() error { + if _, err := sdk.AccAddressFromBech32(msg.Bidder); err != nil { + return sdkerrors.Wrapf(errors.ErrInvalidAddress, "invalid bidder address: %v", err) + } + if !msg.Price.IsPositive() { + return sdkerrors.Wrapf(errors.ErrInvalidRequest, "bid price must be positive value") + } + if err := msg.Coin.Validate(); err != nil { + return sdkerrors.Wrapf(errors.ErrInvalidRequest, "invalid bid coin: %v", err) + } + if !msg.Coin.Amount.IsPositive() { + return sdkerrors.Wrapf(errors.ErrInvalidRequest, "invalid coin amount: %s", msg.Coin.Amount.String()) + } + return nil +} diff --git a/x/fundraising/types/msgs_test.go b/x/fundraising/types/msgs_test.go new file mode 100644 index 0000000..117d9c7 --- /dev/null +++ b/x/fundraising/types/msgs_test.go @@ -0,0 +1,635 @@ +package types_test + +import ( + "testing" + "time" + + "cosmossdk.io/math" + "github.com/cometbft/cometbft/crypto" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/stretchr/testify/require" + + "github.com/ignite/modules/x/fundraising/types" +) + +func TestMsgCreateFixedPriceAuction(t *testing.T) { + testCases := []struct { + expectedErr string + msg *types.MsgCreateFixedPriceAuction + }{ + { + "", // empty means no error expected + types.NewMsgCreateFixedPriceAuction( + sdk.AccAddress(crypto.AddressHash([]byte("Auctioneer"))).String(), + math.LegacyMustNewDecFromStr("0.5"), + sdk.NewInt64Coin("denom2", 10_000_000_000_000), + "denom1", + []types.VestingSchedule{}, + time.Now(), + time.Now().AddDate(0, 1, 0), + ), + }, + { + "start price must be positive: invalid request", + types.NewMsgCreateFixedPriceAuction( + sdk.AccAddress(crypto.AddressHash([]byte("Auctioneer"))).String(), + math.LegacyMustNewDecFromStr("0"), + sdk.NewInt64Coin("denom2", 10_000_000_000_000), + "denom1", + []types.VestingSchedule{}, + time.Now(), + time.Now().AddDate(0, 1, 0), + ), + }, + { + "selling coin amount must be positive: invalid request", + types.NewMsgCreateFixedPriceAuction( + sdk.AccAddress(crypto.AddressHash([]byte("Auctioneer"))).String(), + math.LegacyMustNewDecFromStr("0.5"), + sdk.NewInt64Coin("denom2", 0), + "denom1", + []types.VestingSchedule{}, + time.Now(), + time.Now().AddDate(0, 1, 0), + ), + }, + { + "selling coin denom must not be the same as paying coin denom: invalid request", + types.NewMsgCreateFixedPriceAuction( + sdk.AccAddress(crypto.AddressHash([]byte("Auctioneer"))).String(), + math.LegacyMustNewDecFromStr("0.5"), + sdk.NewInt64Coin("denom2", 10_000_000_000_000), + "denom2", + []types.VestingSchedule{}, + time.Now(), + time.Now().AddDate(0, 1, 0), + ), + }, + { + "end time must be set after start time: invalid request", + types.NewMsgCreateFixedPriceAuction( + sdk.AccAddress(crypto.AddressHash([]byte("Auctioneer"))).String(), + math.LegacyMustNewDecFromStr("0.5"), + sdk.NewInt64Coin("denom2", 10_000_000_000_000), + "denom1", + []types.VestingSchedule{}, + time.Now(), + time.Now().AddDate(-1, 0, 0), + ), + }, + { + "vesting weight must be positive: invalid vesting schedules", + types.NewMsgCreateFixedPriceAuction( + sdk.AccAddress(crypto.AddressHash([]byte("Auctioneer"))).String(), + math.LegacyMustNewDecFromStr("0.5"), + sdk.NewInt64Coin("denom2", 10_000_000_000_000), + "denom1", + []types.VestingSchedule{ + { + time.Now().AddDate(0, 1, 0).AddDate(0, 6, 0), + math.LegacyZeroDec(), + }, + }, + time.Now(), + time.Now().AddDate(0, 1, 0), + ), + }, + { + "vesting weight must not be greater than 1: invalid vesting schedules", + types.NewMsgCreateFixedPriceAuction( + sdk.AccAddress(crypto.AddressHash([]byte("Auctioneer"))).String(), + math.LegacyMustNewDecFromStr("0.5"), + sdk.NewInt64Coin("denom2", 10_000_000_000_000), + "denom1", + []types.VestingSchedule{ + { + time.Now().AddDate(0, 1, 0).AddDate(0, 6, 0), + math.LegacyMustNewDecFromStr("1.1"), + }, + }, + time.Now(), + time.Now().AddDate(0, 1, 0), + ), + }, + { + "release time must be set after the end time: invalid vesting schedules", + types.NewMsgCreateFixedPriceAuction( + sdk.AccAddress(crypto.AddressHash([]byte("Auctioneer"))).String(), + math.LegacyMustNewDecFromStr("0.5"), + sdk.NewInt64Coin("denom2", 10_000_000_000_000), + "denom1", + []types.VestingSchedule{ + { + types.MustParseRFC3339("2022-06-01T22:08:41+00:00"), + math.LegacyMustNewDecFromStr("1.0"), + }, + }, + time.Now(), + time.Now().AddDate(1, 0, 0), + ), + }, + { + "release time must be chronological: invalid vesting schedules", + types.NewMsgCreateFixedPriceAuction( + sdk.AccAddress(crypto.AddressHash([]byte("Auctioneer"))).String(), + math.LegacyMustNewDecFromStr("0.5"), + sdk.NewInt64Coin("denom2", 10_000_000_000_000), + "denom1", + []types.VestingSchedule{ + { + time.Now().AddDate(0, 1, 0).AddDate(0, 6, 0), + math.LegacyMustNewDecFromStr("0.5"), + }, + { + time.Now().AddDate(0, 1, 0).AddDate(0, 3, 0), + math.LegacyMustNewDecFromStr("0.5"), + }, + }, + time.Now(), + time.Now().AddDate(0, 1, 0), + ), + }, + { + "total vesting weight must be equal to 1: invalid vesting schedules", + types.NewMsgCreateFixedPriceAuction( + sdk.AccAddress(crypto.AddressHash([]byte("Auctioneer"))).String(), + math.LegacyMustNewDecFromStr("0.5"), + sdk.NewInt64Coin("denom2", 10_000_000_000_000), + "denom1", + []types.VestingSchedule{ + { + time.Now().AddDate(0, 1, 0).AddDate(0, 6, 0), + math.LegacyMustNewDecFromStr("0.5"), + }, + { + time.Now().AddDate(0, 1, 0).AddDate(1, 0, 0), + math.LegacyMustNewDecFromStr("0.3"), + }, + }, + time.Now(), + time.Now().AddDate(0, 1, 0), + ), + }, + { + "invalid auctioneer address: empty address string is not allowed: invalid address", + types.NewMsgCreateFixedPriceAuction( + "", + math.LegacyMustNewDecFromStr("0.5"), + sdk.NewInt64Coin("denom2", 10_000_000_000_000), + "denom1", + []types.VestingSchedule{}, + time.Now(), + time.Now().AddDate(0, 1, 0), + ), + }, + } + + for _, tc := range testCases { + require.IsType(t, &types.MsgCreateFixedPriceAuction{}, tc.msg) + + err := tc.msg.ValidateBasic() + if tc.expectedErr == "" { + require.Nil(t, err) + } else { + require.EqualError(t, err, tc.expectedErr) + } + } +} + +func TestMsgCreateBatchAuction(t *testing.T) { + testCases := []struct { + expectedErr string + msg *types.MsgCreateBatchAuction + }{ + { + "", // empty means no error expected + types.NewMsgCreateBatchAuction( + sdk.AccAddress(crypto.AddressHash([]byte("Auctioneer"))).String(), + math.LegacyMustNewDecFromStr("0.5"), + math.LegacyMustNewDecFromStr("0.1"), + sdk.NewInt64Coin("denom2", 10_000_000_000_000), + "denom1", + []types.VestingSchedule{}, + uint32(2), + math.LegacyMustNewDecFromStr("0.05"), + time.Now(), + time.Now().AddDate(0, 1, 0), + ), + }, + { + "start price must be positive: invalid request", + types.NewMsgCreateBatchAuction( + sdk.AccAddress(crypto.AddressHash([]byte("Auctioneer"))).String(), + math.LegacyMustNewDecFromStr("0"), + math.LegacyMustNewDecFromStr("0.1"), + sdk.NewInt64Coin("denom2", 10_000_000_000_000), + "denom1", + []types.VestingSchedule{}, + uint32(2), + math.LegacyMustNewDecFromStr("0.05"), + time.Now(), + time.Now().AddDate(0, 1, 0), + ), + }, + { + "minimum price must be positive: invalid request", + types.NewMsgCreateBatchAuction( + sdk.AccAddress(crypto.AddressHash([]byte("Auctioneer"))).String(), + math.LegacyMustNewDecFromStr("0.1"), + math.LegacyMustNewDecFromStr("0"), + sdk.NewInt64Coin("denom2", 10_000_000_000_000), + "denom1", + []types.VestingSchedule{}, + uint32(2), + math.LegacyMustNewDecFromStr("0.05"), + time.Now(), + time.Now().AddDate(0, 1, 0), + ), + }, + { + "selling coin amount must be positive: invalid request", + types.NewMsgCreateBatchAuction( + sdk.AccAddress(crypto.AddressHash([]byte("Auctioneer"))).String(), + math.LegacyMustNewDecFromStr("0.5"), + math.LegacyMustNewDecFromStr("0.1"), + sdk.NewInt64Coin("denom2", 0), + "denom1", + []types.VestingSchedule{}, + uint32(2), + math.LegacyMustNewDecFromStr("0.05"), + time.Now(), + time.Now().AddDate(0, 1, 0), + ), + }, + { + "selling coin denom must not be the same as paying coin denom: invalid request", + types.NewMsgCreateBatchAuction( + sdk.AccAddress(crypto.AddressHash([]byte("Auctioneer"))).String(), + math.LegacyMustNewDecFromStr("0.5"), + math.LegacyMustNewDecFromStr("0.1"), + sdk.NewInt64Coin("denom2", 10_000_000_000_000), + "denom2", + []types.VestingSchedule{}, + uint32(2), + math.LegacyMustNewDecFromStr("0.05"), + time.Now(), + time.Now().AddDate(0, 1, 0), + ), + }, + { + "end time must be set after start time: invalid request", + types.NewMsgCreateBatchAuction( + sdk.AccAddress(crypto.AddressHash([]byte("Auctioneer"))).String(), + math.LegacyMustNewDecFromStr("0.5"), + math.LegacyMustNewDecFromStr("0.1"), + sdk.NewInt64Coin("denom2", 10_000_000_000_000), + "denom1", + []types.VestingSchedule{}, + uint32(2), + math.LegacyMustNewDecFromStr("0.05"), + time.Now(), + time.Now().AddDate(-1, 0, 0), + ), + }, + { + "vesting weight must be positive: invalid vesting schedules", + types.NewMsgCreateBatchAuction( + sdk.AccAddress(crypto.AddressHash([]byte("Auctioneer"))).String(), + math.LegacyMustNewDecFromStr("0.5"), + math.LegacyMustNewDecFromStr("0.1"), + sdk.NewInt64Coin("denom2", 10_000_000_000_000), + "denom1", + []types.VestingSchedule{ + { + time.Now().AddDate(0, 1, 0).AddDate(0, 6, 0), + math.LegacyZeroDec(), + }, + }, + uint32(2), + math.LegacyMustNewDecFromStr("0.05"), + time.Now(), + time.Now().AddDate(0, 1, 0), + ), + }, + { + "vesting weight must not be greater than 1: invalid vesting schedules", + types.NewMsgCreateBatchAuction( + sdk.AccAddress(crypto.AddressHash([]byte("Auctioneer"))).String(), + math.LegacyMustNewDecFromStr("0.5"), + math.LegacyMustNewDecFromStr("0.1"), + sdk.NewInt64Coin("denom2", 10_000_000_000_000), + "denom1", + []types.VestingSchedule{ + { + time.Now().AddDate(0, 1, 0).AddDate(0, 6, 0), + math.LegacyMustNewDecFromStr("1.1"), + }, + }, + uint32(2), + math.LegacyMustNewDecFromStr("0.05"), + time.Now(), + time.Now().AddDate(0, 1, 0), + ), + }, + { + "release time must be set after the end time: invalid vesting schedules", + types.NewMsgCreateBatchAuction( + sdk.AccAddress(crypto.AddressHash([]byte("Auctioneer"))).String(), + math.LegacyMustNewDecFromStr("0.5"), + math.LegacyMustNewDecFromStr("0.1"), + sdk.NewInt64Coin("denom2", 10_000_000_000_000), + "denom1", + []types.VestingSchedule{ + { + time.Now(), + math.LegacyMustNewDecFromStr("1.0"), + }, + }, + uint32(2), + math.LegacyMustNewDecFromStr("0.05"), + time.Now(), + time.Now().AddDate(1, 0, 0), + ), + }, + { + "release time must be chronological: invalid vesting schedules", + types.NewMsgCreateBatchAuction( + sdk.AccAddress(crypto.AddressHash([]byte("Auctioneer"))).String(), + math.LegacyMustNewDecFromStr("0.5"), + math.LegacyMustNewDecFromStr("0.1"), + sdk.NewInt64Coin("denom2", 10_000_000_000_000), + "denom1", + []types.VestingSchedule{ + { + time.Now().AddDate(0, 1, 0).AddDate(0, 6, 0), + math.LegacyMustNewDecFromStr("0.5"), + }, + { + time.Now().AddDate(0, 1, 0).AddDate(0, 3, 0), + math.LegacyMustNewDecFromStr("0.5"), + }, + }, + uint32(2), + math.LegacyMustNewDecFromStr("0.05"), + time.Now(), + time.Now().AddDate(0, 1, 0), + ), + }, + { + "total vesting weight must be equal to 1: invalid vesting schedules", + types.NewMsgCreateBatchAuction( + sdk.AccAddress(crypto.AddressHash([]byte("Auctioneer"))).String(), + math.LegacyMustNewDecFromStr("0.5"), + math.LegacyMustNewDecFromStr("0.1"), + sdk.NewInt64Coin("denom2", 10_000_000_000_000), + "denom1", + []types.VestingSchedule{ + { + time.Now().AddDate(0, 1, 0).AddDate(0, 6, 0), + math.LegacyMustNewDecFromStr("0.5"), + }, + { + time.Now().AddDate(0, 1, 0).AddDate(1, 0, 0), + math.LegacyMustNewDecFromStr("0.3"), + }, + }, + uint32(2), + math.LegacyMustNewDecFromStr("0.05"), + time.Now(), + time.Now().AddDate(0, 1, 0), + ), + }, + { + "extend rate must be positive: invalid request", + types.NewMsgCreateBatchAuction( + sdk.AccAddress(crypto.AddressHash([]byte("Auctioneer"))).String(), + math.LegacyMustNewDecFromStr("0.5"), + math.LegacyMustNewDecFromStr("0.1"), + sdk.NewInt64Coin("denom2", 10_000_000_000_000), + "denom1", + []types.VestingSchedule{}, + uint32(2), + math.LegacyMustNewDecFromStr("-0.05"), + time.Now(), + time.Now().AddDate(0, 1, 0), + ), + }, + { + "invalid auctioneer address: empty address string is not allowed: invalid address", + types.NewMsgCreateBatchAuction( + "", + math.LegacyMustNewDecFromStr("0.5"), + math.LegacyMustNewDecFromStr("0.1"), + sdk.NewInt64Coin("denom2", 10_000_000_000_000), + "denom1", + []types.VestingSchedule{}, + uint32(2), + math.LegacyMustNewDecFromStr("0.05"), + time.Now(), + time.Now().AddDate(0, 1, 0), + ), + }, + } + + for _, tc := range testCases { + require.IsType(t, &types.MsgCreateBatchAuction{}, tc.msg) + + err := tc.msg.ValidateBasic() + if tc.expectedErr == "" { + require.Nil(t, err) + } else { + require.EqualError(t, err, tc.expectedErr) + } + } +} + +func TestMsgCancelAuction(t *testing.T) { + testCases := []struct { + expectedErr string + msg *types.MsgCancelAuction + }{ + { + "", // empty means no error expected + types.NewMsgCancelAuction( + sdk.AccAddress(crypto.AddressHash([]byte("Auctioneer"))).String(), + uint64(1), + ), + }, + { + "invalid auctioneer address: empty address string is not allowed: invalid address", + types.NewMsgCancelAuction( + "", + uint64(1), + ), + }, + } + + for _, tc := range testCases { + require.IsType(t, &types.MsgCancelAuction{}, tc.msg) + + err := tc.msg.ValidateBasic() + if tc.expectedErr == "" { + require.Nil(t, err) + } else { + require.EqualError(t, err, tc.expectedErr) + } + } +} + +func TestMsgPlaceBid(t *testing.T) { + testCases := []struct { + expectedErr string + msg *types.MsgPlaceBid + }{ + { + "", // empty means no error expected + types.NewMsgPlaceBid( + uint64(1), + sdk.AccAddress(crypto.AddressHash([]byte("Bidder"))).String(), + types.BidTypeBatchWorth, + math.LegacyOneDec(), + sdk.NewInt64Coin("denom2", 1000000), + ), + }, + { + "bid price must be positive value: invalid request", + types.NewMsgPlaceBid( + uint64(1), + sdk.AccAddress(crypto.AddressHash([]byte("Bidder"))).String(), + types.BidTypeBatchWorth, + math.LegacyZeroDec(), + sdk.NewInt64Coin("denom2", 1000000), + ), + }, + { + "invalid coin amount: 0: invalid request", + types.NewMsgPlaceBid( + uint64(1), + sdk.AccAddress(crypto.AddressHash([]byte("Bidder"))).String(), + types.BidTypeBatchWorth, + math.LegacyOneDec(), + sdk.NewInt64Coin("denom2", 0), + ), + }, + { + "invalid bidder address: empty address string is not allowed: invalid address", + types.NewMsgPlaceBid( + uint64(1), + "", + types.BidTypeBatchWorth, + math.LegacyOneDec(), + sdk.NewInt64Coin("denom2", 1000000), + ), + }, + } + + for _, tc := range testCases { + require.IsType(t, &types.MsgPlaceBid{}, tc.msg) + + err := tc.msg.ValidateBasic() + if tc.expectedErr == "" { + require.Nil(t, err) + } else { + require.EqualError(t, err, tc.expectedErr) + } + } +} + +func TestMsgModifyBid(t *testing.T) { + testCases := []struct { + expectedErr string + msg *types.MsgModifyBid + }{ + { + "", // empty means no error expected + types.NewMsgModifyBid( + uint64(1), + sdk.AccAddress(crypto.AddressHash([]byte("Bidder"))).String(), + uint64(0), + math.LegacyOneDec(), + sdk.NewInt64Coin("denom2", 1000000), + ), + }, + { + "bid price must be positive value: invalid request", + types.NewMsgModifyBid( + uint64(1), + sdk.AccAddress(crypto.AddressHash([]byte("Bidder"))).String(), + uint64(0), + math.LegacyZeroDec(), + sdk.NewInt64Coin("denom2", 1000000), + ), + }, + { + "invalid coin amount: 0: invalid request", + types.NewMsgModifyBid( + uint64(1), + sdk.AccAddress(crypto.AddressHash([]byte("Bidder"))).String(), + uint64(0), + math.LegacyOneDec(), + sdk.NewInt64Coin("denom2", 0), + ), + }, + { + "invalid bidder address: empty address string is not allowed: invalid address", + types.NewMsgModifyBid( + uint64(1), + "", + uint64(0), + math.LegacyOneDec(), + sdk.NewInt64Coin("denom2", 1000000), + ), + }, + } + + for _, tc := range testCases { + require.IsType(t, &types.MsgModifyBid{}, tc.msg) + + err := tc.msg.ValidateBasic() + if tc.expectedErr == "" { + require.Nil(t, err) + } else { + require.EqualError(t, err, tc.expectedErr) + } + } +} + +func TestAddAllowedBidder(t *testing.T) { + testCases := []struct { + expectedErr string + msg *types.MsgAddAllowedBidder + }{ + { + "", // empty means no error expected + types.NewMsgAddAllowedBidder( + 1, + types.AllowedBidder{ + 1, + sdk.AccAddress(crypto.AddressHash([]byte("Bidder"))).String(), + math.NewInt(100_000_000), + }, + ), + }, + { + "invalid bidder address: empty address string is not allowed: invalid address", + types.NewMsgAddAllowedBidder( + 1, + types.AllowedBidder{ + 1, + "", + math.NewInt(100_000_000), + }, + ), + }, + } + + for _, tc := range testCases { + require.IsType(t, &types.MsgAddAllowedBidder{}, tc.msg) + err := tc.msg.ValidateBasic() + if tc.expectedErr == "" { + require.Nil(t, err) + } else { + require.EqualError(t, err, tc.expectedErr) + } + } +} diff --git a/x/fundraising/types/params.go b/x/fundraising/types/params.go new file mode 100644 index 0000000..d5ed360 --- /dev/null +++ b/x/fundraising/types/params.go @@ -0,0 +1,64 @@ +package types + +import ( + "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" +) + +const ( + // MaxNumVestingSchedules is the maximum number of vesting schedules in an auction + // It prevents from a malicious auctioneer to set an infinite number of vesting schedules + // when they create an auction + MaxNumVestingSchedules = 100 + + // MaxExtendedRound is the maximum extend rounds for a batch auction to have + // It prevents from a batch auction to extend its rounds forever + MaxExtendedRound = 30 +) + +var ( + DefaultAuctionCreationFee = sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, math.NewInt(100_000_000))) + DefaultPlaceBidFee = sdk.Coins{} + DefaultExtendedPeriod = uint32(1) +) + +// NewParams creates a new Params instance. +func NewParams( + auctionCreationFee, + placeBidFee sdk.Coins, + extendedPeriod uint32, +) Params { + return Params{AuctionCreationFee: auctionCreationFee, PlaceBidFee: placeBidFee, ExtendedPeriod: extendedPeriod} +} + +// DefaultParams returns a default set of parameters. +func DefaultParams() Params { + return NewParams(DefaultAuctionCreationFee, DefaultPlaceBidFee, DefaultExtendedPeriod) +} + +// Validate validates the set of params. +func (p Params) Validate() error { + if err := validateAuctionCreationFee(p.AuctionCreationFee); err != nil { + return err + } + if err := validatePlaceBidFee(p.PlaceBidFee); err != nil { + return err + } + if err := validateExtendedPeriod(p.ExtendedPeriod); err != nil { + return err + } + + return nil +} + +func validateAuctionCreationFee(v sdk.Coins) error { + return v.Validate() +} + +func validatePlaceBidFee(v sdk.Coins) error { + return v.Validate() +} + +func validateExtendedPeriod(uint32) error { + return nil +} diff --git a/x/fundraising/types/params.pb.go b/x/fundraising/types/params.pb.go new file mode 100644 index 0000000..933ab95 --- /dev/null +++ b/x/fundraising/types/params.pb.go @@ -0,0 +1,492 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: modules/fundraising/v1/params.proto + +package types + +import ( + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" + types "github.com/cosmos/cosmos-sdk/types" + _ "github.com/cosmos/cosmos-sdk/types/tx/amino" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// Params defines the parameters for the module. +type Params struct { + // auction_creation_fee specifies the fee for auction creation. + // this prevents from spamming attack and it is collected in the community + // pool + AuctionCreationFee github_com_cosmos_cosmos_sdk_types.Coins `protobuf:"bytes,1,rep,name=auction_creation_fee,json=auctionCreationFee,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coins" json:"auction_creation_fee"` + // place_bid_fee specifies the fee for placing a bid for an auction. + // this prevents from spamming attack and it is collected in the community + // pool + PlaceBidFee github_com_cosmos_cosmos_sdk_types.Coins `protobuf:"bytes,2,rep,name=place_bid_fee,json=placeBidFee,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coins" json:"place_bid_fee"` + // extended_period specifies the extended period that determines how long + // the extended auction round lasts + ExtendedPeriod uint32 `protobuf:"varint,3,opt,name=extended_period,json=extendedPeriod,proto3" json:"extended_period,omitempty"` +} + +func (m *Params) Reset() { *m = Params{} } +func (m *Params) String() string { return proto.CompactTextString(m) } +func (*Params) ProtoMessage() {} +func (*Params) Descriptor() ([]byte, []int) { + return fileDescriptor_9b3acf29630e7f59, []int{0} +} +func (m *Params) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Params) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Params.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 *Params) XXX_Merge(src proto.Message) { + xxx_messageInfo_Params.Merge(m, src) +} +func (m *Params) XXX_Size() int { + return m.Size() +} +func (m *Params) XXX_DiscardUnknown() { + xxx_messageInfo_Params.DiscardUnknown(m) +} + +var xxx_messageInfo_Params proto.InternalMessageInfo + +func (m *Params) GetAuctionCreationFee() github_com_cosmos_cosmos_sdk_types.Coins { + if m != nil { + return m.AuctionCreationFee + } + return nil +} + +func (m *Params) GetPlaceBidFee() github_com_cosmos_cosmos_sdk_types.Coins { + if m != nil { + return m.PlaceBidFee + } + return nil +} + +func (m *Params) GetExtendedPeriod() uint32 { + if m != nil { + return m.ExtendedPeriod + } + return 0 +} + +func init() { + proto.RegisterType((*Params)(nil), "modules.fundraising.v1.Params") +} + +func init() { + proto.RegisterFile("modules/fundraising/v1/params.proto", fileDescriptor_9b3acf29630e7f59) +} + +var fileDescriptor_9b3acf29630e7f59 = []byte{ + // 380 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x52, 0xb1, 0x6e, 0xe2, 0x40, + 0x10, 0xf5, 0x82, 0x44, 0x61, 0x8e, 0x3b, 0x9d, 0x85, 0x4e, 0x40, 0x61, 0xd0, 0x5d, 0x71, 0x1c, + 0x12, 0x5e, 0xf9, 0xae, 0xbb, 0x12, 0x24, 0xd2, 0x22, 0xca, 0x34, 0xd6, 0xda, 0x3b, 0x38, 0xab, + 0xe0, 0x5d, 0xcb, 0x6b, 0x23, 0xf8, 0x80, 0x34, 0xa9, 0x22, 0xa5, 0x4b, 0x95, 0x32, 0x4a, 0xc5, + 0x67, 0x50, 0x52, 0xa6, 0x4a, 0x22, 0x28, 0xc8, 0x37, 0xa4, 0x8a, 0xbc, 0x5e, 0x24, 0xf8, 0x81, + 0x34, 0xf6, 0xcc, 0x9b, 0xb7, 0xf3, 0xde, 0xee, 0x8c, 0xf9, 0x2b, 0x12, 0x34, 0x9b, 0x81, 0xc4, + 0xd3, 0x8c, 0xd3, 0x84, 0x30, 0xc9, 0x78, 0x88, 0xe7, 0x2e, 0x8e, 0x49, 0x42, 0x22, 0xe9, 0xc4, + 0x89, 0x48, 0x85, 0xf5, 0x43, 0x93, 0x9c, 0x23, 0x92, 0x33, 0x77, 0x5b, 0xdf, 0x49, 0xc4, 0xb8, + 0xc0, 0xea, 0x5b, 0x50, 0x5b, 0x76, 0x20, 0x64, 0x24, 0x24, 0xf6, 0x89, 0x04, 0x3c, 0x77, 0x7d, + 0x48, 0x89, 0x8b, 0x03, 0xc1, 0xb8, 0xae, 0x37, 0x8b, 0xba, 0xa7, 0x32, 0x5c, 0x24, 0xba, 0x54, + 0x0f, 0x45, 0x28, 0x0a, 0x3c, 0x8f, 0x0a, 0xf4, 0xe7, 0x7b, 0xc9, 0xac, 0x8c, 0x95, 0x19, 0xeb, + 0x16, 0x99, 0x75, 0x92, 0x05, 0x29, 0x13, 0xdc, 0x0b, 0x12, 0x20, 0x2a, 0x98, 0x02, 0x34, 0x50, + 0xa7, 0xdc, 0xad, 0xfe, 0x6d, 0x3a, 0xba, 0x5d, 0xae, 0xed, 0x68, 0x6d, 0x67, 0x28, 0x18, 0x1f, + 0x8c, 0xd6, 0xcf, 0x6d, 0xe3, 0xf1, 0xa5, 0xdd, 0x0d, 0x59, 0x7a, 0x91, 0xf9, 0x4e, 0x20, 0x22, + 0xad, 0xad, 0x7f, 0x7d, 0x49, 0x2f, 0x71, 0xba, 0x8c, 0x41, 0xaa, 0x03, 0xf2, 0x6e, 0xbf, 0xea, + 0x7d, 0x99, 0x41, 0x48, 0x82, 0xa5, 0x97, 0xbb, 0x97, 0x0f, 0xfb, 0x55, 0x0f, 0x4d, 0x2c, 0x2d, + 0x3f, 0xd4, 0xea, 0x23, 0x00, 0xeb, 0x0a, 0x99, 0xb5, 0x78, 0x46, 0x02, 0xf0, 0x7c, 0x46, 0x95, + 0x9d, 0xd2, 0x67, 0xd9, 0xa9, 0x2a, 0xdd, 0x01, 0xa3, 0xb9, 0x8f, 0xdf, 0xe6, 0x37, 0x58, 0xa4, + 0xc0, 0x29, 0x50, 0x2f, 0x86, 0x84, 0x09, 0xda, 0x28, 0x77, 0x50, 0xb7, 0x36, 0xf9, 0x7a, 0x80, + 0xc7, 0x0a, 0xfd, 0xff, 0xe7, 0xed, 0xbe, 0x8d, 0xae, 0xf7, 0xab, 0x5e, 0xe7, 0x78, 0xe6, 0x8b, + 0x93, 0x0d, 0x28, 0x5e, 0x7c, 0x70, 0xb6, 0xde, 0xda, 0x68, 0xb3, 0xb5, 0xd1, 0xeb, 0xd6, 0x46, + 0x37, 0x3b, 0xdb, 0xd8, 0xec, 0x6c, 0xe3, 0x69, 0x67, 0x1b, 0xe7, 0xfd, 0x23, 0xeb, 0x2c, 0xe4, + 0x2c, 0x05, 0x7c, 0xd8, 0xa4, 0xd3, 0x4e, 0xea, 0x16, 0x7e, 0x45, 0x0d, 0xf3, 0xdf, 0x47, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x9e, 0x7f, 0xd4, 0xc7, 0x6f, 0x02, 0x00, 0x00, +} + +func (this *Params) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*Params) + if !ok { + that2, ok := that.(Params) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if len(this.AuctionCreationFee) != len(that1.AuctionCreationFee) { + return false + } + for i := range this.AuctionCreationFee { + if !this.AuctionCreationFee[i].Equal(&that1.AuctionCreationFee[i]) { + return false + } + } + if len(this.PlaceBidFee) != len(that1.PlaceBidFee) { + return false + } + for i := range this.PlaceBidFee { + if !this.PlaceBidFee[i].Equal(&that1.PlaceBidFee[i]) { + return false + } + } + if this.ExtendedPeriod != that1.ExtendedPeriod { + return false + } + return true +} +func (m *Params) 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 *Params) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.ExtendedPeriod != 0 { + i = encodeVarintParams(dAtA, i, uint64(m.ExtendedPeriod)) + i-- + dAtA[i] = 0x18 + } + if len(m.PlaceBidFee) > 0 { + for iNdEx := len(m.PlaceBidFee) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.PlaceBidFee[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintParams(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if len(m.AuctionCreationFee) > 0 { + for iNdEx := len(m.AuctionCreationFee) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.AuctionCreationFee[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintParams(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func encodeVarintParams(dAtA []byte, offset int, v uint64) int { + offset -= sovParams(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *Params) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.AuctionCreationFee) > 0 { + for _, e := range m.AuctionCreationFee { + l = e.Size() + n += 1 + l + sovParams(uint64(l)) + } + } + if len(m.PlaceBidFee) > 0 { + for _, e := range m.PlaceBidFee { + l = e.Size() + n += 1 + l + sovParams(uint64(l)) + } + } + if m.ExtendedPeriod != 0 { + n += 1 + sovParams(uint64(m.ExtendedPeriod)) + } + return n +} + +func sovParams(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozParams(x uint64) (n int) { + return sovParams(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *Params) 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 ErrIntOverflowParams + } + 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: Params: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Params: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AuctionCreationFee", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowParams + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthParams + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthParams + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AuctionCreationFee = append(m.AuctionCreationFee, types.Coin{}) + if err := m.AuctionCreationFee[len(m.AuctionCreationFee)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PlaceBidFee", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowParams + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthParams + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthParams + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PlaceBidFee = append(m.PlaceBidFee, types.Coin{}) + if err := m.PlaceBidFee[len(m.PlaceBidFee)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ExtendedPeriod", wireType) + } + m.ExtendedPeriod = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowParams + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ExtendedPeriod |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipParams(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthParams + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipParams(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowParams + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowParams + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowParams + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthParams + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupParams + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthParams + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthParams = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowParams = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupParams = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/fundraising/types/params_test.go b/x/fundraising/types/params_test.go new file mode 100644 index 0000000..bc7f27e --- /dev/null +++ b/x/fundraising/types/params_test.go @@ -0,0 +1,56 @@ +package types_test + +import ( + "testing" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/stretchr/testify/require" + + "github.com/ignite/modules/x/fundraising/types" +) + +func TestParams(t *testing.T) { + defaultParams := types.DefaultParams() + + paramsStr := `auction_creation_fee: extended_period:1 ` + require.Equal(t, paramsStr, defaultParams.String()) +} + +func TestParamsValidate(t *testing.T) { + require.NoError(t, types.DefaultParams().Validate()) + + testCases := []struct { + name string + configure func(*types.Params) + expectedErr string + }{ + { + "EmptyAuctionCreationFee", + func(params *types.Params) { + params.AuctionCreationFee = sdk.NewCoins() + }, + "", + }, + { + "EmptyPlaceBidFee", + func(params *types.Params) { + params.PlaceBidFee = sdk.NewCoins() + }, + "", + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + params := types.DefaultParams() + tc.configure(¶ms) + err := params.Validate() + + if tc.expectedErr != "" { + require.EqualError(t, err, tc.expectedErr) + } else { + require.Nil(t, err) + } + }) + } +} diff --git a/x/fundraising/types/query.pb.go b/x/fundraising/types/query.pb.go new file mode 100644 index 0000000..7dcd8b7 --- /dev/null +++ b/x/fundraising/types/query.pb.go @@ -0,0 +1,3930 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: modules/fundraising/v1/query.proto + +package types + +import ( + context "context" + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + types "github.com/cosmos/cosmos-sdk/codec/types" + query "github.com/cosmos/cosmos-sdk/types/query" + _ "github.com/cosmos/cosmos-sdk/types/tx/amino" + _ "github.com/cosmos/gogoproto/gogoproto" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" + _ "google.golang.org/genproto/googleapis/api/annotations" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// QueryParamsRequest is request type for the Query/Params RPC method. +type QueryParamsRequest struct { +} + +func (m *QueryParamsRequest) Reset() { *m = QueryParamsRequest{} } +func (m *QueryParamsRequest) String() string { return proto.CompactTextString(m) } +func (*QueryParamsRequest) ProtoMessage() {} +func (*QueryParamsRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_9275eda8d24f0a10, []int{0} +} +func (m *QueryParamsRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryParamsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryParamsRequest.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 *QueryParamsRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryParamsRequest.Merge(m, src) +} +func (m *QueryParamsRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryParamsRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryParamsRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryParamsRequest proto.InternalMessageInfo + +// QueryParamsResponse is response type for the Query/Params RPC method. +type QueryParamsResponse struct { + // params holds all the parameters of this module. + Params Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params"` +} + +func (m *QueryParamsResponse) Reset() { *m = QueryParamsResponse{} } +func (m *QueryParamsResponse) String() string { return proto.CompactTextString(m) } +func (*QueryParamsResponse) ProtoMessage() {} +func (*QueryParamsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_9275eda8d24f0a10, []int{1} +} +func (m *QueryParamsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryParamsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryParamsResponse.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 *QueryParamsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryParamsResponse.Merge(m, src) +} +func (m *QueryParamsResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryParamsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryParamsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryParamsResponse proto.InternalMessageInfo + +func (m *QueryParamsResponse) GetParams() Params { + if m != nil { + return m.Params + } + return Params{} +} + +// QueryAllAuctionRequest is request type for the Query/Auctions RPC method. +type QueryAllAuctionRequest struct { + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` + Pagination *query.PageRequest `protobuf:"bytes,3,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (m *QueryAllAuctionRequest) Reset() { *m = QueryAllAuctionRequest{} } +func (m *QueryAllAuctionRequest) String() string { return proto.CompactTextString(m) } +func (*QueryAllAuctionRequest) ProtoMessage() {} +func (*QueryAllAuctionRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_9275eda8d24f0a10, []int{2} +} +func (m *QueryAllAuctionRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryAllAuctionRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryAllAuctionRequest.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 *QueryAllAuctionRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryAllAuctionRequest.Merge(m, src) +} +func (m *QueryAllAuctionRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryAllAuctionRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryAllAuctionRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryAllAuctionRequest proto.InternalMessageInfo + +func (m *QueryAllAuctionRequest) GetStatus() string { + if m != nil { + return m.Status + } + return "" +} + +func (m *QueryAllAuctionRequest) GetType() string { + if m != nil { + return m.Type + } + return "" +} + +func (m *QueryAllAuctionRequest) GetPagination() *query.PageRequest { + if m != nil { + return m.Pagination + } + return nil +} + +// QueryAllAuctionResponse is response type for the Query/Auctions RPC method. +type QueryAllAuctionResponse struct { + // auctions specifies the existing auctions + Auction []*types.Any `protobuf:"bytes,1,rep,name=auction,proto3" json:"auction,omitempty"` + // pagination defines the pagination in the response + Pagination *query.PageResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (m *QueryAllAuctionResponse) Reset() { *m = QueryAllAuctionResponse{} } +func (m *QueryAllAuctionResponse) String() string { return proto.CompactTextString(m) } +func (*QueryAllAuctionResponse) ProtoMessage() {} +func (*QueryAllAuctionResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_9275eda8d24f0a10, []int{3} +} +func (m *QueryAllAuctionResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryAllAuctionResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryAllAuctionResponse.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 *QueryAllAuctionResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryAllAuctionResponse.Merge(m, src) +} +func (m *QueryAllAuctionResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryAllAuctionResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryAllAuctionResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryAllAuctionResponse proto.InternalMessageInfo + +func (m *QueryAllAuctionResponse) GetAuction() []*types.Any { + if m != nil { + return m.Auction + } + return nil +} + +func (m *QueryAllAuctionResponse) GetPagination() *query.PageResponse { + if m != nil { + return m.Pagination + } + return nil +} + +// QueryGetAuctionRequest is the request type for the Query/Auction RPC method. +type QueryGetAuctionRequest struct { + AuctionId uint64 `protobuf:"varint,1,opt,name=auction_id,json=auctionId,proto3" json:"auction_id,omitempty"` +} + +func (m *QueryGetAuctionRequest) Reset() { *m = QueryGetAuctionRequest{} } +func (m *QueryGetAuctionRequest) String() string { return proto.CompactTextString(m) } +func (*QueryGetAuctionRequest) ProtoMessage() {} +func (*QueryGetAuctionRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_9275eda8d24f0a10, []int{4} +} +func (m *QueryGetAuctionRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryGetAuctionRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryGetAuctionRequest.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 *QueryGetAuctionRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryGetAuctionRequest.Merge(m, src) +} +func (m *QueryGetAuctionRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryGetAuctionRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryGetAuctionRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryGetAuctionRequest proto.InternalMessageInfo + +func (m *QueryGetAuctionRequest) GetAuctionId() uint64 { + if m != nil { + return m.AuctionId + } + return 0 +} + +// QueryGetAuctionResponse is the response type for the Query/Auction RPC method. +type QueryGetAuctionResponse struct { + Auction *types.Any `protobuf:"bytes,1,opt,name=auction,proto3" json:"auction,omitempty"` +} + +func (m *QueryGetAuctionResponse) Reset() { *m = QueryGetAuctionResponse{} } +func (m *QueryGetAuctionResponse) String() string { return proto.CompactTextString(m) } +func (*QueryGetAuctionResponse) ProtoMessage() {} +func (*QueryGetAuctionResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_9275eda8d24f0a10, []int{5} +} +func (m *QueryGetAuctionResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryGetAuctionResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryGetAuctionResponse.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 *QueryGetAuctionResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryGetAuctionResponse.Merge(m, src) +} +func (m *QueryGetAuctionResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryGetAuctionResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryGetAuctionResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryGetAuctionResponse proto.InternalMessageInfo + +func (m *QueryGetAuctionResponse) GetAuction() *types.Any { + if m != nil { + return m.Auction + } + return nil +} + +// QueryAllowedBidderRequest is the request type for the Query/AllowedBidder RPC method. +type QueryAllAllowedBidderRequest struct { + AuctionId uint64 `protobuf:"varint,1,opt,name=auction_id,json=auctionId,proto3" json:"auction_id,omitempty"` + Pagination *query.PageRequest `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (m *QueryAllAllowedBidderRequest) Reset() { *m = QueryAllAllowedBidderRequest{} } +func (m *QueryAllAllowedBidderRequest) String() string { return proto.CompactTextString(m) } +func (*QueryAllAllowedBidderRequest) ProtoMessage() {} +func (*QueryAllAllowedBidderRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_9275eda8d24f0a10, []int{6} +} +func (m *QueryAllAllowedBidderRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryAllAllowedBidderRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryAllAllowedBidderRequest.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 *QueryAllAllowedBidderRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryAllAllowedBidderRequest.Merge(m, src) +} +func (m *QueryAllAllowedBidderRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryAllAllowedBidderRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryAllAllowedBidderRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryAllAllowedBidderRequest proto.InternalMessageInfo + +func (m *QueryAllAllowedBidderRequest) GetAuctionId() uint64 { + if m != nil { + return m.AuctionId + } + return 0 +} + +func (m *QueryAllAllowedBidderRequest) GetPagination() *query.PageRequest { + if m != nil { + return m.Pagination + } + return nil +} + +// QueryAllowedBidderResponse is the response type for the Query/AllowedBidder RPC method. +type QueryAllAllowedBidderResponse struct { + AllowedBidder []AllowedBidder `protobuf:"bytes,1,rep,name=allowed_bidder,json=allowedBidder,proto3" json:"allowed_bidder"` + // pagination defines the pagination in the response + Pagination *query.PageResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (m *QueryAllAllowedBidderResponse) Reset() { *m = QueryAllAllowedBidderResponse{} } +func (m *QueryAllAllowedBidderResponse) String() string { return proto.CompactTextString(m) } +func (*QueryAllAllowedBidderResponse) ProtoMessage() {} +func (*QueryAllAllowedBidderResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_9275eda8d24f0a10, []int{7} +} +func (m *QueryAllAllowedBidderResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryAllAllowedBidderResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryAllAllowedBidderResponse.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 *QueryAllAllowedBidderResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryAllAllowedBidderResponse.Merge(m, src) +} +func (m *QueryAllAllowedBidderResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryAllAllowedBidderResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryAllAllowedBidderResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryAllAllowedBidderResponse proto.InternalMessageInfo + +func (m *QueryAllAllowedBidderResponse) GetAllowedBidder() []AllowedBidder { + if m != nil { + return m.AllowedBidder + } + return nil +} + +func (m *QueryAllAllowedBidderResponse) GetPagination() *query.PageResponse { + if m != nil { + return m.Pagination + } + return nil +} + +// QueryAllowedBidderRequest is the request type for the Query/AllowedBidder RPC +// method. +type QueryGetAllowedBidderRequest struct { + AuctionId uint64 `protobuf:"varint,1,opt,name=auction_id,json=auctionId,proto3" json:"auction_id,omitempty"` + Bidder string `protobuf:"bytes,2,opt,name=bidder,proto3" json:"bidder,omitempty"` +} + +func (m *QueryGetAllowedBidderRequest) Reset() { *m = QueryGetAllowedBidderRequest{} } +func (m *QueryGetAllowedBidderRequest) String() string { return proto.CompactTextString(m) } +func (*QueryGetAllowedBidderRequest) ProtoMessage() {} +func (*QueryGetAllowedBidderRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_9275eda8d24f0a10, []int{8} +} +func (m *QueryGetAllowedBidderRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryGetAllowedBidderRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryGetAllowedBidderRequest.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 *QueryGetAllowedBidderRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryGetAllowedBidderRequest.Merge(m, src) +} +func (m *QueryGetAllowedBidderRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryGetAllowedBidderRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryGetAllowedBidderRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryGetAllowedBidderRequest proto.InternalMessageInfo + +func (m *QueryGetAllowedBidderRequest) GetAuctionId() uint64 { + if m != nil { + return m.AuctionId + } + return 0 +} + +func (m *QueryGetAllowedBidderRequest) GetBidder() string { + if m != nil { + return m.Bidder + } + return "" +} + +// QueryAllowedBidderResponse is the response type for the Query/AllowedBidder +// RPC method. +type QueryGetAllowedBidderResponse struct { + AllowedBidder AllowedBidder `protobuf:"bytes,1,opt,name=allowed_bidder,json=allowedBidder,proto3" json:"allowed_bidder"` +} + +func (m *QueryGetAllowedBidderResponse) Reset() { *m = QueryGetAllowedBidderResponse{} } +func (m *QueryGetAllowedBidderResponse) String() string { return proto.CompactTextString(m) } +func (*QueryGetAllowedBidderResponse) ProtoMessage() {} +func (*QueryGetAllowedBidderResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_9275eda8d24f0a10, []int{9} +} +func (m *QueryGetAllowedBidderResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryGetAllowedBidderResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryGetAllowedBidderResponse.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 *QueryGetAllowedBidderResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryGetAllowedBidderResponse.Merge(m, src) +} +func (m *QueryGetAllowedBidderResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryGetAllowedBidderResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryGetAllowedBidderResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryGetAllowedBidderResponse proto.InternalMessageInfo + +func (m *QueryGetAllowedBidderResponse) GetAllowedBidder() AllowedBidder { + if m != nil { + return m.AllowedBidder + } + return AllowedBidder{} +} + +// QueryGetBidRequest is the request type for the Query/Sequence RPC method. +type QueryGetBidRequest struct { + AuctionId uint64 `protobuf:"varint,1,opt,name=auction_id,json=auctionId,proto3" json:"auction_id,omitempty"` + BidId uint64 `protobuf:"varint,2,opt,name=bid_id,json=bidId,proto3" json:"bid_id,omitempty"` +} + +func (m *QueryGetBidRequest) Reset() { *m = QueryGetBidRequest{} } +func (m *QueryGetBidRequest) String() string { return proto.CompactTextString(m) } +func (*QueryGetBidRequest) ProtoMessage() {} +func (*QueryGetBidRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_9275eda8d24f0a10, []int{10} +} +func (m *QueryGetBidRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryGetBidRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryGetBidRequest.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 *QueryGetBidRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryGetBidRequest.Merge(m, src) +} +func (m *QueryGetBidRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryGetBidRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryGetBidRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryGetBidRequest proto.InternalMessageInfo + +func (m *QueryGetBidRequest) GetAuctionId() uint64 { + if m != nil { + return m.AuctionId + } + return 0 +} + +func (m *QueryGetBidRequest) GetBidId() uint64 { + if m != nil { + return m.BidId + } + return 0 +} + +// QueryGetBidResponse is response type for the Query/Sequence RPC method. +type QueryGetBidResponse struct { + // bid specifies specific bid + Bid Bid `protobuf:"bytes,1,opt,name=bid,proto3" json:"bid"` +} + +func (m *QueryGetBidResponse) Reset() { *m = QueryGetBidResponse{} } +func (m *QueryGetBidResponse) String() string { return proto.CompactTextString(m) } +func (*QueryGetBidResponse) ProtoMessage() {} +func (*QueryGetBidResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_9275eda8d24f0a10, []int{11} +} +func (m *QueryGetBidResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryGetBidResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryGetBidResponse.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 *QueryGetBidResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryGetBidResponse.Merge(m, src) +} +func (m *QueryGetBidResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryGetBidResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryGetBidResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryGetBidResponse proto.InternalMessageInfo + +func (m *QueryGetBidResponse) GetBid() Bid { + if m != nil { + return m.Bid + } + return Bid{} +} + +// QueryBidsRequest is request type for the Query/Bids RPC method. +type QueryAllBidRequest struct { + AuctionId uint64 `protobuf:"varint,1,opt,name=auction_id,json=auctionId,proto3" json:"auction_id,omitempty"` + Bidder string `protobuf:"bytes,2,opt,name=bidder,proto3" json:"bidder,omitempty"` + IsMatched string `protobuf:"bytes,3,opt,name=is_matched,json=isMatched,proto3" json:"is_matched,omitempty"` + Pagination *query.PageRequest `protobuf:"bytes,4,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (m *QueryAllBidRequest) Reset() { *m = QueryAllBidRequest{} } +func (m *QueryAllBidRequest) String() string { return proto.CompactTextString(m) } +func (*QueryAllBidRequest) ProtoMessage() {} +func (*QueryAllBidRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_9275eda8d24f0a10, []int{12} +} +func (m *QueryAllBidRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryAllBidRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryAllBidRequest.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 *QueryAllBidRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryAllBidRequest.Merge(m, src) +} +func (m *QueryAllBidRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryAllBidRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryAllBidRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryAllBidRequest proto.InternalMessageInfo + +func (m *QueryAllBidRequest) GetAuctionId() uint64 { + if m != nil { + return m.AuctionId + } + return 0 +} + +func (m *QueryAllBidRequest) GetBidder() string { + if m != nil { + return m.Bidder + } + return "" +} + +func (m *QueryAllBidRequest) GetIsMatched() string { + if m != nil { + return m.IsMatched + } + return "" +} + +func (m *QueryAllBidRequest) GetPagination() *query.PageRequest { + if m != nil { + return m.Pagination + } + return nil +} + +// QueryBidsResponse is response type for the Query/Bids RPC method. +type QueryAllBidResponse struct { + // bids specifies the existing bids + Bid []Bid `protobuf:"bytes,1,rep,name=bid,proto3" json:"bid"` + // pagination defines the pagination in the response + Pagination *query.PageResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (m *QueryAllBidResponse) Reset() { *m = QueryAllBidResponse{} } +func (m *QueryAllBidResponse) String() string { return proto.CompactTextString(m) } +func (*QueryAllBidResponse) ProtoMessage() {} +func (*QueryAllBidResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_9275eda8d24f0a10, []int{13} +} +func (m *QueryAllBidResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryAllBidResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryAllBidResponse.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 *QueryAllBidResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryAllBidResponse.Merge(m, src) +} +func (m *QueryAllBidResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryAllBidResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryAllBidResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryAllBidResponse proto.InternalMessageInfo + +func (m *QueryAllBidResponse) GetBid() []Bid { + if m != nil { + return m.Bid + } + return nil +} + +func (m *QueryAllBidResponse) GetPagination() *query.PageResponse { + if m != nil { + return m.Pagination + } + return nil +} + +// QueryAllVestingQueueRequest is request type for the Query/Vestings RPC method. +type QueryAllVestingQueueRequest struct { + AuctionId uint64 `protobuf:"varint,1,opt,name=auction_id,json=auctionId,proto3" json:"auction_id,omitempty"` + Pagination *query.PageRequest `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (m *QueryAllVestingQueueRequest) Reset() { *m = QueryAllVestingQueueRequest{} } +func (m *QueryAllVestingQueueRequest) String() string { return proto.CompactTextString(m) } +func (*QueryAllVestingQueueRequest) ProtoMessage() {} +func (*QueryAllVestingQueueRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_9275eda8d24f0a10, []int{14} +} +func (m *QueryAllVestingQueueRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryAllVestingQueueRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryAllVestingQueueRequest.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 *QueryAllVestingQueueRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryAllVestingQueueRequest.Merge(m, src) +} +func (m *QueryAllVestingQueueRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryAllVestingQueueRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryAllVestingQueueRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryAllVestingQueueRequest proto.InternalMessageInfo + +func (m *QueryAllVestingQueueRequest) GetAuctionId() uint64 { + if m != nil { + return m.AuctionId + } + return 0 +} + +func (m *QueryAllVestingQueueRequest) GetPagination() *query.PageRequest { + if m != nil { + return m.Pagination + } + return nil +} + +// QueryAllVestingQueueResponse is response type for the Query/Vestings RPC method. +type QueryAllVestingQueueResponse struct { + // vestings specifies the existing vestings + VestingQueue []VestingQueue `protobuf:"bytes,1,rep,name=vestingQueue,proto3" json:"vestingQueue"` + Pagination *query.PageResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (m *QueryAllVestingQueueResponse) Reset() { *m = QueryAllVestingQueueResponse{} } +func (m *QueryAllVestingQueueResponse) String() string { return proto.CompactTextString(m) } +func (*QueryAllVestingQueueResponse) ProtoMessage() {} +func (*QueryAllVestingQueueResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_9275eda8d24f0a10, []int{15} +} +func (m *QueryAllVestingQueueResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryAllVestingQueueResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryAllVestingQueueResponse.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 *QueryAllVestingQueueResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryAllVestingQueueResponse.Merge(m, src) +} +func (m *QueryAllVestingQueueResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryAllVestingQueueResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryAllVestingQueueResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryAllVestingQueueResponse proto.InternalMessageInfo + +func (m *QueryAllVestingQueueResponse) GetVestingQueue() []VestingQueue { + if m != nil { + return m.VestingQueue + } + return nil +} + +func (m *QueryAllVestingQueueResponse) GetPagination() *query.PageResponse { + if m != nil { + return m.Pagination + } + return nil +} + +func init() { + proto.RegisterType((*QueryParamsRequest)(nil), "modules.fundraising.v1.QueryParamsRequest") + proto.RegisterType((*QueryParamsResponse)(nil), "modules.fundraising.v1.QueryParamsResponse") + proto.RegisterType((*QueryAllAuctionRequest)(nil), "modules.fundraising.v1.QueryAllAuctionRequest") + proto.RegisterType((*QueryAllAuctionResponse)(nil), "modules.fundraising.v1.QueryAllAuctionResponse") + proto.RegisterType((*QueryGetAuctionRequest)(nil), "modules.fundraising.v1.QueryGetAuctionRequest") + proto.RegisterType((*QueryGetAuctionResponse)(nil), "modules.fundraising.v1.QueryGetAuctionResponse") + proto.RegisterType((*QueryAllAllowedBidderRequest)(nil), "modules.fundraising.v1.QueryAllAllowedBidderRequest") + proto.RegisterType((*QueryAllAllowedBidderResponse)(nil), "modules.fundraising.v1.QueryAllAllowedBidderResponse") + proto.RegisterType((*QueryGetAllowedBidderRequest)(nil), "modules.fundraising.v1.QueryGetAllowedBidderRequest") + proto.RegisterType((*QueryGetAllowedBidderResponse)(nil), "modules.fundraising.v1.QueryGetAllowedBidderResponse") + proto.RegisterType((*QueryGetBidRequest)(nil), "modules.fundraising.v1.QueryGetBidRequest") + proto.RegisterType((*QueryGetBidResponse)(nil), "modules.fundraising.v1.QueryGetBidResponse") + proto.RegisterType((*QueryAllBidRequest)(nil), "modules.fundraising.v1.QueryAllBidRequest") + proto.RegisterType((*QueryAllBidResponse)(nil), "modules.fundraising.v1.QueryAllBidResponse") + proto.RegisterType((*QueryAllVestingQueueRequest)(nil), "modules.fundraising.v1.QueryAllVestingQueueRequest") + proto.RegisterType((*QueryAllVestingQueueResponse)(nil), "modules.fundraising.v1.QueryAllVestingQueueResponse") +} + +func init() { + proto.RegisterFile("modules/fundraising/v1/query.proto", fileDescriptor_9275eda8d24f0a10) +} + +var fileDescriptor_9275eda8d24f0a10 = []byte{ + // 1023 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x57, 0xcf, 0x6f, 0x1b, 0x45, + 0x14, 0xce, 0x38, 0xa9, 0x8b, 0xc7, 0x05, 0xb5, 0x43, 0x08, 0xa9, 0xdb, 0x9a, 0x68, 0xdb, 0xd0, + 0x2a, 0x51, 0x76, 0x88, 0x13, 0x7e, 0x89, 0xa2, 0xca, 0x96, 0xc0, 0x24, 0x02, 0x94, 0xae, 0xc4, + 0x0f, 0x71, 0xb1, 0x66, 0xb3, 0xd3, 0xed, 0x48, 0xf6, 0xae, 0xe3, 0xd9, 0x35, 0x44, 0x55, 0x2f, + 0x08, 0x6e, 0x1c, 0x2a, 0xe5, 0xc8, 0xa5, 0x37, 0x7a, 0x44, 0x08, 0x89, 0x0b, 0x07, 0x8e, 0x85, + 0x53, 0x11, 0x17, 0x4e, 0x08, 0x25, 0x48, 0xfc, 0x1b, 0x68, 0x67, 0xde, 0x92, 0x5d, 0x3b, 0x9b, + 0xb5, 0x9d, 0xa8, 0x97, 0xd6, 0x3b, 0xfb, 0xde, 0x9b, 0xef, 0xfb, 0xde, 0x9b, 0xf9, 0x36, 0xd8, + 0xe8, 0xf8, 0x4e, 0xd8, 0xe6, 0x92, 0xde, 0x09, 0x3d, 0xa7, 0xc7, 0x84, 0x14, 0x9e, 0x4b, 0xfb, + 0xab, 0x74, 0x27, 0xe4, 0xbd, 0x5d, 0xb3, 0xdb, 0xf3, 0x03, 0x9f, 0xcc, 0x41, 0x8c, 0x99, 0x88, + 0x31, 0xfb, 0xab, 0x95, 0x0b, 0xac, 0x23, 0x3c, 0x9f, 0xaa, 0x7f, 0x75, 0x68, 0x65, 0x69, 0xdb, + 0x97, 0x1d, 0x5f, 0x52, 0x9b, 0x49, 0xae, 0x6b, 0xd0, 0xfe, 0xaa, 0xcd, 0x03, 0xb6, 0x4a, 0xbb, + 0xcc, 0x15, 0x1e, 0x0b, 0x84, 0xef, 0x41, 0xec, 0x45, 0x1d, 0xdb, 0x52, 0x4f, 0x54, 0x3f, 0xc0, + 0xab, 0x59, 0xd7, 0x77, 0x7d, 0xbd, 0x1e, 0xfd, 0x82, 0xd5, 0xcb, 0xae, 0xef, 0xbb, 0x6d, 0x4e, + 0x59, 0x57, 0x50, 0xe6, 0x79, 0x7e, 0xa0, 0xaa, 0xc5, 0x39, 0x17, 0xe1, 0xad, 0x7a, 0xb2, 0xc3, + 0x3b, 0x94, 0x79, 0x40, 0xa0, 0xb2, 0x9c, 0x41, 0x92, 0xb5, 0xdb, 0xfe, 0xe7, 0xdc, 0x69, 0xd9, + 0xc2, 0x71, 0x78, 0x0f, 0x82, 0xaf, 0x65, 0x05, 0x87, 0xdb, 0x09, 0xf0, 0x0b, 0x19, 0x51, 0xb6, + 0x70, 0x20, 0xe2, 0x6a, 0x46, 0x44, 0x97, 0xf5, 0x58, 0x27, 0x06, 0xbd, 0x94, 0x11, 0xd4, 0xe7, + 0x32, 0x10, 0x9e, 0xdb, 0xda, 0x09, 0x79, 0xc8, 0x75, 0xac, 0x31, 0x8b, 0xc9, 0xed, 0x48, 0xd1, + 0x2d, 0x55, 0xc0, 0xe2, 0x3b, 0x21, 0x97, 0x81, 0xf1, 0x29, 0x7e, 0x3e, 0xb5, 0x2a, 0xbb, 0xbe, + 0x27, 0x39, 0xa9, 0xe3, 0xa2, 0xde, 0x68, 0x1e, 0x2d, 0xa0, 0x1b, 0xe5, 0x5a, 0xd5, 0x3c, 0xba, + 0x89, 0xa6, 0xce, 0x6b, 0x94, 0x1e, 0xff, 0xf5, 0xd2, 0xd4, 0xa3, 0x7f, 0xbf, 0x5f, 0x42, 0x16, + 0x24, 0x1a, 0xdf, 0x20, 0x3c, 0xa7, 0x4a, 0xd7, 0xdb, 0xed, 0xba, 0x26, 0x0f, 0x9b, 0x92, 0x39, + 0x5c, 0x94, 0x01, 0x0b, 0x42, 0x5d, 0xbd, 0x64, 0xc1, 0x13, 0x21, 0x78, 0x26, 0xd8, 0xed, 0xf2, + 0xf9, 0x82, 0x5a, 0x55, 0xbf, 0xc9, 0xbb, 0x18, 0x1f, 0xb6, 0x7e, 0x7e, 0x5a, 0xa1, 0x79, 0xd9, + 0x84, 0x76, 0x47, 0x73, 0x62, 0xea, 0x59, 0x83, 0x39, 0x31, 0xb7, 0x98, 0xcb, 0x61, 0x1f, 0x2b, + 0x91, 0x69, 0x3c, 0x44, 0xf8, 0xc5, 0x21, 0x38, 0xc0, 0xf6, 0x26, 0x3e, 0x0b, 0xed, 0x99, 0x47, + 0x0b, 0xd3, 0x37, 0xca, 0xb5, 0x59, 0x53, 0x4f, 0x83, 0x19, 0x4f, 0x83, 0x59, 0xf7, 0x76, 0x1b, + 0xe7, 0x7e, 0xfb, 0x71, 0xe5, 0x19, 0xc8, 0xdd, 0xb0, 0xe2, 0x14, 0xd2, 0x4c, 0x21, 0x2c, 0x28, + 0x84, 0xd7, 0x73, 0x11, 0xea, 0xad, 0x53, 0x10, 0x5f, 0x07, 0xc1, 0x9a, 0x3c, 0x18, 0x10, 0xec, + 0x0a, 0xc6, 0xb0, 0x5b, 0x4b, 0x38, 0x4a, 0xb4, 0x19, 0xab, 0x04, 0x2b, 0x1b, 0x8e, 0xf1, 0x09, + 0x50, 0x4b, 0x26, 0x1e, 0x45, 0x0d, 0x8d, 0x49, 0xcd, 0xf8, 0x1a, 0xe1, 0xcb, 0xff, 0x8b, 0xa6, + 0xa7, 0xbd, 0xa1, 0x86, 0x7d, 0x34, 0x60, 0x03, 0xcd, 0x2b, 0x4c, 0xdc, 0xbc, 0x9f, 0x11, 0xbe, + 0x92, 0x81, 0x03, 0x78, 0x5a, 0xf8, 0xb9, 0xf4, 0x71, 0x84, 0x4e, 0x2e, 0x66, 0x0d, 0x6e, 0xaa, + 0x4c, 0x63, 0x26, 0x9a, 0x5f, 0xeb, 0x59, 0x96, 0x5c, 0x3c, 0xbd, 0xc6, 0x7e, 0x04, 0x2a, 0x46, + 0xfd, 0x99, 0x40, 0xc5, 0x39, 0x5c, 0x04, 0x4e, 0xfa, 0x60, 0xc0, 0x93, 0x21, 0x41, 0x94, 0xe1, + 0xb2, 0xc7, 0x88, 0x82, 0x4e, 0x26, 0x8a, 0xb1, 0x09, 0xd7, 0x48, 0x93, 0x07, 0x0d, 0xe1, 0x8c, + 0xc8, 0xe0, 0x05, 0xc5, 0x20, 0x7a, 0x55, 0x50, 0xaf, 0xce, 0xd8, 0xc2, 0xd9, 0x70, 0x8c, 0x4d, + 0xb8, 0x7c, 0xe2, 0x5a, 0x00, 0x7b, 0x0d, 0x4f, 0xdb, 0x50, 0xa5, 0x5c, 0xbb, 0x94, 0x85, 0xb5, + 0x21, 0x1c, 0x40, 0x18, 0x45, 0x1b, 0x3f, 0x20, 0x00, 0x56, 0x6f, 0xb7, 0x47, 0x07, 0x96, 0x21, + 0x6d, 0x94, 0x26, 0x64, 0xab, 0xc3, 0x82, 0xed, 0xbb, 0xdc, 0x51, 0xb7, 0x4e, 0xc9, 0x2a, 0x09, + 0xf9, 0x81, 0x5e, 0x18, 0x98, 0xeb, 0x99, 0x89, 0xe7, 0x7a, 0x0f, 0x81, 0x02, 0x31, 0xe8, 0x41, + 0x05, 0xa6, 0x47, 0x57, 0xe0, 0xf4, 0xc6, 0xf5, 0x2b, 0x84, 0x2f, 0xc5, 0xa8, 0x3e, 0xd6, 0x4e, + 0x72, 0x3b, 0x32, 0x92, 0xa7, 0x7c, 0xe8, 0x7f, 0x4a, 0x5c, 0x3e, 0x69, 0x18, 0xa0, 0xd2, 0x87, + 0xf8, 0x5c, 0x3f, 0xb1, 0x0e, 0x72, 0x5d, 0xcb, 0x92, 0x2b, 0x59, 0x03, 0x74, 0x4b, 0xe5, 0x9f, + 0x9a, 0x80, 0xb5, 0xbd, 0x32, 0x3e, 0xa3, 0x90, 0x93, 0x07, 0x08, 0x17, 0xb5, 0x45, 0x92, 0xa5, + 0x2c, 0x5c, 0xc3, 0xae, 0x5c, 0x59, 0x1e, 0x29, 0x56, 0xef, 0x6c, 0xac, 0x7c, 0xf9, 0xc7, 0x3f, + 0x7b, 0x85, 0xeb, 0x64, 0x91, 0x0a, 0xd7, 0x13, 0x01, 0xa7, 0xc7, 0x7e, 0x39, 0x90, 0x6f, 0x11, + 0x2e, 0xbf, 0x2f, 0x64, 0xec, 0x14, 0xc4, 0x3c, 0x76, 0xaf, 0x21, 0xf3, 0xae, 0xd0, 0x91, 0xe3, + 0x01, 0xdf, 0xb2, 0xc2, 0xb7, 0x48, 0xae, 0x1e, 0x87, 0x2f, 0x36, 0xd3, 0xef, 0x10, 0xc6, 0x87, + 0x36, 0x96, 0x03, 0x6e, 0xc8, 0x28, 0x73, 0xc0, 0x0d, 0xfb, 0xa3, 0xf1, 0x86, 0x02, 0x57, 0x23, + 0xaf, 0x8c, 0x00, 0x8e, 0xde, 0x3b, 0x1c, 0xfb, 0xfb, 0xe4, 0x57, 0x84, 0x2f, 0x28, 0x1d, 0x53, + 0x9e, 0xb1, 0x9e, 0xab, 0xce, 0x11, 0x06, 0x50, 0x79, 0x75, 0xcc, 0x2c, 0x00, 0xdf, 0x54, 0xe0, + 0xeb, 0xe4, 0xd6, 0xb8, 0xe0, 0x07, 0x3e, 0x5d, 0xc9, 0xef, 0x08, 0x9f, 0x1f, 0x74, 0x91, 0x1c, + 0x2a, 0x19, 0x5e, 0x96, 0x43, 0x25, 0xcb, 0xaa, 0x8c, 0x2d, 0x45, 0x65, 0x93, 0xbc, 0x77, 0x42, + 0x2a, 0xf4, 0x9e, 0xfe, 0xff, 0x3e, 0x79, 0x88, 0xf0, 0xd9, 0xa8, 0x3f, 0x0d, 0xe1, 0xe4, 0x9c, + 0xbd, 0x94, 0x63, 0xe4, 0x9c, 0xbd, 0xf4, 0x45, 0x6d, 0xdc, 0x54, 0xb0, 0x5f, 0x23, 0xeb, 0x63, + 0xc3, 0x8e, 0x6e, 0xec, 0x47, 0x08, 0x17, 0xb5, 0xf7, 0xe5, 0x20, 0x4c, 0x99, 0x6d, 0x0e, 0xc2, + 0xb4, 0x99, 0x1a, 0xef, 0x28, 0x84, 0xb7, 0xc8, 0xdb, 0x93, 0x20, 0x54, 0x6a, 0xaa, 0x69, 0xff, + 0x05, 0xe1, 0xf3, 0x91, 0x9a, 0xc9, 0x4b, 0x94, 0xac, 0xe5, 0x49, 0x75, 0x84, 0x7b, 0x54, 0xd6, + 0xc7, 0x4b, 0x02, 0x1a, 0x75, 0x45, 0xe3, 0x2d, 0xf2, 0xe6, 0xd8, 0x34, 0xe0, 0x8a, 0x97, 0x8d, + 0xe6, 0xe3, 0xfd, 0x2a, 0x7a, 0xb2, 0x5f, 0x45, 0x7f, 0xef, 0x57, 0xd1, 0x83, 0x83, 0xea, 0xd4, + 0x93, 0x83, 0xea, 0xd4, 0x9f, 0x07, 0xd5, 0xa9, 0xcf, 0x56, 0x5c, 0x11, 0xdc, 0x0d, 0x6d, 0x73, + 0xdb, 0xef, 0x0c, 0x96, 0xff, 0x22, 0xb5, 0x41, 0xf4, 0x17, 0x89, 0xb4, 0x8b, 0xea, 0xd3, 0x79, + 0xed, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xb5, 0x84, 0x11, 0x81, 0xfd, 0x0e, 0x00, 0x00, +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConn + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion4 + +// QueryClient is the client API for Query service. +// +// 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 { + // Parameters queries the parameters of the module. + Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) + // Queries a list of Auction items. + ListAuction(ctx context.Context, in *QueryAllAuctionRequest, opts ...grpc.CallOption) (*QueryAllAuctionResponse, error) + GetAuction(ctx context.Context, in *QueryGetAuctionRequest, opts ...grpc.CallOption) (*QueryGetAuctionResponse, error) + // Queries a list of AllowedBidder items. + ListAllowedBidder(ctx context.Context, in *QueryAllAllowedBidderRequest, opts ...grpc.CallOption) (*QueryAllAllowedBidderResponse, error) + GetAllowedBidder(ctx context.Context, in *QueryGetAllowedBidderRequest, opts ...grpc.CallOption) (*QueryGetAllowedBidderResponse, error) + // Queries a list of Bid items. + ListBid(ctx context.Context, in *QueryAllBidRequest, opts ...grpc.CallOption) (*QueryAllBidResponse, error) + GetBid(ctx context.Context, in *QueryGetBidRequest, opts ...grpc.CallOption) (*QueryGetBidResponse, error) + // Queries a list of VestingQueue items. + ListVestingQueue(ctx context.Context, in *QueryAllVestingQueueRequest, opts ...grpc.CallOption) (*QueryAllVestingQueueResponse, error) +} + +type queryClient struct { + cc grpc1.ClientConn +} + +func NewQueryClient(cc grpc1.ClientConn) QueryClient { + return &queryClient{cc} +} + +func (c *queryClient) Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) { + out := new(QueryParamsResponse) + err := c.cc.Invoke(ctx, "/modules.fundraising.v1.Query/Params", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) ListAuction(ctx context.Context, in *QueryAllAuctionRequest, opts ...grpc.CallOption) (*QueryAllAuctionResponse, error) { + out := new(QueryAllAuctionResponse) + err := c.cc.Invoke(ctx, "/modules.fundraising.v1.Query/ListAuction", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) GetAuction(ctx context.Context, in *QueryGetAuctionRequest, opts ...grpc.CallOption) (*QueryGetAuctionResponse, error) { + out := new(QueryGetAuctionResponse) + err := c.cc.Invoke(ctx, "/modules.fundraising.v1.Query/GetAuction", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) ListAllowedBidder(ctx context.Context, in *QueryAllAllowedBidderRequest, opts ...grpc.CallOption) (*QueryAllAllowedBidderResponse, error) { + out := new(QueryAllAllowedBidderResponse) + err := c.cc.Invoke(ctx, "/modules.fundraising.v1.Query/ListAllowedBidder", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) GetAllowedBidder(ctx context.Context, in *QueryGetAllowedBidderRequest, opts ...grpc.CallOption) (*QueryGetAllowedBidderResponse, error) { + out := new(QueryGetAllowedBidderResponse) + err := c.cc.Invoke(ctx, "/modules.fundraising.v1.Query/GetAllowedBidder", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) ListBid(ctx context.Context, in *QueryAllBidRequest, opts ...grpc.CallOption) (*QueryAllBidResponse, error) { + out := new(QueryAllBidResponse) + err := c.cc.Invoke(ctx, "/modules.fundraising.v1.Query/ListBid", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) GetBid(ctx context.Context, in *QueryGetBidRequest, opts ...grpc.CallOption) (*QueryGetBidResponse, error) { + out := new(QueryGetBidResponse) + err := c.cc.Invoke(ctx, "/modules.fundraising.v1.Query/GetBid", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) ListVestingQueue(ctx context.Context, in *QueryAllVestingQueueRequest, opts ...grpc.CallOption) (*QueryAllVestingQueueResponse, error) { + out := new(QueryAllVestingQueueResponse) + err := c.cc.Invoke(ctx, "/modules.fundraising.v1.Query/ListVestingQueue", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// QueryServer is the server API for Query service. +type QueryServer interface { + // Parameters queries the parameters of the module. + Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error) + // Queries a list of Auction items. + ListAuction(context.Context, *QueryAllAuctionRequest) (*QueryAllAuctionResponse, error) + GetAuction(context.Context, *QueryGetAuctionRequest) (*QueryGetAuctionResponse, error) + // Queries a list of AllowedBidder items. + ListAllowedBidder(context.Context, *QueryAllAllowedBidderRequest) (*QueryAllAllowedBidderResponse, error) + GetAllowedBidder(context.Context, *QueryGetAllowedBidderRequest) (*QueryGetAllowedBidderResponse, error) + // Queries a list of Bid items. + ListBid(context.Context, *QueryAllBidRequest) (*QueryAllBidResponse, error) + GetBid(context.Context, *QueryGetBidRequest) (*QueryGetBidResponse, error) + // Queries a list of VestingQueue items. + ListVestingQueue(context.Context, *QueryAllVestingQueueRequest) (*QueryAllVestingQueueResponse, error) +} + +// UnimplementedQueryServer can be embedded to have forward compatible implementations. +type UnimplementedQueryServer struct { +} + +func (*UnimplementedQueryServer) Params(ctx context.Context, req *QueryParamsRequest) (*QueryParamsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Params not implemented") +} +func (*UnimplementedQueryServer) ListAuction(ctx context.Context, req *QueryAllAuctionRequest) (*QueryAllAuctionResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListAuction not implemented") +} +func (*UnimplementedQueryServer) GetAuction(ctx context.Context, req *QueryGetAuctionRequest) (*QueryGetAuctionResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetAuction not implemented") +} +func (*UnimplementedQueryServer) ListAllowedBidder(ctx context.Context, req *QueryAllAllowedBidderRequest) (*QueryAllAllowedBidderResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListAllowedBidder not implemented") +} +func (*UnimplementedQueryServer) GetAllowedBidder(ctx context.Context, req *QueryGetAllowedBidderRequest) (*QueryGetAllowedBidderResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetAllowedBidder not implemented") +} +func (*UnimplementedQueryServer) ListBid(ctx context.Context, req *QueryAllBidRequest) (*QueryAllBidResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListBid not implemented") +} +func (*UnimplementedQueryServer) GetBid(ctx context.Context, req *QueryGetBidRequest) (*QueryGetBidResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetBid not implemented") +} +func (*UnimplementedQueryServer) ListVestingQueue(ctx context.Context, req *QueryAllVestingQueueRequest) (*QueryAllVestingQueueResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListVestingQueue not implemented") +} + +func RegisterQueryServer(s grpc1.Server, srv QueryServer) { + s.RegisterService(&_Query_serviceDesc, srv) +} + +func _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryParamsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).Params(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/modules.fundraising.v1.Query/Params", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Params(ctx, req.(*QueryParamsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_ListAuction_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryAllAuctionRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).ListAuction(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/modules.fundraising.v1.Query/ListAuction", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).ListAuction(ctx, req.(*QueryAllAuctionRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_GetAuction_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryGetAuctionRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).GetAuction(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/modules.fundraising.v1.Query/GetAuction", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).GetAuction(ctx, req.(*QueryGetAuctionRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_ListAllowedBidder_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryAllAllowedBidderRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).ListAllowedBidder(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/modules.fundraising.v1.Query/ListAllowedBidder", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).ListAllowedBidder(ctx, req.(*QueryAllAllowedBidderRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_GetAllowedBidder_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryGetAllowedBidderRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).GetAllowedBidder(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/modules.fundraising.v1.Query/GetAllowedBidder", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).GetAllowedBidder(ctx, req.(*QueryGetAllowedBidderRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_ListBid_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryAllBidRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).ListBid(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/modules.fundraising.v1.Query/ListBid", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).ListBid(ctx, req.(*QueryAllBidRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_GetBid_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryGetBidRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).GetBid(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/modules.fundraising.v1.Query/GetBid", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).GetBid(ctx, req.(*QueryGetBidRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_ListVestingQueue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryAllVestingQueueRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).ListVestingQueue(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/modules.fundraising.v1.Query/ListVestingQueue", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).ListVestingQueue(ctx, req.(*QueryAllVestingQueueRequest)) + } + return interceptor(ctx, in, info, handler) +} + +var _Query_serviceDesc = grpc.ServiceDesc{ + ServiceName: "modules.fundraising.v1.Query", + HandlerType: (*QueryServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Params", + Handler: _Query_Params_Handler, + }, + { + MethodName: "ListAuction", + Handler: _Query_ListAuction_Handler, + }, + { + MethodName: "GetAuction", + Handler: _Query_GetAuction_Handler, + }, + { + MethodName: "ListAllowedBidder", + Handler: _Query_ListAllowedBidder_Handler, + }, + { + MethodName: "GetAllowedBidder", + Handler: _Query_GetAllowedBidder_Handler, + }, + { + MethodName: "ListBid", + Handler: _Query_ListBid_Handler, + }, + { + MethodName: "GetBid", + Handler: _Query_GetBid_Handler, + }, + { + MethodName: "ListVestingQueue", + Handler: _Query_ListVestingQueue_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "modules/fundraising/v1/query.proto", +} + +func (m *QueryParamsRequest) 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 *QueryParamsRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryParamsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *QueryParamsResponse) 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 *QueryParamsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *QueryAllAuctionRequest) 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 *QueryAllAuctionRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryAllAuctionRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Pagination != nil { + { + size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + if len(m.Type) > 0 { + i -= len(m.Type) + copy(dAtA[i:], m.Type) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Type))) + i-- + dAtA[i] = 0x12 + } + if len(m.Status) > 0 { + i -= len(m.Status) + copy(dAtA[i:], m.Status) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Status))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryAllAuctionResponse) 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 *QueryAllAuctionResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryAllAuctionResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Pagination != nil { + { + size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.Auction) > 0 { + for iNdEx := len(m.Auction) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Auction[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *QueryGetAuctionRequest) 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 *QueryGetAuctionRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryGetAuctionRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.AuctionId != 0 { + i = encodeVarintQuery(dAtA, i, uint64(m.AuctionId)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *QueryGetAuctionResponse) 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 *QueryGetAuctionResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryGetAuctionResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Auction != nil { + { + size, err := m.Auction.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryAllAllowedBidderRequest) 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 *QueryAllAllowedBidderRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryAllAllowedBidderRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Pagination != nil { + { + size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if m.AuctionId != 0 { + i = encodeVarintQuery(dAtA, i, uint64(m.AuctionId)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *QueryAllAllowedBidderResponse) 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 *QueryAllAllowedBidderResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryAllAllowedBidderResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Pagination != nil { + { + size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.AllowedBidder) > 0 { + for iNdEx := len(m.AllowedBidder) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.AllowedBidder[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *QueryGetAllowedBidderRequest) 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 *QueryGetAllowedBidderRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryGetAllowedBidderRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Bidder) > 0 { + i -= len(m.Bidder) + copy(dAtA[i:], m.Bidder) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Bidder))) + i-- + dAtA[i] = 0x12 + } + if m.AuctionId != 0 { + i = encodeVarintQuery(dAtA, i, uint64(m.AuctionId)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *QueryGetAllowedBidderResponse) 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 *QueryGetAllowedBidderResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryGetAllowedBidderResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.AllowedBidder.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *QueryGetBidRequest) 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 *QueryGetBidRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryGetBidRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.BidId != 0 { + i = encodeVarintQuery(dAtA, i, uint64(m.BidId)) + i-- + dAtA[i] = 0x10 + } + if m.AuctionId != 0 { + i = encodeVarintQuery(dAtA, i, uint64(m.AuctionId)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *QueryGetBidResponse) 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 *QueryGetBidResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryGetBidResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Bid.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *QueryAllBidRequest) 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 *QueryAllBidRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryAllBidRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Pagination != nil { + { + size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + if len(m.IsMatched) > 0 { + i -= len(m.IsMatched) + copy(dAtA[i:], m.IsMatched) + i = encodeVarintQuery(dAtA, i, uint64(len(m.IsMatched))) + i-- + dAtA[i] = 0x1a + } + if len(m.Bidder) > 0 { + i -= len(m.Bidder) + copy(dAtA[i:], m.Bidder) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Bidder))) + i-- + dAtA[i] = 0x12 + } + if m.AuctionId != 0 { + i = encodeVarintQuery(dAtA, i, uint64(m.AuctionId)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *QueryAllBidResponse) 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 *QueryAllBidResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryAllBidResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Pagination != nil { + { + size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.Bid) > 0 { + for iNdEx := len(m.Bid) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Bid[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *QueryAllVestingQueueRequest) 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 *QueryAllVestingQueueRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryAllVestingQueueRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Pagination != nil { + { + size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if m.AuctionId != 0 { + i = encodeVarintQuery(dAtA, i, uint64(m.AuctionId)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *QueryAllVestingQueueResponse) 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 *QueryAllVestingQueueResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryAllVestingQueueResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Pagination != nil { + { + size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.VestingQueue) > 0 { + for iNdEx := len(m.VestingQueue) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.VestingQueue[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { + offset -= sovQuery(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *QueryParamsRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *QueryParamsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Params.Size() + n += 1 + l + sovQuery(uint64(l)) + return n +} + +func (m *QueryAllAuctionRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Status) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = len(m.Type) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + if m.Pagination != nil { + l = m.Pagination.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryAllAuctionResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Auction) > 0 { + for _, e := range m.Auction { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + if m.Pagination != nil { + l = m.Pagination.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryGetAuctionRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.AuctionId != 0 { + n += 1 + sovQuery(uint64(m.AuctionId)) + } + return n +} + +func (m *QueryGetAuctionResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Auction != nil { + l = m.Auction.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryAllAllowedBidderRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.AuctionId != 0 { + n += 1 + sovQuery(uint64(m.AuctionId)) + } + if m.Pagination != nil { + l = m.Pagination.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryAllAllowedBidderResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.AllowedBidder) > 0 { + for _, e := range m.AllowedBidder { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + if m.Pagination != nil { + l = m.Pagination.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryGetAllowedBidderRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.AuctionId != 0 { + n += 1 + sovQuery(uint64(m.AuctionId)) + } + l = len(m.Bidder) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryGetAllowedBidderResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.AllowedBidder.Size() + n += 1 + l + sovQuery(uint64(l)) + return n +} + +func (m *QueryGetBidRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.AuctionId != 0 { + n += 1 + sovQuery(uint64(m.AuctionId)) + } + if m.BidId != 0 { + n += 1 + sovQuery(uint64(m.BidId)) + } + return n +} + +func (m *QueryGetBidResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Bid.Size() + n += 1 + l + sovQuery(uint64(l)) + return n +} + +func (m *QueryAllBidRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.AuctionId != 0 { + n += 1 + sovQuery(uint64(m.AuctionId)) + } + l = len(m.Bidder) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = len(m.IsMatched) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + if m.Pagination != nil { + l = m.Pagination.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryAllBidResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Bid) > 0 { + for _, e := range m.Bid { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + if m.Pagination != nil { + l = m.Pagination.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryAllVestingQueueRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.AuctionId != 0 { + n += 1 + sovQuery(uint64(m.AuctionId)) + } + if m.Pagination != nil { + l = m.Pagination.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryAllVestingQueueResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.VestingQueue) > 0 { + for _, e := range m.VestingQueue { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + if m.Pagination != nil { + l = m.Pagination.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func sovQuery(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozQuery(x uint64) (n int) { + return sovQuery(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *QueryParamsRequest) 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: QueryParamsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryParamsRequest: 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 *QueryParamsResponse) 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: QueryParamsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + 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 *QueryAllAuctionRequest) 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: QueryAllAuctionRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryAllAuctionRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", 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.Status = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", 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.Type = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Pagination == nil { + m.Pagination = &query.PageRequest{} + } + if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + 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 *QueryAllAuctionResponse) 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: QueryAllAuctionResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryAllAuctionResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Auction", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Auction = append(m.Auction, &types.Any{}) + if err := m.Auction[len(m.Auction)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Pagination == nil { + m.Pagination = &query.PageResponse{} + } + if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + 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 *QueryGetAuctionRequest) 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: QueryGetAuctionRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryGetAuctionRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AuctionId", wireType) + } + m.AuctionId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.AuctionId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + 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 *QueryGetAuctionResponse) 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: QueryGetAuctionResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryGetAuctionResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Auction", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Auction == nil { + m.Auction = &types.Any{} + } + if err := m.Auction.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + 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 *QueryAllAllowedBidderRequest) 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: QueryAllAllowedBidderRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryAllAllowedBidderRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AuctionId", wireType) + } + m.AuctionId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.AuctionId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Pagination == nil { + m.Pagination = &query.PageRequest{} + } + if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + 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 *QueryAllAllowedBidderResponse) 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: QueryAllAllowedBidderResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryAllAllowedBidderResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AllowedBidder", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AllowedBidder = append(m.AllowedBidder, AllowedBidder{}) + if err := m.AllowedBidder[len(m.AllowedBidder)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Pagination == nil { + m.Pagination = &query.PageResponse{} + } + if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + 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 *QueryGetAllowedBidderRequest) 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: QueryGetAllowedBidderRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryGetAllowedBidderRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AuctionId", wireType) + } + m.AuctionId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.AuctionId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Bidder", 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.Bidder = 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 *QueryGetAllowedBidderResponse) 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: QueryGetAllowedBidderResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryGetAllowedBidderResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AllowedBidder", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.AllowedBidder.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + 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 *QueryGetBidRequest) 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: QueryGetBidRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryGetBidRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AuctionId", wireType) + } + m.AuctionId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.AuctionId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field BidId", wireType) + } + m.BidId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.BidId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + 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 *QueryGetBidResponse) 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: QueryGetBidResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryGetBidResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Bid", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Bid.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + 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 *QueryAllBidRequest) 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: QueryAllBidRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryAllBidRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AuctionId", wireType) + } + m.AuctionId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.AuctionId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Bidder", 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.Bidder = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field IsMatched", 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.IsMatched = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Pagination == nil { + m.Pagination = &query.PageRequest{} + } + if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + 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 *QueryAllBidResponse) 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: QueryAllBidResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryAllBidResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Bid", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Bid = append(m.Bid, Bid{}) + if err := m.Bid[len(m.Bid)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Pagination == nil { + m.Pagination = &query.PageResponse{} + } + if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + 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 *QueryAllVestingQueueRequest) 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: QueryAllVestingQueueRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryAllVestingQueueRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AuctionId", wireType) + } + m.AuctionId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.AuctionId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Pagination == nil { + m.Pagination = &query.PageRequest{} + } + if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + 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 *QueryAllVestingQueueResponse) 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: QueryAllVestingQueueResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryAllVestingQueueResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VestingQueue", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.VestingQueue = append(m.VestingQueue, VestingQueue{}) + if err := m.VestingQueue[len(m.VestingQueue)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Pagination == nil { + m.Pagination = &query.PageResponse{} + } + if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + 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 skipQuery(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowQuery + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowQuery + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowQuery + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthQuery + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupQuery + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthQuery + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthQuery = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowQuery = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupQuery = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/fundraising/types/query.pb.gw.go b/x/fundraising/types/query.pb.gw.go new file mode 100644 index 0000000..1029d90 --- /dev/null +++ b/x/fundraising/types/query.pb.gw.go @@ -0,0 +1,940 @@ +// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. +// source: modules/fundraising/v1/query.proto + +/* +Package types is a reverse proxy. + +It translates gRPC into RESTful JSON APIs. +*/ +package types + +import ( + "context" + "io" + "net/http" + + "github.com/golang/protobuf/descriptor" + "github.com/golang/protobuf/proto" + "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/grpc-ecosystem/grpc-gateway/utilities" + "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/metadata" + "google.golang.org/grpc/status" +) + +// Suppress "imported and not used" errors +var _ codes.Code +var _ io.Reader +var _ status.Status +var _ = runtime.String +var _ = utilities.NewDoubleArray +var _ = descriptor.ForMessage +var _ = metadata.Join + +func request_Query_Params_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryParamsRequest + var metadata runtime.ServerMetadata + + msg, err := client.Params(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_Params_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryParamsRequest + var metadata runtime.ServerMetadata + + msg, err := server.Params(ctx, &protoReq) + return msg, metadata, err + +} + +var ( + filter_Query_ListAuction_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} +) + +func request_Query_ListAuction_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryAllAuctionRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_ListAuction_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.ListAuction(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_ListAuction_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryAllAuctionRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_ListAuction_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.ListAuction(ctx, &protoReq) + return msg, metadata, err + +} + +func request_Query_GetAuction_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryGetAuctionRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["auction_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "auction_id") + } + + protoReq.AuctionId, err = runtime.Uint64(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "auction_id", err) + } + + msg, err := client.GetAuction(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_GetAuction_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryGetAuctionRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["auction_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "auction_id") + } + + protoReq.AuctionId, err = runtime.Uint64(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "auction_id", err) + } + + msg, err := server.GetAuction(ctx, &protoReq) + return msg, metadata, err + +} + +var ( + filter_Query_ListAllowedBidder_0 = &utilities.DoubleArray{Encoding: map[string]int{"auction_id": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} +) + +func request_Query_ListAllowedBidder_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryAllAllowedBidderRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["auction_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "auction_id") + } + + protoReq.AuctionId, err = runtime.Uint64(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "auction_id", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_ListAllowedBidder_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.ListAllowedBidder(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_ListAllowedBidder_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryAllAllowedBidderRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["auction_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "auction_id") + } + + protoReq.AuctionId, err = runtime.Uint64(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "auction_id", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_ListAllowedBidder_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.ListAllowedBidder(ctx, &protoReq) + return msg, metadata, err + +} + +func request_Query_GetAllowedBidder_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryGetAllowedBidderRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["auction_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "auction_id") + } + + protoReq.AuctionId, err = runtime.Uint64(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "auction_id", err) + } + + val, ok = pathParams["bidder"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "bidder") + } + + protoReq.Bidder, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "bidder", err) + } + + msg, err := client.GetAllowedBidder(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_GetAllowedBidder_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryGetAllowedBidderRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["auction_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "auction_id") + } + + protoReq.AuctionId, err = runtime.Uint64(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "auction_id", err) + } + + val, ok = pathParams["bidder"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "bidder") + } + + protoReq.Bidder, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "bidder", err) + } + + msg, err := server.GetAllowedBidder(ctx, &protoReq) + return msg, metadata, err + +} + +var ( + filter_Query_ListBid_0 = &utilities.DoubleArray{Encoding: map[string]int{"auction_id": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} +) + +func request_Query_ListBid_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryAllBidRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["auction_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "auction_id") + } + + protoReq.AuctionId, err = runtime.Uint64(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "auction_id", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_ListBid_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.ListBid(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_ListBid_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryAllBidRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["auction_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "auction_id") + } + + protoReq.AuctionId, err = runtime.Uint64(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "auction_id", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_ListBid_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.ListBid(ctx, &protoReq) + return msg, metadata, err + +} + +func request_Query_GetBid_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryGetBidRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["auction_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "auction_id") + } + + protoReq.AuctionId, err = runtime.Uint64(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "auction_id", err) + } + + val, ok = pathParams["bid_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "bid_id") + } + + protoReq.BidId, err = runtime.Uint64(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "bid_id", err) + } + + msg, err := client.GetBid(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_GetBid_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryGetBidRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["auction_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "auction_id") + } + + protoReq.AuctionId, err = runtime.Uint64(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "auction_id", err) + } + + val, ok = pathParams["bid_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "bid_id") + } + + protoReq.BidId, err = runtime.Uint64(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "bid_id", err) + } + + msg, err := server.GetBid(ctx, &protoReq) + return msg, metadata, err + +} + +var ( + filter_Query_ListVestingQueue_0 = &utilities.DoubleArray{Encoding: map[string]int{"auction_id": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} +) + +func request_Query_ListVestingQueue_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryAllVestingQueueRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["auction_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "auction_id") + } + + protoReq.AuctionId, err = runtime.Uint64(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "auction_id", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_ListVestingQueue_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.ListVestingQueue(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_ListVestingQueue_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryAllVestingQueueRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["auction_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "auction_id") + } + + protoReq.AuctionId, err = runtime.Uint64(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "auction_id", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_ListVestingQueue_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.ListVestingQueue(ctx, &protoReq) + return msg, metadata, err + +} + +// RegisterQueryHandlerServer registers the http handlers for service Query to "mux". +// UnaryRPC :call QueryServer directly. +// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. +// 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_Params_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_Params_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_Params_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_ListAuction_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_ListAuction_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_ListAuction_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_GetAuction_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_GetAuction_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_GetAuction_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_ListAllowedBidder_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_ListAllowedBidder_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_ListAllowedBidder_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_GetAllowedBidder_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_GetAllowedBidder_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_GetAllowedBidder_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_ListBid_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_ListBid_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_ListBid_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_GetBid_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_GetBid_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_GetBid_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_ListVestingQueue_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_ListVestingQueue_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_ListVestingQueue_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +// RegisterQueryHandlerFromEndpoint is same as RegisterQueryHandler but +// automatically dials to "endpoint" and closes the connection when "ctx" gets done. +func RegisterQueryHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { + conn, err := grpc.Dial(endpoint, opts...) + if err != nil { + return err + } + defer func() { + if err != nil { + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + return + } + go func() { + <-ctx.Done() + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + }() + }() + + return RegisterQueryHandler(ctx, mux, conn) +} + +// RegisterQueryHandler registers the http handlers for service Query to "mux". +// The handlers forward requests to the grpc endpoint over "conn". +func RegisterQueryHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { + return RegisterQueryHandlerClient(ctx, mux, NewQueryClient(conn)) +} + +// RegisterQueryHandlerClient registers the http handlers for service Query +// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "QueryClient". +// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "QueryClient" +// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in +// "QueryClient" to call the correct interceptors. +func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, client QueryClient) error { + + mux.Handle("GET", pattern_Query_Params_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_Params_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_Params_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_ListAuction_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_ListAuction_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_ListAuction_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_GetAuction_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_GetAuction_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_GetAuction_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_ListAllowedBidder_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_ListAllowedBidder_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_ListAllowedBidder_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_GetAllowedBidder_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_GetAllowedBidder_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_GetAllowedBidder_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_ListBid_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_ListBid_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_ListBid_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_GetBid_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_GetBid_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_GetBid_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_ListVestingQueue_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_ListVestingQueue_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_ListVestingQueue_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +var ( + pattern_Query_Params_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"ignite", "modules", "fundraising", "v1", "params"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Query_ListAuction_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"ignite", "modules", "fundraising", "auction"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Query_GetAuction_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"ignite", "modules", "fundraising", "auction", "auction_id"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Query_ListAllowedBidder_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5}, []string{"ignite", "modules", "fundraising", "auction", "auction_id", "allowed_bidder"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Query_GetAllowedBidder_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 1, 0, 4, 1, 5, 6}, []string{"ignite", "modules", "fundraising", "auction", "auction_id", "allowed_bidder", "bidder"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Query_ListBid_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5}, []string{"ignite", "modules", "fundraising", "auction", "auction_id", "bid"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Query_GetBid_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 1, 0, 4, 1, 5, 6}, []string{"ignite", "modules", "fundraising", "auction", "auction_id", "bid", "bid_id"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Query_ListVestingQueue_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5}, []string{"ignite", "modules", "fundraising", "auction", "auction_id", "vestings"}, "", runtime.AssumeColonVerbOpt(false))) +) + +var ( + forward_Query_Params_0 = runtime.ForwardResponseMessage + + forward_Query_ListAuction_0 = runtime.ForwardResponseMessage + + forward_Query_GetAuction_0 = runtime.ForwardResponseMessage + + forward_Query_ListAllowedBidder_0 = runtime.ForwardResponseMessage + + forward_Query_GetAllowedBidder_0 = runtime.ForwardResponseMessage + + forward_Query_ListBid_0 = runtime.ForwardResponseMessage + + forward_Query_GetBid_0 = runtime.ForwardResponseMessage + + forward_Query_ListVestingQueue_0 = runtime.ForwardResponseMessage +) diff --git a/x/fundraising/types/tx.pb.go b/x/fundraising/types/tx.pb.go new file mode 100644 index 0000000..0c440ec --- /dev/null +++ b/x/fundraising/types/tx.pb.go @@ -0,0 +1,3855 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: modules/fundraising/v1/tx.proto + +package types + +import ( + context "context" + cosmossdk_io_math "cosmossdk.io/math" + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + types "github.com/cosmos/cosmos-sdk/types" + _ "github.com/cosmos/cosmos-sdk/types/msgservice" + _ "github.com/cosmos/cosmos-sdk/types/tx/amino" + _ "github.com/cosmos/gogoproto/gogoproto" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" + github_com_cosmos_gogoproto_types "github.com/cosmos/gogoproto/types" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + _ "google.golang.org/protobuf/types/known/timestamppb" + io "io" + math "math" + math_bits "math/bits" + time "time" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf +var _ = time.Kitchen + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// MsgUpdateParams is the Msg/UpdateParams request type. +type MsgUpdateParams struct { + // authority is the address that controls the module (defaults to x/gov unless overwritten). + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` + // NOTE: All parameters must be supplied. + Params Params `protobuf:"bytes,2,opt,name=params,proto3" json:"params"` +} + +func (m *MsgUpdateParams) Reset() { *m = MsgUpdateParams{} } +func (m *MsgUpdateParams) String() string { return proto.CompactTextString(m) } +func (*MsgUpdateParams) ProtoMessage() {} +func (*MsgUpdateParams) Descriptor() ([]byte, []int) { + return fileDescriptor_36fcfd6055f7d49f, []int{0} +} +func (m *MsgUpdateParams) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgUpdateParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgUpdateParams.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 *MsgUpdateParams) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUpdateParams.Merge(m, src) +} +func (m *MsgUpdateParams) XXX_Size() int { + return m.Size() +} +func (m *MsgUpdateParams) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUpdateParams.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgUpdateParams proto.InternalMessageInfo + +func (m *MsgUpdateParams) GetAuthority() string { + if m != nil { + return m.Authority + } + return "" +} + +func (m *MsgUpdateParams) GetParams() Params { + if m != nil { + return m.Params + } + return Params{} +} + +// MsgUpdateParamsResponse defines the response structure for executing a +// MsgUpdateParams message. +type MsgUpdateParamsResponse struct { +} + +func (m *MsgUpdateParamsResponse) Reset() { *m = MsgUpdateParamsResponse{} } +func (m *MsgUpdateParamsResponse) String() string { return proto.CompactTextString(m) } +func (*MsgUpdateParamsResponse) ProtoMessage() {} +func (*MsgUpdateParamsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_36fcfd6055f7d49f, []int{1} +} +func (m *MsgUpdateParamsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgUpdateParamsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgUpdateParamsResponse.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 *MsgUpdateParamsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUpdateParamsResponse.Merge(m, src) +} +func (m *MsgUpdateParamsResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgUpdateParamsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUpdateParamsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgUpdateParamsResponse proto.InternalMessageInfo + +// MsgCreateFixedPriceAuction defines a SDK message for creating a fixed price +// auction. +type MsgCreateFixedPriceAuction struct { + // auctioneer specifies the bech32-encoded address that creates the auction + Auctioneer string `protobuf:"bytes,1,opt,name=auctioneer,proto3" json:"auctioneer,omitempty"` + // start_price specifies the starting price of the auction + StartPrice cosmossdk_io_math.LegacyDec `protobuf:"bytes,2,opt,name=start_price,json=startPrice,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"start_price"` + // selling_coin specifies the selling coin for the auction + SellingCoin types.Coin `protobuf:"bytes,3,opt,name=selling_coin,json=sellingCoin,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coin" json:"selling_coin"` + // paying_coin_denom specifies the paying coin denom that bidders use to bid + // for + PayingCoinDenom string `protobuf:"bytes,4,opt,name=paying_coin_denom,json=payingCoinDenom,proto3" json:"paying_coin_denom,omitempty"` + // vesting_schedules specifies the vesting schedules for the auction + VestingSchedules []VestingSchedule `protobuf:"bytes,5,rep,name=vesting_schedules,json=vestingSchedules,proto3" json:"vesting_schedules"` + // start_time specifies the start time of the plan + StartTime time.Time `protobuf:"bytes,6,opt,name=start_time,json=startTime,proto3,stdtime" json:"start_time"` + // end_time specifies the end time of the plan + EndTime time.Time `protobuf:"bytes,7,opt,name=end_time,json=endTime,proto3,stdtime" json:"end_time"` +} + +func (m *MsgCreateFixedPriceAuction) Reset() { *m = MsgCreateFixedPriceAuction{} } +func (m *MsgCreateFixedPriceAuction) String() string { return proto.CompactTextString(m) } +func (*MsgCreateFixedPriceAuction) ProtoMessage() {} +func (*MsgCreateFixedPriceAuction) Descriptor() ([]byte, []int) { + return fileDescriptor_36fcfd6055f7d49f, []int{2} +} +func (m *MsgCreateFixedPriceAuction) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgCreateFixedPriceAuction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgCreateFixedPriceAuction.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 *MsgCreateFixedPriceAuction) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgCreateFixedPriceAuction.Merge(m, src) +} +func (m *MsgCreateFixedPriceAuction) XXX_Size() int { + return m.Size() +} +func (m *MsgCreateFixedPriceAuction) XXX_DiscardUnknown() { + xxx_messageInfo_MsgCreateFixedPriceAuction.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgCreateFixedPriceAuction proto.InternalMessageInfo + +func (m *MsgCreateFixedPriceAuction) GetAuctioneer() string { + if m != nil { + return m.Auctioneer + } + return "" +} + +func (m *MsgCreateFixedPriceAuction) GetSellingCoin() types.Coin { + if m != nil { + return m.SellingCoin + } + return types.Coin{} +} + +func (m *MsgCreateFixedPriceAuction) GetPayingCoinDenom() string { + if m != nil { + return m.PayingCoinDenom + } + return "" +} + +func (m *MsgCreateFixedPriceAuction) GetVestingSchedules() []VestingSchedule { + if m != nil { + return m.VestingSchedules + } + return nil +} + +func (m *MsgCreateFixedPriceAuction) GetStartTime() time.Time { + if m != nil { + return m.StartTime + } + return time.Time{} +} + +func (m *MsgCreateFixedPriceAuction) GetEndTime() time.Time { + if m != nil { + return m.EndTime + } + return time.Time{} +} + +// MsgCreateFixedPriceAuctionResponse defines the +// Msg/MsgCreateFixedPriceAuctionResponse response type. +type MsgCreateFixedPriceAuctionResponse struct { +} + +func (m *MsgCreateFixedPriceAuctionResponse) Reset() { *m = MsgCreateFixedPriceAuctionResponse{} } +func (m *MsgCreateFixedPriceAuctionResponse) String() string { return proto.CompactTextString(m) } +func (*MsgCreateFixedPriceAuctionResponse) ProtoMessage() {} +func (*MsgCreateFixedPriceAuctionResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_36fcfd6055f7d49f, []int{3} +} +func (m *MsgCreateFixedPriceAuctionResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgCreateFixedPriceAuctionResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgCreateFixedPriceAuctionResponse.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 *MsgCreateFixedPriceAuctionResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgCreateFixedPriceAuctionResponse.Merge(m, src) +} +func (m *MsgCreateFixedPriceAuctionResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgCreateFixedPriceAuctionResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgCreateFixedPriceAuctionResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgCreateFixedPriceAuctionResponse proto.InternalMessageInfo + +// MsgCreateBatchAuction defines a SDK message for creating an batch +// auction. +// +// See: +// https://github.com/ignite/modules/tree/main/x/fundraising/spec/04_messages.md +type MsgCreateBatchAuction struct { + // auctioneer specifies the bech32-encoded address that creates the auction + Auctioneer string `protobuf:"bytes,1,opt,name=auctioneer,proto3" json:"auctioneer,omitempty"` + // start_price specifies the starting price of the auction + StartPrice cosmossdk_io_math.LegacyDec `protobuf:"bytes,2,opt,name=start_price,json=startPrice,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"start_price"` + // min_bid_price specifies the minibum bid price + MinBidPrice cosmossdk_io_math.LegacyDec `protobuf:"bytes,3,opt,name=min_bid_price,json=minBidPrice,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"min_bid_price"` + // selling_coin specifies the selling coin for the auction + SellingCoin types.Coin `protobuf:"bytes,4,opt,name=selling_coin,json=sellingCoin,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coin" json:"selling_coin"` + // paying_coin_denom specifies the paying coin denom that bidders use to bid + // for + PayingCoinDenom string `protobuf:"bytes,5,opt,name=paying_coin_denom,json=payingCoinDenom,proto3" json:"paying_coin_denom,omitempty"` + // vesting_schedules specifies the vesting schedules for the auction + VestingSchedules []VestingSchedule `protobuf:"bytes,6,rep,name=vesting_schedules,json=vestingSchedules,proto3" json:"vesting_schedules"` + // maximum_extended_round specifies the maximum number of extended rounds for + // the auction + MaxExtendedRound uint32 `protobuf:"varint,7,opt,name=max_extended_round,json=maxExtendedRound,proto3" json:"max_extended_round,omitempty"` + // extended_round_rate specifies the rate that decides if the auction needs + // another round + ExtendedRoundRate cosmossdk_io_math.LegacyDec `protobuf:"bytes,8,opt,name=extended_round_rate,json=extendedRoundRate,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"extended_round_rate"` + // start_time specifies the start time of the plan + StartTime time.Time `protobuf:"bytes,9,opt,name=start_time,json=startTime,proto3,stdtime" json:"start_time"` + // end_time specifies the end time of the plan + EndTime time.Time `protobuf:"bytes,10,opt,name=end_time,json=endTime,proto3,stdtime" json:"end_time"` +} + +func (m *MsgCreateBatchAuction) Reset() { *m = MsgCreateBatchAuction{} } +func (m *MsgCreateBatchAuction) String() string { return proto.CompactTextString(m) } +func (*MsgCreateBatchAuction) ProtoMessage() {} +func (*MsgCreateBatchAuction) Descriptor() ([]byte, []int) { + return fileDescriptor_36fcfd6055f7d49f, []int{4} +} +func (m *MsgCreateBatchAuction) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgCreateBatchAuction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgCreateBatchAuction.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 *MsgCreateBatchAuction) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgCreateBatchAuction.Merge(m, src) +} +func (m *MsgCreateBatchAuction) XXX_Size() int { + return m.Size() +} +func (m *MsgCreateBatchAuction) XXX_DiscardUnknown() { + xxx_messageInfo_MsgCreateBatchAuction.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgCreateBatchAuction proto.InternalMessageInfo + +func (m *MsgCreateBatchAuction) GetAuctioneer() string { + if m != nil { + return m.Auctioneer + } + return "" +} + +func (m *MsgCreateBatchAuction) GetSellingCoin() types.Coin { + if m != nil { + return m.SellingCoin + } + return types.Coin{} +} + +func (m *MsgCreateBatchAuction) GetPayingCoinDenom() string { + if m != nil { + return m.PayingCoinDenom + } + return "" +} + +func (m *MsgCreateBatchAuction) GetVestingSchedules() []VestingSchedule { + if m != nil { + return m.VestingSchedules + } + return nil +} + +func (m *MsgCreateBatchAuction) GetMaxExtendedRound() uint32 { + if m != nil { + return m.MaxExtendedRound + } + return 0 +} + +func (m *MsgCreateBatchAuction) GetStartTime() time.Time { + if m != nil { + return m.StartTime + } + return time.Time{} +} + +func (m *MsgCreateBatchAuction) GetEndTime() time.Time { + if m != nil { + return m.EndTime + } + return time.Time{} +} + +// MsgCreateBatchAuctionResponse defines the +// Msg/MsgCreateBatchAuctionResponse response type. +type MsgCreateBatchAuctionResponse struct { +} + +func (m *MsgCreateBatchAuctionResponse) Reset() { *m = MsgCreateBatchAuctionResponse{} } +func (m *MsgCreateBatchAuctionResponse) String() string { return proto.CompactTextString(m) } +func (*MsgCreateBatchAuctionResponse) ProtoMessage() {} +func (*MsgCreateBatchAuctionResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_36fcfd6055f7d49f, []int{5} +} +func (m *MsgCreateBatchAuctionResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgCreateBatchAuctionResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgCreateBatchAuctionResponse.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 *MsgCreateBatchAuctionResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgCreateBatchAuctionResponse.Merge(m, src) +} +func (m *MsgCreateBatchAuctionResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgCreateBatchAuctionResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgCreateBatchAuctionResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgCreateBatchAuctionResponse proto.InternalMessageInfo + +// MsgCancelAuction defines a SDK message for cancelling the auction. +// Cancelling is only allowed when the auction hasn't started yet. +type MsgCancelAuction struct { + // auctioneer specifies the bech32-encoded address that is in charge of the + // auction + Auctioneer string `protobuf:"bytes,1,opt,name=auctioneer,proto3" json:"auctioneer,omitempty"` + // auction_id specifies the auction id + AuctionId uint64 `protobuf:"varint,2,opt,name=auction_id,json=auctionId,proto3" json:"auction_id,omitempty"` +} + +func (m *MsgCancelAuction) Reset() { *m = MsgCancelAuction{} } +func (m *MsgCancelAuction) String() string { return proto.CompactTextString(m) } +func (*MsgCancelAuction) ProtoMessage() {} +func (*MsgCancelAuction) Descriptor() ([]byte, []int) { + return fileDescriptor_36fcfd6055f7d49f, []int{6} +} +func (m *MsgCancelAuction) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgCancelAuction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgCancelAuction.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 *MsgCancelAuction) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgCancelAuction.Merge(m, src) +} +func (m *MsgCancelAuction) XXX_Size() int { + return m.Size() +} +func (m *MsgCancelAuction) XXX_DiscardUnknown() { + xxx_messageInfo_MsgCancelAuction.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgCancelAuction proto.InternalMessageInfo + +func (m *MsgCancelAuction) GetAuctioneer() string { + if m != nil { + return m.Auctioneer + } + return "" +} + +func (m *MsgCancelAuction) GetAuctionId() uint64 { + if m != nil { + return m.AuctionId + } + return 0 +} + +// MsgCancelAuctionResponse defines the Msg/MsgCancelAuctionResponse +// response type. +type MsgCancelAuctionResponse struct { +} + +func (m *MsgCancelAuctionResponse) Reset() { *m = MsgCancelAuctionResponse{} } +func (m *MsgCancelAuctionResponse) String() string { return proto.CompactTextString(m) } +func (*MsgCancelAuctionResponse) ProtoMessage() {} +func (*MsgCancelAuctionResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_36fcfd6055f7d49f, []int{7} +} +func (m *MsgCancelAuctionResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgCancelAuctionResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgCancelAuctionResponse.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 *MsgCancelAuctionResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgCancelAuctionResponse.Merge(m, src) +} +func (m *MsgCancelAuctionResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgCancelAuctionResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgCancelAuctionResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgCancelAuctionResponse proto.InternalMessageInfo + +// MsgPlaceBid defines a SDK message for placing a bid for the auction. +type MsgPlaceBid struct { + // auction_id specifies the auction id + AuctionId uint64 `protobuf:"varint,1,opt,name=auction_id,json=auctionId,proto3" json:"auction_id,omitempty"` + // bidder specifies the bech32-encoded address that bids for the auction + Bidder string `protobuf:"bytes,2,opt,name=bidder,proto3" json:"bidder,omitempty"` + // type specifies the bid type; type 1 is fixed price, 2 is how-much-worth, 3 + // is how-many-coins + BidType BidType `protobuf:"varint,3,opt,name=bid_type,json=bidType,proto3,enum=modules.fundraising.v1.BidType" json:"bid_type,omitempty"` + // price specifies the bid price. + // The bid price must be the start price for fixed price auction whereas + // the bide price can be any value that the bidder places. + Price cosmossdk_io_math.LegacyDec `protobuf:"bytes,4,opt,name=price,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"price"` + // coin specifies the paying amount of coin or the selling amount that the + // bidder bids + Coin types.Coin `protobuf:"bytes,5,opt,name=coin,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coin" json:"coin"` +} + +func (m *MsgPlaceBid) Reset() { *m = MsgPlaceBid{} } +func (m *MsgPlaceBid) String() string { return proto.CompactTextString(m) } +func (*MsgPlaceBid) ProtoMessage() {} +func (*MsgPlaceBid) Descriptor() ([]byte, []int) { + return fileDescriptor_36fcfd6055f7d49f, []int{8} +} +func (m *MsgPlaceBid) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgPlaceBid) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgPlaceBid.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 *MsgPlaceBid) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgPlaceBid.Merge(m, src) +} +func (m *MsgPlaceBid) XXX_Size() int { + return m.Size() +} +func (m *MsgPlaceBid) XXX_DiscardUnknown() { + xxx_messageInfo_MsgPlaceBid.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgPlaceBid proto.InternalMessageInfo + +func (m *MsgPlaceBid) GetAuctionId() uint64 { + if m != nil { + return m.AuctionId + } + return 0 +} + +func (m *MsgPlaceBid) GetBidder() string { + if m != nil { + return m.Bidder + } + return "" +} + +func (m *MsgPlaceBid) GetBidType() BidType { + if m != nil { + return m.BidType + } + return BidTypeNil +} + +func (m *MsgPlaceBid) GetCoin() types.Coin { + if m != nil { + return m.Coin + } + return types.Coin{} +} + +// MsgPlaceBidResponse defines the Msg/MsgPlaceBidResponse response type. +type MsgPlaceBidResponse struct { +} + +func (m *MsgPlaceBidResponse) Reset() { *m = MsgPlaceBidResponse{} } +func (m *MsgPlaceBidResponse) String() string { return proto.CompactTextString(m) } +func (*MsgPlaceBidResponse) ProtoMessage() {} +func (*MsgPlaceBidResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_36fcfd6055f7d49f, []int{9} +} +func (m *MsgPlaceBidResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgPlaceBidResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgPlaceBidResponse.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 *MsgPlaceBidResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgPlaceBidResponse.Merge(m, src) +} +func (m *MsgPlaceBidResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgPlaceBidResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgPlaceBidResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgPlaceBidResponse proto.InternalMessageInfo + +// MsgModifyBid defines a SDK message for modifying an existing bid for the +// auction. +type MsgModifyBid struct { + // auction_id specifies the auction id + AuctionId uint64 `protobuf:"varint,1,opt,name=auction_id,json=auctionId,proto3" json:"auction_id,omitempty"` + // bidder specifies the bech32-encoded address that bids for the auction + Bidder string `protobuf:"bytes,2,opt,name=bidder,proto3" json:"bidder,omitempty"` + // bid_id specifies the bid id + BidId uint64 `protobuf:"varint,3,opt,name=bid_id,json=bidId,proto3" json:"bid_id,omitempty"` + // price specifies the bid price. + // the bide price must be above or equal to the original value that the bidder + // placed. + Price cosmossdk_io_math.LegacyDec `protobuf:"bytes,4,opt,name=price,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"price"` + // coin specifies the paying amount of coin or the selling amount that the + // bidder bids + Coin types.Coin `protobuf:"bytes,5,opt,name=coin,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coin" json:"coin"` +} + +func (m *MsgModifyBid) Reset() { *m = MsgModifyBid{} } +func (m *MsgModifyBid) String() string { return proto.CompactTextString(m) } +func (*MsgModifyBid) ProtoMessage() {} +func (*MsgModifyBid) Descriptor() ([]byte, []int) { + return fileDescriptor_36fcfd6055f7d49f, []int{10} +} +func (m *MsgModifyBid) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgModifyBid) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgModifyBid.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 *MsgModifyBid) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgModifyBid.Merge(m, src) +} +func (m *MsgModifyBid) XXX_Size() int { + return m.Size() +} +func (m *MsgModifyBid) XXX_DiscardUnknown() { + xxx_messageInfo_MsgModifyBid.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgModifyBid proto.InternalMessageInfo + +func (m *MsgModifyBid) GetAuctionId() uint64 { + if m != nil { + return m.AuctionId + } + return 0 +} + +func (m *MsgModifyBid) GetBidder() string { + if m != nil { + return m.Bidder + } + return "" +} + +func (m *MsgModifyBid) GetBidId() uint64 { + if m != nil { + return m.BidId + } + return 0 +} + +func (m *MsgModifyBid) GetCoin() types.Coin { + if m != nil { + return m.Coin + } + return types.Coin{} +} + +// MsgModifyBidResponse defines the Msg/MsgModifyBidResponse response type. +type MsgModifyBidResponse struct { +} + +func (m *MsgModifyBidResponse) Reset() { *m = MsgModifyBidResponse{} } +func (m *MsgModifyBidResponse) String() string { return proto.CompactTextString(m) } +func (*MsgModifyBidResponse) ProtoMessage() {} +func (*MsgModifyBidResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_36fcfd6055f7d49f, []int{11} +} +func (m *MsgModifyBidResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgModifyBidResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgModifyBidResponse.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 *MsgModifyBidResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgModifyBidResponse.Merge(m, src) +} +func (m *MsgModifyBidResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgModifyBidResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgModifyBidResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgModifyBidResponse proto.InternalMessageInfo + +// MsgAddAllowedBidder defines a SDK message for adding an allowed bidder to the +// auction. +type MsgAddAllowedBidder struct { + // auction_id specifies the auction id + AuctionId uint64 `protobuf:"varint,1,opt,name=auction_id,json=auctionId,proto3" json:"auction_id,omitempty"` + // allowed_bidder specifies the bidder who is allowed to bid and their maximum + // bid amount + AllowedBidder AllowedBidder `protobuf:"bytes,2,opt,name=allowed_bidder,json=allowedBidder,proto3" json:"allowed_bidder"` +} + +func (m *MsgAddAllowedBidder) Reset() { *m = MsgAddAllowedBidder{} } +func (m *MsgAddAllowedBidder) String() string { return proto.CompactTextString(m) } +func (*MsgAddAllowedBidder) ProtoMessage() {} +func (*MsgAddAllowedBidder) Descriptor() ([]byte, []int) { + return fileDescriptor_36fcfd6055f7d49f, []int{12} +} +func (m *MsgAddAllowedBidder) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgAddAllowedBidder) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgAddAllowedBidder.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 *MsgAddAllowedBidder) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgAddAllowedBidder.Merge(m, src) +} +func (m *MsgAddAllowedBidder) XXX_Size() int { + return m.Size() +} +func (m *MsgAddAllowedBidder) XXX_DiscardUnknown() { + xxx_messageInfo_MsgAddAllowedBidder.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgAddAllowedBidder proto.InternalMessageInfo + +func (m *MsgAddAllowedBidder) GetAuctionId() uint64 { + if m != nil { + return m.AuctionId + } + return 0 +} + +func (m *MsgAddAllowedBidder) GetAllowedBidder() AllowedBidder { + if m != nil { + return m.AllowedBidder + } + return AllowedBidder{} +} + +// MsgAddAllowedBidderResponse defines the Msg/MsgAddAllowedBidderResponse response type. +type MsgAddAllowedBidderResponse struct { +} + +func (m *MsgAddAllowedBidderResponse) Reset() { *m = MsgAddAllowedBidderResponse{} } +func (m *MsgAddAllowedBidderResponse) String() string { return proto.CompactTextString(m) } +func (*MsgAddAllowedBidderResponse) ProtoMessage() {} +func (*MsgAddAllowedBidderResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_36fcfd6055f7d49f, []int{13} +} +func (m *MsgAddAllowedBidderResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgAddAllowedBidderResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgAddAllowedBidderResponse.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 *MsgAddAllowedBidderResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgAddAllowedBidderResponse.Merge(m, src) +} +func (m *MsgAddAllowedBidderResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgAddAllowedBidderResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgAddAllowedBidderResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgAddAllowedBidderResponse proto.InternalMessageInfo + +func init() { + proto.RegisterType((*MsgUpdateParams)(nil), "modules.fundraising.v1.MsgUpdateParams") + proto.RegisterType((*MsgUpdateParamsResponse)(nil), "modules.fundraising.v1.MsgUpdateParamsResponse") + proto.RegisterType((*MsgCreateFixedPriceAuction)(nil), "modules.fundraising.v1.MsgCreateFixedPriceAuction") + proto.RegisterType((*MsgCreateFixedPriceAuctionResponse)(nil), "modules.fundraising.v1.MsgCreateFixedPriceAuctionResponse") + proto.RegisterType((*MsgCreateBatchAuction)(nil), "modules.fundraising.v1.MsgCreateBatchAuction") + proto.RegisterType((*MsgCreateBatchAuctionResponse)(nil), "modules.fundraising.v1.MsgCreateBatchAuctionResponse") + proto.RegisterType((*MsgCancelAuction)(nil), "modules.fundraising.v1.MsgCancelAuction") + proto.RegisterType((*MsgCancelAuctionResponse)(nil), "modules.fundraising.v1.MsgCancelAuctionResponse") + proto.RegisterType((*MsgPlaceBid)(nil), "modules.fundraising.v1.MsgPlaceBid") + proto.RegisterType((*MsgPlaceBidResponse)(nil), "modules.fundraising.v1.MsgPlaceBidResponse") + proto.RegisterType((*MsgModifyBid)(nil), "modules.fundraising.v1.MsgModifyBid") + proto.RegisterType((*MsgModifyBidResponse)(nil), "modules.fundraising.v1.MsgModifyBidResponse") + proto.RegisterType((*MsgAddAllowedBidder)(nil), "modules.fundraising.v1.MsgAddAllowedBidder") + proto.RegisterType((*MsgAddAllowedBidderResponse)(nil), "modules.fundraising.v1.MsgAddAllowedBidderResponse") +} + +func init() { proto.RegisterFile("modules/fundraising/v1/tx.proto", fileDescriptor_36fcfd6055f7d49f) } + +var fileDescriptor_36fcfd6055f7d49f = []byte{ + // 1158 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x57, 0x4d, 0x4f, 0x1b, 0x47, + 0x18, 0x66, 0x83, 0x6d, 0xf0, 0x18, 0x02, 0x2c, 0x5f, 0x66, 0x23, 0x6c, 0xe4, 0x50, 0x85, 0x92, + 0xb0, 0x5b, 0x88, 0xda, 0x83, 0x55, 0xa9, 0x62, 0x21, 0x8d, 0x22, 0xd5, 0x12, 0xda, 0x24, 0x3d, + 0x44, 0x95, 0xac, 0xf1, 0xce, 0xb0, 0x1e, 0xe1, 0xdd, 0xb5, 0x76, 0xc6, 0xd4, 0xee, 0xa9, 0x6a, + 0x4f, 0xed, 0x29, 0xc7, 0xaa, 0x52, 0xa5, 0x1e, 0xa3, 0x9e, 0x38, 0xa4, 0xff, 0x21, 0xaa, 0x7a, + 0x88, 0x72, 0xaa, 0x7a, 0x48, 0x2a, 0x38, 0xf0, 0x37, 0xaa, 0xf9, 0xf0, 0x62, 0x3b, 0x2c, 0x01, + 0x12, 0xb5, 0x55, 0x2f, 0xe0, 0x7d, 0xdf, 0xe7, 0xfd, 0x98, 0x67, 0xde, 0x67, 0x76, 0x16, 0x14, + 0xfd, 0x10, 0xb5, 0x1a, 0x98, 0x5a, 0xbb, 0xad, 0x00, 0x45, 0x90, 0x50, 0x12, 0x78, 0xd6, 0xfe, + 0xba, 0xc5, 0xda, 0x66, 0x33, 0x0a, 0x59, 0xa8, 0xcf, 0x29, 0x80, 0xd9, 0x03, 0x30, 0xf7, 0xd7, + 0x8d, 0x29, 0xe8, 0x93, 0x20, 0xb4, 0xc4, 0x5f, 0x09, 0x35, 0x0a, 0x6e, 0x48, 0xfd, 0x90, 0x5a, + 0x35, 0x48, 0xb1, 0xb5, 0xbf, 0x5e, 0xc3, 0x0c, 0xae, 0x5b, 0x6e, 0x48, 0x02, 0xe5, 0x9f, 0x57, + 0x7e, 0x9f, 0x8a, 0x12, 0x3e, 0xf5, 0x94, 0x63, 0x41, 0x3a, 0xaa, 0xe2, 0xc9, 0x92, 0x0f, 0xca, + 0x35, 0xe3, 0x85, 0x5e, 0x28, 0xed, 0xfc, 0x97, 0xb2, 0x16, 0xbd, 0x30, 0xf4, 0x1a, 0xd8, 0x12, + 0x4f, 0xb5, 0xd6, 0xae, 0xc5, 0x88, 0x8f, 0x29, 0x83, 0x7e, 0x53, 0x01, 0x6e, 0x26, 0x2c, 0x0b, + 0x36, 0x1a, 0xe1, 0x97, 0x18, 0x55, 0x6b, 0x04, 0x21, 0x1c, 0x29, 0xf0, 0x72, 0x12, 0xb8, 0xe5, + 0x32, 0x12, 0x76, 0xbb, 0x5f, 0x4a, 0x40, 0xd5, 0x08, 0x52, 0x88, 0xeb, 0x09, 0x88, 0x26, 0x8c, + 0xa0, 0xaf, 0x16, 0x54, 0xfa, 0x4d, 0x03, 0x13, 0x15, 0xea, 0x3d, 0x6c, 0x22, 0xc8, 0xf0, 0x8e, + 0xf0, 0xe8, 0x1f, 0x81, 0x2c, 0x6c, 0xb1, 0x7a, 0x18, 0x11, 0xd6, 0xc9, 0x6b, 0x4b, 0xda, 0x4a, + 0xd6, 0xce, 0xbf, 0x78, 0xba, 0x36, 0xa3, 0x98, 0xd8, 0x44, 0x28, 0xc2, 0x94, 0xde, 0x67, 0x11, + 0x09, 0x3c, 0xe7, 0x04, 0xaa, 0x6f, 0x82, 0x8c, 0xcc, 0x9d, 0xbf, 0xb2, 0xa4, 0xad, 0xe4, 0x36, + 0x0a, 0xe6, 0xe9, 0x9b, 0x65, 0xca, 0x3a, 0x76, 0xf6, 0xd9, 0xcb, 0xe2, 0xd0, 0x93, 0xe3, 0x83, + 0x55, 0xcd, 0x51, 0x81, 0xe5, 0x8f, 0xbf, 0x39, 0x3e, 0x58, 0x3d, 0x49, 0xf9, 0xfd, 0xf1, 0xc1, + 0xea, 0xfb, 0xbd, 0xed, 0xb7, 0xfb, 0x16, 0x33, 0xd0, 0x78, 0x69, 0x01, 0xcc, 0x0f, 0x98, 0x1c, + 0x4c, 0x9b, 0x61, 0x40, 0x71, 0xe9, 0xd7, 0x14, 0x30, 0x2a, 0xd4, 0xdb, 0x8a, 0x30, 0x64, 0xf8, + 0x53, 0xd2, 0xc6, 0x68, 0x27, 0x22, 0x2e, 0xde, 0x94, 0x9c, 0xea, 0x05, 0x00, 0x14, 0xbd, 0x18, + 0x47, 0x72, 0xcd, 0x4e, 0x8f, 0x45, 0x77, 0x40, 0x8e, 0x32, 0x18, 0xb1, 0x6a, 0x93, 0x47, 0x89, + 0xf5, 0x65, 0xed, 0x75, 0xde, 0xff, 0x9f, 0x2f, 0x8b, 0xd7, 0x24, 0x31, 0x14, 0xed, 0x99, 0x24, + 0xb4, 0x7c, 0xc8, 0xea, 0xe6, 0x67, 0xd8, 0x83, 0x6e, 0x67, 0x1b, 0xbb, 0x2f, 0x9e, 0xae, 0x01, + 0xc5, 0xdb, 0x36, 0x76, 0x1d, 0x20, 0xb2, 0x88, 0xd2, 0xfa, 0xb7, 0x1a, 0x18, 0xa3, 0xb8, 0xd1, + 0x20, 0x81, 0x57, 0xe5, 0x63, 0x99, 0x1f, 0x16, 0xac, 0x2d, 0x98, 0x0a, 0xcf, 0xe7, 0xd6, 0x54, + 0x73, 0x6b, 0x6e, 0x85, 0x24, 0xb0, 0xef, 0xf0, 0x82, 0xbf, 0xbc, 0x2a, 0xde, 0xf0, 0x08, 0xab, + 0xb7, 0x6a, 0xa6, 0x1b, 0xfa, 0x6a, 0x3c, 0xd5, 0xbf, 0x35, 0x8a, 0xf6, 0x2c, 0xd6, 0x69, 0x62, + 0x2a, 0x02, 0x7e, 0x3c, 0x3e, 0x58, 0x1d, 0x6b, 0x88, 0x56, 0x44, 0x05, 0x2a, 0xc9, 0xce, 0xa9, + 0xaa, 0x1c, 0xa2, 0xaf, 0x82, 0xa9, 0x26, 0xec, 0x74, 0x7b, 0xa8, 0x22, 0x1c, 0x84, 0x7e, 0x3e, + 0x25, 0x08, 0x98, 0x90, 0x0e, 0x0e, 0xdb, 0xe6, 0x66, 0xfd, 0x11, 0x98, 0xda, 0xc7, 0x94, 0x71, + 0x30, 0x75, 0xeb, 0x58, 0xec, 0x6d, 0x3e, 0xbd, 0x34, 0xbc, 0x92, 0xdb, 0xb8, 0x91, 0xb4, 0xd7, + 0x9f, 0xcb, 0x80, 0xfb, 0x0a, 0x6f, 0xa7, 0xf8, 0x1a, 0x9c, 0xc9, 0xfd, 0x7e, 0x33, 0xd5, 0xb7, + 0x80, 0xe4, 0xa6, 0xca, 0xb5, 0x93, 0xcf, 0x08, 0x2a, 0x0c, 0x53, 0x0a, 0xcb, 0xec, 0x0a, 0xcb, + 0x7c, 0xd0, 0x15, 0x96, 0x3d, 0xca, 0xf3, 0x3c, 0x7e, 0x55, 0xd4, 0x9c, 0xac, 0x88, 0xe3, 0x1e, + 0xfd, 0x13, 0x30, 0x8a, 0x03, 0x24, 0x53, 0x8c, 0x5c, 0x20, 0xc5, 0x08, 0x0e, 0x10, 0xb7, 0x97, + 0x27, 0xf8, 0xfc, 0xf5, 0x6c, 0x7c, 0x69, 0x19, 0x94, 0x92, 0xc7, 0x26, 0x9e, 0xae, 0x1f, 0x32, + 0x60, 0x36, 0x86, 0xd9, 0x90, 0xb9, 0xf5, 0x7f, 0x73, 0xb0, 0x1e, 0x82, 0x71, 0x9f, 0x04, 0xfc, + 0x50, 0x51, 0x59, 0x87, 0x2f, 0x9b, 0x35, 0xe7, 0x93, 0xc0, 0x26, 0x28, 0x61, 0x5e, 0x53, 0xff, + 0x99, 0x79, 0x4d, 0x5f, 0x60, 0x5e, 0x33, 0xef, 0x66, 0x5e, 0x6f, 0x01, 0xdd, 0x87, 0xed, 0x2a, + 0x6e, 0x33, 0x1c, 0x20, 0x8c, 0xaa, 0x51, 0xd8, 0x0a, 0x90, 0x18, 0xba, 0x71, 0x67, 0xd2, 0x87, + 0xed, 0x3b, 0xca, 0xe1, 0x70, 0xbb, 0x0e, 0xc1, 0x74, 0x3f, 0xb2, 0x1a, 0x41, 0x86, 0xf3, 0xa3, + 0x97, 0xdd, 0x98, 0x29, 0xdc, 0x9b, 0xde, 0x81, 0x0c, 0x0f, 0x08, 0x28, 0xfb, 0xf6, 0x02, 0x02, + 0xef, 0x44, 0x40, 0x45, 0xb0, 0x78, 0xaa, 0x32, 0x62, 0xed, 0xd4, 0xc0, 0x24, 0x07, 0xc0, 0xc0, + 0xc5, 0x8d, 0xf3, 0xaa, 0x66, 0x31, 0xf6, 0x57, 0x09, 0x12, 0xa2, 0x49, 0xf1, 0x17, 0x91, 0xb0, + 0xdc, 0x43, 0xaf, 0x37, 0x61, 0x80, 0xfc, 0x60, 0x8d, 0xb8, 0xfe, 0xef, 0x57, 0x40, 0xae, 0x42, + 0xbd, 0x9d, 0x06, 0x74, 0xb1, 0x4d, 0xd0, 0x40, 0x6e, 0x6d, 0x20, 0xb7, 0x3e, 0x07, 0x32, 0xf2, + 0x6d, 0x2d, 0xb5, 0xea, 0xa8, 0x27, 0xbd, 0x0c, 0x46, 0xb9, 0xe0, 0xf8, 0x30, 0x0b, 0xbd, 0x5d, + 0xdd, 0x28, 0x26, 0x8d, 0x98, 0x4d, 0xd0, 0x83, 0x4e, 0x13, 0x3b, 0x23, 0x35, 0xf9, 0x43, 0xbf, + 0x0b, 0xd2, 0x52, 0xa8, 0xa9, 0xcb, 0xce, 0x83, 0x8c, 0xd7, 0x19, 0x48, 0x09, 0x65, 0xa6, 0xff, + 0x21, 0x65, 0x8a, 0x6a, 0xe5, 0x1c, 0xa7, 0x5b, 0xf1, 0x50, 0x9a, 0x05, 0xd3, 0x3d, 0x6c, 0xc6, + 0x2c, 0x3f, 0xb9, 0x02, 0xc6, 0x2a, 0xd4, 0xab, 0x84, 0x88, 0xec, 0x76, 0xde, 0x82, 0xe6, 0x59, + 0x61, 0xe7, 0x21, 0xc3, 0x22, 0x24, 0x5d, 0x23, 0xe8, 0x1e, 0xfa, 0x5f, 0x31, 0x38, 0x07, 0x66, + 0x7a, 0x99, 0x8a, 0x29, 0xfc, 0x49, 0x13, 0xd4, 0x6e, 0x22, 0xb4, 0x29, 0xaf, 0x8d, 0xb6, 0xa4, + 0xe4, 0x0d, 0x4c, 0x3a, 0xe0, 0x6a, 0xff, 0x35, 0x53, 0xdd, 0xce, 0xde, 0x4b, 0x1a, 0xcf, 0xbe, + 0xec, 0xea, 0xfc, 0x1b, 0x87, 0xbd, 0xc6, 0xf2, 0x34, 0xef, 0x77, 0x20, 0x6d, 0x69, 0x11, 0x5c, + 0x3b, 0xa5, 0xbd, 0x6e, 0xfb, 0x1b, 0x3f, 0x67, 0xc0, 0x70, 0x85, 0x7a, 0x7a, 0x1d, 0x8c, 0xf5, + 0xdd, 0x36, 0x13, 0x4f, 0xe2, 0x81, 0xab, 0x9c, 0x61, 0x9d, 0x13, 0xd8, 0xad, 0xa8, 0x7f, 0xa7, + 0x81, 0xf9, 0xa4, 0x0b, 0xdf, 0xc6, 0x19, 0xc9, 0x12, 0x62, 0x8c, 0xf2, 0xc5, 0x63, 0xe2, 0x5e, + 0xbe, 0x02, 0xfa, 0x29, 0xb7, 0x83, 0xb5, 0x37, 0x66, 0xec, 0x85, 0x1b, 0x1f, 0x5e, 0x08, 0x1e, + 0xd7, 0xde, 0x03, 0xe3, 0xfd, 0xc7, 0xeb, 0xca, 0x59, 0x79, 0x7a, 0x91, 0xc6, 0x07, 0xe7, 0x45, + 0xc6, 0xc5, 0xbe, 0x00, 0xa3, 0xf1, 0x51, 0x7a, 0xfd, 0x8c, 0xe8, 0x2e, 0xc8, 0xb8, 0x79, 0x0e, + 0x50, 0x9c, 0xbd, 0x0a, 0xb2, 0x27, 0x47, 0xc8, 0xf2, 0x19, 0x91, 0x31, 0xca, 0xb8, 0x75, 0x1e, + 0x54, 0x5c, 0x80, 0x81, 0xc9, 0xd7, 0x04, 0x76, 0x56, 0x87, 0x83, 0x60, 0xe3, 0xf6, 0x05, 0xc0, + 0xdd, 0xaa, 0x46, 0xfa, 0x6b, 0x7e, 0x18, 0xd8, 0x77, 0x9f, 0x1d, 0x16, 0xb4, 0xe7, 0x87, 0x05, + 0xed, 0xaf, 0xc3, 0x82, 0xf6, 0xf8, 0xa8, 0x30, 0xf4, 0xfc, 0xa8, 0x30, 0xf4, 0xc7, 0x51, 0x61, + 0xe8, 0xd1, 0x5a, 0xcf, 0x29, 0x43, 0xbc, 0x80, 0x30, 0x6c, 0x75, 0xbf, 0xee, 0xfa, 0x3f, 0x89, + 0xc4, 0x81, 0x53, 0xcb, 0x88, 0x97, 0xf5, 0xed, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0xd9, 0x1a, + 0x59, 0x2a, 0x4f, 0x0f, 0x00, 0x00, +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConn + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion4 + +// MsgClient is the client API for Msg service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type MsgClient interface { + // UpdateParams defines a (governance) operation for updating the module + // parameters. The authority defaults to the x/gov module account. + UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) + // CreateFixedPriceAuction submits a create fixed price auction message. + CreateFixedPriceAuction(ctx context.Context, in *MsgCreateFixedPriceAuction, opts ...grpc.CallOption) (*MsgCreateFixedPriceAuctionResponse, error) + // CreateBatchAuction submits a create batch auction message. + CreateBatchAuction(ctx context.Context, in *MsgCreateBatchAuction, opts ...grpc.CallOption) (*MsgCreateBatchAuctionResponse, error) + // CancelAuction defines a method to cancel the auction message. + CancelAuction(ctx context.Context, in *MsgCancelAuction, opts ...grpc.CallOption) (*MsgCancelAuctionResponse, error) + // PlaceBid defines a method to place a bid message. + PlaceBid(ctx context.Context, in *MsgPlaceBid, opts ...grpc.CallOption) (*MsgPlaceBidResponse, error) + // ModifyBid defines a method to modify the bid message. + ModifyBid(ctx context.Context, in *MsgModifyBid, opts ...grpc.CallOption) (*MsgModifyBidResponse, error) + // AddAllowedBidder defines a method sto add a single allowed bidder message. + // This is for the testing purpose and it must not be used in mainnet. + AddAllowedBidder(ctx context.Context, in *MsgAddAllowedBidder, opts ...grpc.CallOption) (*MsgAddAllowedBidderResponse, error) +} + +type msgClient struct { + cc grpc1.ClientConn +} + +func NewMsgClient(cc grpc1.ClientConn) MsgClient { + return &msgClient{cc} +} + +func (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) { + out := new(MsgUpdateParamsResponse) + err := c.cc.Invoke(ctx, "/modules.fundraising.v1.Msg/UpdateParams", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) CreateFixedPriceAuction(ctx context.Context, in *MsgCreateFixedPriceAuction, opts ...grpc.CallOption) (*MsgCreateFixedPriceAuctionResponse, error) { + out := new(MsgCreateFixedPriceAuctionResponse) + err := c.cc.Invoke(ctx, "/modules.fundraising.v1.Msg/CreateFixedPriceAuction", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) CreateBatchAuction(ctx context.Context, in *MsgCreateBatchAuction, opts ...grpc.CallOption) (*MsgCreateBatchAuctionResponse, error) { + out := new(MsgCreateBatchAuctionResponse) + err := c.cc.Invoke(ctx, "/modules.fundraising.v1.Msg/CreateBatchAuction", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) CancelAuction(ctx context.Context, in *MsgCancelAuction, opts ...grpc.CallOption) (*MsgCancelAuctionResponse, error) { + out := new(MsgCancelAuctionResponse) + err := c.cc.Invoke(ctx, "/modules.fundraising.v1.Msg/CancelAuction", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) PlaceBid(ctx context.Context, in *MsgPlaceBid, opts ...grpc.CallOption) (*MsgPlaceBidResponse, error) { + out := new(MsgPlaceBidResponse) + err := c.cc.Invoke(ctx, "/modules.fundraising.v1.Msg/PlaceBid", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) ModifyBid(ctx context.Context, in *MsgModifyBid, opts ...grpc.CallOption) (*MsgModifyBidResponse, error) { + out := new(MsgModifyBidResponse) + err := c.cc.Invoke(ctx, "/modules.fundraising.v1.Msg/ModifyBid", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) AddAllowedBidder(ctx context.Context, in *MsgAddAllowedBidder, opts ...grpc.CallOption) (*MsgAddAllowedBidderResponse, error) { + out := new(MsgAddAllowedBidderResponse) + err := c.cc.Invoke(ctx, "/modules.fundraising.v1.Msg/AddAllowedBidder", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// MsgServer is the server API for Msg service. +type MsgServer interface { + // UpdateParams defines a (governance) operation for updating the module + // parameters. The authority defaults to the x/gov module account. + UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) + // CreateFixedPriceAuction submits a create fixed price auction message. + CreateFixedPriceAuction(context.Context, *MsgCreateFixedPriceAuction) (*MsgCreateFixedPriceAuctionResponse, error) + // CreateBatchAuction submits a create batch auction message. + CreateBatchAuction(context.Context, *MsgCreateBatchAuction) (*MsgCreateBatchAuctionResponse, error) + // CancelAuction defines a method to cancel the auction message. + CancelAuction(context.Context, *MsgCancelAuction) (*MsgCancelAuctionResponse, error) + // PlaceBid defines a method to place a bid message. + PlaceBid(context.Context, *MsgPlaceBid) (*MsgPlaceBidResponse, error) + // ModifyBid defines a method to modify the bid message. + ModifyBid(context.Context, *MsgModifyBid) (*MsgModifyBidResponse, error) + // AddAllowedBidder defines a method sto add a single allowed bidder message. + // This is for the testing purpose and it must not be used in mainnet. + AddAllowedBidder(context.Context, *MsgAddAllowedBidder) (*MsgAddAllowedBidderResponse, error) +} + +// UnimplementedMsgServer can be embedded to have forward compatible implementations. +type UnimplementedMsgServer struct { +} + +func (*UnimplementedMsgServer) UpdateParams(ctx context.Context, req *MsgUpdateParams) (*MsgUpdateParamsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateParams not implemented") +} +func (*UnimplementedMsgServer) CreateFixedPriceAuction(ctx context.Context, req *MsgCreateFixedPriceAuction) (*MsgCreateFixedPriceAuctionResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateFixedPriceAuction not implemented") +} +func (*UnimplementedMsgServer) CreateBatchAuction(ctx context.Context, req *MsgCreateBatchAuction) (*MsgCreateBatchAuctionResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateBatchAuction not implemented") +} +func (*UnimplementedMsgServer) CancelAuction(ctx context.Context, req *MsgCancelAuction) (*MsgCancelAuctionResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CancelAuction not implemented") +} +func (*UnimplementedMsgServer) PlaceBid(ctx context.Context, req *MsgPlaceBid) (*MsgPlaceBidResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method PlaceBid not implemented") +} +func (*UnimplementedMsgServer) ModifyBid(ctx context.Context, req *MsgModifyBid) (*MsgModifyBidResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ModifyBid not implemented") +} +func (*UnimplementedMsgServer) AddAllowedBidder(ctx context.Context, req *MsgAddAllowedBidder) (*MsgAddAllowedBidderResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method AddAllowedBidder not implemented") +} + +func RegisterMsgServer(s grpc1.Server, srv MsgServer) { + s.RegisterService(&_Msg_serviceDesc, srv) +} + +func _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgUpdateParams) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).UpdateParams(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/modules.fundraising.v1.Msg/UpdateParams", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).UpdateParams(ctx, req.(*MsgUpdateParams)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_CreateFixedPriceAuction_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgCreateFixedPriceAuction) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).CreateFixedPriceAuction(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/modules.fundraising.v1.Msg/CreateFixedPriceAuction", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).CreateFixedPriceAuction(ctx, req.(*MsgCreateFixedPriceAuction)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_CreateBatchAuction_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgCreateBatchAuction) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).CreateBatchAuction(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/modules.fundraising.v1.Msg/CreateBatchAuction", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).CreateBatchAuction(ctx, req.(*MsgCreateBatchAuction)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_CancelAuction_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgCancelAuction) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).CancelAuction(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/modules.fundraising.v1.Msg/CancelAuction", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).CancelAuction(ctx, req.(*MsgCancelAuction)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_PlaceBid_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgPlaceBid) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).PlaceBid(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/modules.fundraising.v1.Msg/PlaceBid", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).PlaceBid(ctx, req.(*MsgPlaceBid)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_ModifyBid_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgModifyBid) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).ModifyBid(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/modules.fundraising.v1.Msg/ModifyBid", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).ModifyBid(ctx, req.(*MsgModifyBid)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_AddAllowedBidder_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgAddAllowedBidder) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).AddAllowedBidder(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/modules.fundraising.v1.Msg/AddAllowedBidder", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).AddAllowedBidder(ctx, req.(*MsgAddAllowedBidder)) + } + return interceptor(ctx, in, info, handler) +} + +var _Msg_serviceDesc = grpc.ServiceDesc{ + ServiceName: "modules.fundraising.v1.Msg", + HandlerType: (*MsgServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "UpdateParams", + Handler: _Msg_UpdateParams_Handler, + }, + { + MethodName: "CreateFixedPriceAuction", + Handler: _Msg_CreateFixedPriceAuction_Handler, + }, + { + MethodName: "CreateBatchAuction", + Handler: _Msg_CreateBatchAuction_Handler, + }, + { + MethodName: "CancelAuction", + Handler: _Msg_CancelAuction_Handler, + }, + { + MethodName: "PlaceBid", + Handler: _Msg_PlaceBid_Handler, + }, + { + MethodName: "ModifyBid", + Handler: _Msg_ModifyBid_Handler, + }, + { + MethodName: "AddAllowedBidder", + Handler: _Msg_AddAllowedBidder_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "modules/fundraising/v1/tx.proto", +} + +func (m *MsgUpdateParams) 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 *MsgUpdateParams) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUpdateParams) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.Authority) > 0 { + i -= len(m.Authority) + copy(dAtA[i:], m.Authority) + i = encodeVarintTx(dAtA, i, uint64(len(m.Authority))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgUpdateParamsResponse) 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 *MsgUpdateParamsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUpdateParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *MsgCreateFixedPriceAuction) 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 *MsgCreateFixedPriceAuction) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgCreateFixedPriceAuction) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + n2, err2 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.EndTime, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.EndTime):]) + if err2 != nil { + return 0, err2 + } + i -= n2 + i = encodeVarintTx(dAtA, i, uint64(n2)) + i-- + dAtA[i] = 0x3a + n3, err3 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.StartTime, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.StartTime):]) + if err3 != nil { + return 0, err3 + } + i -= n3 + i = encodeVarintTx(dAtA, i, uint64(n3)) + i-- + dAtA[i] = 0x32 + if len(m.VestingSchedules) > 0 { + for iNdEx := len(m.VestingSchedules) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.VestingSchedules[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + } + if len(m.PayingCoinDenom) > 0 { + i -= len(m.PayingCoinDenom) + copy(dAtA[i:], m.PayingCoinDenom) + i = encodeVarintTx(dAtA, i, uint64(len(m.PayingCoinDenom))) + i-- + dAtA[i] = 0x22 + } + { + size, err := m.SellingCoin.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + { + size := m.StartPrice.Size() + i -= size + if _, err := m.StartPrice.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.Auctioneer) > 0 { + i -= len(m.Auctioneer) + copy(dAtA[i:], m.Auctioneer) + i = encodeVarintTx(dAtA, i, uint64(len(m.Auctioneer))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgCreateFixedPriceAuctionResponse) 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 *MsgCreateFixedPriceAuctionResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgCreateFixedPriceAuctionResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *MsgCreateBatchAuction) 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 *MsgCreateBatchAuction) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgCreateBatchAuction) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + n5, err5 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.EndTime, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.EndTime):]) + if err5 != nil { + return 0, err5 + } + i -= n5 + i = encodeVarintTx(dAtA, i, uint64(n5)) + i-- + dAtA[i] = 0x52 + n6, err6 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.StartTime, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.StartTime):]) + if err6 != nil { + return 0, err6 + } + i -= n6 + i = encodeVarintTx(dAtA, i, uint64(n6)) + i-- + dAtA[i] = 0x4a + { + size := m.ExtendedRoundRate.Size() + i -= size + if _, err := m.ExtendedRoundRate.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x42 + if m.MaxExtendedRound != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.MaxExtendedRound)) + i-- + dAtA[i] = 0x38 + } + if len(m.VestingSchedules) > 0 { + for iNdEx := len(m.VestingSchedules) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.VestingSchedules[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } + } + if len(m.PayingCoinDenom) > 0 { + i -= len(m.PayingCoinDenom) + copy(dAtA[i:], m.PayingCoinDenom) + i = encodeVarintTx(dAtA, i, uint64(len(m.PayingCoinDenom))) + i-- + dAtA[i] = 0x2a + } + { + size, err := m.SellingCoin.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + { + size := m.MinBidPrice.Size() + i -= size + if _, err := m.MinBidPrice.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + { + size := m.StartPrice.Size() + i -= size + if _, err := m.StartPrice.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.Auctioneer) > 0 { + i -= len(m.Auctioneer) + copy(dAtA[i:], m.Auctioneer) + i = encodeVarintTx(dAtA, i, uint64(len(m.Auctioneer))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgCreateBatchAuctionResponse) 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 *MsgCreateBatchAuctionResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgCreateBatchAuctionResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *MsgCancelAuction) 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 *MsgCancelAuction) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgCancelAuction) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.AuctionId != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.AuctionId)) + i-- + dAtA[i] = 0x10 + } + if len(m.Auctioneer) > 0 { + i -= len(m.Auctioneer) + copy(dAtA[i:], m.Auctioneer) + i = encodeVarintTx(dAtA, i, uint64(len(m.Auctioneer))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgCancelAuctionResponse) 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 *MsgCancelAuctionResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgCancelAuctionResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *MsgPlaceBid) 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 *MsgPlaceBid) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgPlaceBid) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Coin.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + { + size := m.Price.Size() + i -= size + if _, err := m.Price.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + if m.BidType != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.BidType)) + i-- + dAtA[i] = 0x18 + } + if len(m.Bidder) > 0 { + i -= len(m.Bidder) + copy(dAtA[i:], m.Bidder) + i = encodeVarintTx(dAtA, i, uint64(len(m.Bidder))) + i-- + dAtA[i] = 0x12 + } + if m.AuctionId != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.AuctionId)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *MsgPlaceBidResponse) 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 *MsgPlaceBidResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgPlaceBidResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *MsgModifyBid) 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 *MsgModifyBid) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgModifyBid) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Coin.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + { + size := m.Price.Size() + i -= size + if _, err := m.Price.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + if m.BidId != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.BidId)) + i-- + dAtA[i] = 0x18 + } + if len(m.Bidder) > 0 { + i -= len(m.Bidder) + copy(dAtA[i:], m.Bidder) + i = encodeVarintTx(dAtA, i, uint64(len(m.Bidder))) + i-- + dAtA[i] = 0x12 + } + if m.AuctionId != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.AuctionId)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *MsgModifyBidResponse) 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 *MsgModifyBidResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgModifyBidResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *MsgAddAllowedBidder) 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 *MsgAddAllowedBidder) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgAddAllowedBidder) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.AllowedBidder.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if m.AuctionId != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.AuctionId)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *MsgAddAllowedBidderResponse) 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 *MsgAddAllowedBidderResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgAddAllowedBidderResponse) 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 + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *MsgUpdateParams) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Authority) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.Params.Size() + n += 1 + l + sovTx(uint64(l)) + return n +} + +func (m *MsgUpdateParamsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *MsgCreateFixedPriceAuction) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Auctioneer) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.StartPrice.Size() + n += 1 + l + sovTx(uint64(l)) + l = m.SellingCoin.Size() + n += 1 + l + sovTx(uint64(l)) + l = len(m.PayingCoinDenom) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if len(m.VestingSchedules) > 0 { + for _, e := range m.VestingSchedules { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + l = github_com_cosmos_gogoproto_types.SizeOfStdTime(m.StartTime) + n += 1 + l + sovTx(uint64(l)) + l = github_com_cosmos_gogoproto_types.SizeOfStdTime(m.EndTime) + n += 1 + l + sovTx(uint64(l)) + return n +} + +func (m *MsgCreateFixedPriceAuctionResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *MsgCreateBatchAuction) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Auctioneer) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.StartPrice.Size() + n += 1 + l + sovTx(uint64(l)) + l = m.MinBidPrice.Size() + n += 1 + l + sovTx(uint64(l)) + l = m.SellingCoin.Size() + n += 1 + l + sovTx(uint64(l)) + l = len(m.PayingCoinDenom) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if len(m.VestingSchedules) > 0 { + for _, e := range m.VestingSchedules { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + if m.MaxExtendedRound != 0 { + n += 1 + sovTx(uint64(m.MaxExtendedRound)) + } + l = m.ExtendedRoundRate.Size() + n += 1 + l + sovTx(uint64(l)) + l = github_com_cosmos_gogoproto_types.SizeOfStdTime(m.StartTime) + n += 1 + l + sovTx(uint64(l)) + l = github_com_cosmos_gogoproto_types.SizeOfStdTime(m.EndTime) + n += 1 + l + sovTx(uint64(l)) + return n +} + +func (m *MsgCreateBatchAuctionResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *MsgCancelAuction) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Auctioneer) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if m.AuctionId != 0 { + n += 1 + sovTx(uint64(m.AuctionId)) + } + return n +} + +func (m *MsgCancelAuctionResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *MsgPlaceBid) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.AuctionId != 0 { + n += 1 + sovTx(uint64(m.AuctionId)) + } + l = len(m.Bidder) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if m.BidType != 0 { + n += 1 + sovTx(uint64(m.BidType)) + } + l = m.Price.Size() + n += 1 + l + sovTx(uint64(l)) + l = m.Coin.Size() + n += 1 + l + sovTx(uint64(l)) + return n +} + +func (m *MsgPlaceBidResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *MsgModifyBid) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.AuctionId != 0 { + n += 1 + sovTx(uint64(m.AuctionId)) + } + l = len(m.Bidder) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if m.BidId != 0 { + n += 1 + sovTx(uint64(m.BidId)) + } + l = m.Price.Size() + n += 1 + l + sovTx(uint64(l)) + l = m.Coin.Size() + n += 1 + l + sovTx(uint64(l)) + return n +} + +func (m *MsgModifyBidResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *MsgAddAllowedBidder) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.AuctionId != 0 { + n += 1 + sovTx(uint64(m.AuctionId)) + } + l = m.AllowedBidder.Size() + n += 1 + l + sovTx(uint64(l)) + return n +} + +func (m *MsgAddAllowedBidderResponse) 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 +} +func sozTx(x uint64) (n int) { + return sovTx(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *MsgUpdateParams) 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: MsgUpdateParams: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgUpdateParams: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Authority", 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.Authority = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + 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 *MsgUpdateParamsResponse) 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: MsgUpdateParamsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgUpdateParamsResponse: 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 (m *MsgCreateFixedPriceAuction) 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: MsgCreateFixedPriceAuction: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgCreateFixedPriceAuction: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Auctioneer", 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.Auctioneer = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StartPrice", 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 + } + if err := m.StartPrice.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SellingCoin", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.SellingCoin.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PayingCoinDenom", 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.PayingCoinDenom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VestingSchedules", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.VestingSchedules = append(m.VestingSchedules, VestingSchedule{}) + if err := m.VestingSchedules[len(m.VestingSchedules)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StartTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(&m.StartTime, dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field EndTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(&m.EndTime, dAtA[iNdEx:postIndex]); err != nil { + return err + } + 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 *MsgCreateFixedPriceAuctionResponse) 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: MsgCreateFixedPriceAuctionResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgCreateFixedPriceAuctionResponse: 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 (m *MsgCreateBatchAuction) 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: MsgCreateBatchAuction: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgCreateBatchAuction: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Auctioneer", 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.Auctioneer = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StartPrice", 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 + } + if err := m.StartPrice.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MinBidPrice", 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 + } + if err := m.MinBidPrice.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SellingCoin", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.SellingCoin.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PayingCoinDenom", 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.PayingCoinDenom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VestingSchedules", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.VestingSchedules = append(m.VestingSchedules, VestingSchedule{}) + if err := m.VestingSchedules[len(m.VestingSchedules)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MaxExtendedRound", wireType) + } + m.MaxExtendedRound = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.MaxExtendedRound |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ExtendedRoundRate", 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 + } + if err := m.ExtendedRoundRate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StartTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(&m.StartTime, dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field EndTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(&m.EndTime, dAtA[iNdEx:postIndex]); err != nil { + return err + } + 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 *MsgCreateBatchAuctionResponse) 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: MsgCreateBatchAuctionResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgCreateBatchAuctionResponse: 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 (m *MsgCancelAuction) 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: MsgCancelAuction: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgCancelAuction: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Auctioneer", 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.Auctioneer = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AuctionId", wireType) + } + m.AuctionId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.AuctionId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + 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 *MsgCancelAuctionResponse) 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: MsgCancelAuctionResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgCancelAuctionResponse: 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 (m *MsgPlaceBid) 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: MsgPlaceBid: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgPlaceBid: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AuctionId", wireType) + } + m.AuctionId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.AuctionId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Bidder", 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.Bidder = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field BidType", wireType) + } + m.BidType = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.BidType |= BidType(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Price", 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 + } + if err := m.Price.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Coin", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Coin.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + 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 *MsgPlaceBidResponse) 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: MsgPlaceBidResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgPlaceBidResponse: 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 (m *MsgModifyBid) 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: MsgModifyBid: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgModifyBid: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AuctionId", wireType) + } + m.AuctionId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.AuctionId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Bidder", 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.Bidder = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field BidId", wireType) + } + m.BidId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.BidId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Price", 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 + } + if err := m.Price.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Coin", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Coin.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + 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 *MsgModifyBidResponse) 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: MsgModifyBidResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgModifyBidResponse: 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 (m *MsgAddAllowedBidder) 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: MsgAddAllowedBidder: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgAddAllowedBidder: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AuctionId", wireType) + } + m.AuctionId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.AuctionId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AllowedBidder", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.AllowedBidder.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + 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 *MsgAddAllowedBidderResponse) 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: MsgAddAllowedBidderResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgAddAllowedBidderResponse: 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 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTx + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTx + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTx + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthTx + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupTx + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthTx + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthTx = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowTx = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupTx = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/fundraising/types/types.go b/x/fundraising/types/types.go new file mode 100644 index 0000000..ab1254f --- /dev/null +++ b/x/fundraising/types/types.go @@ -0,0 +1 @@ +package types diff --git a/x/fundraising/types/utils.go b/x/fundraising/types/utils.go new file mode 100644 index 0000000..fe68314 --- /dev/null +++ b/x/fundraising/types/utils.go @@ -0,0 +1,68 @@ +package types + +import ( + "sort" + "time" + + "cosmossdk.io/math" + "github.com/cometbft/cometbft/crypto" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/address" +) + +// MustParseRFC3339 parses string time to time in RFC3339 format. +// This is used only for internal testing purpose. +func MustParseRFC3339(s string) time.Time { + t, err := time.Parse(time.RFC3339, s) + if err != nil { + panic(err) + } + return t +} + +// DeriveAddress derives an address with the given address length type, module name, and +// address derivation name. It is used to derive reserve account addresses for selling, paying, and vesting. +func DeriveAddress(addressType AddressType, moduleName, name string) sdk.AccAddress { + switch addressType { + case AddressType32Bytes: + return sdk.AccAddress(address.Module(moduleName, []byte(name))) + case AddressType20Bytes: + return sdk.AccAddress(crypto.AddressHash([]byte(moduleName + name))) + default: + return sdk.AccAddress{} + } +} + +// SortBids sorts bid array by bid price in descending order. +func SortBids(bids []Bid) []Bid { + sort.Slice(bids, func(i, j int) bool { + if bids[i].Price.GT(bids[j].Price) { + return true + } + return bids[i].Id < bids[j].Id + }) + return bids +} + +func BidsByPrice(bids []Bid) (prices []math.LegacyDec, bidsByPrice map[string][]Bid) { + bids = SortBids(bids) + + bidsByPrice = map[string][]Bid{} // price => []Bid + + for _, bid := range bids { + priceStr := bid.Price.String() + bidsByPrice[priceStr] = append(bidsByPrice[priceStr], bid) + } + + // Sort prices in descending order. + prices = make([]math.LegacyDec, len(bidsByPrice)) + i := 0 + for priceStr := range bidsByPrice { + prices[i] = math.LegacyMustNewDecFromStr(priceStr) + i++ + } + sort.Slice(prices, func(i, j int) bool { + return prices[i].GT(prices[j]) + }) + return +} diff --git a/x/fundraising/types/utils_test.go b/x/fundraising/types/utils_test.go new file mode 100644 index 0000000..bdcb7a9 --- /dev/null +++ b/x/fundraising/types/utils_test.go @@ -0,0 +1,162 @@ +package types_test + +import ( + "sort" + "testing" + "time" + + "cosmossdk.io/math" + "github.com/cometbft/cometbft/crypto" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/stretchr/testify/require" + + "github.com/ignite/modules/x/fundraising/types" +) + +func TestMustParseRFC3339(t *testing.T) { + normalCase := "9999-12-31T00:00:00Z" + normalRes, err := time.Parse(time.RFC3339, normalCase) + require.NoError(t, err) + errorCase := "9999-12-31T00:00:00_ErrorCase" + _, err = time.Parse(time.RFC3339, errorCase) + require.PanicsWithError(t, err.Error(), func() { types.MustParseRFC3339(errorCase) }) + require.Equal(t, normalRes, types.MustParseRFC3339(normalCase)) +} + +func TestDeriveAddress(t *testing.T) { + testCases := []struct { + addressType types.AddressType + moduleName string + name string + expectedAddress string + }{ + { + types.ReserveAddressType, + types.ModuleName, + "SellingReserveAddress|1", + "cosmos1wl90665mfk3pgg095qhmlgha934exjvv437acgq42zw0sg94flestth4zu", + }, + { + types.ReserveAddressType, + types.ModuleName, + "PayingReserveAddress|1", + "cosmos17gk7a5ys8pxuexl7tvyk3pc9tdmqjjek03zjemez4eqvqdxlu92qdhphm2", + }, + { + types.ReserveAddressType, + types.ModuleName, + "VestingReserveAddress|1", + "cosmos1q4x4k4qsr4jwrrugnplhlj52mfd9f8jn5ck7r4ykdpv9wczvz4dqe8vrvt", + }, + { + types.AddressType20Bytes, + "", + "fee_collector", + "cosmos17xpfvakm2amg962yls6f84z3kell8c5lserqta", + }, + { + types.AddressType32Bytes, + "farming", + "GravityDEXFarmingBudget", + "cosmos1228ryjucdpdv3t87rxle0ew76a56ulvnfst0hq0sscd3nafgjpqqkcxcky", + }, + { + types.AddressType20Bytes, + types.ModuleName, + "", + "cosmos1vh7g0ypukt8xyxm3zlf8f2t4sjnzxe63pe3cap", + }, + { + types.AddressType20Bytes, + types.ModuleName, + "test1", + "cosmos1n7h778sm85f0x6h76nlrcd57eza702m6gskhhv", + }, + { + types.AddressType32Bytes, + types.ModuleName, + "test1", + "cosmos1zrwtzgxy5urtfwp5r9t0qkeuynh78k7z2047sqafrx9hg8x4rq0qjspx0y", + }, + { + types.AddressType32Bytes, + "test2", + "", + "cosmos1v9ejakp386det8xftkvvazvqud43v3p5mmjdpnuzy3gw84h4dwxsfn6dly", + }, + { + types.AddressType32Bytes, + "test2", + "test2", + "cosmos1qmsgyd6yu06uryqtw7t6lg7ua5ll7s3ej828fcqfakrphppug4xqcx7w45", + }, + { + types.AddressType20Bytes, + "", + "test2", + "cosmos1vqcr4c3tnxyxr08rk28n8mkphe6c5gfuk5eh34", + }, + { + types.AddressType20Bytes, + "test2", + "", + "cosmos1vqcr4c3tnxyxr08rk28n8mkphe6c5gfuk5eh34", + }, + { + types.AddressType20Bytes, + "test2", + "test2", + "cosmos15642je7gk5lxugnqx3evj3jgfjdjv3q0nx6wn7", + }, + { + 3, + "test2", + "invalidAddressType", + "", + }, + } + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + require.Equal(t, tc.expectedAddress, types.DeriveAddress(tc.addressType, tc.moduleName, tc.name).String()) + }) + } +} + +func TestSortByBidPrice(t *testing.T) { + sampleBids := []types.Bid{ + { + AuctionId: 1, + Bidder: sdk.AccAddress(crypto.AddressHash([]byte("Bidder1"))).String(), + Id: 1, + Price: math.LegacyMustNewDecFromStr("0.10"), + Coin: sdk.NewInt64Coin("denom1", 1), + }, + { + AuctionId: 1, + Bidder: sdk.AccAddress(crypto.AddressHash([]byte("Bidder2"))).String(), + Id: 2, + Price: math.LegacyMustNewDecFromStr("1.10"), + Coin: sdk.NewInt64Coin("denom1", 1), + }, + { + AuctionId: 1, + Bidder: sdk.AccAddress(crypto.AddressHash([]byte("Bidder3"))).String(), + Id: 3, + Price: math.LegacyMustNewDecFromStr("0.35"), + Coin: sdk.NewInt64Coin("denom1", 1), + }, + { + AuctionId: 1, + Bidder: sdk.AccAddress(crypto.AddressHash([]byte("Bidder4"))).String(), + Id: 4, + Price: math.LegacyMustNewDecFromStr("0.77"), + Coin: sdk.NewInt64Coin("denom1", 1), + }, + } + + bids := types.SortBids(sampleBids) + + require.True(t, sort.SliceIsSorted(bids, func(i, j int) bool { + return bids[i].Price.GT(bids[j].Price) + })) +} diff --git a/x/fundraising/types/vesting.go b/x/fundraising/types/vesting.go new file mode 100644 index 0000000..b5b69dd --- /dev/null +++ b/x/fundraising/types/vesting.go @@ -0,0 +1,71 @@ +package types + +import ( + "time" + + sdkerrors "cosmossdk.io/errors" + "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" +) + +// ValidateVestingSchedules validates the vesting schedules. +// Each weight of the vesting schedule must be positive and total weight must be equal to 1. +// If a number of schedule equals to zero, the auctioneer doesn't want any vesting schedule. +// The release times must be chronological for vesting schedules. Otherwise it returns an error. +func ValidateVestingSchedules(schedules []VestingSchedule, endTime time.Time) error { + if len(schedules) == 0 { + return nil + } + + totalWeight := math.LegacyZeroDec() + prevReleaseTime := MustParseRFC3339("0001-01-01T00:00:00Z") + + for _, s := range schedules { + if !s.Weight.IsPositive() { + return sdkerrors.Wrapf(ErrInvalidVestingSchedules, "vesting weight must be positive") + } + + if !s.ReleaseTime.After(endTime) { // ReleaseTime <= EndTime + return sdkerrors.Wrapf(ErrInvalidVestingSchedules, "release time must be set after the end time") + } + + if !s.ReleaseTime.After(prevReleaseTime) { + return sdkerrors.Wrapf(ErrInvalidVestingSchedules, "release time must be chronological") + } + + if s.Weight.GT(math.LegacyOneDec()) { + return sdkerrors.Wrapf(ErrInvalidVestingSchedules, "vesting weight must not be greater than 1") + } + + totalWeight = totalWeight.Add(s.Weight) + prevReleaseTime = s.ReleaseTime + } + + if !totalWeight.Equal(math.LegacyOneDec()) { + return sdkerrors.Wrapf(ErrInvalidVestingSchedules, "total vesting weight must be equal to 1") + } + + return nil +} + +// NewVestingQueue returns a new VestingQueue. +func NewVestingQueue(auctionId uint64, auctioneer sdk.AccAddress, payingCoin sdk.Coin, releaseTime time.Time, released bool) VestingQueue { + return VestingQueue{ + AuctionId: auctionId, + Auctioneer: auctioneer.String(), + PayingCoin: payingCoin, + ReleaseTime: releaseTime, + Released: released, + } +} + +// ShouldRelease returns true when the vesting queue is ready to release the paying coin. +// It checks if the release time is equal or before the given time t and released value is false. +func (vq VestingQueue) ShouldRelease(t time.Time) bool { + return !vq.GetReleaseTime().After(t) && !vq.Released +} + +// SetReleased sets released status of the vesting queue. +func (vq *VestingQueue) SetReleased(status bool) { + vq.Released = status +} diff --git a/x/fundraising/types/vesting_queue.pb.go b/x/fundraising/types/vesting_queue.pb.go new file mode 100644 index 0000000..fb70564 --- /dev/null +++ b/x/fundraising/types/vesting_queue.pb.go @@ -0,0 +1,526 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: modules/fundraising/v1/vesting_queue.proto + +package types + +import ( + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + types "github.com/cosmos/cosmos-sdk/types" + _ "github.com/cosmos/cosmos-sdk/types/tx/amino" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" + github_com_cosmos_gogoproto_types "github.com/cosmos/gogoproto/types" + _ "google.golang.org/protobuf/types/known/timestamppb" + io "io" + math "math" + math_bits "math/bits" + time "time" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf +var _ = time.Kitchen + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// VestingQueue defines the vesting queue. +type VestingQueue struct { + // auction_id specifies the id of the auction + AuctionId uint64 `protobuf:"varint,1,opt,name=auction_id,json=auctionId,proto3" json:"auction_id,omitempty"` + // auctioneer specifies the bech32-encoded address that creates the auction + Auctioneer string `protobuf:"bytes,2,opt,name=auctioneer,proto3" json:"auctioneer,omitempty"` + // paying_coin specifies the paying amount of coin + PayingCoin types.Coin `protobuf:"bytes,3,opt,name=paying_coin,json=payingCoin,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coin" json:"paying_coin"` + // release_time specifies the timestamp of the vesting schedule + ReleaseTime time.Time `protobuf:"bytes,4,opt,name=release_time,json=releaseTime,proto3,stdtime" json:"release_time"` + // released specifies the status of distribution + Released bool `protobuf:"varint,5,opt,name=released,proto3" json:"released,omitempty"` +} + +func (m *VestingQueue) Reset() { *m = VestingQueue{} } +func (m *VestingQueue) String() string { return proto.CompactTextString(m) } +func (*VestingQueue) ProtoMessage() {} +func (*VestingQueue) Descriptor() ([]byte, []int) { + return fileDescriptor_3af7a5ea0fd7cdbc, []int{0} +} +func (m *VestingQueue) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *VestingQueue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_VestingQueue.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 *VestingQueue) XXX_Merge(src proto.Message) { + xxx_messageInfo_VestingQueue.Merge(m, src) +} +func (m *VestingQueue) XXX_Size() int { + return m.Size() +} +func (m *VestingQueue) XXX_DiscardUnknown() { + xxx_messageInfo_VestingQueue.DiscardUnknown(m) +} + +var xxx_messageInfo_VestingQueue proto.InternalMessageInfo + +func (m *VestingQueue) GetAuctionId() uint64 { + if m != nil { + return m.AuctionId + } + return 0 +} + +func (m *VestingQueue) GetAuctioneer() string { + if m != nil { + return m.Auctioneer + } + return "" +} + +func (m *VestingQueue) GetPayingCoin() types.Coin { + if m != nil { + return m.PayingCoin + } + return types.Coin{} +} + +func (m *VestingQueue) GetReleaseTime() time.Time { + if m != nil { + return m.ReleaseTime + } + return time.Time{} +} + +func (m *VestingQueue) GetReleased() bool { + if m != nil { + return m.Released + } + return false +} + +func init() { + proto.RegisterType((*VestingQueue)(nil), "modules.fundraising.v1.VestingQueue") +} + +func init() { + proto.RegisterFile("modules/fundraising/v1/vesting_queue.proto", fileDescriptor_3af7a5ea0fd7cdbc) +} + +var fileDescriptor_3af7a5ea0fd7cdbc = []byte{ + // 410 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x54, 0x52, 0xbd, 0x8e, 0x13, 0x31, + 0x18, 0x8c, 0x8f, 0x03, 0xe5, 0x9c, 0x34, 0xac, 0x10, 0xda, 0x8b, 0x84, 0x13, 0xd1, 0x10, 0x45, + 0x3a, 0x5b, 0x81, 0x37, 0x08, 0x42, 0x27, 0x4a, 0x56, 0x88, 0x82, 0x26, 0xf2, 0xee, 0x7e, 0x67, + 0x2c, 0x76, 0xed, 0x65, 0xed, 0x5d, 0x91, 0x92, 0x37, 0xb8, 0x9a, 0x27, 0x40, 0x54, 0x57, 0xf1, + 0x0c, 0x57, 0x5e, 0x49, 0xc5, 0xa1, 0xa4, 0xb8, 0xd7, 0x40, 0xfe, 0xc9, 0x29, 0x34, 0xbb, 0x9e, + 0x6f, 0xc6, 0xf2, 0xcc, 0xe8, 0xc3, 0x8b, 0x5a, 0x97, 0x5d, 0x05, 0x86, 0x5d, 0x74, 0xaa, 0x6c, + 0xb9, 0x34, 0x52, 0x09, 0xd6, 0x2f, 0x59, 0x0f, 0xc6, 0x4a, 0x25, 0xd6, 0x5f, 0x3a, 0xe8, 0x80, + 0x36, 0xad, 0xb6, 0x3a, 0x79, 0x1a, 0xb5, 0xf4, 0x40, 0x4b, 0xfb, 0xe5, 0xe4, 0x31, 0xaf, 0xa5, + 0xd2, 0xcc, 0x7f, 0x83, 0x74, 0x42, 0x0a, 0x6d, 0x6a, 0x6d, 0x58, 0xce, 0x0d, 0xb0, 0x7e, 0x99, + 0x83, 0xe5, 0x4b, 0x56, 0x68, 0xa9, 0x22, 0x7f, 0x1a, 0xf8, 0xb5, 0x47, 0x2c, 0x80, 0x48, 0x3d, + 0x11, 0x5a, 0xe8, 0x30, 0x77, 0xa7, 0x38, 0x9d, 0x0a, 0xad, 0x45, 0x05, 0xcc, 0xa3, 0xbc, 0xbb, + 0x60, 0x56, 0xd6, 0x60, 0x2c, 0xaf, 0x9b, 0x20, 0x78, 0xfe, 0xeb, 0x08, 0x8f, 0x3f, 0x04, 0xd3, + 0xef, 0x9c, 0xe7, 0xe4, 0x19, 0xc6, 0xbc, 0x2b, 0xac, 0xd4, 0x6a, 0x2d, 0xcb, 0x14, 0xcd, 0xd0, + 0xfc, 0x38, 0x3b, 0x89, 0x93, 0xb7, 0x65, 0x42, 0xee, 0x69, 0x80, 0x36, 0x3d, 0x9a, 0xa1, 0xf9, + 0x49, 0x76, 0x30, 0x49, 0xbe, 0x21, 0x3c, 0x6a, 0xf8, 0xc6, 0x75, 0xe0, 0x7c, 0xa7, 0x0f, 0x66, + 0x68, 0x3e, 0x7a, 0x79, 0x4a, 0xa3, 0x57, 0x17, 0x8c, 0xc6, 0x60, 0xf4, 0xb5, 0x96, 0x6a, 0xf5, + 0xe6, 0xfa, 0xcf, 0x74, 0xf0, 0xf3, 0x76, 0xfa, 0x42, 0x48, 0xfb, 0xa9, 0xcb, 0x69, 0xa1, 0xeb, + 0x18, 0x2c, 0xfe, 0xce, 0x4c, 0xf9, 0x99, 0xd9, 0x4d, 0x03, 0xc6, 0x5f, 0xf8, 0x7e, 0x77, 0xb5, + 0x18, 0x57, 0x20, 0x78, 0xb1, 0xf1, 0x2f, 0x98, 0x1f, 0x77, 0x57, 0x0b, 0x94, 0xe1, 0xf0, 0xa8, + 0x53, 0x24, 0xe7, 0x78, 0xdc, 0x42, 0x05, 0xdc, 0xc0, 0xda, 0xc5, 0x4d, 0x8f, 0xbd, 0x87, 0x09, + 0x0d, 0x5d, 0xd0, 0x7d, 0x17, 0xf4, 0xfd, 0xbe, 0x8b, 0xd5, 0xd0, 0x99, 0xb8, 0xbc, 0x9d, 0xa2, + 0x6c, 0x14, 0x6f, 0x3a, 0x2e, 0x99, 0xe0, 0x61, 0x84, 0x65, 0xfa, 0x70, 0x86, 0xe6, 0xc3, 0xec, + 0x1e, 0xaf, 0xce, 0xaf, 0xb7, 0x04, 0xdd, 0x6c, 0x09, 0xfa, 0xbb, 0x25, 0xe8, 0x72, 0x47, 0x06, + 0x37, 0x3b, 0x32, 0xf8, 0xbd, 0x23, 0x83, 0x8f, 0x67, 0x07, 0x49, 0xa4, 0x50, 0xd2, 0x02, 0xdb, + 0x6f, 0xcb, 0xd7, 0xff, 0xf6, 0xc5, 0x87, 0xca, 0x1f, 0x79, 0x3f, 0xaf, 0xfe, 0x05, 0x00, 0x00, + 0xff, 0xff, 0x07, 0x65, 0x16, 0xee, 0x53, 0x02, 0x00, 0x00, +} + +func (m *VestingQueue) 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 *VestingQueue) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *VestingQueue) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Released { + i-- + if m.Released { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x28 + } + n1, err1 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.ReleaseTime, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.ReleaseTime):]) + if err1 != nil { + return 0, err1 + } + i -= n1 + i = encodeVarintVestingQueue(dAtA, i, uint64(n1)) + i-- + dAtA[i] = 0x22 + { + size, err := m.PayingCoin.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintVestingQueue(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + if len(m.Auctioneer) > 0 { + i -= len(m.Auctioneer) + copy(dAtA[i:], m.Auctioneer) + i = encodeVarintVestingQueue(dAtA, i, uint64(len(m.Auctioneer))) + i-- + dAtA[i] = 0x12 + } + if m.AuctionId != 0 { + i = encodeVarintVestingQueue(dAtA, i, uint64(m.AuctionId)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func encodeVarintVestingQueue(dAtA []byte, offset int, v uint64) int { + offset -= sovVestingQueue(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *VestingQueue) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.AuctionId != 0 { + n += 1 + sovVestingQueue(uint64(m.AuctionId)) + } + l = len(m.Auctioneer) + if l > 0 { + n += 1 + l + sovVestingQueue(uint64(l)) + } + l = m.PayingCoin.Size() + n += 1 + l + sovVestingQueue(uint64(l)) + l = github_com_cosmos_gogoproto_types.SizeOfStdTime(m.ReleaseTime) + n += 1 + l + sovVestingQueue(uint64(l)) + if m.Released { + n += 2 + } + return n +} + +func sovVestingQueue(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozVestingQueue(x uint64) (n int) { + return sovVestingQueue(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *VestingQueue) 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 ErrIntOverflowVestingQueue + } + 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: VestingQueue: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: VestingQueue: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AuctionId", wireType) + } + m.AuctionId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowVestingQueue + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.AuctionId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Auctioneer", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowVestingQueue + } + 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 ErrInvalidLengthVestingQueue + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthVestingQueue + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Auctioneer = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PayingCoin", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowVestingQueue + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthVestingQueue + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVestingQueue + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.PayingCoin.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ReleaseTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowVestingQueue + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthVestingQueue + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVestingQueue + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(&m.ReleaseTime, dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Released", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowVestingQueue + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Released = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipVestingQueue(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthVestingQueue + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipVestingQueue(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowVestingQueue + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowVestingQueue + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowVestingQueue + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthVestingQueue + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupVestingQueue + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthVestingQueue + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthVestingQueue = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowVestingQueue = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupVestingQueue = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/fundraising/types/vesting_test.go b/x/fundraising/types/vesting_test.go new file mode 100644 index 0000000..d0587f2 --- /dev/null +++ b/x/fundraising/types/vesting_test.go @@ -0,0 +1,151 @@ +package types_test + +import ( + "testing" + "time" + + "cosmossdk.io/math" + "github.com/cometbft/cometbft/crypto" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/stretchr/testify/require" + + "github.com/ignite/modules/x/fundraising/types" +) + +func TestShouldRelease(t *testing.T) { + now := types.MustParseRFC3339("2021-12-10T00:00:00Z") + + testCases := []struct { + name string + vq types.VestingQueue + expResult bool + }{ + { + "the release time is already passed the current block time", + types.VestingQueue{ + AuctionId: 1, + Auctioneer: sdk.AccAddress(crypto.AddressHash([]byte("Auctioneer"))).String(), + PayingCoin: sdk.NewInt64Coin("denom1", 10000000), + ReleaseTime: types.MustParseRFC3339("2021-11-01T00:00:00Z"), + Released: false, + }, + true, + }, + { + "the release time is exactly the same time as the current block time", + types.VestingQueue{ + AuctionId: 1, + Auctioneer: sdk.AccAddress(crypto.AddressHash([]byte("Auctioneer"))).String(), + PayingCoin: sdk.NewInt64Coin("denom1", 10000000), + ReleaseTime: now, + Released: false, + }, + true, + }, + { + "the release time has not passed the current block time", + types.VestingQueue{ + AuctionId: 1, + Auctioneer: sdk.AccAddress(crypto.AddressHash([]byte("Auctioneer"))).String(), + PayingCoin: sdk.NewInt64Coin("denom1", 10000000), + ReleaseTime: types.MustParseRFC3339("2022-01-30T00:00:00Z"), + Released: false, + }, + false, + }, + } + + for _, tc := range testCases { + tc := tc + t.Run(tc.name, func(t *testing.T) { + require.Equal(t, tc.expResult, tc.vq.ShouldRelease(now)) + }) + } +} + +func TestValidateVestingSchedules(t *testing.T) { + for _, tc := range []struct { + name string + schedules []types.VestingSchedule + endTime time.Time + expectedErr string + }{ + { + "happy case", + []types.VestingSchedule{ + {ReleaseTime: types.MustParseRFC3339("9999-01-01T00:00:00Z"), Weight: math.LegacyMustNewDecFromStr("1.0")}, + }, + types.MustParseRFC3339("2022-03-01T00:00:00Z"), + "", + }, + { + "invalid case #1", + []types.VestingSchedule{ + {ReleaseTime: types.MustParseRFC3339("9999-01-01T00:00:00Z"), Weight: math.LegacyMustNewDecFromStr("-1.0")}, + }, + types.MustParseRFC3339("2022-03-01T00:00:00Z"), + "vesting weight must be positive: invalid vesting schedules", + }, + { + "invalid case #2", + []types.VestingSchedule{ + {ReleaseTime: types.MustParseRFC3339("2022-01-01T00:00:00Z"), Weight: math.LegacyMustNewDecFromStr("1.0")}, + }, + types.MustParseRFC3339("2022-03-01T00:00:00Z"), + "release time must be set after the end time: invalid vesting schedules", + }, + { + "invalid case #3", + []types.VestingSchedule{ + {ReleaseTime: types.MustParseRFC3339("9999-01-01T00:00:00Z"), Weight: math.LegacyMustNewDecFromStr("2.0")}, + }, + types.MustParseRFC3339("2022-03-01T00:00:00Z"), + "vesting weight must not be greater than 1: invalid vesting schedules", + }, + { + "invalid case #4", + []types.VestingSchedule{ + {ReleaseTime: types.MustParseRFC3339("2022-06-01T00:00:00Z"), Weight: math.LegacyMustNewDecFromStr("0.25")}, + {ReleaseTime: types.MustParseRFC3339("2022-04-01T00:00:00Z"), Weight: math.LegacyMustNewDecFromStr("0.25")}, + {ReleaseTime: types.MustParseRFC3339("2022-09-01T00:00:00Z"), Weight: math.LegacyMustNewDecFromStr("0.25")}, + {ReleaseTime: types.MustParseRFC3339("2022-12-01T00:00:00Z"), Weight: math.LegacyMustNewDecFromStr("0.25")}, + }, + types.MustParseRFC3339("2022-03-01T00:00:00Z"), + "release time must be chronological: invalid vesting schedules", + }, + { + "invalid case #5", + []types.VestingSchedule{ + {ReleaseTime: types.MustParseRFC3339("2022-05-01T00:00:00Z"), Weight: math.LegacyMustNewDecFromStr("0.5")}, + {ReleaseTime: types.MustParseRFC3339("2022-06-01T00:00:00Z"), Weight: math.LegacyMustNewDecFromStr("0.5")}, + {ReleaseTime: types.MustParseRFC3339("2022-07-01T00:00:00Z"), Weight: math.LegacyMustNewDecFromStr("0.5")}, + {ReleaseTime: types.MustParseRFC3339("2022-08-01T00:00:00Z"), Weight: math.LegacyMustNewDecFromStr("0.5")}, + }, + types.MustParseRFC3339("2022-03-01T00:00:00Z"), + "total vesting weight must be equal to 1: invalid vesting schedules", + }, + } { + t.Run(tc.name, func(t *testing.T) { + err := types.ValidateVestingSchedules(tc.schedules, tc.endTime) + if tc.expectedErr == "" { + require.NoError(t, err) + } else { + require.EqualError(t, err, tc.expectedErr) + } + }) + } +} + +func TestSetReleased(t *testing.T) { + vestingQueue := types.NewVestingQueue( + 1, + sdk.AccAddress(crypto.AddressHash([]byte("Auctioneer"))), + sdk.NewInt64Coin("denom1", 10000000), + types.MustParseRFC3339("2021-11-01T00:00:00Z"), + false, + ) + require.False(t, vestingQueue.Released) + + vestingQueue.SetReleased(true) + require.True(t, vestingQueue.Released) +}