feat(x/bank): adding DenomOwnersByQuery for denom owners for token (#18956)

Co-authored-by: Sai Kumar <gskumar967@gmail.com>
This commit is contained in:
gsai967 2024-01-10 20:01:18 +05:30 committed by GitHub
parent 0b12995730
commit dee9eda5e4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 2985 additions and 366 deletions

View File

@ -52,7 +52,7 @@ Ref: https://keepachangelog.com/en/1.0.0/
* (runtime) [#18475](https://github.com/cosmos/cosmos-sdk/pull/18475) Adds an implementation for core.branch.Service.
* (baseapp) [#18499](https://github.com/cosmos/cosmos-sdk/pull/18499) Add `MsgRouter` response type from message name function.
* (types) [#18768](https://github.com/cosmos/cosmos-sdk/pull/18768) Add MustValAddressFromBech32 function.
### Improvements
* (client/keys) [#18950](https://github.com/cosmos/cosmos-sdk/pull/18950) Improve `<appd> keys add`, `<appd> keys import` and `<appd> keys rename` by checking name validation.

File diff suppressed because it is too large Load Diff

View File

@ -30,6 +30,7 @@ const (
Query_DenomMetadataByQueryString_FullMethodName = "/cosmos.bank.v1beta1.Query/DenomMetadataByQueryString"
Query_DenomsMetadata_FullMethodName = "/cosmos.bank.v1beta1.Query/DenomsMetadata"
Query_DenomOwners_FullMethodName = "/cosmos.bank.v1beta1.Query/DenomOwners"
Query_DenomOwnersByQuery_FullMethodName = "/cosmos.bank.v1beta1.Query/DenomOwnersByQuery"
Query_SendEnabled_FullMethodName = "/cosmos.bank.v1beta1.Query/SendEnabled"
)
@ -72,9 +73,9 @@ type QueryClient interface {
SupplyOf(ctx context.Context, in *QuerySupplyOfRequest, opts ...grpc.CallOption) (*QuerySupplyOfResponse, error)
// Params queries the parameters of x/bank module.
Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error)
// DenomsMetadata queries the client metadata of a given coin denomination.
// DenomMetadata queries the client metadata of a given coin denomination.
DenomMetadata(ctx context.Context, in *QueryDenomMetadataRequest, opts ...grpc.CallOption) (*QueryDenomMetadataResponse, error)
// DenomsMetadata queries the client metadata of a given coin denomination.
// DenomMetadataByQueryString queries the client metadata of a given coin denomination.
DenomMetadataByQueryString(ctx context.Context, in *QueryDenomMetadataByQueryStringRequest, opts ...grpc.CallOption) (*QueryDenomMetadataByQueryStringResponse, error)
// DenomsMetadata queries the client metadata for all registered coin
// denominations.
@ -87,6 +88,11 @@ type QueryClient interface {
//
// Since: cosmos-sdk 0.46
DenomOwners(ctx context.Context, in *QueryDenomOwnersRequest, opts ...grpc.CallOption) (*QueryDenomOwnersResponse, error)
// DenomOwnersByQuery queries for all account addresses that own a particular token
// denomination.
//
// Since: cosmos-sdk 0.50.3
DenomOwnersByQuery(ctx context.Context, in *QueryDenomOwnersByQueryRequest, opts ...grpc.CallOption) (*QueryDenomOwnersByQueryResponse, error)
// SendEnabled queries for SendEnabled entries.
//
// This query only returns denominations that have specific SendEnabled settings.
@ -204,6 +210,15 @@ func (c *queryClient) DenomOwners(ctx context.Context, in *QueryDenomOwnersReque
return out, nil
}
func (c *queryClient) DenomOwnersByQuery(ctx context.Context, in *QueryDenomOwnersByQueryRequest, opts ...grpc.CallOption) (*QueryDenomOwnersByQueryResponse, error) {
out := new(QueryDenomOwnersByQueryResponse)
err := c.cc.Invoke(ctx, Query_DenomOwnersByQuery_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *queryClient) SendEnabled(ctx context.Context, in *QuerySendEnabledRequest, opts ...grpc.CallOption) (*QuerySendEnabledResponse, error) {
out := new(QuerySendEnabledResponse)
err := c.cc.Invoke(ctx, Query_SendEnabled_FullMethodName, in, out, opts...)
@ -252,9 +267,9 @@ type QueryServer interface {
SupplyOf(context.Context, *QuerySupplyOfRequest) (*QuerySupplyOfResponse, error)
// Params queries the parameters of x/bank module.
Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error)
// DenomsMetadata queries the client metadata of a given coin denomination.
// DenomMetadata queries the client metadata of a given coin denomination.
DenomMetadata(context.Context, *QueryDenomMetadataRequest) (*QueryDenomMetadataResponse, error)
// DenomsMetadata queries the client metadata of a given coin denomination.
// DenomMetadataByQueryString queries the client metadata of a given coin denomination.
DenomMetadataByQueryString(context.Context, *QueryDenomMetadataByQueryStringRequest) (*QueryDenomMetadataByQueryStringResponse, error)
// DenomsMetadata queries the client metadata for all registered coin
// denominations.
@ -267,6 +282,11 @@ type QueryServer interface {
//
// Since: cosmos-sdk 0.46
DenomOwners(context.Context, *QueryDenomOwnersRequest) (*QueryDenomOwnersResponse, error)
// DenomOwnersByQuery queries for all account addresses that own a particular token
// denomination.
//
// Since: cosmos-sdk 0.50.3
DenomOwnersByQuery(context.Context, *QueryDenomOwnersByQueryRequest) (*QueryDenomOwnersByQueryResponse, error)
// SendEnabled queries for SendEnabled entries.
//
// This query only returns denominations that have specific SendEnabled settings.
@ -315,6 +335,9 @@ func (UnimplementedQueryServer) DenomsMetadata(context.Context, *QueryDenomsMeta
func (UnimplementedQueryServer) DenomOwners(context.Context, *QueryDenomOwnersRequest) (*QueryDenomOwnersResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method DenomOwners not implemented")
}
func (UnimplementedQueryServer) DenomOwnersByQuery(context.Context, *QueryDenomOwnersByQueryRequest) (*QueryDenomOwnersByQueryResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method DenomOwnersByQuery not implemented")
}
func (UnimplementedQueryServer) SendEnabled(context.Context, *QuerySendEnabledRequest) (*QuerySendEnabledResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method SendEnabled not implemented")
}
@ -529,6 +552,24 @@ func _Query_DenomOwners_Handler(srv interface{}, ctx context.Context, dec func(i
return interceptor(ctx, in, info, handler)
}
func _Query_DenomOwnersByQuery_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(QueryDenomOwnersByQueryRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(QueryServer).DenomOwnersByQuery(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: Query_DenomOwnersByQuery_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(QueryServer).DenomOwnersByQuery(ctx, req.(*QueryDenomOwnersByQueryRequest))
}
return interceptor(ctx, in, info, handler)
}
func _Query_SendEnabled_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(QuerySendEnabledRequest)
if err := dec(in); err != nil {
@ -598,6 +639,10 @@ var Query_ServiceDesc = grpc.ServiceDesc{
MethodName: "DenomOwners",
Handler: _Query_DenomOwners_Handler,
},
{
MethodName: "DenomOwnersByQuery",
Handler: _Query_DenomOwnersByQuery_Handler,
},
{
MethodName: "SendEnabled",
Handler: _Query_SendEnabled_Handler,

File diff suppressed because it is too large Load Diff

View File

@ -77,13 +77,13 @@ service Query {
option (google.api.http).get = "/cosmos/bank/v1beta1/params";
}
// DenomsMetadata queries the client metadata of a given coin denomination.
// DenomMetadata queries the client metadata of a given coin denomination.
rpc DenomMetadata(QueryDenomMetadataRequest) returns (QueryDenomMetadataResponse) {
option (cosmos.query.v1.module_query_safe) = true;
option (google.api.http).get = "/cosmos/bank/v1beta1/denoms_metadata/{denom}";
}
// DenomsMetadata queries the client metadata of a given coin denomination.
// DenomMetadataByQueryString queries the client metadata of a given coin denomination.
rpc DenomMetadataByQueryString(QueryDenomMetadataByQueryStringRequest)
returns (QueryDenomMetadataByQueryStringResponse) {
option (cosmos.query.v1.module_query_safe) = true;
@ -108,6 +108,15 @@ service Query {
option (google.api.http).get = "/cosmos/bank/v1beta1/denom_owners/{denom}";
}
// DenomOwnersByQuery queries for all account addresses that own a particular token
// denomination.
//
// Since: cosmos-sdk 0.50.3
rpc DenomOwnersByQuery(QueryDenomOwnersByQueryRequest) returns (QueryDenomOwnersByQueryResponse) {
option (cosmos.query.v1.module_query_safe) = true;
option (google.api.http).get = "/cosmos/bank/v1beta1/denom_owners_by_query";
}
// SendEnabled queries for SendEnabled entries.
//
// This query only returns denominations that have specific SendEnabled settings.
@ -354,6 +363,29 @@ message QueryDenomOwnersResponse {
cosmos.base.query.v1beta1.PageResponse pagination = 2;
}
// QueryDenomOwnersByQueryRequest defines the request type for the DenomOwnersByQuery RPC query,
// which queries for a paginated set of all account holders of a particular
// denomination.
//
// Since: cosmos-sdk 0.50.3
message QueryDenomOwnersByQueryRequest {
// denom defines the coin denomination to query all account holders for.
string denom = 1;
// pagination defines an optional pagination for the request.
cosmos.base.query.v1beta1.PageRequest pagination = 2;
}
// QueryDenomOwnersByQueryResponse defines the RPC response of a DenomOwnersByQuery RPC query.
//
// Since: cosmos-sdk 0.50.3
message QueryDenomOwnersByQueryResponse {
repeated DenomOwner denom_owners = 1;
// pagination defines the pagination in the response.
cosmos.base.query.v1beta1.PageResponse pagination = 2;
}
// QuerySendEnabledRequest defines the RPC request for looking up SendEnabled entries.
//
// Since: cosmos-sdk 0.47

View File

@ -173,4 +173,3 @@ message MsgWithdrawContinuousFundResponse {
[(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"];
;
}

View File

@ -27,6 +27,10 @@ Ref: https://keepachangelog.com/en/1.0.0/
### Features
* [#18956](https://github.com/cosmos/cosmos-sdk/pull/18956) Introduced a new `DenomOwnersByQuery` query method
for `DenomOwners`, which accepts the denom value as a query string parameter, resolving issues with denoms containing
slashes.
### Improvements
### API Breaking Changes

View File

@ -219,18 +219,14 @@ func (k BaseKeeper) DenomMetadataByQueryString(ctx context.Context, req *types.Q
return nil, status.Errorf(codes.InvalidArgument, "empty request")
}
if err := sdk.ValidateDenom(req.Denom); err != nil {
return nil, status.Error(codes.InvalidArgument, err.Error())
res, err := k.DenomMetadata(ctx, &types.QueryDenomMetadataRequest{
Denom: req.Denom,
})
if err != nil {
return nil, err
}
metadata, found := k.GetDenomMetaData(ctx, req.Denom)
if !found {
return nil, status.Errorf(codes.NotFound, "client metadata for denom %s", req.Denom)
}
return &types.QueryDenomMetadataByQueryStringResponse{
Metadata: metadata,
}, nil
return &types.QueryDenomMetadataByQueryStringResponse{Metadata: res.Metadata}, nil
}
// DenomMetadataV2 is identical to DenomMetadata but receives protoreflect types instead of gogo types. It exists to
@ -274,8 +270,9 @@ func (k BaseKeeper) DenomMetadataV2(ctx context.Context, req *v1beta1.QueryDenom
}, nil
}
// DenomOwners returns all the account address that own a requested token denom.
func (k BaseKeeper) DenomOwners(
goCtx context.Context,
ctx context.Context,
req *types.QueryDenomOwnersRequest,
) (*types.QueryDenomOwnersResponse, error) {
if req == nil {
@ -287,11 +284,11 @@ func (k BaseKeeper) DenomOwners(
}
denomOwners, pageRes, err := query.CollectionPaginate(
goCtx,
ctx,
k.Balances.Indexes.Denom,
req.Pagination,
func(key collections.Pair[string, sdk.AccAddress], value collections.NoValue) (*types.DenomOwner, error) {
amt, err := k.Balances.Get(goCtx, collections.Join(key.K2(), req.Denom))
amt, err := k.Balances.Get(ctx, collections.Join(key.K2(), req.Denom))
if err != nil {
return nil, err
}
@ -334,3 +331,19 @@ func (k BaseKeeper) SendEnabled(ctx context.Context, req *types.QuerySendEnabled
return resp, nil
}
// DenomOwnersByQuery is identical to DenomOwner query, but receives denom values via query string.
func (k BaseKeeper) DenomOwnersByQuery(ctx context.Context, req *types.QueryDenomOwnersByQueryRequest) (*types.QueryDenomOwnersByQueryResponse, error) {
if req == nil {
return nil, status.Errorf(codes.InvalidArgument, "empty request")
}
resp, err := k.DenomOwners(ctx, &types.QueryDenomOwnersRequest{
Denom: req.Denom,
Pagination: req.Pagination,
})
if err != nil {
return nil, err
}
return &types.QueryDenomOwnersByQueryResponse{DenomOwners: resp.DenomOwners, Pagination: resp.Pagination}, nil
}

View File

@ -809,3 +809,111 @@ func (suite *KeeperTestSuite) TestQuerySendEnabled() {
})
}
}
func (suite *KeeperTestSuite) TestGRPCDenomOwnersByQuery() {
ctx := suite.ctx
keeper := suite.bankKeeper
suite.mockMintCoins(mintAcc)
suite.Require().NoError(keeper.MintCoins(ctx, types.MintModuleName, initCoins))
denom := "ibc/123123213123"
newCoins := sdk.NewCoins(sdk.NewCoin(denom, initTokens))
suite.mockMintCoins(mintAcc)
suite.Require().NoError(keeper.MintCoins(ctx, types.MintModuleName, newCoins))
for i := 0; i < 10; i++ {
addr := sdk.AccAddress(fmt.Sprintf("account-%d", i))
bal := sdk.NewCoins(sdk.NewCoin(
sdk.DefaultBondDenom,
sdk.TokensFromConsensusPower(initialPower/10, sdk.DefaultPowerReduction),
))
suite.mockSendCoinsFromModuleToAccount(mintAcc, addr)
suite.Require().NoError(keeper.SendCoinsFromModuleToAccount(ctx, types.MintModuleName, addr, bal))
}
testCases := map[string]struct {
req *types.QueryDenomOwnersByQueryRequest
expPass bool
numAddrs int
hasNext bool
total uint64
}{
"empty request": {
req: &types.QueryDenomOwnersByQueryRequest{},
expPass: false,
},
"invalid denom": {
req: &types.QueryDenomOwnersByQueryRequest{
Denom: "foo",
},
expPass: true,
numAddrs: 0,
hasNext: false,
total: 0,
},
"valid request - page 1": {
req: &types.QueryDenomOwnersByQueryRequest{
Denom: sdk.DefaultBondDenom,
Pagination: &query.PageRequest{
Limit: 6,
CountTotal: true,
},
},
expPass: true,
numAddrs: 6,
hasNext: true,
total: 10,
},
"valid request - page 2": {
req: &types.QueryDenomOwnersByQueryRequest{
Denom: sdk.DefaultBondDenom,
Pagination: &query.PageRequest{
Offset: 6,
Limit: 10,
CountTotal: true,
},
},
expPass: true,
numAddrs: 4,
hasNext: false,
total: 10,
},
"valid request for query": {
req: &types.QueryDenomOwnersByQueryRequest{
Denom: denom,
Pagination: &query.PageRequest{
Limit: 6,
CountTotal: true,
},
},
expPass: true,
numAddrs: 1,
hasNext: false,
total: 1,
},
}
for name, tc := range testCases {
suite.Run(name, func() {
resp, err := suite.queryClient.DenomOwnersByQuery(gocontext.Background(), tc.req)
if tc.expPass {
suite.NoError(err)
suite.NotNil(resp)
suite.Len(resp.DenomOwners, tc.numAddrs)
suite.Equal(tc.total, resp.Pagination.Total)
if tc.hasNext {
suite.NotNil(resp.Pagination.NextKey)
} else {
suite.Nil(resp.Pagination.NextKey)
}
} else {
suite.Require().Error(err)
}
})
}
suite.Require().True(true)
}

View File

@ -1157,6 +1157,121 @@ func (m *QueryDenomOwnersResponse) GetPagination() *query.PageResponse {
return nil
}
// QueryDenomOwnersByQueryRequest defines the request type for the DenomOwnersByQuery RPC query,
// which queries for a paginated set of all account holders of a particular
// denomination.
//
// Since: cosmos-sdk 0.50.3
type QueryDenomOwnersByQueryRequest struct {
// denom defines the coin denomination to query all account holders for.
Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty"`
// pagination defines an optional pagination for the request.
Pagination *query.PageRequest `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"`
}
func (m *QueryDenomOwnersByQueryRequest) Reset() { *m = QueryDenomOwnersByQueryRequest{} }
func (m *QueryDenomOwnersByQueryRequest) String() string { return proto.CompactTextString(m) }
func (*QueryDenomOwnersByQueryRequest) ProtoMessage() {}
func (*QueryDenomOwnersByQueryRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_9c6fc1939682df13, []int{23}
}
func (m *QueryDenomOwnersByQueryRequest) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
func (m *QueryDenomOwnersByQueryRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
return xxx_messageInfo_QueryDenomOwnersByQueryRequest.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 *QueryDenomOwnersByQueryRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_QueryDenomOwnersByQueryRequest.Merge(m, src)
}
func (m *QueryDenomOwnersByQueryRequest) XXX_Size() int {
return m.Size()
}
func (m *QueryDenomOwnersByQueryRequest) XXX_DiscardUnknown() {
xxx_messageInfo_QueryDenomOwnersByQueryRequest.DiscardUnknown(m)
}
var xxx_messageInfo_QueryDenomOwnersByQueryRequest proto.InternalMessageInfo
func (m *QueryDenomOwnersByQueryRequest) GetDenom() string {
if m != nil {
return m.Denom
}
return ""
}
func (m *QueryDenomOwnersByQueryRequest) GetPagination() *query.PageRequest {
if m != nil {
return m.Pagination
}
return nil
}
// QueryDenomOwnersByQueryResponse defines the RPC response of a DenomOwnersByQuery RPC query.
//
// Since: cosmos-sdk 0.50.3
type QueryDenomOwnersByQueryResponse struct {
DenomOwners []*DenomOwner `protobuf:"bytes,1,rep,name=denom_owners,json=denomOwners,proto3" json:"denom_owners,omitempty"`
// pagination defines the pagination in the response.
Pagination *query.PageResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"`
}
func (m *QueryDenomOwnersByQueryResponse) Reset() { *m = QueryDenomOwnersByQueryResponse{} }
func (m *QueryDenomOwnersByQueryResponse) String() string { return proto.CompactTextString(m) }
func (*QueryDenomOwnersByQueryResponse) ProtoMessage() {}
func (*QueryDenomOwnersByQueryResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_9c6fc1939682df13, []int{24}
}
func (m *QueryDenomOwnersByQueryResponse) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
func (m *QueryDenomOwnersByQueryResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
return xxx_messageInfo_QueryDenomOwnersByQueryResponse.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 *QueryDenomOwnersByQueryResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_QueryDenomOwnersByQueryResponse.Merge(m, src)
}
func (m *QueryDenomOwnersByQueryResponse) XXX_Size() int {
return m.Size()
}
func (m *QueryDenomOwnersByQueryResponse) XXX_DiscardUnknown() {
xxx_messageInfo_QueryDenomOwnersByQueryResponse.DiscardUnknown(m)
}
var xxx_messageInfo_QueryDenomOwnersByQueryResponse proto.InternalMessageInfo
func (m *QueryDenomOwnersByQueryResponse) GetDenomOwners() []*DenomOwner {
if m != nil {
return m.DenomOwners
}
return nil
}
func (m *QueryDenomOwnersByQueryResponse) GetPagination() *query.PageResponse {
if m != nil {
return m.Pagination
}
return nil
}
// QuerySendEnabledRequest defines the RPC request for looking up SendEnabled entries.
//
// Since: cosmos-sdk 0.47
@ -1172,7 +1287,7 @@ func (m *QuerySendEnabledRequest) Reset() { *m = QuerySendEnabledRequest
func (m *QuerySendEnabledRequest) String() string { return proto.CompactTextString(m) }
func (*QuerySendEnabledRequest) ProtoMessage() {}
func (*QuerySendEnabledRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_9c6fc1939682df13, []int{23}
return fileDescriptor_9c6fc1939682df13, []int{25}
}
func (m *QuerySendEnabledRequest) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -1229,7 +1344,7 @@ func (m *QuerySendEnabledResponse) Reset() { *m = QuerySendEnabledRespon
func (m *QuerySendEnabledResponse) String() string { return proto.CompactTextString(m) }
func (*QuerySendEnabledResponse) ProtoMessage() {}
func (*QuerySendEnabledResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_9c6fc1939682df13, []int{24}
return fileDescriptor_9c6fc1939682df13, []int{26}
}
func (m *QuerySendEnabledResponse) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -1296,6 +1411,8 @@ func init() {
proto.RegisterType((*QueryDenomOwnersRequest)(nil), "cosmos.bank.v1beta1.QueryDenomOwnersRequest")
proto.RegisterType((*DenomOwner)(nil), "cosmos.bank.v1beta1.DenomOwner")
proto.RegisterType((*QueryDenomOwnersResponse)(nil), "cosmos.bank.v1beta1.QueryDenomOwnersResponse")
proto.RegisterType((*QueryDenomOwnersByQueryRequest)(nil), "cosmos.bank.v1beta1.QueryDenomOwnersByQueryRequest")
proto.RegisterType((*QueryDenomOwnersByQueryResponse)(nil), "cosmos.bank.v1beta1.QueryDenomOwnersByQueryResponse")
proto.RegisterType((*QuerySendEnabledRequest)(nil), "cosmos.bank.v1beta1.QuerySendEnabledRequest")
proto.RegisterType((*QuerySendEnabledResponse)(nil), "cosmos.bank.v1beta1.QuerySendEnabledResponse")
}
@ -1303,88 +1420,91 @@ func init() {
func init() { proto.RegisterFile("cosmos/bank/v1beta1/query.proto", fileDescriptor_9c6fc1939682df13) }
var fileDescriptor_9c6fc1939682df13 = []byte{
// 1287 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x58, 0x41, 0x6f, 0x1b, 0x45,
0x14, 0xf6, 0xb4, 0xaa, 0x9b, 0x3c, 0xa7, 0x88, 0x4e, 0x03, 0x4d, 0x36, 0xc4, 0x0e, 0x9b, 0x2a,
0x71, 0x42, 0xb2, 0xdb, 0x38, 0x55, 0x45, 0x4b, 0x88, 0x14, 0xb7, 0xa4, 0x07, 0x84, 0x5a, 0x1c,
0x7a, 0x81, 0x83, 0xb5, 0xf6, 0x0e, 0xc6, 0x8a, 0xbd, 0xe3, 0x7a, 0x36, 0x2d, 0x56, 0x15, 0x09,
0x21, 0x21, 0xf5, 0x06, 0x12, 0x3d, 0x55, 0x42, 0x8a, 0x90, 0x80, 0x0a, 0x24, 0xd4, 0x03, 0x47,
0x8e, 0x1c, 0x7a, 0xac, 0xe0, 0x00, 0xe2, 0x50, 0x50, 0x82, 0xd4, 0xfe, 0x0c, 0xe4, 0x99, 0x59,
0xef, 0xae, 0x3d, 0xde, 0x6c, 0x52, 0x83, 0x10, 0x97, 0xc4, 0x9e, 0x79, 0x6f, 0xde, 0xf7, 0xbe,
0xf7, 0xf6, 0xcd, 0xb7, 0x86, 0x4c, 0x99, 0xb2, 0x3a, 0x65, 0x66, 0xc9, 0x72, 0x36, 0xcd, 0x9b,
0x4b, 0x25, 0xe2, 0x5a, 0x4b, 0xe6, 0x8d, 0x2d, 0xd2, 0x6c, 0x19, 0x8d, 0x26, 0x75, 0x29, 0x3e,
0x25, 0x0c, 0x8c, 0xb6, 0x81, 0x21, 0x0d, 0xb4, 0xf9, 0x8e, 0x17, 0x23, 0xc2, 0xba, 0xe3, 0xdb,
0xb0, 0x2a, 0x55, 0xc7, 0x72, 0xab, 0xd4, 0x11, 0x07, 0x68, 0xa3, 0x15, 0x5a, 0xa1, 0xfc, 0xa3,
0xd9, 0xfe, 0x24, 0x57, 0x5f, 0xaa, 0x50, 0x5a, 0xa9, 0x11, 0xd3, 0x6a, 0x54, 0x4d, 0xcb, 0x71,
0xa8, 0xcb, 0x5d, 0x98, 0xdc, 0x4d, 0x07, 0xcf, 0xf7, 0x4e, 0x2e, 0xd3, 0xaa, 0xd3, 0xb3, 0x1f,
0x40, 0xcd, 0x11, 0x8a, 0xfd, 0x71, 0xb1, 0x5f, 0x14, 0x61, 0x65, 0x06, 0x62, 0x6b, 0x42, 0xba,
0x7a, 0xa8, 0x83, 0xc9, 0x6a, 0x27, 0xad, 0x7a, 0xd5, 0xa1, 0x26, 0xff, 0x2b, 0x96, 0xf4, 0x2a,
0x9c, 0x7a, 0xbb, 0x6d, 0x91, 0xb7, 0x6a, 0x96, 0x53, 0x26, 0x05, 0x72, 0x63, 0x8b, 0x30, 0x17,
0xe7, 0xe0, 0xb8, 0x65, 0xdb, 0x4d, 0xc2, 0xd8, 0x18, 0x9a, 0x42, 0xd9, 0xe1, 0xfc, 0xd8, 0xcf,
0x3f, 0x2c, 0x8e, 0xca, 0x48, 0x6b, 0x62, 0x67, 0xc3, 0x6d, 0x56, 0x9d, 0x4a, 0xc1, 0x33, 0xc4,
0xa3, 0x70, 0xcc, 0x26, 0x0e, 0xad, 0x8f, 0x1d, 0x69, 0x7b, 0x14, 0xc4, 0x97, 0x8b, 0x43, 0x77,
0x76, 0x32, 0x89, 0xa7, 0x3b, 0x99, 0x84, 0xfe, 0x26, 0x8c, 0x86, 0x43, 0xb1, 0x06, 0x75, 0x18,
0xc1, 0xcb, 0x70, 0xbc, 0x24, 0x96, 0x78, 0xac, 0x54, 0x6e, 0xdc, 0xe8, 0x14, 0x85, 0x11, 0xaf,
0x28, 0xc6, 0x25, 0x5a, 0x75, 0x0a, 0x9e, 0xa5, 0xfe, 0x13, 0x82, 0xd3, 0xfc, 0xb4, 0xb5, 0x5a,
0x4d, 0x1e, 0xc8, 0x9e, 0x05, 0xfc, 0x3a, 0x80, 0x5f, 0x5a, 0x9e, 0x41, 0x2a, 0x37, 0x13, 0xc2,
0x21, 0x88, 0xf4, 0xd0, 0x5c, 0xb3, 0x2a, 0x1e, 0x59, 0x85, 0x80, 0x27, 0x9e, 0x86, 0x13, 0x4d,
0xc2, 0x68, 0xed, 0x26, 0x29, 0x0a, 0x32, 0x8e, 0x4e, 0xa1, 0xec, 0x50, 0x61, 0x44, 0x2e, 0x5e,
0xee, 0xe2, 0x64, 0x17, 0xc1, 0x58, 0x6f, 0x1a, 0x92, 0x98, 0x6d, 0x18, 0x92, 0xe9, 0xb6, 0x13,
0x39, 0x1a, 0xc9, 0x4c, 0x7e, 0xfd, 0xe1, 0xe3, 0x4c, 0xe2, 0xdb, 0x3f, 0x32, 0xd9, 0x4a, 0xd5,
0xfd, 0x60, 0xab, 0x64, 0x94, 0x69, 0x5d, 0x76, 0x86, 0xfc, 0xb7, 0xc8, 0xec, 0x4d, 0xd3, 0x6d,
0x35, 0x08, 0xe3, 0x0e, 0xec, 0xde, 0x93, 0x07, 0xf3, 0x23, 0x35, 0x52, 0xb1, 0xca, 0xad, 0x62,
0xbb, 0xf7, 0xd8, 0xfd, 0x27, 0x0f, 0xe6, 0x51, 0xa1, 0x13, 0x12, 0x5f, 0x51, 0x50, 0x32, 0xbb,
0x2f, 0x25, 0x02, 0x7b, 0x90, 0x13, 0xfd, 0x2b, 0x04, 0x93, 0x3c, 0xc9, 0x8d, 0x06, 0x71, 0x6c,
0xab, 0x54, 0x23, 0xff, 0xa1, 0x8a, 0x05, 0x8a, 0xf1, 0x14, 0x41, 0xba, 0x1f, 0xce, 0xff, 0x59,
0x49, 0x5a, 0x30, 0xad, 0xcc, 0x34, 0xdf, 0xe2, 0x1d, 0xfa, 0x4f, 0x8e, 0x81, 0xf7, 0xe0, 0x4c,
0x74, 0xe8, 0x67, 0x19, 0x0b, 0x9b, 0x72, 0x2a, 0xbc, 0x43, 0x5d, 0xab, 0xb6, 0xb1, 0xd5, 0x68,
0xd4, 0x5a, 0x5e, 0x2e, 0xe1, 0x7e, 0x41, 0x03, 0xe8, 0x97, 0xc7, 0xde, 0xc3, 0x1b, 0x8a, 0x26,
0xe1, 0xb7, 0x20, 0xc9, 0xf8, 0xca, 0xbf, 0xd7, 0x27, 0x32, 0xe0, 0xe0, 0xba, 0x64, 0x41, 0x4e,
0x6c, 0x91, 0xda, 0xd5, 0xf7, 0x3d, 0x2a, 0x3b, 0x25, 0x46, 0x81, 0x12, 0xeb, 0xd7, 0xe1, 0x85,
0x2e, 0x6b, 0x49, 0xc5, 0x0a, 0x24, 0xad, 0x3a, 0xdd, 0x72, 0xdc, 0x7d, 0x0b, 0x99, 0x1f, 0x6e,
0x53, 0x21, 0xb3, 0x11, 0x3e, 0xfa, 0x28, 0x60, 0x7e, 0xec, 0x35, 0xab, 0x69, 0xd5, 0xbd, 0x89,
0xa1, 0x5f, 0x97, 0xf7, 0x96, 0xb7, 0x2a, 0x43, 0xad, 0x42, 0xb2, 0xc1, 0x57, 0x64, 0xa8, 0x09,
0x43, 0x71, 0xbf, 0x1b, 0xc2, 0x29, 0x14, 0x4c, 0x78, 0xe9, 0x36, 0x68, 0xfc, 0x58, 0xde, 0x8a,
0xec, 0x2d, 0xe2, 0x5a, 0xb6, 0xe5, 0x5a, 0x03, 0x6e, 0x21, 0xfd, 0x7b, 0x04, 0x13, 0xca, 0x30,
0x32, 0x8b, 0x75, 0x18, 0xae, 0xcb, 0x35, 0x6f, 0xcc, 0x4c, 0x2a, 0x13, 0xf1, 0x3c, 0x83, 0xa9,
0xf8, 0xae, 0x83, 0x6b, 0x84, 0x25, 0x18, 0xf7, 0xf1, 0x76, 0xb3, 0xa2, 0xee, 0x86, 0x52, 0x90,
0xc9, 0x9e, 0x0c, 0x2f, 0xc3, 0x90, 0x07, 0x53, 0xf2, 0x18, 0x3f, 0xc1, 0x8e, 0xa7, 0xbe, 0x0a,
0x33, 0xbd, 0x31, 0xf2, 0x2d, 0xd1, 0x85, 0x62, 0x2c, 0x45, 0x62, 0xa4, 0x30, 0xbb, 0xaf, 0xff,
0x40, 0x01, 0xdf, 0x92, 0xe3, 0x89, 0x07, 0xbc, 0x7a, 0xcb, 0x21, 0x4d, 0x16, 0x89, 0x70, 0x50,
0x97, 0x9c, 0xfe, 0x11, 0x02, 0xf0, 0x83, 0x1e, 0x6a, 0xae, 0xaf, 0xfa, 0xf3, 0xf8, 0xc8, 0x01,
0x1e, 0xe3, 0xce, 0x68, 0xfe, 0xc6, 0x9b, 0x96, 0xa1, 0xe4, 0x25, 0xbd, 0x79, 0x18, 0xe1, 0x09,
0x17, 0x29, 0x5f, 0x97, 0x4d, 0x9f, 0x51, 0x52, 0xec, 0xfb, 0x17, 0x52, 0xb6, 0x7f, 0xd6, 0x20,
0x2f, 0x47, 0x51, 0xa5, 0x0d, 0xe2, 0xd8, 0x6f, 0x38, 0xed, 0x2b, 0xca, 0xf6, 0xaa, 0xf4, 0x22,
0x24, 0x79, 0x48, 0x81, 0x70, 0xb8, 0x20, 0xbf, 0x75, 0xd5, 0xa9, 0x7c, 0xe8, 0x3a, 0xdd, 0xf7,
0x48, 0x0a, 0xc5, 0x96, 0x24, 0x5d, 0x82, 0x11, 0x46, 0x1c, 0xbb, 0x48, 0xc4, 0xba, 0x24, 0x69,
0x4a, 0x49, 0x52, 0xd0, 0x3f, 0xc5, 0xfc, 0x2f, 0x5d, 0x2c, 0x95, 0x0f, 0xcd, 0x52, 0xee, 0xd3,
0xe7, 0xe1, 0x18, 0x87, 0x8a, 0xbf, 0x40, 0x70, 0x5c, 0x5e, 0xe2, 0x38, 0xab, 0x44, 0xa3, 0x78,
0xc5, 0xd0, 0xe6, 0x62, 0x58, 0x8a, 0xb0, 0xfa, 0xeb, 0x77, 0xda, 0xad, 0xf4, 0xf1, 0x2f, 0x7f,
0x7d, 0x7e, 0x24, 0x87, 0xcf, 0x9a, 0xea, 0xb7, 0x23, 0x21, 0x91, 0xcc, 0xdb, 0xb2, 0x5f, 0xb7,
0xcd, 0x52, 0x4b, 0x48, 0x70, 0xbc, 0x83, 0x20, 0x15, 0xd0, 0xd7, 0x78, 0xa1, 0x7f, 0xe4, 0xde,
0xb7, 0x09, 0x6d, 0x31, 0xa6, 0xb5, 0xc4, 0x7a, 0xce, 0xc7, 0x3a, 0x87, 0x67, 0x63, 0x62, 0xc5,
0x3f, 0x22, 0x38, 0xd9, 0xa3, 0x3a, 0x71, 0xae, 0x7f, 0xe8, 0x7e, 0x52, 0x5a, 0x5b, 0x3e, 0x90,
0x8f, 0x04, 0xbd, 0xea, 0x83, 0x5e, 0xc6, 0x4b, 0x4a, 0xd0, 0xcc, 0x73, 0x2e, 0x2a, 0xe0, 0xff,
0x8a, 0xe0, 0x74, 0x1f, 0x3d, 0x87, 0x5f, 0x8d, 0x0f, 0x28, 0xac, 0x3e, 0xb5, 0x0b, 0x87, 0xf0,
0x94, 0x09, 0x5d, 0xf1, 0x13, 0x5a, 0xc1, 0x17, 0x0f, 0x9c, 0x90, 0xdf, 0x3b, 0x77, 0x11, 0xa4,
0x02, 0xf2, 0x2e, 0xaa, 0x77, 0x7a, 0x35, 0x67, 0x54, 0xef, 0x28, 0x34, 0xa3, 0x9e, 0xf5, 0x51,
0x4f, 0xe2, 0x09, 0x35, 0x6a, 0x01, 0xe3, 0x2e, 0x82, 0x21, 0x4f, 0x67, 0xe1, 0x88, 0x27, 0xa9,
0x4b, 0xb9, 0x69, 0xf3, 0x71, 0x4c, 0x25, 0x9a, 0x25, 0x1f, 0xcd, 0x0c, 0x3e, 0x13, 0x81, 0xc6,
0x67, 0xeb, 0x13, 0x04, 0x49, 0x21, 0xae, 0xf0, 0x6c, 0xff, 0x48, 0x21, 0x25, 0xa7, 0x65, 0xf7,
0x37, 0x8c, 0x4f, 0x8f, 0x90, 0x71, 0xf8, 0x3b, 0x04, 0x27, 0x42, 0x97, 0x3a, 0x36, 0xfa, 0x47,
0x51, 0x89, 0x1a, 0xcd, 0x8c, 0x6d, 0x2f, 0xc1, 0x5d, 0xf0, 0xc1, 0x19, 0x78, 0x41, 0x09, 0x4e,
0xdc, 0x15, 0x45, 0x4f, 0x0d, 0x98, 0xb7, 0xf9, 0xc2, 0x36, 0xfe, 0x1d, 0x81, 0xd6, 0x5f, 0x82,
0xe0, 0xd7, 0x62, 0x42, 0x51, 0x09, 0x1f, 0x6d, 0xe5, 0x70, 0xce, 0x32, 0xa9, 0x35, 0x3f, 0xa9,
0xf3, 0xf8, 0x5c, 0x9c, 0xa4, 0x8a, 0xa5, 0x56, 0x91, 0x5f, 0x20, 0x45, 0x26, 0xd0, 0x7f, 0x8d,
0xe0, 0xb9, 0xb0, 0xcc, 0xc5, 0xfb, 0x71, 0xdb, 0xad, 0xbb, 0xb5, 0xb3, 0xf1, 0x1d, 0xe2, 0xf7,
0x6e, 0x17, 0x70, 0xfc, 0x25, 0x82, 0x54, 0x40, 0x9a, 0x44, 0x3d, 0xe9, 0xbd, 0xf2, 0x2d, 0xea,
0x49, 0x57, 0xe8, 0x1d, 0xfd, 0xbc, 0x8f, 0xef, 0x15, 0x3c, 0xd7, 0x1f, 0x9f, 0xd4, 0x43, 0x9d,
0x56, 0xb9, 0x87, 0x20, 0x15, 0xb8, 0xda, 0xa3, 0x40, 0xf6, 0xaa, 0x97, 0x28, 0x90, 0x0a, 0xbd,
0xa1, 0x1b, 0x3e, 0xc8, 0x69, 0xfc, 0xb2, 0x7a, 0x00, 0x04, 0xf4, 0x48, 0x7e, 0xf9, 0xe1, 0x6e,
0x1a, 0x3d, 0xda, 0x4d, 0xa3, 0x3f, 0x77, 0xd3, 0xe8, 0xb3, 0xbd, 0x74, 0xe2, 0xd1, 0x5e, 0x3a,
0xf1, 0xdb, 0x5e, 0x3a, 0xf1, 0xae, 0xfc, 0xc1, 0x92, 0xd9, 0x9b, 0x46, 0x95, 0x9a, 0x1f, 0x8a,
0x33, 0xf8, 0x0b, 0x6d, 0x29, 0xc9, 0x7f, 0x87, 0x5c, 0xfe, 0x3b, 0x00, 0x00, 0xff, 0xff, 0xcd,
0x75, 0xea, 0xc7, 0xaa, 0x15, 0x00, 0x00,
// 1341 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x58, 0xc1, 0x6f, 0x1b, 0xc5,
0x17, 0xf6, 0xb4, 0xaa, 0x9b, 0x3c, 0xa7, 0x3f, 0x29, 0xd3, 0xfc, 0x68, 0xb2, 0x21, 0x76, 0xd8,
0x54, 0x89, 0x13, 0x92, 0xdd, 0xc6, 0x8e, 0x0a, 0x2d, 0x21, 0x52, 0xdc, 0x92, 0x1e, 0x10, 0x6a,
0x71, 0xe8, 0x05, 0x0e, 0xd6, 0xda, 0xbb, 0x18, 0x2b, 0xf6, 0xae, 0xeb, 0xd9, 0xb4, 0x58, 0x55,
0x10, 0x42, 0x42, 0xea, 0x11, 0x89, 0x9e, 0x2a, 0x21, 0x45, 0x48, 0x40, 0x05, 0x52, 0xd5, 0x03,
0x07, 0x0e, 0x1c, 0x39, 0x54, 0x9c, 0x2a, 0x38, 0x80, 0x38, 0x14, 0x94, 0x20, 0xb5, 0x7f, 0x06,
0xf2, 0xcc, 0x5b, 0xef, 0xae, 0xbd, 0x5e, 0x6f, 0x52, 0x53, 0x55, 0x5c, 0x12, 0x7b, 0xe6, 0xbd,
0x79, 0xdf, 0xfb, 0xe6, 0xcd, 0x9b, 0x6f, 0x0c, 0xa9, 0x92, 0xc5, 0x6a, 0x16, 0x53, 0x8b, 0x9a,
0xb9, 0xa5, 0x5e, 0x5f, 0x2e, 0x1a, 0xb6, 0xb6, 0xac, 0x5e, 0xdb, 0x36, 0x1a, 0x4d, 0xa5, 0xde,
0xb0, 0x6c, 0x8b, 0x9e, 0x14, 0x06, 0x4a, 0xcb, 0x40, 0x41, 0x03, 0x69, 0xa1, 0xed, 0xc5, 0x0c,
0x61, 0xdd, 0xf6, 0xad, 0x6b, 0xe5, 0x8a, 0xa9, 0xd9, 0x15, 0xcb, 0x14, 0x0b, 0x48, 0x63, 0x65,
0xab, 0x6c, 0xf1, 0x8f, 0x6a, 0xeb, 0x13, 0x8e, 0xbe, 0x58, 0xb6, 0xac, 0x72, 0xd5, 0x50, 0xb5,
0x7a, 0x45, 0xd5, 0x4c, 0xd3, 0xb2, 0xb9, 0x0b, 0xc3, 0xd9, 0xa4, 0x77, 0x7d, 0x67, 0xe5, 0x92,
0x55, 0x31, 0xbb, 0xe6, 0x3d, 0xa8, 0x39, 0x42, 0x31, 0x3f, 0x21, 0xe6, 0x0b, 0x22, 0x2c, 0x66,
0x20, 0xa6, 0x26, 0xd1, 0xd5, 0x41, 0xed, 0x4d, 0x56, 0x1a, 0xd5, 0x6a, 0x15, 0xd3, 0x52, 0xf9,
0x5f, 0x31, 0x24, 0x57, 0xe0, 0xe4, 0xdb, 0x2d, 0x8b, 0x9c, 0x56, 0xd5, 0xcc, 0x92, 0x91, 0x37,
0xae, 0x6d, 0x1b, 0xcc, 0xa6, 0x19, 0x38, 0xae, 0xe9, 0x7a, 0xc3, 0x60, 0x6c, 0x9c, 0x4c, 0x93,
0xf4, 0x70, 0x6e, 0xfc, 0x97, 0xef, 0x97, 0xc6, 0x30, 0xd2, 0xba, 0x98, 0xd9, 0xb4, 0x1b, 0x15,
0xb3, 0x9c, 0x77, 0x0c, 0xe9, 0x18, 0x1c, 0xd3, 0x0d, 0xd3, 0xaa, 0x8d, 0x1f, 0x69, 0x79, 0xe4,
0xc5, 0x97, 0xf3, 0x43, 0xb7, 0x76, 0x53, 0xb1, 0x27, 0xbb, 0xa9, 0x98, 0xfc, 0x26, 0x8c, 0xf9,
0x43, 0xb1, 0xba, 0x65, 0x32, 0x83, 0x66, 0xe1, 0x78, 0x51, 0x0c, 0xf1, 0x58, 0x89, 0xcc, 0x84,
0xd2, 0xde, 0x14, 0x66, 0x38, 0x9b, 0xa2, 0x5c, 0xb0, 0x2a, 0x66, 0xde, 0xb1, 0x94, 0x7f, 0x22,
0x70, 0x8a, 0xaf, 0xb6, 0x5e, 0xad, 0xe2, 0x82, 0xec, 0x69, 0xc0, 0x6f, 0x00, 0xb8, 0x5b, 0xcb,
0x33, 0x48, 0x64, 0x66, 0x7d, 0x38, 0x04, 0x91, 0x0e, 0x9a, 0x2b, 0x5a, 0xd9, 0x21, 0x2b, 0xef,
0xf1, 0xa4, 0x33, 0x70, 0xa2, 0x61, 0x30, 0xab, 0x7a, 0xdd, 0x28, 0x08, 0x32, 0x8e, 0x4e, 0x93,
0xf4, 0x50, 0x7e, 0x04, 0x07, 0x2f, 0x76, 0x70, 0xb2, 0x47, 0x60, 0xbc, 0x3b, 0x0d, 0x24, 0x66,
0x07, 0x86, 0x30, 0xdd, 0x56, 0x22, 0x47, 0x43, 0x99, 0xc9, 0x6d, 0x3c, 0x78, 0x94, 0x8a, 0x7d,
0xfb, 0x67, 0x2a, 0x5d, 0xae, 0xd8, 0x1f, 0x6c, 0x17, 0x95, 0x92, 0x55, 0xc3, 0xca, 0xc0, 0x7f,
0x4b, 0x4c, 0xdf, 0x52, 0xed, 0x66, 0xdd, 0x60, 0xdc, 0x81, 0xdd, 0x79, 0x7c, 0x7f, 0x61, 0xa4,
0x6a, 0x94, 0xb5, 0x52, 0xb3, 0xd0, 0xaa, 0x3d, 0x76, 0xf7, 0xf1, 0xfd, 0x05, 0x92, 0x6f, 0x87,
0xa4, 0x97, 0x02, 0x28, 0x99, 0xeb, 0x4b, 0x89, 0xc0, 0xee, 0xe5, 0x44, 0xfe, 0x8a, 0xc0, 0x14,
0x4f, 0x72, 0xb3, 0x6e, 0x98, 0xba, 0x56, 0xac, 0x1a, 0xcf, 0xd1, 0x8e, 0x79, 0x36, 0xe3, 0x09,
0x81, 0x64, 0x2f, 0x9c, 0xff, 0xb1, 0x2d, 0x69, 0xc2, 0x4c, 0x60, 0xa6, 0xb9, 0x26, 0xaf, 0xd0,
0x7f, 0xb3, 0x0d, 0xbc, 0x07, 0xa7, 0xc3, 0x43, 0x3f, 0x4d, 0x5b, 0xd8, 0xc2, 0xae, 0xf0, 0x8e,
0x65, 0x6b, 0xd5, 0xcd, 0xed, 0x7a, 0xbd, 0xda, 0x74, 0x72, 0xf1, 0xd7, 0x0b, 0x19, 0x40, 0xbd,
0x3c, 0x72, 0x0e, 0xaf, 0x2f, 0x1a, 0xc2, 0x6f, 0x42, 0x9c, 0xf1, 0x91, 0x67, 0x57, 0x27, 0x18,
0x70, 0x70, 0x55, 0xb2, 0x88, 0x1d, 0x5b, 0xa4, 0x76, 0xf9, 0x7d, 0x87, 0xca, 0xf6, 0x16, 0x13,
0xcf, 0x16, 0xcb, 0x57, 0xe1, 0xff, 0x1d, 0xd6, 0x48, 0xc5, 0x2a, 0xc4, 0xb5, 0x9a, 0xb5, 0x6d,
0xda, 0x7d, 0x37, 0x32, 0x37, 0xdc, 0xa2, 0x02, 0xb3, 0x11, 0x3e, 0xf2, 0x18, 0x50, 0xbe, 0xec,
0x15, 0xad, 0xa1, 0xd5, 0x9c, 0x8e, 0x21, 0x5f, 0xc5, 0x7b, 0xcb, 0x19, 0xc5, 0x50, 0x6b, 0x10,
0xaf, 0xf3, 0x11, 0x0c, 0x35, 0xa9, 0x04, 0xdc, 0xef, 0x8a, 0x70, 0xf2, 0x05, 0x13, 0x5e, 0xb2,
0x0e, 0x12, 0x5f, 0x96, 0x97, 0x22, 0x7b, 0xcb, 0xb0, 0x35, 0x5d, 0xb3, 0xb5, 0x01, 0x97, 0x90,
0x7c, 0x8f, 0xc0, 0x64, 0x60, 0x18, 0xcc, 0x62, 0x03, 0x86, 0x6b, 0x38, 0xe6, 0xb4, 0x99, 0xa9,
0xc0, 0x44, 0x1c, 0x4f, 0x6f, 0x2a, 0xae, 0xeb, 0xe0, 0x0a, 0x61, 0x19, 0x26, 0x5c, 0xbc, 0x9d,
0xac, 0x04, 0x57, 0x43, 0xd1, 0xcb, 0x64, 0x57, 0x86, 0x17, 0x61, 0xc8, 0x81, 0x89, 0x3c, 0x46,
0x4f, 0xb0, 0xed, 0x29, 0xaf, 0xc1, 0x6c, 0x77, 0x8c, 0x5c, 0x53, 0x54, 0xa1, 0x68, 0x4b, 0xa1,
0x18, 0x2d, 0x98, 0xeb, 0xeb, 0x3f, 0x50, 0xc0, 0x37, 0xb0, 0x3d, 0xf1, 0x80, 0x97, 0x6f, 0x98,
0x46, 0x83, 0x85, 0x22, 0x1c, 0xd4, 0x25, 0x27, 0x7f, 0x4c, 0x00, 0xdc, 0xa0, 0x87, 0xea, 0xeb,
0x6b, 0x6e, 0x3f, 0x3e, 0x72, 0x80, 0x63, 0xdc, 0x6e, 0xcd, 0xdf, 0x38, 0xdd, 0xd2, 0x97, 0x3c,
0xd2, 0x9b, 0x83, 0x11, 0x9e, 0x70, 0xc1, 0xe2, 0xe3, 0x58, 0xf4, 0xa9, 0x40, 0x8a, 0x5d, 0xff,
0x7c, 0x42, 0x77, 0xd7, 0x1a, 0x5c, 0xb5, 0x7f, 0x84, 0x32, 0xc0, 0x03, 0x14, 0x8b, 0xe2, 0xd9,
0x6c, 0xd6, 0x3d, 0x02, 0xa9, 0x9e, 0x00, 0x9e, 0x47, 0xc2, 0x9a, 0x58, 0xd6, 0x9b, 0x86, 0xa9,
0xbf, 0x61, 0xb6, 0xee, 0x74, 0xdd, 0x61, 0xea, 0x05, 0x88, 0xf3, 0x90, 0x02, 0xe1, 0x70, 0x1e,
0xbf, 0x75, 0x70, 0x55, 0x3a, 0x34, 0x57, 0x77, 0x9d, 0xaa, 0xf2, 0xc5, 0x46, 0x92, 0x2e, 0xc0,
0x08, 0x33, 0x4c, 0xbd, 0x60, 0x88, 0x71, 0x24, 0x69, 0x3a, 0x90, 0x24, 0xaf, 0x7f, 0x82, 0xb9,
0x5f, 0x3a, 0x58, 0x2a, 0x1d, 0x9a, 0xa5, 0xcc, 0xcf, 0xa3, 0x70, 0x8c, 0x43, 0xa5, 0x5f, 0x10,
0x38, 0x8e, 0xaa, 0x87, 0xa6, 0x03, 0xd1, 0x04, 0xbc, 0xc9, 0xa4, 0xf9, 0x08, 0x96, 0x22, 0xac,
0xfc, 0xfa, 0xad, 0xd6, 0xd9, 0xfb, 0xe4, 0xd7, 0xbf, 0x3f, 0x3f, 0x92, 0xa1, 0x67, 0xd4, 0xe0,
0xe7, 0xa4, 0xd0, 0x94, 0xea, 0x4d, 0x3c, 0xe0, 0x3b, 0x6a, 0xb1, 0x29, 0xde, 0x2c, 0x74, 0x97,
0x40, 0xc2, 0xf3, 0x20, 0xa1, 0x8b, 0xbd, 0x23, 0x77, 0x3f, 0xbf, 0xa4, 0xa5, 0x88, 0xd6, 0x88,
0x75, 0xc5, 0xc5, 0x3a, 0x4f, 0xe7, 0x22, 0x62, 0xa5, 0x3f, 0x12, 0x18, 0xed, 0x92, 0xe9, 0x34,
0xd3, 0x3b, 0x74, 0xaf, 0xb7, 0x87, 0x94, 0x3d, 0x90, 0x0f, 0x82, 0x5e, 0x73, 0x41, 0x67, 0xe9,
0x72, 0x20, 0x68, 0xe6, 0x38, 0x17, 0x02, 0xe0, 0xff, 0x46, 0xe0, 0x54, 0x0f, 0x01, 0x4c, 0x5f,
0x8d, 0x0e, 0xc8, 0x2f, 0xd7, 0xa5, 0x73, 0x87, 0xf0, 0xc4, 0x84, 0x2e, 0xb9, 0x09, 0xad, 0xd2,
0xf3, 0x07, 0x4e, 0xc8, 0xad, 0x9d, 0xdb, 0x04, 0x12, 0x1e, 0x3d, 0x1c, 0x56, 0x3b, 0xdd, 0x22,
0x3d, 0xac, 0x76, 0x02, 0x44, 0xb6, 0x9c, 0x76, 0x51, 0x4f, 0xd1, 0xc9, 0x60, 0xd4, 0x02, 0xc6,
0x6d, 0x02, 0x43, 0x8e, 0x30, 0xa5, 0x21, 0x27, 0xa9, 0x43, 0xea, 0x4a, 0x0b, 0x51, 0x4c, 0x11,
0xcd, 0xb2, 0x8b, 0x66, 0x96, 0x9e, 0x0e, 0x41, 0xe3, 0xb2, 0xf5, 0x29, 0x81, 0xb8, 0x50, 0xa3,
0x74, 0xae, 0x77, 0x24, 0x9f, 0xf4, 0x95, 0xd2, 0xfd, 0x0d, 0xa3, 0xd3, 0x23, 0x74, 0x2f, 0xfd,
0x8e, 0xc0, 0x09, 0x9f, 0x0a, 0xa2, 0x4a, 0xef, 0x28, 0x41, 0x2a, 0x50, 0x52, 0x23, 0xdb, 0x23,
0xb8, 0x73, 0x2e, 0x38, 0x85, 0x2e, 0x06, 0x82, 0x13, 0x77, 0x45, 0xc1, 0x91, 0x4f, 0xea, 0x4d,
0x3e, 0xb0, 0x43, 0xff, 0x20, 0x20, 0xf5, 0xd6, 0x6c, 0xf4, 0xb5, 0x88, 0x50, 0x82, 0x94, 0xa2,
0xb4, 0x7a, 0x38, 0x67, 0x4c, 0x6a, 0xdd, 0x4d, 0xea, 0x2c, 0x5d, 0x89, 0x92, 0x54, 0xa1, 0xd8,
0x2c, 0xf0, 0x0b, 0xa4, 0xc0, 0x04, 0xfa, 0xaf, 0x09, 0xfc, 0xcf, 0xff, 0x2e, 0xa0, 0xfd, 0xb8,
0xed, 0x7c, 0xa8, 0x48, 0x67, 0xa2, 0x3b, 0x44, 0xaf, 0xdd, 0x0e, 0xe0, 0xf4, 0x4b, 0x02, 0x09,
0x8f, 0x42, 0x09, 0x3b, 0xe9, 0xdd, 0x7a, 0x37, 0xec, 0xa4, 0x07, 0x08, 0x44, 0xf9, 0xac, 0x8b,
0xef, 0x65, 0x3a, 0xdf, 0x1b, 0x1f, 0xea, 0xa1, 0x76, 0xa9, 0xfc, 0x40, 0x80, 0x76, 0xcb, 0x28,
0x9a, 0x8d, 0x14, 0xdd, 0xaf, 0xfa, 0xa4, 0x95, 0x83, 0x39, 0x21, 0xf2, 0x57, 0x5c, 0xe4, 0x8b,
0x74, 0xa1, 0x2f, 0xf2, 0x76, 0x3d, 0xd0, 0x3b, 0x04, 0x12, 0x1e, 0x55, 0x12, 0xc6, 0x6f, 0xb7,
0xf0, 0x0a, 0xe3, 0x37, 0x40, 0x2a, 0xc9, 0x8a, 0x8b, 0x72, 0x86, 0xbe, 0x14, 0xdc, 0xbb, 0x3c,
0x52, 0x2a, 0x97, 0x7d, 0xb0, 0x97, 0x24, 0x0f, 0xf7, 0x92, 0xe4, 0xaf, 0xbd, 0x24, 0xf9, 0x6c,
0x3f, 0x19, 0x7b, 0xb8, 0x9f, 0x8c, 0xfd, 0xbe, 0x9f, 0x8c, 0xbd, 0x8b, 0x3f, 0x4e, 0x33, 0x7d,
0x4b, 0xa9, 0x58, 0xea, 0x87, 0x62, 0x0d, 0xfe, 0xe3, 0x45, 0x31, 0xce, 0x7f, 0x73, 0xce, 0xfe,
0x13, 0x00, 0x00, 0xff, 0xff, 0xcd, 0x9a, 0x88, 0xc1, 0x96, 0x17, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@ -1434,9 +1554,9 @@ type QueryClient interface {
SupplyOf(ctx context.Context, in *QuerySupplyOfRequest, opts ...grpc.CallOption) (*QuerySupplyOfResponse, error)
// Params queries the parameters of x/bank module.
Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error)
// DenomsMetadata queries the client metadata of a given coin denomination.
// DenomMetadata queries the client metadata of a given coin denomination.
DenomMetadata(ctx context.Context, in *QueryDenomMetadataRequest, opts ...grpc.CallOption) (*QueryDenomMetadataResponse, error)
// DenomsMetadata queries the client metadata of a given coin denomination.
// DenomMetadataByQueryString queries the client metadata of a given coin denomination.
DenomMetadataByQueryString(ctx context.Context, in *QueryDenomMetadataByQueryStringRequest, opts ...grpc.CallOption) (*QueryDenomMetadataByQueryStringResponse, error)
// DenomsMetadata queries the client metadata for all registered coin
// denominations.
@ -1449,6 +1569,11 @@ type QueryClient interface {
//
// Since: cosmos-sdk 0.46
DenomOwners(ctx context.Context, in *QueryDenomOwnersRequest, opts ...grpc.CallOption) (*QueryDenomOwnersResponse, error)
// DenomOwnersByQuery queries for all account addresses that own a particular token
// denomination.
//
// Since: cosmos-sdk 0.50.3
DenomOwnersByQuery(ctx context.Context, in *QueryDenomOwnersByQueryRequest, opts ...grpc.CallOption) (*QueryDenomOwnersByQueryResponse, error)
// SendEnabled queries for SendEnabled entries.
//
// This query only returns denominations that have specific SendEnabled settings.
@ -1566,6 +1691,15 @@ func (c *queryClient) DenomOwners(ctx context.Context, in *QueryDenomOwnersReque
return out, nil
}
func (c *queryClient) DenomOwnersByQuery(ctx context.Context, in *QueryDenomOwnersByQueryRequest, opts ...grpc.CallOption) (*QueryDenomOwnersByQueryResponse, error) {
out := new(QueryDenomOwnersByQueryResponse)
err := c.cc.Invoke(ctx, "/cosmos.bank.v1beta1.Query/DenomOwnersByQuery", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *queryClient) SendEnabled(ctx context.Context, in *QuerySendEnabledRequest, opts ...grpc.CallOption) (*QuerySendEnabledResponse, error) {
out := new(QuerySendEnabledResponse)
err := c.cc.Invoke(ctx, "/cosmos.bank.v1beta1.Query/SendEnabled", in, out, opts...)
@ -1612,9 +1746,9 @@ type QueryServer interface {
SupplyOf(context.Context, *QuerySupplyOfRequest) (*QuerySupplyOfResponse, error)
// Params queries the parameters of x/bank module.
Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error)
// DenomsMetadata queries the client metadata of a given coin denomination.
// DenomMetadata queries the client metadata of a given coin denomination.
DenomMetadata(context.Context, *QueryDenomMetadataRequest) (*QueryDenomMetadataResponse, error)
// DenomsMetadata queries the client metadata of a given coin denomination.
// DenomMetadataByQueryString queries the client metadata of a given coin denomination.
DenomMetadataByQueryString(context.Context, *QueryDenomMetadataByQueryStringRequest) (*QueryDenomMetadataByQueryStringResponse, error)
// DenomsMetadata queries the client metadata for all registered coin
// denominations.
@ -1627,6 +1761,11 @@ type QueryServer interface {
//
// Since: cosmos-sdk 0.46
DenomOwners(context.Context, *QueryDenomOwnersRequest) (*QueryDenomOwnersResponse, error)
// DenomOwnersByQuery queries for all account addresses that own a particular token
// denomination.
//
// Since: cosmos-sdk 0.50.3
DenomOwnersByQuery(context.Context, *QueryDenomOwnersByQueryRequest) (*QueryDenomOwnersByQueryResponse, error)
// SendEnabled queries for SendEnabled entries.
//
// This query only returns denominations that have specific SendEnabled settings.
@ -1674,6 +1813,9 @@ func (*UnimplementedQueryServer) DenomsMetadata(ctx context.Context, req *QueryD
func (*UnimplementedQueryServer) DenomOwners(ctx context.Context, req *QueryDenomOwnersRequest) (*QueryDenomOwnersResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method DenomOwners not implemented")
}
func (*UnimplementedQueryServer) DenomOwnersByQuery(ctx context.Context, req *QueryDenomOwnersByQueryRequest) (*QueryDenomOwnersByQueryResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method DenomOwnersByQuery not implemented")
}
func (*UnimplementedQueryServer) SendEnabled(ctx context.Context, req *QuerySendEnabledRequest) (*QuerySendEnabledResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method SendEnabled not implemented")
}
@ -1880,6 +2022,24 @@ func _Query_DenomOwners_Handler(srv interface{}, ctx context.Context, dec func(i
return interceptor(ctx, in, info, handler)
}
func _Query_DenomOwnersByQuery_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(QueryDenomOwnersByQueryRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(QueryServer).DenomOwnersByQuery(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/cosmos.bank.v1beta1.Query/DenomOwnersByQuery",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(QueryServer).DenomOwnersByQuery(ctx, req.(*QueryDenomOwnersByQueryRequest))
}
return interceptor(ctx, in, info, handler)
}
func _Query_SendEnabled_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(QuerySendEnabledRequest)
if err := dec(in); err != nil {
@ -1946,6 +2106,10 @@ var _Query_serviceDesc = grpc.ServiceDesc{
MethodName: "DenomOwners",
Handler: _Query_DenomOwners_Handler,
},
{
MethodName: "DenomOwnersByQuery",
Handler: _Query_DenomOwnersByQuery_Handler,
},
{
MethodName: "SendEnabled",
Handler: _Query_SendEnabled_Handler,
@ -2835,6 +2999,97 @@ func (m *QueryDenomOwnersResponse) MarshalToSizedBuffer(dAtA []byte) (int, error
return len(dAtA) - i, nil
}
func (m *QueryDenomOwnersByQueryRequest) 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 *QueryDenomOwnersByQueryRequest) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *QueryDenomOwnersByQueryRequest) 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.Denom) > 0 {
i -= len(m.Denom)
copy(dAtA[i:], m.Denom)
i = encodeVarintQuery(dAtA, i, uint64(len(m.Denom)))
i--
dAtA[i] = 0xa
}
return len(dAtA) - i, nil
}
func (m *QueryDenomOwnersByQueryResponse) 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 *QueryDenomOwnersByQueryResponse) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *QueryDenomOwnersByQueryResponse) 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.DenomOwners) > 0 {
for iNdEx := len(m.DenomOwners) - 1; iNdEx >= 0; iNdEx-- {
{
size, err := m.DenomOwners[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 *QuerySendEnabledRequest) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
@ -3285,6 +3540,42 @@ func (m *QueryDenomOwnersResponse) Size() (n int) {
return n
}
func (m *QueryDenomOwnersByQueryRequest) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
l = len(m.Denom)
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 *QueryDenomOwnersByQueryResponse) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
if len(m.DenomOwners) > 0 {
for _, e := range m.DenomOwners {
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 *QuerySendEnabledRequest) Size() (n int) {
if m == nil {
return 0
@ -5618,6 +5909,244 @@ func (m *QueryDenomOwnersResponse) Unmarshal(dAtA []byte) error {
}
return nil
}
func (m *QueryDenomOwnersByQueryRequest) 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: QueryDenomOwnersByQueryRequest: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: QueryDenomOwnersByQueryRequest: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Denom", 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.Denom = string(dAtA[iNdEx:postIndex])
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.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 *QueryDenomOwnersByQueryResponse) 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: QueryDenomOwnersByQueryResponse: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: QueryDenomOwnersByQueryResponse: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field DenomOwners", 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.DenomOwners = append(m.DenomOwners, &DenomOwner{})
if err := m.DenomOwners[len(m.DenomOwners)-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 *QuerySendEnabledRequest) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0

View File

@ -609,6 +609,42 @@ func local_request_Query_DenomOwners_0(ctx context.Context, marshaler runtime.Ma
}
var (
filter_Query_DenomOwnersByQuery_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
)
func request_Query_DenomOwnersByQuery_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq QueryDenomOwnersByQueryRequest
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_DenomOwnersByQuery_0); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.DenomOwnersByQuery(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
return msg, metadata, err
}
func local_request_Query_DenomOwnersByQuery_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq QueryDenomOwnersByQueryRequest
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_DenomOwnersByQuery_0); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := server.DenomOwnersByQuery(ctx, &protoReq)
return msg, metadata, err
}
var (
filter_Query_SendEnabled_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
)
@ -904,6 +940,29 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv
})
mux.Handle("GET", pattern_Query_DenomOwnersByQuery_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_DenomOwnersByQuery_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_DenomOwnersByQuery_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("GET", pattern_Query_SendEnabled_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
@ -1188,6 +1247,26 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie
})
mux.Handle("GET", pattern_Query_DenomOwnersByQuery_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_DenomOwnersByQuery_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_DenomOwnersByQuery_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("GET", pattern_Query_SendEnabled_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
@ -1234,6 +1313,8 @@ var (
pattern_Query_DenomOwners_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"cosmos", "bank", "v1beta1", "denom_owners", "denom"}, "", runtime.AssumeColonVerbOpt(false)))
pattern_Query_DenomOwnersByQuery_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"cosmos", "bank", "v1beta1", "denom_owners_by_query"}, "", runtime.AssumeColonVerbOpt(false)))
pattern_Query_SendEnabled_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"cosmos", "bank", "v1beta1", "send_enabled"}, "", runtime.AssumeColonVerbOpt(false)))
)
@ -1260,5 +1341,7 @@ var (
forward_Query_DenomOwners_0 = runtime.ForwardResponseMessage
forward_Query_DenomOwnersByQuery_0 = runtime.ForwardResponseMessage
forward_Query_SendEnabled_0 = runtime.ForwardResponseMessage
)